diff --git a/Core/Amf/Constants.php b/Core/Amf/Constants.php new file mode 100644 index 0000000..8cf4d57 --- /dev/null +++ b/Core/Amf/Constants.php @@ -0,0 +1,74 @@ + diff --git a/Core/Amf/Deserializer.php b/Core/Amf/Deserializer.php new file mode 100644 index 0000000..226c420 --- /dev/null +++ b/Core/Amf/Deserializer.php @@ -0,0 +1,721 @@ + + */ + protected $deserializedPacket; + + /** + * strings stored for tracking references(amf3) + * @var array + */ + protected $storedStrings; + + /** + * objects stored for tracking references(amf3) + * @var array + */ + protected $storedObjects; + + /** + * class definitions(traits) stored for tracking references(amf3) + * @var array + */ + protected $storedDefinitions; + + /** + * objects stored for tracking references(amf0) + * @var array + */ + protected $amf0storedObjects; + + /** + * convert from text/binary to php object + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return Amfphp_Core_Amf_Packet + */ + public function deserialize(array $getData, array $postData, $rawPostData) { + $this->rawData = $rawPostData; + $this->currentByte = 0; + $this->deserializedPacket = new Amfphp_Core_Amf_Packet(); + $this->readHeaders(); // read the binary headers + $this->readMessages(); // read the binary Messages + return $this->deserializedPacket; + } + + /** + * reset reference stores + */ + protected function resetReferences(){ + $this->amf0storedObjects = array(); + $this->storedStrings = array(); + $this->storedObjects = array(); + $this->storedDefinitions = array(); + + } + + /** + * readHeaders converts that header section of the amf Packet into php obects. + * Header information typically contains meta data about the Packet. + */ + protected function readHeaders() { + + $topByte = $this->readByte(); // ignore the first two bytes -- version or something + $secondByte = $this->readByte(); //0 for Flash, + //If firstByte != 0, then the Amf data is corrupted, for example the transmission + // + if (!($topByte == 0 || $topByte == 3)) { + throw new Amfphp_Core_Exception('Malformed Amf Packet, connection may have dropped'); + } + if($secondByte == 3){ + $this->deserializedPacket->amfVersion = Amfphp_Core_Amf_Constants::AMF3_ENCODING; + } + + $this->headersLeftToProcess = $this->readInt(); // find the total number of header elements + + while ($this->headersLeftToProcess--) { // loop over all of the header elements + $this->resetReferences(); + $name = $this->readUTF(); + $required = $this->readByte() == 1; // find the must understand flag + //$length = $this->readLong(); // grab the length of the header element + $this->currentByte += 4; // grab the length of the header element + + + $type = $this->readByte(); // grab the type of the element + $content = $this->readData($type); // turn the element into real data + + $header = new Amfphp_Core_Amf_Header($name, $required, $content); + $this->deserializedPacket->headers[] = $header; + } + } + + /** + * read messages in AMF packet + */ + protected function readMessages() { + $this->messagesLeftToProcess = $this->readInt(); // find the total number of Message elements + while ($this->messagesLeftToProcess--) { // loop over all of the Message elements + $this->resetReferences(); + $target = $this->readUTF(); + $response = $this->readUTF(); // the response that the client understands + //$length = $this->readLong(); // grab the length of the Message element + $this->currentByte += 4; + $type = $this->readByte(); // grab the type of the element + $data = $this->readData($type); // turn the element into real data + $message = new Amfphp_Core_Amf_Message($target, $response, $data); + $this->deserializedPacket->messages[] = $message; + } + } + + + /** + * readInt grabs the next 2 bytes and returns the next two bytes, shifted and combined + * to produce the resulting integer + * + * @return int The resulting integer from the next 2 bytes + */ + protected function readInt() { + return ((ord($this->rawData[$this->currentByte++]) << 8) | + ord($this->rawData[$this->currentByte++])); // read the next 2 bytes, shift and add + } + + /** + * readUTF first grabs the next 2 bytes which represent the string length. + * Then it grabs the next (len) bytes of the resulting string. + * + * @return string The utf8 decoded string + */ + protected function readUTF() { + $length = $this->readInt(); // get the length of the string (1st 2 bytes) + //BUg fix:: if string is empty skip ahead + if ($length == 0) { + return ''; + } else { + $val = substr($this->rawData, $this->currentByte, $length); // grab the string + $this->currentByte += $length; // move the seek head to the end of the string + + return $val; // return the string + } + } + + /** + * readByte grabs the next byte from the data stream and returns it. + * + * @return int The next byte converted into an integer + */ + protected function readByte() { + return ord($this->rawData[$this->currentByte++]); // return the next byte + } + + /** + * readData is the main switch for mapping a type code to an actual + * implementation for deciphering it. + * + * @param mixed $type The $type integer + * @return mixed The php version of the data in the Packet block + */ + public function readData($type) { + switch ($type) { + //amf3 is now most common, so start with that + case 0x11: //Amf3-specific + return $this->readAmf3Data(); + break; + case 0: // number + return $this->readDouble(); + case 1: // boolean + return $this->readByte() == 1; + case 2: // string + return $this->readUTF(); + case 3: // object Object + return $this->readObject(); + //ignore movie clip + case 5: // null + return null; + case 6: // undefined + return new Amfphp_Core_Amf_Types_Undefined(); + case 7: // Circular references are returned here + return $this->readReference(); + case 8: // mixed array with numeric and string keys + return $this->readMixedArray(); + case 9: //object end. not worth , TODO maybe some integrity checking + return null; + case 0X0A: // array + return $this->readArray(); + case 0X0B: // date + return $this->readDate(); + case 0X0C: // string, strlen(string) > 2^16 + return $this->readLongUTF(); + case 0X0D: // mainly internal AS objects + return null; + //ignore recordset + case 0X0F: // XML + return $this->readXml(); + case 0x10: // Custom Class + return $this->readCustomClass(); + default: // unknown case + throw new Amfphp_Core_Exception("Found unhandled type with code: $type"); + exit(); + break; + } + return $data; + } + + /** + * readDouble reads the floating point value from the bytes stream and properly orders + * the bytes depending on the system architecture. + * + * @return float The floating point value of the next 8 bytes + */ + protected function readDouble() { + $bytes = substr($this->rawData, $this->currentByte, 8); + $this->currentByte += 8; + if (Amfphp_Core_Amf_Util::isSystemBigEndian()) { + $bytes = strrev($bytes); + } + $zz = unpack('dflt', $bytes); // unpack the bytes + return $zz['flt']; // return the number from the associative array + } + + /** + * readObject reads the name/value properties of the amf Packet and converts them into + * their equivilent php representation + * + * @return Object The php object filled with the data + */ + protected function readObject() { + $ret = new stdClass(); + $this->amf0storedObjects[] = & $ret; + $key = $this->readUTF(); + for ($type = $this->readByte(); $type != 9; $type = $this->readByte()) { + $val = $this->readData($type); // grab the value + $ret->$key = $val; // save the name/value pair in the object + $key = $this->readUTF(); // get the next name + } + return $ret; + } + + /** + * readReference replaces the old readFlushedSO. It treats where there + * are references to other objects. Currently it does not resolve the + * object as this would involve a serious amount of overhead, unless + * you have a genius idea + * + * @return String + */ + protected function readReference() { + $reference = $this->readInt(); + return $this->amf0storedObjects[$reference]; + } + + /** + * readMixedArray turns an array with numeric and string indexes into a php array + * + * @return array The php array with mixed indexes + */ + protected function readMixedArray() { + //$length = $this->readLong(); // get the length property set by flash + $this->currentByte += 4; + return $this->readMixedObject(); // return the Message of mixed array + } + + /** + * readMixedObject reads the name/value properties of the amf Packet and converts + * numeric looking keys to numeric keys + * + * @return array The php array with the object data + */ + protected function readMixedObject() { + $ret = array(); // init the array + $this->amf0storedObjects[] = & $ret; + $key = $this->readUTF(); // grab the key + for ($type = $this->readByte(); $type != 9; $type = $this->readByte()) { + $val = $this->readData($type); // grab the value + if (is_numeric($key)) { + $key = (float) $key; + } + $ret[$key] = $val; // save the name/value pair in the array + $key = $this->readUTF(); // get the next name + } + return $ret; // return the array + } + + /** + * readArray turns an all numeric keyed actionscript array into a php array. + * + * @return array The php array + */ + protected function readArray() { + $ret = array(); // init the array object + $this->amf0storedObjects[] = & $ret; + $length = $this->readLong(); // get the length of the array + for ($i = 0; $i < $length; $i++) { // loop over all of the elements in the data + $type = $this->readByte(); // grab the type for each element + $ret[] = $this->readData($type); // grab each element + } + return $ret; // return the data + } + + /** + * readDate reads a date from the amf Packet and returns the time in ms. + * This method is still under development. + * + * @return Amfphp_Core_Amf_Types_Date a container with the date in ms. + */ + protected function readDate() { + $ms = $this->readDouble(); // date in milliseconds from 01/01/1970 + $int = $this->readInt(); // unsupported timezone + $date = new Amfphp_Core_Amf_Types_Date($ms); + return $date; + } + + /** + * read xml + * @return Amfphp_Core_Amf_Types_Xml + */ + protected function readXml() { + $str = $this->readLongUTF(); + return new Amfphp_Core_Amf_Types_Xml($str); + } + + /** + * readLongUTF first grabs the next 4 bytes which represent the string length. + * Then it grabs the next (len) bytes of the resulting in the string + * + * @return string The utf8 decoded string + */ + protected function readLongUTF() { + $length = $this->readLong(); // get the length of the string (1st 4 bytes) + $val = substr($this->rawData, $this->currentByte, $length); // grab the string + $this->currentByte += $length; // move the seek head to the end of the string + + return $val; // return the string + } + + /** + * readCustomClass reads the amf content associated with a class instance which was registered + * with Object.registerClass. In order to preserve the class name an additional property is assigned + * to the object Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE. This property will be overwritten if it existed within the class already. + * + * @return object The php representation of the object + */ + protected function readCustomClass() { + $typeIdentifier = str_replace('..', '', $this->readUTF()); + $obj = new stdClass(); + $this->amf0storedObjects[] = & $obj; + $key = $this->readUTF(); // grab the key + for ($type = $this->readByte(); $type != 9; $type = $this->readByte()) { + $val = $this->readData($type); // grab the value + $obj->$key = $val; // save the name/value pair in the array + $key = $this->readUTF(); // get the next name + } + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + $obj->$explicitTypeField = $typeIdentifier; + return $obj; // return the array + } + + /** + * read the type byte, then call the corresponding amf3 data reading function + * @return mixed + */ + public function readAmf3Data() { + $type = $this->readByte(); + switch ($type) { + case 0x00 : + return new Amfphp_Core_Amf_Types_Undefined(); + case 0x01 : + return null; //null + case 0x02 : + return false; //boolean false + case 0x03 : + return true; //boolean true + case 0x04 : + return $this->readAmf3Int(); + case 0x05 : + return $this->readDouble(); + case 0x06 : + return $this->readAmf3String(); + case 0x07 : + return $this->readAmf3XmlDocument(); + case 0x08 : + return $this->readAmf3Date(); + case 0x09 : + return $this->readAmf3Array(); + case 0x0A : + return $this->readAmf3Object(); + case 0x0B : + return $this->readAmf3Xml(); + case 0x0C : + return $this->readAmf3ByteArray(); + default: + throw new Amfphp_Core_Exception('undefined Amf3 type encountered: ' . $type); + } + } + + /** + * Handle decoding of the variable-length representation + * which gives seven bits of value per serialized byte by using the high-order bit + * of each byte as a continuation flag. + * + * @return read integer value + */ + protected function readAmf3Int() { + $int = $this->readByte(); + if ($int < 128) + return $int; + else { + $int = ($int & 0x7f) << 7; + $tmp = $this->readByte(); + if ($tmp < 128) { + return $int | $tmp; + } else { + $int = ($int | ($tmp & 0x7f)) << 7; + $tmp = $this->readByte(); + if ($tmp < 128) { + return $int | $tmp; + } else { + $int = ($int | ($tmp & 0x7f)) << 8; + $tmp = $this->readByte(); + $int |= $tmp; + + // Integers in Amf3 are 29 bit. The MSB (of those 29 bit) is the sign bit. + // In order to properly convert that integer to a PHP integer - the system + // might be 32 bit, 64 bit, 128 bit or whatever - all higher bits need to + // be set. + + if (($int & 0x10000000) !== 0) { + $int |= ~0x1fffffff; // extend the sign bit regardless of integer (bit) size + } + return $int; + } + } + } + } + + /** + * read amf 3 date + * @return boolean|\Amfphp_Core_Amf_Types_Date + * @throws Amfphp_Core_Exception + */ + protected function readAmf3Date() { + $firstInt = $this->readAmf3Int(); + if (($firstInt & 0x01) == 0) { + $firstInt = $firstInt >> 1; + if ($firstInt >= count($this->storedObjects)) { + throw new Amfphp_Core_Exception('Undefined date reference: ' . $firstInt); + return false; + } + return $this->storedObjects[$firstInt]; + } + + + $ms = $this->readDouble(); + $date = new Amfphp_Core_Amf_Types_Date($ms); + $this->storedObjects[] = & $date; + return $date; + } + + /** + * readString + * + * @return string + */ + protected function readAmf3String() { + + $strref = $this->readAmf3Int(); + + if (($strref & 0x01) == 0) { + $strref = $strref >> 1; + if ($strref >= count($this->storedStrings)) { + throw new Amfphp_Core_Exception('Undefined string reference: ' . $strref, E_USER_ERROR); + return false; + } + return $this->storedStrings[$strref]; + } else { + $strlen = $strref >> 1; + $str = ''; + if ($strlen > 0) { + $str = $this->readBuffer($strlen); + $this->storedStrings[] = $str; + } + return $str; + } + } + + /** + * read amf 3 xml + * @return Amfphp_Core_Amf_Types_Xml + */ + protected function readAmf3Xml() { + $handle = $this->readAmf3Int(); + $inline = (($handle & 1) != 0); + $handle = $handle >> 1; + if ($inline) { + $xml = $this->readBuffer($handle); + $this->storedObjects[] = & $xml; + } else { + $xml = $this->storedObjects[$handle]; + } + return new Amfphp_Core_Amf_Types_Xml($xml); + } + + /** + * read amf 3 xml doc + * @return Amfphp_Core_Amf_Types_Xml + */ + protected function readAmf3XmlDocument() { + $handle = $this->readAmf3Int(); + $inline = (($handle & 1) != 0); + $handle = $handle >> 1; + if ($inline) { + $xml = $this->readBuffer($handle); + $this->storedObjects[] = & $xml; + } else { + $xml = $this->storedObjects[$handle]; + } + return new Amfphp_Core_Amf_Types_XmlDocument($xml); + } + + /** + * read Amf 3 byte array + * @return Amfphp_Core_Amf_Types_ByteArray + */ + protected function readAmf3ByteArray() { + $handle = $this->readAmf3Int(); + $inline = (($handle & 1) != 0); + $handle = $handle >> 1; + if ($inline) { + $ba = new Amfphp_Core_Amf_Types_ByteArray($this->readBuffer($handle)); + $this->storedObjects[] = & $ba; + } else { + $ba = $this->storedObjects[$handle]; + } + return $ba; + } + + /** + * read amf 3 array + * @return array + */ + protected function readAmf3Array() { + $handle = $this->readAmf3Int(); + $inline = (($handle & 1) != 0); + $handle = $handle >> 1; + if ($inline) { + $hashtable = array(); + $this->storedObjects[] = & $hashtable; + $key = $this->readAmf3String(); + while ($key != '') { + $value = $this->readAmf3Data(); + $hashtable[$key] = $value; + $key = $this->readAmf3String(); + } + + for ($i = 0; $i < $handle; $i++) { + //Grab the type for each element. + $value = $this->readAmf3Data(); + $hashtable[$i] = $value; + } + return $hashtable; + } else { + return $this->storedObjects[$handle]; + } + } + + /** + * read amf 3 object + * @return stdClass + */ + protected function readAmf3Object() { + $handle = $this->readAmf3Int(); + $inline = (($handle & 1) != 0); + $handle = $handle >> 1; + + if ($inline) { + //an inline object + $inlineClassDef = (($handle & 1) != 0); + $handle = $handle >> 1; + if ($inlineClassDef) { + //inline class-def + $typeIdentifier = $this->readAmf3String(); + $typedObject = !is_null($typeIdentifier) && $typeIdentifier != ''; + //flags that identify the way the object is serialized/deserialized + $externalizable = (($handle & 1) != 0); + $handle = $handle >> 1; + $dynamic = (($handle & 1) != 0); + $handle = $handle >> 1; + $classMemberCount = $handle; + + $classMemberDefinitions = array(); + for ($i = 0; $i < $classMemberCount; $i++) { + $classMemberDefinitions[] = $this->readAmf3String(); + } + + $classDefinition = array('type' => $typeIdentifier, 'members' => $classMemberDefinitions, + 'externalizable' => $externalizable, 'dynamic' => $dynamic); + $this->storedDefinitions[] = $classDefinition; + } else { + //a reference to a previously passed class-def + $classDefinition = $this->storedDefinitions[$handle]; + } + } else { + //an object reference + return $this->storedObjects[$handle]; + } + + + $type = $classDefinition['type']; + $obj = new stdClass(); + + //Add to references as circular references may search for this object + $this->storedObjects[] = & $obj; + + if($classDefinition['externalizable']){ + $externalizedDataField = Amfphp_Core_Amf_Constants::FIELD_EXTERNALIZED_DATA; + $obj->$externalizedDataField = $this->readAmf3Data(); + }else{ + $members = $classDefinition['members']; + $memberCount = count($members); + for ($i = 0; $i < $memberCount; $i++) { + $val = $this->readAmf3Data(); + $key = $members[$i]; + $obj->$key = $val; + } + + if ($classDefinition['dynamic'] /* && obj is ASObject */) { + $key = $this->readAmf3String(); + while ($key != '') { + $value = $this->readAmf3Data(); + $obj->$key = $value; + $key = $this->readAmf3String(); + } + } + } + + if ($type != '') { + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + $obj->$explicitTypeField = $type; + } + + return $obj; + } + + /** + * readLong grabs the next 4 bytes shifts and combines them to produce an integer + * + * @return int The resulting integer from the next 4 bytes + */ + protected function readLong() { + return ((ord($this->rawData[$this->currentByte++]) << 24) | + (ord($this->rawData[$this->currentByte++]) << 16) | + (ord($this->rawData[$this->currentByte++]) << 8) | + ord($this->rawData[$this->currentByte++])); // read the next 4 bytes, shift and add + } + + /** + * read some data and move pointer + * @param type $len + * @return mixed + */ + protected function readBuffer($len) { + $data = ''; + for ($i = 0; $i < $len; $i++) { + $data .= $this->rawData + {$i + $this->currentByte}; + } + $this->currentByte += $len; + return $data; + } + +} + +?> \ No newline at end of file diff --git a/Core/Amf/Handler.php b/Core/Amf/Handler.php new file mode 100644 index 0000000..c78993d --- /dev/null +++ b/Core/Amf/Handler.php @@ -0,0 +1,230 @@ +lastRequestMessageResponseUri = '/1'; + if (isset($sharedConfig[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS])) { + $this->returnErrorDetails = $sharedConfig[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]; + } + } + + /** + * deserialize + * @see Amfphp_Core_Common_IDeserializer + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return string + */ + public function deserialize(array $getData, array $postData, $rawPostData) { + $deserializer = new Amfphp_Core_Amf_Deserializer(); + $requestPacket = $deserializer->deserialize($getData, $postData, $rawPostData); + return $requestPacket; + } + + /** + * creates a ServiceCallParameters object from an Amfphp_Core_Amf_Message + * supported separators in the targetUri are '/' and '.' + * @param Amfphp_Core_Amf_Message $Amfphp_Core_Amf_Message + * @return Amfphp_Core_Common_ServiceCallParameters + */ + protected function getServiceCallParameters(Amfphp_Core_Amf_Message $Amfphp_Core_Amf_Message) { + $targetUri = str_replace('.', '/', $Amfphp_Core_Amf_Message->targetUri); + $split = explode('/', $targetUri); + $ret = new Amfphp_Core_Common_ServiceCallParameters(); + $ret->methodName = array_pop($split); + $ret->serviceName = join($split, '/'); + $ret->methodParameters = $Amfphp_Core_Amf_Message->data; + return $ret; + } + + /** + * process a request and generate a response. + * throws an Exception if anything fails, so caller must encapsulate in try/catch + * + * @param Amfphp_Core_Amf_Message $requestMessage + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return Amfphp_Core_Amf_Message the response Message for the request + */ + protected function handleRequestMessage(Amfphp_Core_Amf_Message $requestMessage, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $fromFilters = $filterManager->callFilters(self::FILTER_AMF_REQUEST_MESSAGE_HANDLER, null, $requestMessage); + if ($fromFilters) { + $handler = $fromFilters; + return $handler->handleRequestMessage($requestMessage, $serviceRouter); + } + + //plugins didn't do any special handling. Assumes this is a simple Amfphp_Core_Amf_ RPC call + $serviceCallParameters = $this->getServiceCallParameters($requestMessage); + $ret = $serviceRouter->executeServiceCall($serviceCallParameters->serviceName, $serviceCallParameters->methodName, $serviceCallParameters->methodParameters); + $responseMessage = new Amfphp_Core_Amf_Message(); + $responseMessage->data = $ret; + $responseMessage->targetUri = $requestMessage->responseUri . Amfphp_Core_Amf_Constants::CLIENT_SUCCESS_METHOD; + //not specified + $responseMessage->responseUri = 'null'; + return $responseMessage; + } + + /** + * handle deserialized request + * @see Amfphp_Core_Common_IDeserializedRequestHandler + * @param mixed $deserializedRequest + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return mixed + */ + public function handleDeserializedRequest($deserializedRequest, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + self::$requestPacket = $deserializedRequest; + self::$responsePacket = new Amfphp_Core_Amf_Packet(); + $numHeaders = count(self::$requestPacket->headers); + for ($i = 0; $i < $numHeaders; $i++) { + $requestHeader = self::$requestPacket->headers[$i]; + //handle a header. This is a job for plugins, unless comes a header that is so fundamental that it needs to be handled by the core + $fromFilters = Amfphp_Core_FilterManager::getInstance()->callFilters(self::FILTER_AMF_REQUEST_HEADER_HANDLER, null, $requestHeader); + if ($fromFilters) { + $handler = $fromFilters; + $handler->handleRequestHeader($requestHeader); + } + } + + $numMessages = count(self::$requestPacket->messages); + + //set amf version to the one detected in request + self::$responsePacket->amfVersion = self::$requestPacket->amfVersion; + + //handle each message + for ($i = 0; $i < $numMessages; $i++) { + $requestMessage = self::$requestPacket->messages[$i]; + $this->lastRequestMessageResponseUri = $requestMessage->responseUri; + $responseMessage = $this->handleRequestMessage($requestMessage, $serviceRouter); + self::$responsePacket->messages[] = $responseMessage; + } + + return self::$responsePacket; + } + + /** + * handle exception + * @see Amfphp_Core_Common_IExceptionHandler + * @param Exception $exception + * @return Amfphp_Core_Amf_Packet + */ + public function handleException(Exception $exception) { + $errorPacket = new Amfphp_Core_Amf_Packet(); + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $fromFilters = $filterManager->callFilters(self::FILTER_AMF_EXCEPTION_HANDLER, null); + if ($fromFilters) { + $handler = $fromFilters; + return $handler->generateErrorResponse($exception); + } + + //no special handling by plugins. generate a simple error response with information about the exception + $errorResponseMessage = null; + $errorResponseMessage = new Amfphp_Core_Amf_Message(); + $errorResponseMessage->targetUri = $this->lastRequestMessageResponseUri . Amfphp_Core_Amf_Constants::CLIENT_FAILURE_METHOD; + //not specified + $errorResponseMessage->responseUri = 'null'; + $data = new stdClass(); + $data->faultCode = $exception->getCode(); + $data->faultString = $exception->getMessage(); + if ($this->returnErrorDetails) { + $data->faultDetail = $exception->getTraceAsString(); + $data->rootCause = $exception; + } else { + $data->faultDetail = ''; + } + $errorResponseMessage->data = $data; + + $errorPacket->messages[] = $errorResponseMessage; + return $errorPacket; + } + + /** + * serialize + * @see Amfphp_Core_Common_ISerializer + * @param mixed $data + * @return mixed + */ + public function serialize($data) { + + $serializer = new Amfphp_Core_Amf_Serializer(); + return $serializer->serialize($data); + } + +} + +?> diff --git a/Core/Amf/Header.php b/Core/Amf/Header.php new file mode 100644 index 0000000..8f74c1f --- /dev/null +++ b/Core/Amf/Header.php @@ -0,0 +1,58 @@ +name = $name; + $this->required = $required; + $this->data = $data; + } + +} + +?> \ No newline at end of file diff --git a/Core/Amf/Message.php b/Core/Amf/Message.php new file mode 100644 index 0000000..b156335 --- /dev/null +++ b/Core/Amf/Message.php @@ -0,0 +1,66 @@ +targetUri = $targetUri; + $this->responseUri = $responseUri; + $this->data = $data; + } + +} + +?> diff --git a/Core/Amf/Packet.php b/Core/Amf/Packet.php new file mode 100644 index 0000000..03d24d8 --- /dev/null +++ b/Core/Amf/Packet.php @@ -0,0 +1,55 @@ + + */ + public $headers; + + /** + * The place to keep the Message elements + * + * @var + */ + public $messages; + + /** + * either 0 or 3. This is stored here when deserializing, because the serializer needs the info + * @var + */ + public $amfVersion; + + + /** + * The constructor function for a new Amf object. + * + * All the constructor does is initialize the headers and Messages containers + */ + public function __construct() { + $this->headers = array(); + $this->messages = array(); + $this->headerTable = array(); + $this->amfVersion = Amfphp_Core_Amf_Constants::AMF0_ENCODING; + } + + + +} +?> diff --git a/Core/Amf/Serializer.php b/Core/Amf/Serializer.php new file mode 100644 index 0000000..d1b97fc --- /dev/null +++ b/Core/Amf/Serializer.php @@ -0,0 +1,905 @@ +packet = $data; + $this->resetReferences(); + + $this->writeInt(0); // write the version (always 0) + $count = count($this->packet->headers); + $this->writeInt($count); // write header count + for ($i = 0; $i < $count; $i++) { + $this->resetReferences(); + //write header + $header = $this->packet->headers[$i]; + $this->writeUTF($header->name); + if ($header->required) { + $this->writeByte(1); + } else { + $this->writeByte(0); + } + $tempBuf = $this->outBuffer; + $this->outBuffer = ''; + + $this->writeData($header->data); + $serializedHeader = $this->outBuffer; + $this->outBuffer = $tempBuf; + $this->writeLong(strlen($serializedHeader)); + $this->outBuffer .= $serializedHeader; + } + $count = count($this->packet->messages); + $this->writeInt($count); // write the Message count + for ($i = 0; $i < $count; $i++) { + $this->resetReferences(); + //write body. + $message = $this->packet->messages[$i]; + $this->writeUTF($message->targetUri); + $this->writeUTF($message->responseUri); + //save the current buffer, and flush it to write the Message + $tempBuf = $this->outBuffer; + $this->outBuffer = ''; + $this->writeData($message->data); + $serializedMessage = $this->outBuffer; + $this->outBuffer = $tempBuf; + $this->writeLong(strlen($serializedMessage)); + $this->outBuffer .= $serializedMessage; + } + + return $this->outBuffer; + } + + /** + * initialize reference arrays and counters. Call before writing a body or a header, as the indices are local to each message body or header + */ + protected function resetReferences() { + $this->Amf0StoredObjects = array(); + $this->storedStrings = array(); + $this->storedObjects = array(); + $this->className2TraitsInfo = array(); + } + + /** + * get serialized data output + * @return string + */ + public function getOutput() { + return $this->outBuffer; + } + + /** + * writeByte writes a singe byte to the output stream + * 0-255 range + * + * @param int $b An int that can be converted to a byte + */ + protected function writeByte($b) { + $this->outBuffer .= pack('c', $b); // use pack with the c flag + } + + /** + * writeInt takes an int and writes it as 2 bytes to the output stream + * 0-65535 range + * + * @param int $n An integer to convert to a 2 byte binary string + */ + protected function writeInt($n) { + $this->outBuffer .= pack('n', $n); // use pack with the n flag + } + + /** + * writeLong takes an int, float or double and converts it to a 4 byte binary string and + * adds it to the output buffer + * + * @param long $l A long to convert to a 4 byte binary string + */ + protected function writeLong($l) { + $this->outBuffer .= pack('N', $l); // use pack with the N flag + } + + /** + * writeDouble takes a float as the input and writes it to the output stream. + * Then if the system is big-endian, it reverses the bytes order because all + * doubles passed via remoting are passed little-endian. + * + * @param double $d The double to add to the output buffer + */ + protected function writeDouble($d) { + $b = pack('d', $d); // pack the bytes + if (Amfphp_Core_Amf_Util::isSystemBigEndian()) { // if we are a big-endian processor + $r = strrev($b); + } else { // add the bytes to the output + $r = $b; + } + + $this->outBuffer .= $r; + } + + /** + * writeUTF takes and input string, writes the length as an int and then + * appends the string to the output buffer + * + * @param string $s The string less than 65535 characters to add to the stream + */ + protected function writeUtf($s) { + $this->writeInt(strlen($s)); // write the string length - max 65535 + $this->outBuffer .= $s; // write the string chars + } + + /** + * writeLongUTF will write a string longer than 65535 characters. + * It works exactly as writeUTF does except uses a long for the length + * flag. + * + * @param string $s A string to add to the byte stream + */ + protected function writeLongUtf($s) { + $this->writeLong(strlen($s)); + $this->outBuffer .= $s; // write the string chars + } + + /** + * writeBoolean writes the boolean code (0x01) and the data to the output stream + * + * @param bool $d The boolean value + */ + protected function writeBoolean($d) { + $this->writeByte(1); // write the 'boolean-marker' + $this->writeByte($d); // write the boolean byte (0 = FALSE; rest = TRUE) + } + + /** + * writeString writes the string code (0x02) and the UTF8 encoded + * string to the output stream. + * Note: strings are truncated to 64k max length. Use XML as type + * to send longer strings + * + * @param string $d The string data + */ + protected function writeString($d) { + $count = strlen($d); + if ($count < 65536) { + $this->writeByte(2); + $this->writeUTF($d); + } else { + $this->writeByte(12); + $this->writeLongUTF($d); + } + } + + /** + * writeXML writes the xml code (0x0F) and the XML string to the output stream + * Note: strips whitespace + * @param Amfphp_Core_Amf_Types_Xml $d + */ + protected function writeXML(Amfphp_Core_Amf_Types_Xml $d) { + if (!$this->handleReference($d->data, $this->Amf0StoredObjects)) { + $this->writeByte(0x0F); + $this->writeLongUTF(preg_replace('/\>(\n|\r|\r\n| |\t)*\<', trim($d->data))); + } + } + + /** + * writeDate writes the date code (0x0B) and the date value (milliseconds from 1 January 1970) to the output stream, along with an empty unsupported timezone + * + * @param Amfphp_Core_Amf_Types_Date $d The date value + */ + protected function writeDate(Amfphp_Core_Amf_Types_Date $d) { + $this->writeByte(0x0B); + $this->writeDouble($d->timeStamp); + $this->writeInt(0); + } + + /** + * writeNumber writes the number code (0x00) and the numeric data to the output stream + * All numbers passed through remoting are floats. + * + * @param int $d The numeric data + */ + protected function writeNumber($d) { + $this->writeByte(0); // write the number code + $this->writeDouble(floatval($d)); // write the number as a double + } + + /** + * writeNull writes the null code (0x05) to the output stream + */ + protected function writeNull() { + $this->writeByte(5); // null is only a 0x05 flag + } + + /** + * writeUndefined writes the Undefined code (0x06) to the output stream + */ + protected function writeUndefined() { + $this->writeByte(6); // Undefined is only a 0x06 flag + } + + /** + * writeObjectEnd writes the object end code (0x009) to the output stream + */ + protected function writeObjectEnd() { + $this->writeInt(0); // write the end object flag 0x00, 0x00, 0x09 + $this->writeByte(9); + } + + /** + * writeArrayOrObject first determines if the PHP array contains all numeric indexes + * or a mix of keys. Then it either writes the array code (0x0A) or the + * object code (0x03) and then the associated data. + * + * @param array $d The php array + */ + protected function writeArrayOrObject($d) { + // referencing is disabled in arrays + //Because if the array contains only primitive values, + //Then === will say that the two arrays are strictly equal + //if they contain the same values, even if they are really distinct + $count = count($this->Amf0StoredObjects); + if ($count <= self::MAX_STORED_OBJECTS) { + $this->Amf0StoredObjects[$count] = & $d; + } + + $numeric = array(); // holder to store the numeric keys + $string = array(); // holder to store the string keys + $len = count($d); // get the total number of entries for the array + $largestKey = -1; + foreach ($d as $key => $data) { // loop over each element + if (is_int($key) && ($key >= 0)) { // make sure the keys are numeric + $numeric[$key] = $data; // The key is an index in an array + $largestKey = max($largestKey, $key); + } else { + $string[$key] = $data; // The key is a property of an object + } + } + $num_count = count($numeric); // get the number of numeric keys + $str_count = count($string); // get the number of string keys + + if (($num_count > 0 && $str_count > 0) || + ($num_count > 0 && $largestKey != $num_count - 1)) { // this is a mixed array + $this->writeByte(8); // write the mixed array code + $this->writeLong($num_count); // write the count of items in the array + $this->writeObjectFromArray($numeric + $string); // write the numeric and string keys in the mixed array + } else if ($num_count > 0) { // this is just an array + $num_count = count($numeric); // get the new count + + $this->writeByte(10); // write the array code + $this->writeLong($num_count); // write the count of items in the array + for ($i = 0; $i < $num_count; $i++) { // write all of the array elements + $this->writeData($numeric[$i]); + } + } else if ($str_count > 0) { // this is an object + $this->writeByte(3); // this is an object so write the object code + $this->writeObjectFromArray($string); // write the object name/value pairs + } else { //Patch submitted by Jason Justman + $this->writeByte(10); // make this an array still + $this->writeInt(0); // give it 0 elements + $this->writeInt(0); // give it an element pad, this looks like a bug in Flash, + //but keeps the next alignment proper + } + } + + /** + * write reference + * @param int $num + */ + protected function writeReference($num) { + $this->writeByte(0x07); + $this->writeInt($num); + } + + /** + * writeObjectFromArray handles writing a php array with string or mixed keys. It does + * not write the object code as that is handled by the writeArrayOrObject and this method + * is shared with the CustomClass writer which doesn't use the object code. + * + * @param array $d The php array with string keys + */ + protected function writeObjectFromArray($d) { + foreach ($d as $key => $data) { // loop over each element + $this->writeUTF($key); // write the name of the object + $this->writeData($data); // write the value of the object + } + $this->writeObjectEnd(); + } + + /** + * handles writing an anoynous object (stdClass) + * can also be a reference + * + * @param stdClass $d The php object to write + */ + protected function writeAnonymousObject($d) { + if (!$this->handleReference($d, $this->Amf0StoredObjects)) { + $this->writeByte(3); + foreach ($d as $key => $data) { // loop over each element + if ($key[0] != "\0") { + $this->writeUTF($key); // write the name of the object + $this->writeData($data); // write the value of the object + } + } + $this->writeObjectEnd(); + } + } + + /** + * writeTypedObject takes an instance of a class and writes the variables defined + * in it to the output stream. + * To accomplish this we just blanket grab all of the object vars with get_object_vars, minus the Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE field, whiuch is used as class name + * + * @param object $d The object to serialize the properties. The deserializer looks for Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE on this object and writes it as the class name. + */ + protected function writeTypedObject($d) { + if ($this->handleReference($d, $this->Amf0StoredObjects)) { + return; + } + $this->writeByte(16); // write the custom class code + + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + $className = $d->$explicitTypeField; + if (!$className) { + throw new Amfphp_Core_Exception(Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE . ' not found on a object that is to be sent as typed. ' . print_r($d, true)); + } + unset($d->$explicitTypeField); + $this->writeUTF($className); // write the class name + $objVars = $d; + foreach ($objVars as $key => $data) { // loop over each element + if ($key[0] != "\0") { + $this->writeUTF($key); // write the name of the object + $this->writeData($data); // write the value of the object + } + } + $this->writeObjectEnd(); + } + + /** + * writeData checks to see if the type was declared and then either + * auto negotiates the type or relies on the user defined type to + * serialize the data into Amf + * + * @param mixed $d The data + */ + protected function writeData($d) { + if ($this->packet->amfVersion == Amfphp_Core_Amf_Constants::AMF3_ENCODING) { //amf3 data. This is most often, so it's has been moved to the top to be first + $this->writeByte(0x11); + $this->writeAmf3Data($d); + return; + } elseif (is_int($d) || is_float($d)) { // double + $this->writeNumber($d); + return; + } elseif (is_string($d)) { // string, long string + $this->writeString($d); + return; + } elseif (is_bool($d)) { // boolean + $this->writeBoolean($d); + return; + } elseif (is_null($d)) { // null + $this->writeNull(); + return; + } elseif (Amfphp_Core_Amf_Util::is_undefined($d)) { // undefined + $this->writeUndefined(); + return; + } elseif (is_array($d)) { // array + $this->writeArrayOrObject($d); + return; + } elseif (Amfphp_Core_Amf_Util::is_date($d)) { // date + $this->writeDate($d); + return; + } elseif (Amfphp_Core_Amf_Util::is_Xml($d)) { // Xml (note, no XmlDoc in AMF0) + $this->writeXML($d); + return; + } elseif (is_object($d)) { + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + if (isset($d->$explicitTypeField)) { + $this->writeTypedObject($d); + return; + } else { + $this->writeAnonymousObject($d); + return; + } + } + throw new Amfphp_Core_Exception("couldn't write data " . print_r($d)); + } + + /* * ****************************************************************************** + * Amf3 related code + * ***************************************************************************** */ + + /** + * write amf 3 data + * @todo no type markers ("\6', for example) in this method! + * @param mixed $d + */ + protected function writeAmf3Data($d) { + if (is_int($d)) { //int + $this->writeAmf3Number($d); + return; + } elseif (is_float($d)) { //double + $this->outBuffer .= "\5"; + $this->writeDouble($d); + return; + } elseif (is_string($d)) { // string + $this->outBuffer .= "\6"; + $this->writeAmf3String($d); + return; + } elseif (is_bool($d)) { // boolean + $this->writeAmf3Bool($d); + return; + } elseif (is_null($d)) { // null + $this->writeAmf3Null(); + return; + } elseif (Amfphp_Core_Amf_Util::is_undefined($d)) { // undefined + $this->writeAmf3Undefined(); + return; + } elseif (Amfphp_Core_Amf_Util::is_date($d)) { // date + $this->writeAmf3Date($d); + return; + } elseif (is_array($d)) { // array + $this->writeAmf3Array($d); + return; + } elseif (Amfphp_Core_Amf_Util::is_byteArray($d)) { //byte array + $this->writeAmf3ByteArray($d); + return; + } elseif (Amfphp_Core_Amf_Util::is_Xml($d)) { // Xml + $this->writeAmf3Xml($d); + return; + } elseif (Amfphp_Core_Amf_Util::is_XmlDocument($d)) { // XmlDoc + $this->writeAmf3XmlDocument($d); + return; + } elseif (is_object($d)) { + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + if (isset($d->$explicitTypeField)) { + $this->writeAmf3TypedObject($d); + return; + } else { + $this->writeAmf3AnonymousObject($d); + return; + } + } + throw new Amfphp_Core_Exception("couldn't write object " . print_r($d, false)); + } + + /** + * Write undefined (Amf3). + * + * @return nothing + */ + protected function writeAmf3Undefined() { + $this->outBuffer .= "\0"; + } + + /** + * Write NULL (Amf3). + * + * @return nothing + */ + protected function writeAmf3Null() { + $this->outBuffer .= "\1"; + } + + /** + * Write a boolean (Amf3). + * + * @param bool $d the boolean to serialise + * + * @return nothing + */ + protected function writeAmf3Bool($d) { + $this->outBuffer .= $d ? "\3" : "\2"; + } + + /** + * Write an (un-)signed integer (Amf3). + * + * @see getAmf3Int() + * + * @param int $d the integer to serialise + * + * @return nothing + */ + protected function writeAmf3Int($d) { + $this->outBuffer .= $this->getAmf3Int($d); + } + + /** + * Write a string (Amf3). Strings are stored in a cache and in case the same string + * is written again, a reference to the string is sent instead of the string itself. + * + * note: Sending strings larger than 268435455 (2^28-1 byte) will (silently) fail! + * + * note: The string marker is NOT sent here and has to be sent before, if needed. + * + * + * @param string $d the string to send + * + * @return The reference index inside the lookup table is returned. In case of an empty + * string which is sent in a special way, NULL is returned. + */ + protected function writeAmf3String($d) { + + if ($d === '') { + //Write 0x01 to specify the empty string ('UTF-8-empty') + $this->outBuffer .= "\1"; + return; + } + + if (!$this->handleReference($d, $this->storedStrings)) { + $this->writeAmf3Int(strlen($d) << 1 | 1); // U29S-value + $this->outBuffer .= $d; + } + } + + /** + * handles writing an anoynous object (stdClass) + * can also be a reference + * Also creates a bogus traits entry, as even an anonymous object has traits. In this way a reference to a class trait will have the right id. + * @todo it would seem that to create only one traits entry for an anonymous object would be the way to go. this + * however messes things up in both Flash and Charles Proxy. For testing call discovery service using AMF. investigate. + * + * @param stdClass $d The php object to write + * @param doReference Boolean This is used by writeAmf3Array, where the reference has already been taken care of, + * so there this method is called with false + */ + protected function writeAmf3AnonymousObject($d, $doReference = true) { + + //Write the object tag + $this->outBuffer .= "\12"; + if ($doReference && $this->handleReference($d, $this->storedObjects)) { + return; + } + + //bogus class traits entry + $this->className2TraitsInfo[] = array(); + + //anonymous object. So type this as a dynamic object with no sealed members. + //U29O-traits : 1011. + $this->writeAmf3Int(0xB); + //no class name. empty string for anonymous object + $this->writeAmf3String(""); + //name/value pairs for dynamic properties + foreach ($d as $key => $value) { + $this->writeAmf3String($key); + $this->writeAmf3Data($value); + } + //empty string, marks end of dynamic members + $this->outBuffer .= "\1"; + } + + /** + * write amf3 array + * @param array $d + */ + protected function writeAmf3Array(array $d) { + // referencing is disabled in arrays + //Because if the array contains only primitive values, + //Then === will say that the two arrays are strictly equal + //if they contain the same values, even if they are really distinct + $count = count($this->storedObjects); + if ($count <= self::MAX_STORED_OBJECTS) { + $this->storedObjects[$count] = & $d; + } + + $numeric = array(); // holder to store the numeric keys >= 0 + $string = array(); // holder to store the string keys; actually, non-integer or integer < 0 are stored + $len = count($d); // get the total number of entries for the array + $largestKey = -1; + foreach ($d as $key => $data) { // loop over each element + if (is_int($key) && ($key >= 0)) { // make sure the keys are numeric + $numeric[$key] = $data; // The key is an index in an array + $largestKey = max($largestKey, $key); + } else { + $string[$key] = $data; // The key is a property of an object + } + } + + $num_count = count($numeric); // get the number of numeric keys + $str_count = count($string); // get the number of string keys + + if ( + ($str_count > 0 && $num_count == 0) || // Only strings or negative integer keys are present. + ($num_count > 0 && $largestKey != $num_count - 1) // Non-negative integer keys are present, but the array is not 'dense' (it has gaps). + ) { + //// this is a mixed array. write it as an anonymous/dynamic object with no sealed members + $this->writeAmf3AnonymousObject($numeric + $string, false); + } else { // this is just an array + $this->outBuffer .= "\11"; + $num_count = count($numeric); + $handle = $num_count * 2 + 1; + $this->writeAmf3Int($handle); + + foreach ($string as $key => $val) { + $this->writeAmf3String($key); + $this->writeAmf3Data($val); + } + $this->writeAmf3String(''); //End start hash + + for ($i = 0; $i < $num_count; $i++) { + $this->writeAmf3Data($numeric[$i]); + } + } + } + + /** + * Return the serialisation of the given integer (Amf3). + * + * note: There does not seem to be a way to distinguish between signed and unsigned integers. + * This method just sends the lowest 29 bit as-is, and the receiver is responsible to interpret + * the result as signed or unsigned based on some context. + * + * note: The limit imposed by Amf3 is 29 bit. So in case the given integer is longer than 29 bit, + * only the lowest 29 bits will be serialised. No error will be logged! + * @TODO refactor into writeAmf3Int + * + * @param int $d the integer to serialise + * + * @return string + */ + protected function getAmf3Int($d) { + + /** + * @todo The lowest 29 bits are kept and all upper bits are removed. In case of + * an integer larger than 29 bits (32 bit, 64 bit, etc.) the value will effectively change! Maybe throw an exception! + */ + $d &= 0x1fffffff; + + if ($d < 0x80) { + return + chr($d); + } elseif ($d < 0x4000) { + return + chr($d >> 7 & 0x7f | 0x80) . + chr($d & 0x7f); + } elseif ($d < 0x200000) { + return + chr($d >> 14 & 0x7f | 0x80) . + chr($d >> 7 & 0x7f | 0x80) . + chr($d & 0x7f); + } else { + return + chr($d >> 22 & 0x7f | 0x80) . + chr($d >> 15 & 0x7f | 0x80) . + chr($d >> 8 & 0x7f | 0x80) . + chr($d & 0xff); + } + } + + /** + * write Amf3 Number + * @param number $d + */ + protected function writeAmf3Number($d) { + if (is_int($d) && $d >= -268435456 && $d <= 268435455) {//check valid range for 29bits + $this->outBuffer .= "\4"; + $this->writeAmf3Int($d); + } else { + //overflow condition would occur upon int conversion + $this->outBuffer .= "\5"; + $this->writeDouble($d); + } + } + + /** + * write Amfphp_Core_Amf_Types_Xml in amf3 + * @param Amfphp_Core_Amf_Types_Xml $d + */ + protected function writeAmf3Xml(Amfphp_Core_Amf_Types_Xml $d) { + $d = preg_replace('/\>(\n|\r|\r\n| |\t)*\<', trim($d->data)); + $this->writeByte(0x0B); + $this->writeAmf3String($d); + } + + /** + * write Amfphp_Core_Amf_Types_XmlDocument in amf3 + * @param Amfphp_Core_Amf_Types_XmlDocument $d + */ + protected function writeAmf3XmlDocument(Amfphp_Core_Amf_Types_XmlDocument $d) { + $d = preg_replace('/\>(\n|\r|\r\n| |\t)*\<', trim($d->data)); + $this->writeByte(0x07); + $this->writeAmf3String($d); + } + + /** + * write Amfphp_Core_Amf_Types_Date in amf 3 + * @param Amfphp_Core_Amf_Types_Date $d + */ + protected function writeAmf3Date(Amfphp_Core_Amf_Types_Date $d) { + $this->writeByte(0x08); + $this->writeAmf3Int(1); + $this->writeDouble($d->timeStamp); + } + + /** + * write Amfphp_Core_Amf_Types_ByteArray in amf3 + * @param Amfphp_Core_Amf_Types_ByteArray $d + */ + protected function writeAmf3ByteArray(Amfphp_Core_Amf_Types_ByteArray $d) { + $this->writeByte(0x0C); + $data = $d->data; + if (!$this->handleReference($data, $this->storedObjects)) { + $obj_length = strlen($data); + $this->writeAmf3Int($obj_length << 1 | 0x01); + $this->outBuffer .= $data; + } + } + + /** + * looks if $obj already has a reference. If it does, write it, and return true. If not, add it to the references array. + * Depending on whether or not the spl_object_hash function can be used ( available (PHP >= 5.2), and can only be used on an object) + * things are handled a bit differently: + * - if possible, objects are hashed and the hash is used as a key to the references array. So the array has the structure hash => reference + * - if not, the object is pushed to the references array, and array_search is used. So the array has the structure reference => object. + * maxing out the number of stored references improves performance(tested with an array of 9000 identical objects). This may be because isset's performance + * is linked to the size of the array. weird... + * note on using $references[$count] = &$obj; rather than + * $references[] = &$obj; + * the first one is right, the second is not, as with the second one we could end up with the following: + * some object hash => 0, 0 => array. (it should be 1 => array) + * + * This also means that 2 completely separate instances of a class but with the same values will be written fully twice if we can't use the hash system + * + * @param mixed $obj + * @param array $references + */ + protected function handleReference(&$obj, array &$references) { + $key = false; + $count = count($references); + if (is_object($obj) && function_exists('spl_object_hash')) { + $hash = spl_object_hash($obj); + if (isset($references[$hash])) { + $key = $references[$hash]; + } else { + if ($count <= self::MAX_STORED_OBJECTS) { + //there is some space left, store object for reference + $references[$hash] = $count; + } + } + } else { + //no hash available, use array with simple numeric keys + $key = array_search($obj, $references, TRUE); + + if (($key === false) && ($count <= self::MAX_STORED_OBJECTS)) { + // $key === false means the object isn't already stored + // count... means there is still space + //so only store if these 2 conditions are met + $references[$count] = &$obj; + } + } + + if ($key !== false) { + //reference exists. write it and return true + if ($this->packet->amfVersion == Amfphp_Core_Amf_Constants::AMF0_ENCODING) { + $this->writeReference($key); + } else { + $handle = $key << 1; + $this->writeAmf3Int($handle); + } + return true; + } else { + return false; + } + } + + /** + * writes a typed object. Type is determined by having an "explicit type" field. If this field is + * not set, call writeAmf3AnonymousObject + * write all properties as sealed members. + * @param object $d + */ + protected function writeAmf3TypedObject($d) { + //Write the object tag + $this->outBuffer .= "\12"; + if ($this->handleReference($d, $this->storedObjects)) { + return; + } + + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + + $className = $d->$explicitTypeField; + $propertyNames = null; + + if (isset($this->className2TraitsInfo[$className])) { + //we have traits information and a reference for it, so use a traits reference + $traitsInfo = $this->className2TraitsInfo[$className]; + $propertyNames = $traitsInfo['propertyNames']; + $referenceId = $traitsInfo['referenceId']; + $traitsReference = $referenceId << 2 | 1; + $this->writeAmf3Int($traitsReference); + } else { + //no available traits information. Write the traits + $propertyNames = array(); + foreach ($d as $key => $value) { + if ($key[0] != "\0" && $key != $explicitTypeField) { //Don't write protected properties or explicit type + $propertyNames[] = $key; + } + } + + //U29O-traits: 0011 in LSBs, and number of properties + $numProperties = count($propertyNames); + $traits = $numProperties << 4 | 3; + $this->writeAmf3Int($traits); + //class name + $this->writeAmf3String($className); + //list of property names + foreach ($propertyNames as $propertyName) { + $this->writeAmf3String($propertyName); + } + + //save for reference + $traitsInfo = array('referenceId' => count($this->className2TraitsInfo), 'propertyNames' => $propertyNames); + $this->className2TraitsInfo[$className] = $traitsInfo; + } + //list of values + foreach ($propertyNames as $propertyName) { + $this->writeAmf3Data($d->$propertyName); + } + } + +} + +?> \ No newline at end of file diff --git a/Core/Amf/Types/ByteArray.php b/Core/Amf/Types/ByteArray.php new file mode 100644 index 0000000..2d90c0f --- /dev/null +++ b/Core/Amf/Types/ByteArray.php @@ -0,0 +1,37 @@ +data = $data; + } + +} + +?> diff --git a/Core/Amf/Types/Date.php b/Core/Amf/Types/Date.php new file mode 100644 index 0000000..d8a072e --- /dev/null +++ b/Core/Amf/Types/Date.php @@ -0,0 +1,38 @@ += 5.2.0, and setTimestamp for PHP >= 5.3.0, so it can't be used in amfPHP + * Of course feel free to use it yourself if your host supports it. + * + * @package Amfphp_Core_Amf_Types + * @author Danny Kopping + */ +class Amfphp_Core_Amf_Types_Date +{ + /** + * number of ms since 1st Jan 1970 + * @var integer + */ + public $timeStamp; + + /** + * time stamp + * @param integer $timeStamp + */ + public function __construct($timeStamp) + { + $this->timeStamp = $timeStamp; + + } +} + +?> \ No newline at end of file diff --git a/Core/Amf/Types/Undefined.php b/Core/Amf/Types/Undefined.php new file mode 100644 index 0000000..7eeac4a --- /dev/null +++ b/Core/Amf/Types/Undefined.php @@ -0,0 +1,21 @@ + diff --git a/Core/Amf/Types/Xml.php b/Core/Amf/Types/Xml.php new file mode 100644 index 0000000..c789031 --- /dev/null +++ b/Core/Amf/Types/Xml.php @@ -0,0 +1,39 @@ +data = $data; + } + +} + +?> diff --git a/Core/Amf/Types/XmlDocument.php b/Core/Amf/Types/XmlDocument.php new file mode 100644 index 0000000..b43747f --- /dev/null +++ b/Core/Amf/Types/XmlDocument.php @@ -0,0 +1,38 @@ +data = $data; + } + +} + +?> diff --git a/Core/Amf/Util.php b/Core/Amf/Util.php new file mode 100644 index 0000000..a4f83d7 --- /dev/null +++ b/Core/Amf/Util.php @@ -0,0 +1,134 @@ + + */ + static public function isSystemBigEndian() { + $tmp = pack('d', 1); // determine the multi-byte ordering of this machine temporarily pack 1 + return ($tmp == "\0\0\0\0\0\0\360\77"); + } + + /** + * applies a function to all objects contained by $obj and $obj itself. + * iterates on $obj and its sub objects, which can iether be arrays or objects + * @param mixed $obj the object/array that will be iterated on + * @param array $callBack the function to apply to obj and subobjs. must take 1 parameter, and return the modified object + * @param int $recursionDepth current recursion depth. The first call should be made with this set 0. default is 0 + * @param int $maxRecursionDepth default is 30 + * @param bool $ignoreAmfTypes ignore objects with type in Amfphp_Core_Amf_Types package. could maybe be replaced by a regexp, but this is better for performance + * @return mixed array or object, depending on type of $obj + */ + static public function applyFunctionToContainedObjects($obj, $callBack, $recursionDepth = 0, $maxRecursionDepth = 30, $ignoreAmfTypes = true) { + if ($recursionDepth == $maxRecursionDepth) { + throw new Amfphp_Core_Exception("couldn't recurse deeper on object. Probably a looped reference"); + } + //don't apply to Amfphp types such as byte array + if ($ignoreAmfTypes && is_object($obj) && substr(get_class($obj), 0, 21) == 'Amfphp_Core_Amf_Types') { + return $obj; + } + + //apply callBack to obj itself + $obj = call_user_func($callBack, $obj); + + //if $obj isn't a complex type don't go any further + if (!is_array($obj) && !is_object($obj)) { + return $obj; + } + + foreach ($obj as $key => $data) { // loop over each element + $modifiedData = null; + if (is_object($data) || is_array($data)) { + //data is complex, so don't apply callback directly, but recurse on it + $modifiedData = self::applyFunctionToContainedObjects($data, $callBack, $recursionDepth + 1, $maxRecursionDepth); + } else { + //data is simple, so apply data + $modifiedData = call_user_func($callBack, $data); + } + //store converted data + if (is_array($obj)) { + $obj[$key] = $modifiedData; + } else { + $obj->$key = $modifiedData; + } + } + + return $obj; + } + + /** + * Determines whether an object is the ActionScript type 'undefined' + * + * @static + * @param $obj + * @return bool + */ + static public function is_undefined($obj) { + return is_object($obj) ? get_class($obj) == 'Amfphp_Core_Amf_Types_Undefined' : false; + } + + /** + * Determines whether an object is the ActionScript type 'ByteArray' + * + * @static + * @param $obj + * @return bool + */ + static public function is_byteArray($obj) { + return is_object($obj) ? get_class($obj) == 'Amfphp_Core_Amf_Types_ByteArray' : false; + } + + /** + * Determines whether an object is the ActionScript type 'Date' + * + * @static + * @param $obj + * @return bool + */ + static public function is_date($obj) { + return is_object($obj) ? get_class($obj) == 'Amfphp_Core_Amf_Types_Date' : false; + } + + /** + * Determines whether an object is the ActionScript type 'XML' + * + * @static + * @param $obj + * @return bool + */ + static public function is_Xml($obj) { + return is_object($obj) ? get_class($obj) == 'Amfphp_Core_Amf_Types_Xml' : false; + } + + /** + * Determines whether an object is the ActionScript type 'XmlDoument' + * + * @static + * @param $obj + * @return bool + */ + static public function is_XmlDocument($obj) { + return is_object($obj) ? get_class($obj) == 'Amfphp_Core_Amf_Types_XmlDocument' : false; + } + +} + +?> diff --git a/Core/Common/ClassFindInfo.php b/Core/Common/ClassFindInfo.php new file mode 100644 index 0000000..a43ab30 --- /dev/null +++ b/Core/Common/ClassFindInfo.php @@ -0,0 +1,46 @@ +absolutePath = $absolutePath; + $this->className = $className; + } + +} + +?> diff --git a/Core/Common/IDeserializedRequestHandler.php b/Core/Common/IDeserializedRequestHandler.php new file mode 100644 index 0000000..1e15ad0 --- /dev/null +++ b/Core/Common/IDeserializedRequestHandler.php @@ -0,0 +1,29 @@ + diff --git a/Core/Common/IDeserializer.php b/Core/Common/IDeserializer.php new file mode 100644 index 0000000..9c718a7 --- /dev/null +++ b/Core/Common/IDeserializer.php @@ -0,0 +1,28 @@ + diff --git a/Core/Common/IExceptionHandler.php b/Core/Common/IExceptionHandler.php new file mode 100644 index 0000000..9342eae --- /dev/null +++ b/Core/Common/IExceptionHandler.php @@ -0,0 +1,28 @@ + diff --git a/Core/Common/ISerializer.php b/Core/Common/ISerializer.php new file mode 100644 index 0000000..efd75d0 --- /dev/null +++ b/Core/Common/ISerializer.php @@ -0,0 +1,26 @@ + diff --git a/Core/Common/ServiceCallParameters.php b/Core/Common/ServiceCallParameters.php new file mode 100644 index 0000000..86323fa --- /dev/null +++ b/Core/Common/ServiceCallParameters.php @@ -0,0 +1,44 @@ + + */ + public $methodParameters; + +} +?> diff --git a/Core/Common/ServiceRouter.php b/Core/Common/ServiceRouter.php new file mode 100644 index 0000000..b9ec53e --- /dev/null +++ b/Core/Common/ServiceRouter.php @@ -0,0 +1,159 @@ +serviceFolderPaths = $serviceFolderPaths; + $this->serviceNames2ClassFindInfo = $serviceNames2ClassFindInfo; + $this->checkArgumentCount = $checkArgumentCount; + } + + /** + * get a service object by its name. Looks for a match in serviceNames2ClassFindInfo, then in the defined service folders. + * If none found, an exception is thrown + * @todo maybe option for a fully qualified class name. + * this method is static so that it can be used also by the discovery service + * '__' are replaced by '/' to help the client generator support packages without messing with folders and the like + * + * @param type $serviceName + * @param array $serviceFolderPaths + * @param array $serviceNames2ClassFindInfo + * @return Object service object + */ + public static function getServiceObjectStatically($serviceName, array $serviceFolderPaths, array $serviceNames2ClassFindInfo){ + $serviceObject = null; + if (isset($serviceNames2ClassFindInfo[$serviceName])) { + $classFindInfo = $serviceNames2ClassFindInfo[$serviceName]; + require_once $classFindInfo->absolutePath; + $serviceObject = new $classFindInfo->className(); + } else { + $temp = str_replace('.', '/', $serviceName); + $serviceNameWithSlashes = str_replace('__', '/', $temp); + $serviceIncludePath = $serviceNameWithSlashes . '.php'; + $exploded = explode('/', $serviceNameWithSlashes); + $className = $exploded[count($exploded) - 1]; + //no class find info. try to look in the folders + foreach ($serviceFolderPaths as $folderPath) { + $servicePath = $folderPath . $serviceIncludePath; + if (file_exists($servicePath)) { + require_once $servicePath; + $serviceObject = new $className(); + break; + } + } + } + + if (!$serviceObject) { + throw new Amfphp_Core_Exception("$serviceName service not found "); + } + return $serviceObject; + + } + + /** + * get service object + * @param String $serviceName + * @return Object service object + */ + public function getServiceObject($serviceName) { + return self::getServiceObjectStatically($serviceName, $this->serviceFolderPaths, $this->serviceNames2ClassFindInfo); + } + + /** + * loads and instanciates a service class matching $serviceName, then calls the function defined by $methodName using $parameters as parameters + * throws an exception if service not found. + * if the service exists but not the function, an exception is thrown by call_user_func_array. It is pretty explicit, so no further code was added + * + * @param string $serviceName + * @param string $methodName + * @param array $parameters + * @return mixed the result of the function call + * + */ + public function executeServiceCall($serviceName, $methodName, array $parameters) { + $unfilteredServiceObject = $this->getServiceObject($serviceName); + $serviceObject = Amfphp_Core_FilterManager::getInstance()->callFilters(self::FILTER_SERVICE_OBJECT, $unfilteredServiceObject, $serviceName, $methodName, $parameters); + + $isStaticMethod = false; + + if(method_exists($serviceObject, $methodName)){ + //method exists, but isn't static + }else if (method_exists($serviceName, $methodName)) { + $isStaticMethod = true; + }else{ + throw new Amfphp_Core_Exception("method $methodName not found on $serviceName object "); + } + + if(substr($methodName, 0, 1) == '_'){ + throw new Exception("The method $methodName starts with a '_', and is therefore not accessible"); + } + + if($this->checkArgumentCount){ + $method = new ReflectionMethod($serviceObject, $methodName); + $numberOfRequiredParameters = $method->getNumberOfRequiredParameters(); + $numberOfParameters = $method->getNumberOfParameters(); + $numberOfProvidedParameters = count($parameters); + if ($numberOfProvidedParameters < $numberOfRequiredParameters || $numberOfProvidedParameters > $numberOfParameters) { + throw new Amfphp_Core_Exception("Invalid number of parameters for method $methodName in service $serviceName : $numberOfRequiredParameters required, $numberOfParameters total, $numberOfProvidedParameters provided"); + } + } + if($isStaticMethod){ + return call_user_func_array(array($serviceName, $methodName), $parameters); + }else{ + return call_user_func_array(array($serviceObject, $methodName), $parameters); + } + } + + +} + +?> \ No newline at end of file diff --git a/Core/Config.php b/Core/Config.php new file mode 100644 index 0000000..a79485c --- /dev/null +++ b/Core/Config.php @@ -0,0 +1,105 @@ + of paths + */ + public $serviceFolderPaths; + + /** + * a dictionary of service classes represented in a ClassFindInfo. + * The key is the name of the service, the value is the class find info. + * for example: $serviceNames2ClassFindInfo["AmfphpDiscoveryService"] = new Amfphp_Core_Common_ClassFindInfo( dirname(__FILE__) . '/AmfphpDiscoveryService.php', 'AmfphpDiscoveryService'); + * The forward slash is important, don't use "\'! + * @var of ClassFindInfo + */ + public $serviceNames2ClassFindInfo; + + /** + * set to true if you want the service router to check if the number of arguments received by amfPHP matches with the method being called. + * This should be set to false in production for performance reasons + * default is true + * @var Boolean + */ + public $checkArgumentCount = true; + + /** + * paths to the folder containing the plugins. defaults to AMFPHP_ROOTPATH . '/Plugins/' + * @var array + */ + public $pluginsFolders; + + /** + * array containing untyped plugin configuration data. Add as needed. The advised format is the name of the plugin as key, and then + * paramName/paramValue pairs as an array. + * example: array('plugin' => array( 'paramName' =>'paramValue')) + * The array( 'paramName' =>'paramValue') will be passed as is to the plugin at construction time. + * + * @var array + */ + public $pluginsConfig; + + /** + * array containing configuration data that is shared between the plugins. The format is paramName/paramValue pairs as an array. + * + * @var array + */ + public $sharedConfig; + + /** + * if true, there will be detailed information in the error messages, including confidential information like paths. + * So it is advised to set to true for development purposes and to false in production. + * default is true. + * Set in the shared config. + * for example + * $this->sharedConfig[self::CONFIG_RETURN_ERROR_DETAILS] = true; + * @var Boolean + */ + + const CONFIG_RETURN_ERROR_DETAILS = 'returnErrorDetails'; + + /** + * array of plugins that are available but should be disabled + * @var array + */ + public $disabledPlugins; + + /** + * constructor + */ + public function __construct() { + $this->serviceFolderPaths = array(); + $this->serviceFolderPaths [] = dirname(__FILE__) . '/../Services/'; + $this->serviceNames2ClassFindInfo = array(); + $this->pluginsFolders = array(AMFPHP_ROOTPATH . 'Plugins/'); + $this->pluginsConfig = array(); + $this->sharedConfig = array(); + $this->disabledPlugins = array(); + //disable logging and error handler by default + $this->disabledPlugins[] = 'AmfphpLogger'; + $this->disabledPlugins[] = 'AmfphpErrorHandler'; + //example of setting config switch in a plugin: + //$this->pluginsConfig['AmfphpDiscovery']['restrictAccess'] = false; + } + +} + +?> diff --git a/Core/Exception.php b/Core/Exception.php new file mode 100644 index 0000000..6861c1f --- /dev/null +++ b/Core/Exception.php @@ -0,0 +1,21 @@ + diff --git a/Core/FilterManager.php b/Core/FilterManager.php new file mode 100644 index 0000000..97e9eb4 --- /dev/null +++ b/Core/FilterManager.php @@ -0,0 +1,130 @@ + + * Call addFilter to register a filter, with a default priority of 10, and call callFilter to actually execute the filter + * + * The data structure is as follows: + * all registered filters : associative array ( filter name => name filters) + * name filters : associative array containing filters for one filter name (priority => priority filters) + * priority filters: numbered array containing filters for one filter name and one priority [callback1, callback2, etc.] + * + * So for example if you were to call: + * addFilter("FILTER_1", $obj, "method1"); + * addFilter("FILTER_1", $obj, "method2"); + * addFilter("FILTER_1", $obj, "method3", 15); + * addFilter("FILTER_2", $obj, "method4"); + * + * the structure would be + * "FILTER_1" => array( + * 10 => [callback for method1, callback for method2] + * 15 => [callback for method3] + * "FILTER_2" => array( + * 10 => [callback for method4] + * + * This is a singleton, so use getInstance + * @package Amfphp_Core + * @author Ariel Sommeria-klein + * */ +class Amfphp_Core_FilterManager{ + /** + * all registered filters + */ + protected $allFilters = NULL; + + /** + *protected instance of singleton + */ + protected static $instance = NULL; + /** + * constructor + */ + protected function __construct(){ + $this->allFilters = Array(); + } + + /** + * get instance + * @return Amfphp_Core_FilterManager + */ + public static function getInstance() { + if (self::$instance == NULL) { + self::$instance = new Amfphp_Core_FilterManager(); + } + return self::$instance; + } + + /** + * call the functions registered for the given filter. There can be as many parameters as necessary, but only the first + * one can be changed and and returned by the callees. + * The other parameters must be considered as context, and should not be modified by the callees, and will not be returned to the caller. + * + * param 1: String $filterName the name of the filter which was used in addFilter( a string) + * following params: parameters for the function call. As many as necessary can be passed, but only the first will be filtered + * @return mixed the first call parameter, as filtered by the callees. + */ + public function callFilters(){ + + //get arguments with which to call the function. All except first, which is the filter name + $filterArgs = func_get_args(); + $filterName = array_shift($filterArgs); + $filtered = $filterArgs[0]; + if (isset($this->allFilters[$filterName])){ + //the filters matching name + $nameFilters = &$this->allFilters[$filterName]; + //sort by priority + ksort($nameFilters); + // loop on filters matching filter name by priority + foreach($nameFilters as $priorityFilters){ + //loop for each existing priority + foreach($priorityFilters as $callBack){ + $fromCallee = call_user_func_array($callBack, $filterArgs); + if($fromCallee !== null){ //!== null because otherwise array() doesn't qualify + $filtered = $filterArgs[0] = $fromCallee; + } + + } + } + } + + return $filtered; + } + + + + /** + * register an object method for the given filter + * call this method in your contexts to be notified when the filter occures + * @see http://php.net/manual/en/function.call-user-func.php + * @see http://www.php.net/manual/en/language.pseudo-types.php#language.types.callback + * + * + * @param String $filterName the name of the filter + * @param Object $object the object on which to call the method + * @param String $methodName the name of the method to call on the object + * @param int $priority + */ + public function addFilter($filterName, $object, $methodName, $priority = 10){ + // init the filter placeholder + if (!isset($this->allFilters[$filterName])){ + $this->allFilters[$filterName] = Array(); + } + $nameFilters = &$this->allFilters[$filterName]; + if (!isset($nameFilters[$priority])){ + $nameFilters[$priority] = Array(); + } + $priorityFilters = &$nameFilters[$priority]; + // add the filter callback + $priorityFilters[] = array($object, $methodName); + } +} +?> \ No newline at end of file diff --git a/Core/Gateway.php b/Core/Gateway.php new file mode 100644 index 0000000..5283217 --- /dev/null +++ b/Core/Gateway.php @@ -0,0 +1,255 @@ + 'application/x-amf') + * @param String $contentType + */ + const FILTER_HEADERS = 'FILTER_HEADERS'; + + + /** + * config. + * @var Amfphp_Core_Config + */ + protected $config; + + /** + * typically the $_GET array. + * @var array + */ + protected $getData; + + /** + * typically the $_POST array. + * @var array + */ + protected $postData; + + /** + * the content type. For example for amf, application/x-amf + * @var String + */ + protected $contentType; + + /** + * the serialized request + * @var String + */ + protected $rawInputData; + + /** + * the serialized response + * @var String + */ + protected $rawOutputData; + + /** + * + */ + /** + * constructor + * @param array $getData typically the $_GET array. + * @param array $postData typically the $_POST array. + * @param String $rawInputData + * @param String $contentType + * @param Amfphp_Core_Config $config optional. The default config object will be used if null + */ + public function __construct(array $getData, array $postData, $rawInputData, $contentType, Amfphp_Core_Config $config = null) { + $this->getData = $getData; + $this->postData = $postData; + $this->rawInputData = $rawInputData; + $this->contentType = $contentType; + if($config){ + $this->config = $config; + }else{ + $this->config = new Amfphp_Core_Config(); + } + + } + + /** + * The service method runs the gateway application. It deserializes the raw data passed into the constructor as an Amfphp_Core_Amf_Packet, handles the headers, + * handles the messages as requests to services, and returns the responses from the services + * It does not however handle output headers, gzip compression, etc. that is the job of the calling script + * + * @return the serialized amf packet containg the service responses + */ + public function service(){ + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $defaultHandler = new Amfphp_Core_Amf_Handler($this->config->sharedConfig); + $deserializedResponse = null; + try{ + Amfphp_Core_PluginManager::getInstance()->loadPlugins($this->config->pluginsFolders, $this->config->pluginsConfig, $this->config->sharedConfig, $this->config->disabledPlugins); + + //filter service folder paths + $this->config->serviceFolderPaths = $filterManager->callFilters(self::FILTER_SERVICE_FOLDER_PATHS, $this->config->serviceFolderPaths); + + //filter service names 2 class find info + $this->config->serviceNames2ClassFindInfo = $filterManager->callFilters(self::FILTER_SERVICE_NAMES_2_CLASS_FIND_INFO, $this->config->serviceNames2ClassFindInfo); + + //filter serialized request + $this->rawInputData = $filterManager->callFilters(self::FILTER_SERIALIZED_REQUEST, $this->rawInputData); + + //filter deserializer + $deserializer = $filterManager->callFilters(self::FILTER_DESERIALIZER, $defaultHandler, $this->contentType); + + //deserialize + $deserializedRequest = $deserializer->deserialize($this->getData, $this->postData, $this->rawInputData); + + //filter deserialized request + $deserializedRequest = $filterManager->callFilters(self::FILTER_DESERIALIZED_REQUEST, $deserializedRequest); + + //create service router + $serviceRouter = new Amfphp_Core_Common_ServiceRouter($this->config->serviceFolderPaths, $this->config->serviceNames2ClassFindInfo, $this->config->checkArgumentCount); + + //filter deserialized request handler + $deserializedRequestHandler = $filterManager->callFilters(self::FILTER_DESERIALIZED_REQUEST_HANDLER, $defaultHandler, $this->contentType); + + //handle request + $deserializedResponse = $deserializedRequestHandler->handleDeserializedRequest($deserializedRequest, $serviceRouter); + + }catch(Exception $exception){ + //filter exception handler + $exceptionHandler = $filterManager->callFilters(self::FILTER_EXCEPTION_HANDLER, $defaultHandler, $this->contentType); + + //handle exception + $deserializedResponse = $exceptionHandler->handleException($exception); + + } + //filter deserialized response + $deserializedResponse = $filterManager->callFilters(self::FILTER_DESERIALIZED_RESPONSE, $deserializedResponse); + + + //filter serializer + $serializer = $filterManager->callFilters(self::FILTER_SERIALIZER, $defaultHandler, $this->contentType); + + //serialize + $this->rawOutputData = $serializer->serialize($deserializedResponse); + + //filter serialized response + $this->rawOutputData = $filterManager->callFilters(self::FILTER_SERIALIZED_RESPONSE, $this->rawOutputData); + + return $this->rawOutputData; + + } + + /** + * get the response headers. Creates an associative array of headers, then filters them, then returns an array of strings + * @return array + */ + public function getResponseHeaders(){ + + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $headers = array('Content-Type' => $this->contentType); + $headers = $filterManager->callFilters(self::FILTER_HEADERS, $headers, $this->contentType); + $ret = array(); + foreach($headers as $key => $value){ + $ret[] = $key . ': ' . $value; + } + return $ret; + } + + /** + * helper function for sending gateway data to output stream + */ + public function output(){ + + $responseHeaders = $this->getResponseHeaders(); + foreach($responseHeaders as $header){ + header($header); + } + echo $this->rawOutputData; + } + +} +?> diff --git a/Core/HttpRequestGatewayFactory.php b/Core/HttpRequestGatewayFactory.php new file mode 100644 index 0000000..981bd15 --- /dev/null +++ b/Core/HttpRequestGatewayFactory.php @@ -0,0 +1,56 @@ + it's a binary stream, but there seems to be no better type than String for this. + */ + static protected function getRawPostData(){ + if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { + return $GLOBALS['HTTP_RAW_POST_DATA']; + }else{ + return file_get_contents('php://input'); + } + + } + + /** + * create the gateway. + * content type is recovered by looking at the GET parameter contentType. If it isn't set, it looks in the content headers. + * @param Amfphp_Core_Config $config optional. If null, the gateway will use the default + * @return Amfphp_Core_Gateway + */ + static public function createGateway(Amfphp_Core_Config $config = null){ + $contentType = null; + if(isset ($_GET['contentType'])){ + $contentType = $_GET['contentType']; + }else if(isset ($_SERVER['CONTENT_TYPE'])){ + + $contentType = $_SERVER['CONTENT_TYPE']; + } + $rawInputData = self::getRawPostData(); + return new Amfphp_Core_Gateway($_GET, $_POST, $rawInputData, $contentType, $config); + } +} +?> diff --git a/Core/PluginManager.php b/Core/PluginManager.php new file mode 100644 index 0000000..9847fa0 --- /dev/null +++ b/Core/PluginManager.php @@ -0,0 +1,115 @@ +pluginInstances = array(); + } + + /** + * gives access to the singleton + * @return Amfphp_Core_PluginManager + */ + public static function getInstance() { + if (self::$instance == NULL) { + self::$instance = new Amfphp_Core_PluginManager(); + } + return self::$instance; + } + + /** + * load the plugins + * @param array $pluginFolders where to load the plugins from. Absolute paths. For example Amfphp/Plugins/ + * @param array $pluginsConfig optional. an array containing the plugin configuration, using the plugin name as key. + * @param array $sharedConfig optional. if both a specific config and a shared config are available, concatenate them to create the plugin config. + * Otherwise use whatever is not null + * @param array $disabledPlugins optional. an array of names of plugins to disable + */ + public function loadPlugins($pluginFolders, array $pluginsConfig = null, array $sharedConfig = null, array $disabledPlugins = null) { + foreach ($pluginFolders as $pluginsFolderRootPath) { + if (!is_dir($pluginsFolderRootPath)) { + throw new Amfphp_Core_Exception('invalid path for loading plugins at ' . $pluginsFolderRootPath); + } + $folderContent = scandir($pluginsFolderRootPath); + + foreach ($folderContent as $pluginName) { + if (!is_dir($pluginsFolderRootPath . '/' . $pluginName)) { + continue; + } + //avoid system folders + if ($pluginName[0] == '.') { + continue; + } + + //check first if plugin is disabled + $shouldLoadPlugin = true; + if ($disabledPlugins) { + foreach ($disabledPlugins as $disabledPlugin) { + if ($disabledPlugin == $pluginName) { + $shouldLoadPlugin = false; + } + } + } + if (!$shouldLoadPlugin) { + continue; + } + + if (!class_exists($pluginName, false)) { + require_once $pluginsFolderRootPath . '/' . $pluginName . '/' . $pluginName . '.php'; + } + + $pluginConfig = array(); + if ($pluginsConfig && isset($pluginsConfig[$pluginName])) { + $pluginConfig = $pluginsConfig[$pluginName]; + } + if ($sharedConfig) { + $pluginConfig += $sharedConfig; + } + + + $pluginInstance = new $pluginName($pluginConfig); + $this->pluginInstances[] = $pluginInstance; + } + } + } + +} + +?> diff --git a/Plugins/AmfphpAuthentication/AmfphpAuthentication.php b/Plugins/AmfphpAuthentication/AmfphpAuthentication.php new file mode 100644 index 0000000..5009546 --- /dev/null +++ b/Plugins/AmfphpAuthentication/AmfphpAuthentication.php @@ -0,0 +1,202 @@ + + * public function _getMethodRoles($methodName){ + * if($methodName == 'adminMethod'){ + * return array('admin'); + * }else{ + * return null; + * } + * } + * + * + * + * To authenticate a user, the plugin looks for a 'login' method. This method can either be called + * explicitly, or by setting a header with the name 'Credentials', containing {userid: userid, password: password}, as defined by the AS2 + * NetConnection.setCredentials method. It is considered good practise to have a 'logout' method, though this is optional + * The login method returns a role in a 'string'. It takes 2 parameters, the user id and the password. + * The logout method should call AmfphpAuthentication::clearSessionInfo(); + * + * See the AuthenticationService class in the test data for an example of an implementation. + * + * Roles are stored in an associative array in $_SESSION[self::SESSION_FIELD_ROLES], using the role as key for easy access + * + * @link https://github.com/silexlabs/amfphp-2.0/blob/master/Tests/TestData/Services/AuthenticationService.php + * @package Amfphp_Plugins_Authentication + * @author Ariel Sommeria-klein + */ +class AmfphpAuthentication { + /** + * the field in the session where the roles array is stored + */ + + const SESSION_FIELD_ROLES = 'amfphp_roles'; + + /** + * the name of the method on the service where the method roles are given + */ + const METHOD_GET_METHOD_ROLES = '_getMethodRoles'; + + /** + * the name of the login method + */ + const METHOD_LOGIN = 'login'; + + /** + * the user id passed in the credentials header + * @var String + */ + public $headerUserId; + + /** + * the password passed in the credentials header + * @var String + */ + protected $headerPassword; + + /** + * constructor. + * @param array $config optional key/value pairs in an associative array. Used to override default configuration values. + */ + public function __construct(array $config = null) { + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $filterManager->addFilter(Amfphp_Core_Common_ServiceRouter::FILTER_SERVICE_OBJECT, $this, 'filterServiceObject'); + $filterManager->addFilter(Amfphp_Core_Amf_Handler::FILTER_AMF_REQUEST_HEADER_HANDLER, $this, 'filterAmfRequestHeaderHandler'); + $this->headerUserId = null; + $this->headerPassword = null; + } + + /** + * filter amf request header handler + * @param Object $handler + * @param Amfphp_Core_Amf_Header $header the request header + * @return AmfphpAuthentication + */ + public function filterAmfRequestHeaderHandler($handler, Amfphp_Core_Amf_Header $header) { + if ($header->name == Amfphp_Core_Amf_Constants::CREDENTIALS_HEADER_NAME) { + return $this; + } + } + + /** + * called when the service object is created, just before the method call. + * Tries to authenticate if a credentials header was sent in the packet. + * Throws an exception if the roles don't match + * + * @param $serviceObject + * @param $serviceName + * @param $methodName + * @return + */ + public function filterServiceObject($serviceObject, $serviceName, $methodName) { + if (!method_exists($serviceObject, self::METHOD_GET_METHOD_ROLES)) { + return; + } + + if ($methodName == self::METHOD_GET_METHOD_ROLES) { + throw new Exception('_getMethodRoles method access forbidden'); + } + + //the service object has a '_getMethodRoles' method. role checking is necessary if the returned value is not null + $methodRoles = call_user_func(array($serviceObject, self::METHOD_GET_METHOD_ROLES), $methodName); + if (!$methodRoles) { + return; + } + + //try to authenticate using header info if available + if ($this->headerUserId && $this->headerPassword) { + call_user_func(array($serviceObject, self::METHOD_LOGIN), $this->headerUserId, $this->headerPassword); + } + + if (session_id() == '') { + session_start(); + } + + if (!isset($_SESSION[self::SESSION_FIELD_ROLES])) { + throw new Amfphp_Core_Exception('User not authenticated'); + } + + $userRoles = $_SESSION[self::SESSION_FIELD_ROLES]; + + foreach ($methodRoles as $methodRole) { + if (isset($userRoles[$methodRole])) { + //a match is found + return; + } + } + throw new Amfphp_Core_Exception('Access denied.'); + } + + /** + * clears the session info set by the plugin. Use to logout + */ + public static function clearSessionInfo() { + if (session_id() == '') { + session_start(); + } + if (isset($_SESSION[self::SESSION_FIELD_ROLES])) { + unset($_SESSION[self::SESSION_FIELD_ROLES]); + } + } + + /** + * add role + * @param String $roleToAdd + */ + public static function addRole($roleToAdd) { + if (session_id() == '') { + session_start(); + } + if (!isset($_SESSION[self::SESSION_FIELD_ROLES])) { + $_SESSION[self::SESSION_FIELD_ROLES] = array(); + } + + //role isn't already available. Add it. + $_SESSION[self::SESSION_FIELD_ROLES][$roleToAdd] = true; + } + + /** + * looks for a 'Credentials' request header. If there is one, uses it to try to authentify the user. + * @param Amfphp_Core_Amf_Header $header the request header + * @return void + */ + public function handleRequestHeader(Amfphp_Core_Amf_Header $header) { + if ($header->name != Amfphp_Core_Amf_Constants::CREDENTIALS_HEADER_NAME) { + throw new Amfphp_Core_Exception('not an authentication amf header. type: ' . $header->name); + } + $userIdField = Amfphp_Core_Amf_Constants::CREDENTIALS_FIELD_USERID; + $passwordField = Amfphp_Core_Amf_Constants::CREDENTIALS_FIELD_PASSWORD; + + $userId = $header->data->$userIdField; + $password = $header->data->$passwordField; + + if (session_id() == '') { + session_start(); + } + $this->headerUserId = $userId; + $this->headerPassword = $password; + } + +} + +?> diff --git a/Plugins/AmfphpCharsetConverter/AmfphpCharsetConverter.php b/Plugins/AmfphpCharsetConverter/AmfphpCharsetConverter.php new file mode 100644 index 0000000..17e604a --- /dev/null +++ b/Plugins/AmfphpCharsetConverter/AmfphpCharsetConverter.php @@ -0,0 +1,209 @@ +clientCharset = 'utf-8'; + $this->phpCharset = 'utf-8'; + $this->method = self::METHOD_NONE; + if($config){ + if(isset ($config['clientCharset'])){ + $this->clientCharset = $config['clientCharset']; + } + if(isset ($config['phpCharset'])){ + $this->phpCharset = $config['phpCharset']; + } + if(isset ($config['method'])){ + $this->method = $config['method']; + } + } + + //only add filters if conversion is necessary + if($this->method == self::METHOD_NONE){ + return; + } + if($this->clientCharset == $this->phpCharset){ + return; + } + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST, $this, 'filterDeserializedRequest'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_RESPONSE, $this, 'filterDeserializedResponse'); + } + + + /** + * converts untyped objects to their typed counterparts. Loads the class if necessary + * @param mixed $deserializedRequest + * @return mixed + */ + public function filterDeserializedRequest($deserializedRequest){ + $deserializedRequest = Amfphp_Core_Amf_Util::applyFunctionToContainedObjects($deserializedRequest, array($this, 'convertStringFromClientToPhpCharsets')); + return $deserializedRequest; + + } + + /** + * looks at the response and sets the explicit type field so that the serializer sends it properly + * @param mixed $deserializedResponse + * @return mixed + */ + public function filterDeserializedResponse($deserializedResponse){ + $deserializedResponse = Amfphp_Core_Amf_Util::applyFunctionToContainedObjects($deserializedResponse, array($this, 'convertStringFromPhpToClientCharsets')); + return $deserializedResponse; + + } + + + /** + * convert the string. finds the proper encoding depending on direction + * @param String $string data to convert + * @param int $direction one of the DIRECTION_XXX consts described above + * @return String + */ + protected function transliterate($string, $direction) + { + if($this->clientCharset == $this->phpCharset){ + return $string; + } + + $fromCharset = null; + $toCharset = null; + if($direction == self::DIRECTION_CLIENT_TO_PHP){ + $fromCharset = $this->clientCharset; + $toCharset = $this->phpCharset; + }else{ + $fromCharset = $this->phpCharset; + $toCharset = $this->clientCharset; + } + + switch($this->method) + { + case self::METHOD_NONE : + return $string; + case self::METHOD_ICONV: + return iconv($fromCharset, $toCharset, $string); + case self::METHOD_UTF8_DECODE: + return ($direction == self::DIRECTION_CLIENT_TO_PHP ? utf8_decode($string) : utf8_encode($string)); + case self::METHOD_MBSTRING: + return mb_convert_encoding($string, $fromCharset, $toCharset); + case self::METHOD_RECODE: + return recode_string($fromCharset . '..' . $toCharset, $string); + default: + return $string; + } + } + + /** + * converts the strings + * note: This is not a recursive function. Rather the recursion is handled by Amfphp_Core_Amf_Util::applyFunctionToContainedObjects. + * must be public so that Amfphp_Core_Amf_Util::applyFunctionToContainedObjects can call it + * @param mixed $obj + * @return mixed + */ + public function convertStringFromClientToPhpCharsets($obj){ + if(!is_string($obj)){ + return $obj; + } + + return $this->transliterate($obj, self::DIRECTION_CLIENT_TO_PHP); + + } + + /** + * note: This is not a recursive function. Rather the recusrion is handled by Amfphp_Core_Amf_Util::applyFunctionToContainedObjects. + * must be public so that Amfphp_Core_Amf_Util::applyFunctionToContainedObjects can call it + * + * @param mixed $obj + * @return mixed + */ + public function convertStringFromPhpToClientCharsets($obj){ + if(!is_string($obj)){ + return $obj; + } + return $this->transliterate($obj, self::DIRECTION_PHP_TO_CLIENT); + } + + +} +?> diff --git a/Plugins/AmfphpCustomClassConverter/AmfphpCustomClassConverter.php b/Plugins/AmfphpCustomClassConverter/AmfphpCustomClassConverter.php new file mode 100644 index 0000000..cb90158 --- /dev/null +++ b/Plugins/AmfphpCustomClassConverter/AmfphpCustomClassConverter.php @@ -0,0 +1,160 @@ + + * $returnObj = new stdObj(); + * $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + * $returnObj->$explicitTypeField = "MyVO"; + * + * + * If you are using Flash, remember that you need to register the class alias so that Flash converts the MyVO AMF object to a Flash MyVO object. + * If you are using Flex you can do this with the RemoteClass metadata tag. + * + * @see Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE + * @link http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/package.html#registerClassAlias%28%29 + * @link http://livedocs.adobe.com/flex/3/html/metadata_3.html#198729 + * @package Amfphp_Plugins_CustomClassConverter + * @author Ariel Sommeria-Klein + */ +class AmfphpCustomClassConverter { + + /** + * paths to folders containing custom classes(relative or absolute) + * default is /Services/Vo/ + * @var array of paths + */ + public $customClassFolderPaths; + + /** + * constructor. + * @param array $config optional key/value pairs in an associative array. Used to override default configuration values. + */ + public function __construct(array $config = null) { + //default + $this->customClassFolderPaths = array(AMFPHP_ROOTPATH . '/Services/Vo/'); + if ($config) { + if (isset($config['customClassFolderPaths'])) { + $this->customClassFolderPaths = $config['customClassFolderPaths']; + } + } + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST, $this, 'filterDeserializedRequest'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_RESPONSE, $this, 'filterDeserializedResponse'); + } + + /** + * converts untyped objects to their typed counterparts. Loads the class if necessary + * @param mixed $deserializedRequest + * @return mixed + */ + public function filterDeserializedRequest($deserializedRequest) { + $deserializedRequest = Amfphp_Core_Amf_Util::applyFunctionToContainedObjects($deserializedRequest, array($this, 'convertToTyped')); + return $deserializedRequest; + } + + /** + * looks at the outgoing packet and sets the explicit type field so that the serializer sends it properly + * @param mixed $deserializedResponse + * @return mixed + */ + public function filterDeserializedResponse($deserializedResponse) { + $deserializedResponse = Amfphp_Core_Amf_Util::applyFunctionToContainedObjects($deserializedResponse, array($this, 'markExplicitType')); + return $deserializedResponse; + } + + /** + * if the object contains an explicit type marker, this method attempts to convert it to its typed counterpart + * if the typed class is already available, then simply creates a new instance of it. If not, + * attempts to load the file from the available service folders. + * If then the class is still not available, the object is not converted + * note: This is not a recursive function. Rather the recusrion is handled by Amfphp_Core_Amf_Util::applyFunctionToContainedObjects. + * must be public so that Amfphp_Core_Amf_Util::applyFunctionToContainedObjects can call it + * @param mixed $obj + * @return mixed + */ + public function convertToTyped($obj) { + if (!is_object($obj)) { + return $obj; + } + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + if (isset($obj->$explicitTypeField)) { + $customClassName = $obj->$explicitTypeField; + if (!class_exists($customClassName, false)) { + foreach ($this->customClassFolderPaths as $folderPath) { + $customClassPath = $folderPath . '/' . $customClassName . '.php'; + if (file_exists($customClassPath)) { + require_once $customClassPath; + break; + } + } + } + if (class_exists($customClassName, false)) { + //class is available. Use it! + $typedObj = new $customClassName(); + foreach ($obj as $key => $data) { // loop over each element to copy it into typed object + if ($key != $explicitTypeField) { + $typedObj->$key = $data; + } + } + return $typedObj; + } + } + + return $obj; + } + + /** + * sets the the explicit type marker on the object and its sub-objects. This is only done if it not already set, as in some cases + * the service class might want to do this manually. + * note: This is not a recursive function. Rather the recusrion is handled by Amfphp_Core_Amf_Util::applyFunctionToContainedObjects. + * must be public so that Amfphp_Core_Amf_Util::applyFunctionToContainedObjects can call it + * + * @param mixed $obj + * @return mixed + */ + public function markExplicitType($obj) { + if (!is_object($obj)) { + return $obj; + } + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + $className = get_class($obj); + if ($className != 'stdClass' && !isset($obj->$explicitTypeField)) { + $obj->$explicitTypeField = $className; + } + return $obj; + } + +} + +?> diff --git a/Plugins/AmfphpDiscovery/AmfphpDiscovery.php b/Plugins/AmfphpDiscovery/AmfphpDiscovery.php new file mode 100644 index 0000000..3f4575c --- /dev/null +++ b/Plugins/AmfphpDiscovery/AmfphpDiscovery.php @@ -0,0 +1,83 @@ +pluginsConfig = array('AmfphpDiscovery' => array('excludePaths' => array('dBug', 'classes', 'Vo/'))); + * default is for ignoring Vo/ folder + */ + protected $excludePaths = array('Vo/'); + + /** + * restrict access to amfphp_admin. default is true. Set to false if this is a private server. + * @var boolean + */ + protected $restrictAccess = true; + + /** + * constructor. + * adds filters to grab config about services and add discovery service. Low priority so that other plugins can add their services first + * @param array $config optional key/value pairs in an associative array. Used to override default configuration values. + */ + public function __construct(array $config = null) { + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERVICE_NAMES_2_CLASS_FIND_INFO, $this, 'filterServiceNames2ClassFindInfo', 99); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERVICE_FOLDER_PATHS, $this, 'filterServiceFolderPaths', 99); + + if(isset($config['excludePaths'])){ + $this->excludePaths = $config['excludePaths']; + } + AmfphpDiscoveryService::$excludePaths = $this->excludePaths; + if(isset($config['restrictAccess'])){ + $this->restrictAccess = $config['restrictAccess']; + } + AmfphpDiscoveryService::$restrictAccess = $this->restrictAccess; + } + + /** + * grabs serviceFolderPaths from config + * @param array serviceFolderPaths array of absolute paths + */ + public function filterServiceFolderPaths(array $serviceFolderPaths){ + AmfphpDiscoveryService::$serviceFolderPaths = $serviceFolderPaths; + return $serviceFolderPaths; + } + /** + * grabs serviceNames2ClassFindInfo from config and add discovery service + * @param array $serviceNames2ClassFindInfo associative array of key -> class find info + */ + public function filterServiceNames2ClassFindInfo(array $serviceNames2ClassFindInfo){ + $serviceNames2ClassFindInfo["AmfphpDiscoveryService"] = new Amfphp_Core_Common_ClassFindInfo( dirname(__FILE__) . '/AmfphpDiscoveryService.php', 'AmfphpDiscoveryService'); + AmfphpDiscoveryService::$serviceNames2ClassFindInfo = $serviceNames2ClassFindInfo; + return $serviceNames2ClassFindInfo; + } +} + +?> diff --git a/Plugins/AmfphpDiscovery/AmfphpDiscoveryService.php b/Plugins/AmfphpDiscovery/AmfphpDiscoveryService.php new file mode 100644 index 0000000..f799c61 --- /dev/null +++ b/Plugins/AmfphpDiscovery/AmfphpDiscoveryService.php @@ -0,0 +1,194 @@ +searchFolderForServices($rootPath, $subFolder . $fileName . '/')); + } + } + } + return $ret; + } + + /** + * returns a list of available services + * @param array $serviceFolderPaths + * @param array $serviceNames2ClassFindInfo + * @return array of service names + */ + protected function getServiceNames(array $serviceFolderPaths, array $serviceNames2ClassFindInfo) { + $ret = array(); + foreach ($serviceFolderPaths as $serviceFolderPath) { + $ret = array_merge($ret, $this->searchFolderForServices($serviceFolderPath, '')); + } + + foreach ($serviceNames2ClassFindInfo as $key => $value) { + $ret[] = $key; + } + + return $ret; + } + + /** + * extracts + * - types from param tags. type is first word after tag name, name of the variable is second word ($ is removed) + * - return tag + * + * @param string $comment + * @return array{'returns' => type, 'params' => array{var name => type}} + */ + protected function parseMethodComment($comment) { + //get rid of phpdoc formatting + $comment = str_replace('/**', '', $comment); + $comment = str_replace('*', '', $comment); + $comment = str_replace('*/', '', $comment); + $exploded = explode('@', $comment); + $ret = array(); + $params = array(); + foreach ($exploded as $value) { + if (strtolower(substr($value, 0, 5)) == 'param') { + $words = explode(' ', $value); + $type = trim($words[1]); + $varName = trim(str_replace('$', '', $words[2])); + $params[$varName] = $type; + } else if (strtolower(substr($value, 0, 6)) == 'return') { + + $words = explode(' ', $value); + $type = trim($words[1]); + $ret['return'] = $type; + } + } + $ret['param'] = $params; + if (!isset($ret['return'])) { + $ret['return'] = ''; + } + return $ret; + } + + /** + * does the actual collection of data about available services + * @return array of AmfphpDiscovery_ServiceInfo + */ + public function discover() { + $serviceNames = $this->getServiceNames(self::$serviceFolderPaths, self::$serviceNames2ClassFindInfo); + $ret = array(); + foreach ($serviceNames as $serviceName) { + $serviceObject = Amfphp_Core_Common_ServiceRouter::getServiceObjectStatically($serviceName, self::$serviceFolderPaths, self::$serviceNames2ClassFindInfo); + $objR = new ReflectionObject($serviceObject); + $objComment = $objR->getDocComment(); + $methodRs = $objR->getMethods(ReflectionMethod::IS_PUBLIC); + $methods = array(); + foreach ($methodRs as $methodR) { + $methodName = $methodR->name; + + if (substr($methodName, 0, 1) == '_') { + //methods starting with a '_' as they are reserved, so filter them out + continue; + } + + $parameters = array(); + $paramRs = $methodR->getParameters(); + + $methodComment = $methodR->getDocComment(); + $parsedMethodComment = $this->parseMethodComment($methodComment); + foreach ($paramRs as $paramR) { + + $parameterName = $paramR->name; + $type = ''; + if ($paramR->getClass()) { + $type = $paramR->getClass()->name; + } else if (isset($parsedMethodComment['param'][$parameterName])) { + $type = $parsedMethodComment['param'][$parameterName]; + } + $parameterInfo = new AmfphpDiscovery_ParameterDescriptor($parameterName, $type); + + $parameters[] = $parameterInfo; + } + $methods[$methodName] = new AmfphpDiscovery_MethodDescriptor($methodName, $parameters, $methodComment, $parsedMethodComment['return']); + } + + $ret[$serviceName] = new AmfphpDiscovery_ServiceDescriptor($serviceName, $methods, $objComment); + } + //note : filtering must be done at the end, as for example excluding a Vo class needed by another creates issues + foreach ($ret as $serviceName => $serviceObj) { + foreach (self::$excludePaths as $excludePath) { + if (strpos($serviceName, $excludePath) !== false) { + unset($ret[$serviceName]); + break; + } + } + } + return $ret; + } + +} + +?> diff --git a/Plugins/AmfphpDiscovery/MethodDescriptor.php b/Plugins/AmfphpDiscovery/MethodDescriptor.php new file mode 100644 index 0000000..3fe7ac1 --- /dev/null +++ b/Plugins/AmfphpDiscovery/MethodDescriptor.php @@ -0,0 +1,62 @@ +name = $name; + $this->parameters = $parameters; + $this->comment = $comment; + $this->returnType = $returnType; + } + +} + +?> diff --git a/Plugins/AmfphpDiscovery/ParameterDescriptor.php b/Plugins/AmfphpDiscovery/ParameterDescriptor.php new file mode 100644 index 0000000..80b3b6f --- /dev/null +++ b/Plugins/AmfphpDiscovery/ParameterDescriptor.php @@ -0,0 +1,52 @@ +name = $name; + $this->type = $type; + } + +} + +?> diff --git a/Plugins/AmfphpDiscovery/ServiceDescriptor.php b/Plugins/AmfphpDiscovery/ServiceDescriptor.php new file mode 100644 index 0000000..13657f9 --- /dev/null +++ b/Plugins/AmfphpDiscovery/ServiceDescriptor.php @@ -0,0 +1,51 @@ +name = $name; + $this->methods = $methods; + $this->comment = $comment; + } +} + +?> diff --git a/Plugins/AmfphpDummy/AmfphpDummy.php b/Plugins/AmfphpDummy/AmfphpDummy.php new file mode 100644 index 0000000..8ef38ac --- /dev/null +++ b/Plugins/AmfphpDummy/AmfphpDummy.php @@ -0,0 +1,109 @@ +addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST_HANDLER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_EXCEPTION_HANDLER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_HEADERS, $this, "filterHeaders"); + } + + /** + * if no content type, then returns this. + * @param mixed null at call in gateway. + * @param String $contentType + * @return this or null + */ + public function filterHandler($handler, $contentType) { + if (!$contentType || $contentType == self::CONTENT_TYPE) { + return $this; + } + } + + /** + * deserialize + * @see Amfphp_Core_Common_IDeserializer + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return string + */ + public function deserialize(array $getData, array $postData, $rawPostData) { + $ret = new stdClass(); + return $ret; + } + + /** + * handle deserialized request + * @see Amfphp_Core_Common_IDeserializedRequestHandler + * @param mixed $deserializedRequest + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return mixed + */ + public function handleDeserializedRequest($deserializedRequest, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + + } + + /** + * handle exception + * @see Amfphp_Core_Common_IExceptionHandler + * @param Exception $exception + */ + public function handleException(Exception $exception) { + + } + + /** + * serialize. just includes index.html + * @see Amfphp_Core_Common_ISerializer + * @param mixed $data + * @return mixed + */ + public function serialize($data) { + + include(dirname(__FILE__) . "/index.html"); + } + + /** + * filter the headers to make sure the content type is set to text/html if the request was handled by the service browser + * @param array $headers + * @param string $contentType + * @return array + */ + public function filterHeaders($headers, $contentType) { + if (!$contentType || $contentType == self::CONTENT_TYPE) { + return array(); + } + } + +} + +?> diff --git a/Plugins/AmfphpDummy/index.html b/Plugins/AmfphpDummy/index.html new file mode 100644 index 0000000..4dece03 --- /dev/null +++ b/Plugins/AmfphpDummy/index.html @@ -0,0 +1,130 @@ + + + + amfPHP Entry Point + + + + + +
+ This is the URL where you must send your requests to process them. In the documentation it is known as the 'entry point'. You might also see 'gateway' in some other documentation. +
+
+
+ + diff --git a/Plugins/AmfphpErrorHandler/AmfphpErrorHandler.php b/Plugins/AmfphpErrorHandler/AmfphpErrorHandler.php new file mode 100644 index 0000000..31297de --- /dev/null +++ b/Plugins/AmfphpErrorHandler/AmfphpErrorHandler.php @@ -0,0 +1,44 @@ +file: $errfile \n
line: $errline \n
context: " . print_r($errcontext, true), $errno); +} + +?> diff --git a/Plugins/AmfphpFlexMessaging/AcknowledgeMessage.php b/Plugins/AmfphpFlexMessaging/AcknowledgeMessage.php new file mode 100644 index 0000000..7cb8f11 --- /dev/null +++ b/Plugins/AmfphpFlexMessaging/AcknowledgeMessage.php @@ -0,0 +1,104 @@ +$explicitTypeField = AmfphpFlexMessaging::FLEX_TYPE_ACKNOWLEDGE_MESSAGE; + $this->correlationId = $correlationId; + $this->messageId = $this->generateRandomId(); + $this->clientId = $this->generateRandomId(); + $this->destination = null; + $this->body = null; + $this->timeToLive = 0; + $this->timestamp = (int) (time() . '00'); + $this->headers = new stdClass(); + } + + /** + * generate random id + * @return string + */ + public function generateRandomId() { + // version 4 UUID + return sprintf( + '%08X-%04X-%04X-%02X%02X-%012X', mt_rand(), mt_rand(0, 65535), bindec(substr_replace( + sprintf('%016b', mt_rand(0, 65535)), '0100', 11, 4) + ), bindec(substr_replace(sprintf('%08b', mt_rand(0, 255)), '01', 5, 2)), mt_rand(0, 255), mt_rand() + ); + } + +} + +?> diff --git a/Plugins/AmfphpFlexMessaging/AmfphpFlexMessaging.php b/Plugins/AmfphpFlexMessaging/AmfphpFlexMessaging.php new file mode 100644 index 0000000..71c2b80 --- /dev/null +++ b/Plugins/AmfphpFlexMessaging/AmfphpFlexMessaging.php @@ -0,0 +1,170 @@ +addFilter(Amfphp_Core_Amf_Handler::FILTER_AMF_REQUEST_MESSAGE_HANDLER, $this, 'filterAmfRequestMessageHandler'); + Amfphp_Core_FilterManager::getInstance()->addFilter(Amfphp_Core_Amf_Handler::FILTER_AMF_EXCEPTION_HANDLER, $this, 'filterAmfExceptionHandler'); + $this->clientUsesFlexMessaging = false; + $this->returnErrorDetails = (isset($config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]) && $config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]); + } + + /** + * filter amf request message handler + * @param Object $handler null at call. If the plugin takes over the handling of the request message, + * it must set this to a proper handler for the message, probably itself. + * @param Amfphp_Core_Amf_Message $requestMessage the request message + * @return array + */ + public function filterAmfRequestMessageHandler($handler, Amfphp_Core_Amf_Message $requestMessage) { + if ($requestMessage->data == null) { + //all flex messages have data + return; + } + + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + + if (!isset($requestMessage->data[0]) || !isset($requestMessage->data[0]->$explicitTypeField)) { + //and all flex messages have data containing one object with an explicit type + return; + } + + $messageType = $requestMessage->data[0]->$explicitTypeField; + if ($messageType == self::FLEX_TYPE_COMMAND_MESSAGE || $messageType == self::FLEX_TYPE_REMOTING_MESSAGE) { + //recognized message type! This plugin will handle it + $this->clientUsesFlexMessaging = true; + return $this; + } + } + + /** + * filter amf exception handler + * @param Object $handler null at call. If the plugin takes over the handling of the request message, + * it must set this to a proper handler for the message, probably itself. + * @return array + */ + public function filterAmfExceptionHandler($handler) { + if ($this->clientUsesFlexMessaging) { + return $this; + } + } + + /** + * handle the request message instead of letting the Amf Handler do it. + * @param Amfphp_Core_Amf_Message $requestMessage + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return Amfphp_Core_Amf_Message + */ + public function handleRequestMessage(Amfphp_Core_Amf_Message $requestMessage, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE; + $messageType = $requestMessage->data[0]->$explicitTypeField; + $messageIdField = self::FIELD_MESSAGE_ID; + $this->lastFlexMessageId = $requestMessage->data[0]->$messageIdField; + $this->lastFlexMessageResponseUri = $requestMessage->responseUri; + + + if ($messageType == self::FLEX_TYPE_COMMAND_MESSAGE) { + //command message. An empty AcknowledgeMessage is expected. + $acknowledge = new AmfphpFlexMessaging_AcknowledgeMessage($requestMessage->data[0]->$messageIdField); + return new Amfphp_Core_Amf_Message($requestMessage->responseUri . Amfphp_Core_Amf_Constants::CLIENT_SUCCESS_METHOD, null, $acknowledge); + } + + + if ($messageType == self::FLEX_TYPE_REMOTING_MESSAGE) { + //remoting message. An AcknowledgeMessage with the result of the service call is expected. + $remoting = $requestMessage->data[0]; + $serviceCallResult = $serviceRouter->executeServiceCall($remoting->source, $remoting->operation, $remoting->body); + $acknowledge = new AmfphpFlexMessaging_AcknowledgeMessage($remoting->$messageIdField); + $acknowledge->body = $serviceCallResult; + return new Amfphp_Core_Amf_Message($requestMessage->responseUri . Amfphp_Core_Amf_Constants::CLIENT_SUCCESS_METHOD, null, $acknowledge); + } + throw new Amfphp_Core_Exception('unrecognized flex message'); + } + + /** + * flex expects error messages formatted in a special way, using the ErrorMessage object. + * @return Amfphp_Core_Amf_Packet + * @param Exception $exception + */ + public function generateErrorResponse(Exception $exception) { + $error = new AmfphpFlexMessaging_ErrorMessage($this->lastFlexMessageId); + $error->faultCode = $exception->getCode(); + $error->faultString = $exception->getMessage(); + if ($this->returnErrorDetails) { + $error->faultDetail = $exception->getTraceAsString(); + $error->rootCause = $exception; + } + $errorMessage = new Amfphp_Core_Amf_Message($this->lastFlexMessageResponseUri . Amfphp_Core_Amf_Constants::CLIENT_FAILURE_METHOD, null, $error); + $errorPacket = new Amfphp_Core_Amf_Packet(); + $errorPacket->messages[] = $errorMessage; + return $errorPacket; + } + +} + +?> diff --git a/Plugins/AmfphpFlexMessaging/ErrorMessage.php b/Plugins/AmfphpFlexMessaging/ErrorMessage.php new file mode 100644 index 0000000..bc8d37c --- /dev/null +++ b/Plugins/AmfphpFlexMessaging/ErrorMessage.php @@ -0,0 +1,64 @@ +$explicitTypeField = AmfphpFlexMessaging::FLEX_TYPE_ERROR_MESSAGE; + $this->correlationId = $correlationId; + } + +} + +?> diff --git a/Plugins/AmfphpGet/AmfphpGet.php b/Plugins/AmfphpGet/AmfphpGet.php new file mode 100644 index 0000000..be07698 --- /dev/null +++ b/Plugins/AmfphpGet/AmfphpGet.php @@ -0,0 +1,172 @@ +addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST_HANDLER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_EXCEPTION_HANDLER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_HEADERS, $this, 'filterHeaders'); + $this->returnErrorDetails = (isset ($config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]) && $config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]); + + } + + /** + * If the content type contains the 'json' string, returns this plugin + * @param mixed null at call in gateway. + * @param String $contentType + * @return this or null + */ + public function filterHandler($handler, $contentType){ + if(strpos($contentType, self::CONTENT_TYPE) !== false){ + return $this; + } + } + + /** + * deserialize + * @see Amfphp_Core_Common_IDeserializer + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return string + */ + public function deserialize(array $getData, array $postData, $rawPostData){ + return $getData; + } + + /** + * Retrieve the serviceName, methodName and parameters from the PHP object + * representing the JSON string + * call service + * @see Amfphp_Core_Common_IDeserializedRequestHandler + * @param array $deserializedRequest + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return the service call response + */ + public function handleDeserializedRequest($deserializedRequest, Amfphp_Core_Common_ServiceRouter $serviceRouter){ + + if(isset ($deserializedRequest['serviceName'])){ + $serviceName = $deserializedRequest['serviceName']; + }else{ + throw new Exception('Service name field missing in call parameters \n' . print_r($deserializedRequest, true)); + } + if(isset ($deserializedRequest['methodName'])){ + $methodName = $deserializedRequest['methodName']; + }else{ + throw new Exception('MethodName field missing in call parameters \n' . print_r($deserializedRequest, true)); + } + $parameters = array(); + $paramCounter = 1; + while(isset ($deserializedRequest["p$paramCounter"])){ + $parameters[] = $deserializedRequest["p$paramCounter"]; + $paramCounter++; + } + return $serviceRouter->executeServiceCall($serviceName, $methodName, $parameters); + + } + + /** + * handle exception + * @see Amfphp_Core_Common_IExceptionHandler + * @param Exception $exception + * @return stdClass + */ + public function handleException(Exception $exception){ + $error = new stdClass(); + $error->message = $exception->getMessage(); + $error->code = $exception->getCode(); + if($this->returnErrorDetails){ + $error->file = $exception->getFile(); + $error->line = $exception->getLine(); + $error->stack = $exception->getTraceAsString(); + } + return (object)array('error' => $error); + + } + + /** + * Encode the PHP object returned from the service call into a JSON string + * @see Amfphp_Core_Common_ISerializer + * @param mixed $data + * @return string the encoded JSON string sent to JavaScript + */ + public function serialize($data){ + $encoded = json_encode($data); + if(isset ($_GET['callback'])){ + return $_GET['callback'] . '(' . $encoded . ');'; + }else{ + return $encoded; + } + } + + + /** + * sets return content type to json + * @param array $headers + * @param string $contentType + * @return array + */ + public function filterHeaders($headers, $contentType){ + if ($contentType == self::CONTENT_TYPE) { + $headers['Content-Type'] = 'application/json'; + return $headers; + } + } + + +} +?> diff --git a/Plugins/AmfphpIncludedRequest/AmfphpIncludedRequest.php b/Plugins/AmfphpIncludedRequest/AmfphpIncludedRequest.php new file mode 100644 index 0000000..e9b8d88 --- /dev/null +++ b/Plugins/AmfphpIncludedRequest/AmfphpIncludedRequest.php @@ -0,0 +1,136 @@ +addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST_HANDLER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_EXCEPTION_HANDLER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZER, $this, "filterHandler"); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_HEADERS, $this, "filterHeaders"); + } + + /** + * if no content type, then returns this. + * @param mixed null at call in gateway. + * @param String $contentType + * @return this or null + */ + public function filterHandler($handler, $contentType) { + global $amfphpIncludedRequestServiceName; + if (isset($amfphpIncludedRequestServiceName)) { + return $this; + } + } + + /** + * deserialize + * @see Amfphp_Core_Common_IDeserializer + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return string + */ + public function deserialize(array $getData, array $postData, $rawPostData) { + global $amfphpIncludedRequestServiceName; + global $amfphpIncludedRequestMethodName; + global $amfphpIncludedRequestParameters; + return (object) array("serviceName" => $amfphpIncludedRequestServiceName, "methodName" => $amfphpIncludedRequestMethodName, "parameters" => $amfphpIncludedRequestParameters); + } + + /** + * call service + * @see Amfphp_Core_Common_IDeserializedRequestHandler + * @param array $deserializedRequest + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return the service call response + */ + public function handleDeserializedRequest($deserializedRequest, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + return $serviceRouter->executeServiceCall($deserializedRequest->serviceName, $deserializedRequest->methodName, $deserializedRequest->parameters); + } + + /** + * handle exception + * @see Amfphp_Core_Common_IExceptionHandler + * @param Exception $exception + * @return Exception + */ + public function handleException(Exception $exception) { + return $exception; + } + + /** + * set the return data in global $amfphpIncludedRequestReturnValue + * @see Amfphp_Core_Common_ISerializer + * @param mixed $data + * @return string the encoded JSON string sent to JavaScript + */ + public function serialize($data) { + global $amfphpIncludedRequestReturnValue; + + $amfphpIncludedRequestReturnValue = $data; + //typically an entry point includes a $gateway->output(); call. return null so that nothing ends up on the output + return null; + } + + /** + * filter the headers to make sure the content type is set to text/html if the request was handled by the service browser + * @param array $headers + * @param string $contentType + * @return array + */ + public function filterHeaders($headers, $contentType) { + if (isset($amfphpIncludedRequestServiceName)) { + return array(); + } + } + +} + +?> diff --git a/Plugins/AmfphpJson/AmfphpJson.php b/Plugins/AmfphpJson/AmfphpJson.php new file mode 100644 index 0000000..c491a90 --- /dev/null +++ b/Plugins/AmfphpJson/AmfphpJson.php @@ -0,0 +1,170 @@ + + * var callDataObj = {"serviceName":"PizzaService", "methodName":"getPizza","parameters":[]}; + * var callData = JSON.stringify(callDataObj); + * $.post("http://yourserver.com/Amfphp/?contentType=application/json", callData, onSuccess); + * + * + * Requires at least PHP 5.2. + * + * @package Amfphp_Plugins_Json + * @author Yannick DOMINGUEZ + */ +class AmfphpJson implements Amfphp_Core_Common_IDeserializer, Amfphp_Core_Common_IDeserializedRequestHandler, Amfphp_Core_Common_IExceptionHandler, Amfphp_Core_Common_ISerializer { + /** + * the content-type string indicating a JSON content + */ + const JSON_CONTENT_TYPE = 'application/json'; + + /** + * return error details. + * @see Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS + * @var boolean + */ + protected $returnErrorDetails = false; + + /** + * constructor. Add filters on the HookManager. + * @param array $config optional key/value pairs in an associative array. Used to override default configuration values. + */ + public function __construct(array $config = null) { + $filterManager = Amfphp_Core_FilterManager::getInstance(); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST_HANDLER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_EXCEPTION_HANDLER, $this, 'filterHandler'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZER, $this, 'filterHandler'); + $this->returnErrorDetails = (isset($config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]) && $config[Amfphp_Core_Config::CONFIG_RETURN_ERROR_DETAILS]); + } + + /** + * If the content type contains the 'json' string, returns this plugin + * @param mixed null at call in gateway. + * @param String $contentType + * @return this or null + */ + public function filterHandler($handler, $contentType) { + if (strpos($contentType, self::JSON_CONTENT_TYPE) !== false) { + return $this; + } + } + + + /** + * deserialize + * @see Amfphp_Core_Common_IDeserializer + * @param array $getData + * @param array $postData + * @param string $rawPostData + * @return string + */ + public function deserialize(array $getData, array $postData, $rawPostData) { + $jsonString = ''; + if ($rawPostData != '') { + $jsonString = $rawPostData; + } else if (isset($postData['json'])) { + $jsonString = $postData['json']; + } else { + throw new Exception('json call data not found. It must be sent in the post data'); + } + + $deserializedRequest = json_decode($rawPostData); + if ($deserializedRequest === null) { + $error = ''; + switch (json_last_error()) { + case JSON_ERROR_NONE: + $error = 'No errors'; + break; + case JSON_ERROR_DEPTH: + $error = 'Maximum stack depth exceeded'; + break; + case JSON_ERROR_STATE_MISMATCH: + $error = 'Underflow or the modes mismatch'; + break; + case JSON_ERROR_CTRL_CHAR: + $error = 'Unexpected control character found'; + break; + case JSON_ERROR_SYNTAX: + $error = 'Syntax error, malformed JSON'; + break; + case JSON_ERROR_UTF8: + $error = 'Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $error = 'Unknown error'; + break; + } + throw new Exception("
Error decoding JSON. $error \njsonString:\n $jsonString 
"); + } + if (!isset($deserializedRequest->serviceName)) { + throw new Exception("
Service name field missing in JSON. \njsonString:\n $jsonString \ndecoded: \n" . print_r($deserializedRequest, true) . '
'); + } + if (!isset($deserializedRequest->methodName)) { + throw new Exception("
MethodName field missing in JSON. \njsonString:\n $jsonString \ndecoded: \n" . print_r($deserializedRequest, true) . '
'); + } + return $deserializedRequest; + } + + /** + * Retrieve the serviceName, methodName and parameters from the PHP object + * representing the JSON string + * call service + * @see Amfphp_Core_Common_IDeserializedRequestHandler + * @param array $deserializedRequest + * @param Amfphp_Core_Common_ServiceRouter $serviceRouter + * @return the service call response + */ + public function handleDeserializedRequest($deserializedRequest, Amfphp_Core_Common_ServiceRouter $serviceRouter) { + $serviceName = $deserializedRequest->serviceName; + $methodName = $deserializedRequest->methodName; + + $parameters = array(); + if (isset($deserializedRequest->parameters)) { + $parameters = $deserializedRequest->parameters; + } + return $serviceRouter->executeServiceCall($serviceName, $methodName, $parameters); + } + + /** + * don't format; just throw! In this way ajax libs will have their error functions triggered + * @param Exception $exception + * @see Amfphp_Core_Common_IExceptionHandler + */ + public function handleException(Exception $exception) { + + throw $exception; + } + + /** + * Encode the PHP object returned from the service call into a JSON string + * @see Amfphp_Core_Common_ISerializer + * @param mixed $data + * @return the encoded JSON string sent to JavaScript + */ + public function serialize($data) { + return json_encode($data); + } + +} + +?> diff --git a/Plugins/AmfphpLogger/AmfphpLogger.php b/Plugins/AmfphpLogger/AmfphpLogger.php new file mode 100644 index 0000000..8d9680f --- /dev/null +++ b/Plugins/AmfphpLogger/AmfphpLogger.php @@ -0,0 +1,89 @@ +addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZED_REQUEST, $this, 'filterSerializedRequest'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_REQUEST, $this, 'filterDeserializedRequest'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_DESERIALIZED_RESPONSE, $this, 'filterDeserializedResponse'); + $filterManager->addFilter(Amfphp_Core_Gateway::FILTER_SERIALIZED_RESPONSE, $this, 'filterSerializedResponse'); + } + + /** + * write éessage to log file at LOG_FILE_PATH + * @see LOG_FILE_PATH + * @param String $message + * @throws Amfphp_Core_Exception + */ + public static function logMessage($message) { + $fh = fopen(self::LOG_FILE_PATH, 'a'); + if (!$fh) { + throw new Amfphp_Core_Exception("couldn't open log file for writing"); + } + fwrite($fh, $message . "\n"); + fclose($fh); + } + + /** + * logs the serialized incoming packet + * @param String $rawData + */ + public function filterSerializedRequest($rawData) { + self::logMessage("serialized request : \n$rawData"); + } + + /** + * logs the deserialized request + * @param mixed $deserializedRequest + */ + public function filterDeserializedRequest($deserializedRequest) { + self::logMessage("deserialized request : \n " . print_r($deserializedRequest, true)); + } + + /** + * logs the deserialized response + * @param packet $deserializedResponse + */ + public function filterDeserializedResponse($deserializedResponse) { + self::logMessage("deserialized response : \n " . print_r($deserializedResponse, true)); + } + + /** + * logs the deserialized incoming packet + * @param mixed $rawData + */ + public function filterSerializedResponse($rawData) { + self::logMessage("serialized response : \n$rawData"); + } + +} + +?> diff --git a/README.md b/README.md index a4b4e8f..9bec5d3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,44 @@ -wearedata -========= +*************** +** WATCH DOG ** +*************** -Reverse engineering Watch Dogs We Are Data map +RECOVERY NOT FINISHED [SQL,Services 0.5%] +|-Data on watchdogs/assets/csv + +Currently covers: +-Berlin +-Paris +-London + +Tracks: +getCameras +getElectromagnicals +getBuildings +getMetro +getSignals +getPlaces +getRivers +getAtms +getParcs +getRails +getVeloStation +getToilets +getRadars +getAntennas +getVenues +getTweets +getInstagrams +getFlickrs + + + +Edit: + -index files + -assets/xml/config.xml + -Services/WatchDog.php + + +USES: +-socket.io +-AMFPHP +-Away3D.com 4.0.6 \ No newline at end of file diff --git a/Services/ExampleService.php b/Services/ExampleService.php new file mode 100644 index 0000000..2d0ace6 --- /dev/null +++ b/Services/ExampleService.php @@ -0,0 +1,32 @@ + diff --git a/Services/WatchDog.php b/Services/WatchDog.php new file mode 100644 index 0000000..e44e044 --- /dev/null +++ b/Services/WatchDog.php @@ -0,0 +1,470 @@ +aperturismo (35034350889@N01) - 27/06/2013 17:40
+ -tags Mixed Array + .id String 9153059046 + .owner String 35034350889@N01 + .ownername String aperturismo + .dateupload String 1372347651 + .url_s String http://farm3.staticflickr.com/2893/9153059046_3f7ca1f6dc_z.jpg + .width_s String 612 + .height_s String Reference 612 + + amfserver.php (WatchDog.getVenues) + + +places Array + [0] Mixed Array + -id String 76802978 + -lat String 51.512001 + -lng String -0.103683 + -name String The Black Friar + -mayor Mixed Array + user String Andrew G. + userid String 53995157 + count Integer 3 + photo String https://irs2.4sqi.net/img/user/32x32/DGR3GKPQYYF0N1P1.jpg + -tags Mixed Array + .id String 4ac518baf964a520d5a120e3 + .name String Reference The Black Friar + .url String https://foursquare.com/v/the-black-friar/4ac518baf964a520d5a120e3 + .address String 174 Queen Victoria St. - EC4V 4EG London - Greater London + .categories Array + [0] Mixed Array + name String Pub + icon String https://foursquare.com/img/categories_v2/nightlife/pub_32.png + .checkins Integer 1870 + .users Integer 1377 + .likes String 19 likes + .rating Number 8,74 + .photo Mixed Array + width Integer 540 + height Integer 720 + url String https://irs2.4sqi.net/img/general/540x720/NJ9MIJ2h2bziZ7zbo5fw_nnzyOwdTACqkv_f-ZKi3uU.jpg + user String Kieren M. + userid String 77607 + .description String + .createdat String 1254430906 + .shorturl String http://4sq.com/8Yxjf9 + .mayor Mixed Array + user String Reference Andrew G. + userid String Reference 53995157 + count Integer 3 + photo String Reference https://irs2.4sqi.net/img/user/32x32/DGR3GKPQYYF0N1P1.jpg + + amfserver.php (WatchDog.getInstagrams) + + +instagrams Array + [0] Mixed Array + -id String 76910303 + -lat String 51.513668 + -lng String -0.101000 + -infos String alejandropachecosanchez - 27/06/2013 11:52
Dry ice
+ -tags Mixed Array + .id String 487434751715944171_36523432 + .profile_picture String http://images.ak.instagram.com/profiles/profile_36523432_75sq_1370162926.jpg + .full_name String alejandropachecosanchez + .username String Reference alejandropachecosanchez + .userid String 36523432 + .created_time String 1372326772 + .caption String Dry ice + .link String http://instagram.com/p/bDt1L7Nabr/ + .likes Integer 0 + .comments Integer 0 + .thumbnail String http://distilleryimage7.s3.amazonaws.com/5536bc94df0f11e280e022000ae9027c_5.jpg + .picture String http://distilleryimage7.s3.amazonaws.com/5536bc94df0f11e280e022000ae9027c_7.jpg + .width Integer 612 + .height Integer 612 + + amfserver.php (WatchDog.getAntennas) + + +antennas Array + [0] Mixed Array + -id String 119157 + -lat String 51.513897 + -lng String -0.102337 + -tags Mixed Array + .ref String TQ3177781148 + .height String 4 + .operator String GSM 900 / UMTS + + amfserver.php (WatchDog.getRadars) + + +radars Array + [0] Mixed Array + -id String 131162 + -lat String 51.510986 + -lng String -0.095612 + -tags Mixed Array + .name Null + + amfserver.php (WatchDog.getToilets) + + +toilets Array + [0] Mixed Array + -id String 56087 + -lat String 51.514313 + -lng String -0.099343 + -tags Array + .name String Paul's Walk + .fee String yes + .wheelchair String no + .operator String Camden Council + + amfserver.php (WatchDog.getSignals) + + +signals Array + [0] Mixed Array + -id String 13903 + -height String 0.000000 + -lat String 51.514153 + -lng String -0.104387 + -tags Mixed Array + .name String Ludgate Circus + .highway String traffic_signals + .crossing String island + + amfserver.php (WatchDog.getTweets) + + +twitters Array + [0] Mixed Array + -id String 76870662 + -lat String 51.512283 + -lng String -0.102589 + -infos String Amy Charlotte Kean - 29/06/2013 11:47
@TommyCasswell Hahahaha. + -tags Mixed Array + .id String 350913328496918529 + .profile_picture String http://a0.twimg.com/profile_images/1822998341/Amy_Kean2_normal.jpg + .pseudo String keano81 + .full_name String Amy Charlotte Kean + .from_user_id String 16932797 + .created_time Number 1372499231 + .caption String @TommyCasswell Hahahaha. + .source String Twitter for iPhone + + amfserver.php (WatchDog.getStatistics) + + +id String 81 + +ref String London Borough of Islington + +tags Object + -display String Islington + -unemployment String 9,8 + -inhabitants String 206 100 + -salary_monthly String 4 400 + -births String 2 792 + -births_thousand String 13,55 + -deaths String 1 152 + -deaths_thousand String 5,59 + -jobs String 201 000 + -crimes_thousand String 139 + -electricity String 1 221 535 + + amfserver.php (WatchDog.Helo) + + boolean true + + amfserver.php (WatchDog.getDistrict) + + [0] Object + -id String 53413 + -name String London Borough of Lambeth + -vertex String 51.467613,-0.15061900000000605,51.470467,-0.14324099999998907,51.470062,-0.1426770000000488,51.473091,-0.13691800000003695,51.472706,-0.1359099999999671,51.473644,-0.13448600000003808,51.474285,-0.13523099999997612,51.481182,-0.12994800000001305,51.482021,-0.12749600000006467,51.484467,-0.12636399999996684,51.484722,-0.12772700000004988,51.485603,-0.1290799999999308,51.495007,-0.12270399999999881,51.506012,-0.1205489999999827,51.508522,-0.11745799999994233,51.509632,-0.10914100000002236,51.506908,-0.10817599999995764,51.507065,-0.10736399999996138,51.504253,-0.10656599999992977,51.503372,-0.10639600000001792,51.50201,-0.10598700000002736,51.500347,-0.10835399999996298,51.496777,-0.11029499999995096,51.496449,-0.1114430000000084,51.495373,-0.11050699999998415,51.49332,-0.10479399999996986,51.49118,-0.10316000000000258,51.485744,-0.1082810000000336,51.48489,-0.10635800000000017,51.483521,-0.10682299999996303,51.480904,-0.10408600000005208,51.480206,-0.10806800000000294,51.476646,-0.10016999999993459,51.474213,-0.1005729999999403,51.469879,-0.09599800000000869,51.472015,-0.09302400000001398,51.465733,-0.09010599999999158,51.461033,-0.09232799999995223,51.457165,-0.09620199999994838,51.453777,-0.1011630000000423,51.450306,-0.10032200000000557,51.445461,-0.09509700000000976,51.439598,-0.09225800000001527,51.429001,-0.08768099999997503,51.428425,-0.08585600000003524,51.427662,-0.08579499999996187,51.423,-0.08347700000001623,51.423309,-0.0816939999999704,51.421848,-0.08089700000004996,51.422108,-0.07982900000001791,51.419991,-0.0785600000000386,51.41967,-0.08009200000003602,51.41967,-0.08333400000003621,51.41927,-0.08586400000001504,51.420547,-0.08904800000004798,51.422539,-0.09273400000006404,51.422577,-0.1057980000000498,51.42292,-0.11302699999998822,51.420578,-0.11571500000002288,51.418568,-0.12002200000006269,51.414917,-0.12312299999996412,51.414612,-0.12407400000006419,51.412632,-0.1257860000000619,51.412491,-0.12742800000000898,51.411999,-0.1278700000000299,51.41235,-0.13378099999999904,51.41098,-0.13407200000006014,51.413155,-0.14302999999995336,51.412388,-0.14486999999996897,51.412868,-0.1480900000000247,51.415348,-0.14434800000003634,51.415798,-0.14500999999995656,51.421104,-0.13785200000006625,51.425282,-0.13892599999996946,51.430454,-0.1383819999999787,51.430256,-0.13533200000006218,51.433826,-0.13645599999995284,51.433777,-0.1378580000000511,51.435444,-0.13969799999995303,51.437019,-0.13991299999997864,51.438824,-0.13750400000003538,51.440262,-0.13704699999993863,51.442005,-0.13590399999998226,51.441704,-0.13904200000001765,51.441837,-0.14362099999993916,51.445961,-0.14558899999997266,51.448704,-0.14464799999996103,51.450966,-0.14232800000002044,51.452339,-0.14773000000002412,51.457912,-0.1486649999999372,51.459362,-0.14939000000003944,51.461708,-0.1499300000000403,51.465885,-0.15123100000005252 + [1] Object + -id String 131019 + -name String Royal Borough of Kensington and Chelsea + -vertex String 51.530354,-0.22850300000004609,51.529919,-0.22768500000006497,51.530136,-0.22501699999997982,51.52914,-0.22071500000004107,51.527828,-0.21581500000002052,51.526718,-0.2155729999999494,51.526756,-0.2112610000000359,51.525944,-0.20617800000002262,51.523315,-0.20355799999992996,51.522346,-0.2015559999999823,51.52071,-0.2006340000000364,51.520573,-0.20371499999998832,51.517799,-0.2014880000000403,51.517979,-0.20074799999997595,51.516777,-0.1998949999999695,51.514549,-0.19920799999999872,51.515034,-0.1950729999999794,51.511692,-0.19365500000003522,51.511814,-0.1929850000000215,51.509869,-0.19214399999998477,51.510178,-0.18793400000004112,51.501793,-0.18425899999999729,51.501461,-0.18033600000001115,51.49778,-0.17957100000000992,51.49902,-0.16841499999998177,51.498299,-0.16764399999999569,51.498695,-0.16550600000005034,51.499241,-0.16580399999998008,51.50013,-0.16285800000002837,51.502232,-0.15859999999997854,51.49902,-0.15787399999999252,51.497513,-0.15604800000005525,51.493855,-0.15501500000004853,51.493202,-0.15598999999997432,51.491962,-0.15481799999997747,51.491451,-0.15582100000005994,51.489037,-0.15491799999995237,51.485485,-0.15000399999996716,51.484528,-0.1502699999999777,51.481686,-0.17092800000000352,51.48019,-0.17494799999997213,51.477554,-0.17781600000000708,51.477222,-0.18264899999996942,51.487373,-0.19598799999994299,51.488064,-0.19822199999998702,51.493252,-0.20309399999996458,51.496021,-0.20800099999996746,51.499847,-0.21306300000003375,51.506145,-0.21799099999998361,51.506401,-0.2159639999999854,51.507519,-0.21586200000001554,51.507648,-0.21520299999997405,51.51038,-0.21724599999993188,51.510231,-0.21805300000005445,51.509758,-0.21788900000001377,51.509575,-0.21928600000001097,51.515915,-0.22292800000002444,51.521095,-0.22830199999998513,51.521935,-0.22681999999997515,51.524796,-0.22662000000002536,51.524792,-0.22719499999993786 + + amfserver.php (WatchDog.getPlaces) + + +places Array + [0] Mixed Array + -id String 56965063 + -lat String 51.507725 + -lng String -0.127962 + -name String Trafalgar's Square + -tags Mixed Array + .name String Reference Trafalgar's Square + + amfserver.php (WatchDog.getRivers) + rivers + id String 137694 + ref String 201307381 + lat String 51.582890 + lng String -0.223210 + index Array + [0] Integer 9 + vertex Array + [0] String -0.223261 + [1] Integer 0 + + amfserver.php (WatchDog.search) + + An array of any previously object type + +*/ +class WatchDog +{ + private function query($obj) + { + $query=''; + + switch($obj->method) + { + case'getVeloStations': + $query='index.txt'; + break; + case'getMetro': + $query='index.txt'; + break; + default: + return false; + break; + } + + $content=json_decode(file_get_contents('db/'.$obj->town.'/'.$obj->method.'/'.$query)); + + return $content; + } + public function helo($nothing){ + return true; + } + public function connected($arr){ + return true; + } + /** + * $data contains: + prev_lng + item_per_page + prev_lat + page + town + lat + lng + radius + */ + public function getVeloStations($data,$dunno) + { + $return=array(); + $obj=new stdClass(); + $obj->method='getVeloStations'; + $obj->town=$data['town']; + + $return=$this->query($obj); + + return $return; + } + public function getMetro($from,$dunno) + { + $obj=new stdClass(); + $obj->method='getMetro'; + $obj->town=$from; + return $this->query($obj); + } + public function getRivers($arr){ + return array(); + } + public function getPlaces($arr){ + return array(); + } + public function getDistrict($from) + { + $return=array(); + + switch($from) + { + case 'paris': + $return=json_decode('[{"id":"53417","name":"2e Arrondissement","vertex":"48.86993,2.3279890000000023,48.871956,2.3402079999999614,48.869331,2.3542609999999513,48.863407,2.3509480000000167,48.868191,2.330661999999961"},{"id":"53418","name":"3e Arrondissement","vertex":"48.861992,2.3501549999999725,48.869316,2.3543280000000095,48.867504,2.3638290000000097,48.863102,2.3667339999999513,48.855732,2.368513000000007,48.856407,2.3644540000000234,48.858337,2.359320000000025,48.860065,2.3569049999999834"},{"id":"53419","name":"4e Arrondissement","vertex":"48.854053,2.3445900000000393,48.861992,2.3501549999999725,48.860065,2.3569049999999834,48.858337,2.359320000000025,48.856899,2.36282099999994,48.855732,2.368513000000007,48.853161,2.3691370000000234,48.84737,2.3665039999999635,48.846142,2.364428999999973,48.84882,2.3604649999999765"},{"id":"53420","name":"5e Arrondissement","vertex":"48.839653,2.3367279999999937,48.840698,2.336855000000014,48.841751,2.3377699999999777,48.854053,2.3445900000000393,48.853294,2.346945000000005,48.85194,2.3502429999999777,48.850239,2.356903999999986,48.844349,2.3650350000000344,48.839962,2.3618169999999736,48.836777,2.35178099999996,48.83836,2.3420939999999746"},{"id":"53421","name":"6e Arrondissement","vertex":"48.846825,2.316573000000062,48.851257,2.3266310000000203,48.851826,2.328420999999935,48.858212,2.3332209999999804,48.858509,2.332447000000002,48.859295,2.3331359999999677,48.857567,2.339003000000048,48.856472,2.3409619999999904,48.853771,2.3442929999999933,48.840759,2.33711500000004,48.839653,2.3367279999999937,48.844822,2.321070999999961"},{"id":"53422","name":"7e Arrondissement","vertex":"48.858231,2.2898239999999532,48.861992,2.2951570000000174,48.863483,2.3020360000000437,48.863628,2.310385999999994,48.863384,2.3198690000000397,48.8601,2.3300279999999702,48.858768,2.3325909999999794,48.858212,2.3332209999999804,48.852612,2.3293049999999766,48.851826,2.328420999999935,48.851257,2.3266310000000203,48.846825,2.316573000000062,48.845936,2.313727999999969,48.847939,2.3103300000000218,48.847137,2.3073389999999563"},{"id":"53423","name":"8e Arrondissement","vertex":"48.873779,2.2950399999999718,48.878078,2.2981569999999465,48.880417,2.3091400000000704,48.881165,2.315291000000002,48.883327,2.327177000000006,48.876015,2.3268640000000005,48.875584,2.326573999999937,48.873749,2.327177000000006,48.872658,2.326626000000033,48.869579,2.3259259999999813,48.869015,2.325321000000031,48.863056,2.3209019999999327,48.86375,2.3187330000000657,48.86372,2.315743999999995,48.863476,2.3015910000000304,48.864525,2.30151699999999,48.865059,2.3001990000000205,48.869701,2.2982419999999593"},{"id":"53424","name":"9e Arrondissement","vertex":"48.869579,2.3259259999999813,48.872658,2.326626000000033,48.873749,2.327177000000006,48.875214,2.326665000000048,48.883327,2.327177000000006,48.884556,2.3294429999999693,48.883591,2.3332829999999376,48.882397,2.33730300000002,48.882027,2.3398160000000416,48.882946,2.3445140000000038,48.883724,2.349505000000022,48.880466,2.3498010000000704,48.878551,2.3491960000000063,48.877422,2.349085000000059,48.87579,2.348243000000025,48.870674,2.347891000000004,48.871956,2.3402079999999614"},{"id":"53425","name":"10e Arrondissement","vertex":"48.870647,2.3480389999999716,48.874023,2.3479110000000674,48.877064,2.3489170000000286,48.880466,2.3498010000000704,48.883724,2.349505000000022,48.884422,2.3602789999999914,48.883884,2.368787999999995,48.88242,2.370225000000005,48.877831,2.3704709999999523,48.872002,2.3768079999999827,48.867504,2.3638290000000097"},{"id":"53426","name":"11e Arrondissement","vertex":"48.867504,2.3638290000000097,48.872051,2.376924000000031,48.869015,2.380625000000009,48.862751,2.3875229999999874,48.858234,2.3904430000000048,48.855648,2.3950640000000476,48.851345,2.398433000000068,48.848099,2.399118000000044,48.851292,2.3761289999999917,48.853161,2.3691370000000234,48.863102,2.3667339999999513"},{"id":"53427","name":"12e Arrondissement","vertex":"48.845909,2.3647469999999657,48.84737,2.3665039999999635,48.853161,2.3691370000000234,48.851135,2.376756999999998,48.848385,2.395911000000069,48.846657,2.415526,48.833832,2.4114270000000033,48.829422,2.4030820000000404,48.825718,2.3902500000000373"},{"id":"53428","name":"13e Arrondissement","vertex":"48.838287,2.3420810000000074,48.836777,2.3516710000000103,48.839962,2.3618169999999736,48.844929,2.366029000000026,48.835796,2.377336000000014,48.825005,2.38881200000003,48.823708,2.3851439999999684,48.822414,2.3815140000000383,48.816059,2.363407999999936,48.815971,2.355908999999997,48.817638,2.3511989999999514,48.815956,2.346749999999929,48.815968,2.3441229999999678,48.819332,2.344577999999956,48.823669,2.3414359999999306"},{"id":"53429","name":"14e Arrondissement","vertex":"48.840519,2.3199480000000676,48.83979,2.3213909999999487,48.841007,2.32149000000004,48.843563,2.324820999999929,48.838287,2.3420810000000074,48.823669,2.3414359999999306,48.819332,2.344577999999956,48.815525,2.3444449999999506,48.816982,2.332116000000042,48.818554,2.330814000000032,48.825024,2.3017790000000105"},{"id":"53430","name":"15e Arrondissement","vertex":"48.8339,2.262960000000021,48.850998,2.28087000000005,48.858231,2.2898239999999532,48.847137,2.3073389999999563,48.847977,2.3105410000000575,48.845936,2.313727999999969,48.846825,2.316573000000062,48.843609,2.3246920000000273,48.83979,2.3213909999999487,48.840519,2.3199480000000676,48.825127,2.3013180000000375,48.82769,2.290903000000071,48.832458,2.279023000000052,48.82972,2.275759999999991,48.827961,2.2723080000000664,48.827888,2.267836999999986,48.831558,2.2672999999999774,48.832813,2.269672000000014,48.834518,2.2669250000000147"},{"id":"53431","name":"16e Arrondissement","vertex":"48.846939,2.2455600000000686,48.874081,2.254815000000008,48.876366,2.2456230000000232,48.880268,2.258999000000017,48.877964,2.2774899999999434,48.878597,2.2799709999999322,48.873779,2.2950399999999718,48.865059,2.3001990000000205,48.864525,2.30151699999999,48.863476,2.3015910000000304,48.861523,2.2941940000000614,48.859772,2.291774000000032,48.855637,2.2873690000000124,48.846626,2.275386000000026,48.8339,2.262960000000021,48.834805,2.2551539999999477,48.838905,2.251649000000043,48.842892,2.251218999999992,48.845581,2.2525379999999586"},{"id":"53432","name":"17e Arrondissement","vertex":"48.878597,2.2799709999999322,48.882793,2.280897999999979,48.885639,2.28445899999997,48.889458,2.2915040000000317,48.88979,2.2943629999999757,48.896709,2.30954399999996,48.900459,2.319888999999989,48.900887,2.324084999999968,48.900951,2.330147000000011,48.887497,2.325590000000034,48.88348,2.3271819999999934,48.881165,2.315291000000002,48.879143,2.3030939999999873,48.877808,2.2979629999999815,48.873779,2.2950399999999718"},{"id":"53433","name":"18e Arrondissement","vertex":"48.883522,2.3274280000000545,48.887497,2.325590000000034,48.900951,2.330147000000011,48.901661,2.3701879999999846,48.896633,2.370388000000048,48.895424,2.3717900000000327,48.894058,2.3700599999999667,48.884369,2.364686000000006,48.883724,2.349505000000022,48.882946,2.3445140000000038,48.882027,2.3398160000000416,48.882397,2.33730300000002,48.884556,2.3294429999999693"},{"id":"53434","name":"19e Arrondissement","vertex":"48.884357,2.3648520000000417,48.886391,2.366557999999941,48.892925,2.3696069999999736,48.895424,2.3717900000000327,48.896633,2.370388000000048,48.901764,2.370233999999982,48.902046,2.379000000000019,48.902157,2.3844289999999546,48.900986,2.390661000000023,48.897453,2.3960270000000037,48.894592,2.397762000000057,48.889545,2.3989589999999907,48.884876,2.3992430000000695,48.88261,2.401467000000025,48.881218,2.4046089999999367,48.880276,2.4092900000000554,48.878422,2.4108360000000175,48.875473,2.3987939999999526,48.875095,2.3892660000000205,48.87373,2.384820999999988,48.872063,2.376989999999978,48.878361,2.370280999999977,48.88242,2.370225000000005,48.884163,2.367858999999953"},{"id":"53435","name":"20e Arrondissement","vertex":"48.872063,2.376989999999978,48.873653,2.384447000000023,48.874592,2.3867569999999887,48.874935,2.388922999999977,48.875443,2.390581999999995,48.875473,2.3987939999999526,48.878407,2.410855999999967,48.874123,2.4131380000000036,48.863335,2.4139599999999746,48.848789,2.4164369999999735,48.846615,2.4159929999999576,48.848091,2.399193999999966,48.855648,2.3950640000000476,48.858234,2.3904430000000048,48.862751,2.3875229999999874"},{"id":"53416","name":"1er Arrondissement","vertex":"48.863056,2.3209019999999327,48.869015,2.325321000000031,48.869396,2.325170999999955,48.86993,2.3279890000000023,48.868191,2.330661999999961,48.863407,2.3509480000000167,48.854053,2.3445900000000393,48.857567,2.339003000000048,48.858227,2.339953000000037"}]'); + break; + } + + return $return; + } + public function getStatistics($district,$city) + { + $return=array(); + + switch($city) + { + case 'paris': + switch($district){ + case '7e Arrondissement': + $return=json_decode('{"id":"132","ref":"7e Arrondissement","tags":{"display":"7e","unemployment":"8,6","inhabitants":"57442","salary_monthly":"4489","births":"596","births_thousand":"10,38","deaths":"419","deaths_thousand":"7,29","salary_hourly":"29,6","crimes":"6106","crimes_thousand":"106","electricity":"116438"}}'); + break; + case '6e Arrondissement': + $return=json_decode('{"id":"131","ref":"6e Arrondissement","tags":{"display":"6e","unemployment":"8,5","inhabitants":"43143","salary_monthly":"4155","births":"371","births_thousand":"8,6","deaths":"291","deaths_thousand":"6,75","salary_hourly":"27,4","crimes":"5829","crimes_thousand":"135","electricity":"104138"}}'); + break; + } + + break; + } + + return $return; + } + public function getTweets($arr){ + return array(); + } + public function getSignals($arr){ + return array(); + } + public function getToilets($arr){ + return array(); + } + public function getRadars($arr){ + return array(); + } + public function getAntennas($arr){ + return array(); + } + public function getInstagrams($arr){ + return array(); + } + public function getVenues($arr){ + return array(); + } + public function getFlickrs($arr){ + return array(); + } + public function getCameras($arr){ + return array(); + } + public function getBuildings($arr){ + return array(); + } + public function getAtms($arr){ + return array(); + } + public function getParcs($arr){ + return array(); + } + public function getRails($arr){ + return array(); + } + + + +} + +?> \ No newline at end of file diff --git a/amfserver.php b/amfserver.php new file mode 100644 index 0000000..cca575c --- /dev/null +++ b/amfserver.php @@ -0,0 +1,343 @@ +service(); +$gateway->output(); +die(); +?> + +amfserver.php (WatchDog.getMetro) + + Content Object + +timespent String 0.36 sec + +time String 13:30:17 + +station Array + -id String (ex: 34)(mateixa id que la clau de l'array) + -ref String (ex: 45656) + -passengers String (ex 1008) + + +line Array + +trips Array + -[0] String(ex: 1393958362|5|13:36:00|120|2058569149|10013094370912363|49) + -[1] String(ex: 1065328272|12|13:38:00|60|2011584683|14613647260942701|44) + +amfserver.php (WatchDog.connected) + + Content boolean + +amfserver.php (WatchDog.getVeloStation) + + Content Mixed Array + +bicycles Array + [0] Mixed Array + -id String (ex 345) + -tags Mixed Array + .timestamp Number 1372504985 + .updated String 29/06/2013 | 13 h 23 m 05 s + .available String 22 + free String 0 + +item_count Integer 26 + +nb_page Number 1 + +current_page Integer 1 + +next_page Null + +amfserver.php (WatchDog.getRails) + + Content Mixed Array + +rails Mixed Array + id String 175225 + ref String 140284206 + lat String 51.494888 + lng String -0.143779 + vertex String -0.144171,51.494350,-0.143598,51.495136,-0.143568,51.495178 + +item_count Integer 26 + +nb_page Number 1 + +current_page Integer 1 + +next_page Null + +amfserver.php (WatchDog.getParcs) + + +parcs Array + -id String 148086 + -ref String 113115230 + -lat String 51.496918 + -lng String -0.134264 + -index Array + [0] Integer 0 + [1] Integer 1 + [2] Integer 2 + [3] Integer 0 + [4] Integer 2 + [5] Integer 3 + -vertex Array + [0] String -0.134352 + [1] Integer 0 + +item_count Integer 26 + +nb_page Number 1 + +current_page Integer 1 + +next_page Null + +amfserver.php (WatchDog.getAtms) + + +atms Array + [0] Mixed Array + -id String 20109 + -height String 0.000000 + -lat String 51.496902 + -lng String -0.135599 + -tags Mixed Array + .name String Barclays + .amenity String bank + +item_count Integer 26 + +nb_page Number 1 + +current_page Integer 1 + +next_page Null + +amfserver.php (WatchDog.getBuildings) + +buildings Array + [0] Mixed Array + -id String 1429401 + -complete String 1 + -type String building + -index Array + vertex Array + -height String 0.000000 + -lat String 51.497124 + -lng String -0.136107 + -tags Mixed Array + .name String House of Fraser + +amfserver.php (WatchDog.getCameras) + + +cameras + [0] Mixed Array + -id String 55338 + -lat String 51.512535 + -lng String -0.105389 + -tags Mixed Array + .name String City of London Police + .man_made String surveillance + .surveillance String outdoor + +amfserver.php (WatchDog.getElectromagnicals) + + +amfserver.php (WatchDog.getFlickrs) + + +flickrs Array + [0] Mixed Array + -id String 76913352 + -lat String 51.513683 + -lng String -0.099434 + -infos String aperturismo (35034350889@N01) - 27/06/2013 17:40
+ -tags Mixed Array + .id String 9153059046 + .owner String 35034350889@N01 + .ownername String aperturismo + .dateupload String 1372347651 + .url_s String http://farm3.staticflickr.com/2893/9153059046_3f7ca1f6dc_z.jpg + .width_s String 612 + .height_s String Reference 612 + +amfserver.php (WatchDog.getVenues) + + +places Array + [0] Mixed Array + -id String 76802978 + -lat String 51.512001 + -lng String -0.103683 + -name String The Black Friar + -mayor Mixed Array + user String Andrew G. + userid String 53995157 + count Integer 3 + photo String https://irs2.4sqi.net/img/user/32x32/DGR3GKPQYYF0N1P1.jpg + -tags Mixed Array + .id String 4ac518baf964a520d5a120e3 + .name String Reference The Black Friar + .url String https://foursquare.com/v/the-black-friar/4ac518baf964a520d5a120e3 + .address String 174 Queen Victoria St. - EC4V 4EG London - Greater London + .categories Array + [0] Mixed Array + name String Pub + icon String https://foursquare.com/img/categories_v2/nightlife/pub_32.png + .checkins Integer 1870 + .users Integer 1377 + .likes String 19 likes + .rating Number 8,74 + .photo Mixed Array + width Integer 540 + height Integer 720 + url String https://irs2.4sqi.net/img/general/540x720/NJ9MIJ2h2bziZ7zbo5fw_nnzyOwdTACqkv_f-ZKi3uU.jpg + user String Kieren M. + userid String 77607 + .description String + .createdat String 1254430906 + .shorturl String http://4sq.com/8Yxjf9 + .mayor Mixed Array + user String Reference Andrew G. + userid String Reference 53995157 + count Integer 3 + photo String Reference https://irs2.4sqi.net/img/user/32x32/DGR3GKPQYYF0N1P1.jpg + +amfserver.php (WatchDog.getInstagrams) + + +instagrams Array + [0] Mixed Array + -id String 76910303 + -lat String 51.513668 + -lng String -0.101000 + -infos String alejandropachecosanchez - 27/06/2013 11:52
Dry ice
+ -tags Mixed Array + .id String 487434751715944171_36523432 + .profile_picture String http://images.ak.instagram.com/profiles/profile_36523432_75sq_1370162926.jpg + .full_name String alejandropachecosanchez + .username String Reference alejandropachecosanchez + .userid String 36523432 + .created_time String 1372326772 + .caption String Dry ice + .link String http://instagram.com/p/bDt1L7Nabr/ + .likes Integer 0 + .comments Integer 0 + .thumbnail String http://distilleryimage7.s3.amazonaws.com/5536bc94df0f11e280e022000ae9027c_5.jpg + .picture String http://distilleryimage7.s3.amazonaws.com/5536bc94df0f11e280e022000ae9027c_7.jpg + .width Integer 612 + .height Integer 612 + +amfserver.php (WatchDog.getAntennas) + + +antennas Array + [0] Mixed Array + -id String 119157 + -lat String 51.513897 + -lng String -0.102337 + -tags Mixed Array + .ref String TQ3177781148 + .height String 4 + .operator String GSM 900 / UMTS + +amfserver.php (WatchDog.getRadars) + + +radars Array + [0] Mixed Array + -id String 131162 + -lat String 51.510986 + -lng String -0.095612 + -tags Mixed Array + .name Null + +amfserver.php (WatchDog.getToilets) + + +toilets Array + [0] Mixed Array + -id String 56087 + -lat String 51.514313 + -lng String -0.099343 + -tags Array + .name String Paul's Walk + .fee String yes + .wheelchair String no + .operator String Camden Council + +amfserver.php (WatchDog.getSignals) + + +signals Array + [0] Mixed Array + -id String 13903 + -height String 0.000000 + -lat String 51.514153 + -lng String -0.104387 + -tags Mixed Array + .name String Ludgate Circus + .highway String traffic_signals + .crossing String island + +amfserver.php (WatchDog.getTweets) + + +twitters Array + [0] Mixed Array + -id String 76870662 + -lat String 51.512283 + -lng String -0.102589 + -infos String Amy Charlotte Kean - 29/06/2013 11:47
@TommyCasswell Hahahaha. + -tags Mixed Array + .id String 350913328496918529 + .profile_picture String http://a0.twimg.com/profile_images/1822998341/Amy_Kean2_normal.jpg + .pseudo String keano81 + .full_name String Amy Charlotte Kean + .from_user_id String 16932797 + .created_time Number 1372499231 + .caption String @TommyCasswell Hahahaha. + .source String Twitter for iPhone + +amfserver.php (WatchDog.getStatistics) + + +id String 81 + +ref String London Borough of Islington + +tags Object + -display String Islington + -unemployment String 9,8 + -inhabitants String 206 100 + -salary_monthly String 4 400 + -births String 2 792 + -births_thousand String 13,55 + -deaths String 1 152 + -deaths_thousand String 5,59 + -jobs String 201 000 + -crimes_thousand String 139 + -electricity String 1 221 535 + +amfserver.php (WatchDog.Helo) + + boolean true + +amfserver.php (WatchDog.getDistrict) + + [0] Object + -id String 53413 + -name String London Borough of Lambeth + -vertex String 51.467613,-0.15061900000000605,51.470467,-0.14324099999998907,51.470062,-0.1426770000000488,51.473091,-0.13691800000003695,51.472706,-0.1359099999999671,51.473644,-0.13448600000003808,51.474285,-0.13523099999997612,51.481182,-0.12994800000001305,51.482021,-0.12749600000006467,51.484467,-0.12636399999996684,51.484722,-0.12772700000004988,51.485603,-0.1290799999999308,51.495007,-0.12270399999999881,51.506012,-0.1205489999999827,51.508522,-0.11745799999994233,51.509632,-0.10914100000002236,51.506908,-0.10817599999995764,51.507065,-0.10736399999996138,51.504253,-0.10656599999992977,51.503372,-0.10639600000001792,51.50201,-0.10598700000002736,51.500347,-0.10835399999996298,51.496777,-0.11029499999995096,51.496449,-0.1114430000000084,51.495373,-0.11050699999998415,51.49332,-0.10479399999996986,51.49118,-0.10316000000000258,51.485744,-0.1082810000000336,51.48489,-0.10635800000000017,51.483521,-0.10682299999996303,51.480904,-0.10408600000005208,51.480206,-0.10806800000000294,51.476646,-0.10016999999993459,51.474213,-0.1005729999999403,51.469879,-0.09599800000000869,51.472015,-0.09302400000001398,51.465733,-0.09010599999999158,51.461033,-0.09232799999995223,51.457165,-0.09620199999994838,51.453777,-0.1011630000000423,51.450306,-0.10032200000000557,51.445461,-0.09509700000000976,51.439598,-0.09225800000001527,51.429001,-0.08768099999997503,51.428425,-0.08585600000003524,51.427662,-0.08579499999996187,51.423,-0.08347700000001623,51.423309,-0.0816939999999704,51.421848,-0.08089700000004996,51.422108,-0.07982900000001791,51.419991,-0.0785600000000386,51.41967,-0.08009200000003602,51.41967,-0.08333400000003621,51.41927,-0.08586400000001504,51.420547,-0.08904800000004798,51.422539,-0.09273400000006404,51.422577,-0.1057980000000498,51.42292,-0.11302699999998822,51.420578,-0.11571500000002288,51.418568,-0.12002200000006269,51.414917,-0.12312299999996412,51.414612,-0.12407400000006419,51.412632,-0.1257860000000619,51.412491,-0.12742800000000898,51.411999,-0.1278700000000299,51.41235,-0.13378099999999904,51.41098,-0.13407200000006014,51.413155,-0.14302999999995336,51.412388,-0.14486999999996897,51.412868,-0.1480900000000247,51.415348,-0.14434800000003634,51.415798,-0.14500999999995656,51.421104,-0.13785200000006625,51.425282,-0.13892599999996946,51.430454,-0.1383819999999787,51.430256,-0.13533200000006218,51.433826,-0.13645599999995284,51.433777,-0.1378580000000511,51.435444,-0.13969799999995303,51.437019,-0.13991299999997864,51.438824,-0.13750400000003538,51.440262,-0.13704699999993863,51.442005,-0.13590399999998226,51.441704,-0.13904200000001765,51.441837,-0.14362099999993916,51.445961,-0.14558899999997266,51.448704,-0.14464799999996103,51.450966,-0.14232800000002044,51.452339,-0.14773000000002412,51.457912,-0.1486649999999372,51.459362,-0.14939000000003944,51.461708,-0.1499300000000403,51.465885,-0.15123100000005252 + [1] Object + -id String 131019 + -name String Royal Borough of Kensington and Chelsea + -vertex String 51.530354,-0.22850300000004609,51.529919,-0.22768500000006497,51.530136,-0.22501699999997982,51.52914,-0.22071500000004107,51.527828,-0.21581500000002052,51.526718,-0.2155729999999494,51.526756,-0.2112610000000359,51.525944,-0.20617800000002262,51.523315,-0.20355799999992996,51.522346,-0.2015559999999823,51.52071,-0.2006340000000364,51.520573,-0.20371499999998832,51.517799,-0.2014880000000403,51.517979,-0.20074799999997595,51.516777,-0.1998949999999695,51.514549,-0.19920799999999872,51.515034,-0.1950729999999794,51.511692,-0.19365500000003522,51.511814,-0.1929850000000215,51.509869,-0.19214399999998477,51.510178,-0.18793400000004112,51.501793,-0.18425899999999729,51.501461,-0.18033600000001115,51.49778,-0.17957100000000992,51.49902,-0.16841499999998177,51.498299,-0.16764399999999569,51.498695,-0.16550600000005034,51.499241,-0.16580399999998008,51.50013,-0.16285800000002837,51.502232,-0.15859999999997854,51.49902,-0.15787399999999252,51.497513,-0.15604800000005525,51.493855,-0.15501500000004853,51.493202,-0.15598999999997432,51.491962,-0.15481799999997747,51.491451,-0.15582100000005994,51.489037,-0.15491799999995237,51.485485,-0.15000399999996716,51.484528,-0.1502699999999777,51.481686,-0.17092800000000352,51.48019,-0.17494799999997213,51.477554,-0.17781600000000708,51.477222,-0.18264899999996942,51.487373,-0.19598799999994299,51.488064,-0.19822199999998702,51.493252,-0.20309399999996458,51.496021,-0.20800099999996746,51.499847,-0.21306300000003375,51.506145,-0.21799099999998361,51.506401,-0.2159639999999854,51.507519,-0.21586200000001554,51.507648,-0.21520299999997405,51.51038,-0.21724599999993188,51.510231,-0.21805300000005445,51.509758,-0.21788900000001377,51.509575,-0.21928600000001097,51.515915,-0.22292800000002444,51.521095,-0.22830199999998513,51.521935,-0.22681999999997515,51.524796,-0.22662000000002536,51.524792,-0.22719499999993786 + +amfserver.php (WatchDog.getPlaces) + + +places Array + [0] Mixed Array + -id String 56965063 + -lat String 51.507725 + -lng String -0.127962 + -name String Trafalgar's Square + -tags Mixed Array + .name String Reference Trafalgar's Square + +amfserver.php (WatchDog.getRivers) +rivers + id String 137694 + ref String 201307381 + lat String 51.582890 + lng String -0.223210 + index Array + [0] Integer 9 + vertex Array + [0] String -0.223261 + [1] Integer 0 + +amfserver.php (WatchDog.search) + +An array of any previously object type \ No newline at end of file diff --git a/assets/css/arial.css b/assets/css/arial.css new file mode 100644 index 0000000..98cf3b1 --- /dev/null +++ b/assets/css/arial.css @@ -0,0 +1,468 @@ +/* + +blanc ( gris tres clair ) #FDFBFA + +//propriétés acceptées: +color color Seules les valeurs hexadécimales de couleur sont supportées. Les couleurs nommées (comme blue) ne sont pas prises en charge. Les couleurs sont écrites au format suivant : #FF0000. +display display Les valeurs supportées sont inline, block et none. +font-family fontFamily Liste des polices à utiliser, séparées par des virgules, classées par ordre de choix décroissant. Tous les noms de familles de polices peuvent être utilisés. Si vous spécifiez un nom de police générique, il est converti dans la police de périphérique appropriée. Les conversions de police suivantes sont disponibles : mono est converti en _typewriter, sans-serif en _sans et serif en _serif. +font-size fontSize. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +font-style fontStyle Les valeurs reconnues sont normal et italic. +font-weight +kerning + fontWeight Les valeurs reconnues sont normal et bold. +crénage crénage Les valeurs reconnues sont true et false. Le crénage est supporté uniquement pour les polices incorporées. Certaines polices, telles que Courier New, ne supportent pas le crénage. La propriété de crénage n'est supportée que dans les fichiers SWF créés dans Windows, pas dans les fichiers SWF créés sur Macintosh. Cependant, ces fichiers SWF peuvent être lus dans des versions de Flash Player autres que Windows et le crénage s'applique encore. +leading leading La quantité d'espace répartie uniformément entre les lignes. La valeur spécifie le nombre de pixels à ajouter après chaque ligne. Une valeur négative comprime l'espace entre les lignes. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +letter-spacing letterSpacing La quantité d'espace répartie uniformément entre les caractères. La valeur spécifie le nombre de pixels à ajouter après chaque caractère. Une valeur négative comprime l'espace entre les caractères. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +margin-left marginLeft Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +margin-right marginRight Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +text-align textAlign Les valeurs reconnues sont left, center, right et justify. +text-decoration textDecoration Les valeurs reconnues sont none et underline. +text-indent textIndent Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. + +*/ +p +{ + font-family:"Arial" ; + color:#FFFFFF; + font-size:11 px ; +} +bold{ + font-family:"ArialBold" ; + display:"inline" ; +} +bolditalic{ + font-family:"ArialBoldItalic" ; + display:"inline" ; +} +.simpleButtonRollover{ + font-family:"ArialBold" ; + font-size:12 px ; + color:#FFFFFF; +} +.simpleButtonRollout{ + font-family:"ArialBold" ; + font-size:12 px ; + color:#000000; +} + + + /* LANDING */ +.LandingCityText{ + font-family:"ArialBold" ; + font-size:17 px ; + color:#000000; +} +.LandingInfoText{ + font-family:"Arial" ; + font-size:12 px; + color:#FFFFFF; +} + +.LandingSelectText{ + font-family:"Arial" ; + font-size:15 px; + color:#000000; +} +/* +* AIDEN MESSAGES +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.aidenMessageTitle{ + font-size:16 px ; + font-family:"ArialBold" ; + +} +.aidenMessageText{ + font-size:16 px ; + +} +.aidenMessageLink{ + font-size:16 px ; + font-family:"ArialBold" ; + +} +/* +* PANELS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.panelTitle{ + font-size:24px; +} +/* LAYERS PANEL */ +.layerPanelItem{ + font-family:"ArialBold" ; +} +.layerPanelFolder{ + font-family:"ArialBold" ; + color:#838383; +} + +/* STATS PANEL */ +.statsPanelLocation{ + font-family:"Arial" ; + font-size:50 px ; +} +.statsPanelDataLabel{ + font-family:"ArialBold" ; + font-size:12 px ; +} +.statsPanelDataSilderValueOut{ + font-family:"ArialBold" ; + +} +.statsPanelDataAmountValue_salary_monthly{ + font-family:"Arial" ; + font-size:36 px ; +} +.statsPanelDataAmountValue_electricity{ + font-family:"Arial" ; + font-size:17 px ; +} +.statsPanelDataAmountUnitSmall{ + font-family:"Arial" ; + font-size:12 px ; +} +.exp{ + font-family:"Arial" ; + font-size:25 px ; + +} +.latlong{ + font-family:"Arial" ; + font-size:12 px ; + +} +.infoPopin{ + font-family:"ArialBold" ; + font-size:12 px ; + +} +/* COMPASS */ +.compassNavigationHelp{ + color:#838383; + leading: 3 px ; +} + +/* LIVE PANEL */ +.facebookButton{ + font-weight: bold ; + +} +.livePanelData{ + font-family:"Arial" ; + +} +.livePanelUserName{ + font-size:16 px ; +} +.liveActivityData{ + font-family:"Arial" ; + font-size:10 px ; +} +.liveActivityDataColor{ + font-family:"Arial" ; + font-size:10 px ; + color:#696969 ; +} + +/* TUTO TEXT */ + +.tutoTitle{ + font-family:"Arial" ; + font-size:21 px ; + color:#000000 ; +} +.tutoText{ + font-family:"ArialItalic" ; + font-size:15 px ; + color:#000000 ; +} +.tutoBtn{ + font-family:"ArialBold" ; + font-size:12 px ; + color:#000000 ; +} +.tutoIndex{ + font-family:"Arial" ; + font-size:12 px ; + color:#FFFFFF ; +} +.tutoCompassText{ + font-family:"Arial" ; + font-size:15 px ; + color:#000000 ; +} + +/* SEARCH */ +.searchTitle{ + font-family:"ArialBold" ; + font-size:12 px ; + color:#000000 ; +} +.searchTitleRollover{ + font-family:"ArialBold" ; + font-size:12 px ; + color:#FFFFFF ; +} +.searchResult{ + font-family:"Arial" ; + font-size:11 px ; + color:#FFFFFF ; + +} +/* +* MENTIONS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.mentions{ + font-family:"Arial" ; + font-size:8 px ; + color:#6C6C6C ; +} +/* +* TRACKER LABEL +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.rolloverTrackerLabel{ + font-family:"Arial" ; + font-size:12 px ; +} +/* +* FOOTER +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.leftFooterItem{ + font-family:"Arial" ; + font-size:10 px ; +} + +/* +* POPINS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.popinTitle{ + font-family:"Arial" ; + font-size:30 px ; + +} + +.popinBtn{ + font-family:"ArialBold" ; + font-size:18 px ; + color:#000000 ; +} +.popinTextBtn{ + font-family:"Arial" ; + color: #FFFFFF ; + font-size:12 px ; +} + +/* BIKES */ +.bikesPopinTxt1{ + font-family:"Arial" ; + font-size:34 px ; +} +.bikesPopinTxt3{ + font-family:"ArialBold" ; + color:#6C6C6C ; + font-size:10 px ; +} +.bikesPopinTxt4{ + font-family:"Arial" ; + color: #FFFFFF ; + font-size:10 px ; +} +/* ELECTROMAGNETICS */ +.elecPopinTxt1{ + font-family:"Arial" ; + font-size:34 px ; +} +.elecUnitSmall{ + font-size:20 px ; +} +.elecDataInfo{ + font-family:"ArialBold" ; + color: #FFFFFF ; + font-size:11 px ; +} +.elecGps{ + font-family:"Arial" ; + color: #FFFFFF ; + font-size:14 px ; +} +.elecCoordsLabels{ + font-family:"ArialBold" ; + color: #FFFFFF ; + font-size:11 px ; +} +.elecCoordsData{ + font-family:"Arial" ; + font-size:34 px ; +} +.elecCoordsData2{ + font-family:"Arial" ; + font-size:22 px ; +} +/* TRAINS */ +.trainsPopinTxt1{ + font-family:"Arial" ; + font-size:34 px ; +} +.trainsDataInfo{ + font-family:"ArialBold" ; + font-size:11 px ; +} +.nextTrains{ + font-family:"Arial" ; + font-size:14 px ; +} +/* INSTAGRAM */ +.instPopinSuTitle{ + color:#6C6C6C ; + font-style : "italic" ; + font-size:14 px ; +} +.instPopinImageTitle{ + font-size:14 px ; +} +.instPopinImagePlace{ + color:#6C6C6C ; + font-size:9 px ; +} + +/* AD */ +.adPopinTxt1{ + font-family:"Arial" ; + font-size:34 px ; +} +.adPopinTxt2{ + font-size:14 px ; +} + +/* FOURSQUARE */ +.foursquarePopinDate{ + color:#6C6C6C ; + font-size:9 px ; +} +.foursquarePopinPowered{ + color:#6C6C6C ; + font-size:9 px ; +} +.foursquarePopinText{ + font-family:"ArialItalic" ; + font-size:28 px ; +} +.foursquarePopinTextBold{ + font-family:"ArialBoldItalic" ; + font-size:28 px ; +} + +/* TWITTER */ +.twitterPopinDate{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinAt{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinFollowBtn{ + font-family:"ArialBold" ; + color:#353126 ; + font-size:12 px ; +} +.twitterPopinMenuItem{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinText{ + font-family:"ArialItalic" ; + font-size:28 px ; +} +.twitterPopinSubTitle{ + font-size:23 px ; +} +/* MOBILES POPIN */ +.mobilePopinText{ + font-family:"Arial" ; + font-size:28 px ; +} +.mobilePopinText2{ + font-family:"Arial" ; + font-size:14 px ; +} + + +/* HELP POPIN */ +.helpPopinTitle{ + font-family:"Arial" ; + color:#FFFFFF; + font-size:16 px ; +} +.helpPopinText{ + font-family:"Arial" ; + color:#6C6C6C ; + font-size:13px; +} + +/* DISCLAIMER POPIN */ +.disclaimerPopinText{ + font-family:"ArialItalic" ; + font-size:15 px ; +} + + +/* LANG POPIN */ +.langPopinItem{ + font-family:"Arial" ; + font-size:15 px ; +} + +/* ABOUT POPIN */ +.aboutPopinText{ + font-family:"ArialItalic" ; + font-size:15 px ; +} +/* LEGALS POPIN */ +.legalsPopinText{ + font-family:"Arial" ; + font-size:11 px ; +} +.legalsPopinBtn{ + font-family:"ArialBold" ; + font-size:11 px ; + color:#000000 ; +} + +/* SHARE POPIN */ +.sharePopinTxt{ + font-family:"ArialItalic" ; + font-size:16 px ; +} +.sharePopinLink{ + font-family:"ArialItalic" ; + font-size:16 px ; + color:#000000 ; +} +.sharePopinBtn_rollout{ + font-family:"Arial" ; + font-size:11 px ; + color:#FFFFFF ; +} +.sharePopinBtn_rollover{ + font-family:"Arial" ; + font-size:11 px ; + color:#000000 ; +} +legalsTitle{ + display : "block" ; + font-size:13 px ; + font-family:"Arial" ; +} +legalsImportant{ + font-family:"ArialBoldItalic" ; + display:"inline" ; + font-size:12 px ; +} diff --git a/assets/css/default.css b/assets/css/default.css new file mode 100644 index 0000000..5fb539a --- /dev/null +++ b/assets/css/default.css @@ -0,0 +1,473 @@ +/* + +blanc ( gris tres clair ) #FDFBFA + +//propriétés acceptées: +color color Seules les valeurs hexadécimales de couleur sont supportées. Les couleurs nommées (comme blue) ne sont pas prises en charge. Les couleurs sont écrites au format suivant : #FF0000. +display display Les valeurs supportées sont inline, block et none. +font-family fontFamily Liste des polices à utiliser, séparées par des virgules, classées par ordre de choix décroissant. Tous les noms de familles de polices peuvent être utilisés. Si vous spécifiez un nom de police générique, il est converti dans la police de périphérique appropriée. Les conversions de police suivantes sont disponibles : mono est converti en _typewriter, sans-serif en _sans et serif en _serif. +font-size fontSize. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +font-style fontStyle Les valeurs reconnues sont normal et italic. +font-weight +kerning + fontWeight Les valeurs reconnues sont normal et bold. +crénage crénage Les valeurs reconnues sont true et false. Le crénage est supporté uniquement pour les polices incorporées. Certaines polices, telles que Courier New, ne supportent pas le crénage. La propriété de crénage n'est supportée que dans les fichiers SWF créés dans Windows, pas dans les fichiers SWF créés sur Macintosh. Cependant, ces fichiers SWF peuvent être lus dans des versions de Flash Player autres que Windows et le crénage s'applique encore. +leading leading La quantité d'espace répartie uniformément entre les lignes. La valeur spécifie le nombre de pixels à ajouter après chaque ligne. Une valeur négative comprime l'espace entre les lignes. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +letter-spacing letterSpacing La quantité d'espace répartie uniformément entre les caractères. La valeur spécifie le nombre de pixels à ajouter après chaque caractère. Une valeur négative comprime l'espace entre les caractères. Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +margin-left marginLeft Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +margin-right marginRight Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. +text-align textAlign Les valeurs reconnues sont left, center, right et justify. +text-decoration textDecoration Les valeurs reconnues sont none et underline. +text-indent textIndent Seule la partie numérique de la valeur est utilisée. Les unités (px, pt) ne sont pas analysées. Les pixels et les points sont équivalents. + +*/ +p +{ + font-family:"HelveticaMedium" ; + color:#FFFFFF; + font-size:11 px ; +} +bold{ + font-family:"HelveticaBold" ; + display:"inline" ; +} +bolditalic{ + font-family:"HelveticaBoldItalic" ; + display:"inline" ; +} +.simpleButtonRollover{ + font-family:"HelveticaBold" ; + font-size:12 px ; + color:#FFFFFF; +} +.simpleButtonRollout{ + font-family:"HelveticaBold" ; + font-size:12 px ; + color:#000000; +} + + /* LANDING */ +.LandingCityText{ + font-family:"HelveticaBold" ; + font-size:17 px ; + color:#000000; +} +.LandingInfoText{ + font-family:"HelveticaMedium" ; + font-size:12 px; + color:#FFFFFF; +} + +.LandingSelectText{ + font-family:"HelveticaMedium" ; + font-size:15 px; + color:#000000; +} +/* +* AIDEN MESSAGES +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.aidenMessageTitle{ + font-size:16 px ; + font-family:"HelveticaBold" ; + +} +.aidenMessageText{ + font-size:16 px ; + +} +.aidenMessageLink{ + font-size:16 px ; + font-family:"HelveticaBold" ; + +} +/* +* PANELS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.introInstructions{ + font-size:12 px ; +} +/* +* PANELS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.panelTitle{ + font-size:24px; +} +/* LAYERS PANEL */ +.layerPanelItem{ + font-family:"HelveticaBold" ; +} +.layerPanelFolder{ + font-family:"HelveticaBold" ; + color:#838383; +} + +/* STATS PANEL */ +.statsPanelLocation{ + font-family:"HelveticaLight" ; + font-size:50 px ; +} +.statsPanelDataLabel{ + font-family:"HelveticaBold" ; + font-size:12 px ; +} +.statsPanelDataSilderValueOut{ + font-family:"HelveticaBold" ; + +} +.statsPanelDataAmountValue_salary_monthly{ + font-family:"HelveticaLight" ; + font-size:36 px ; +} +.statsPanelDataAmountValue_electricity{ + font-family:"HelveticaRoman" ; + font-size:17 px ; +} +.statsPanelDataAmountUnitSmall{ + font-family:"HelveticaRoman" ; + font-size:12 px ; +} +.exp{ + font-family:"HelveticaRoman" ; + font-size:25 px ; + +} +.latlong{ + font-family:"HelveticaRoman" ; + font-size:12 px ; + +} +.infoPopin{ + font-family:"HelveticaBold" ; + font-size:12 px ; + +} +/* COMPASS */ +.compassNavigationHelp{ + color:#838383; + leading: 3 px ; +} + +/* LIVE PANEL */ +.facebookButton{ + font-weight: bold ; + +} +.livePanelData{ + font-family:"HelveticaMedium" ; + +} +.livePanelUserName{ + font-size:16 px ; +} +.liveActivityData{ + font-family:"HelveticaMedium" ; + font-size:10 px ; +} +.liveActivityDataColor{ + font-family:"HelveticaMedium" ; + font-size:10 px ; + color:#696969 ; +} + +/* TUTO TEXT */ +.tutoTitle{ + font-family:"HelveticaLight" ; + font-size:21 px ; + color:#000000 ; +} +.tutoText{ + font-family:"HelveticaLightItalic" ; + font-size:15 px ; + color:#000000 ; +} +.tutoBtn{ + font-family:"HelveticaBold" ; + font-size:12 px ; + color:#000000 ; +} +.tutoIndex{ + font-family:"HelveticaRoman" ; + font-size:12 px ; + color:#FFFFFF ; +} +.tutoCompassText{ + font-family:"HelveticaRoman" ; + font-size:15 px ; + color:#000000 ; +} +/* SEARCH */ +.searchTitle{ + font-family:"HelveticaBold" ; + font-size:12 px ; + color:#000000 ; +} +.searchTitleRollover{ + font-family:"HelveticaBold" ; + font-size:12 px ; + color:#FFFFFF ; +} +.searchResult{ + font-family:"HelveticaRoman" ; + font-size:11 px ; + color:#FFFFFF ; +} +/* +* MENTIONS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.mentions{ + font-family:"HelveticaRoman" ; + font-size:8 px ; + color:#6C6C6C ; +} + +/* +* TRACKER LABEL +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.rolloverTrackerLabel{ + font-family:"HelveticaRoman" ; + font-size:12 px ; +} +/* +* FOOTER +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.leftFooterItem{ + font-family:"HelveticaRoman" ; + font-size:10 px ; +} + +/* +* POPINS +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +.popinTitle{ + font-family:"HelveticaLight" ; + font-size:30 px ; + +} + +.popinBtn{ + font-family:"HelveticaBold" ; + font-size:18 px ; + color:#000000 ; +} +.popinTextBtn{ + font-family:"HelveticaRoman" ; + color: #FFFFFF ; + font-size:12 px ; +} + +/* BIKES */ +.bikesPopinTxt1{ + font-family:"HelveticaLight" ; + font-size:34 px ; +} +.bikesPopinTxt3{ + font-family:"HelveticaBold" ; + color:#6C6C6C ; + font-size:10 px ; +} +.bikesPopinTxt4{ + font-family:"HelveticaMedium" ; + color: #FFFFFF ; + font-size:10 px ; +} +/* ELECTROMAGNETICS */ +.elecPopinTxt1{ + font-family:"HelveticaLight" ; + font-size:34 px ; +} +.elecUnitSmall{ + font-size:20 px ; +} +.elecDataInfo{ + font-family:"HelveticaBold" ; + color: #FFFFFF ; + font-size:11 px ; +} +.elecGps{ + font-family:"HelveticaMedium" ; + color: #FFFFFF ; + font-size:14 px ; +} +.elecCoordsLabels{ + font-family:"HelveticaBold" ; + color: #FFFFFF ; + font-size:11 px ; +} +.elecCoordsData{ + font-family:"HelveticaLight" ; + font-size:34 px ; +} +.elecCoordsData2{ + font-family:"HelveticaLight" ; + font-size:22 px ; +} +/* TRAINS */ +.trainsPopinTxt1{ + font-family:"HelveticaLight" ; + font-size:34 px ; +} +.trainsDataInfo{ + font-family:"HelveticaBold" ; + font-size:11 px ; +} +.nextTrains{ + font-family:"HelveticaMedium" ; + font-size:14 px ; +} +/* INSTAGRAM */ +.instPopinSuTitle{ + color:#6C6C6C ; + font-style : "italic" ; + font-size:14 px ; +} +.instPopinImageTitle{ + font-size:14 px ; +} +.instPopinImagePlace{ + color:#6C6C6C ; + font-size:9 px ; +} + +/* AD */ +.adPopinTxt1{ + font-family:"HelveticaLight" ; + font-size:34 px ; +} +.adPopinTxt2{ + font-size:14 px ; +} + +/* FOURSQUARE */ +.foursquarePopinDate{ + color:#6C6C6C ; + font-size:9 px ; +} +.foursquarePopinPowered{ + color:#6C6C6C ; + font-size:9 px ; +} +.foursquarePopinText{ + font-family:"HelveticaLightItalic" ; + font-size:28 px ; +} +.foursquarePopinTextBold{ + font-family:"HelveticaBoldItalic" ; + font-size:28 px ; +} + +/* TWITTER */ +.twitterPopinDate{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinAt{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinFollowBtn{ + font-family:"HelveticaBold" ; + color:#353126 ; + font-size:12 px ; +} +.twitterPopinMenuItem{ + color:#6C6C6C ; + font-size:9 px ; +} +.twitterPopinText{ + font-family:"Arial" ; + font-size:28 px ; +} +.twitterPopinSubTitle{ + font-size:23 px ; +} +/* MOBILES POPIN */ +.mobilePopinText{ + font-family:"HelveticaLight" ; + font-size:28 px ; +} +.mobilePopinText2{ + font-family:"HelveticaMedium" ; + font-size:14 px ; +} + + +/* HELP POPIN */ +.helpPopinTitle{ + font-family:"HelveticaLight" ; + color:#FFFFFF; + font-size:16 px ; +} +.helpPopinText{ + font-family:"HelveticaLight" ; + color:#6C6C6C ; + font-size:13px; +} + +/* DISCLAIMER POPIN */ +.disclaimerPopinText{ + font-family:"HelveticaLightItalic" ; + font-size:15 px ; +} + + +/* LANG POPIN */ +.langPopinItem{ + font-family:"HelveticaMedium" ; + font-size:15 px ; +} + +/* ABOUT POPIN */ +.aboutPopinText{ + font-family:"HelveticaLightItalic" ; + font-size:15 px ; +} +/* LEGALS POPIN */ +.legalsPopinText{ + font-family:"HelveticaRoman" ; + font-size:11 px ; +} +.legalsPopinBtn{ + font-family:"HelveticaBold" ; + font-size:11 px ; + color:#000000 ; +} + +/* SHARE POPIN */ +.sharePopinTxt{ + font-family:"HelveticaLightItalic" ; + font-size:16 px ; +} +.sharePopinLink{ + font-family:"HelveticaLightItalic" ; + font-size:16 px ; + color:#000000 ; +} +.sharePopinBtn_rollout{ + font-family:"HelveticaMedium" ; + font-size:11 px ; + color:#FFFFFF ; +} +.sharePopinBtn_rollover{ + font-family:"HelveticaMedium" ; + font-size:11 px ; + color:#000000 ; +} +legalsTitle{ + display : "block" ; + font-size:13 px ; + font-family:"HelveticaMedium" ; +} +legalsImportant{ + font-family:"HelveticaBoldItalic" ; + display:"inline" ; + font-size:12 px ; +} diff --git a/assets/csv/axes/berlin.csv b/assets/csv/axes/berlin.csv new file mode 100644 index 0000000..a110b5e --- /dev/null +++ b/assets/csv/axes/berlin.csv @@ -0,0 +1,424 @@ +Altenescher Weg;52.539191;13.456821 +Erich-Boltze-Straße;52.531892;13.444065 +Gürtelstraße;52.545680;13.450937 +Heinz-Kapelle-Straße;52.533486;13.441052 +Reuterplatz;52.489596;13.429760 +Konitzer Straße;52.508490;13.458359 +Weinstraße;52.525693;13.426570 +Eberswalder Straße;52.541287;13.408241 +Elsterstraße;52.471095;13.450058 +Paul-Grasse-Straße;52.549559;13.437382 +Kirchhofweg;52.469073;13.428426 +Nobelstraße;52.460655;13.463901 +Onckenstraße;52.488001;13.441410 +Sinsheimer Weg;52.484607;13.452410 +Kopischstraße;52.487439;13.389469 +Max-Lingner-Straße;52.561667;13.415556 +Jablonskistraße;52.536420;13.427561 +Prießnitzstraße;52.578611;13.422778 +Bona-Peiser-Weg;52.508750;13.427228 +Fehrbelliner Straße;52.533253;13.403975 +Lichtenberger Straße;52.514549;13.425593 +Poststraße;52.516691;13.406465 +Gipsstraße;52.526702;13.401426 +Stresemannstraße;52.507402;13.378687 +Stresemannstraße;52.502492;13.38491 +Admiralstraße;52.495813;13.415465 +Am Johannistisch;52.495356;13.398857 +Hannoversche Straße;52.527682;13.381879 +Luckenwalder Straße;52.500065;13.375897 +Methfesselstraße;52.488490;13.384867 +Schendelgasse;52.526834;13.408915 +Ratiborstraße;52.492201;13.438543 +Helsingforser Platz;52.508056;13.448889 +Niemannstraße;52.506812;13.460344 +Rummelsburger Platz;52.506639;13.437764 +Helsingforser Straße;52.509319;13.446440 +Falkplatz;52.546022;13.403771 +Fritz-Riedel-Straße;52.530158;13.449589 +Palmkernzeile;52.495114;13.473723 +Neue Welt;52.521995;13.465314 +Bergiusstraße;52.463719;13.458841 +Schenkendorfstraße;52.488856;13.392849 +Brusendorfer Straße;52.473764;13.453700 +Ostseeplatz;52.546931;13.440917 +Krebsgang;52.469987;13.468502 +Dettelbacher Weg;52.569722;13.425833 +Breite Straße;52.570000;13.406667 +Hermannplatz;52.487118;13.424542 +Marthashof;52.538150;13.406780 +Winsstraße;52.534192;13.425575 +Wisbyer Straße;52.552695;13.422795 +Heinrich-Heine-Platz;52.506694;13.416967 +Siegfriedstraße;52.514907;13.498442 +Siegfriedstraße;52.5225;13.499615 +Siegfriedstraße;52.532205;13.500116 +Schillingstraße;52.518622;13.421136 +Unterwasserstraße;52.515633;13.399574 +Bergfriedstraße;52.500261;13.411002 +Manteuffelstraße;52.458381;13.376112 +Manteuffelstraße;52.465062;13.377614 +Kleine Parkstraße;52.558262;13.461299 +Kleine Parkstraße;52.553725;13.457136 +Kloedenstraße;52.487576;13.392527 +Friedrichsberger Straße;52.520928;13.434552 +Mittenwalder Straße;52.491711;13.396508 +Schöneberger Straße;52.503644;13.380468 +Czarnikauer Straße;52.553442;13.405280 +Valeska-Gert-Straße;52.506453;13.440549 +Belforter Straße;52.532731;13.417478 +Fehrbelliner Straße;52.533893;13.402451 +Fehrbelliner Straße;52.531883;13.407226 +Kollwitzplatz;52.536234;13.417053 +Marienburger Straße;52.534319;13.425839 +Nordkapstraße;52.554952;13.406442 +Rykestraße;52.536923;13.420902 +Schönfließer Straße;52.633732;13.312511 +Schönfließer Straße;52.639235;13.317189 +Schönfließer Straße;52.644904;13.323863 +Sigridstraße;52.535741;13.458399 +Zionskirchstraße;52.532723;13.408599 +Boddinplatz;52.480033;13.428683 +Fuldastraße;52.485751;13.438575 +Fuldastraße;52.483567;13.435582 +Haberstraße;52.463496;13.463706 +Esperantoplatz;52.472957;13.452877 +Ilsestraße;52.470092;13.435369 +Karl-Marx-Platz;52.473696;13.441311 +Laubestraße;52.482833;13.439945 +Spremberger Straße;52.493669;13.423229 +Mierstraße;52.469301;13.449850 +Platz der Stadt Hof;52.479090;13.437661 +Garbátyplatz;52.567500;13.411389 +Upsalaer Straße;52.556944;13.419722 +Siriusstraße;52.468419;13.466104 +Am Köllnischen Park;52.513056;13.415556 +Kinzigstraße;52.513681;13.465902 +Zeitzer Straße;52.470527;13.445660 +Angermünder Straße;52.409205;13.412633 +Angermünder Straße;52.403838,;13.411925 +Miltenberger Weg;52.568889;13.420278 +Flughafenstraße;52.481465;13.430421 +Flughafenstraße;52.480367;13.421667 +Pankgrafenstraße;52.61732;13.453295 +Pankgrafenstraße;52.615574;13.46396 +Vesaliusstraße;52.578889;13.426111 +Vinetastraße;52.558889;13.419722 +Isarstraße;52.480642;13.431975 +Mollergasse;52.518861;13.396833 +Solmsstraße;52.490666;13.392366 +Schwedter Straße;52.538027;13.405638 +Schwedter Straße;52.533815;13.409382 +Voßstraße;52.510966;13.379740 +Straße 12;52.464833;13.453722 +Baerwaldstraße;52.489917;13.400027 +Baerwaldstraße;52.492972;13.402398 +Baerwaldstraße;52.495718;13.404211 +Brommystraße;52.504885;13.435464 +Heinrichplatz;52.50025;13.423076 +Jessnerstraße;52.510033;13.47059 +Jessnerstraße;52.512991;13.473165 +Südstern;52.489248;13.406475 +Braunschweiger Straße;52.471088;13.447351 +Braunschweiger Straße;52.473271;13.453059 +Wassertorplatz;52.498501;13.413239 +Am Comeniusplatz;52.512114;13.447289 +Amalienpark;52.573230;13.413617 +Am Friedrichshain;52.529133;13.433018 +Dänenstraße;52.550014;13.409066 +Lauterbachstraße;52.566389;13.418889 +Gleimstraße;52.547253;13.408492 +Gleimstraße;52.546353;13.398492 +Goethestraße;52.50886;13.313563 +Goethestraße;52.508834;13.322339 +Mühlenstraße;52.567448;13.405037 +Mühlenstraße;52.563013;13.409436 +Maiglöckchenstraße;52.532963;13.460792 +Margarete-Walter-Straße;52.536724;13.439423 +Naugarder Straße;52.543639;13.438057 +Gertrud-Kolmar-Straße;52.512417;13.380753 +Thaerstraße;52.523331;13.456581 +Waterloo-Ufer;52.501907;13.425550 +Björnsonstraße;52.554733;13.402586 +Elsenstraße;52.486091;13.450248 +Elsenstraße;52.490952;13.456643 +Baumbachstraße;52.554722;13.420833 +Thiemannstraße;52.477683;13.451366 +Max-Koska-Straße;52.553333;13.426667 +Pichelswerderstraße;52.566944;13.396111 +Harzgeroder Straße;52.573889;13.421111 +Wetterseestraße;52.556944;13.421944 +Magazinstraße;52.518519;13.419670 +Alfred-Döblin-Platz;52.504102;13.414221 +Kastanienplatz;52.499706;13.409940 +Hausvogteiplatz;52.512843;13.396687 +Jacobystraße;52.520190;13.419628 +Legiendamm;52.504583;13.417111 +Teutoburger Platz;52.531927;13.408706 +Platz des 18. März;52.516250;13.377286 +Sperlingsgasse;52.514448;13.401886 +Wolliner Straße;52.541228;13.400499 +Wolliner Straße;52.537391;13.403374 +Blücherplatz;52.497041;13.393064 +Gemündener Straße;52.568611;13.422222 +Lausitzer Straße;52.496538;13.427932 +Dircksenstraße;52.520936;13.412515 +Rückerstraße;52.527857;13.407011 +Tieckstraße;52.529545;13.388722 +Leuschnerdamm;52.503984;13.417289 +Traveplatz;52.510958;13.469968 +Wühlischstraße;52.507434;13.46647 +Wühlischstraße;52.509106;13.459443 +Agnes-Wabnitz-Straße;52.525477;13.455619 +Dunckerstraße;52.541668;13.420036 +Dunckerstraße;52.545491;13.423469 +Dunckerstraße;52.549432;13.426988 +Gormannstraße;52.528192;13.404981 +Mülhauser Straße;52.532953;13.419646 +Scherenbergstraße;52.55198;13.421366 +Scherenbergstraße;52.55001;13.419242 +Joseph-Schmidt-Straße;52.462895;13.473998 +Juliusstraße;52.464055;13.441772 +Juliusstraße;52.463362;13.435507 +Neuwedeller Straße;52.475616;13.431293 +Oderstraße;52.46816;13.420851 +Oderstraße;52.472076;13.419915 +Oderstraße;52.476002;13.418748 +Schönstedtstraße;52.482196;13.435995 +Stahlheimer Straße;52.550067;13.422070 +Walterstraße;52.466839;13.440942 +Borkumstraße;52.565556;13.416667 +Maybachufer;52.49022;13.438232 +Maybachufer;52.49248;13.431108 +Maybachufer;52.49478;13.424113 +Greta-Garbo-Straße;52.561111;13.420278 +Kottbusser Straße;52.496983;13.419371 +Pücklerstraße;52.468809;13.279939 +Pücklerstraße;52.469977;13.286355 +Granseer Straße;52.536817;13.402353 +Luisenstraße;52.519072;13.380253 +Luisenstraße;52.523768;13.379395 +Luisenstraße;52.528198;13.378687 +Neue Promenade;52.522723;13.401482 +Neue Schönhauser Straße;52.524576;13.404739 +Rosenstraße;52.521453;13.404919 +Herrfurthplatz;52.477106;13.422160 +Bethaniendamm;52.506322;13.427535 +Hohenstaufenplatz;52.491665;13.420401 +Am Lustgarten;52.519167;13.400000 +Segitzdamm;52.501172;13.414575 +Segitzdamm;52.499598;13.413118 +Bootsbauerstraße;52.496695;13.472757 +Friedrich-Junge-Straße;52.494736;13.472371 +Litfaß-Platz;52.521692;13.402762 +Markgrafenstraße;52.511691;13.393553 +Markgrafendamm;52.499948;13.466105 +Matkowskystraße;52.504990;13.464485 +Niederbarnimstraße;52.513942;13.458971 +Choriner Straße;52.531827;13.406153 +Choriner Straße;52.535677;13.409522 +Christinenstraße;52.532754;13.410509 +Christinenstraße;52.530026;13.407805 +Greifenhagener Straße;52.548436;13.416023 +Greifenhagener Straße;52.551667;13.418727 +Ibsenstraße;52.555520;13.406962 +Schloßplatz;52.517500;13.402778 +John-Schehr-Straße;52.535477;13.438957 +Knaackstraße;52.538675;13.41495 +Knaackstraße;52.535103;13.417461 +Michelangelostraße;52.543273;13.450856 +Otto-Ostrowski-Straße;52.525304;13.454921 +Rodenbergstraße;52.549941;13.419971 +Rodenbergstraße;52.550928;13.416302 +Hanns-Eisler-Straße;52.541198;13.452458 +Hanns-Eisler-Straße;52.543294;13.448038 +Hanns-Eisler-Straße;52.544317;13.443468 +Stargarder Straße;52.544239;13.423555 +Stargarder Straße;52.546992;13.416924 +Stubbenkammerstraße;52.541969;13.424366 +Sültstraße;52.547248;13.431484 +Sültstraße;52.54911;13.433286 +Viehtrift;52.521703;13.457510 +Lindenhoekweg;52.547878;13.433391 +Heidelberger Straße;52.490694;13.443972 +Heidelberger Straße;52.488713;13.447427 +Harzer Straße;52.483386;13.452179 +Harzer Straße;52.485736;13.447603 +Harzer Straße;52.487855;13.443532 +Neckarstraße;52.480222;13.434061 +Bethlehemkirchplatz;52.509019;13.388901 +Benjamin-Vogelsdorff-Straße;52.567500;13.406389 +Bleicheroder Straße;52.57539;13.420894 +Bleicheroder Straße;52.576441;13.426108 +Karlstadter Straße;52.569167;13.423611 +Kissingenplatz;52.567500;13.421111 +Kurze Straße;52.554167;13.422222 +Laudaer Straße;52.564722;13.425000 +Retzbacher Weg;52.569699;13.424413 +Retzbacher Weg;52.566495;13.425808 +Rolandufer;52.514961;13.412527 +Trelleborger Straße;52.560613;13.418255 +Trelleborger Straße;52.556908;13.418405 +Warthestraße;52.469811;13.425269 +Gartenstraße;52.534913;13.385637 +Gartenstraße;52.538183;13.381863 +Michaelkirchstraße;52.509765;13.421162 +Monbijouplatz;52.523333;13.400000 +Neue Jakobstraße;52.510707;13.412547 +Andreas-Hofer-Platz;52.558889;13.406944 +Rochstraße;52.52247;13.405927 +Rochstraße;52.523905;13.407526 +Singerstraße;52.514411;13.436172 +Singerstraße;52.515365;13.430345 +Weydemeyerstraße;52.521156;13.427203 +Brachvogelstraße;52.496212;13.398492 +Boppstraße;52.490986;13.421463 +Golßener Straße;52.485080;13.401132 +Hasenheide;52.487445;13.41995 +Hasenheide;52.488665;13.411174 +Pfuelstraße;52.502456;13.440764 +Süderbrokweg;52.537910;13.457981 +Allerstraße;52.475026;13.425872 +Allerstraße;52.474517;13.421377 +Skalitzer Straße;52.500136;13.436966 +Skalitzer Straße;52.499229;13.427954 +Skalitzer Straße;52.498751;13.415809 +Tivoliplatz;52.486844;13.381691 +Neue Blumenstraße;52.517879;13.427203 +Sophienstraße;52.505439;13.498421 +Sophienstraße;52.506444;13.493357 +Grimmstraße;52.494104;13.414232 +Grimmstraße;52.492282;13.413641 +Bötzowstraße;52.532775;13.435610 +Planufer;52.494938;13.413448 +Isländische Straße;52.552024;13.401496 +Mahlower Straße;52.479715;13.422211 +Teupitzer Straße;52.481697;13.455839 +Wichertstraße;52.547553;13.423405 +Wichertstraße;52.550189;13.416216 +Zehdenicker Straße;52.530656;13.405311 +Zum Langen Jammer;52.521156;13.466028 +Bendastraße;52.465160;13.436969 +Boberstraße;52.467798;13.427774 +Dieselstraße;52.477397;13.463950 +Donaustraße;52.484429;13.431473 +Donaustraße;52.480925;13.43821 +Donaustraße;52.477627;13.443553 +Universitätsstraße;52.519052;13.392307 +Kopfstraße;52.476014;13.431162 +Kranoldplatz;52.466270;13.437610 +Ederstraße;52.476431;13.454975 +Sonnenallee;52.486344;13.42967 +Sonnenallee;52.481196;13.441129 +Sonnenallee;52.473527;13.456492 +Uthmannstraße;52.475536;13.441566 +Ossastraße;52.486658;13.437870 +Brixener Straße;52.559139;13.407097 +Brixener Straße;52.561634;13.407236 +Rübelandstraße;52.472555;13.438144 +Florastraße;52.566313;13.408964 +Florastraße;52.565713;13.401303 +Hiddenseestraße;52.565278;13.414167 +Jenny-Lind-Straße;52.560833;13.424167 +Schonensche Straße;52.553924;13.421731 +Schonensche Straße;52.554244;13.41804 +Tiroler Straße;52.559373;13.410144 +Tiroler Straße;52.559452;13.404264 +Wilhelm-Kuhr-Straße;52.569026;13.397141 +Wilhelm-Kuhr-Straße;52.568308;13.39257 +Burgstraße;52.521667;13.400556 +Neue Schönholzer Straße;52.567500;13.402222 +Elisabeth-Mara-Straße;52.510260;13.404549 +Westerlandstraße;52.558333;13.416389 +Hannah-Arendt-Straße;52.513504;13.379716 +Heiligegeistkirchplatz;52.520664;13.403392 +Helga-Hahnemann-Straße;52.525058;13.389825 +Heidereutergasse;52.521786;13.413056 +Nikolaikirchplatz;52.516652;13.407757 +Pflugstraße;52.536156;13.380082 +Zimmerstraße;52.507528;13.387699 +Zimmerstraße;52.508025;13.396432 +Erkelenzdamm;52.500346;13.414682 +Johanniterstraße;52.496512;13.398471 +Humannplatz;52.549114;13.422246 +Tempelhofer Ufer;52.498589;13.384502 +Tempelhofer Ufer;52.500645;13.377056 +Kottbusser Damm;52.494479;13.421152 +Kottbusser Damm;52.489423;13.424306 +Rudolfstraße;52.503922;13.454300 +Willstätterstraße;52.464612;13.458911 +Diesterwegstraße;52.540744;13.428670 +Georg-Blank-Straße;52.548647;13.433900 +Obernburger Weg;52.564167;13.425000 +Krügerstraße;52.550077;13.427254 +Kuglerstraße;52.551404;13.422105 +An der Kommandantur;52.517050;13.397872 +Keibelstraße;52.519328;13.415872 +Prenzlauer Allee;52.532184;13.420079 +Prenzlauer Allee;52.540337;13.425089 +Prenzlauer Allee;52.549312;13.429461 +Rudolf-Schwarz-Straße;52.535166;13.442187 +Hermannstraße;52.484797;13.424402 +Hermannstraße;52.478838;13.425668 +Hermannstraße;52.471153;13.429359 +Hermannstraße;52.463702;13.433629 +Herrnhuter Weg;52.476069;13.441095 +Mariendorfer Weg;52.463903;13.426865 +Grellstraße;52.544461;13.430475 +Grellstraße;52.542033;13.436655 +Rütlistraße;52.488014;13.434904 +Silbersteinstraße;52.467127;13.437814 +Silbersteinstraße;52.465898;13.427514 +Eschengraben;52.556389;13.424444 +Thomasstraße;52.473362;13.438307 +Thomasstraße;52.472343;13.432857 +Weisestraße;52.474536;13.424805 +Weisestraße;52.477751;13.42385 +Wissmannstraße;52.484353;13.423138 +Wittmannsdorfer Straße;52.471475;13.439377 +Behrenstraße;52.515743;13.390478 +Behrenstraße;52.515299;13.383461 +Am Krögel;52.515710;13.409594 +Memhardstraße;52.524038;13.410674 +Axel-Springer-Straße;52.508190;13.399072 +Brandesstraße;52.498916;13.394233 +Kreuzbergstraße;52.489358;13.375844 +Kreuzbergstraße;52.489893;13.382732 +Sebastianstraße;52.507598;13.409591 +Sebastianstraße;52.504483;13.413025 +Wassertorstraße;52.499549;13.409575 +Haasestraße;52.506368;13.461353 +Malmöer Straße;52.552201;13.403426 +Neue Weberstraße;52.518787;13.431355 +Boddinstraße;52.480397;13.430242 +Heinz-Bartsch-Straße;52.530909;13.444960 +Kopenhagener Straße;52.548884;13.410798 +Kopenhagener Straße;52.548754;13.404082 +Oleanderstraße;52.531720;13.459993 +Mittelweg;52.475022;13.432492 +Mittelweg;52.474329;13.4382 +Seelower Straße;52.551925;13.410619 +Henriette-Herz-Platz;52.522156;13.400389 +Heinrich-Schlusnus-Straße;52.463768;13.470848 +Kiehlufer;52.48698;13.441204 +Kiehlufer;52.483151;13.448628 +Kiehlufer;52.478969;13.456739 +Schandauer Straße;52.484397;13.441894 +Kurt-Exner-Straße;52.524616;13.456299 +Framstraße;52.489253;13.431885 +Elisabethweg;52.574167;13.405833 +Kavalierstraße;52.574194;13.410085 +Kavalierstraße;52.572414;13.41119 +Ossietzkystraße;52.574881;13.407043 +Ossietzkystraße;52.572551;13.408229 +Hermann-Stöhr-Platz;52.511942;13.433897 +Krausenstraße;52.509602;13.392372 +Krausenstraße;52.509935;13.397682 +Kynaststraße;52.498709;13.468042 +Kynaststraße;52.503268;13.470199 +Am Berlin Museum;52.502835;13.396840 +Anzengruberstraße;52.480429;13.439098 +Hallesches Tor;52.497629;13.391787 +Nernstweg;52.474435;13.467352 +Schönleinstraße;52.491110;13.420390 +Wanda-Kallenbach-Straße;52.504951;13.444669 diff --git a/assets/csv/axes/london.csv b/assets/csv/axes/london.csv new file mode 100644 index 0000000..4a26519 --- /dev/null +++ b/assets/csv/axes/london.csv @@ -0,0 +1,593 @@ +Liverpool Road;51.547608;-0.109359 +Liverpool Road;51.542415;-0.106546 +Liverpool Road;51.536451;-0.107063 +Newgate Street ;51.619491;0.009369 +Thames Street ;51.48239;-0.015214 +Devons Road;51.519568;-0.02098 +Devons Road;51.522221;-0.018259 +Bow Road;51.527665;-0.02274 +Bow Road;51.52839;-0.018357 +Kingston House estate ;51.567997;-0.025075 +Pigott Street;51.51297;-0.026546 +Burdett Road;51.522675;-0.03408 +Burdett Road;51.518597;-0.030556 +Burdett Road;51.514356;-0.028228 +Horseferry Road;51.49488;-0.128708 +Horseferry Road;51.495548;-0.133097 +Commercial Road;51.512473;-0.032841 +Commercial Road;51.513208;-0.043913 +Commercial Road;51.514191;-0.054245 +Commercial Road;51.514797;-0.063912 +Stepney Causeway;51.512755;-0.045154 +Tollet Street;51.523285;-0.046569 +Harrow Road;51.531352;-0.231282 +Harrow Road;51.528602;-0.217849 +Harrow Road;51.525246;-0.203762 +Harrow Road;51.520156;-0.190523 +Cable Street;51.511098;-0.063118 +Cable Street;51.511093;-0.054996 +Cable Street;51.511498;-0.046381 +Wapping Wall;51.506956;-0.052106 +Clapton Square;51.550363;-0.053608 +Whitechapel Road;51.51684;-0.068032 +Whitechapel Road;51.519016;-0.060285 +Holloway Road;51.564311;-0.130903 +Holloway Road;51.559687;-0.122244 +Holloway Road;51.55378;-0.113769 +Holloway Road;51.547915;-0.10614 +Savage Gardens;51.512185;0.060495 +Broadway Market;51.535575;-0.062389 +Durward Street;51.519258;-0.062596 +Holland Road ;51.502849;-0.214255 +Holland Road ;51.500034;-0.210564 +Holland Road ;51.497541;-0.207163 +Henriques Street;51.514185;-0.065504 +Wellclose Square;51.509835;-0.065544 +Cheshire Street;51.523987;-0.066426 +Hanbury Street;51.520294;-0.072315 +Hanbury Street;51.519953;-0.069034 +Park Lane ;51.512366;-0.157768 +Park Lane ;51.508742;-0.155396 +Park Lane ;51.505702;-0.151244 +Whitechapel High Street;51.51604;-0.069754 +Osborn Street;51.516683;-0.070074 +Brick Lane Market;51.518093;-0.071201 +Road Southwark;51.492675;-0.071549 +Flower and Dean Street;51.517915;-0.072419 +Fournier Street;51.51927;-0.072599 +Shad Thames;51.501221;-0.073029 +Shad Thames;51.502196;-0.072133 +Crosswall;51.51161;-0.075589 +Minories;51.513092;-0.075729 +Minories;51.511843;-0.075375 +Commercial Street ;51.521807;-0.076143 +Commercial Street ;51.518811;-0.074544 +Commercial Street ;51.516172;-0.072602 +Vine Street ;51.512965;-0.076154 +Pepys Street;51.51081;-0.077324 +Shoreditch High Street;51.526561;-0.078052 +Shoreditch High Street;51.523983;-0.077301 +Aldgate;51.513265;-0.077609 +Hackney Road;51.529056;-0.07522 +Hackney Road;51.53112;-0.067796 +Hackney Road;51.531993;-0.060779 +Fenchurch Street;51.512544;-0.078991 +Fenchurch Street;51.511569;-0.082489 +Byward Street;51.509593;-0.078833 +Norton Folgate;51.520808;-0.078845 +Bishopsgate;51.517316;-0.080638 +Bishopsgate;51.519695;-0.07912 +Bevis Marks;51.514995;-0.079239 +St. Mary Axe;51.51558;-0.079694 +Old Kent Road;51.490972;-0.081512 +Old Kent Road;51.486915;-0.074158 +Old Kent Road;51.483272;-0.064555 +Old Kent Road;51.479442;-0.056412 +Houndsditch;51.51651;-0.080929 +Camomile Street;51.516075;-0.081464 +Leadenhall Street;51.513515;-0.081564 +Lime Street ;51.513298;-0.081694 +Exchange Alley;51.520168;-0.081977 +Wormwood Street;51.516223;-0.082309 +Great Tower Street;51.510507;-0.082953 +Bermondsey Street;51.497537;-0.081794 +Bermondsey Street;51.499856;-0.081512 +Bermondsey Street;51.501773;-0.082263 +Old Broad Street;51.515068;-0.084881 +Old Broad Street;51.516964;-0.083336 +Southgate Road;51.540241;-0.085498 +Southgate Road;51.544173;-0.083964 +Gipsy Hill;51.4267;-0.084747 +Gipsy Hill;51.423818;-0.083599 +Gipsy Hill;51.420652;-0.083245 +Wall;51.545558;-0.084208 +Gracechurch Street;51.5132;-0.084234 +Tooley Street;51.501482;-0.076078 +Tooley Street;51.503802;-0.081061 +Tooley Street;51.505756;-0.08597 +Bricklayers Arms;51.49481;-0.085439 +Eastcheap;51.510761;-0.085553 +Seven Sisters Road;51.559282;-0.116719 +Seven Sisters Road;51.564382;-0.105223 +Seven Sisters Road;51.5709;-0.095497 +Seven Sisters Road;51.575554;-0.085133 +Seven Sisters Road;51.580835;-0.077516 +St Giles Circus;51.476879;-0.085821 +Wych Street;51.51053;-0.085889 +Cornhill ;51.51337;-0.085974 +Grub Street;51.50146;-0.085989 +Gallery Road;51.445667;-0.087065 +Gallery Road;51.442431;-0.08906 +Threadneedle Street;51.514254;-0.085053 +Threadneedle Street;51.513806;-0.087767 +Dulwich Common;51.44153;-0.085659 +Dulwich Common;51.442658;-0.076894 +Finsbury Pavement;51.520215;-0.087364 +Throgmorton Street;51.514665;-0.087539 +Old Street Roundabout;51.5257;-0.08768 +King William Street ;51.50638;-0.088289 +Long Lane;51.501065;-0.091243 +Long Lane;51.499914;-0.08744 +Long Lane;51.49861;-0.084318 +Lordship Lane Southwark;51.456392;-0.075971 +Lordship Lane Southwark;51.450557;-0.07596 +Lordship Lane Southwark;51.444972;-0.069834 +Queen Victoria Street ;51.512099;-0.101219 +Queen Victoria Street ;51.511894;-0.096345 +Queen Victoria Street ;51.51283;-0.091815 +Lothbury;51.514845;-0.089999 +Coleman Street;51.515555;-0.090009 +Walbrook;51.51272;-0.090139 +Old Street;51.525095;-0.092053 +Old Street;51.525863;-0.086668 +Southwark Street;51.504701;-0.092676 +Southwark Street;51.505782;-0.100079 +Poultry ;51.51356;-0.090724 +Basinghall Street;51.51558;-0.090997 +City Road;51.528544;-0.093019 +City Road;51.530671;-0.101066 +Old Jewry;51.51379;-0.091104 +New Kent Road;51.49421;-0.091532 +New Kent Road;51.494736;-0.097311 +Green Lanes;51.557227;-0.090337 +Green Lanes;51.564889;-0.092955 +Green Lanes;51.572225;-0.09686 +Green Lanes;51.579101;-0.099027 +Green Lanes;51.586728;-0.100873 +Tabard Street;51.499155;-0.090498 +Tabard Street;51.497071;-0.088202 +Queen Street ;51.512915;-0.092464 +Great Dover Street;51.499602;-0.092021 +Great Dover Street;51.496216;-0.088148 +Denmark Hill;51.461339;-0.092053 +Denmark Hill;51.46678;-0.090508 +Denmark Hill;51.471284;-0.092998 +Borough High Street;51.49865;-0.097718 +Borough High Street;51.502839;-0.09204 +Spring Gardens;51.549026;-0.093938 +Herne Hill;51.456053;-0.097537 +Herne Hill;51.459052;-0.094607 +Bread Street;51.514045;-0.094504 +Cripplegate Street;51.520912;-0.094786 +Red Cross Street;51.502335;-0.094869 +Queenhithe;51.510964;-0.095093 +Union Street ;51.503799;-0.098098 +Union Street ;51.503656;-0.103072 +Southwark Bridge Road;51.50512;-0.095599 +Gresham Street;51.515553;-0.093952 +Gresham Street;51.515041;-0.091774 +Marshalsea Road;51.502615;-0.095809 +Cannon Street;51.512498;-0.094317 +Cannon Street;51.511494;-0.089865 +Mint Street;51.50216;-0.096554 +Aldersgate Street;51.517205;-0.096829 +Bank junction;51.53224;-0.097044 +Lant Street;51.50154;-0.097244 +Borough Road;51.499235;-0.097319 +Newington Causeway;51.498684;-0.097502 +Paternoster Row;51.514575;-0.097534 +Goswell Road;51.528736;-0.101119 +Goswell Road;51.525674;-0.099821 +Goswell Road;51.522728;-0.097793 +Cheapside;51.514278;-0.095272 +Cheapside;51.513739;-0.091951 +Gillespie Road;51.56058;-0.098864 +Little Britain ;51.517955;-0.099414 +Cloth Fair;51.519075;-0.099639 +Walworth Road;51.491182;-0.097557 +Walworth Road;51.486813;-0.094961 +Charterhouse Street;51.520205;-0.099934 +Amen Corner;51.51447;-0.100949 +Newington Butts;51.492725;-0.101139 +Giltspur Street;51.516315;-0.101904 +Puddle Dock;51.511445;-0.102318 +Ludgate Hill;51.514;-0.102614 +Upper Street;51.544165;-0.103329 +Upper Street;51.539668;-0.102498 +Upper Street;51.534622;-0.104789 +Blackstock Road;51.562777;-0.101377 +Blackstock Road;51.560064;-0.098598 +Camden Passage;51.53471;-0.104344 +St George s Circus;51.498464;-0.104396 +Blackfriars Road;51.499531;-0.104638 +Blackfriars Road;51.503106;-0.104606 +Blackfriars Road;51.506357;-0.104424 +Ludgate Circus;51.514165;-0.104544 +The Cut ;51.503616;-0.104984 +Fleet Street;51.51417;-0.105104 +Westminster Bridge Road;51.498598;-0.105115 +Lambeth Road;51.49547;-0.115453 +Lambeth Road;51.496619;-0.110904 +Knight s Hill;51.424693;-0.105282 +Knight s Hill;51.429344;-0.104306 +Holborn Viaduct;51.517586;-0.106248 +St Agnes Place;51.484751;-0.106368 +Tulse Hill;51.44102;-0.106434 +Stamford Street;51.505833;-0.111092 +Stamford Street;51.50718;-0.106709 +Bleeding Heart Yard;51.519275;-0.106909 +Ely Place;51.518355;-0.107019 +Chapel Market;51.53361;-0.10728 +Saffron Hill;51.5211;-0.107324 +Mayall Road;51.458475;-0.107849 +Bouverie Street;51.51276;-0.107959 +Exmouth Market;51.526402;-0.108081 +Pleydell Street;51.513935;-0.108119 +King s Bench Walk;51.512545;-0.108174 +Hatton Garden;51.521816;-0.109116 +Railton Road;51.458769;-0.10945 +Railton Road;51.45694;-0.106634 +Railton Road;51.454404;-0.103614 +Bakers Row;51.523705;-0.109987 +Baylis Road;51.50196;-0.110275 +Lower Marsh;51.50159;-0.111039 +Kennington Road;51.495876;-0.111086 +Kennington Road;51.491457;-0.111088 +Kennington Road;51.485891;-0.111333 +Baldwins Gardens;51.51975;-0.111844 +Lambeth Walk;51.492761;-0.116711 +Lambeth Walk;51.49459;-0.114273 +Hercules Road;51.498045;-0.113024 +Gray's Inn Road;51.529083;-0.119852 +Gray's Inn Road;51.524777;-0.116375 +Gray's Inn Road;51.520939;-0.1129 +Electric Avenue;51.46223;-0.114629 +Hackford Road;51.47664;-0.114924 +Brixton Market;51.461052;-0.115156 +Leake Street;51.50198;-0.115569 +Brixton Road;51.479448;-0.111735 +Brixton Road;51.472184;-0.112753 +Brixton Road;51.464387;-0.114337 +Lambeth Palace Road;51.500169;-0.116769 +Theobald's Road;51.52064;-0.116769 +York Road Lambeth;51.48518;-0.11693 +Doughty Street;51.524472;-0.117243 +Caledonian Road ;51.553212;-0.117921 +Caledonian Road ;51.546634;-0.118049 +Caledonian Road ;51.540642;-0.116998 +Caledonian Road ;51.533781;-0.118393 +Kingsway ;51.51651;-0.119782 +Kingsway ;51.514258;-0.118307 +Brixton Hill;51.448075;-0.124208 +Brixton Hill;51.453485;-0.120517 +Brixton Hill;51.458424;-0.117513 +Lamb s Conduit Street;51.522107;-0.118583 +Lancaster Place;51.510628;-0.118597 +Crouch Hill;51.575123;-0.121815 +Crouch Hill;51.57186;-0.118629 +Guilford Street;51.523694;-0.118866 +Aldwych;51.511461;-0.119082 +The Queen's Walk;51.500865;-0.119844 +Cromer Street;51.528145;-0.120339 +High Holborn;51.516493;-0.124015 +High Holborn;51.518055;-0.116268 +High Holborn;51.517961;-0.109702 +Savoy Place;51.509285;-0.120779 +Tavistock Street;51.511859;-0.120872 +Albert Embankment;51.491256;-0.121891 +Birkenhead Street ;51.530188;-0.122206 +Southampton Street;51.51113;-0.122269 +York Way;51.546692;-0.126793 +York Way;51.539782;-0.124877 +York Way;51.532545;-0.122416 +Victoria Embankment;51.511013;-0.10628 +Victoria Embankment;51.509696;-0.11865 +Victoria Embankment;51.502795;-0.123789 +Abbey Road;51.540108;-0.18783 +Abbey Road;51.537075;-0.183379 +Abbey Road;51.533579;-0.178941 +South Lambeth Road;51.483726;-0.123156 +South Lambeth Road;51.47924;-0.123652 +South Lambeth Road;51.475053;-0.122856 +Southampton Row;51.52035;-0.122749 +Long Acre ;51.513925;-0.123044 +Floral Street;51.513;-0.123374 +Great Russell Street;51.517538;-0.128719 +Great Russell Street;51.519081;-0.124127 +Bedford Place;51.520035;-0.124054 +Streatham High Road;51.438504;-0.126622 +Streatham High Road;51.432778;-0.128767 +Streatham High Road;51.424457;-0.130355 +Streatham High Road;51.415634;-0.124701 +Horse Guards Avenue;51.504856;-0.124384 +Agar Street;51.509817;-0.124482 +Villiers Street;51.50869;-0.124864 +Montague Street ;51.519375;-0.124959 +Millbank;51.495762;-0.125307 +Millbank;51.493105;-0.125153 +New Road ;51.517069;-0.062431 +New Road ;51.515347;-0.062048 +Shaftesbury Avenue;51.512315;-0.131128 +Shaftesbury Avenue;51.514761;-0.127346 +Museum Street;51.51807;-0.125969 +Strand ;51.5083;-0.125969 +Northumberland Avenue;51.50719;-0.126175 +Neal s Yard;51.514435;-0.126279 +Woburn Place;51.523335;-0.126344 +Hamilton Place ;51.561485;-0.126374 +Great Scotland Yard;51.506164;-0.126387 +Downing Street;51.503181;-0.12671 +Crouch End Hill;51.574875;-0.126904 +Seven Dials;51.51383;-0.127046 +Lord North Street;51.496585;-0.127119 +Cecil Court;51.510659;-0.126783 +Chrisp Street Market;51.513988;-0.015471 +Covent Garden square;51.51144;-0.122921 +Earlham Street Market;51.513746;-0.126933 +East Street Market;51.489822;0.064054 +Limehouse Link tunnel;51.509193;-0.032543 +Little Dorrit s Court;51.502504;-0.09415 +Spitalfields Junction;51.511214;-0.119824 +St. Anne s Court;51.538123;-0.207027 +Whitehall;51.506325;-0.127144 +Denmark Street;51.515555;-0.128824 +Cockspur Street;51.5075;-0.128909 +Horse Guards Road;51.503838;-0.129073 +Marsham Street;51.496497;-0.129331 +Marsham Street;51.493711;-0.128966 +Cambridge Circus ;51.51336;-0.129214 +Euston Road;51.527049;-0.131514 +Euston Road;51.529003;-0.126654 +Leicester Square;51.510342;-0.13008 +Charing Cross Road;51.515144;-0.130023 +Charing Cross Road;51.51277;-0.128924 +Charing Cross Road;51.510428;-0.128397 +Tottenham Court Road;51.517801;-0.131439 +Tottenham Court Road;51.521001;-0.134668 +Tottenham Court Road;51.524023;-0.137426 +Malet Street;51.521765;-0.130579 +Old Compton Street;51.513335;-0.130869 +Carlton House Terrace;51.50674;-0.130879 +Coventry Street;51.510495;-0.131169 +Greek Street;51.5148;-0.131389 +Clapham High Street;51.46419;-0.131634 +Wardour Street;51.515091;-0.135258 +Wardour Street;51.512722;-0.133553 +Frith Street;51.514415;-0.132044 +Meard Street;51.51336;-0.132684 +Vere Street Westminster;51.49752;-0.132824 +Haymarket ;51.509845;-0.133004 +Dean Street;51.514805;-0.133279 +Oxford Street;51.513769;-0.154999 +Oxford Street;51.515019;-0.143852 +Oxford Street;51.516196;-0.133354 +Gordon Street;51.526105;-0.133414 +Brewer Street;51.51249;-0.133619 +Berwick Street Market;51.512905;-0.134342 +Great Windmill Street;51.511745;-0.134762 +St. James s Square;51.507809;-0.13506 +Gower Street ;51.525165;-0.135544 +Drummond Street ;51.527595;-0.135549 +Charlotte Street;51.520583;-0.136905 +Charlotte Street;51.519611;-0.13593 +Charlotte Street;51.518605;-0.134903 +Berners Street;51.515995;-0.135939 +Camden Road;51.543417;-0.136728 +Camden Road;51.549244;-0.128703 +Camden Road;51.554959;-0.119863 +Broadwick Street;51.51342;-0.136419 +Piccadilly;51.50889;-0.137349 +Pall Mall ;51.505296;-0.137633 +Royal College Street;51.54219;-0.138702 +Royal College Street;51.539269;-0.136256 +Royal College Street;51.536655;-0.134057 +Royal College Street;51.499143;-0.137738 +North Gower Street;51.527551;-0.137995 +Cleveland Street ;51.522819;-0.141567 +Cleveland Street ;51.521168;-0.139593 +Cleveland Street ;51.519762;-0.137876 +Carnaby Street;51.513215;-0.138904 +Birdcage Walk;51.500403;-0.139018 +St James's Place;51.50591;-0.139294 +St James's Street;51.506555;-0.139364 +Jermyn Street;51.50744;-0.139659 +Mornington Crescent ;51.534379;-0.139682 +Great Marlborough Street;51.51376;-0.141014 +Albemarle Street;51.508205;-0.141092 +Cork Street;51.509915;-0.141109 +Queen Alexandra's Military Hospital (Millbank);51.473675;-0.14132 +Savile Row;51.511885;-0.141354 +Cumberland Market;51.529553;-0.141622 +Dover Street;51.507857;-0.14165 +Camden High Street;51.540499;-0.143949 +Camden High Street;51.537927;-0.141921 +Camden High Street;51.535648;-0.139507 +Conduit Street;51.51196;-0.142249 +Great Titchfield Street;51.52259;-0.142374 +Buckingham Gate;51.499495;-0.142708 +Bolsover Street;51.52326;-0.143424 +Portland Place;51.518209;-0.143861 +Berkeley Street;51.508885;-0.144144 +Hallam Street;51.521755;-0.144154 +Great Portland Street;51.522907;-0.143992 +Great Portland Street;51.520907;-0.143112 +Great Portland Street;51.518405;-0.141975 +Albany Street;51.533314;-0.146019 +Albany Street;51.529768;-0.144482 +Albany Street;51.525371;-0.14426 +Marylebone Road;51.521123;-0.162971 +Marylebone Road;51.522376;-0.155911 +Marylebone Road;51.523275;-0.149539 +Wigmore Street;51.516995;-0.145114 +Little Green Street;51.55574;-0.145214 +Chester Terrace;51.529005;-0.145432 +Fitzmaurice Place;51.50871;-0.145442 +Curzon Street;51.506535;-0.149056 +Curzon Street;51.507516;-0.145311 +Cumberland Terrace;51.532955;-0.146634 +Grosvenor Place;51.497665;-0.146634 +Ebury Street;51.494015;-0.149441 +Ebury Street;51.492184;-0.151577 +Harley Street;51.522514;-0.148573 +Harley Street;51.5201;-0.147591 +Harley Street;51.517654;-0.146384 +Wimpole Street;51.516176;-0.14735 +Wimpole Street;51.518724;-0.148509 +Chalk Farm Road;51.542804;-0.148487 +South Molton Street;51.513994;-0.148499 +Welbeck Street;51.517489;-0.149345 +Welbeck Street;51.515883;-0.148616 +Hyde Park Corner;51.501942;-0.14974 +Constitution Hill ;51.50242;-0.149923 +Chelsea Bridge Road;51.487885;-0.153079 +Chelsea Bridge Road;51.48406;-0.149753 +Pimlico Road ;51.490872;-0.150061 +Marylebone High Street;51.522851;-0.151112 +Duke Street Marylebone;51.51531;-0.151929 +Belgrave Square;51.49951;-0.152209 +Wilton Crescent;51.500465;-0.153768 +Dorset Street ;51.519688;-0.154909 +Chesham Place;51.497175;-0.155934 +Knightsbridge;51.50238;-0.156174 +Portman Street;51.514795;-0.156449 +Chelsea Embankment;51.484695;-0.156594 +Lower Sloane Street;51.49058;-0.157059 +Cadogan Place;51.498455;-0.157874 +Sloane Street;51.499545;-0.159667 +Sloane Street;51.495577;-0.158529 +Pont Street;51.49715;-0.159374 +Rotten Row;51.503635;-0.159794 +Pavilion Road;51.498845;-0.16031 +Pavilion Road;51.495969;-0.159495 +Bayswater Road;51.511039;-0.179815 +Bayswater Road;51.512647;-0.165997 +Edgware Road;51.523462;-0.175009 +Edgware Road;51.519505;-0.169644 +Edgware Road;51.515216;-0.162992 +Brompton Road;51.500947;-0.161855 +Brompton Road;51.498318;-0.16607 +Brompton Road;51.495577;-0.169237 +Connaught Place ;51.513543;-0.162042 +Tite Street;51.48689;-0.162564 +Royal Hospital Road;51.48839;-0.157735 +Royal Hospital Road;51.485463;-0.162263 +Beauchamp Place;51.49692;-0.163233 +Connaught Square;51.514395;-0.163539 +Flood Street;51.487601;-0.166512 +Flood Street;51.48541;-0.164773 +Radnor Walk;51.488064;-0.165193 +Shawfield Street;51.487533;-0.165514 +South Hill Park ;51.555309;-0.166026 +Lisson Grove;51.52042;-0.1693 +Praed Street;51.51899;-0.169539 +Hyde Park Gardens;51.507259;-0.16984 +Hyde Park Gate;51.507259;-0.16984 +Cromwell Gardens;51.495985;-0.171434 +Old Church Street;51.483373;-0.171514 +Brook Street;51.512928;-0.172547 +Paultons Square;51.48391;-0.173164 +Thurloe Place;51.49504;-0.173904 +Exhibition Road;51.500747;-0.174515 +Exhibition Road;51.496753;-0.173872 +Kensington Gore;51.50119;-0.175899 +Prince Consort Road;51.49992;-0.176314 +Maida Vale;51.525085;-0.177444 +Cheyne Walk;51.480651;-0.177463 +Lancaster Gate;51.5118;-0.178824 +King's Road;51.489298;-0.164216 +King's Road;51.485899;-0.172691 +King's Road;51.481936;-0.180523 +King's Road;51.478662;-0.188527 +Queen's Gate;51.499245;-0.179914 +Cromwell Road;51.494722;-0.190136 +Cromwell Road;51.495257;-0.180631 +Park Crescent ;51.604739;-0.182088 +Warwick Avenue ;51.52433;-0.186853 +Warwick Avenue ;51.522848;-0.183463 +The Boltons;51.488543;-0.183187 +Fulham Road;51.481882;-0.18724 +Fulham Road;51.480105;-0.194621 +Fulham Road;51.47806;-0.200994 +Fulham Road;51.474599;-0.206659 +Leinster Gardens;51.51323;-0.183584 +Palace Gate;51.500085;-0.183989 +Tregunter Road;51.487815;-0.184059 +Kensington Road;51.501597;-0.176275 +Kensington Road;51.501856;-0.169408 +Redcliffe Gardens;51.48645;-0.187269 +Queensway ;51.514658;-0.188076 +Queensway ;51.511792;-0.187497 +Kensington Palace Gardens;51.504742;-0.18836 +Westbourne Grove;51.515128;-0.19431 +Westbourne Grove;51.515556;-0.190319 +Old Brompton Road;51.492692;-0.177133 +Old Brompton Road;51.490638;-0.186007 +Old Brompton Road;51.488162;-0.193806 +Ossington Street;51.511735;-0.192877 +Notting Hill Gate;51.50959;-0.193574 +Finchley Road;51.5866;-0.199857 +Finchley Road;51.579666;-0.198054 +Finchley Road;51.572278;-0.195608 +Finchley Road;51.564159;-0.19681 +Ledbury Road;51.516381;-0.199814 +Ledbury Road;51.513795;-0.198913 +St George's Road;51.497202;-0.107181 +St George's Road;51.495711;-0.103297 +Colville Gardens;51.51586;-0.202509 +Kilburn High Road;51.544023;-0.200329 +Kilburn High Road;51.539382;-0.19505 +Kensington Park Gardens;51.511409;-0.203139 +Addison Road;51.504033;-0.210629 +Addison Road;51.501385;-0.208444 +Golborne Road;51.524119;-0.205689 +Lansdowne Crescent ;51.510906;-0.205742 +Arundel Gardens;51.51372;-0.205994 +Kensington Park Road;51.515875;-0.206054 +Kensington High Street;51.498872;-0.199149 +Kensington High Street;51.501735;-0.191445 +Westway ;51.519942;-0.174022 +Westway ;51.519675;-0.189214 +Westway ;51.520877;-0.203848 +Westway ;51.51583;-0.21668 +Westway ;51.514201;-0.237365 +Portobello Road;51.514474;-0.204213 +Portobello Road;51.51215;-0.200801 +Portobello Road;51.517329;-0.206155 +Holland Park Avenue;51.50836;-0.201552 +Holland Park Avenue;51.505996;-0.209877 +Addison Avenue;51.50664;-0.212399 +Royal Crescent ;51.50589;-0.213362 +Ladbroke Grove;51.525073;-0.214534 +Ladbroke Grove;51.520886;-0.212045 +Latimer Road;51.517537;-0.223872 +Waterloo Road ;51.502999;-0.110915 +Waterloo Road ;51.500239;-0.107589 +Belgrave Road;51.489926;-0.137222 +Belgrave Road;51.492424;-0.142651 +The Blue;51.518556;-0.252071 +Langham Place ;51.4856;-0.253399 +Charles Street ;51.470105;-0.254414 +Wood Street ;51.488871;-0.254955 +Bond Street;51.49294;-0.258324 +Gloucester Road ;51.506034;-0.265764 +Thames Embankment;51.471606;-0.268686 +King Street ;51.49348;-0.240154 +King Street;51.492593;-0.232 +Narrow Street;51.509673;51.508761 +Narrow Street;51.508761;-0.03298 +Regent Street;51.518127;51.51396 +Regent Street;51.51396;-0.141363 +Regent Street;51.510105;-0.13793 +The Mall ;51.514069;-0.299907 +Junction Road;51.563857;-0.135376 +Junction Road;51.559068;-0.137651 diff --git a/assets/csv/axes/paris.csv b/assets/csv/axes/paris.csv new file mode 100644 index 0000000..542b4c1 --- /dev/null +++ b/assets/csv/axes/paris.csv @@ -0,0 +1,367 @@ +Boulevard Adolphe-Pinard;48.825085;2.301785 +Rue de Monceau;48.88023;2.31591 +Rue de Monceau;48.878706;2.312778 +Rue Bonaparte;48.849296;2.332739 +Rue Bonaparte;48.851588;2.332953 +Rue Bonaparte;48.853487;2.333356 +Rue Notre-Dame-des-Champs;48.846239;2.327439 +Rue Notre-Dame-des-Champs;48.843697;2.331033 +Rue Notre-Dame-des-Champs;48.840729;2.334605 +Rue Lauriston;48.865712;2.285725 +Rue Lauriston;48.869519;2.290263 +Rue Lauriston;48.872215;2.29286 +Avenue René-Coty;48.831382;2.333543 +Avenue René-Coty;48.825971;2.33556 +Boulevard de Picpus;48.841989;2.401371 +Boulevard de Picpus;48.846296;2.40047 +Chaussée de l'Étang;48.838641;2.421112 +Chaussée de l'Étang;48.842144;2.419395 +Rue Castagnary;48.83364;2.309255 +Rue Philippe-de-Girard;48.881665;2.36184 +Avenue Philippe-Auguste;48.85625;2.391028 +Avenue Philippe-Auguste;48.851859;2.393796 +Boulevard Auguste-Blanqui;48.830562;2.35219 +Boulevard Auguste-Blanqui;48.831255;2.343843 +Boulevard de Bercy;48.839729;2.377596 +Boulevard de Bercy;48.839192;2.38663 +Rue Falguière;48.8364;2.31024 +Rue de la Tour;48.863278;2.274717 +Rue de la Tour;48.861473;2.278825 +Boulevard Gouvion-Saint-Cyr;48.879694;2.284899 +Boulevard Gouvion-Saint-Cyr;48.884153;2.289126 +Rue Haxo;48.878386;2.401688 +Rue de Montreuil;48.851132;2.397344 +Rue de Lille;48.861435;2.319808 +Rue Saint-Lazare;48.875445;2.325585 +Rue Bobillot;48.824177;2.348778 +Rue Bobillot;48.829376;2.353735 +Boulevard de Ménilmontant;48.864988;2.384892 +Rue de l'Abbé-Groult;48.841042;2.295306 +Rue Petit;48.884859;2.382166 +Rue Petit;48.886087;2.389526 +Rue de Miromesnil;48.879398;2.315433 +Rue de Miromesnil;48.874543;2.315862 +Rue La Boétie;48.871655;2.307837 +Rue La Boétie;48.873273;2.312208 +Rue des Maraîchers;48.855092;2.406178 +Rue des Maraîchers;48.850077;2.407529 +Boulevard de la Chapelle;48.884422;2.365794 +Boulevard de la Chapelle;48.883876;2.353005 +Rue de Dunkerque;48.881501;2.348413 +Rue de Dunkerque;48.879904;2.354465 +Boulevard de la Guyane;48.836947;2.413001 +Boulevard de la Guyane;48.841607;2.414224 +Rue Jouffroy-d'Abbans;48.886496;2.31127 +Rue Jouffroy-d'Abbans;48.883392;2.303932 +Avenue de Saint-Mandé;48.84555;2.395525 +Avenue de Saint-Ouen;48.889929;2.326462 +Avenue de Saint-Ouen;48.894627;2.327996 +Rue Damrémont;48.894834;2.337213 +Rue Damrémont;48.889642;2.333758 +Rue Curial;48.891688;2.372382 +Rue de Turenne;48.858495;2.364485 +Rue de Turenne;48.862772;2.364678 +Boulevard de Port-Royal;48.838783;2.340217 +Boulevard de Port-Royal;48.837229;2.348263 +Rue Didot;48.82826;2.315905 +Rue Didot;48.832681;2.320755 +Avenue Félix-Faure;48.841678;2.289298 +Avenue Félix-Faure;48.839108;2.28301 +Avenue Kléber;48.866343;2.289619 +Avenue Kléber;48.870846;2.292881 +Rue du Ranelagh;48.85627;2.26737 +Avenue d'Iéna;48.866188;2.294834 +Avenue d'Iéna;48.870832;2.295542 +Rue de Lagny;48.849063;2.41034 +Rue de Lagny;48.849204;2.421584 +Rue du Maréchal-Leclerc;48.818088;2.431862 +Rue du Maréchal-Leclerc;48.817943;2.446266 +Rue du Maréchal-Leclerc;48.815842;2.460036 +Rue Jean-Pierre-Timbaud;48.86807;2.378572 +Rue de Meaux;48.885532;2.381355 +Rue du Bac;48.852424;2.32363 +Rue du Bac;48.857167;2.327664 +Avenue du Général-Michel-Bizot;48.834856;2.400985 +Rue Michel-Ange;48.845957;2.262497 +Rue Michel-Ange;48.841367;2.258763 +Boulevard Romain-Rolland;48.822265;2.31442 +Rue du Théâtre;48.846265;2.29493 +Rue du Théâtre;48.848764;2.288407 +Rue de Tocqueville;48.888132;2.306721 +Rue de Tocqueville;48.884172;2.311603 +Boulevard de Courcelles;48.88095;2.312944 +Boulevard de Courcelles;48.879356;2.304103 +Rue de Turbigo;48.863755;2.348585 +Rue du Cherche-Midi;48.847213;2.322085 +Rue du Cherche-Midi;48.850645;2.328179 +Avenue Mozart;48.852918;2.268419 +Avenue Mozart;48.856998;2.272582 +Boulevard Bessières;48.897556;2.325389 +Rue d'Assas;48.843598;2.333672 +Rue d'Assas;48.847552;2.329895 +Rue de Provence;48.874275;2.33202 +Rue de Provence;48.874092;2.34041 +Rue de Rennes;48.84614;2.326097 +Rue de Rennes;48.850616;2.330217 +Boulevard Kellermann;48.821036;2.352282 +Boulevard Exelmans;48.846686;2.258739 +Boulevard de Grenelle;48.848799;2.298331 +Boulevard de Grenelle;48.852452;2.291079 +Avenue de La Motte-Picquet;48.850236;2.299593 +Avenue de La Motte-Picquet;48.856349;2.308588 +Boulevard Anatole-France;48.851845;2.23119 +Boulevard Anatole-France;48.850007;2.239237 +Rue Oberkampf;48.86596;2.378615 +Rue Oberkampf;48.863581;2.369764 +Avenue de New-York;48.859426;2.289834 +Avenue de New-York;48.862497;2.293952 +Rue de Ménilmontant;48.87052;2.398223 +Rue de Ménilmontant;48.868154;2.38766 +Avenue du Général-Leclerc;48.833475;2.331725 +Rue Caulaincourt;48.889656;2.33938 +Rue Caulaincourt;48.886098;2.33187 +Boulevard des Invalides;48.849995;2.314832 +Boulevard des Invalides;48.854923;2.314897 +Rue de la Tombe-Issoire;48.831955;2.335215 +Rue Amelot;48.863577;2.36706 +Rue Amelot;48.856857;2.36897 +Rue de Saussure;48.888892;2.308567 +Rue de Saussure;48.885943;2.314382 +Rue Monge;48.842497;2.352126 +Rue Monge;48.848442;2.350194 +Boulevard Lefebvre;48.827795;2.304505 +Rue Riquet;48.89015;2.36058 +Avenue de la Dame-Blanche;48.844935;2.44712 +Boulevard Soult;48.84657;2.41098 +Quai d'Orsay;48.862461;2.305541 +Quai d'Orsay;48.862899;2.317386 +Rue de la Glacière;48.82987;2.343714 +Rue de la Glacière;48.835419;2.345077 +Rue de la Santé;48.835139;2.341633 +Avenue d'Italie;48.829305;2.356288 +Avenue d'Italie;48.823301;2.358134 +Avenue Foch;48.872779;2.285242 +Rue du Mont-Cenis;48.888435;2.34198 +Avenue de Choisy;48.829291;2.35749 +Avenue de Choisy;48.824531;2.361202 +Rue Nationale;48.830532;2.364303 +Rue Nationale;48.824954;2.367575 +Rue de Clignancourt;48.887667;2.347834 +Rue de Clignancourt;48.893479;2.349164 +Rue de Reuilly;48.843584;2.391028 +Rue de Reuilly;48.848541;2.385814 +Boulevard de Sébastopol;48.86317;2.350785 +Rue Saint-Denis;48.86336;2.349865 +Avenue Simon-Bolivar;48.880146;2.37427 +Avenue Simon-Bolivar;48.876453;2.377564 +Rue du Temple;48.864932;2.359915 +Rue du Temple;48.860217;2.354701 +Autoroute A4;48.826135;2.46568 +Rue du Chevaleret;48.832512;2.371287 +Boulevard de Charonne;48.857034;2.393244 +Rue Réaumur;48.86851;2.342015 +Boulevard Mortier;48.876105;2.407245 +Boulevard Arago;48.835873;2.348907 +Boulevard Arago;48.834565;2.336054 +Rue Leblanc;48.837405;2.276223 +Quai Branly;48.860287;2.295091 +Port de Passy;48.858615;2.260818 +Boulevard Saint-Michel;48.844432;2.339251 +Boulevard Saint-Michel;48.849628;2.342277 +Boulevard de l'Hôpital;48.840534;2.362232 +Boulevard de l'Hôpital;48.833924;2.357297 +Rue de Bagnolet;48.857873;2.39989 +Rue de Bagnolet;48.862151;2.406156 +Rue du Faubourg-Poissonnière;48.875418;2.348113 +Rue du Faubourg-Poissonnière;48.880132;2.349679 +Boulevard Vincent-Auriol;48.831873;2.359668 +Boulevard Vincent-Auriol;48.835588;2.369581 +Rue Jeanne-d'Arc;48.832611;2.364593 +Rue Jeanne-d'Arc;48.836831;2.358981 +Rue du Château-des-Rentiers;48.830915;2.36117 +Rue des Poissonniers;48.89466;2.352875 +Rue Saint-Martin;48.867049;2.354465 +Rue Saint-Martin;48.863337;2.352555 +Boulevard Jourdan;48.822886;2.326087 +Boulevard Poniatowski;48.834245;2.404525 +Port de Bercy;48.834206;2.381005 +Quai André-Citroën;48.848816;2.28133 +Rue Blomet;48.842342;2.30479 +Rue Blomet;48.839446;2.296143 +Rue de l'Ourcq;48.892012;2.379634 +Rue de l'Ourcq;48.888654;2.384098 +Port de Javel;48.84576;2.28187 +Rue de Maubeuge;48.880245;2.351535 +Avenue de Flandre;48.886072;2.371373 +Avenue de Flandre;48.893606;2.380364 +Boulevard Richard-Lenoir;48.863689;2.371652 +Boulevard Richard-Lenoir;48.859158;2.371502 +Rue de Sèvres;48.849444;2.322578 +Rue de Sèvres;48.846296;2.314939 +Avenue de Wagram;48.880704;2.300081 +Avenue de Wagram;48.884859;2.303116 +Rue de la Roquette;48.855953;2.375622 +Rue de la Roquette;48.858664;2.384055 +Rue du Chemin-Vert;48.862435;2.385655 +Rue de Javel;48.841466;2.291057 +Rue de Javel;48.844968;2.28344 +Avenue Ledru-Rollin;48.854529;2.378005 +Avenue Ledru-Rollin;48.848315;2.371953 +Rue de Longchamp;48.86851;2.27439 +Avenue de Clichy;48.888908;2.323093 +Avenue de Clichy;48.891674;2.31818 +Rue Saint-Jacques;48.841513;2.341257 +Rue Saint-Jacques;48.846423;2.343199 +Rue Lamarck;48.891145;2.329085 +Rue Legendre;48.885155;2.315927 +Rue Legendre;48.88857;2.321827 +Avenue de la République;48.863842;2.382048 +Avenue de la République;48.865783;2.371802 +Boulevard Brune;48.824093;2.321784 +Boulevard Brune;48.826763;2.309747 +Rue de Charonne;48.854226;2.383347 +Rue de Charonne;48.85584;2.391908 +Quai de Jemmapes;48.87988;2.368355 +Quai Louis-Blériot;48.8504;2.27758 +Boulevard du Montparnasse;48.844333;2.322536 +Boulevard du Montparnasse;48.841212;2.331977 +Rue Raymond-Losserand;48.8361;2.322005 +Rue Pelleport;48.874765;2.397905 +Port d'Auteuil;48.84804;2.25305 +Avenue Parmentier;48.870987;2.370343 +Avenue Parmentier;48.86719;2.373197 +Avenue Parmentier;48.860786;2.378175 +Rue du Faubourg-Saint-Denis;48.882471;2.358788 +Rue de la Pompe;48.860492;2.275044 +Rue de la Pompe;48.865431;2.279176 +Rue de la Pompe;48.868192;2.282066 +Boulevard Suchet;48.862135;2.26774 +Quai de Valmy;48.878975;2.366475 +Rue Vercingétorix;48.8373;2.319105 +Rue de Rome;48.886552;2.315841 +Rue de Rome;48.880902;2.321103 +Rue de Rome;48.875063;2.324488 +Avenue de France;48.832596;2.374914 +Avenue de France;48.827949;2.379034 +Boulevard Berthier;48.894375;2.31268 +Rue Belliard;48.897897;2.34989 +Avenue Victor-Hugo;48.87271;2.292555 +Avenue de Villiers;48.884323;2.301872 +Avenue de Villiers;48.882474;2.31127 +Rue Cardinet;48.890895;2.317845 +Boulevard de la Villette;48.876985;2.371196 +Boulevard Macdonald;48.89891;2.382846 +Rue Saint-Dominique;48.859934;2.31657 +Rue Saint-Dominique;48.859807;2.308588 +Rue du Faubourg-Saint-Antoine;48.84991;2.3859 +Rue du Faubourg-Saint-Antoine;48.851435;2.375364 +Rue de Lourmel;48.841621;2.285135 +Rue de Lourmel;48.846154;2.288482 +Rue Manin;48.88449;2.391635 +Rue d'Aubervilliers;48.89355;2.36985 +Rue d'Aubervilliers;48.887568;2.367125 +Rue de Picpus;48.846606;2.394204 +Rue de Picpus;48.841234;2.39879 +Rue Saint-Honoré;48.864028;2.333801 +Rue Saint-Honoré;48.867345;2.326591 +Avenue de la Belle-Gabrielle;48.832495;2.46653 +Avenue de Suffren;48.855875;2.29357 +Rue de la Croix-Nivert;48.845702;2.298374 +Rue de la Croix-Nivert;48.84196;2.293367 +Rue Championnet;48.895785;2.341445 +Boulevard Davout;48.862855;2.40893 +Rue du Faubourg-Saint-Martin;48.871274;2.356943 +Rue du Faubourg-Saint-Martin;48.876831;2.360984 +Rue de Bercy;48.847405;2.36854 +Avenue Jean-Jaurès;48.883744;2.374141 +Avenue Jean-Jaurès;48.887427;2.387938 +Avenue des Champs-Élysées;48.866498;2.317901 +Avenue des Champs-Élysées;48.869576;2.30825 +Avenue des Champs-Élysées;48.872483;2.299254 +Boulevard Diderot;48.846394;2.37854 +Boulevard Diderot;48.847468;2.387981 +Boulevard de Magenta;48.871933;2.360001 +Boulevard de Magenta;48.876052;2.356284 +Boulevard de Magenta;48.88095;2.351868 +Boulevard Murat;48.845928;2.257862 +Boulevard Murat;48.841042;2.25621 +Avenue du Maine;48.839249;2.322171 +Avenue du Maine;48.832865;2.324874 +Rue Saint-Maur;48.863322;2.379141 +Rue Saint-Maur;48.868799;2.374613 +Rue Saint-Charles;48.84223;2.28167 +Quai de Bercy;48.832825;2.38367 +Rue Ordener;48.89405;2.33349 +Rue Marcadet;48.89125;2.339315 +Rue Marcadet;48.892365;2.331054 +Rue du Faubourg-Saint-Honoré;48.869223;2.320089 +Rue du Faubourg-Saint-Honoré;48.873302;2.309597 +Rue du Faubourg-Saint-Honoré;48.876914;2.30082 +Avenue de Versailles;48.844017;2.270289 +Avenue de Versailles;48.849204;2.275629 +Boulevard Masséna;48.822524;2.372333 +Rue de la Convention;48.843641;2.282367 +Rue de la Convention;48.84013;2.28992 +Rue de la Convention;48.836255;2.299876 +Rue de Belleville;48.875456;2.39211 +Rue de Belleville;48.876477;2.404225 +Rue de Grenelle;48.857069;2.319167 +Rue de Grenelle;48.85396;2.327052 +Avenue Gambetta;48.863944;2.391887 +Avenue Gambetta;48.868315;2.40143 +Avenue Gambetta;48.874459;2.405534 +Rue de Courcelles;48.887715;2.294545 +Avenue du Tremblay;48.83408;2.454505 +Boulevard Raspail;48.851986;2.326698 +Boulevard Raspail;48.844629;2.328823 +Boulevard Raspail;48.837102;2.331419 +Rue d'Alésia;48.831466;2.315841 +Rue d'Alésia;48.828454;2.32503 +Rue d'Alésia;48.827313;2.335947 +Rue Lecourbe;48.83826;2.288182 +Rue Lecourbe;48.842285;2.301528 +Boulevard Haussmann;48.874162;2.324209 +Boulevard Haussmann;48.872812;2.334273 +Boulevard Pereire;48.88786;2.307365 +Rue de Crimée;48.894506;2.372611 +Boulevard Sérurier;48.888663;2.395748 +Boulevard Malesherbes;48.883772;2.30906 +Boulevard Malesherbes;48.878857;2.314961 +Boulevard Malesherbes;48.872991;2.321227 +Rue de Tolbiac;48.825689;2.347813 +Rue de Tolbiac;48.82624;2.360687 +Rue de l'Université;48.86112;2.311013 +Rue de l'Université;48.858607;2.325389 +Rue La Fayette;48.880301;2.360859 +Rue La Fayette;48.877728;2.350903 +Rue La Fayette;48.874529;2.338629 +Boulevard Voltaire;48.850828;2.391801 +Boulevard Voltaire;48.855629;2.383754 +Boulevard Voltaire;48.860076;2.376308 +Boulevard Ney;48.898655;2.36894 +Rue de Rivoli;48.864946;2.328351 +Rue de Rivoli;48.860419;2.342325 +Rue de Rivoli;48.856405;2.356031 +Rue de Charenton;48.851105;2.372555 +Boulevard Saint-Germain;48.849557;2.351289 +Boulevard Saint-Germain;48.853312;2.335361 +Boulevard Saint-Germain;48.858791;2.322922 +Rue des Pyrénées;48.87354;2.38976 +Rue de Vaugirard;48.836368;2.294619 +Rue de Vaugirard;48.84061;2.305026 +Rue de Vaugirard;48.844926;2.319553 +Rue de Vaugirard;48.848851;2.333457 +Avenue Daumesnil;48.834814;2.419224 +Avenue Daumesnil;48.837878;2.400242 +Avenue Daumesnil;48.842144;2.385943 +Avenue Daumesnil;48.847496;2.374914 +Voie Georges-Pompidou;48.846539;2.365504 +Boulevard périphérique;48.900905;2.358756 +Boulevard périphérique;48.883195;2.400341 +Boulevard périphérique;48.855249;2.413988 +Boulevard périphérique;48.828745;2.398968 +Boulevard périphérique;48.817896;2.351418 +Boulevard périphérique;48.831468;2.282667 +Boulevard périphérique;48.870145;2.271852 +Boulevard périphérique;48.898884;2.316399 +Boulevard Beaumarchais;48.856928;2.368203 diff --git a/assets/csv/odbl/berlin_atms.csv b/assets/csv/odbl/berlin_atms.csv new file mode 100644 index 0000000..8c73ec0 --- /dev/null +++ b/assets/csv/odbl/berlin_atms.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags berlin;atm;27411240;52.522610;13.402352;"{""name"":""S Hackescher Markt"",""wheelchair"":""yes""}" berlin;atm;28968291;52.486645;13.320617;"{""name"":""Berliner Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;29045600;52.546329;13.359219;"{""name"":""U Leopoldplatz"",""wheelchair"":""yes""}" berlin;atm;29046450;52.506214;13.332368;"{""name"":""U Zoologischer Garten"",""wheelchair"":""yes""}" berlin;atm;29046973;52.495800;13.330864;"{""name"":""U Spichernstra\u00dfe"",""wheelchair"":""no""}" berlin;atm;29046976;52.490692;13.330968;"{""name"":""U G\u00fcntzelstra\u00dfe"",""wheelchair"":""no""}" berlin;atm;29046979;52.487309;13.331040;"{""name"":""U Berliner Stra\u00dfe"",""wheelchair"":""yes""}" berlin;atm;29123754;52.509998;13.271606;"{""name"":""U Theodor-Heuss-Platz"",""wheelchair"":""yes""}" berlin;atm;29494292;52.493050;13.422075;"{""name"":""U Sch\u00f6nleinstra\u00dfe"",""wheelchair"":""no"",""operator"":""BVG""}" berlin;atm;29494303;52.486427;13.424379;"{""name"":""U Hermannplatz"",""wheelchair"":""yes""}" berlin;atm;29495049;52.509052;13.378187;"{""name"":""U Potsdamer Platz"",""wheelchair"":""yes""}" berlin;atm;31207786;52.506542;13.306771;"{""name"":""U Wilmersdorfer Stra\u00dfe"",""wheelchair"":""yes""}" berlin;atm;31207787;52.511482;13.305214;"{""name"":""U Bismarckstra\u00dfe"",""wheelchair"":""yes""}" berlin;atm;31207789;52.517387;13.306588;"{""name"":""U Richard-Wagner-Platz"",""wheelchair"":""no""}" berlin;atm;60848455;52.530354;13.471070;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;60852951;52.524586;13.465439;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;81362527;52.510277;13.271941;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;81362613;52.510059;13.273154;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;81362619;52.509953;13.273782;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;87036263;52.532986;13.384282;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""atm""}" berlin;atm;87040415;52.511356;13.390020;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;89274635;52.523251;13.415808;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;89274704;52.521652;13.410026;"{""name"":""Commerzbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;89304563;52.511738;13.408757;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;101003688;52.491402;13.322930;"{""name"":""...nah und gut"",""wheelchair"":""yes""}" berlin;atm;111651323;52.490379;13.360146;"{""name"":""U Kleistpark"",""wheelchair"":""yes""}" berlin;atm;115543889;52.429783;13.530818;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;129730639;52.469082;13.441752;"{""name"":""S+U Neuk\u00f6lln"",""wheelchair"":""yes""}" berlin;atm;149607241;52.541523;13.411782;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;171067396;52.531410;13.382303;"{""name"":""Deutsche Post"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;203561614;52.527714;13.538398;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;213106623;52.542057;13.441211;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;213106681;52.536289;13.433641;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;213108224;52.520817;13.414471;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;213112439;52.523476;13.401963;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;213119564;52.541962;13.563021;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;239659091;52.481819;13.524938;"{""name"":""Berliner Sparkasse"",""note"":""Sparkasse PrivatkundenCenter"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;239661671;52.461021;13.520906;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;253624316;52.510921;13.451431;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;253624651;52.512184;13.453406;"{""name"":""Berliner Sparkasse"",""note"":""self service"",""wheelchair"":""no"",""amenity"":""atm""}" berlin;atm;253625297;52.507278;13.467757;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;254307051;52.506035;13.321532;"{""name"":""Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;259845849;52.491383;13.395476;"{""name"":""U Gneisenaustra\u00dfe"",""wheelchair"":""no""}" berlin;atm;259863450;52.412708;13.571450;"{""name"":""Sparkasse PrivatkundenCenter"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;261745751;52.506142;13.333227;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;266390510;52.556232;13.383866;"{""name"":""Postfiliale"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;266614884;52.511387;13.586350;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;267079782;52.462254;13.513733;"{""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;267405487;52.535847;13.434581;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;267405808;52.535259;13.422315;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;267866520;52.537148;13.189319;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;269111123;52.618099;13.240736;"{""name"":""Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;269380542;52.550797;13.414373;"{""wheelchair"":""yes"",""operator"":""Berliner Sparkasse""}" berlin;atm;269414693;52.541328;13.368540;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;269477903;52.507736;13.414251;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;270320951;52.434753;13.342759;"{""name"":""Postbank Finanzcenter"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;270660538;52.524097;13.350625;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;270915509;52.570587;13.566753;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;270923263;52.438885;13.719875;"{""name"":""Berliner Sparkasse - Filiale 166"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;271707886;52.536892;13.203074;"{""name"":""Santander"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;271708368;52.536736;13.204842;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;271708583;52.536686;13.205340;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;271710347;52.537903;13.204526;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;271711439;52.538574;13.204664;"{""name"":""Santander"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;271891568;52.501102;13.341955;"{""name"":""Targobank"",""amenity"":""bank""}" berlin;atm;273741958;52.529140;13.196231;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;274864487;52.522560;13.197930;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;274864516;52.521206;13.197621;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;275886853;52.524216;13.387331;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;275891182;52.516792;13.391355;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;277776459;52.467167;13.432106;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;277908603;52.635021;13.495581;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;278299922;52.485535;13.385556;"{""name"":""Berliner Sparkasse"",""amenity"":""bank""}" berlin;atm;278361796;52.513618;13.521669;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;278876388;52.513550;13.469667;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;279305513;52.527699;13.385685;"{""name"":""Pax Bank"",""amenity"":""bank""}" berlin;atm;279387386;52.547939;13.356803;"{""name"":""Berliner Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;280296892;52.436298;13.346216;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;281828784;52.634930;13.495922;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;282425933;52.515045;13.459585;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;282430537;52.515995;13.457489;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;282465619;52.497475;13.520265;"{""name"":""Sparkasse PrivatkundenCenter"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;282833032;52.482834;13.601313;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;282836305;52.481838;13.525760;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;283287313;52.589443;13.284083;"{""name"":""Berliner Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;283287402;52.553211;13.347602;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;283733803;52.524361;13.499168;"{""name"":""Star"",""amenity"":""fuel""}" berlin;atm;285082079;52.508644;13.451302;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;287297011;52.498440;13.462020;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;287444109;52.506577;13.332145;"{""name"":""ReiseBank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;288787073;52.519176;13.427203;"{""name"":""HypoVereinsbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;292051576;52.455177;13.624931;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;292621968;52.497002;13.291874;"{""name"":""Berliner Bank AG"",""amenity"":""bank""}" berlin;atm;292621972;52.497623;13.292196;"{""name"":""Deutsche Bank AG"",""amenity"":""bank""}" berlin;atm;293578084;52.537262;13.452176;"{""name"":""Sparda-Bank"",""amenity"":""bank""}" berlin;atm;297512111;52.467121;13.331057;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;297512113;52.469139;13.333222;"{""name"":""Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;298796986;52.442947;13.297170;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;298798591;52.443207;13.296862;"{""name"":""Deutsche Bank"",""amenity"":""bank""}" berlin;atm;298811103;52.442661;13.296367;"{""name"":""Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;300839333;52.488182;13.340608;"{""name"":""Deutsche Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;303558615;52.480068;13.346439;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;304265037;52.435307;13.261047;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;304791561;52.551502;13.414489;"{""name"":""Santander Consumer Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;308602938;52.511879;13.389015;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;308807456;52.552280;13.413817;"{""name"":""Targo Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;310385704;52.478970;13.343305;"{""name"":""Berliner Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;310682740;52.500786;13.312101;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;311039022;52.503090;13.326855;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;311039345;52.502991;13.326478;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;312391523;52.499447;13.319328;"{""amenity"":""fuel""}" berlin;atm;312395890;52.498131;13.295550;"{""name"":""Commerzbank : Berlin-Halensee"",""amenity"":""bank""}" berlin;atm;312712424;52.475548;13.290664;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;313114447;52.548157;13.413111;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;313144189;52.525425;13.445770;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;313162501;52.458866;13.322881;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;313220249;52.465221;13.328124;"{""amenity"":""atm""}" berlin;atm;313233252;52.504181;13.334998;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;313584167;52.457832;13.290829;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;313585214;52.458191;13.290987;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;315234037;52.441360;13.386580;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;315816388;52.484970;13.354534;"{""name"":""Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;315816595;52.485344;13.355238;"{""name"":""Targobank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;315817800;52.486076;13.355684;"{""name"":""Commerzbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;315819123;52.486111;13.356744;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;315819704;52.486263;13.357086;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;315820763;52.487030;13.356924;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;316772344;52.589325;13.284296;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;316778068;52.469364;13.442383;"{""name"":""S+U Neuk\u00f6lln"",""wheelchair"":""yes""}" berlin;atm;318802659;52.540802;13.413071;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;319229036;52.432259;13.535718;"{""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;319546970;52.536167;13.274767;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;319547063;52.536846;13.275040;"{""name"":""Deutsche Post AG, Filiale Siemensstadt"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;320921437;52.524307;13.420569;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;322565365;52.521713;13.410995;"{""name"":""Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;323203892;52.511250;13.403752;"{""name"":""U Spittelmarkt"",""wheelchair"":""yes""}" berlin;atm;323597684;52.428574;13.328587;"{""name"":""Commerzbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;323597687;52.428165;13.327009;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;323602520;52.427841;13.327620;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;323602523;52.427208;13.326348;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;324365784;52.517735;13.440148;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;330140989;52.498878;13.420093;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;331515778;52.524117;13.382769;"{""name"":""GLS Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;332966330;52.551792;13.382977;"{""name"":""Volksbank"",""amenity"":""bank""}" berlin;atm;332967732;52.552647;13.381661;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;334727707;52.501400;13.431232;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;340324654;52.497444;13.522386;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;344873868;52.524601;13.481174;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;345208874;52.472672;13.320673;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;345351950;52.522980;13.483790;"{""name"":""Packstation 348"",""amenity"":""vending_machine""}" berlin;atm;345546409;52.458511;13.576394;"{""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;346135245;52.539795;13.370961;"{""name"":""Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;347422943;52.442116;13.297263;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;355180027;52.434952;13.259526;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;356948859;52.529949;13.328218;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;356949045;52.526432;13.345598;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;359888502;52.523792;13.279809;"{""name"":""Packstation 349"",""amenity"":""vending_machine""}" berlin;atm;366013582;52.526531;13.340117;"{""name"":""Sparkasse Berlin"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;366429802;52.537315;13.604161;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;370131147;52.450581;13.340604;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;370171114;52.527058;13.330302;"{""name"":""Targobank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;370172188;52.526585;13.340657;"{""name"":""Commerzbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;370347889;52.508999;13.499727;"{""name"":""Sparkasse"",""wheelchair"":""no"",""amenity"":""atm""}" berlin;atm;370690336;52.546848;13.412813;"{""name"":""norisbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;370765387;52.501797;13.319322;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;370923632;52.513760;13.521680;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;372353895;52.510185;13.288966;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;372370466;52.498260;13.418401;"{""name"":""Ziraat Bank International AG"",""amenity"":""bank""}" berlin;atm;372370469;52.498592;13.417885;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;375800452;52.514015;13.319610;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;377859025;52.500668;13.343469;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;380498339;52.522198;13.379905;"{""name"":""BBBank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;382905024;52.522404;13.411538;"{""name"":""Galeria Kaufhof"",""wheelchair"":""yes""}" berlin;atm;393409420;52.497341;13.289872;"{""name"":""Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;401552934;52.498463;13.300417;"{""name"":""Allianz Bank"",""amenity"":""bank""}" berlin;atm;414996118;52.445583;13.505793;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;415791575;52.442669;13.297469;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;416660119;52.511219;13.305096;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;416660120;52.512016;13.305362;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;416660137;52.510159;13.305857;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;416661496;52.509068;13.305764;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;417047724;52.524693;13.335827;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;417302813;52.505592;13.496032;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;419186459;52.535919;13.275555;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;419545762;52.552593;13.381206;"{""name"":""Santander Consumer Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;419545764;52.552322;13.381884;"{""name"":""Deutsche Bank"",""amenity"":""bank""}" berlin;atm;420448903;52.486843;13.423728;"{""name"":""Postbank-Finanzcenter"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;421299910;52.386501;13.402883;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;421299912;52.386513;13.401630;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;421299917;52.386848;13.399498;"{""name"":""Deutsche Bank"",""amenity"":""bank""}" berlin;atm;426581071;52.549683;13.386545;"{""name"":""Targobank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;430643794;52.610275;13.249073;"{""name"":""Berliner Sparkasse"",""amenity"":""bank""}" berlin;atm;433597862;52.394985;13.533943;"{""name"":""Aral Tankstelle"",""amenity"":""fuel""}" berlin;atm;434492758;52.537457;13.203313;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;434517788;52.468960;13.430804;"{""name"":""Berliner Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;437514581;52.537052;13.273766;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;440069979;52.510441;13.432816;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;441306019;52.537647;13.203039;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;441734598;52.481628;13.433828;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;442387117;52.460583;13.384535;"{""name"":""Commerzbank AG"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;442394344;52.444855;13.385699;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;443719578;52.536400;13.204433;"{""name"":""Santander"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;444606371;52.497463;13.294651;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;448809594;52.470203;13.441312;"{""name"":""Berliner Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;448810134;52.475391;13.440073;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;448810337;52.480473;13.436115;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;450688374;52.537193;13.203956;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;450930824;52.471088;13.332415;"{""name"":""PSD Bank Berlin Brandenburg eG"",""amenity"":""bank""}" berlin;atm;454206542;52.506153;13.306636;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;459671852;52.580772;13.404073;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;459719397;52.562820;13.329612;"{""name"":""Berliner Commerzbank"",""amenity"":""bank""}" berlin;atm;469293560;52.571609;13.411509;"{""name"":""Dresdner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;472371486;52.536896;13.603658;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;472430734;52.431034;13.456671;"{""name"":""Targobank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;472430735;52.430721;13.455818;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;472514884;52.490860;13.457008;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;474366009;52.520447;13.387302;"{""name"":""S Friedrichstra\u00dfe"",""wheelchair"":""yes""}" berlin;atm;482219170;52.525787;13.303546;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;482470834;52.516785;13.309388;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;488472091;52.496140;13.390214;"{""name"":""Volksbank Berlin"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;500086133;52.476837;13.280328;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;500339585;52.513943;13.474670;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;508423750;52.477509;13.281050;"{""name"":""Dresdner Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;508504964;52.458420;13.578795;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;508657349;52.587891;13.285104;"{""name"":""Targo Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;510622166;52.457962;13.384462;"{""name"":""Targobank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;514784167;52.514000;13.477137;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;515660138;52.491043;13.458091;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;520309544;52.620613;13.355713;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;520518096;52.512356;13.314557;"{""name"":""HypoVereinsbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;520518112;52.506077;13.325650;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;534020277;52.456608;13.510354;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;534893143;52.483345;13.292793;"{""name"":""Weberbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;546677903;52.548527;13.503709;"{""name"":""Postbank"",""amenity"":""bank""}" berlin;atm;549227519;52.548840;13.501269;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;554098383;52.542458;13.489889;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;558383319;52.500305;13.337831;"{""name"":""BB Bank"",""amenity"":""bank""}" berlin;atm;560216416;52.552704;13.433294;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;560436662;52.467304;13.488827;"{""name"":""Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;567449837;52.539944;13.369817;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;579988112;52.536850;13.271196;"{""name"":""Commerzbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;587838001;52.539711;13.296064;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;588552729;52.549576;13.457897;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;588557534;52.548023;13.449884;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;588557537;52.548244;13.451659;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;588557540;52.548882;13.452578;"{""name"":""Deutsche Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;588557541;52.548977;13.453017;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;588557542;52.548828;13.454836;"{""name"":""Santander"",""amenity"":""bank""}" berlin;atm;593781907;52.435604;13.344262;"{""name"":""Berliner Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;593781955;52.435822;13.344504;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;610317477;52.386791;13.403928;"{""name"":""Dresdner Bank"",""amenity"":""bank""}" berlin;atm;612598775;52.422409;13.371616;"{""amenity"":""bank""}" berlin;atm;616064661;52.573818;13.358826;"{""name"":""Berliner Commerzbank"",""amenity"":""bank""}" berlin;atm;635020545;52.479149;13.286275;"{""name"":""Postbank Finanzcenter"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;636903600;52.476395;13.288935;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;643073980;52.528111;13.539196;"{""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;650415651;52.464127;13.385296;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;652049349;52.424667;13.435983;"{""wheelchair"":""limited"",""amenity"":""post_office""}" berlin;atm;652431953;52.429790;13.455844;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;652431954;52.430031;13.457190;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;652724913;52.475040;13.291063;"{""name"":""Berliner Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;652724916;52.474266;13.294904;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;658143011;52.536919;13.267884;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;659034096;52.423260;13.371684;"{""name"":""Berliner Sparkasse"",""amenity"":""bank""}" berlin;atm;660065068;52.414722;13.400621;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;660065069;52.414951;13.400514;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;664244051;52.474300;13.293324;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;666388886;52.490829;13.312904;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;667211335;52.513142;13.265599;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;667211363;52.512924;13.266881;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;667211400;52.517189;13.261322;"{""name"":""Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;678417671;52.457256;13.578424;"{""name"":""Berliner Volksbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;678417681;52.458347;13.579368;"{""name"":""Targo Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;689563377;52.457298;13.321779;"{""name"":""Santander"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;691484782;52.471336;13.334805;"{""name"":""Commerzbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;700080659;52.505260;13.341641;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;701065511;52.420887;13.491401;"{""name"":""Berliner Sparkasse"",""amenity"":""bank""}" berlin;atm;701070442;52.418476;13.496902;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;704002941;52.485317;13.331507;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;704913880;52.489777;13.340248;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;704913888;52.488602;13.341794;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;710904931;52.513638;13.475423;"{""name"":""U Frankfurter Allee"",""wheelchair"":""yes""}" berlin;atm;716601043;52.492294;13.389295;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;722560308;52.442211;13.686160;"{""name"":""Volksbank"",""amenity"":""bank""}" berlin;atm;731948149;52.502571;13.364922;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;753090670;52.493801;13.387840;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;759796953;52.497456;13.362204;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;765566782;52.432297;13.258733;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;766875181;52.436321;13.543994;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;769360158;52.506702;13.392823;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;773267657;52.554058;13.414260;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;775814260;52.593475;13.333721;"{""name"":""Berliner Volksbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;778963476;52.456482;13.510763;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;790502660;52.532452;13.420669;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;808391024;52.566299;13.519832;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;832549975;52.565365;13.363811;"{""name"":""Sparkasse"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;837792490;52.606781;13.325188;"{""name"":""Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;845268870;52.437496;13.546826;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;847229074;52.631912;13.287653;"{""name"":""Volksbank Berlin"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;848507629;52.499588;13.418280;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;876978848;52.439480;13.215183;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;908158440;52.503536;13.340033;"{""name"":""Weberbank"",""amenity"":""bank""}" berlin;atm;922413798;52.418915;13.157288;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;942943675;52.504902;13.331769;"{""name"":""Postbank"",""amenity"":""bank""}" berlin;atm;955240450;52.486439;13.345391;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;967210721;52.501350;13.343884;"{""name"":""Postbank Finanzcenter"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;987804394;52.513496;13.474576;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;1030067022;52.534855;13.497045;"{""name"":""Norisbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1080828707;52.432270;13.259282;"{""name"":""Berliner Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1082670211;52.435932;13.261392;"{""name"":""HypoVereinsbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1082679886;52.433323;13.259958;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1094536340;52.596996;13.355132;"{""name"":""Targobank"",""amenity"":""bank""}" berlin;atm;1110318360;52.436356;13.261638;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1112151826;52.513466;13.474864;"{""name"":""Targobank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1122054218;52.466297;13.330314;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1147145754;52.540688;13.411692;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1161567840;52.533554;13.398868;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;1170625356;52.464405;13.339260;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1187944219;52.508484;13.450323;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1190101809;52.482311;13.433543;"{""name"":""Berliner Volksbank"",""amenity"":""bank""}" berlin;atm;1191109064;52.633533;13.290135;"{""name"":""Commerzbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1194597915;52.516945;13.307289;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1216381464;52.492306;13.422865;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1223476582;52.525612;13.196613;"{""name"":""Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1227875253;52.492512;13.387864;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;1234641201;52.456429;13.577336;"{""name"":""Sparda-Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1234641393;52.456348;13.577281;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1238736417;52.438007;13.231312;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;1242666930;52.549694;13.352966;"{""name"":""Targobank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1244922921;52.548641;13.355580;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1251071269;52.511452;13.416906;"{""name"":""Postbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1256839558;52.501144;13.319215;"{""name"":""Postbank Finanzcenter"",""amenity"":""bank""}" berlin;atm;1279778696;52.589993;13.285454;"{""name"":""Berliner Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1289073139;52.546711;13.358064;"{""name"":""I\u015fbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1289165739;52.508629;13.375189;"{""name"":""Deutsche Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1315650085;52.492138;13.386980;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1347625713;52.635681;13.493935;"{""name"":""Postbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1365431660;52.541828;13.236449;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1370144820;52.515213;13.468615;"{""name"":""Post, Postbank"",""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;1389419227;52.529961;13.403406;"{""name"":""Postbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1389419268;52.529663;13.399960;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;1391579971;52.457821;13.320033;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1391580007;52.457844;13.320138;"{""name"":""Santander"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1393837949;52.429089;13.453021;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1434229140;52.488808;13.340794;"{""name"":""Berliner Bank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1447229319;52.446674;13.384612;"{""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1457030834;52.514526;13.485762;"{""name"":""Sparda-Bank, Berlin Lichtenberg"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1459250154;52.543037;13.546106;"{""name"":""Berliner Bank"",""amenity"":""bank""}" berlin;atm;1459255905;52.544746;13.549851;"{""name"":""Volksbank Berlin"",""amenity"":""bank""}" berlin;atm;1482547497;52.466469;13.488390;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1498939785;52.570332;13.360949;"{""name"":""U Residenzstra\u00dfe"",""wheelchair"":""limited""}" berlin;atm;1498939809;52.529736;13.401261;"{""name"":""U Rosenthaler Platz"",""wheelchair"":""yes""}" berlin;atm;1506174408;52.458523;13.576300;"{""name"":""Postbank"",""amenity"":""bank""}" berlin;atm;1531989580;52.444653;13.573787;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1545967504;52.548367;13.450526;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1578318669;52.631969;13.289719;"{""name"":""Deutsche Bank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1596668993;52.465511;13.328727;"{""operator"":""Postbank""}" berlin;atm;1641970535;52.460613;13.385056;"{""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1659884041;52.548122;13.356469;"{""name"":""Santander"",""amenity"":""bank""}" berlin;atm;1702362922;52.498234;13.362490;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1702362924;52.498123;13.361828;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1710046437;52.485874;13.425747;"{""name"":""HypoVereinsbank"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1776499508;52.420467;13.493279;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1791395177;52.454430;13.576375;"{""name"":""Deutsche Bank"",""amenity"":""bank""}" berlin;atm;1819283270;52.510330;13.277586;"{""name"":""Postbank"",""amenity"":""bank""}" berlin;atm;1819929366;52.519630;13.403229;"{""amenity"":""atm""}" berlin;atm;1827452357;52.454853;13.144256;"{""amenity"":""bank""}" berlin;atm;1845158183;52.570232;13.404618;"{""name"":""Berliner Sparkasse"",""wheelchair"":""limited"",""amenity"":""bank""}" berlin;atm;1849636763;52.585594;13.367182;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1870419335;52.497173;13.353878;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1882066905;52.500904;13.313517;"{""name"":""Commerzbank"",""amenity"":""bank""}" berlin;atm;1882066911;52.500423;13.313506;"{""name"":""Deutsche Bank"",""wheelchair"":""unknown"",""amenity"":""bank""}" berlin;atm;1882209707;52.499584;13.319921;"{""wheelchair"":""yes"",""amenity"":""post_office""}" berlin;atm;1882613744;52.503475;13.335115;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1882697986;52.502270;13.342107;"{""name"":""Deutsche Bank AG"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1882698010;52.502892;13.340512;"{""name"":""Santander Consumer Bank"",""amenity"":""bank""}" berlin;atm;1905988818;52.419399;13.160014;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1905988843;52.419025;13.157809;"{""name"":""Commerzbank"",""wheelchair"":""no"",""amenity"":""bank""}" berlin;atm;1905988881;52.419605;13.157579;"{""name"":""Berliner Volksbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1915389761;52.516705;13.308058;"{""name"":""Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;1979796731;52.437012;13.545392;"{""name"":""Unicredit"",""amenity"":""bank""}" berlin;atm;2053563870;52.493179;13.388340;"{""name"":""Commerzbank"",""wheelchair"":""yes"",""amenity"":""bank""}" berlin;atm;2088402712;52.501781;13.342964;"{""name"":""U Wittenbergplatz"",""wheelchair"":""limited""}" berlin;atm;2095401149;52.506229;13.332393;"{""name"":""U Zoologischer Garten"",""wheelchair"":""yes""}" berlin;atm;2095900367;52.499695;13.307451;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;2098280288;52.451054;13.341683;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;2132839254;52.524765;13.557296;"{""name"":""Sparkasse"",""amenity"":""bank""}" berlin;atm;2141336746;52.502789;13.338719;"{""name"":""Berliner Bank"",""amenity"":""bank""}" \ No newline at end of file diff --git a/assets/csv/odbl/berlin_cctvs.csv b/assets/csv/odbl/berlin_cctvs.csv new file mode 100644 index 0000000..57f842a --- /dev/null +++ b/assets/csv/odbl/berlin_cctvs.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags berlin;cctv;16541597;52.546440;13.345439;"{""name"":""Aral"",""wheelchair"":""yes"",""amenity"":""fuel"",""man_made"":""surveillance""}" berlin;cctv;30015304;52.457550;13.321604;"{""name"":""Deutsche Bank"",""wheelchair"":""no"",""amenity"":""bank"",""man_made"":""surveillance""}" berlin;cctv;69226035;52.510509;13.395946;"{""name"":""Leipziger Apotheke"",""wheelchair"":""limited"",""amenity"":""pharmacy"",""man_made"":""surveillance""}" berlin;cctv;69226073;52.510403;13.389410;"{""name"":""Sixt"",""wheelchair"":""yes"",""amenity"":""car_rental"",""man_made"":""surveillance""}" berlin;cctv;249075198;52.516060;13.402303;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;249075212;52.515614;13.400957;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;249075213;52.515358;13.401195;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;249075226;52.515438;13.400509;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;249075227;52.515244;13.400689;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;256898645;52.521049;13.413212;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;256898646;52.520851;13.413449;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;260762771;52.515381;13.383318;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;262521810;52.518257;13.380609;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;273418863;52.504097;13.619281;"{""name"":""Agip"",""amenity"":""fuel"",""man_made"":""surveillance""}" berlin;cctv;273418893;52.504265;13.624319;"{""name"":""Total Station"",""amenity"":""fuel"",""man_made"":""surveillance""}" berlin;cctv;276325869;52.543793;13.351513;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;276689626;52.521790;13.377943;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;277065067;52.457397;13.320900;"{""name"":""Berliner Sparkasse"",""wheelchair"":""yes"",""amenity"":""bank"",""man_made"":""surveillance""}" berlin;cctv;277297699;52.511684;13.396478;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;279597020;52.543480;13.359515;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;279972858;52.544586;13.351461;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;283031036;52.515274;13.381639;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;284557960;52.520844;13.409275;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;289773218;52.515251;13.384668;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;297081170;52.515324;13.454330;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;298367106;52.504051;13.441752;"{""note"":""Werbetafel"",""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;304790867;52.531532;13.295905;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;304790916;52.531113;13.298668;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;308725618;52.576897;13.406367;"{""man_made"":""surveillance""}" berlin;cctv;308726377;52.576393;13.406606;"{""man_made"":""surveillance""}" berlin;cctv;312576866;52.573647;13.303517;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;312576868;52.572929;13.303513;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;313145168;52.524773;13.443024;"{""man_made"":""surveillance""}" berlin;cctv;315520343;52.577858;13.302264;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;315520346;52.577824;13.302838;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;315729676;52.577412;13.305812;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;316219272;52.577946;13.302466;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;323228660;52.519802;13.422458;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;340844773;52.510635;13.296989;"{""name"":""Dresdner Bank"",""man_made"":""surveillance""}" berlin;cctv;340844775;52.510746;13.298124;"{""name"":""Deutsche Bank"",""man_made"":""surveillance""}" berlin;cctv;340845331;52.511250;13.305086;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340845333;52.511757;13.305519;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340847734;52.523228;13.415696;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340847737;52.523403;13.415328;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340847739;52.523884;13.414240;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340847742;52.523994;13.413961;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340847744;52.524136;13.413617;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340847746;52.524277;13.413331;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340847749;52.526409;13.415570;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;340848781;52.520931;13.416379;"{""man_made"":""surveillance""}" berlin;cctv;340848783;52.520443;13.416492;"{""man_made"":""surveillance""}" berlin;cctv;340850888;52.530170;13.425706;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850891;52.529869;13.426109;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850893;52.530079;13.426324;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850896;52.530464;13.426796;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850899;52.531391;13.427738;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;340850901;52.532078;13.427437;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;340850906;52.531963;13.428544;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850909;52.532352;13.428077;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850912;52.532433;13.428201;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850917;52.532494;13.428252;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;340850920;52.533054;13.428773;"{""name"":""indoor"",""man_made"":""surveillance""}" berlin;cctv;344327147;52.429356;13.523749;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;364316572;52.513756;13.382400;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;367944590;52.516304;13.386400;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;370506906;52.518646;13.388680;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353890;52.505505;13.281361;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353898;52.507851;13.280432;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353902;52.508087;13.280027;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353906;52.507713;13.280405;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353909;52.507664;13.280505;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353912;52.507549;13.280409;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353916;52.507347;13.280069;"{""name"":""ZOB \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353920;52.507313;13.278990;"{""man_made"":""surveillance"",""operator"":""Au\u00dfenkamera Parkplatz"",""surveillance"":""outdoor""}" berlin;cctv;372353924;52.507607;13.278150;"{""name"":""DKB"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353927;52.507858;13.278370;"{""name"":""DKB"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353931;52.507957;13.278195;"{""name"":""DKB"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353934;52.508099;13.278202;"{""name"":""DKB"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372353937;52.508091;13.277769;"{""name"":""DKB"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372355273;52.512203;13.319265;"{""man_made"":""surveillance"",""operator"":""Polizei Au\u00dfenkamera"",""surveillance"":""outdoor""}" berlin;cctv;372360331;52.538174;13.362020;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;372362482;52.551315;13.431671;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372362492;52.542549;13.425757;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;372366013;52.508759;13.564916;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372370455;52.501308;13.441955;"{""man_made"":""surveillance"",""operator"":""Internet-Cafe"",""surveillance"":""indoor""}" berlin;cctv;372370461;52.497093;13.420940;"{""man_made"":""surveillance"",""operator"":""Casino 21"",""surveillance"":""outdoor""}" berlin;cctv;372378719;52.499641;13.382663;"{""man_made"":""surveillance"",""operator"":""Postbank"",""surveillance"":""outdoor""}" berlin;cctv;372378722;52.499561;13.388561;"{""man_made"":""surveillance"",""operator"":""Willy-Brandt-Haus"",""surveillance"":""outdoor""}" berlin;cctv;372378724;52.499710;13.388383;"{""man_made"":""surveillance"",""operator"":""Willy-Brandt-Haus"",""surveillance"":""outdoor""}" berlin;cctv;372378733;52.500404;13.387815;"{""man_made"":""surveillance"",""operator"":""Willy-Brandt-Haus"",""surveillance"":""outdoor""}" berlin;cctv;372378734;52.501122;13.385368;"{""man_made"":""surveillance"",""operator"":""Deutsche Rentenversicherung"",""surveillance"":""outdoor""}" berlin;cctv;372378737;52.501316;13.385886;"{""man_made"":""surveillance"",""operator"":""Deutsche Rentenversicherung"",""surveillance"":""outdoor""}" berlin;cctv;372378742;52.503494;13.383899;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;372381649;52.519306;13.388204;"{""man_made"":""surveillance"",""operator"":""Butlers"",""surveillance"":""indoor""}" berlin;cctv;372382300;52.514057;13.389672;"{""man_made"":""surveillance"",""operator"":""Friedrichstadt-Passagen"",""surveillance"":""indoor""}" berlin;cctv;372383467;52.500000;13.374218;"{""man_made"":""surveillance"",""operator"":""Bahnhofskamera Gleisdreieck"",""surveillance"":""outdoor""}" berlin;cctv;380458242;52.528473;13.319586;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458243;52.528309;13.319324;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458244;52.527538;13.318932;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458245;52.527485;13.318548;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458246;52.527363;13.318884;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458247;52.527054;13.318753;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458248;52.526947;13.318705;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458249;52.526680;13.318596;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458250;52.526554;13.318542;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458251;52.526379;13.318475;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458252;52.526443;13.317765;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380458259;52.523567;13.330101;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380460134;52.525478;13.340867;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;380465784;52.524467;13.368354;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380465785;52.524445;13.369356;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380465787;52.524864;13.370518;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;380473264;52.530716;13.382989;"{""name"":""Klingelschildkamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473267;52.530895;13.382794;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473269;52.531094;13.382589;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473271;52.531178;13.382487;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473273;52.531258;13.382414;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473275;52.531231;13.382721;"{""man_made"":""surveillance"",""operator"":""Vattenfall"",""surveillance"":""indoor""}" berlin;cctv;380473280;52.531357;13.382357;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473282;52.531380;13.382675;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473285;52.531460;13.382874;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473287;52.531628;13.382873;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473289;52.531582;13.383081;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473291;52.531609;13.383230;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473292;52.531639;13.381904;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473301;52.531693;13.383468;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473302;52.531654;13.383491;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473304;52.531811;13.383760;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473306;52.533188;13.379457;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473308;52.533718;13.378774;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473310;52.533627;13.378467;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473312;52.534077;13.378353;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473315;52.534344;13.378014;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473319;52.534927;13.377273;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473321;52.535339;13.376774;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473325;52.535698;13.376300;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473327;52.536003;13.375944;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473329;52.537464;13.373880;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473335;52.538147;13.371921;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380473339;52.540852;13.368288;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473341;52.540836;13.368362;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473344;52.540798;13.368441;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473347;52.540134;13.369583;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473349;52.539631;13.370379;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473351;52.539539;13.370070;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473353;52.539536;13.369934;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473354;52.539490;13.369499;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473356;52.539322;13.369497;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473359;52.539295;13.369679;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473361;52.539345;13.369182;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473362;52.539143;13.368801;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473363;52.538921;13.368357;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473364;52.538651;13.367919;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473369;52.537720;13.366734;"{""man_made"":""surveillance"",""operator"":""Vattenfall"",""surveillance"":""outdoor""}" berlin;cctv;380473371;52.537697;13.366269;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473372;52.537926;13.365579;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473373;52.538036;13.364649;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473374;52.537861;13.364192;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473375;52.539181;13.364719;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473376;52.539345;13.364909;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473377;52.539467;13.365154;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473379;52.538670;13.363400;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473380;52.538517;13.363053;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473381;52.538399;13.362645;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473382;52.541061;13.367633;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473383;52.539791;13.365915;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380473384;52.538425;13.367482;"{""man_made"":""surveillance"",""operator"":""Bayer Schering Pharma"",""surveillance"":""outdoor""}" berlin;cctv;380475125;52.509483;13.353737;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380475126;52.509521;13.353164;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380475127;52.509506;13.352889;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497959;52.509808;13.375269;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497960;52.509640;13.375207;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497961;52.509586;13.374746;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497974;52.508682;13.372570;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera"",""surveillance"":""outdoor""}" berlin;cctv;380497975;52.508530;13.372949;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Voxstra\u00dfe 5"",""surveillance"":""outdoor""}" berlin;cctv;380497982;52.505741;13.374043;"{""man_made"":""surveillance"",""operator"":""Volksbank"",""surveillance"":""indoor""}" berlin;cctv;380497985;52.506462;13.376771;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Deutsche Bahn"",""surveillance"":""outdoor""}" berlin;cctv;380497989;52.509663;13.380442;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497990;52.509670;13.380597;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497991;52.509670;13.380732;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497992;52.509659;13.381620;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497993;52.509758;13.382074;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497994;52.509766;13.382199;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497995;52.509808;13.382556;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497996;52.509819;13.382889;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497997;52.509789;13.383531;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497998;52.509666;13.383602;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380497999;52.509560;13.383660;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498000;52.510105;13.384515;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498001;52.509609;13.384288;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498002;52.509491;13.384357;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498004;52.509266;13.384477;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498005;52.509014;13.384597;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498006;52.508911;13.384503;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498008;52.508598;13.384666;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498010;52.509033;13.384936;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498012;52.509708;13.386372;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498014;52.509674;13.385872;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498015;52.509453;13.385614;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498017;52.510063;13.388079;"{""name"":""Au\u00dfenkamera der Botschaft von Bulgarien"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498018;52.510075;13.388363;"{""name"":""Au\u00dfenkamera der Botschaft von Bulgarien"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498019;52.510105;13.388780;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498023;52.510746;13.389914;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498024;52.510891;13.390081;"{""man_made"":""surveillance"",""operator"":""Friedrichsstra\u00dfe 61"",""surveillance"":""indoor""}" berlin;cctv;380498025;52.511246;13.389826;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498026;52.512306;13.389739;"{""man_made"":""surveillance"",""operator"":""Stefanel"",""surveillance"":""indoor""}" berlin;cctv;380498027;52.512623;13.389664;"{""man_made"":""surveillance"",""operator"":""H\u0026M Women"",""surveillance"":""indoor""}" berlin;cctv;380498028;52.512787;13.389601;"{""man_made"":""surveillance"",""operator"":""Frankonia"",""surveillance"":""indoor""}" berlin;cctv;380498036;52.515266;13.389473;"{""name"":""Eurochange"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;380498037;52.515293;13.389528;"{""name"":""MontBlanc"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;380498043;52.517300;13.388540;"{""man_made"":""surveillance"",""operator"":""T-Punkt"",""surveillance"":""indoor""}" berlin;cctv;380498044;52.517426;13.388499;"{""man_made"":""surveillance"",""operator"":""Erzgebirge im B\u00fcrgerhaus"",""surveillance"":""indoor""}" berlin;cctv;380498047;52.513954;13.382428;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498051;52.515400;13.381257;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498052;52.515533;13.381157;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498053;52.515591;13.381115;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498054;52.515663;13.381088;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498055;52.515842;13.381053;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498056;52.515690;13.381261;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498057;52.515621;13.381290;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498058;52.514954;13.378604;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498059;52.514900;13.378445;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498065;52.515247;13.377995;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498066;52.515629;13.378066;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498067;52.515598;13.378228;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498068;52.515709;13.378508;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498069;52.515556;13.378508;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498070;52.515701;13.378685;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498071;52.515701;13.378747;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498072;52.515762;13.379224;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498073;52.515766;13.379281;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498074;52.515785;13.379713;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498075;52.516926;13.377700;"{""man_made"":""surveillance"",""operator"":""T-Punkt"",""surveillance"":""indoor""}" berlin;cctv;380498081;52.517761;13.377372;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498082;52.517780;13.377546;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498083;52.517807;13.377941;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498084;52.517822;13.378061;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498085;52.517899;13.377893;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498086;52.517887;13.377778;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498087;52.517994;13.377524;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498088;52.518127;13.377519;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498089;52.518333;13.377567;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Jakob-Kaiser-Haus"",""surveillance"":""outdoor""}" berlin;cctv;380498090;52.517941;13.376667;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498091;52.518013;13.375779;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498092;52.518162;13.375827;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498093;52.518181;13.375409;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498094;52.518471;13.375422;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498095;52.518761;13.375411;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498096;52.519020;13.375481;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498097;52.519123;13.375806;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498098;52.518974;13.375809;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498099;52.519115;13.376478;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498100;52.518936;13.376582;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498101;52.518578;13.376585;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498102;52.518230;13.376606;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498103;52.519573;13.376180;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498104;52.519581;13.376001;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498105;52.519585;13.375884;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498106;52.519688;13.375774;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498107;52.519688;13.375550;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498108;52.519669;13.375462;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498109;52.519611;13.375374;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498110;52.519733;13.375267;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498111;52.519764;13.375147;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498134;52.520451;13.375120;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498135;52.520443;13.375257;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498136;52.520596;13.375384;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498137;52.520435;13.375502;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498138;52.520447;13.375630;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498139;52.520451;13.375769;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498140;52.520596;13.375884;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498142;52.520557;13.376145;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498143;52.520565;13.376736;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498144;52.520554;13.377454;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498145;52.520447;13.377604;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498146;52.520454;13.377754;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498147;52.520458;13.377879;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498148;52.520596;13.378015;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498149;52.520447;13.378138;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498150;52.520454;13.378285;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498151;52.520447;13.378402;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498152;52.520596;13.378525;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498153;52.520447;13.378645;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498154;52.520439;13.378773;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498155;52.520447;13.378909;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498156;52.520596;13.378770;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498157;52.520557;13.379050;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498158;52.520496;13.379050;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498159;52.520657;13.377450;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498163;52.520741;13.378451;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498164;52.520657;13.378459;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498165;52.520741;13.378750;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498173;52.519787;13.378163;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498174;52.519760;13.378362;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498175;52.519814;13.378496;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498176;52.518951;13.377593;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498177;52.519085;13.377705;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498178;52.519039;13.378006;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498179;52.518944;13.378321;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498180;52.518894;13.378780;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498181;52.518829;13.379167;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498182;52.518829;13.379268;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498183;52.518803;13.379520;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498184;52.518631;13.379523;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498185;52.518631;13.379857;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498186;52.518745;13.380438;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498187;52.518543;13.380505;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498188;52.518578;13.380278;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498189;52.518471;13.380316;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498190;52.518353;13.380334;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498191;52.518303;13.380364;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498193;52.517498;13.380423;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera"",""surveillance"":""outdoor""}" berlin;cctv;380498194;52.518070;13.379747;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498195;52.517933;13.379665;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498196;52.518028;13.379342;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498197;52.517902;13.379254;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498198;52.517902;13.379086;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498199;52.517990;13.379006;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498200;52.517872;13.378768;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498201;52.517948;13.378604;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498203;52.517357;13.380451;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498204;52.517303;13.380458;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498206;52.517086;13.380503;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera"",""surveillance"":""outdoor""}" berlin;cctv;380498207;52.517124;13.380777;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498208;52.516983;13.380798;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498209;52.516891;13.380822;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498210;52.516777;13.380841;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498211;52.516685;13.380920;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498212;52.516678;13.380472;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498213;52.516811;13.379583;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498215;52.516888;13.379504;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498216;52.516869;13.379142;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498217;52.516838;13.378749;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498218;52.516693;13.381083;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498219;52.516701;13.381258;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498220;52.516861;13.381586;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498221;52.516766;13.382245;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498222;52.516315;13.381241;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498223;52.516319;13.381572;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498224;52.516331;13.382661;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498225;52.516247;13.383083;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498226;52.516281;13.383689;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498227;52.516434;13.384135;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498230;52.517021;13.382833;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498232;52.518200;13.381932;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498233;52.518257;13.382530;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498236;52.519444;13.384063;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498238;52.519421;13.384650;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498239;52.519520;13.384815;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498240;52.519421;13.384877;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498241;52.519257;13.384874;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498249;52.518532;13.383938;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498250;52.517654;13.383888;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498251;52.517681;13.384086;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498252;52.517719;13.384777;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498259;52.517529;13.385748;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498260;52.517952;13.386682;"{""man_made"":""surveillance"",""operator"":""Klingelschildkameras Haus-Nr. 24"",""surveillance"":""outdoor""}" berlin;cctv;380498261;52.517864;13.386997;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498262;52.517860;13.387131;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498263;52.517883;13.387463;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498264;52.517769;13.387491;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498265;52.517136;13.387573;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498266;52.517124;13.387680;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Unter den Linden 32-34"",""surveillance"":""outdoor""}" berlin;cctv;380498267;52.517132;13.387776;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Unter den Linden 30"",""surveillance"":""outdoor""}" berlin;cctv;380498268;52.517902;13.388128;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Mittelstra\u00dfe 52"",""surveillance"":""outdoor""}" berlin;cctv;380498270;52.517929;13.388819;"{""man_made"":""surveillance"",""operator"":""Esprit"",""surveillance"":""indoor""}" berlin;cctv;380498275;52.518902;13.389936;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498276;52.519012;13.389583;"{""man_made"":""surveillance"",""operator"":""Autohaus"",""surveillance"":""indoor""}" berlin;cctv;380498278;52.519115;13.389879;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498279;52.519642;13.390045;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498281;52.519722;13.390113;"{""man_made"":""surveillance"",""operator"":""Warenanlieferung"",""surveillance"":""outdoor""}" berlin;cctv;380498282;52.519802;13.389829;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498284;52.519840;13.389573;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498286;52.519814;13.389461;"{""man_made"":""surveillance"",""operator"":""Bagel Company"",""surveillance"":""outdoor""}" berlin;cctv;380498288;52.519794;13.389156;"{""man_made"":""surveillance"",""operator"":""Restaurant Vivaldi"",""surveillance"":""outdoor""}" berlin;cctv;380498289;52.519264;13.389026;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498293;52.518856;13.388795;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498295;52.519096;13.388672;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498300;52.519379;13.388590;"{""man_made"":""surveillance"",""operator"":""nh-Hotels"",""surveillance"":""indoor""}" berlin;cctv;380498301;52.519554;13.388573;"{""man_made"":""surveillance"",""operator"":""Fossil"",""surveillance"":""indoor""}" berlin;cctv;380498302;52.519737;13.388597;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498303;52.519958;13.388573;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498304;52.518555;13.387385;"{""man_made"":""surveillance"",""operator"":""Maritim Hotel Au\u00dfenkamera"",""surveillance"":""outdoor""}" berlin;cctv;380498311;52.519642;13.386664;"{""man_made"":""surveillance"",""operator"":""Stauffenbiel"",""surveillance"":""indoor""}" berlin;cctv;380498312;52.519642;13.386395;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;380498313;52.519634;13.386232;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498314;52.519608;13.385877;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498315;52.519585;13.385597;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498317;52.519489;13.385416;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498319;52.520241;13.385972;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498320;52.520435;13.387515;"{""man_made"":""surveillance"",""operator"":""Burger King"",""surveillance"":""indoor""}" berlin;cctv;380498325;52.520561;13.382657;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498326;52.520187;13.381267;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498327;52.520512;13.380853;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498328;52.520451;13.380301;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498329;52.520226;13.380107;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498330;52.520405;13.380081;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498331;52.520454;13.380065;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498332;52.520519;13.380052;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498333;52.520573;13.380054;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498334;52.520641;13.380033;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498335;52.520767;13.380033;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498336;52.520809;13.380033;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498337;52.520863;13.380049;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498338;52.521118;13.379966;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498340;52.522530;13.380081;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Reinhardstra\u00dfe 39"",""surveillance"":""outdoor""}" berlin;cctv;380498343;52.522789;13.381588;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Reinhardstra\u00dfe 29b"",""surveillance"":""outdoor""}" berlin;cctv;380498344;52.522762;13.381871;"{""man_made"":""surveillance"",""operator"":""Sedus"",""surveillance"":""outdoor""}" berlin;cctv;380498347;52.522800;13.382071;"{""man_made"":""surveillance"",""operator"":""Apart-Hotel"",""surveillance"":""outdoor""}" berlin;cctv;380498348;52.522957;13.382539;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Reinhardstra\u00dfe 27b"",""surveillance"":""outdoor""}" berlin;cctv;380498351;52.523106;13.383363;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Reinhardstra\u00dfe 25"",""surveillance"":""outdoor""}" berlin;cctv;380498352;52.523144;13.383531;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Reinhardstra\u00dfe 23"",""surveillance"":""outdoor""}" berlin;cctv;380498361;52.524025;13.384276;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Hausnr. 18"",""surveillance"":""outdoor""}" berlin;cctv;380498364;52.523212;13.387653;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498365;52.523010;13.387682;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;380498366;52.519611;13.392241;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Universit\u00e4tsstra\u00dfe 2-3a"",""surveillance"":""outdoor""}" berlin;cctv;382905004;52.519199;13.402883;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Karl-Liebknecht-Stra\u00dfe 1"",""surveillance"":""indoor""}" berlin;cctv;382905007;52.520035;13.404322;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905008;52.519947;13.403899;"{""man_made"":""surveillance"",""operator"":""City Quartier Dom"",""surveillance"":""indoor""}" berlin;cctv;382905009;52.519978;13.404067;"{""man_made"":""surveillance"",""operator"":""Berlin Shop"",""surveillance"":""indoor""}" berlin;cctv;382905011;52.521236;13.406588;"{""man_made"":""surveillance"",""operator"":""Schlecker""}" berlin;cctv;382905012;52.521969;13.407758;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905013;52.521858;13.407746;"{""man_made"":""surveillance"",""operator"":""T-A Doro"",""surveillance"":""indoor""}" berlin;cctv;382905014;52.522030;13.408272;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905015;52.522110;13.408423;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905018;52.521790;13.411034;"{""man_made"":""surveillance"",""operator"":""vodafone"",""surveillance"":""indoor""}" berlin;cctv;382905025;52.523022;13.411827;"{""man_made"":""surveillance"",""operator"":""D\u00f6ner Inn"",""surveillance"":""indoor""}" berlin;cctv;382905026;52.523205;13.408178;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905029;52.522991;13.403408;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905030;52.522984;13.401861;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera"",""surveillance"":""indoor""}" berlin;cctv;382905118;52.510612;13.396961;"{""man_made"":""surveillance"",""operator"":""Rossmann"",""surveillance"":""indoor""}" berlin;cctv;382905120;52.511608;13.401506;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382905549;52.513252;13.481079;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;382906678;52.505821;13.631381;"{""man_made"":""surveillance"",""operator"":""Ibis Budget"",""surveillance"":""outdoor""}" berlin;cctv;382906679;52.508129;13.633721;"{""man_made"":""surveillance"",""operator"":""OTB"",""surveillance"":""outdoor""}" berlin;cctv;382906680;52.510555;13.635271;"{""man_made"":""surveillance"",""operator"":""Dantz"",""surveillance"":""outdoor""}" berlin;cctv;382909781;52.566025;13.472794;"{""man_made"":""surveillance"",""operator"":""Hornbach"",""surveillance"":""outdoor""}" berlin;cctv;386775266;52.519821;13.389464;"{""man_made"":""surveillance"",""operator"":""Bagel Company"",""surveillance"":""indoor""}" berlin;cctv;386778117;52.517136;13.387987;"{""man_made"":""surveillance"",""operator"":""Klingelschildkamera Unter den Linden 28"",""surveillance"":""outdoor""}" berlin;cctv;386817489;52.515366;13.389576;"{""name"":""Friedrichsstra\u00dfe 80"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;386817492;52.515423;13.389404;"{""name"":""Friedrichsstra\u00dfe 82 Klingelschildkamera"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;386817494;52.515469;13.389542;"{""name"":""Juwelier Wempe"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;389029708;52.508396;13.480145;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752656;52.519646;13.365703;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752657;52.519650;13.366112;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752658;52.519691;13.366393;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752659;52.519573;13.366459;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752660;52.519867;13.366288;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752661;52.519886;13.366155;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752662;52.519547;13.366764;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752663;52.519569;13.370476;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752664;52.519691;13.370447;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752665;52.519718;13.370529;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752666;52.519966;13.370511;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752667;52.520428;13.370511;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752668;52.520573;13.370489;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752669;52.520706;13.370462;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752670;52.520721;13.370263;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752671;52.519897;13.369687;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752672;52.520336;13.369691;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752673;52.521046;13.370010;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752675;52.521397;13.369295;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752681;52.520317;13.367404;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752682;52.520397;13.367762;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752683;52.520596;13.367719;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752684;52.520588;13.367828;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752685;52.520618;13.367896;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752686;52.520615;13.367954;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752687;52.520565;13.366352;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752688;52.520588;13.366019;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752689;52.519562;13.368587;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752690;52.519554;13.368019;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752691;52.519550;13.367458;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752692;52.519550;13.369185;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;390752693;52.519550;13.369934;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;392399884;52.521622;13.414971;"{""name"":""Saturn"",""wheelchair"":""yes"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;400692739;52.520432;13.360594;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692740;52.520187;13.360423;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692741;52.520000;13.360470;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692742;52.520580;13.361371;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692743;52.520584;13.361885;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692744;52.520584;13.362250;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692924;52.520584;13.362744;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692925;52.520611;13.363150;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692926;52.520508;13.363107;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692927;52.520580;13.363621;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692928;52.520584;13.363981;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692929;52.520592;13.364457;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692930;52.520596;13.364759;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692931;52.520599;13.365208;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;400692932;52.520603;13.365615;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444269993;52.510124;13.400995;"{""name"":""Kiosk"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444269997;52.509094;13.399834;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444269998;52.509090;13.400227;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270000;52.507610;13.398226;"{""name"":""Axel-Springer-\u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270001;52.507858;13.397988;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270002;52.502201;13.394833;"{""name"":""J\u00fcdisches Museum \u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270003;52.501881;13.394629;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270005;52.501450;13.394622;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270007;52.501270;13.395184;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;444270679;52.502174;13.394818;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946661;52.527527;13.371932;"{""man_made"":""surveillance"",""operator"":""Conti Park International Nationalgalerie Hamburger Bahnhof"",""surveillance"":""outdoor""}" berlin;cctv;449946668;52.527641;13.371913;"{""man_made"":""surveillance"",""operator"":""Conti Park International Nationalgalerie Hamburger Bahnhof"",""surveillance"":""outdoor""}" berlin;cctv;449946673;52.527706;13.371678;"{""man_made"":""surveillance"",""operator"":""Conti Park International Nationalgalerie Hamburger Bahnhof"",""surveillance"":""outdoor""}" berlin;cctv;449946677;52.528236;13.371013;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946687;52.528339;13.370632;"{""man_made"":""surveillance"",""operator"":""DB Station \u0026 Service"",""surveillance"":""outdoor""}" berlin;cctv;449946700;52.528313;13.371425;"{""man_made"":""surveillance"",""operator"":""Nationalgalerie \/ Hamburger Bahnhof"",""surveillance"":""outdoor""}" berlin;cctv;449946712;52.528805;13.372326;"{""man_made"":""surveillance"",""operator"":""Nationalgalerie \/ Hamburger Bahnhof"",""surveillance"":""outdoor""}" berlin;cctv;449946716;52.527992;13.371985;"{""name"":""Nationalgalerie\/Hamburger Bahnhof"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946718;52.528229;13.372663;"{""name"":""Nationalgalerie\/Hamburger Bahnhof"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946721;52.528076;13.374076;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946724;52.528172;13.373968;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946727;52.528355;13.373796;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946730;52.528622;13.373510;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946732;52.528812;13.373207;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946742;52.528999;13.373014;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946747;52.529140;13.372855;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946752;52.529263;13.372711;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946756;52.529461;13.372509;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946759;52.529716;13.372244;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946762;52.530033;13.371932;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946765;52.530289;13.371675;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946768;52.530556;13.371426;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946773;52.530796;13.371256;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946776;52.530945;13.371145;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946787;52.531075;13.371060;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946790;52.531200;13.371353;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946792;52.531322;13.371624;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946795;52.531395;13.371928;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946816;52.530998;13.372763;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946826;52.530754;13.373594;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946830;52.530388;13.373946;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946844;52.530209;13.374118;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946847;52.530045;13.374297;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946850;52.529854;13.374499;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946854;52.529488;13.374852;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946857;52.529289;13.374934;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946861;52.529125;13.375222;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946866;52.528877;13.375446;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946869;52.528683;13.375624;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946874;52.528458;13.375661;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946877;52.528473;13.375485;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946882;52.528435;13.375375;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946901;52.528381;13.375195;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946904;52.528336;13.375045;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946908;52.528286;13.374901;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946914;52.528252;13.374787;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946919;52.528194;13.374573;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946922;52.528160;13.374428;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946926;52.528107;13.374227;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946965;52.529030;13.379656;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946971;52.528858;13.380003;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946976;52.528767;13.380026;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946981;52.529140;13.380289;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946986;52.528965;13.380369;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946989;52.528797;13.380386;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946991;52.528767;13.380411;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449946996;52.528687;13.380434;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449951809;52.526855;13.385425;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449951812;52.526901;13.385711;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449951816;52.527012;13.386242;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449951818;52.526131;13.387096;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449951822;52.525246;13.387169;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;449970719;52.515293;13.398040;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970724;52.515095;13.398173;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970728;52.514908;13.398291;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970733;52.514679;13.398452;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970738;52.515453;13.398405;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970748;52.515507;13.398651;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970753;52.515427;13.398762;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970756;52.515617;13.399005;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970761;52.515648;13.399256;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970765;52.515686;13.399430;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970768;52.515705;13.399565;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970774;52.515514;13.399816;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970780;52.515373;13.399907;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970793;52.515285;13.399959;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970799;52.515137;13.400070;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970802;52.515106;13.399866;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970805;52.514919;13.400040;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970808;52.514755;13.400097;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970812;52.515125;13.400353;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970833;52.514877;13.400219;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970835;52.512844;13.402122;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970841;52.514050;13.400962;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970846;52.514488;13.400533;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970850;52.514622;13.400411;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970856;52.514755;13.400311;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970861;52.514374;13.400637;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970865;52.514229;13.400782;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970869;52.513535;13.401459;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970879;52.513744;13.401257;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970883;52.513916;13.401084;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970888;52.513386;13.401609;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970891;52.513237;13.401754;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970895;52.513065;13.401930;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449970921;52.516010;13.402699;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449978765;52.508438;13.390101;"{""name"":""Klingelschildkamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982643;52.507542;13.380657;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982650;52.507328;13.382530;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982653;52.507439;13.382519;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982658;52.507397;13.382913;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982663;52.507442;13.383254;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982667;52.507484;13.383514;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982672;52.508060;13.383882;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982677;52.507465;13.383786;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982679;52.507549;13.383961;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449982684;52.507587;13.384440;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;449994499;52.456535;13.321224;"{""man_made"":""surveillance"",""operator"":""Hotel"",""surveillance"":""outdoor""}" berlin;cctv;449994504;52.456425;13.321705;"{""name"":""Edeka Aktiv Markt"",""wheelchair"":""yes"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;449994507;52.456264;13.323022;"{""man_made"":""surveillance"",""operator"":""Tele Cafe"",""surveillance"":""indoor""}" berlin;cctv;449994515;52.455818;13.324375;"{""man_made"":""surveillance"",""operator"":""Spielothek"",""surveillance"":""indoor""}" berlin;cctv;449994519;52.455769;13.324974;"{""man_made"":""surveillance"",""operator"":""Albrechtstra\u00dfe 24 Hauseingang"",""surveillance"":""outdoor""}" berlin;cctv;449994530;52.457848;13.324177;"{""name"":""Wettb\u00fcro"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;449994534;52.457397;13.323557;"{""name"":""Arzthaus Eingangsbereich Hausnr. 38"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;449994549;52.456989;13.322152;"{""man_made"":""surveillance"",""operator"":""Das Brillenatelier"",""surveillance"":""indoor""}" berlin;cctv;450933260;52.532192;13.378127;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;452128649;52.428020;13.513178;"{""man_made"":""surveillance"",""surveillance"":""traffic""}" berlin;cctv;460330651;52.510925;13.399883;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;460330904;52.510593;13.396540;"{""name"":""Rossmann"",""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;460330905;52.510944;13.401563;"{""name"":""Blumenst\u00fcbchen"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;460331942;52.510345;13.388181;"{""man_made"":""surveillance"",""operator"":""nh Hotel"",""surveillance"":""indoor""}" berlin;cctv;460331943;52.510319;13.387725;"{""man_made"":""surveillance"",""operator"":""nh Hotel"",""surveillance"":""indoor""}" berlin;cctv;496156032;52.519733;13.437677;"{""name"":""Koppenstra\u00dfe 44"",""note"":""B\u00fcrgersteig aus Richtung Friedenstra\u00dfe wird \u00fcberwacht. Kamera aktiv"",""man_made"":""surveillance""}" berlin;cctv;496156033;52.519554;13.437390;"{""name"":""Koppenstra\u00dfe 48"",""note"":""B\u00fcrgersteig in beide Richtungen wird \u00fcberwacht. Kamera aktiv."",""man_made"":""surveillance""}" berlin;cctv;506884254;52.503777;13.279685;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884255;52.503857;13.279706;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884256;52.504009;13.279758;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884257;52.504246;13.279832;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884258;52.504330;13.279892;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884259;52.504799;13.280088;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884261;52.505081;13.280258;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884262;52.505188;13.280324;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884263;52.505589;13.280701;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884264;52.505585;13.280865;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884265;52.505577;13.281006;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884266;52.505486;13.281252;"{""name"":""ICC"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;506884268;52.505058;13.281092;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884269;52.504993;13.281183;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884271;52.504910;13.281117;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;506884272;52.504856;13.281157;"{""man_made"":""surveillance"",""operator"":""ICC"",""surveillance"":""outdoor""}" berlin;cctv;506884770;52.500233;13.549136;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;506884772;52.499508;13.546170;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;506884773;52.504768;13.560152;"{""note"":""S-Bahn-\u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;506884775;52.508404;13.564535;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;506885162;52.537968;13.632687;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;506885163;52.538136;13.633610;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;506885164;52.538311;13.633762;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;520279907;52.578945;13.405516;"{""man_made"":""surveillance""}" berlin;cctv;520397023;52.576778;13.405741;"{""man_made"":""surveillance""}" berlin;cctv;520397058;52.576294;13.405952;"{""man_made"":""surveillance""}" berlin;cctv;525965476;52.578568;13.405124;"{""man_made"":""surveillance""}" berlin;cctv;527230519;52.577957;13.405398;"{""man_made"":""surveillance""}" berlin;cctv;527230521;52.578781;13.406011;"{""man_made"":""surveillance""}" berlin;cctv;527230523;52.578041;13.406443;"{""man_made"":""surveillance""}" berlin;cctv;527230525;52.578365;13.406261;"{""man_made"":""surveillance""}" berlin;cctv;530673927;52.498943;13.446351;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;538791890;52.519859;13.390434;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539182141;52.537262;13.373302;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539513557;52.529865;13.378773;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539780801;52.517712;13.415117;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539995736;52.515263;13.405531;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539996294;52.514751;13.405112;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;539996296;52.515137;13.405755;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;540327619;52.489712;13.315018;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;540327621;52.489613;13.315072;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;540327623;52.490002;13.313601;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;540327625;52.489964;13.313464;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;540633244;52.515724;13.401336;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542566872;52.515358;13.382945;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542567079;52.515369;13.383159;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542568875;52.515419;13.383994;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542568886;52.515411;13.383848;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542569160;52.515438;13.384303;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542686117;52.515308;13.385516;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542686677;52.515274;13.385019;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542687367;52.515278;13.385964;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542693281;52.516266;13.389706;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;542895094;52.515030;13.395617;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;546254792;52.515289;13.381891;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;556112103;52.529152;13.324773;"{""man_made"":""surveillance""}" berlin;cctv;556112105;52.528885;13.324788;"{""man_made"":""surveillance""}" berlin;cctv;565601654;52.511269;13.432846;"{""man_made"":""surveillance""}" berlin;cctv;566376499;52.509899;13.436526;"{""man_made"":""surveillance""}" berlin;cctv;568078031;52.529060;13.448694;"{""man_made"":""surveillance""}" berlin;cctv;568082771;52.509567;13.434548;"{""man_made"":""surveillance""}" berlin;cctv;595515059;52.506714;13.359105;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515060;52.506779;13.358862;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515061;52.506824;13.358726;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515062;52.507343;13.359008;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515063;52.507423;13.358989;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515064;52.507412;13.359180;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515065;52.507797;13.359212;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515066;52.507950;13.359303;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515067;52.508301;13.359300;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515068;52.508335;13.359144;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515069;52.508610;13.359294;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515070;52.506283;13.360655;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515071;52.506115;13.362016;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515072;52.506092;13.361763;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515073;52.506123;13.361578;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515074;52.506199;13.361241;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515075;52.506256;13.360774;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515076;52.506355;13.362586;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515077;52.506226;13.362521;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515078;52.506065;13.362431;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515079;52.506439;13.359967;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515080;52.506481;13.359890;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515081;52.506622;13.359783;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515082;52.506580;13.359647;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515083;52.506634;13.359381;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515084;52.506416;13.360415;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515085;52.506493;13.360123;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515086;52.507374;13.360071;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515087;52.506618;13.361581;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515088;52.507202;13.361987;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515089;52.507793;13.359394;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515090;52.507835;13.360379;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515091;52.508205;13.359478;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515092;52.508224;13.359705;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515093;52.508236;13.359980;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515094;52.506752;13.362706;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515095;52.506493;13.362654;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515096;52.506889;13.362790;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515097;52.506741;13.362816;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515098;52.507061;13.362855;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515099;52.507160;13.362304;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515100;52.507114;13.362567;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515101;52.506863;13.363544;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515160;52.508118;13.367111;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515161;52.508381;13.367081;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515321;52.509026;13.372715;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515322;52.509224;13.370681;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515352;52.510239;13.376814;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515369;52.512196;13.378001;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515370;52.512222;13.378566;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515371;52.512272;13.378996;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;595515373;52.520416;13.388898;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;670651910;52.408642;13.190861;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;705685428;52.481998;13.347571;"{""man_made"":""surveillance"",""operator"":""Erotik Kino 26"",""surveillance"":""outdoor""}" berlin;cctv;705685429;52.490002;13.339682;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;712753245;52.491768;13.357307;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;717670808;52.517685;13.396374;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;717671054;52.518463;13.396409;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;721749823;52.491810;13.356823;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;724485772;52.452518;13.509177;"{""name"":""Webcam Treptow OT Johannisthal"",""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;725412890;52.519066;13.390074;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;731226386;52.495556;13.333090;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;731226388;52.495491;13.331750;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;731226393;52.496323;13.331410;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;731226395;52.495773;13.331984;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;731910740;52.506115;13.281491;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;733675614;52.507877;13.397068;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;734784882;52.478077;13.330579;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;735308299;52.503738;13.280628;"{""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;807790220;52.430096;13.525265;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;848460158;52.429817;13.530868;"{""man_made"":""surveillance"",""operator"":""Berliner Volksbank"",""surveillance"":""outdoor""}" berlin;cctv;907039100;52.513702;13.414663;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;907039102;52.513924;13.414942;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;907039103;52.513821;13.415253;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;907039121;52.514072;13.415135;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;938213350;52.532738;13.386718;"{""man_made"":""surveillance""}" berlin;cctv;938213378;52.532482;13.387064;"{""man_made"":""surveillance""}" berlin;cctv;938213391;52.532326;13.387280;"{""man_made"":""surveillance""}" berlin;cctv;938213426;52.531845;13.386790;"{""man_made"":""surveillance""}" berlin;cctv;945142028;52.429821;13.530845;"{""man_made"":""surveillance"",""operator"":""Berliner Volksbank"",""surveillance"":""outdoor""}" berlin;cctv;948656148;52.430107;13.498250;"{""man_made"":""surveillance""}" berlin;cctv;1074960911;52.521603;13.378676;"{""note"":""zur Landesvertretung Sachsen-Anhalt geh\u00f6rend"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1074960913;52.521538;13.378849;"{""note"":""zur Landesvertretung Sachsen-Anhalt geh\u00f6rend"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1077168532;52.510380;13.387454;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;1077168598;52.510899;13.386996;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;1077168625;52.506931;13.390690;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;1077168646;52.510952;13.387035;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;1077168719;52.510677;13.387187;"{""man_made"":""surveillance"",""surveillance"":""indoor""}" berlin;cctv;1254467827;52.510479;13.391352;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1254467829;52.510437;13.390622;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1268879160;52.516682;13.442684;"{""name"":""Kamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1268879168;52.516705;13.442423;"{""name"":""Kamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1270475966;52.514523;13.438574;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1288824512;52.509544;13.435392;"{""man_made"":""surveillance""}" berlin;cctv;1293267232;52.545506;13.354760;"{""name"":""\u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1293267259;52.545807;13.355871;"{""name"":""\u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1293267282;52.545834;13.355402;"{""name"":""\u00dcberwachungskamera"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1297298253;52.545223;13.354206;"{""name"":""\u00dcberwachungskamera"",""man_made"":""surveillance""}" berlin;cctv;1299364444;52.544922;13.354620;"{""man_made"":""surveillance""}" berlin;cctv;1299364560;52.545319;13.356556;"{""man_made"":""surveillance""}" berlin;cctv;1359236253;52.535057;13.429456;"{""man_made"":""surveillance"",""surveillance"":""public""}" berlin;cctv;1361220844;52.544018;13.351702;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361220845;52.544758;13.352481;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361220846;52.544838;13.352600;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361565104;52.544106;13.351591;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361565105;52.544216;13.351740;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361565106;52.544453;13.352197;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361565110;52.544949;13.352377;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1361565112;52.545002;13.352258;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1432484185;52.399006;13.579684;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1494501147;52.571194;13.294161;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1494501173;52.571339;13.294349;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040819;52.571041;13.293128;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040820;52.571095;13.292787;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040822;52.571106;13.293436;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040824;52.571163;13.292409;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040825;52.571171;13.293712;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040827;52.571205;13.292146;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040829;52.571262;13.291838;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040832;52.571316;13.291532;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040834;52.571365;13.291244;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040836;52.571419;13.290960;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040838;52.571568;13.290729;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040840;52.571770;13.290501;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040841;52.571964;13.290277;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040842;52.572163;13.290054;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040845;52.572361;13.289828;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040848;52.572552;13.289616;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040849;52.572765;13.289406;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040860;52.572884;13.289703;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040861;52.573002;13.290019;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040862;52.573132;13.290354;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040866;52.573250;13.290667;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040870;52.573364;13.290970;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040873;52.573490;13.291309;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040882;52.573750;13.291872;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040883;52.573898;13.292076;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040884;52.574051;13.292286;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040895;52.574196;13.292488;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040899;52.574345;13.292691;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040903;52.574497;13.292896;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040906;52.574650;13.293115;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040915;52.574776;13.293511;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504040916;52.574902;13.293899;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504465102;52.531506;13.301409;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1504465110;52.531731;13.302412;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1560223376;52.426338;13.529357;"{""man_made"":""surveillance"",""surveillance"":""traffic""}" berlin;cctv;1560224392;52.431587;13.525117;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1560224419;52.431641;13.525298;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1560224442;52.431732;13.525558;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1560224498;52.431919;13.524399;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1576610416;52.429932;13.523400;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1577747257;52.430645;13.526795;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1577915267;52.394295;13.404355;"{""man_made"":""surveillance""}" berlin;cctv;1577915269;52.394234;13.403166;"{""man_made"":""surveillance""}" berlin;cctv;1577915274;52.394257;13.403557;"{""man_made"":""surveillance""}" berlin;cctv;1577915287;52.394314;13.404711;"{""man_made"":""surveillance""}" berlin;cctv;1578130338;52.429401;13.522390;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1579242911;52.432487;13.525101;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1579242914;52.432552;13.525246;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1579242917;52.432568;13.525243;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1581067233;52.554146;13.448495;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1654992413;52.422550;13.529857;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1654992427;52.422642;13.529431;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1654992509;52.423225;13.530143;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1683679801;52.422970;13.527052;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1683679832;52.423103;13.526160;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1700860694;52.439037;13.507545;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1732655814;52.504532;13.336317;"{""name"":""webcam Kurf\u00fcrstendamm"",""man_made"":""surveillance""}" berlin;cctv;1732659619;52.503284;13.467900;"{""name"":""webcam S-Bahnhof Ostkreuz"",""man_made"":""surveillance""}" berlin;cctv;1732680802;52.522182;13.376267;"{""name"":""webcam Spreebogen"",""man_made"":""surveillance"",""surveillance"":""webcam""}" berlin;cctv;1732692642;52.518917;13.376117;"{""name"":""webcam Rechtstagsgeb\u00e4ude"",""man_made"":""surveillance""}" berlin;cctv;1732693440;52.514332;13.379600;"{""name"":""webcam Stelenfeld"",""man_made"":""surveillance""}" berlin;cctv;1732698573;52.592632;13.262333;"{""name"":""webcam Tegeler Segel-Club"",""man_made"":""surveillance""}" berlin;cctv;1733584161;52.531136;13.418005;"{""man_made"":""surveillance""}" berlin;cctv;1746938750;52.531155;13.417938;"{""man_made"":""surveillance""}" berlin;cctv;1772207657;52.518478;13.408036;"{""man_made"":""surveillance"",""operator"":""Rundfunk Berlin-Brandenburg""}" berlin;cctv;1811292041;52.520523;13.390413;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1811293389;52.520584;13.391770;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1813850195;52.501629;13.373488;"{""note"":""wall-mounted dome"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555498;52.521080;13.401878;"{""name"":""Klingel"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555499;52.521168;13.402123;"{""name"":""Klingel"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555500;52.521976;13.400830;"{""name"":""Klingel"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555504;52.521629;13.400755;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555505;52.521633;13.400756;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1814555506;52.521790;13.400791;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1815335440;52.521751;13.401944;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1815335519;52.521729;13.401952;"{""name"":""T\u00fcrklingel"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1815335520;52.522072;13.401798;"{""name"":""T\u00fcrklingel"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1816817801;52.524139;13.411918;"{""man_made"":""surveillance"",""operator"":""VMZ Berlin Betreibergesellschaft mbH"",""surveillance"":""webcam""}" berlin;cctv;1835499524;52.425648;13.541234;"{""man_made"":""surveillance"",""surveillance"":""traffic""}" berlin;cctv;1900713980;52.420956;13.367767;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1933729325;52.431847;13.525750;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1995426955;52.522007;13.376723;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1995426984;52.522026;13.376739;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1995427004;52.522114;13.377310;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1995427073;52.522102;13.377381;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;1995427104;52.521961;13.377607;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;2057304698;52.436752;13.278958;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;2057304701;52.437176;13.280203;"{""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;2086361728;52.491405;13.396714;"{""name"":""Edeka nah und gut"",""man_made"":""surveillance"",""surveillance"":""indoor"",""surveillance_type"":""camera""}" berlin;cctv;2095453487;52.498760;13.446032;"{""name"":""Die Fabrik"",""wheelchair"":""no"",""man_made"":""surveillance"",""surveillance"":""outdoor""}" berlin;cctv;2229535545;52.512043;13.609225;"{""man_made"":""surveillance""}" berlin;cctv;2f2742987cf894bc1c163e18264e13e8;52.455769;13.324974;"{""name"":""Albrechtstra\u00c3\u0178e 24 Doorway"",""ref"":""449994519"",""type"":""outdoor"",""note"":""""}" berlin;cctv;08527e5547c1232872f445f42df730c0;52.522800;13.382071;"{""name"":""Apart-Hotel"",""ref"":""380498347"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c6c6a112dd38120e006fe9e782e11f08;52.507313;13.278990;"{""name"":""Carpark"",""ref"":""372353920"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c972d9ac5896113834c4dbf26295d7ab;52.519814;13.389461;"{""name"":""Bagel Company (food)"",""ref"":""380498286"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f8bdfa7bc47a5ff7bd3e402f73a00b5b;52.500000;13.374218;"{""name"":""Station Cam Gleisdreieck"",""ref"":""372383467"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e9c9be29ab738bf8199e9946ed81b34b;52.538174;13.362020;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""372360331"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5f28e803cce8d59adb918323abb26055;52.540852;13.368288;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473339"",""type"":""outdoor"",""note"":""""}" berlin;cctv;144c5b07bdd72e634467503abf1d9fe2;52.540836;13.368362;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473341"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d8741dcde3d04a54c7be63147307ff89;52.540798;13.368441;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473344"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e6614794e36f238404d00b13eb5425e9;52.540134;13.369583;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473347"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bf4e6eb25bdb1a8d71bf95812a04d868;52.539631;13.370379;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473349"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6eba8e07a5984e6f1ca0e78c6b127fdf;52.539539;13.370070;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473351"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dcb843ec637423fd3d1c35501ce5dc6c;52.539536;13.369934;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473353"",""type"":""outdoor"",""note"":""""}" berlin;cctv;779a2998e628564b5c0cd57f3d858330;52.539490;13.369499;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473354"",""type"":""outdoor"",""note"":""""}" berlin;cctv;27adbf300408f49233095f388df16514;52.539322;13.369497;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473356"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bf59797c9049307ddc15709ba684b1a3;52.539295;13.369679;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473359"",""type"":""outdoor"",""note"":""""}" berlin;cctv;493e6f9177ba6e3b434efbccfdff1afa;52.539345;13.369182;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473361"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9e22242d07d32032f48d1366326ab666;52.539143;13.368801;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473362"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3b6ad440302608720ea46b4dbefe1c82;52.538921;13.368357;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473363"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8f01a49f5c8ebf49248d272f85156823;52.538651;13.367919;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473364"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c4f03c6bbf549945a73ace0a3b19aee3;52.537697;13.366269;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473371"",""type"":""outdoor"",""note"":""""}" berlin;cctv;721e48497f124413a23ad2465e9a88cf;52.537926;13.365579;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473372"",""type"":""outdoor"",""note"":""""}" berlin;cctv;310a794dc78d277134c9bbdfc252566f;52.538036;13.364649;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473373"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9b29b448a079835fee5b56cd916c2148;52.537861;13.364192;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473374"",""type"":""outdoor"",""note"":""""}" berlin;cctv;96261aa24fda7377626dc3c0094d6566;52.539181;13.364719;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473375"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b06ef01012d57165f895fe7f0ac748a8;52.539345;13.364909;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473376"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2b996084faae6115231d3fc952073acf;52.539467;13.365154;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473377"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8c41a0b3f69a569fc6154dd1fbadc409;52.538670;13.363400;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473379"",""type"":""outdoor"",""note"":""""}" berlin;cctv;832a30e8166228b8dac522a25bc97f84;52.538517;13.363053;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473380"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ca66ebe51455f1cc8d892593a96df7e6;52.538399;13.362645;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473381"",""type"":""outdoor"",""note"":""""}" berlin;cctv;37bdc9003a6c1e41e85aaf8d7e232a38;52.541061;13.367633;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473382"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9d66cc3f5c6985b0f13fb1a8450a482a;52.539791;13.365915;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473383"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9ebce7329d692e8e4c48974feb1144d4;52.538425;13.367482;"{""name"":""Bayer Schering Pharma (company)"",""ref"":""380473384"",""type"":""outdoor"",""note"":""""}" berlin;cctv;60182dbe8354896565632f8e2b57a59d;52.497093;13.420940;"{""name"":""Casino 21"",""ref"":""372370461"",""type"":""outdoor"",""note"":""""}" berlin;cctv;70e95a42c19af032529b9d71f671f2e1;52.527527;13.371932;"{""name"":""Conti Park International Nationalgalerie Hamburger Bahnhof (hotel)"",""ref"":""449946661"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4454626566174d8ea87d28b3fcd67516;52.527641;13.371913;"{""name"":""Conti Park International Nationalgalerie Hamburger Bahnhof (hotel)"",""ref"":""449946668"",""type"":""outdoor"",""note"":""""}" berlin;cctv;104cb3aebd8d9369bd0f84f29cb6931b;52.527706;13.371678;"{""name"":""Conti Park International Nationalgalerie Hamburger Bahnhof (hotel)"",""ref"":""449946673"",""type"":""outdoor"",""note"":""""}" berlin;cctv;033e3f51c1dc2802fe452fd0f3600df0;52.528339;13.370632;"{""name"":""DB Station \u0026 Service"",""ref"":""449946687"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aa56ffed2c3fb4269a85d0776e8d56e1;52.501122;13.385368;"{""name"":""Deutsche Rentenversicherung (insurance)"",""ref"":""372378734"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aa750dfc16b689e8acf30093e135a898;52.501316;13.385886;"{""name"":""Deutsche Rentenversicherung (insurance)"",""ref"":""372378737"",""type"":""outdoor"",""note"":""""}" berlin;cctv;76ec2a344f4618ad692320d73f3dd499;52.482018;13.347506;"{""name"":""Erotik Kino 26"",""ref"":""705685428"",""type"":""outdoor"",""note"":""""}" berlin;cctv;713bc8b497a8bacf69a7ce2ab5e1cc6f;52.566025;13.472794;"{""name"":""Hornbach (hardware store)"",""ref"":""382909781"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dc00494f49f8fb93c4c706f9e7319c65;52.456535;13.321224;"{""name"":""Hotel"",""ref"":""449994499"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7566a27fc5384f08fd77845962cb9069;52.503777;13.279685;"{""name"":""ICC (Congress Center)"",""ref"":""506884254"",""type"":""outdoor"",""note"":""""}" berlin;cctv;105bcccc64d3030908cde689b7d08b14;52.503857;13.279706;"{""name"":""ICC (Congress Center)"",""ref"":""506884255"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a4d78ae29d944110b8f2ce7c461530ab;52.504009;13.279758;"{""name"":""ICC (Congress Center)"",""ref"":""506884256"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bbde6f935b283d627cfac7c71239dd3f;52.504246;13.279832;"{""name"":""ICC (Congress Center)"",""ref"":""506884257"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b374e10b8c6262c877246d46a90fd947;52.504330;13.279892;"{""name"":""ICC (Congress Center)"",""ref"":""506884258"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4e1d8cfe69ac8c1b4b5b0efbd3b9b48b;52.504799;13.280088;"{""name"":""ICC (Congress Center)"",""ref"":""506884259"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ff534578797298e4a2fc0c2bbb9e57df;52.505081;13.280258;"{""name"":""ICC (Congress Center)"",""ref"":""506884261"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5b915ac23a9a64e24ea4af17253616f9;52.505188;13.280324;"{""name"":""ICC (Congress Center)"",""ref"":""506884262"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6de477a78e44e5800d5d7d2bef0ac142;52.505589;13.280701;"{""name"":""ICC (Congress Center)"",""ref"":""506884263"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6252d493257ba1059723394423ce11cb;52.505585;13.280865;"{""name"":""ICC (Congress Center)"",""ref"":""506884264"",""type"":""outdoor"",""note"":""""}" berlin;cctv;507ac214af1588f0780d01a1fb20243e;52.505577;13.281006;"{""name"":""ICC (Congress Center)"",""ref"":""506884265"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3b1cf0b9e15ff0d8035f4762d833c8b8;52.505058;13.281092;"{""name"":""ICC (Congress Center)"",""ref"":""506884268"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6cf8d66687b712b2b9fd8d0a52952af6;52.504993;13.281183;"{""name"":""ICC (Congress Center)"",""ref"":""506884269"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9dcf5b82647530a046a8540a22c72bbc;52.504856;13.281157;"{""name"":""ICC (Congress Center)"",""ref"":""506884272"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5ef1b3ac8b72b582adc81f33be9b89a7;52.518555;13.387385;"{""name"":""Maritim Hotel"",""ref"":""380498304"",""type"":""outdoor"",""note"":""""}" berlin;cctv;366f1ce79d873fa49a9340064c72ccb6;52.528313;13.371425;"{""name"":""Nationalgalerie \/ Hamburger Bahnhof (museum)"",""ref"":""449946700"",""type"":""outdoor"",""note"":""""}" berlin;cctv;91cdd747c07f034f4451c949759ed54a;52.528805;13.372326;"{""name"":""Nationalgalerie \/ Hamburger Bahnhof (museum)"",""ref"":""449946712"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5fc4a53dbbeca6ad9856a1424e8a9284;52.512203;13.319265;"{""name"":""Police Station"",""ref"":""372355273"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e7fb7a0a80dffce20725bbaa900585ec;52.499641;13.382663;"{""name"":""Postbank"",""ref"":""372378719"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5d6488291281bb8a75ed95fe83c22094;52.519794;13.389156;"{""name"":""Restaurant Vivaldi (food)"",""ref"":""380498288"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1231200331543ea50a6a41709dcc1f57;52.522762;13.381871;"{""name"":""Sedus (shop)"",""ref"":""380498344"",""type"":""outdoor"",""note"":""""}" berlin;cctv;98bdb9b7942a31a5d3e3ba2022e414e5;52.537720;13.366734;"{""name"":""Vattenfall (shop)"",""ref"":""380473369"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a4014e7c8a21a237c662152803b56a70;52.519722;13.390113;"{""name"":""Warenanlieferung"",""ref"":""380498281"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8dfc258b6f4403164963c73ecbcf6001;52.499561;13.388561;"{""name"":""Willy-Brandt-Haus (administration)"",""ref"":""372378722"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aa4bb0a11f684f1f661936f9d10250ee;52.499710;13.388383;"{""name"":""Willy-Brandt-Haus (administration)"",""ref"":""372378724"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9514a97618ceee5ae327f225b9886836;52.500404;13.387815;"{""name"":""Willy-Brandt-Haus (administration)"",""ref"":""372378733"",""type"":""outdoor"",""note"":""""}" berlin;cctv;72cf141886495a026066b81ec7d7816a;52.546440;13.345439;"{""name"":""Aral (gasoline)"",""ref"":""16541597"",""type"":""outdoor"",""note"":""""}" berlin;cctv;db183f45bcd8c369e0d901fc2375f73c;52.510063;13.388079;"{""name"":""Camera Embassy Bulgaria"",""ref"":""380498017"",""type"":""outdoor"",""note"":""""}" berlin;cctv;33a0db096c0a8ce6024a5e87e1cf94fd;52.510075;13.388363;"{""name"":""Camera Embassy Bulgaria"",""ref"":""380498018"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5305a47ff80dd6e8e1358e72fe301372;52.507610;13.398226;"{""name"":""Axel-Springer-Surveillance Cam"",""ref"":""444270000"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fefa07aa17ee39de8a32d6e86b14977d;52.510944;13.401563;"{""name"":""Blumenst\u00c3_bchen (shop)"",""ref"":""460330905"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b4b9b43cee0e29dedfbd20780ab7ba14;52.523380;13.384020;"{""name"":""Bunker Albrechtstra\u00c3\u0178e 24"",""ref"":""380498359"",""type"":""outdoor"",""note"":""""}" berlin;cctv;64817d4e83338736a575eb0cf1a5e956;52.498760;13.446032;"{""name"":""Die Fabrik (hostel)"",""ref"":""2095453487"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6ad4ef25e785a8be7175349778da56ad;52.507607;13.278150;"{""name"":""DKB (bank)"",""ref"":""372353924"",""type"":""outdoor"",""note"":""""}" berlin;cctv;be8bb4e18463352c027241f6230c51bb;52.507858;13.278370;"{""name"":""DKB (bank)"",""ref"":""372353927"",""type"":""outdoor"",""note"":""""}" berlin;cctv;238b36c164edc26eca109581a790add3;52.507957;13.278195;"{""name"":""DKB (bank)"",""ref"":""372353931"",""type"":""outdoor"",""note"":""""}" berlin;cctv;29ae4f34079795b27d1ff76504725a66;52.508099;13.278202;"{""name"":""DKB (bank)"",""ref"":""372353934"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6e5fd59ae954cfc8ddf2104e86a1ae7b;52.508091;13.277769;"{""name"":""DKB (bank)"",""ref"":""372353937"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bddd96162e8581cdd3879b26c01fc01f;52.505486;13.281252;"{""name"":""ICC (Congress Center)"",""ref"":""506884266"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eb5ec320f44acda0b65dba4d1d5aec1c;52.502201;13.394833;"{""name"":""Jewsih Museum Surveillance Cam"",""ref"":""444270002"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e7d381796d70108154b9b7615d94a86d;52.515182;13.389610;"{""name"":""Juwelier Wempe (shop)"",""ref"":""386817497"",""type"":""outdoor"",""note"":""""}" berlin;cctv;706689f03364ef263aa181090a20b0e7;52.516682;13.442684;"{""name"":""Camera"",""ref"":""1268879160"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aee81e3d8326ec7eb4213389e65370e2;52.516705;13.442423;"{""name"":""Camera"",""ref"":""1268879168"",""type"":""outdoor"",""note"":""""}" berlin;cctv;27c81a3f1065887118770718cfe63bd9;52.510124;13.400995;"{""name"":""Small Shop"",""ref"":""444269993"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d9c906d436117031c182cf21d312399c;52.519733;13.437677;"{""name"":""Koppenstra\u00c3\u0178e 44"",""ref"":""496156032"",""type"":""outdoor"",""note"":""B\u00c3_rgersteig aus Richtung Friedenstra\u00c3\u0178e wird \u00c3_berwacht. Kamera aktiv""}" berlin;cctv;0ff42d5716baa3741b8bf3c80b7960c8;52.519554;13.437390;"{""name"":""Koppenstra\u00c3\u0178e 48"",""ref"":""496156033"",""type"":""outdoor"",""note"":""B\u00c3_rgersteig in beide Richtungen wird \u00c3_berwacht. Kamera aktiv.""}" berlin;cctv;26b7b39a63b927b7627542344f553c07;52.510509;13.395946;"{""name"":""Leipziger Apotheke"",""ref"":""69226035"",""type"":""outdoor"",""note"":""""}" berlin;cctv;846c4259f8d17c4d4d562f07488c2b50;52.531136;13.418005;"{""name"":""Metzer Str. 25"",""ref"":""1733584161"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c03e8341225a4dc0eaef6c32a6cdd06f;52.527992;13.371985;"{""name"":""Nationalgalerie\/Hamburger Bahnhof"",""ref"":""449946716"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d76a0231a5f6d82c94dd18cb3a356b9a;52.528229;13.372663;"{""name"":""Nationalgalerie\/Hamburger Bahnhof"",""ref"":""449946718"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b3699f9aba09d94caf60953703345a99;52.545506;13.354760;"{""name"":""Surveillance Cam"",""ref"":""1293267232"",""type"":""outdoor"",""note"":""""}" berlin;cctv;beeb5afa26719f36fd23ab331d3cb738;52.545807;13.355871;"{""name"":""Surveillance Cam"",""ref"":""1293267259"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0199516ca1c33f433b835aec060716dd;52.545834;13.355402;"{""name"":""Surveillance Cam"",""ref"":""1293267282"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4c9de0e6912c311986f3936e847de737;52.545223;13.354206;"{""name"":""Surveillance Cam"",""ref"":""1297298253"",""type"":""outdoor"",""note"":""""}" berlin;cctv;34c42daadf2e9d766033f13202f2e48b;52.507851;13.280432;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353898"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c51560bcec0a4b26f522d43673cc7686;52.508087;13.280027;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353902"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b4e415861ae05b1606532ada2021c5e8;52.507713;13.280405;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353906"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e59886f942d585058446a5c5644b099a;52.507664;13.280505;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353909"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ee25eeef26466b93207e2e5b555e6edb;52.507549;13.280409;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353912"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fc0c2c83054b7525d16bacb7800e6b40;52.507347;13.280069;"{""name"":""ZOB Surveillance Cam (central bus station)"",""ref"":""372353916"",""type"":""outdoor"",""note"":""""}" berlin;cctv;09313221ace972e21cb901733739f4c9;52.507858;13.397988;"{""name"":""Axel-Springer-Surveillance Cam (publishing house)"",""ref"":""444270001"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0ee9076d43375450629df59e536e373b;52.551315;13.431671;"{""name"":""Fre\u00c3\u0178napf (goods delivery)"",""ref"":""372362482"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eb4d3050553dc77edc430f8b53e7b8bf;52.501881;13.394629;"{""name"":""J\u00c3_disches Museum Surveillance Cam"",""ref"":""444270003"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0a42a17f7d3bd23e445f50a61a3b7cdb;52.501450;13.394622;"{""name"":""J\u00c3_disches Museum Surveillance Cam"",""ref"":""444270005"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1cda16e92c47979ca5b942c609147188;52.501270;13.395184;"{""name"":""J\u00c3_disches Museum Surveillance Cam"",""ref"":""444270007"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3e5dbb436ef26fd55a68157ee24d728c;52.502174;13.394818;"{""name"":""Parkplatz Deutsche Bahn Surveillance Cam"",""ref"":""444270679"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e9fcb97387494d02733eb0fe5196a179;52.503494;13.383899;"{""name"":""Carpark"",""ref"":""372378742"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ab0409462418b315cbd261674fd9aac7;52.519646;13.365703;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752656"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c833b6c8488106e9ce98609dba71db1c;52.519650;13.366112;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752657"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cb55036469a06cb3d90540225222a086;52.519691;13.366393;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752658"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1dc76fedd3879ac905da4f2eda091e54;52.519573;13.366459;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752659"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7e17fa9444b5e1f284bfc35a0539b9b1;52.519867;13.366288;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752660"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2a7beefd1b964909719ab42988f5d274;52.519886;13.366155;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752661"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5b761c0b8e65e32939a13b3675c7624a;52.519547;13.366764;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752662"",""type"":""outdoor"",""note"":""""}" berlin;cctv;51f4bb8436bf89610b753007be9fbb1b;52.519569;13.370476;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752663"",""type"":""outdoor"",""note"":""""}" berlin;cctv;627b03872561687108f50061531dc3b9;52.519691;13.370447;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752664"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9691bdc6c925d36e5e0faf1fd08a92f3;52.519718;13.370529;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752665"",""type"":""outdoor"",""note"":""""}" berlin;cctv;44fe44ddce036f15faf35bf50700cf29;52.519966;13.370511;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752666"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1f06ddd10f06ff119f2cbc74f75a91f7;52.520428;13.370511;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752667"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d4e3234cf6d02cdb4ee333d80d3f99ea;52.520573;13.370489;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752668"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d1331e94758a8bfcc48d6641a6dd1db2;52.520706;13.370462;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752669"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2fe328703e25b5f9905ab1cc5b2b9909;52.520721;13.370263;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752670"",""type"":""outdoor"",""note"":""""}" berlin;cctv;521abe374d9d515606176f72141a8839;52.519897;13.369687;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752671"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3e50f5700c45f8ee7968eb7d8445b720;52.520336;13.369691;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752672"",""type"":""outdoor"",""note"":""""}" berlin;cctv;99c0a2f755667c9a2cf486a34be14474;52.521046;13.370010;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752673"",""type"":""outdoor"",""note"":""""}" berlin;cctv;990432464e060a4e1344314a87590652;52.521397;13.369295;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752675"",""type"":""outdoor"",""note"":""""}" berlin;cctv;60d6c45d24d4f4c8143d5231fa70d910;52.520317;13.367404;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752681"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d18f00a5c2be92e3054617213ba1e4fb;52.520397;13.367762;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752682"",""type"":""outdoor"",""note"":""""}" berlin;cctv;32b4fa520c6d646556c8b3447922daad;52.520596;13.367719;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752683"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ff17b5e9de55993ea52c39fb0e43d70e;52.520588;13.367828;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752684"",""type"":""outdoor"",""note"":""""}" berlin;cctv;25dee8fa869792c32c0a244fbaa81809;52.520618;13.367896;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752685"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f630ba4723a75725fbca575b1c3341cb;52.520615;13.367954;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752686"",""type"":""outdoor"",""note"":""""}" berlin;cctv;63002dea00fa81d72f939526b6e4a2b8;52.520565;13.366352;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752687"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8df54b324bc708c3e5aa176a8c5424f0;52.519562;13.368587;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752689"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8c1d63810ae0598c4ca089674cd1cf85;52.519554;13.368019;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752690"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f6571ff32350e052cbdb037f11e5bcdd;52.519550;13.367458;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752691"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3a934cca2308e554f956158f8fa7db17;52.519550;13.369185;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752692"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ba8cb829ce513d6e4f3b52f8b7692272;52.519550;13.369934;"{""name"":""Surveillance Cam Bundeskanzleramt"",""ref"":""390752693"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8ef363a4fafdb620e0f74ff96bc49fbb;52.520588;13.366019;"{""name"":""Surveillance Cam Kanzlerpark"",""ref"":""390752688"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eacfe85ee57f56d2048b1339a22edc73;52.528076;13.374076;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946721"",""type"":""outdoor"",""note"":""""}" berlin;cctv;31c959ab6aa1fa2cc00199181f925be2;52.528172;13.373968;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946724"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7dc533b3da7d1b823358e784b975f89d;52.528355;13.373796;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946727"",""type"":""outdoor"",""note"":""""}" berlin;cctv;94653604c5065b0d9aa01e4faa160466;52.528622;13.373510;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946730"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bc0d4a09f6949cc4709fc4fe27f33f8b;52.528812;13.373207;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946732"",""type"":""outdoor"",""note"":""""}" berlin;cctv;52fc2a2b26437961fccf1caafce887ac;52.528999;13.373014;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946742"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5b421ab073fb142a57786688524bd95e;52.529140;13.372855;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946747"",""type"":""outdoor"",""note"":""""}" berlin;cctv;289f38462f3d76d3c696c760cfb132a4;52.529263;13.372711;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946752"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8a5d308a86f17831118dbbfe3f2bc9d6;52.529461;13.372509;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946756"",""type"":""outdoor"",""note"":""""}" berlin;cctv;56ebe2a2763bfa2d06547fee314ff203;52.529716;13.372244;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946759"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d08319baebb2249712c4ae825402de94;52.530033;13.371932;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946762"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eea0bea6770f425bd2290c6f745a1963;52.530289;13.371675;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946765"",""type"":""outdoor"",""note"":""""}" berlin;cctv;320375de1227b2215b84ee1ee26a087a;52.530556;13.371426;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946768"",""type"":""outdoor"",""note"":""""}" berlin;cctv;054d7c4258735aace76591b62a1e7714;52.530796;13.371256;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946773"",""type"":""outdoor"",""note"":""""}" berlin;cctv;642af0e14c7bc6aa5785fcbec88f917a;52.530945;13.371145;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946776"",""type"":""outdoor"",""note"":""""}" berlin;cctv;981f92adf1e79aa80c5b51542eb5c29b;52.531075;13.371060;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946787"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c18a3d35260e536df86a415b62d4b8d5;52.531200;13.371353;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946790"",""type"":""outdoor"",""note"":""""}" berlin;cctv;494371a7f7057b656abc5ffc33e34b2d;52.531322;13.371624;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946792"",""type"":""outdoor"",""note"":""""}" berlin;cctv;51d3b7d6e064f63c68b7f6ced4ba8b33;52.531395;13.371928;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946795"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e28b3aa7f6609a5d1ed3a1b532a360fe;52.530998;13.372763;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946816"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a72b4068e8f9e2f55952f6ed86c2bca1;52.530754;13.373594;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946826"",""type"":""outdoor"",""note"":""""}" berlin;cctv;119c4480b9595562ee831fd083e7b38b;52.530388;13.373946;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946830"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a5357a557a325ca2be4b9993acf83f28;52.530209;13.374118;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946844"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a81313e5349dc29f31aadff3ff6b7dcd;52.530045;13.374297;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946847"",""type"":""outdoor"",""note"":""""}" berlin;cctv;06dc897e1d30f7b44b53a6fbddbaff93;52.529854;13.374499;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946850"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fccdaa5d22a233b1be923193800d76a4;52.529488;13.374852;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946854"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c2b23e920d739fe438893556d0360741;52.529289;13.374934;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946857"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3a543fc5e0c0ca2b681b5aa0828c306c;52.529125;13.375222;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946861"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aa12b36c759e09fc5392ab262d2330a2;52.528877;13.375446;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946866"",""type"":""outdoor"",""note"":""""}" berlin;cctv;088eff9c9a52b8cade2aa1ab3db1d068;52.528683;13.375624;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946869"",""type"":""outdoor"",""note"":""""}" berlin;cctv;95007f005f8f3f83cc12c6d90a80c1ec;52.528458;13.375661;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946874"",""type"":""outdoor"",""note"":""""}" berlin;cctv;096cd73b786cd6b8178d104376431d70;52.528473;13.375485;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946877"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1a32b0746d8dfe7258218aedf1162ade;52.528435;13.375375;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946882"",""type"":""outdoor"",""note"":""""}" berlin;cctv;100557067a90ba9d9949ae624af3a0bf;52.528381;13.375195;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946901"",""type"":""outdoor"",""note"":""""}" berlin;cctv;09802529e1b1078fd39f0ea8236a840c;52.528336;13.375045;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946904"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1606fd6fef6b3f9e51b90a7a8be9b589;52.528286;13.374901;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946908"",""type"":""outdoor"",""note"":""""}" berlin;cctv;40842e64b865da1ae280fe2070de747f;52.528252;13.374787;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946914"",""type"":""outdoor"",""note"":""""}" berlin;cctv;089bf65fce041754067bcdb3c3df76b2;52.528194;13.374573;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946919"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1761ae30556912601f990bbeea346281;52.528160;13.374428;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946922"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a5c43fd00c84b23e907748125a10faa9;52.528107;13.374227;"{""name"":""Surveillance Cam Ministerium f\u00c3_r Wirtschaft und Technologie"",""ref"":""449946926"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e9287e3db40f5e9d44c41b3ecba98357;52.520432;13.360594;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692739"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5b7d3f78f43629d752d7aef966343d07;52.520187;13.360423;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692740"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0d30879cc34ae5c48841d58e699a9290;52.520000;13.360470;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692741"",""type"":""outdoor"",""note"":""""}" berlin;cctv;46502bfdd9d9f5e80fb0243c0bd32689;52.520580;13.361371;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692742"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bfbeaa800d9fef9c60ee28898b9a6407;52.520584;13.361885;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692743"",""type"":""outdoor"",""note"":""""}" berlin;cctv;024c647bdfa94c3934e859bd2cc10054;52.520584;13.362250;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692744"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e4525595041f947d46f486c6ab4897c1;52.520584;13.362744;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692924"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ab5b602a2ceb619e3c3e2060aefd6033;52.520611;13.363150;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692925"",""type"":""outdoor"",""note"":""""}" berlin;cctv;50b6649dc35def2cb699eaad775f4639;52.520508;13.363107;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692926"",""type"":""outdoor"",""note"":""""}" berlin;cctv;978daa2fe7f954364519366f82b7b573;52.520580;13.363621;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692927"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dc4cca3f4f9b3c490fe430e65bbb9d55;52.520584;13.363981;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692928"",""type"":""outdoor"",""note"":""""}" berlin;cctv;95d76636cd5d6bc7282b7e82099f039e;52.520592;13.364457;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692929"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c990c90b7d14915ba8e7c51c6f3ec78a;52.520596;13.364759;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692930"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7bb95a49e184cc08aa50a444174b3520;52.520599;13.365208;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692931"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a42bbf18850146d3f23a7b389da781ba;52.520603;13.365615;"{""name"":""Video Surveillance Kanzlerpark"",""ref"":""400692932"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d20884b102360f08010b65e49a508eb2;52.501629;13.373488;"{""name"":""wall-mounted dome"",""ref"":""1813850195"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6d7e08ac3d0144a8b39b82e1e695048d;52.521603;13.378676;"{""name"":""zur Landesvertretung Sachsen-Anhalt geh\u00c3\u00b6rend"",""ref"":""1074960911"",""type"":""outdoor"",""note"":""""}" berlin;cctv;04af436dbf91fee85e84750fc9c53277;52.521538;13.378849;"{""name"":""zur Landesvertretung Sachsen-Anhalt geh\u00c3\u00b6rend"",""ref"":""1074960913"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d053020953a385affe88358edcb9e5eb;52.571041;13.293128;"{""name"":"""",""ref"":""1504040819"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5a369c40ef6761ea888c971dcd1e0f21;52.571095;13.292787;"{""name"":"""",""ref"":""1504040820"",""type"":""outdoor"",""note"":""""}" berlin;cctv;de9b60d4042b60d466134c478f262df3;52.571106;13.293436;"{""name"":"""",""ref"":""1504040822"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9898afce7aceb50fdabeb9a34450dd4f;52.571163;13.292409;"{""name"":"""",""ref"":""1504040824"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dc0fc081fb605721e50b32204855f860;52.571171;13.293712;"{""name"":"""",""ref"":""1504040825"",""type"":""outdoor"",""note"":""""}" berlin;cctv;542c361406582b70d1dfd242bff204df;52.571205;13.292146;"{""name"":"""",""ref"":""1504040827"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f8138d4b6a454f280fd9a29814642be7;52.571262;13.291838;"{""name"":"""",""ref"":""1504040829"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ffcf696cff73ac39c7ce03bdb2252ff6;52.571316;13.291532;"{""name"":"""",""ref"":""1504040832"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c66adcdf2a173d0b3f7c44fed77930a6;52.571365;13.291244;"{""name"":"""",""ref"":""1504040834"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ddb8980a4c4ef790cef9c596b67f96a9;52.571419;13.290960;"{""name"":"""",""ref"":""1504040836"",""type"":""outdoor"",""note"":""""}" berlin;cctv;77daa8582900d87e50fd1d7f1cf7ac17;52.571568;13.290729;"{""name"":"""",""ref"":""1504040838"",""type"":""outdoor"",""note"":""""}" berlin;cctv;964b61b8e899a00830da2c9144b254e9;52.571770;13.290501;"{""name"":"""",""ref"":""1504040840"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c4ceaa4a854fe159b23eccc9652c08c0;52.571964;13.290277;"{""name"":"""",""ref"":""1504040841"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f906c36b9c6e1b6f301dfe4aa1d6cdc3;52.572163;13.290054;"{""name"":"""",""ref"":""1504040842"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5b8db338f019b9038bd5416bc3ed7962;52.572361;13.289828;"{""name"":"""",""ref"":""1504040845"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1d5e75a4813b513507bc2118bd3ac04f;52.572552;13.289616;"{""name"":"""",""ref"":""1504040848"",""type"":""outdoor"",""note"":""""}" berlin;cctv;403e3922f0296344c6ba33d82affa665;52.572765;13.289406;"{""name"":"""",""ref"":""1504040849"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c4f99d8682b0bcfe5d0ac395e9bfaef6;52.572884;13.289703;"{""name"":"""",""ref"":""1504040860"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ad32c36617536b13e8e7c0ce58bc9061;52.573002;13.290019;"{""name"":"""",""ref"":""1504040861"",""type"":""outdoor"",""note"":""""}" berlin;cctv;06cb88fa77ef47db75b71cf7082b054d;52.573132;13.290354;"{""name"":"""",""ref"":""1504040862"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7511beef962e0feb7bc0cd5b571dbcc8;52.573250;13.290667;"{""name"":"""",""ref"":""1504040866"",""type"":""outdoor"",""note"":""""}" berlin;cctv;510b040f267918f2583ce831022826b6;52.573364;13.290970;"{""name"":"""",""ref"":""1504040870"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2dd16fcdd6d696ad6bc0450af182e08f;52.573490;13.291309;"{""name"":"""",""ref"":""1504040873"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6902d172f5d00f9eb5242133f8f8bd4a;52.573750;13.291872;"{""name"":"""",""ref"":""1504040882"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5f42c28699782d5eea8a356019716f56;52.573898;13.292076;"{""name"":"""",""ref"":""1504040883"",""type"":""outdoor"",""note"":""""}" berlin;cctv;05295a87b8c1110b2d1060b81b6606aa;52.574051;13.292286;"{""name"":"""",""ref"":""1504040884"",""type"":""outdoor"",""note"":""""}" berlin;cctv;81857b2102571dab232ec28d8cd3a8c5;52.574196;13.292488;"{""name"":"""",""ref"":""1504040895"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7a6fa7e94d6e642c213cd5993691b269;52.574345;13.292691;"{""name"":"""",""ref"":""1504040899"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1dee441b0368d5f424ba672f9ac93110;52.574497;13.292896;"{""name"":"""",""ref"":""1504040903"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6ac8ac412165cf7a6ebb31829232ce28;52.574650;13.293115;"{""name"":"""",""ref"":""1504040906"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5ac4d5c460615b04999c23594d3a945d;52.574776;13.293511;"{""name"":"""",""ref"":""1504040915"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ebb7ba89da2128c404e6c573c0dcc68d;52.574902;13.293899;"{""name"":"""",""ref"":""1504040916"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8f53dc564b0dac667e998cc5248c9462;52.532078;13.427437;"{""name"":"""",""ref"":""340850901"",""type"":""outdoor"",""note"":""""}" berlin;cctv;55f921b7d5612c6fc58a062d46c81fa6;52.520523;13.390413;"{""name"":"""",""ref"":""1811292041"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1caa8edff7bf838df1078d7d7923a89d;52.521751;13.401944;"{""name"":"""",""ref"":""1815335440"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9312c08512e85f8f02a2ba6adb5e7fd0;52.520584;13.391770;"{""name"":"""",""ref"":""1811293389"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0f432e9ec96ced0a0d47bf24eadeb170;52.517712;13.415117;"{""name"":"""",""ref"":""539780801"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ffdfb3a5d1b08486bfc42d360f6eaf00;52.513702;13.414663;"{""name"":"""",""ref"":""907039100"",""type"":""outdoor"",""note"":""""}" berlin;cctv;08e19916db0877e8f14e6a3b79e318bf;52.513924;13.414942;"{""name"":"""",""ref"":""907039102"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5c16de251151858cd60eb7fb368244c2;52.513821;13.415253;"{""name"":"""",""ref"":""907039103"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b21aaf5eda1d505785de98adfb6c225b;52.514072;13.415135;"{""name"":"""",""ref"":""907039121"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5a437733b47175153ef80001922d7e6b;52.516060;13.402303;"{""name"":"""",""ref"":""249075198"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6da73631fdeacabb090253556e2f3cfb;52.515614;13.400957;"{""name"":"""",""ref"":""249075212"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bed1225bd917d23cbc6117448dcc06dd;52.515358;13.401195;"{""name"":"""",""ref"":""249075213"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87c6185f3d9e80b77359ea47128496f8;52.515438;13.400509;"{""name"":"""",""ref"":""249075226"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6bb75c529cd5bf6f98979c387c9a4368;52.515244;13.400689;"{""name"":"""",""ref"":""249075227"",""type"":""outdoor"",""note"":""""}" berlin;cctv;90e56acec7c920696c8cbb3c44b135b5;52.521049;13.413212;"{""name"":"""",""ref"":""256898645"",""type"":""outdoor"",""note"":""""}" berlin;cctv;860c3b62672f390c27b48174fc65d67f;52.520851;13.413449;"{""name"":"""",""ref"":""256898646"",""type"":""outdoor"",""note"":""""}" berlin;cctv;93def2e47a73c2428698b0b47fb09687;52.515366;13.383257;"{""name"":"""",""ref"":""260762771"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1a5e9a55eb9bac4445c7b6b157d7b3eb;52.518284;13.380570;"{""name"":"""",""ref"":""262521810"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3971e38f1fd0161a6b08ca2aa49dd953;52.543793;13.351513;"{""name"":"""",""ref"":""276325869"",""type"":""outdoor"",""note"":""""}" berlin;cctv;56c3c57d7dab34ba3ff2b63da4be83b7;52.521790;13.377943;"{""name"":"""",""ref"":""276689626"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f58acb50051e073a3e6e4f4571279502;52.511684;13.396478;"{""name"":"""",""ref"":""277297699"",""type"":""outdoor"",""note"":""""}" berlin;cctv;145f631ff03078c917628e105e7cae8e;52.543480;13.359515;"{""name"":"""",""ref"":""279597020"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e0cd5cbe0e8eab736f2d2c8119601eda;52.544586;13.351461;"{""name"":"""",""ref"":""279972858"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2c0e6ec2c2036d77637a768444ffc711;52.515251;13.381601;"{""name"":"""",""ref"":""283031036"",""type"":""outdoor"",""note"":""""}" berlin;cctv;51f3185c245f19d2d999c6331c91df16;52.515251;13.384668;"{""name"":"""",""ref"":""289773218"",""type"":""outdoor"",""note"":""""}" berlin;cctv;de10de59701716563a797a27aabe761f;52.515324;13.454330;"{""name"":"""",""ref"":""297081170"",""type"":""outdoor"",""note"":""""}" berlin;cctv;750bad1ceb353103c414286eb8151d2f;52.531532;13.295905;"{""name"":"""",""ref"":""304790867"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9b9a87171ff7dd579fa6409c36463054;52.531113;13.298668;"{""name"":"""",""ref"":""304790916"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d6260a32368795b7c1c4d9915530c47c;52.577858;13.302264;"{""name"":"""",""ref"":""315520343"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e75be9395789fb0fd664534a7490816c;52.577824;13.302838;"{""name"":"""",""ref"":""315520346"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fe37bc86c4e2a5c757d610c9dc28a37c;52.577412;13.305812;"{""name"":"""",""ref"":""315729676"",""type"":""outdoor"",""note"":""""}" berlin;cctv;17810c31bb95952a2227758aa08889f4;52.577946;13.302466;"{""name"":"""",""ref"":""316219272"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f808d197b7976d8113377090fbd58bbe;52.519802;13.422458;"{""name"":"""",""ref"":""323228660"",""type"":""outdoor"",""note"":""""}" berlin;cctv;72713baa2f197d3fdeacfe15548c9d91;52.531391;13.427738;"{""name"":"""",""ref"":""340850899"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a9cf30ebc3fd96be52a1af4ed2095f3a;52.513756;13.382400;"{""name"":"""",""ref"":""364316572"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2867aa7d4b89ca75645413a17e73962b;52.516312;13.386394;"{""name"":"""",""ref"":""367944590"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6e7a6901da6f93e15e18906fea3938ec;52.518646;13.388680;"{""name"":"""",""ref"":""370506906"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f694dacf3e5d51726c648d3414bc19c5;52.505505;13.281361;"{""name"":"""",""ref"":""372353890"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6f4b7920e47ac73798b1bdcb7fd388c8;52.528473;13.319586;"{""name"":"""",""ref"":""380458242"",""type"":""outdoor"",""note"":""""}" berlin;cctv;765610dac91ddc34634edd9dca272bf2;52.528309;13.319324;"{""name"":"""",""ref"":""380458243"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1088f2b6d2fe8fb873a1a3c1275b7486;52.527538;13.318932;"{""name"":"""",""ref"":""380458244"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8163ed2be675ae7e9caf66142d6c55d7;52.527485;13.318548;"{""name"":"""",""ref"":""380458245"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0e269bda5a78d3ab3eb27c5170269716;52.527363;13.318884;"{""name"":"""",""ref"":""380458246"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0c155882da04edf71bbe46fa1e6ff281;52.527054;13.318753;"{""name"":"""",""ref"":""380458247"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6ae91011d924662f3b422f73d2ffd5d4;52.526947;13.318705;"{""name"":"""",""ref"":""380458248"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dbb48600149f2204f479fe4cf02317a1;52.526680;13.318596;"{""name"":"""",""ref"":""380458249"",""type"":""outdoor"",""note"":""""}" berlin;cctv;db2c5e05c747a377f1e4d6ea4d7296be;52.526554;13.318542;"{""name"":"""",""ref"":""380458250"",""type"":""outdoor"",""note"":""""}" berlin;cctv;945ab57ae36f6dde1fb5dc331e48b1ea;52.526379;13.318475;"{""name"":"""",""ref"":""380458251"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fce8b87475775c157a5d360bda8b3596;52.526443;13.317765;"{""name"":"""",""ref"":""380458252"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8ad93cb0bbe807dca56e9047d7c7a659;52.523567;13.330101;"{""name"":"""",""ref"":""380458259"",""type"":""outdoor"",""note"":""""}" berlin;cctv;094ecd38787f6403205652352332c760;52.524467;13.368354;"{""name"":"""",""ref"":""380465784"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0a214448665998a0db202cd6e10fda58;52.524445;13.369356;"{""name"":"""",""ref"":""380465785"",""type"":""outdoor"",""note"":""""}" berlin;cctv;189acbb737bd3b9bd216939529a57812;52.530895;13.382794;"{""name"":"""",""ref"":""380473267"",""type"":""outdoor"",""note"":""""}" berlin;cctv;10d5618732e39dc07d22f4c8a7d72389;52.531094;13.382589;"{""name"":"""",""ref"":""380473269"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0628a4fa4ee49465a3390c6fd1492212;52.531178;13.382487;"{""name"":"""",""ref"":""380473271"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0db077d3f81a237e4eec1001f084e350;52.531258;13.382414;"{""name"":"""",""ref"":""380473273"",""type"":""outdoor"",""note"":""""}" berlin;cctv;115541af79f0512b36106a4d10455ee0;52.531357;13.382357;"{""name"":"""",""ref"":""380473280"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4318a73b95f822dde7ff5daad7165ccf;52.531380;13.382675;"{""name"":"""",""ref"":""380473282"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bcdaf3bf421264f2ac738c5b66b37b75;52.531460;13.382874;"{""name"":"""",""ref"":""380473285"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7f80c8bcfa26c37290891dadc267d185;52.531628;13.382873;"{""name"":"""",""ref"":""380473287"",""type"":""outdoor"",""note"":""""}" berlin;cctv;59eb8316eabb1b311fb5132dd7d6aef1;52.531582;13.383081;"{""name"":"""",""ref"":""380473289"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3c67209eebf774ca6000b1f7396269dc;52.531609;13.383230;"{""name"":"""",""ref"":""380473291"",""type"":""outdoor"",""note"":""""}" berlin;cctv;56953bf4b7232478332a1c484352804d;52.531639;13.381904;"{""name"":"""",""ref"":""380473292"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e05917edd03b47ea7199775a0a4b0a01;52.531693;13.383468;"{""name"":"""",""ref"":""380473301"",""type"":""outdoor"",""note"":""""}" berlin;cctv;715d5d63ae43fc21eef3a265aa1cdda8;52.531654;13.383491;"{""name"":"""",""ref"":""380473302"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2ace55a521cdbde721de5282b2dcf54f;52.531811;13.383760;"{""name"":"""",""ref"":""380473304"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c52eef717af65adb7828fc4628b2ec76;52.533188;13.379457;"{""name"":"""",""ref"":""380473306"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fb5fde9255f70c2ac9274a06b3ec31f0;52.533718;13.378774;"{""name"":"""",""ref"":""380473308"",""type"":""outdoor"",""note"":""""}" berlin;cctv;77315b565cbcbcd8894d9f2e7848badc;52.533627;13.378467;"{""name"":"""",""ref"":""380473310"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f90c6449640e995faab6553f7a26c644;52.534077;13.378353;"{""name"":"""",""ref"":""380473312"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0871ea6270ce8680548129c8fdcd24c6;52.534344;13.378014;"{""name"":"""",""ref"":""380473315"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e66756db8ecc7301f21c141c3aac83b4;52.534927;13.377273;"{""name"":"""",""ref"":""380473319"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ab3dfaffc4e35642878d06bbef6b3d6d;52.535339;13.376774;"{""name"":"""",""ref"":""380473321"",""type"":""outdoor"",""note"":""""}" berlin;cctv;48f3c3ef30267b4a79d1ed87140fe45f;52.535698;13.376300;"{""name"":"""",""ref"":""380473325"",""type"":""outdoor"",""note"":""""}" berlin;cctv;03d803d6679405bc68741ad3eef169b1;52.536003;13.375944;"{""name"":"""",""ref"":""380473327"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f9b98b672e9ff17e6b591451302e2857;52.537464;13.373880;"{""name"":"""",""ref"":""380473329"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0d046888a529e377b2a73d6bdc48b2fb;52.538147;13.371921;"{""name"":"""",""ref"":""380473335"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ad4868bab06360e46691be115f445280;52.509483;13.353737;"{""name"":"""",""ref"":""380475125"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8e1a26ea4f0d5a22a301296a51446a7b;52.509521;13.353164;"{""name"":"""",""ref"":""380475126"",""type"":""outdoor"",""note"":""""}" berlin;cctv;360201f912a7df2cc4d4c0e30a05cf58;52.509506;13.352889;"{""name"":"""",""ref"":""380475127"",""type"":""outdoor"",""note"":""""}" berlin;cctv;627f29bc67a451457442992ce91a7acb;52.509808;13.375269;"{""name"":"""",""ref"":""380497959"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b689eff741b75c30df4a5327e043a824;52.509640;13.375207;"{""name"":"""",""ref"":""380497960"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9e3d3b6ec026083b2ba4902ef09c7166;52.509586;13.374746;"{""name"":"""",""ref"":""380497961"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e5f83b4f9fededa97e752c33a249deaa;52.509663;13.380442;"{""name"":"""",""ref"":""380497989"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c0cd0cc49b8ec102b69d9962f105a6ad;52.509670;13.380597;"{""name"":"""",""ref"":""380497990"",""type"":""outdoor"",""note"":""""}" berlin;cctv;81416f72ed0c339d9757218f1662e1aa;52.509670;13.380732;"{""name"":"""",""ref"":""380497991"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8b227df06c2fb5c695617fea81ad5acf;52.509659;13.381620;"{""name"":"""",""ref"":""380497992"",""type"":""outdoor"",""note"":""""}" berlin;cctv;74ac4447d1a245ec8a09e04d1c9c88cf;52.509758;13.382074;"{""name"":"""",""ref"":""380497993"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fe0ec40776b494a8f5e7cb2f54e6f339;52.509766;13.382199;"{""name"":"""",""ref"":""380497994"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f345b1063014c7f0ea809851b0e6c0df;52.509808;13.382556;"{""name"":"""",""ref"":""380497995"",""type"":""outdoor"",""note"":""""}" berlin;cctv;48e702fe94e58b465ab9bd3ceef37620;52.509819;13.382889;"{""name"":"""",""ref"":""380497996"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3561b94431031dfcfa54f2b508b8c79a;52.509789;13.383531;"{""name"":"""",""ref"":""380497997"",""type"":""outdoor"",""note"":""""}" berlin;cctv;974f760e8da984477df5b37657ca6056;52.509666;13.383602;"{""name"":"""",""ref"":""380497998"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9f5d396e81749f172b8fed507dfd008b;52.509560;13.383660;"{""name"":"""",""ref"":""380497999"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3c65bd9144007a4c9684d74676a294e7;52.510105;13.384515;"{""name"":"""",""ref"":""380498000"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dabec69ab3634d73a8ffc9188373cd05;52.509609;13.384288;"{""name"":"""",""ref"":""380498001"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d179a68ac8ad24e0b86ba7a328257c0d;52.509491;13.384357;"{""name"":"""",""ref"":""380498002"",""type"":""outdoor"",""note"":""""}" berlin;cctv;92a282fac56184d90b65280e18d6257a;52.509266;13.384477;"{""name"":"""",""ref"":""380498004"",""type"":""outdoor"",""note"":""""}" berlin;cctv;28b6f568d6f4813911c7116809d9c852;52.509014;13.384597;"{""name"":"""",""ref"":""380498005"",""type"":""outdoor"",""note"":""""}" berlin;cctv;12ce81c29017759b8faa72adca023561;52.508911;13.384503;"{""name"":"""",""ref"":""380498006"",""type"":""outdoor"",""note"":""""}" berlin;cctv;57f4d0f6f47562ac58e188efc8e0d990;52.508598;13.384666;"{""name"":"""",""ref"":""380498008"",""type"":""outdoor"",""note"":""""}" berlin;cctv;390291aa34c3bf748ee1e709c5b3c0b7;52.509033;13.384936;"{""name"":"""",""ref"":""380498010"",""type"":""outdoor"",""note"":""""}" berlin;cctv;94e54c1d178e876bdbbc2e09876189dd;52.509708;13.386372;"{""name"":"""",""ref"":""380498012"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4a29297f85cc993fa5ac81971ba2d1bc;52.509674;13.385872;"{""name"":"""",""ref"":""380498014"",""type"":""outdoor"",""note"":""""}" berlin;cctv;99debc9199bd4a1c87e8586b23391a9a;52.509453;13.385614;"{""name"":"""",""ref"":""380498015"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a36d9b04369bf0582ea1f7ec73413a21;52.510105;13.388780;"{""name"":"""",""ref"":""380498019"",""type"":""outdoor"",""note"":""""}" berlin;cctv;53f28e03eaaa37385c7ac55fb4f58d2c;52.510746;13.389914;"{""name"":"""",""ref"":""380498023"",""type"":""outdoor"",""note"":""""}" berlin;cctv;33334156b4b6dd47598f8bcb94afd4b8;52.511246;13.389826;"{""name"":"""",""ref"":""380498025"",""type"":""outdoor"",""note"":""""}" berlin;cctv;66939339c62abe61df276dd27e968ceb;52.513344;13.382687;"{""name"":"""",""ref"":""380498045"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7afb12e50c1bb98c3cb84dce99b2ced4;52.513954;13.382428;"{""name"":"""",""ref"":""380498047"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a9843e0988366e1f0fdebca40b211e5d;52.515102;13.380486;"{""name"":"""",""ref"":""380498048"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4f993f692ba52a02263fc7e2aca68ea3;52.515400;13.381257;"{""name"":"""",""ref"":""380498051"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f95549c3cd892feb35bb74ab7cf51608;52.515533;13.381157;"{""name"":"""",""ref"":""380498052"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a53a2cb666607faa54b6f4f0ec70a8a9;52.515591;13.381115;"{""name"":"""",""ref"":""380498053"",""type"":""outdoor"",""note"":""""}" berlin;cctv;08424a24ab8b567c5a81c91666f3f866;52.515663;13.381088;"{""name"":"""",""ref"":""380498054"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2566c84d00c86cef575e7701dc8f4c9b;52.515842;13.381053;"{""name"":"""",""ref"":""380498055"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ae883883587ef6fb96e759c4b74d8e16;52.515690;13.381261;"{""name"":"""",""ref"":""380498056"",""type"":""outdoor"",""note"":""""}" berlin;cctv;32149b7e0202a9a0494dddb6089e40f4;52.515621;13.381290;"{""name"":"""",""ref"":""380498057"",""type"":""outdoor"",""note"":""""}" berlin;cctv;56d464800908a977fae65b332b68a712;52.514954;13.378604;"{""name"":"""",""ref"":""380498058"",""type"":""outdoor"",""note"":""""}" berlin;cctv;21aea38a6fd930c2e72dbf0689888078;52.514900;13.378445;"{""name"":"""",""ref"":""380498059"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4230f4330ea001d6e1c6a040364b24a5;52.515030;13.377891;"{""name"":"""",""ref"":""380498062"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ae954f75f3b66c71b094b42d55dac73c;52.515144;13.377945;"{""name"":"""",""ref"":""380498064"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6889bf3c2b2106fe8439e3dbf8876bd5;52.515247;13.377995;"{""name"":"""",""ref"":""380498065"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6a83d0607632e56af7e1686f353ba9ea;52.515629;13.378066;"{""name"":"""",""ref"":""380498066"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e365507be331c4dae0002e89db569660;52.515598;13.378228;"{""name"":"""",""ref"":""380498067"",""type"":""outdoor"",""note"":""""}" berlin;cctv;912fd39a5541740c43ad9b525012cae1;52.515709;13.378508;"{""name"":"""",""ref"":""380498068"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9ad75325a4282bde7059d4380ea74ed3;52.515556;13.378508;"{""name"":"""",""ref"":""380498069"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4e9ecdcda104ab6fdb64f11d94812077;52.515701;13.378685;"{""name"":"""",""ref"":""380498070"",""type"":""outdoor"",""note"":""""}" berlin;cctv;53a76c2c4ed3c002ce2d1c14840e6f6f;52.515701;13.378747;"{""name"":"""",""ref"":""380498071"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f41a3f1a94b84aa199259b05cd866dbc;52.515762;13.379224;"{""name"":"""",""ref"":""380498072"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ef341df32f4edbe2bcec0509632cc23a;52.515766;13.379281;"{""name"":"""",""ref"":""380498073"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5e22ed6a34ca9711fa464050aad75e6e;52.515785;13.379713;"{""name"":"""",""ref"":""380498074"",""type"":""outdoor"",""note"":""""}" berlin;cctv;46a914ea1d88308789eaf58595a0d857;52.517296;13.377335;"{""name"":"""",""ref"":""380498076"",""type"":""outdoor"",""note"":""""}" berlin;cctv;897466340be08902a00cb47b403ed02a;52.517410;13.377258;"{""name"":"""",""ref"":""380498077"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c03cf922a3c324e0b710520829306eb6;52.517483;13.377183;"{""name"":"""",""ref"":""380498079"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bbd45eb4696f16dbc6dcfe78ea2730a7;52.517570;13.377196;"{""name"":"""",""ref"":""380498080"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cbeb9267a45a783dc164692de8b3325c;52.517761;13.377372;"{""name"":"""",""ref"":""380498081"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0e2424ce40f4099e74706b3f9bd36980;52.517780;13.377546;"{""name"":"""",""ref"":""380498082"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f85d98796d30139b34f3133d0fb4c57a;52.517807;13.377941;"{""name"":"""",""ref"":""380498083"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b908a2c3e6b45c3995f9e45bffb65ad2;52.517822;13.378061;"{""name"":"""",""ref"":""380498084"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3683933400e38ed183f42ee1c0846a25;52.517899;13.377893;"{""name"":"""",""ref"":""380498085"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6f71f3d53a05360ca2b82ab595ad6a6f;52.517887;13.377778;"{""name"":"""",""ref"":""380498086"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0bba76b154b72ed6da6a93df470095ea;52.517994;13.377524;"{""name"":"""",""ref"":""380498087"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8ddfaaa35604fc6e366c3d7384997a41;52.518127;13.377519;"{""name"":"""",""ref"":""380498088"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a71b52d0fd65a128be3549fbeabeb48d;52.517941;13.376667;"{""name"":"""",""ref"":""380498090"",""type"":""outdoor"",""note"":""""}" berlin;cctv;53823800bbfd05937345bca3b04c359f;52.518013;13.375779;"{""name"":"""",""ref"":""380498091"",""type"":""outdoor"",""note"":""""}" berlin;cctv;45ff2a1ac45e1687391f8b9d45de9429;52.518162;13.375827;"{""name"":"""",""ref"":""380498092"",""type"":""outdoor"",""note"":""""}" berlin;cctv;05d16a0ee44b8300667618cf8b54b0f4;52.518181;13.375409;"{""name"":"""",""ref"":""380498093"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7d15b1716fd7a40a9fa5fcf20a7e5d97;52.518471;13.375422;"{""name"":"""",""ref"":""380498094"",""type"":""outdoor"",""note"":""""}" berlin;cctv;27b9e0cbf0f9d0c2ce31608bbb4e2c82;52.518761;13.375411;"{""name"":"""",""ref"":""380498095"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e420426ef43ca9cbf386aa9133508944;52.519020;13.375481;"{""name"":"""",""ref"":""380498096"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d762ce35a567eaaae6737ee9b08f931d;52.519123;13.375806;"{""name"":"""",""ref"":""380498097"",""type"":""outdoor"",""note"":""""}" berlin;cctv;46419a67c0e85468e5988878d907be6b;52.518974;13.375809;"{""name"":"""",""ref"":""380498098"",""type"":""outdoor"",""note"":""""}" berlin;cctv;46fe877cebd4e6bd1e676175ed81b26f;52.519115;13.376478;"{""name"":"""",""ref"":""380498099"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eebe5d11eae685d77f50025301087f46;52.518936;13.376582;"{""name"":"""",""ref"":""380498100"",""type"":""outdoor"",""note"":""""}" berlin;cctv;30626aaeb7130f0975975c0dec412023;52.518578;13.376585;"{""name"":"""",""ref"":""380498101"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8c051640c55afd7a4f954d8a6a41c01e;52.518230;13.376606;"{""name"":"""",""ref"":""380498102"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6ac81d6426ec0844416ce5334ec77c65;52.519573;13.376180;"{""name"":"""",""ref"":""380498103"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5353cfea3b0ce065c382ef40ae215d8f;52.519581;13.376001;"{""name"":"""",""ref"":""380498104"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e732def69a2c585db4cf771c36d6e538;52.519585;13.375884;"{""name"":"""",""ref"":""380498105"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5bc273639dd2aedf370853bf3a973d91;52.519688;13.375774;"{""name"":"""",""ref"":""380498106"",""type"":""outdoor"",""note"":""""}" berlin;cctv;78799f5e6201c36b1782032363af97af;52.519688;13.375550;"{""name"":"""",""ref"":""380498107"",""type"":""outdoor"",""note"":""""}" berlin;cctv;04f80073ed09e92b5fd0c6b651feb551;52.519669;13.375462;"{""name"":"""",""ref"":""380498108"",""type"":""outdoor"",""note"":""""}" berlin;cctv;85634c962a8f582fa11a3cd1f5fdf9f4;52.519611;13.375374;"{""name"":"""",""ref"":""380498109"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6c0fd28d9377fc21b71fccd45175e378;52.519733;13.375267;"{""name"":"""",""ref"":""380498110"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9f8e1a60772880220e714cba75e74b75;52.519764;13.375147;"{""name"":"""",""ref"":""380498111"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e2224fccca755d8c52b19ba95a242b61;52.520451;13.375120;"{""name"":"""",""ref"":""380498134"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7fd40cbd5aecfa107073d1a46c66f9c0;52.520443;13.375257;"{""name"":"""",""ref"":""380498135"",""type"":""outdoor"",""note"":""""}" berlin;cctv;eb18b62c6368529e595376e602b4c794;52.520596;13.375384;"{""name"":"""",""ref"":""380498136"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b40f5a6ba506ea5ac33ed97c9c580122;52.520435;13.375502;"{""name"":"""",""ref"":""380498137"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8223dbd77962d12eaf6fcf3ee774488e;52.520447;13.375630;"{""name"":"""",""ref"":""380498138"",""type"":""outdoor"",""note"":""""}" berlin;cctv;de5956515977c1e980eb208762e78a0b;52.520451;13.375769;"{""name"":"""",""ref"":""380498139"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d76ebd13059b3cb2147a16c0abe4b498;52.520596;13.375884;"{""name"":"""",""ref"":""380498140"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fc0f622d4a3a31b45dec11e67b94fd3c;52.520557;13.376145;"{""name"":"""",""ref"":""380498142"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cc4fdf293ce42cd32016a297b155097b;52.520565;13.376736;"{""name"":"""",""ref"":""380498143"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6d18fc36d2d2dd2030b4c1ce3ce6d940;52.520554;13.377454;"{""name"":"""",""ref"":""380498144"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8716cf4b84c7ee4711fc6d69a6ae5c61;52.520447;13.377604;"{""name"":"""",""ref"":""380498145"",""type"":""outdoor"",""note"":""""}" berlin;cctv;845fd1fef18e10edab62e5dfd45ca3ba;52.520454;13.377754;"{""name"":"""",""ref"":""380498146"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9f0976fe0a1015e0561f654e49ff99cf;52.520458;13.377879;"{""name"":"""",""ref"":""380498147"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b424020efc211e60c1e704421b4adeeb;52.520596;13.378015;"{""name"":"""",""ref"":""380498148"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cb108d3a70d1055f005b7ff05e1509cf;52.520447;13.378138;"{""name"":"""",""ref"":""380498149"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b42b9456a3af9a98411152be2779beda;52.520454;13.378285;"{""name"":"""",""ref"":""380498150"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cbec2a5417cf35b97203c7c66d07cfe7;52.520447;13.378402;"{""name"":"""",""ref"":""380498151"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8d0ed254f66eeb9e4d65f424614cf083;52.520596;13.378525;"{""name"":"""",""ref"":""380498152"",""type"":""outdoor"",""note"":""""}" berlin;cctv;90bfd564a0435178c76d134e466237b5;52.520447;13.378645;"{""name"":"""",""ref"":""380498153"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ad0f99ca4e8709aff5c7201785240bd6;52.520439;13.378773;"{""name"":"""",""ref"":""380498154"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ab78ed56c97d550bd58102a26e57d290;52.520447;13.378909;"{""name"":"""",""ref"":""380498155"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87494a0535a73e309dd2dbbf51450365;52.520596;13.378770;"{""name"":"""",""ref"":""380498156"",""type"":""outdoor"",""note"":""""}" berlin;cctv;92a11b11c9619ebe0bef348c5a4e1c65;52.520557;13.379050;"{""name"":"""",""ref"":""380498157"",""type"":""outdoor"",""note"":""""}" berlin;cctv;342bb707a8049a6d94ec7578f8acd101;52.520496;13.379050;"{""name"":"""",""ref"":""380498158"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9c3350113034bc0d775f49943eb3c76a;52.520657;13.377450;"{""name"":"""",""ref"":""380498159"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6084f96eca14faa5f4390a521a24430f;52.520741;13.378451;"{""name"":"""",""ref"":""380498163"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9d2d03c3ff1e9c794908213d08819bf7;52.520657;13.378459;"{""name"":"""",""ref"":""380498164"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a7f97dcb98e97c1d47d0663f4a4255c2;52.520741;13.378750;"{""name"":"""",""ref"":""380498165"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4a1c4b1327462830ce173bf35cade951;52.519787;13.378163;"{""name"":"""",""ref"":""380498173"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bb834434679b33cfe1e977f77355f4a7;52.519760;13.378362;"{""name"":"""",""ref"":""380498174"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1f31efb813501622a55be7d290cf1ff8;52.519814;13.378496;"{""name"":"""",""ref"":""380498175"",""type"":""outdoor"",""note"":""""}" berlin;cctv;247928d0d36314ee30d644e01ab41cc4;52.518951;13.377593;"{""name"":"""",""ref"":""380498176"",""type"":""outdoor"",""note"":""""}" berlin;cctv;383eb0f63664f9939107f763b553e64b;52.519085;13.377705;"{""name"":"""",""ref"":""380498177"",""type"":""outdoor"",""note"":""""}" berlin;cctv;38b1eb906acac4d0f11b3499d42bcbd1;52.519039;13.378006;"{""name"":"""",""ref"":""380498178"",""type"":""outdoor"",""note"":""""}" berlin;cctv;adaf6b1f818669317fbc179563d3b15c;52.518944;13.378321;"{""name"":"""",""ref"":""380498179"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f0428fdf00567ce097042b57b98bf42f;52.518894;13.378780;"{""name"":"""",""ref"":""380498180"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2fcf436bbef87d0fad8f1c5b7b84df6f;52.518829;13.379167;"{""name"":"""",""ref"":""380498181"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e04bda495571e3a0c912855c1f1aaacb;52.518829;13.379268;"{""name"":"""",""ref"":""380498182"",""type"":""outdoor"",""note"":""""}" berlin;cctv;72d8bb4cf8d5066c94446cf991284b3d;52.518803;13.379520;"{""name"":"""",""ref"":""380498183"",""type"":""outdoor"",""note"":""""}" berlin;cctv;43673056811efd58609ceccbd7e6d6a5;52.518631;13.379523;"{""name"":"""",""ref"":""380498184"",""type"":""outdoor"",""note"":""""}" berlin;cctv;090fa5883e4c91d40e9ec6e639db0289;52.518631;13.379857;"{""name"":"""",""ref"":""380498185"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8b22c0964a085cfacd10b77982df23cd;52.518745;13.380438;"{""name"":"""",""ref"":""380498186"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6a8255a2412bb984d13e2911291b464f;52.518543;13.380505;"{""name"":"""",""ref"":""380498187"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4bdd1808dc06f0fb02305cf38538bcbf;52.518578;13.380278;"{""name"":"""",""ref"":""380498188"",""type"":""outdoor"",""note"":""""}" berlin;cctv;12d4675f067baef12831bfac4355596e;52.518471;13.380316;"{""name"":"""",""ref"":""380498189"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0c664b4805b2120ecfeac71584a3f2fd;52.518353;13.380334;"{""name"":"""",""ref"":""380498190"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ea7a406a3ab623ba15bcf718118fdd8d;52.518303;13.380364;"{""name"":"""",""ref"":""380498191"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87b5a9c88775d7199d7495b94c608374;52.518070;13.379747;"{""name"":"""",""ref"":""380498194"",""type"":""outdoor"",""note"":""""}" berlin;cctv;95d52b56eabd6c40f772e0b34969a27c;52.517933;13.379665;"{""name"":"""",""ref"":""380498195"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bd82bc39b6a2860e6bbe907736814a20;52.518028;13.379342;"{""name"":"""",""ref"":""380498196"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8075be76e5edfe661404be1cc8900b64;52.517902;13.379254;"{""name"":"""",""ref"":""380498197"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0b938b0a80179e95c3092cfd3d42ca23;52.517902;13.379086;"{""name"":"""",""ref"":""380498198"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e73b87b07ed398e7f4c19e8a11261cfe;52.517990;13.379006;"{""name"":"""",""ref"":""380498199"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cd0c2db7fd62e1d2669622d6c2d4a89f;52.517872;13.378768;"{""name"":"""",""ref"":""380498200"",""type"":""outdoor"",""note"":""""}" berlin;cctv;98178c2d06fcdddd55ff7f3e299255e2;52.517948;13.378604;"{""name"":"""",""ref"":""380498201"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9d38f8806fffbceac7483deb9f24f34c;52.517853;13.378545;"{""name"":"""",""ref"":""380498202"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c05fdb120f40722bba58295e6193bbe8;52.517357;13.380451;"{""name"":"""",""ref"":""380498203"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3a8ce42aceab9b928c0ba08747efa04e;52.517303;13.380458;"{""name"":"""",""ref"":""380498204"",""type"":""outdoor"",""note"":""""}" berlin;cctv;db63b3c053ca5db67765f92c3b57acf5;52.517124;13.380777;"{""name"":"""",""ref"":""380498207"",""type"":""outdoor"",""note"":""""}" berlin;cctv;98da45f2cf91e5c10a6f4fd7b2df30fd;52.516983;13.380798;"{""name"":"""",""ref"":""380498208"",""type"":""outdoor"",""note"":""""}" berlin;cctv;67645cbb1d6b745f239077b76bfeb87c;52.516891;13.380822;"{""name"":"""",""ref"":""380498209"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cfce5ad7fb72d8e016c8746501bd411d;52.516777;13.380841;"{""name"":"""",""ref"":""380498210"",""type"":""outdoor"",""note"":""""}" berlin;cctv;aadfe7c76fce961d92f725ba640d8924;52.516685;13.380920;"{""name"":"""",""ref"":""380498211"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9f4d37d03f1dfa967af563a45156d04c;52.516678;13.380472;"{""name"":"""",""ref"":""380498212"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c36e348b5e05d7f3c6fc24b7faf5192f;52.516811;13.379583;"{""name"":"""",""ref"":""380498213"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d4698bbc4ad8b69943a6de4da62a63f4;52.516888;13.379504;"{""name"":"""",""ref"":""380498215"",""type"":""outdoor"",""note"":""""}" berlin;cctv;31ba181fa065fd4d89709ef35a849a1b;52.516869;13.379142;"{""name"":"""",""ref"":""380498216"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9a9cb9c3a0c90189e32920236f40fbcf;52.516838;13.378749;"{""name"":"""",""ref"":""380498217"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8d976aa1061897599c26581c8c5c037e;52.516693;13.381083;"{""name"":"""",""ref"":""380498218"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6cb4be40e21fd7884443f745e0b4bb36;52.516701;13.381258;"{""name"":"""",""ref"":""380498219"",""type"":""outdoor"",""note"":""""}" berlin;cctv;801c4b5f56962bb5725b412571ddbcdb;52.516861;13.381586;"{""name"":"""",""ref"":""380498220"",""type"":""outdoor"",""note"":""""}" berlin;cctv;29db1f4a5276850d0812d33de12af358;52.516766;13.382245;"{""name"":"""",""ref"":""380498221"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1ea142784ef9c513cad7559d60148180;52.516315;13.381241;"{""name"":"""",""ref"":""380498222"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d56d0501afc006ef8469199fb6542518;52.516319;13.381572;"{""name"":"""",""ref"":""380498223"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9f984d65b539fe6711774a29965d8012;52.516331;13.382661;"{""name"":"""",""ref"":""380498224"",""type"":""outdoor"",""note"":""""}" berlin;cctv;585cf5fb0d372cb3efa3f8aa7cb3a72f;52.516247;13.383083;"{""name"":"""",""ref"":""380498225"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a8db030e3b3ad475f868bebfd73de063;52.516281;13.383689;"{""name"":"""",""ref"":""380498226"",""type"":""outdoor"",""note"":""""}" berlin;cctv;77902cb1cf538848a1debb22895e0115;52.516434;13.384135;"{""name"":"""",""ref"":""380498227"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0c9fa145784bcedd8f5ec1985b59c47d;52.517059;13.383983;"{""name"":"""",""ref"":""380498229"",""type"":""outdoor"",""note"":""""}" berlin;cctv;70651df66b63f21e9311b72c9b603c4f;52.517021;13.382833;"{""name"":"""",""ref"":""380498230"",""type"":""outdoor"",""note"":""""}" berlin;cctv;96a24e565031f58247749981ac4984bc;52.517254;13.382806;"{""name"":"""",""ref"":""380498231"",""type"":""outdoor"",""note"":""""}" berlin;cctv;34bdc07105a4d7eacb96d8616e800c9a;52.518200;13.381932;"{""name"":"""",""ref"":""380498232"",""type"":""outdoor"",""note"":""""}" berlin;cctv;81d6d3dfe341c772555f6edd5b3793d9;52.518257;13.382530;"{""name"":"""",""ref"":""380498233"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c6c5dc06c0cb2789aaa5f45276f9fa61;52.519444;13.384063;"{""name"":"""",""ref"":""380498236"",""type"":""outdoor"",""note"":""""}" berlin;cctv;06ee3e038cd6e5b9a9fa1865511560bf;52.519421;13.384650;"{""name"":"""",""ref"":""380498238"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1141ab11ce896f44b1104b2a98ef4c29;52.519520;13.384815;"{""name"":"""",""ref"":""380498239"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5e8b17a520ab4b498c0b83a0207e5868;52.519421;13.384877;"{""name"":"""",""ref"":""380498240"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8073fe2977024febb8dac7d5d2a1b364;52.519257;13.384874;"{""name"":"""",""ref"":""380498241"",""type"":""outdoor"",""note"":""""}" berlin;cctv;209cfc26b28724293fd630af69e663f1;52.518532;13.383938;"{""name"":"""",""ref"":""380498249"",""type"":""outdoor"",""note"":""""}" berlin;cctv;116f18b1012160191805b6ebd15a0472;52.517654;13.383888;"{""name"":"""",""ref"":""380498250"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1b7e4f688136006578ae86630629cb32;52.517681;13.384086;"{""name"":"""",""ref"":""380498251"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a2394a9795e40a41ba19b7a1c96ce467;52.517719;13.384777;"{""name"":"""",""ref"":""380498252"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ae7d701f8b8bd8e24f67d450640a846f;52.517742;13.385465;"{""name"":"""",""ref"":""380498253"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a4d916bfed6c29172ea9b5fb265d8493;52.517033;13.385623;"{""name"":"""",""ref"":""380498254"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fdc9fa533d9a0940819756c970175f16;52.516979;13.385572;"{""name"":"""",""ref"":""380498255"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7b870896fe1ed9172ad8aaadc09a162f;52.516930;13.385188;"{""name"":"""",""ref"":""380498256"",""type"":""outdoor"",""note"":""""}" berlin;cctv;24daa6500ca5fd3618b4673771c2ac99;52.516937;13.385014;"{""name"":"""",""ref"":""380498257"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fa01c70319049a41cc1aac517364cb77;52.516933;13.384865;"{""name"":"""",""ref"":""380498258"",""type"":""outdoor"",""note"":""""}" berlin;cctv;90b080217730e42d58d488e64e8ca53d;52.517529;13.385748;"{""name"":"""",""ref"":""380498259"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c3e7f7a7bf5ab4df92759410d9ffd33f;52.517864;13.386997;"{""name"":"""",""ref"":""380498261"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b1377d703d05f4f0519fd012d09a2702;52.517860;13.387131;"{""name"":"""",""ref"":""380498262"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2c7555f9bd370abeae5ea2fea3fd70de;52.517883;13.387463;"{""name"":"""",""ref"":""380498263"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1f106931fa290e73457afd9682e7ea6b;52.517769;13.387491;"{""name"":"""",""ref"":""380498264"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c04e5101ac20063002e5f816089bb317;52.517136;13.387573;"{""name"":"""",""ref"":""380498265"",""type"":""outdoor"",""note"":""""}" berlin;cctv;29acff69e97bc34a68506c59c85d5882;52.518902;13.389936;"{""name"":"""",""ref"":""380498275"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e106fd861fafedf7c05701c195116ac8;52.519115;13.389879;"{""name"":"""",""ref"":""380498278"",""type"":""outdoor"",""note"":""""}" berlin;cctv;314609c61ab5abcf1acb728c3b445f7b;52.519642;13.390045;"{""name"":"""",""ref"":""380498279"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bcbace7cc417567d044792632d895df4;52.519802;13.389829;"{""name"":"""",""ref"":""380498282"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0ac2355a2d2f999c0f313470a1963627;52.519840;13.389573;"{""name"":"""",""ref"":""380498284"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e878357a85c4e45a55601fc3fcb850cc;52.519264;13.389026;"{""name"":"""",""ref"":""380498289"",""type"":""outdoor"",""note"":""""}" berlin;cctv;af5b58105d2d115c3314c0b89c403350;52.518856;13.388795;"{""name"":"""",""ref"":""380498293"",""type"":""outdoor"",""note"":""""}" berlin;cctv;96f7d595c8757e9f249dd79e55bed1b5;52.519096;13.388672;"{""name"":"""",""ref"":""380498295"",""type"":""outdoor"",""note"":""""}" berlin;cctv;884cd69383659d88dbbbef4edeb32f57;52.519737;13.388597;"{""name"":"""",""ref"":""380498302"",""type"":""outdoor"",""note"":""""}" berlin;cctv;380b7e9ee25070829fbd06ea477ba49a;52.519958;13.388573;"{""name"":"""",""ref"":""380498303"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d06707db648c896d833ce8fd45843ed4;52.519634;13.386232;"{""name"":"""",""ref"":""380498313"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e6fce5eb04aa4b99932512ae44a758c0;52.519608;13.385877;"{""name"":"""",""ref"":""380498314"",""type"":""outdoor"",""note"":""""}" berlin;cctv;afb15c9e3b8d71fe90dbd4c7dd58b97d;52.519585;13.385597;"{""name"":"""",""ref"":""380498315"",""type"":""outdoor"",""note"":""""}" berlin;cctv;26a3650253e2f6dd906e042a6d5775e8;52.519489;13.385416;"{""name"":"""",""ref"":""380498317"",""type"":""outdoor"",""note"":""""}" berlin;cctv;79e71528f6d56817535beca4118747fd;52.520241;13.385972;"{""name"":"""",""ref"":""380498319"",""type"":""outdoor"",""note"":""""}" berlin;cctv;41480d0138987bd80bfa7ab05e755b58;52.520561;13.382657;"{""name"":"""",""ref"":""380498325"",""type"":""outdoor"",""note"":""""}" berlin;cctv;657c2c12cca552f114566a191ab9c2ba;52.520187;13.381267;"{""name"":"""",""ref"":""380498326"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3363990b1894b32513eedb539091965c;52.520512;13.380853;"{""name"":"""",""ref"":""380498327"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ade6fe54d3f5024deec1ec29605b5e76;52.520451;13.380301;"{""name"":"""",""ref"":""380498328"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2a747150ad3b772e3dd45868e5cf1cc0;52.520226;13.380107;"{""name"":"""",""ref"":""380498329"",""type"":""outdoor"",""note"":""""}" berlin;cctv;007f02230fd83625d2d41226a1d2f0e5;52.520405;13.380081;"{""name"":"""",""ref"":""380498330"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6e539eafb75a7b71fe30f2859ae7affa;52.520454;13.380065;"{""name"":"""",""ref"":""380498331"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f169a130ef022d1db6b7711fdbcedf16;52.520519;13.380052;"{""name"":"""",""ref"":""380498332"",""type"":""outdoor"",""note"":""""}" berlin;cctv;47a45f990f2f52d3cb5d7543e38174b2;52.520573;13.380054;"{""name"":"""",""ref"":""380498333"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c4a2c82cb38265d98149a88f02e12e28;52.520641;13.380033;"{""name"":"""",""ref"":""380498334"",""type"":""outdoor"",""note"":""""}" berlin;cctv;399a0ba0ff76e1d794b9e247198219db;52.520767;13.380033;"{""name"":"""",""ref"":""380498335"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8171905e19e8e621d2410e670649b9f9;52.520809;13.380033;"{""name"":"""",""ref"":""380498336"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e337048f6ecde570d0a9571943a062e4;52.520863;13.380049;"{""name"":"""",""ref"":""380498337"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d08ecf52f0c22763b4144996cc74ef1f;52.521118;13.379966;"{""name"":"""",""ref"":""380498338"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b4cfbc6a4888d663f87c3b192f99091a;52.522530;13.381153;"{""name"":"""",""ref"":""380498342"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87ce0abd6d1be3d73e693ba13eb5f406;52.523071;13.383157;"{""name"":"""",""ref"":""380498349"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0793e4fd5fc2ae6e339d6aaa67d08a96;52.522995;13.383218;"{""name"":"""",""ref"":""380498350"",""type"":""outdoor"",""note"":""""}" berlin;cctv;38fe201630911e5e2b37d51ef826993b;52.524151;13.384741;"{""name"":"""",""ref"":""380498363"",""type"":""outdoor"",""note"":""""}" berlin;cctv;638c23428b856ecb3ff78843421120e7;52.523212;13.387653;"{""name"":"""",""ref"":""380498364"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ea0f698f23ee6b3e579f68f46aeacbdc;52.523010;13.387682;"{""name"":"""",""ref"":""380498365"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c228806b862462ebfa9af9814e059312;52.516544;13.385328;"{""name"":"""",""ref"":""380498368"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ff77e056011c7aa696221177c524e5f4;52.516537;13.385157;"{""name"":"""",""ref"":""380498369"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6cc416bfc07f6af1e8677f7b1534c1a5;52.516537;13.384986;"{""name"":"""",""ref"":""380498370"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d2ccf44e8497d692529a6ca8dae8bd5c;52.519070;13.402719;"{""name"":"""",""ref"":""382905005"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2f56da39af4091ba76f989fb19b8133b;52.520035;13.404322;"{""name"":"""",""ref"":""382905007"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c179cf94df775ba89efb5e2c53f0f6c9;52.521969;13.407758;"{""name"":"""",""ref"":""382905012"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9375cc4aa592a717f1d3d23e4b49eb70;52.522030;13.408272;"{""name"":"""",""ref"":""382905014"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a6f7a4bc9d6a3a4c1ca3c59baf0d4673;52.522110;13.408423;"{""name"":"""",""ref"":""382905015"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87f7c392f49ba123dc50fce4c4b98f4a;52.523205;13.408178;"{""name"":"""",""ref"":""382905026"",""type"":""outdoor"",""note"":""""}" berlin;cctv;af8ee4ab9c10f59f8ad5c89324ebef11;52.522991;13.403408;"{""name"":"""",""ref"":""382905029"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ad21f95d7305a09f192a371de03e6b2e;52.511608;13.401506;"{""name"":"""",""ref"":""382905120"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c21649e473cfd1e223f95e1f7cc45f30;52.513252;13.481079;"{""name"":"""",""ref"":""382905549"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4c4d3c6bef81f5b6ea23cb5bbe4a4895;52.508396;13.480145;"{""name"":"""",""ref"":""389029708"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6133ea3173a4c5960d408eedcd237073;52.509094;13.399834;"{""name"":"""",""ref"":""444269997"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4f92c6c097de358ea37859b362023637;52.509090;13.400227;"{""name"":"""",""ref"":""444269998"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6d144d93b17ae44c718673c89e8f3ebc;52.528236;13.371013;"{""name"":"""",""ref"":""449946677"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9033008a28e51fcc9f2156a97386cf00;52.529030;13.379656;"{""name"":"""",""ref"":""449946965"",""type"":""outdoor"",""note"":""""}" berlin;cctv;751d770b65f70b67d58f0f6264ae7064;52.528858;13.380003;"{""name"":"""",""ref"":""449946971"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c2c963fe078edbf0114c0cbcb0aa3313;52.528767;13.380026;"{""name"":"""",""ref"":""449946976"",""type"":""outdoor"",""note"":""""}" berlin;cctv;900aabe87d5d3aa7b38518c559e1823a;52.529140;13.380289;"{""name"":"""",""ref"":""449946981"",""type"":""outdoor"",""note"":""""}" berlin;cctv;16774cbb971f5206f94c9fa9512d0a3a;52.528965;13.380369;"{""name"":"""",""ref"":""449946986"",""type"":""outdoor"",""note"":""""}" berlin;cctv;268fde6c96233298d9c524acd5e07a7a;52.528797;13.380386;"{""name"":"""",""ref"":""449946989"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f59e81f136cb8dc9fdee34c21a1d6ef2;52.528767;13.380411;"{""name"":"""",""ref"":""449946991"",""type"":""outdoor"",""note"":""""}" berlin;cctv;771b557fbe60ef00513fb6a78fd96b0b;52.528687;13.380434;"{""name"":"""",""ref"":""449946996"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9afec90935aff6f40260329f480c7f82;52.526855;13.385425;"{""name"":"""",""ref"":""449951809"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e70dbb8ad649c286e57ec3088393270e;52.526901;13.385711;"{""name"":"""",""ref"":""449951812"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c8bca9d93d81351668acea048a0a9a3e;52.527012;13.386242;"{""name"":"""",""ref"":""449951816"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7aadc4b3741860ac8e8f29b750d2fbc2;52.526131;13.387096;"{""name"":"""",""ref"":""449951818"",""type"":""outdoor"",""note"":""""}" berlin;cctv;edc2dff5dd1d6c4c4685199a50e8d0b0;52.515293;13.398040;"{""name"":"""",""ref"":""449970719"",""type"":""outdoor"",""note"":""""}" berlin;cctv;57a40b242566330404dc7df4acee5925;52.515095;13.398173;"{""name"":"""",""ref"":""449970724"",""type"":""outdoor"",""note"":""""}" berlin;cctv;42a3ed900b0aee54c44291e6ba12f44c;52.514908;13.398291;"{""name"":"""",""ref"":""449970728"",""type"":""outdoor"",""note"":""""}" berlin;cctv;047c9e6c41a53473c5d9bcd04e6dc783;52.514679;13.398452;"{""name"":"""",""ref"":""449970733"",""type"":""outdoor"",""note"":""""}" berlin;cctv;df123a5a18026d54502bb6230688ab1f;52.515453;13.398405;"{""name"":"""",""ref"":""449970738"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b4904529e6b7917fea3b56984acbbafa;52.515507;13.398651;"{""name"":"""",""ref"":""449970748"",""type"":""outdoor"",""note"":""""}" berlin;cctv;196399806c629143641de9addede2098;52.515427;13.398762;"{""name"":"""",""ref"":""449970753"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5fbc0396dafa17b861821903318ac485;52.515617;13.399005;"{""name"":"""",""ref"":""449970756"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d7070f3b05dae77b4d94b06693ee4ffa;52.515648;13.399256;"{""name"":"""",""ref"":""449970761"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3aadfe51096ba1979aeb223271b9335a;52.515686;13.399430;"{""name"":"""",""ref"":""449970765"",""type"":""outdoor"",""note"":""""}" berlin;cctv;86d52f05cca30398580e9552679d0c85;52.515705;13.399565;"{""name"":"""",""ref"":""449970768"",""type"":""outdoor"",""note"":""""}" berlin;cctv;800c6b6b13bfc0aa713301bbc940f7db;52.515514;13.399816;"{""name"":"""",""ref"":""449970774"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8844e7e2557692fc8c14c5e7fd66d7ab;52.515373;13.399907;"{""name"":"""",""ref"":""449970780"",""type"":""outdoor"",""note"":""""}" berlin;cctv;025693896eb3d6221ca4729fcc080585;52.515285;13.399959;"{""name"":"""",""ref"":""449970793"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ade526f9f86771fa867aaac8bd6ee04b;52.515137;13.400070;"{""name"":"""",""ref"":""449970799"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8292ab8c2f336ee7ac027f658ed8d7bd;52.515106;13.399866;"{""name"":"""",""ref"":""449970802"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a1c673d7d2b3b280d4c9e16558d3521b;52.514919;13.400040;"{""name"":"""",""ref"":""449970805"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ccc4c5a3535e052d2f42aa1175d0741b;52.514755;13.400097;"{""name"":"""",""ref"":""449970808"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f734935056842e1e9bbbd13973258538;52.515125;13.400353;"{""name"":"""",""ref"":""449970812"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c513dc375b11ed50704ff1c80b1a35de;52.514877;13.400219;"{""name"":"""",""ref"":""449970833"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5a30de20eadd2693aa74a64134590ef9;52.512844;13.402122;"{""name"":"""",""ref"":""449970835"",""type"":""outdoor"",""note"":""""}" berlin;cctv;22f3a4c5980596e6172d01d1b3dbf8ab;52.514050;13.400962;"{""name"":"""",""ref"":""449970841"",""type"":""outdoor"",""note"":""""}" berlin;cctv;754b8b8d6cefbb75c413488a5bc4acda;52.514488;13.400533;"{""name"":"""",""ref"":""449970846"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a475b94efe89e0a5e8de81bacce00711;52.514622;13.400411;"{""name"":"""",""ref"":""449970850"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0d1525069b5fbd08ad0ea0a000b588b4;52.514755;13.400311;"{""name"":"""",""ref"":""449970856"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1b0631a7f69fa11c5127a4ac1a5d9ba8;52.514374;13.400637;"{""name"":"""",""ref"":""449970861"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a26d24df318be584962fd6bfca261af3;52.514229;13.400782;"{""name"":"""",""ref"":""449970865"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4595f635abaa461e8f250e65e0547a7b;52.513535;13.401459;"{""name"":"""",""ref"":""449970869"",""type"":""outdoor"",""note"":""""}" berlin;cctv;24e126f4797771ffbb136c50e18adff5;52.513744;13.401257;"{""name"":"""",""ref"":""449970879"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bfdd3c7d866dcf490a2b2c4ce14b12c7;52.513916;13.401084;"{""name"":"""",""ref"":""449970883"",""type"":""outdoor"",""note"":""""}" berlin;cctv;55cfa7c6f9e92c80a4d9acd90f8b3211;52.513386;13.401609;"{""name"":"""",""ref"":""449970888"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e4209d1bd8423ad8239750e74c59114d;52.513237;13.401754;"{""name"":"""",""ref"":""449970891"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bb7d2985aff3212a8cb7455e4021c19a;52.513065;13.401930;"{""name"":"""",""ref"":""449970895"",""type"":""outdoor"",""note"":""""}" berlin;cctv;66d8bf264791b7978647b3c0731534b5;52.516010;13.402699;"{""name"":"""",""ref"":""449970921"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c0ca30f0c78607e4399f1d0e04bd7185;52.507542;13.380657;"{""name"":"""",""ref"":""449982643"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c9ddc870734903d1b22032014866f293;52.507328;13.382530;"{""name"":"""",""ref"":""449982650"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7d80e033163124e181e7583a8aa7fbea;52.507439;13.382519;"{""name"":"""",""ref"":""449982653"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0df96d2be56d5a6730a07b6fd90a30ed;52.507397;13.382913;"{""name"":"""",""ref"":""449982658"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f1d30880d2f57bb630aec48f9927131f;52.507442;13.383254;"{""name"":"""",""ref"":""449982663"",""type"":""outdoor"",""note"":""""}" berlin;cctv;114b8c0988a0f345a5745702ab863716;52.507484;13.383514;"{""name"":"""",""ref"":""449982667"",""type"":""outdoor"",""note"":""""}" berlin;cctv;98e71663363fc57b17384c3549bedad7;52.508060;13.383882;"{""name"":"""",""ref"":""449982672"",""type"":""outdoor"",""note"":""""}" berlin;cctv;52d3f3b2a374c10ed7158685eb1c0e96;52.507465;13.383786;"{""name"":"""",""ref"":""449982677"",""type"":""outdoor"",""note"":""""}" berlin;cctv;19712631cac6833764999163049fbd88;52.507549;13.383961;"{""name"":"""",""ref"":""449982679"",""type"":""outdoor"",""note"":""""}" berlin;cctv;666e64847b16003f4ecc7a6cdbff63be;52.507587;13.384440;"{""name"":"""",""ref"":""449982684"",""type"":""outdoor"",""note"":""""}" berlin;cctv;045d1bbf4832c41379e6cbbf3e7cfa51;52.532192;13.378127;"{""name"":"""",""ref"":""450933260"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c8b48fbe3d82a1adff669f6aa9256327;52.510925;13.399883;"{""name"":"""",""ref"":""460330651"",""type"":""outdoor"",""note"":""""}" berlin;cctv;126e904d732e180740f95e7d67bf9e1a;52.498943;13.446351;"{""name"":"""",""ref"":""530673927"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7e88c89a332d506b7bec0c6629533895;52.519859;13.390434;"{""name"":"""",""ref"":""538791890"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c7eeb7d098539523818a9fb2c6301c6a;52.537262;13.373302;"{""name"":"""",""ref"":""539182141"",""type"":""outdoor"",""note"":""""}" berlin;cctv;45b6fde3022fa2e62de4e40b853edb98;52.529865;13.378773;"{""name"":"""",""ref"":""539513557"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b21ee34f53615f46346388cd9e683f50;52.515263;13.405531;"{""name"":"""",""ref"":""539995736"",""type"":""outdoor"",""note"":""""}" berlin;cctv;48d045db6de125b4361b1c3ec52fa302;52.514751;13.405112;"{""name"":"""",""ref"":""539996294"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7ec444bb87b62726c340becefc6afacf;52.515137;13.405755;"{""name"":"""",""ref"":""539996296"",""type"":""outdoor"",""note"":""""}" berlin;cctv;120bcc9a754eff396df4e8daab77d7dd;52.515724;13.401336;"{""name"":"""",""ref"":""540633244"",""type"":""outdoor"",""note"":""""}" berlin;cctv;26f0b08778af20ba17d6b6d3021ba6da;52.515102;13.377781;"{""name"":"""",""ref"":""542560202"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dd013f45b5c9aa8253bf651948c4662d;52.514881;13.377742;"{""name"":"""",""ref"":""542560358"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5def9934b4a130db12227e1fc61c93ae;52.514820;13.378318;"{""name"":"""",""ref"":""542561188"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9ba026e825a79d7615effe46f768fcfb;52.515343;13.382946;"{""name"":"""",""ref"":""542566872"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0792db85a88d9b48cb61b4b3984f9585;52.515358;13.383174;"{""name"":"""",""ref"":""542567079"",""type"":""outdoor"",""note"":""""}" berlin;cctv;db416d5c6027a97ef1b3fa71e5a38fc4;52.515438;13.383990;"{""name"":"""",""ref"":""542568875"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f1a461d720dd82ff01fe1656ba8cc146;52.515430;13.383846;"{""name"":"""",""ref"":""542568886"",""type"":""outdoor"",""note"":""""}" berlin;cctv;883d23c6fb1e9a2ddead8d568ca34690;52.515434;13.384304;"{""name"":"""",""ref"":""542569160"",""type"":""outdoor"",""note"":""""}" berlin;cctv;00f7929f5b932afda8e59a57df27016f;52.515308;13.385516;"{""name"":"""",""ref"":""542686117"",""type"":""outdoor"",""note"":""""}" berlin;cctv;546cb617251f690c6540dfae0b5d723a;52.515274;13.385019;"{""name"":"""",""ref"":""542686677"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8e715768dc51533883a7ee500afbc9b4;52.515278;13.385964;"{""name"":"""",""ref"":""542687367"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8d7741cfc60e0f95ce83195ba29fb49b;52.516266;13.389706;"{""name"":"""",""ref"":""542693281"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d2f35c8f771b81a19f824efda323e739;52.516739;13.389147;"{""name"":"""",""ref"":""542693354"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fd5db26a84085e38d4840496dc5b3d90;52.515030;13.395617;"{""name"":"""",""ref"":""542895094"",""type"":""outdoor"",""note"":""""}" berlin;cctv;59199e5e9df796d3f0a38eac74ac6617;52.515274;13.381897;"{""name"":"""",""ref"":""546254792"",""type"":""outdoor"",""note"":""""}" berlin;cctv;88d2dfa8e295528ac442c69f74ec16b2;52.506714;13.359105;"{""name"":"""",""ref"":""595515059"",""type"":""outdoor"",""note"":""""}" berlin;cctv;99683b948bfcbefb945d85070eca1bbd;52.506779;13.358862;"{""name"":"""",""ref"":""595515060"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5e9f26ed2220d1b65040f53302fff5ce;52.506824;13.358726;"{""name"":"""",""ref"":""595515061"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6714c90c6cdbbab3781e4bd0fba32787;52.507343;13.359008;"{""name"":"""",""ref"":""595515062"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cbea067d46bdd21facadd3ee5d28e162;52.507423;13.358989;"{""name"":"""",""ref"":""595515063"",""type"":""outdoor"",""note"":""""}" berlin;cctv;871da00b2c52e07d358f2820e80a23b5;52.507412;13.359180;"{""name"":"""",""ref"":""595515064"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cce6005f2741480ca20092bd12c2879d;52.507797;13.359212;"{""name"":"""",""ref"":""595515065"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ecd72acf49b23530c274a422ff4cfe4d;52.507950;13.359303;"{""name"":"""",""ref"":""595515066"",""type"":""outdoor"",""note"":""""}" berlin;cctv;96e449ffe81b795733da663043ce6dd7;52.508301;13.359300;"{""name"":"""",""ref"":""595515067"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0f356e8df7182d450c3340e9eed8b954;52.508335;13.359144;"{""name"":"""",""ref"":""595515068"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a36c070335c487e1acbe4a1266f67ad5;52.508610;13.359294;"{""name"":"""",""ref"":""595515069"",""type"":""outdoor"",""note"":""""}" berlin;cctv;f1f8bbd274bdc7eb85755fbfc54dadf2;52.506283;13.360655;"{""name"":"""",""ref"":""595515070"",""type"":""outdoor"",""note"":""""}" berlin;cctv;812d04b7bfd5a3b85a17cfcea8db8f1c;52.506115;13.362016;"{""name"":"""",""ref"":""595515071"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dc746dae9ecc38ce22ff860516920e11;52.506092;13.361763;"{""name"":"""",""ref"":""595515072"",""type"":""outdoor"",""note"":""""}" berlin;cctv;15a09a80ff16ef8ab396fa85749077b8;52.506123;13.361578;"{""name"":"""",""ref"":""595515073"",""type"":""outdoor"",""note"":""""}" berlin;cctv;dceca4f74765957929529900d3b20889;52.506199;13.361241;"{""name"":"""",""ref"":""595515074"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3593f025ce21c9115e86967525ced4ae;52.506256;13.360774;"{""name"":"""",""ref"":""595515075"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3f7c811adb33d037f2bb7834eafca97e;52.506355;13.362586;"{""name"":"""",""ref"":""595515076"",""type"":""outdoor"",""note"":""""}" berlin;cctv;05092476d4d39498e75649871846038b;52.506226;13.362521;"{""name"":"""",""ref"":""595515077"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6808bf7e5d51a5ba97bbfce4e9ab071c;52.506065;13.362431;"{""name"":"""",""ref"":""595515078"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9312c5a08f2550c0e2f48a29c835a44e;52.506439;13.359967;"{""name"":"""",""ref"":""595515079"",""type"":""outdoor"",""note"":""""}" berlin;cctv;51e64bcce60afa6b9f45f937e4791fd1;52.506481;13.359890;"{""name"":"""",""ref"":""595515080"",""type"":""outdoor"",""note"":""""}" berlin;cctv;497911476080574afb738cec5c981b00;52.506622;13.359783;"{""name"":"""",""ref"":""595515081"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4124e2da3d2db8c7bfa4f52dae48d486;52.506580;13.359647;"{""name"":"""",""ref"":""595515082"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1e86a84240f9e348c63352fce5d711a1;52.506634;13.359381;"{""name"":"""",""ref"":""595515083"",""type"":""outdoor"",""note"":""""}" berlin;cctv;8adf60c6f0ca148ebd875cba67f5a98c;52.506416;13.360415;"{""name"":"""",""ref"":""595515084"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6cd144823477a5a61eb1fa4a5f484072;52.506493;13.360123;"{""name"":"""",""ref"":""595515085"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3048fc19184ca9d83084504daac45fc4;52.507374;13.360071;"{""name"":"""",""ref"":""595515086"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2d68068c37ee225b0d4827c06b78850b;52.506618;13.361581;"{""name"":"""",""ref"":""595515087"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4145b4d242810832f4e1f960741001e9;52.507202;13.361987;"{""name"":"""",""ref"":""595515088"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bfaadefaa30a7694540b5416e102bb24;52.507793;13.359394;"{""name"":"""",""ref"":""595515089"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bff63ca9e6bd5ffeadb142fa07a5a6f9;52.507835;13.360379;"{""name"":"""",""ref"":""595515090"",""type"":""outdoor"",""note"":""""}" berlin;cctv;15ab5efd7ebda75c3a7ccb9827ba1317;52.508205;13.359478;"{""name"":"""",""ref"":""595515091"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0e55d9c95cc8f614354ee2ca2f0da176;52.508224;13.359705;"{""name"":"""",""ref"":""595515092"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5ed540dc978d7c891a240401b8bd3311;52.508236;13.359980;"{""name"":"""",""ref"":""595515093"",""type"":""outdoor"",""note"":""""}" berlin;cctv;30b2df2fef4747bb1f4781352111e5af;52.506752;13.362706;"{""name"":"""",""ref"":""595515094"",""type"":""outdoor"",""note"":""""}" berlin;cctv;01ff8b0e5fb1e3e6ee624df98338f89d;52.506493;13.362654;"{""name"":"""",""ref"":""595515095"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2089a6e29d7cf4dd19d47bf72f68cba8;52.506889;13.362790;"{""name"":"""",""ref"":""595515096"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9ff883a28e028337aafd7d985bed9832;52.506741;13.362816;"{""name"":"""",""ref"":""595515097"",""type"":""outdoor"",""note"":""""}" berlin;cctv;92eaffe79ad35a02af5ee995c08ef47a;52.507061;13.362855;"{""name"":"""",""ref"":""595515098"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d1108e750ae8b1539b661cbed491fe13;52.507160;13.362304;"{""name"":"""",""ref"":""595515099"",""type"":""outdoor"",""note"":""""}" berlin;cctv;366f223f7c48a2bcaf5cb381efccc1dc;52.507114;13.362567;"{""name"":"""",""ref"":""595515100"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4ab9417dcb0ded3b10074569b2d7ad04;52.506863;13.363544;"{""name"":"""",""ref"":""595515101"",""type"":""outdoor"",""note"":""""}" berlin;cctv;82eafa9aa0854178708a452fd6e20d06;52.508118;13.367111;"{""name"":"""",""ref"":""595515160"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a17d4e1b311d5115b588c0b93559ef11;52.508381;13.367081;"{""name"":"""",""ref"":""595515161"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d583df155cf7f7730f26c4e394b0d1ec;52.509026;13.372715;"{""name"":"""",""ref"":""595515321"",""type"":""outdoor"",""note"":""""}" berlin;cctv;805c4905b67843d785482c97a40941db;52.509224;13.370681;"{""name"":"""",""ref"":""595515322"",""type"":""outdoor"",""note"":""""}" berlin;cctv;28623a5e433aecbdad76045cbf46c318;52.510239;13.376814;"{""name"":"""",""ref"":""595515352"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d156b09669fbfc7c4c1277918207cc75;52.512196;13.378001;"{""name"":"""",""ref"":""595515369"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2ae5adc6c31ef2f12fee157ee658151e;52.512222;13.378566;"{""name"":"""",""ref"":""595515370"",""type"":""outdoor"",""note"":""""}" berlin;cctv;9ef960937ea9369f2a191e4dfeaa7988;52.512272;13.378996;"{""name"":"""",""ref"":""595515371"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ffc626e6c53bd4ade609d8b9fb43c9f5;52.520416;13.388898;"{""name"":"""",""ref"":""595515373"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a1fe78b87dec5c047afeef7078a7c4a6;52.491768;13.357307;"{""name"":"""",""ref"":""712753245"",""type"":""outdoor"",""note"":""""}" berlin;cctv;15614515912f05d3087bfd363ec2dd21;52.491810;13.356823;"{""name"":"""",""ref"":""721749823"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1d36fe610235706971c20525265ba60c;52.495556;13.333090;"{""name"":"""",""ref"":""731226386"",""type"":""outdoor"",""note"":""""}" berlin;cctv;07f448be77eceb9f3a40b9e6f7f16787;52.495491;13.331750;"{""name"":"""",""ref"":""731226388"",""type"":""outdoor"",""note"":""""}" berlin;cctv;87bf4154af17cd7930e8e68bcdd3313d;52.496323;13.331410;"{""name"":"""",""ref"":""731226393"",""type"":""outdoor"",""note"":""""}" berlin;cctv;c0cc0e6dba0225bdfc6d162855124f60;52.495773;13.331984;"{""name"":"""",""ref"":""731226395"",""type"":""outdoor"",""note"":""""}" berlin;cctv;96b1c0923993cc9df6dc5d9b64e28425;52.478077;13.330579;"{""name"":"""",""ref"":""734784882"",""type"":""outdoor"",""note"":""""}" berlin;cctv;a1801daa72110252829001d03364decb;52.430096;13.525265;"{""name"":"""",""ref"":""807790220"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b57ad51ea3af3210de62e6ce333de771;52.510479;13.391352;"{""name"":"""",""ref"":""1254467827"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e231b90608cb46730a6ebb9e3297f3e6;52.510437;13.390622;"{""name"":"""",""ref"":""1254467829"",""type"":""outdoor"",""note"":""""}" berlin;cctv;d0d18778fa81f5f73e0ffd7138c88f55;52.514523;13.438574;"{""name"":"""",""ref"":""1270475966"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4d82f91e9dd34ac2711e03da76309362;52.544018;13.351702;"{""name"":"""",""ref"":""1361220844"",""type"":""outdoor"",""note"":""""}" berlin;cctv;1888e014b0940eadb6d857935498f2b4;52.544758;13.352481;"{""name"":"""",""ref"":""1361220845"",""type"":""outdoor"",""note"":""""}" berlin;cctv;91d37312663a57c10bcfcaddf7e5e44d;52.544838;13.352600;"{""name"":"""",""ref"":""1361220846"",""type"":""outdoor"",""note"":""""}" berlin;cctv;00e86ae4872a08aa4eec31776029d32c;52.544106;13.351591;"{""name"":"""",""ref"":""1361565104"",""type"":""outdoor"",""note"":""""}" berlin;cctv;bba4ff2def4d4ff70bb8d205637c0d2c;52.544216;13.351740;"{""name"":"""",""ref"":""1361565105"",""type"":""outdoor"",""note"":""""}" berlin;cctv;522e2233c004e4cfaa671a817029403e;52.544453;13.352197;"{""name"":"""",""ref"":""1361565106"",""type"":""outdoor"",""note"":""""}" berlin;cctv;445ad36c6a323cebcca4a7adf90e479a;52.544949;13.352377;"{""name"":"""",""ref"":""1361565110"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3912ce0fddec5a2490834adc59a4137f;52.545002;13.352258;"{""name"":"""",""ref"":""1361565112"",""type"":""outdoor"",""note"":""""}" berlin;cctv;59cf29a477d7738d54ede3f7b51a37a4;52.571194;13.294161;"{""name"":"""",""ref"":""1494501147"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b66d8b4a57901d4c5a779fb1480b7e94;52.571339;13.294349;"{""name"":"""",""ref"":""1494501173"",""type"":""outdoor"",""note"":""""}" berlin;cctv;076e2cad311973cf7407817cfa5deb4c;52.531506;13.301409;"{""name"":"""",""ref"":""1504465102"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5f5b3d2e35d9fe8a5d385fa2af11c80a;52.531731;13.302412;"{""name"":"""",""ref"":""1504465110"",""type"":""outdoor"",""note"":""""}" berlin;cctv;acea4acfdebcf9337e9b52ae5ae92631;52.431587;13.525117;"{""name"":"""",""ref"":""1560224392"",""type"":""outdoor"",""note"":""""}" berlin;cctv;55a12a86ffdf07bb9e59a65b7c5ce844;52.431641;13.525298;"{""name"":"""",""ref"":""1560224419"",""type"":""outdoor"",""note"":""""}" berlin;cctv;6ef067e92a38d6b45b80e178257d7fda;52.431732;13.525558;"{""name"":"""",""ref"":""1560224442"",""type"":""outdoor"",""note"":""""}" berlin;cctv;fa1544f57f9f43385e26e0fc0eaa0866;52.431919;13.524399;"{""name"":"""",""ref"":""1560224498"",""type"":""outdoor"",""note"":""""}" berlin;cctv;396ddef4dc2fb3d0d0ae8d8417748f5a;52.430645;13.526795;"{""name"":"""",""ref"":""1577747257"",""type"":""outdoor"",""note"":""""}" berlin;cctv;ce09ea49dead15c5d36a3de3d80d4e56;52.432487;13.525101;"{""name"":"""",""ref"":""1579242911"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5bf641b84931e15a542beac7e65f2dd1;52.432552;13.525246;"{""name"":"""",""ref"":""1579242914"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7a29bbea6d262c48fc5edcad80032e2f;52.432568;13.525243;"{""name"":"""",""ref"":""1579242917"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0be2a1bfda4d015c1c93263df2733929;52.554146;13.448495;"{""name"":"""",""ref"":""1581067233"",""type"":""outdoor"",""note"":""""}" berlin;cctv;5f85b0b2949c153ec50a19c1a2197b82;52.439037;13.507545;"{""name"":"""",""ref"":""1700860694"",""type"":""outdoor"",""note"":""""}" berlin;cctv;688aae0510617c0ea37590ae6030e25c;52.521629;13.400755;"{""name"":"""",""ref"":""1814555504"",""type"":""outdoor"",""note"":""""}" berlin;cctv;0dba0df6af77fee41306746e5238f5f9;52.521633;13.400756;"{""name"":"""",""ref"":""1814555505"",""type"":""outdoor"",""note"":""""}" berlin;cctv;3c7c4611e42725b44bc818e4f53c123e;52.521790;13.400791;"{""name"":"""",""ref"":""1814555506"",""type"":""outdoor"",""note"":""""}" berlin;cctv;7c0cec99e86e510337a62e437f63a79b;52.431847;13.525750;"{""name"":"""",""ref"":""1933729325"",""type"":""outdoor"",""note"":""""}" berlin;cctv;42b4e88c6f2fb65f55d62365c3026471;52.523361;13.384005;"{""name"":"""",""ref"":""1951090456"",""type"":""outdoor"",""note"":""""}" berlin;cctv;89616a726ff05c5e86f69997bc504ad2;52.522793;13.381672;"{""name"":"""",""ref"":""1976864011"",""type"":""outdoor"",""note"":""""}" berlin;cctv;4140b6804a6e580c897d6021f6fc4c79;52.522007;13.376723;"{""name"":"""",""ref"":""1995426955"",""type"":""outdoor"",""note"":""""}" berlin;cctv;cb467303aa3b485f0550315b9f2edd23;52.522026;13.376739;"{""name"":"""",""ref"":""1995426984"",""type"":""outdoor"",""note"":""""}" berlin;cctv;629ba065ca9ad5b88955a3559e0101ab;52.522114;13.377310;"{""name"":"""",""ref"":""1995427004"",""type"":""outdoor"",""note"":""""}" berlin;cctv;b7a3f45495798ca67be5328108013e66;52.522102;13.377381;"{""name"":"""",""ref"":""1995427073"",""type"":""outdoor"",""note"":""""}" berlin;cctv;843f4ccbdecd99bd4c732ceb7abd5f1b;52.521961;13.377607;"{""name"":"""",""ref"":""1995427104"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e9303984cf27fc8fcf56b78c1b70b9a0;52.436752;13.278958;"{""name"":"""",""ref"":""2057304698"",""type"":""outdoor"",""note"":""""}" berlin;cctv;2f2c7773ec8be2e990a4a648c460176a;52.437176;13.280203;"{""name"":"""",""ref"":""2057304701"",""type"":""outdoor"",""note"":""""}" berlin;cctv;e7e7ab11624904c8a5ec4eb7e3c868f8;52.504051;13.441752;"{""name"":""Billboard"",""ref"":""298367106"",""type"":""public"",""note"":""""}" berlin;cctv;f334feb98386fcb565662ed698f3b330;52.573647;13.303517;"{""name"":"""",""ref"":""312576866"",""type"":""public"",""note"":""""}" berlin;cctv;14ad6e3734e5dc1c248aede84336b04c;52.572929;13.303513;"{""name"":"""",""ref"":""312576868"",""type"":""public"",""note"":""""}" berlin;cctv;afa156e4ffbd79c69b0c3edd71f54f33;52.489712;13.315018;"{""name"":"""",""ref"":""540327619"",""type"":""public"",""note"":""""}" berlin;cctv;8daa6e1eb0fcd2f9569bbfef3e963212;52.489613;13.315072;"{""name"":"""",""ref"":""540327621"",""type"":""public"",""note"":""""}" berlin;cctv;f7b0ab4ac7c1d050923b72266b5db892;52.490002;13.313601;"{""name"":"""",""ref"":""540327623"",""type"":""public"",""note"":""""}" berlin;cctv;629810af97c3e5dd2899e87ef4eb5ff8;52.489964;13.313464;"{""name"":"""",""ref"":""540327625"",""type"":""public"",""note"":""""}" berlin;cctv;1bbddc97aa7bffdebc7fc85e3a2e7580;52.490002;13.339682;"{""name"":"""",""ref"":""705685429"",""type"":""public"",""note"":""""}" berlin;cctv;84326771f90272815303d6d5c0b99c75;52.535057;13.429456;"{""name"":"""",""ref"":""1359236253"",""type"":""public"",""note"":""""}" berlin;cctv;26956338f4010f12fa46bd58f7718760;52.524139;13.411918;"{""name"":""VMZ Berlin Betreibergesellschaft mbH"",""ref"":""1816817801"",""type"":""webcam"",""note"":""""}" berlin;cctv;483ba00260ee39d1f783664307248a07;52.504532;13.336317;"{""name"":""Kurf\u00c3_rstendamm"",""ref"":""1732655814"",""type"":""webcam"",""note"":""""}" berlin;cctv;bfa9c5ca137b5de6534f396b73717beb;52.518917;13.376117;"{""name"":""Rechtstagsgeb\u00c3_ude"",""ref"":""1732692642"",""type"":""webcam"",""note"":""""}" berlin;cctv;4b328344f9e131425c979347b06cebed;52.503284;13.467900;"{""name"":""S-Bahnhof Ostkreuz"",""ref"":""1732659619"",""type"":""webcam"",""note"":""""}" berlin;cctv;d0a5a974cfa19817303847f72f162cfd;52.522182;13.376267;"{""name"":""Spreebogen"",""ref"":""1732680802"",""type"":""webcam"",""note"":""""}" berlin;cctv;959bea3788942b3b1216f07a70aecb11;52.514332;13.379600;"{""name"":""Stelenfeld"",""ref"":""1732693440"",""type"":""webcam"",""note"":""""}" berlin;cctv;7ef5bfd251817e1662e7910e836bef5e;52.592632;13.262333;"{""name"":""Tegeler Segel-Club"",""ref"":""1732698573"",""type"":""webcam"",""note"":""""}" berlin;cctv;b0ddd4e44e94e615de9c0aafe27a41a6;52.452518;13.509177;"{""name"":""Treptow OT Johannisthal"",""ref"":""724485772"",""type"":""webcam"",""note"":""""}" berlin;cctv;0e684ba89fca73fb7f3a2f12e11b1c9b;52.520885;13.409225;"{""name"":"""",""ref"":""284557960"",""type"":""webcam"",""note"":""http:\/\/www.berlin.de\/webcams\/index.php\/fsz""}" berlin;cctv;31255ba2c8a22c3980bf74b471ba5553;52.517773;13.397709;"{""name"":"""",""ref"":""717671051"",""type"":""webcam"",""note"":""http:\/\/www.dhm.de\/webcams\/WEB1.html""}" berlin;cctv;1a8766bf14e435c3835da94b3290224b;52.517685;13.396374;"{""name"":"""",""ref"":""717670808"",""type"":""webcam"",""note"":""http:\/\/www.dhm.de\/webcams\/WEB2.html""}" berlin;cctv;93ad1b31900e905e04e56e7f2ea69f18;52.518463;13.396409;"{""name"":"""",""ref"":""717671054"",""type"":""webcam"",""note"":""http:\/\/www.dhm.de\/webcams\/WEB3.html""}" berlin;cctv;4b62c66b927f0a1b4e4a80a4fd835c22;52.519066;13.390074;"{""name"":"""",""ref"":""725412890"",""type"":""webcam"",""note"":""http:\/\/www.ipb.de\/webcam\/""}" berlin;cctv;ddcde03d3638075ec3b038556f85eb67;52.507877;13.397068;"{""name"":"""",""ref"":""733675614"",""type"":""webcam"",""note"":""http:\/\/www.morgenpost.de\/service\/article75447\/Webcam.html""}" berlin;cctv;a99aacef2e505da26e6a40d9790c5f88;52.506115;13.281491;"{""name"":"""",""ref"":""731910740"",""type"":""webcam"",""note"":""http:\/\/www1.messe-berlin.de\/vip8_1\/website\/Internet\/Internet\/www.icc-berlin\/deutsch\/Das_ICC_Berlin\/Webcam\/index.jsp""}" berlin;cctv;29cf372d173b9e25c32726a4633e2dee;52.504910;13.281117;"{""name"":"""",""ref"":""506884271"",""type"":""webcam"",""note"":""""}" berlin;cctv;0bace5ba4e1a3c03a923cb92c587a7ae;52.503738;13.280628;"{""name"":"""",""ref"":""735308299"",""type"":""webcam"",""note"":""""}" berlin;cctv;17cfe7f2db1b0eda95479da795e8fbc6;52.518478;13.408036;"{""name"":""Rundfunk Berlin-Brandenburg (broadcaster)"",""ref"":""1772207657"",""type"":"""",""note"":""""}" berlin;cctv;b5d202ac7042a2d30221e282bd2346cc;52.521236;13.406588;"{""name"":""Schlecker (shop)"",""ref"":""382905011"",""type"":"""",""note"":""""}" berlin;cctv;c3c518d2237ab593027f17c4dba4a4a4;52.510746;13.298124;"{""name"":""Deutsche Bank"",""ref"":""340844775"",""type"":"""",""note"":""""}" berlin;cctv;d545b241577f9a4afe7d6f7e4733c059;52.510635;13.296989;"{""name"":""Dresdner Bank"",""ref"":""340844773"",""type"":"""",""note"":""""}" \ No newline at end of file diff --git a/assets/csv/odbl/berlin_radars.csv b/assets/csv/odbl/berlin_radars.csv new file mode 100644 index 0000000..1f30703 --- /dev/null +++ b/assets/csv/odbl/berlin_radars.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags berlin;radar;21537826;52.400135;13.515107;[] berlin;radar;27540883;52.461266;13.420072;"{""maxspeed"":""80""}" berlin;radar;27540888;52.461128;13.420141;"{""maxspeed"":""80""}" berlin;radar;27543311;52.462589;13.436959;"{""maxspeed"":""80""}" berlin;radar;27543322;52.462471;13.436981;"{""maxspeed"":""80""}" berlin;radar;310996633;52.394772;13.433455;"{""maxspeed"":""50""}" berlin;radar;326847472;52.512718;13.485101;"{""note"":""Stadteinw\u00e4rts und alle Fahrspuren""}" berlin;radar;421428023;52.464523;13.315615;[] berlin;radar;654569720;52.469601;13.385849;[] berlin;radar;919729667;52.400120;13.514949;[] berlin;radar;933600413;52.399979;13.454727;"{""maxspeed"":""50""}" berlin;radar;1111438194;52.464218;13.316636;[] berlin;radar;1112759556;52.552738;13.355826;[] berlin;radar;1204201596;52.490097;13.386549;"{""note"":""Die Blitzer Kamera ist bereits eingetragen. Die werden nicht angezeigt, weil Mapnik diese nicht darstellt.""}" berlin;radar;1232458360;52.463440;13.402956;[] berlin;radar;1657707674;52.393700;13.528859;"{""maxspeed"":""50""}" berlin;radar;1657707682;52.393764;13.528785;"{""maxspeed"":""50""}" berlin;radar;2056729122;52.502048;13.376669;[] berlin;radar;2090973348;52.521976;13.451005;"{""note"":""Rotlichtkontrolle Heckfoto""}" berlin;radar;2090973350;52.522488;13.450638;"{""note"":""Rotlichtkontrolle Frontfoto""}" berlin;radar;2132971058;52.608788;13.199559;"{""maxspeed"":""30""}" berlin;radar;2132972891;52.608391;13.199237;"{""maxspeed"":""30""}" \ No newline at end of file diff --git a/assets/csv/odbl/berlin_signals.csv b/assets/csv/odbl/berlin_signals.csv new file mode 100644 index 0000000..5d3cd20 --- /dev/null +++ b/assets/csv/odbl/berlin_signals.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags berlin;traffic_signals;172539;52.565186;13.335455;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172545;52.567005;13.346634;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172549;52.563396;13.342901;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172562;52.562599;13.330664;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172564;52.564053;13.327688;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172587;52.573643;13.352144;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172589;52.573219;13.358995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;172594;52.570343;13.360853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;484078;52.539619;13.295356;"{""highway"":""traffic_signals""}" berlin;traffic_signals;484121;52.539642;13.294898;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530176;52.561607;13.326142;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530177;52.562553;13.326715;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530186;52.562561;13.326531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530202;52.573410;13.359024;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530205;52.573811;13.352179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530215;52.574379;13.347923;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530225;52.558712;13.337277;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530256;52.569283;13.330068;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530262;52.564156;13.327816;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530283;52.575825;13.347975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530309;52.575855;13.347778;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530311;52.574409;13.347708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530312;52.567451;13.351410;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530319;52.566902;13.316476;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530340;52.567417;13.351152;"{""highway"":""traffic_signals""}" berlin;traffic_signals;530351;52.562531;13.330466;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614600;52.526524;13.447766;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614606;52.512932;13.481661;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614635;52.513462;13.518849;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614644;52.537533;13.428706;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614668;52.513458;13.519186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614681;52.534275;13.437370;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12614683;52.513447;13.476859;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12615173;52.551044;13.429993;"{""highway"":""traffic_signals""}" berlin;traffic_signals;12615195;52.583042;13.428605;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541457;52.516205;13.260627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541465;52.507530;13.242254;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541470;52.507969;13.274511;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541471;52.506378;13.280219;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541478;52.508678;13.261160;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541486;52.499046;13.271197;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541488;52.499878;13.273519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541592;52.541252;13.334590;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541593;52.546432;13.343932;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541594;52.546188;13.344253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541595;52.547680;13.346409;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541596;52.547470;13.346690;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541701;52.550953;13.430239;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541702;52.551250;13.430375;"{""highway"":""traffic_signals""}" berlin;traffic_signals;16541703;52.551353;13.430120;"{""highway"":""traffic_signals""}" berlin;traffic_signals;17777145;52.511864;13.309330;"{""highway"":""traffic_signals""}" berlin;traffic_signals;18244395;52.427345;13.214797;"{""highway"":""traffic_signals""}" berlin;traffic_signals;18244417;52.429501;13.224157;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246103;52.491714;13.457713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246112;52.502697;13.446584;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246138;52.507702;13.465412;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246141;52.506168;13.470329;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246160;52.501961;13.475381;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246175;52.497364;13.464778;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246244;52.474155;13.483951;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246246;52.474045;13.483713;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;20246248;52.514362;13.467447;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246260;52.508511;13.369601;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246262;52.506287;13.368359;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246266;52.506386;13.352201;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246267;52.503090;13.349561;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246271;52.505390;13.334002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246274;52.508179;13.328301;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246275;52.505459;13.327815;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246276;52.506702;13.302433;"{""highway"":""traffic_signals""}" berlin;traffic_signals;20246279;52.496166;13.308193;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21306262;52.495548;13.430287;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21306263;52.497337;13.432042;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21385812;52.539661;13.421803;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432503;52.493526;13.525979;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432558;52.492077;13.526893;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432647;52.460751;13.503505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432669;52.463715;13.508520;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432798;52.525349;13.419831;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432799;52.522228;13.416450;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432802;52.521866;13.416505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432810;52.529564;13.405408;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21432815;52.527187;13.415719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441699;52.557091;13.365475;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441700;52.556805;13.365524;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441714;52.590740;13.371060;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441718;52.574234;13.359194;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441721;52.550350;13.339133;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441726;52.560944;13.333591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441728;52.551403;13.367321;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441730;52.553894;13.371552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441732;52.553677;13.377175;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441733;52.552189;13.381443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21441736;52.537170;13.396881;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21483449;52.413624;13.573836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487101;52.519707;13.299493;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487103;52.522606;13.300224;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;21487105;52.518478;13.282905;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487106;52.519234;13.291676;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487113;52.533772;13.282376;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487115;52.533901;13.282434;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487141;52.510078;13.281907;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487156;52.522346;13.368041;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487159;52.522057;13.376497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487161;52.523872;13.387609;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487176;52.513893;13.350356;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487180;52.516628;13.380724;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487181;52.518124;13.380465;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487184;52.522667;13.409815;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487191;52.520466;13.479555;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487209;52.518349;13.407166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487210;52.520172;13.404824;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487224;52.515461;13.418005;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487229;52.518063;13.417941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487231;52.501751;13.409216;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487232;52.507999;13.414137;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487234;52.492981;13.422207;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487236;52.487808;13.425150;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487237;52.490883;13.416202;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487242;52.517170;13.388826;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487243;52.500092;13.345894;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487244;52.494514;13.346087;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487245;52.494400;13.338494;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487249;52.488468;13.302164;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487259;52.479237;13.344855;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487260;52.476810;13.281087;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487264;52.471397;13.329209;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487265;52.469036;13.332554;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487267;52.488995;13.344916;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487269;52.494434;13.361071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487270;52.491604;13.376657;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487271;52.493786;13.383583;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487272;52.493046;13.387671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487273;52.487385;13.385885;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487274;52.469486;13.385498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487275;52.472755;13.366483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21487285;52.514126;13.405668;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21508603;52.602821;13.402176;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509213;52.504894;13.613451;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509216;52.508736;13.561381;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509219;52.508591;13.561332;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509223;52.504780;13.613509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509247;52.563946;13.327912;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509248;52.564072;13.328056;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21509249;52.575562;13.332268;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21534656;52.550518;13.351717;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537087;52.554340;13.345265;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537094;52.622437;13.312864;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;21537095;52.434273;13.469203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537775;52.457363;13.448986;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537801;52.462723;13.445071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537858;52.445484;13.455179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537951;52.445354;13.455238;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21537969;52.462173;13.445340;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538125;52.643234;13.301493;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538132;52.587391;13.334820;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538141;52.452583;13.452336;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538145;52.668644;13.281534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538151;52.551430;13.350375;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21538158;52.617085;13.316420;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21540755;52.590588;13.292258;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21540761;52.588200;13.339940;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21540762;52.574978;13.380203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21590985;52.519684;13.319706;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21590986;52.509228;13.371678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;21590987;52.511120;13.371124;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;21668930;52.513317;13.331605;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;21677261;52.513584;13.335642;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;23655777;52.505451;13.362402;"{""highway"":""traffic_signals""}" berlin;traffic_signals;24985997;52.549454;13.386750;"{""highway"":""traffic_signals""}" berlin;traffic_signals;24986006;52.550312;13.391345;"{""highway"":""traffic_signals""}" berlin;traffic_signals;24986141;52.549351;13.386600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25661280;52.516144;13.376918;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25661285;52.514587;13.377452;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25661397;52.516663;13.385833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25662542;52.515427;13.386056;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25662552;52.516346;13.380845;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25662562;52.516987;13.385777;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25662710;52.514866;13.391113;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25662916;52.514744;13.389193;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25663395;52.510193;13.387393;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;25663483;52.506432;13.386074;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25663498;52.509975;13.384236;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25663747;52.510448;13.391834;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;25664099;52.509586;13.376772;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;25664673;52.518944;13.390494;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25664680;52.518673;13.388564;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25665636;52.517452;13.395030;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25665679;52.519123;13.392231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;25954547;52.526047;13.403696;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162583;52.435055;13.250744;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162585;52.435539;13.258309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162586;52.435146;13.260381;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162593;52.442017;13.282933;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162594;52.443954;13.288760;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162595;52.450996;13.270883;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162601;52.450096;13.251089;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26162610;52.437695;13.232275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190956;52.458050;13.290560;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190965;52.453400;13.285872;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190971;52.450382;13.278737;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190972;52.450092;13.278845;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190978;52.453060;13.286020;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26190984;52.432369;13.218860;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26191011;52.436909;13.231277;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26280873;52.433811;13.189397;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26280893;52.421062;13.176560;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554152;52.476086;13.363138;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554159;52.472839;13.366576;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554177;52.466393;13.378015;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554184;52.468670;13.374208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554190;52.469807;13.372270;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554191;52.469910;13.372085;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554200;52.466099;13.385510;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26554224;52.465481;13.394597;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26565046;52.427532;13.214666;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26565132;52.438171;13.215537;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26568236;52.414223;13.350262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26568695;52.413807;13.361993;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26568703;52.420116;13.359053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26569509;52.412430;13.361302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26569510;52.412243;13.362199;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26569511;52.410667;13.366255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26569513;52.413193;13.355323;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26569727;52.417572;13.366641;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26570022;52.429157;13.354759;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26570024;52.433372;13.353015;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26570026;52.434227;13.350152;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26582888;52.409100;13.376130;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583752;52.435574;13.347081;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583753;52.436192;13.345754;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583755;52.436275;13.345614;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583758;52.446953;13.342457;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26583761;52.450024;13.346643;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583821;52.464996;13.314531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583824;52.463196;13.319678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583827;52.460175;13.328302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583830;52.458241;13.332463;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26583831;52.455894;13.332531;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26602204;52.419308;13.188991;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26602506;52.430813;13.229767;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26602511;52.429676;13.224042;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624513;52.479069;13.310204;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624517;52.481014;13.313794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624521;52.483734;13.320170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624528;52.498039;13.296223;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624538;52.489090;13.315872;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624540;52.490414;13.313999;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624544;52.482170;13.290150;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624548;52.493950;13.285104;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624553;52.495811;13.286786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26624556;52.486439;13.320305;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26625325;52.492603;13.296445;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627346;52.464836;13.328546;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627349;52.464523;13.338909;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627352;52.458637;13.339294;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627356;52.451023;13.337849;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627358;52.451382;13.335304;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627359;52.453121;13.331004;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627363;52.473396;13.328584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627364;52.478638;13.328333;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627365;52.478764;13.328272;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627372;52.480461;13.313198;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627377;52.487659;13.308217;"{""name"":""Konstanzer Stra\u00dfe"",""highway"":""traffic_signals""}" berlin;traffic_signals;26627384;52.486801;13.313846;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627402;52.464321;13.316505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627413;52.464207;13.335056;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26627423;52.498802;13.300197;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627429;52.480587;13.312991;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26627439;52.478722;13.324245;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629138;52.473438;13.299640;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629140;52.473324;13.298978;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629143;52.474216;13.294562;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629145;52.475441;13.290477;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629146;52.475353;13.290249;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26629160;52.476814;13.280806;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642087;52.500275;13.300367;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642095;52.502205;13.296224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642096;52.503201;13.300755;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642101;52.493713;13.323520;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642102;52.497017;13.324217;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642103;52.495232;13.323888;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642104;52.499947;13.324853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642105;52.502590;13.325261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642106;52.500698;13.312974;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642107;52.488468;13.307947;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642108;52.488613;13.307864;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26642117;52.493568;13.309992;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646224;52.486755;13.284395;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646242;52.498760;13.307193;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646243;52.479549;13.285323;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646258;52.472134;13.314260;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646259;52.471588;13.320117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646260;52.478817;13.320314;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26646279;52.472118;13.314441;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662373;52.497292;13.291342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662383;52.495907;13.295969;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662395;52.511360;13.301652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662401;52.495106;13.299722;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662404;52.519711;13.299678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662413;52.525837;13.301917;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662416;52.494781;13.300859;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662429;52.525734;13.309876;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662431;52.492039;13.309332;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662452;52.491329;13.312747;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26662504;52.529263;13.301540;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26682470;52.493397;13.304797;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682475;52.506771;13.295045;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682478;52.511078;13.297391;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682519;52.513481;13.306931;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682524;52.517525;13.306437;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682531;52.525673;13.305971;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682534;52.528828;13.306540;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26682554;52.530346;13.314383;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682569;52.527431;13.328670;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682571;52.491150;13.326498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682572;52.490829;13.330808;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682573;52.490822;13.331008;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682574;52.487427;13.331212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682582;52.486416;13.322624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682583;52.486412;13.320519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682587;52.493168;13.331008;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682600;52.496197;13.287646;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682604;52.497890;13.296208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682605;52.498627;13.300143;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682608;52.497150;13.291398;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682611;52.496105;13.287761;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682626;52.488312;13.302336;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682630;52.490299;13.314199;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682636;52.499893;13.306932;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682638;52.500725;13.306526;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682643;52.500046;13.306875;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682644;52.503540;13.304321;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682650;52.489155;13.316030;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682651;52.490368;13.314394;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682654;52.486412;13.322405;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682655;52.486534;13.322425;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682656;52.486534;13.322629;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26682657;52.486534;13.320460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26701394;52.517876;13.342017;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26702187;52.519676;13.355538;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26702670;52.518776;13.339909;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26702671;52.518929;13.339793;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26702672;52.515091;13.348540;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703047;52.517097;13.354620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703054;52.523598;13.356800;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703055;52.523567;13.357101;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703056;52.523689;13.357144;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703057;52.523724;13.356843;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703653;52.509552;13.351483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703654;52.509693;13.351442;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703655;52.509670;13.351252;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703656;52.509529;13.351288;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703690;52.520912;13.372044;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703741;52.525269;13.365827;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703754;52.530548;13.383092;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703849;52.525455;13.342784;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703850;52.524555;13.349558;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703854;52.520645;13.341259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703855;52.520607;13.341453;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703856;52.520206;13.347274;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26703925;52.526356;13.343070;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704013;52.539089;13.345132;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704017;52.542049;13.349623;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704018;52.531803;13.343212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704019;52.528862;13.343205;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704048;52.511837;13.322522;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704049;52.508778;13.322859;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704050;52.505840;13.323068;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704054;52.505920;13.321759;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704058;52.502064;13.321890;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704059;52.503056;13.327460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704061;52.505253;13.331490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704062;52.504311;13.334061;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704063;52.504345;13.335693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704066;52.502232;13.333514;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704067;52.506287;13.332337;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704071;52.500854;13.336938;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704072;52.503040;13.339253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704073;52.505150;13.341303;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704076;52.501797;13.343866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704078;52.501045;13.347125;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704079;52.501205;13.346417;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704080;52.501503;13.343668;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704081;52.501858;13.342130;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704082;52.501003;13.346273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704087;52.500866;13.346916;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704088;52.504028;13.346008;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704108;52.505199;13.341138;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704482;52.512192;13.317275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704492;52.506153;13.317520;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704508;52.499557;13.316521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704514;52.500557;13.313186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704515;52.500031;13.313137;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704518;52.503269;13.313435;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704521;52.506359;13.313880;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704525;52.508873;13.314327;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704526;52.512028;13.314778;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704546;52.506012;13.320109;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704556;52.498665;13.316401;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704559;52.500072;13.324874;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704560;52.500553;13.330929;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704562;52.500389;13.328848;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704568;52.499847;13.321524;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704773;52.499725;13.339295;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704776;52.499386;13.335536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704779;52.455769;13.383833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704786;52.443283;13.386160;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704787;52.440155;13.387228;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704788;52.438999;13.387607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704931;52.431911;13.391126;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704933;52.423286;13.396042;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704934;52.423191;13.396093;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704935;52.423332;13.396344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704936;52.423424;13.396288;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704937;52.434273;13.389794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704938;52.434330;13.390108;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704940;52.414566;13.401000;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704941;52.414448;13.401052;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704942;52.414513;13.401321;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704943;52.414619;13.401265;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26704944;52.393818;13.406494;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26704947;52.398506;13.406227;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26704948;52.387348;13.409599;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26705012;52.382893;13.413179;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26705018;52.412586;13.392767;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26705023;52.459347;13.384407;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26705299;52.524387;13.350962;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26705300;52.526478;13.351725;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708010;52.499420;13.388833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708014;52.529324;13.353235;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708453;52.506874;13.295103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708454;52.510555;13.289188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708455;52.510391;13.289241;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708456;52.510887;13.297354;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708457;52.513081;13.288388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708458;52.512974;13.286873;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708459;52.509926;13.281923;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708460;52.511169;13.301683;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708472;52.498966;13.307411;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708475;52.493538;13.323497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708489;52.495075;13.330566;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708490;52.493168;13.330701;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708496;52.492805;13.328359;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26708501;52.499928;13.307192;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26721498;52.398495;13.406605;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26721501;52.393826;13.406809;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26721507;52.404404;13.406350;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26721881;52.386665;13.400729;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26721938;52.386681;13.405008;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26722848;52.398460;13.389042;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723046;52.448959;13.338746;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26723196;52.418198;13.416911;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723201;52.423592;13.436699;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723202;52.424164;13.439502;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723209;52.431835;13.460057;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723213;52.434361;13.469031;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26723214;52.434280;13.468903;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724440;52.535988;13.357424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724446;52.535629;13.356690;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724459;52.534508;13.354503;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724468;52.537277;13.360299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724473;52.537342;13.360446;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724493;52.532497;13.350536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724516;52.530788;13.347161;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26724528;52.528919;13.343334;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725513;52.530994;13.351814;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725638;52.526840;13.355309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725940;52.540024;13.370463;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725947;52.541187;13.368498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725949;52.541115;13.368296;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26725952;52.541027;13.368441;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726015;52.538376;13.362714;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726169;52.546288;13.359156;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726176;52.544765;13.361851;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726188;52.550320;13.352116;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726582;52.532974;13.328504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726584;52.531143;13.328562;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726587;52.527264;13.330433;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726700;52.525803;13.339246;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26726776;52.537964;13.326122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26727583;52.514709;13.315259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729471;52.480446;13.312727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729472;52.478725;13.320316;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729487;52.480339;13.312935;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729491;52.483631;13.320367;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729507;52.481396;13.320347;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729524;52.493446;13.310119;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729571;52.447540;13.326336;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26729615;52.430767;13.317420;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729624;52.456959;13.320652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729625;52.458649;13.303757;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729626;52.465763;13.306054;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729631;52.459728;13.308207;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729636;52.467243;13.309753;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729637;52.468349;13.308089;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729642;52.467522;13.309208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26729648;52.451790;13.320796;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26729654;52.456787;13.320716;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731153;52.492111;13.319574;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731154;52.492237;13.319459;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731157;52.496033;13.319947;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731190;52.492004;13.309483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731191;52.488670;13.308047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731192;52.488525;13.308138;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731216;52.485996;13.333121;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731217;52.486107;13.331231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731218;52.486130;13.330833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731220;52.487934;13.335163;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731232;52.487286;13.331209;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731233;52.487221;13.330792;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731240;52.481815;13.320353;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731244;52.486702;13.327635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731245;52.494972;13.327106;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731246;52.495403;13.330497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731247;52.495411;13.331074;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731248;52.495132;13.331039;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731249;52.494713;13.327303;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731250;52.495117;13.334592;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731251;52.494637;13.337255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731269;52.503452;13.295488;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26731273;52.504868;13.299959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26732947;52.526459;13.339149;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26733322;52.577003;13.360957;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26733823;52.581257;13.345161;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734029;52.578499;13.347324;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734224;52.520748;13.372049;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734489;52.490482;13.314227;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734490;52.499252;13.312629;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734508;52.495720;13.286927;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734555;52.494644;13.285770;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734558;52.495018;13.285564;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26734559;52.494743;13.285305;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26735142;52.524277;13.350924;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736127;52.506851;13.302191;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736131;52.506832;13.299139;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736154;52.509804;13.301910;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736157;52.507954;13.302188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736159;52.506847;13.302393;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736160;52.506706;13.302230;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736162;52.506626;13.306781;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736163;52.506744;13.299170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736165;52.508095;13.295762;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736170;52.505524;13.303080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736173;52.506485;13.309301;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736175;52.507957;13.302009;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736176;52.509800;13.301720;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736181;52.506733;13.306752;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736184;52.505680;13.306991;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736188;52.511669;13.309321;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736196;52.511162;13.301497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736197;52.511349;13.301457;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736201;52.506596;13.309318;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736203;52.505489;13.302891;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736206;52.503551;13.304503;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736218;52.503674;13.304218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736219;52.503651;13.304422;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736227;52.483585;13.320212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736229;52.480892;13.313972;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736315;52.526775;13.335446;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736346;52.524361;13.327451;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736367;52.525787;13.315998;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736380;52.525810;13.318301;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736413;52.465866;13.305989;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736505;52.477852;13.308276;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736533;52.471619;13.319690;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736534;52.471638;13.319478;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736535;52.472057;13.320101;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26736536;52.471924;13.320103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738403;52.485638;13.296216;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738404;52.488014;13.300613;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738438;52.476952;13.306342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738439;52.477901;13.308127;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738440;52.476807;13.306347;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738444;52.473343;13.299777;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738445;52.472477;13.308048;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738752;52.473202;13.298924;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738765;52.474075;13.294476;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738780;52.475304;13.290521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738782;52.475464;13.290216;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26738791;52.475342;13.295105;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739103;52.482243;13.289965;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739104;52.479664;13.285190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739109;52.476921;13.280952;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739110;52.476719;13.280942;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739650;52.460472;13.274764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739651;52.460430;13.274986;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739654;52.453552;13.272113;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739656;52.453503;13.272338;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739657;52.456039;13.273355;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739658;52.456005;13.273602;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739661;52.450867;13.270812;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739662;52.450874;13.270574;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739663;52.451019;13.270644;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739708;52.449963;13.251168;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26739715;52.442776;13.240053;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26739716;52.442673;13.240230;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26739721;52.437664;13.232352;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26740507;52.493683;13.310062;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26740508;52.493568;13.310177;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26740510;52.491501;13.312772;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26740526;52.493549;13.309755;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26740530;52.496193;13.308359;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26743961;52.498913;13.307150;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26743962;52.500767;13.306847;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26744211;52.487621;13.308453;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26744440;52.487720;13.308448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26744447;52.485558;13.296331;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26744613;52.523293;13.359355;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745282;52.506317;13.351947;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745310;52.504356;13.350956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745400;52.505905;13.362612;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745575;52.509941;13.364413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745939;52.503464;13.279231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745957;52.498810;13.272179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745960;52.509911;13.281699;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745961;52.510067;13.281680;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745970;52.503674;13.279005;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745972;52.506351;13.280439;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745974;52.506702;13.278140;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745975;52.503601;13.279282;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26745992;52.503532;13.278955;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746022;52.509045;13.371908;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746079;52.505108;13.372080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746095;52.505821;13.368090;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746308;52.503021;13.374937;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26746326;52.501949;13.376889;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26746677;52.502434;13.374754;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746678;52.501606;13.376167;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26746764;52.503510;13.373245;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26747435;52.497894;13.395889;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26747436;52.497814;13.395616;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26747610;52.496292;13.395002;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;26747611;52.496132;13.394981;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26747612;52.496098;13.395206;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;26747618;52.496277;13.395270;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;26747640;52.497604;13.388970;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26747644;52.497375;13.391809;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26748919;52.528366;13.380689;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749240;52.539936;13.370252;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749248;52.539822;13.370451;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749608;52.539902;13.370621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749697;52.541931;13.369974;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749702;52.541935;13.369774;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749711;52.544647;13.370284;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749712;52.545158;13.370393;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749742;52.547607;13.373866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26749743;52.547523;13.374001;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750462;52.530380;13.295669;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750480;52.539913;13.358814;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750488;52.529274;13.296117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750490;52.526470;13.297218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750495;52.526493;13.297416;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750517;52.533886;13.294013;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750531;52.534599;13.297512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750541;52.534443;13.297345;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750552;52.534531;13.294191;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26750906;52.552261;13.381265;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751032;52.543079;13.376404;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751033;52.541847;13.378117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751179;52.544743;13.378657;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751250;52.481686;13.329337;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751256;52.478630;13.328718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751257;52.478764;13.328802;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751260;52.478729;13.332740;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751261;52.478615;13.332789;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751262;52.483780;13.320337;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751271;52.478668;13.344025;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751272;52.478458;13.343778;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751273;52.478569;13.344358;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26751274;52.478359;13.344103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26752693;52.541126;13.393717;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26752735;52.541168;13.393869;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26752897;52.544613;13.390975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26752898;52.544704;13.391123;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26753059;52.534294;13.408114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26753875;52.545967;13.395145;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26753893;52.546284;13.397894;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26753979;52.528957;13.369448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26753984;52.528915;13.369583;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26754211;52.551456;13.403716;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26754340;52.525352;13.365572;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26754358;52.526714;13.370567;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26755227;52.551521;13.367466;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26755229;52.543968;13.355151;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26755580;52.547882;13.361620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26755591;52.549591;13.364412;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26755694;52.545364;13.360804;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26756610;52.538273;13.344501;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26756717;52.542175;13.336625;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26756749;52.542408;13.336284;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26756750;52.542030;13.335579;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26756812;52.526314;13.345372;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26758824;52.534443;13.292962;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26758933;52.536125;13.273512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759011;52.536644;13.271840;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759015;52.536495;13.271831;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759100;52.536739;13.268489;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26759102;52.536564;13.268381;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26759191;52.536663;13.264900;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759197;52.536846;13.264781;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759288;52.538265;13.247791;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759289;52.538044;13.247742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759291;52.538284;13.247611;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759299;52.539345;13.232247;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759300;52.539242;13.231927;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759303;52.538368;13.232221;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759328;52.544033;13.247132;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759330;52.540695;13.232504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759331;52.540703;13.232169;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759373;52.537647;13.217271;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759374;52.537785;13.217400;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759638;52.538898;13.207595;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759652;52.538765;13.207475;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759655;52.539486;13.205515;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759676;52.539616;13.205639;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759713;52.538654;13.200624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759714;52.538586;13.200801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759725;52.534775;13.199432;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759727;52.532974;13.198349;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759728;52.532875;13.198259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759729;52.532825;13.198491;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759730;52.532928;13.198587;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759737;52.533737;13.194521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759739;52.533642;13.194473;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759800;52.506813;13.228409;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759804;52.508755;13.218183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759822;52.513119;13.196896;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759823;52.513161;13.196678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759825;52.513035;13.196653;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759826;52.512993;13.196899;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759828;52.515526;13.184899;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759829;52.515587;13.184577;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759830;52.515419;13.184468;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759831;52.515343;13.184751;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759834;52.516693;13.179148;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759835;52.516617;13.179014;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759850;52.521584;13.188911;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759869;52.529205;13.195552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759887;52.521763;13.188955;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759909;52.521049;13.197836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759910;52.521687;13.188803;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26759911;52.521660;13.189062;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26760192;52.508053;13.328229;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761215;52.500233;13.328853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761218;52.499767;13.321535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761220;52.500385;13.330761;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761221;52.500397;13.330897;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761223;52.499306;13.335214;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761224;52.499271;13.335421;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761232;52.499420;13.335341;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26761245;52.495827;13.330434;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762955;52.496513;13.330407;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762956;52.503918;13.331446;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762957;52.499893;13.342727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762959;52.501896;13.321866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762962;52.506191;13.332555;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762967;52.505241;13.331670;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762972;52.494457;13.337279;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762974;52.506069;13.332413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762979;52.503761;13.331414;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762981;52.494297;13.338472;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762983;52.505352;13.331722;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26762998;52.505569;13.325714;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763003;52.500717;13.313180;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763008;52.505795;13.321746;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763011;52.499462;13.316514;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763015;52.504463;13.335777;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763032;52.504448;13.333988;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763035;52.502434;13.325240;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763036;52.505699;13.325734;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763044;52.500542;13.330794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763047;52.502880;13.327424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763048;52.506157;13.332190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763054;52.503876;13.331235;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763057;52.503716;13.331208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763062;52.503193;13.339416;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763065;52.499882;13.313084;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763067;52.505360;13.331545;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763072;52.505573;13.327834;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763077;52.499977;13.312909;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763083;52.505726;13.323052;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763086;52.500534;13.312959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763093;52.499588;13.339349;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26763861;52.487350;13.330784;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26764819;52.503407;13.403743;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765334;52.505367;13.386624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765651;52.504204;13.359714;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765658;52.503838;13.361683;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765665;52.501030;13.358182;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765668;52.499771;13.362822;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765760;52.506248;13.368624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26765762;52.503067;13.365663;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784424;52.525677;13.306196;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784425;52.522358;13.300431;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784552;52.534336;13.293154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784912;52.517467;13.306623;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784913;52.517361;13.306460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784914;52.517300;13.306639;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784918;52.513454;13.301307;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784919;52.513454;13.301122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784920;52.515396;13.300943;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784921;52.515388;13.300782;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784928;52.519508;13.299710;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784929;52.519543;13.299528;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784954;52.517113;13.300656;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784955;52.517101;13.300501;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784965;52.519333;13.295749;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784966;52.519375;13.296190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784967;52.519096;13.291693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784969;52.518822;13.286620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784971;52.519482;13.295716;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26784972;52.519512;13.296168;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785762;52.510708;13.291591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785763;52.510536;13.291540;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785772;52.512836;13.281535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785774;52.512821;13.281315;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785781;52.512871;13.285321;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785788;52.518311;13.280066;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785789;52.518330;13.280325;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785790;52.518475;13.280308;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785791;52.518459;13.280047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785796;52.518616;13.282835;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26785797;52.518646;13.283418;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26787023;52.488033;13.335155;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26787034;52.481609;13.329511;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26787967;52.505020;13.341277;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26787971;52.505066;13.341114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26788845;52.494678;13.337105;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26788846;52.494499;13.337106;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26804478;52.467506;13.247583;"{""name"":""Kleiner Stern"",""highway"":""traffic_signals""}" berlin;traffic_signals;26806097;52.483376;13.265792;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26822752;52.509418;13.376795;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26822811;52.508408;13.369860;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26822970;52.504375;13.351195;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26822972;52.505497;13.352184;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823001;52.500790;13.363674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823009;52.499901;13.353914;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823010;52.499760;13.354273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823011;52.499203;13.353900;"{""crossing"":""traffic_signals:sound=walk"",""highway"":""traffic_signals""}" berlin;traffic_signals;26823012;52.499168;13.354211;"{""crossing"":""traffic_signals:sound=walk"",""highway"":""traffic_signals""}" berlin;traffic_signals;26823014;52.500469;13.349852;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823015;52.500271;13.349738;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823017;52.502190;13.353305;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823025;52.499786;13.354552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823030;52.498447;13.359620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823032;52.498196;13.359542;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823034;52.497688;13.361975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26823035;52.497959;13.362093;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26835994;52.533855;13.266392;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26838117;52.482189;13.281090;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26838162;52.497280;13.270319;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26838172;52.484295;13.293726;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26838173;52.484188;13.293862;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26840975;52.465080;13.314602;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26840987;52.468151;13.307741;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26840990;52.465706;13.305817;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26840993;52.467396;13.308811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26840994;52.467007;13.309456;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848433;52.486473;13.428956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848434;52.486141;13.430289;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848446;52.481613;13.440021;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26848451;52.480316;13.442665;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848485;52.458595;13.303464;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848552;52.464298;13.296782;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848557;52.464428;13.296892;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848561;52.464546;13.296758;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848645;52.464657;13.296380;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848657;52.458332;13.287192;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848661;52.458340;13.286985;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848668;52.458122;13.286950;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848672;52.458073;13.287173;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848713;52.464382;13.320780;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848789;52.458763;13.315607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848809;52.463093;13.326824;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26848813;52.463291;13.326808;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26848821;52.464008;13.327433;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848925;52.464561;13.327971;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848935;52.468872;13.332615;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848941;52.468937;13.332445;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848988;52.460545;13.327783;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26848997;52.462494;13.326043;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849000;52.461639;13.325220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849003;52.461582;13.325381;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849033;52.460281;13.328443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849059;52.471340;13.329014;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849060;52.471447;13.328931;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849062;52.471279;13.328379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849074;52.471172;13.328280;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849078;52.473392;13.328361;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26849086;52.471561;13.324103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852165;52.471645;13.335299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852168;52.477287;13.328382;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852170;52.477169;13.328381;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852177;52.477188;13.342455;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852183;52.471577;13.335475;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852192;52.477306;13.328563;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852199;52.475483;13.340290;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852208;52.477280;13.342586;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852210;52.475559;13.340125;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852211;52.471386;13.335024;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26852213;52.471310;13.335208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26857722;52.409813;13.403714;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26857723;52.409870;13.404001;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26857732;52.413055;13.421192;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26858261;52.522247;13.368124;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26858358;52.522259;13.368076;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26865688;52.495895;13.361162;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26866513;52.502983;13.350031;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867468;52.494526;13.345856;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867470;52.492249;13.345012;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867471;52.492245;13.345234;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867474;52.489128;13.344919;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867475;52.489151;13.345157;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867476;52.489014;13.345157;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867485;52.500179;13.346231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867489;52.494324;13.345764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867490;52.494328;13.346019;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867694;52.485668;13.344959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867698;52.485558;13.344959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867700;52.486855;13.344949;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867701;52.486877;13.345186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867722;52.484138;13.345448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867729;52.484238;13.345550;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867841;52.482609;13.345148;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867842;52.482609;13.344903;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867843;52.480911;13.345116;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867844;52.480915;13.344873;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26867954;52.485558;13.345172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868052;52.506680;13.289271;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868054;52.506580;13.289283;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868064;52.506470;13.285385;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868065;52.506542;13.285389;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868066;52.506508;13.280536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868067;52.506531;13.280310;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868087;52.506390;13.283709;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868088;52.506489;13.283743;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868547;52.503242;13.349785;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26868548;52.503159;13.350180;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869178;52.506226;13.313863;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869180;52.506023;13.317498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869181;52.505878;13.320087;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869274;52.509579;13.376540;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26869275;52.509399;13.376567;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26869280;52.504944;13.381635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869281;52.499283;13.388726;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869288;52.512367;13.377001;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26869633;52.511139;13.371253;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26869714;52.509239;13.371846;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26870022;52.491493;13.284874;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26870585;52.514587;13.377350;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26870674;52.516289;13.376697;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26870741;52.505154;13.371975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26870782;52.504799;13.371577;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871119;52.548000;13.296940;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871120;52.548122;13.296850;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871121;52.548122;13.296655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871122;52.548004;13.296733;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871407;52.567871;13.311898;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871408;52.567947;13.310560;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871427;52.567970;13.311944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871428;52.568066;13.310613;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26871464;52.524967;13.392917;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26872067;52.538277;13.362505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26873453;52.515701;13.369865;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26873454;52.516132;13.376729;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26875020;52.512218;13.314802;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26875022;52.519203;13.318814;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26875081;52.521584;13.324911;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876398;52.464821;13.385534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876405;52.462978;13.377075;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876452;52.468590;13.385486;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876458;52.468632;13.377895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876572;52.476974;13.376988;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876582;52.485035;13.385824;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876583;52.484924;13.385820;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876584;52.484463;13.385823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876589;52.484528;13.388179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26876601;52.478191;13.385704;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26881968;52.538406;13.326209;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26881969;52.538353;13.325978;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26881973;52.534763;13.328420;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26882245;52.532959;13.328320;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26903227;52.517506;13.325026;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26904677;52.508217;13.274795;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26904678;52.506943;13.278357;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26904680;52.506302;13.279742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26904746;52.509621;13.274150;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;26905396;52.509708;13.273392;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;26905411;52.508831;13.273564;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;26905929;52.434879;13.250800;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26905934;52.435402;13.258225;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26905938;52.435108;13.260602;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26905939;52.435020;13.260308;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26905940;52.434982;13.260508;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26905941;52.433167;13.259562;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906118;52.435101;13.263546;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26906125;52.438248;13.271481;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906127;52.435211;13.263467;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26906137;52.438412;13.271351;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906146;52.441792;13.282825;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906147;52.441730;13.282609;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906159;52.443832;13.288875;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906162;52.441956;13.282685;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906168;52.445847;13.293727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906169;52.445766;13.293508;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906170;52.445560;13.293724;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906172;52.445637;13.293936;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906175;52.446419;13.293011;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906406;52.447716;13.299460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906411;52.449406;13.303521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906413;52.449467;13.304343;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906582;52.454155;13.318360;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906589;52.453983;13.319438;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;26906602;52.454723;13.320192;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906636;52.454792;13.320125;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906640;52.454597;13.319339;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906837;52.458271;13.324869;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26906841;52.456539;13.322696;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906847;52.456905;13.320824;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26906848;52.456852;13.320542;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907201;52.456127;13.323889;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26907202;52.455517;13.325400;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907203;52.455444;13.325569;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907224;52.455868;13.332686;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26907225;52.458260;13.332833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907234;52.453217;13.331103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907235;52.453014;13.331215;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907236;52.453129;13.331315;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907288;52.458378;13.332751;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907678;52.460449;13.327660;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907788;52.461304;13.324873;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907790;52.461258;13.324997;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907935;52.467072;13.337459;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907936;52.466850;13.337867;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907937;52.467194;13.337606;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907938;52.466969;13.338001;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907947;52.465359;13.338806;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26907950;52.466675;13.338502;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26907951;52.466591;13.338341;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26907965;52.467991;13.335021;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907966;52.464615;13.340007;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26907967;52.465576;13.338763;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26908552;52.467480;13.344131;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908554;52.467636;13.347490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908555;52.467644;13.347712;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908556;52.466995;13.347569;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908557;52.467003;13.347794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908558;52.470612;13.347250;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908559;52.470581;13.347454;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908562;52.471180;13.343670;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908569;52.464638;13.340271;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908765;52.477711;13.355671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908766;52.478149;13.355064;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26908924;52.516933;13.324440;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26913850;52.498104;13.388846;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26913851;52.498966;13.385353;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26913854;52.499256;13.380439;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26913881;52.498734;13.380225;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26913884;52.498489;13.385180;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26916066;52.503933;13.345913;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26917796;52.448311;13.276346;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26920961;52.506649;13.345637;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26925148;52.442188;13.265323;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26925149;52.442211;13.265555;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26925646;52.442341;13.270157;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26925679;52.445694;13.283995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26925680;52.445663;13.284207;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26936194;52.497906;13.391960;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26936200;52.498337;13.395701;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26936201;52.498360;13.395962;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26936445;52.489532;13.405738;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938178;52.513378;13.322270;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938192;52.514584;13.315195;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938206;52.511772;13.322173;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938209;52.512051;13.322224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938212;52.513046;13.321162;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938214;52.513161;13.322267;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938217;52.512684;13.322923;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938219;52.512402;13.320390;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938226;52.513187;13.320830;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26938227;52.513260;13.321206;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26943818;52.507519;13.242027;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26943835;52.507736;13.242174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26943836;52.507729;13.241944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26943848;52.511116;13.221670;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26943851;52.506874;13.231863;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952386;52.493519;13.383491;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952393;52.491463;13.376777;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952402;52.489418;13.376732;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952406;52.489857;13.382227;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952408;52.491550;13.382774;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952414;52.492294;13.379482;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952502;52.492550;13.379486;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952503;52.492832;13.387525;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952504;52.490063;13.386327;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952836;52.480877;13.435289;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26952875;52.477551;13.426167;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952883;52.474758;13.427443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26952885;52.476089;13.426843;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26953046;52.470905;13.429462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26953065;52.466434;13.431958;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26953179;52.466881;13.435723;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26953753;52.474960;13.473790;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960736;52.489216;13.450516;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26960738;52.488926;13.454005;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960747;52.502384;13.456806;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960748;52.508984;13.459973;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960755;52.505169;13.471333;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960758;52.513515;13.424309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960761;52.509750;13.421150;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;26960762;52.510998;13.416475;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960766;52.501102;13.394290;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26960768;52.487206;13.426941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26982747;52.568233;13.305496;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26982848;52.526382;13.351721;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26982853;52.526669;13.355446;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26982911;52.526230;13.343039;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983753;52.577671;13.297363;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983754;52.578068;13.298065;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983755;52.578163;13.297890;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983756;52.577812;13.297304;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983781;52.590088;13.287438;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983783;52.588619;13.284755;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983784;52.587776;13.285645;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983788;52.586208;13.287027;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983790;52.586193;13.286831;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26983791;52.587765;13.285472;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984400;52.527325;13.328634;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984409;52.527138;13.330539;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984411;52.526688;13.335489;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984439;52.526348;13.339139;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984647;52.594990;13.285948;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984655;52.595116;13.285854;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984656;52.594845;13.285544;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984657;52.594982;13.285462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984666;52.593792;13.280976;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984667;52.593899;13.280877;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984668;52.590836;13.282584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984669;52.590790;13.282400;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984674;52.593765;13.280773;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984678;52.593872;13.280647;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26984894;52.524521;13.334147;"{""highway"":""traffic_signals""}" berlin;traffic_signals;26989177;52.521290;13.333679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27009128;52.538025;13.326348;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011219;52.514458;13.348480;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011225;52.514870;13.349257;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011229;52.514359;13.349098;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011256;52.514542;13.351711;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011262;52.515221;13.351166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011283;52.515377;13.351105;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011305;52.514324;13.348324;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011308;52.513603;13.338004;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011311;52.513741;13.337984;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011694;52.515148;13.348771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011990;52.517971;13.342149;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27011994;52.518856;13.339978;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27126975;52.409363;13.101510;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27134819;52.420971;13.176579;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176695;52.581024;13.291219;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176696;52.581013;13.291025;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176698;52.582558;13.290006;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176699;52.582569;13.289832;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176888;52.579002;13.299742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176890;52.579052;13.299816;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176892;52.579090;13.299582;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176893;52.579132;13.299679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27176900;52.580746;13.302892;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177316;52.571419;13.313212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177327;52.571594;13.311917;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177333;52.576702;13.314143;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177334;52.576572;13.315098;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177350;52.577888;13.315369;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177351;52.577805;13.315564;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177925;52.550610;13.351887;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177927;52.550392;13.352255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177929;52.554260;13.345114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177932;52.551987;13.349073;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177951;52.556129;13.347916;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177958;52.558273;13.351249;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177974;52.553368;13.343711;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27177983;52.549709;13.350172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186874;52.481812;13.348211;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186876;52.481747;13.348348;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186878;52.481838;13.348471;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186880;52.481899;13.348329;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186882;52.480099;13.352118;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186884;52.480190;13.352232;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186900;52.477814;13.355811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27186911;52.476536;13.357639;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195160;52.528767;13.457796;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195163;52.529015;13.457569;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195188;52.530792;13.455839;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195297;52.537254;13.449474;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195338;52.539284;13.452488;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27195356;52.533581;13.443987;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27195460;52.530602;13.447204;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197159;52.562454;13.326671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197164;52.562450;13.330600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197168;52.560986;13.333264;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197225;52.546318;13.343703;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197226;52.546074;13.344035;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197252;52.549477;13.350512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197710;52.542126;13.349374;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27197711;52.542225;13.349573;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27198560;52.541759;13.335809;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27198562;52.541992;13.335506;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27199799;52.574539;13.380724;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27199823;52.564411;13.393154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27199824;52.563847;13.392054;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;27199839;52.565987;13.395845;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27199990;52.554688;13.396364;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27199991;52.554958;13.396443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27200060;52.555054;13.392297;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27200067;52.555145;13.391405;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27200071;52.555443;13.391445;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27200073;52.555283;13.392349;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27212444;52.467155;13.367170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27212626;52.469707;13.372102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27239355;52.520123;13.162480;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27239426;52.529041;13.119111;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252357;52.431015;13.229772;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252358;52.431076;13.230012;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252359;52.430870;13.230022;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252603;52.430824;13.259282;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252619;52.429260;13.259856;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27252639;52.422070;13.263786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27253363;52.451225;13.287085;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27253366;52.451103;13.287163;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27253368;52.451168;13.287328;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27253799;52.453178;13.286141;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27253800;52.453281;13.285759;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27318588;52.421944;13.179585;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27318589;52.421837;13.179653;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27323530;52.528706;13.122425;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27323555;52.528175;13.110487;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27324702;52.454346;13.144306;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27324727;52.475285;13.120647;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27324730;52.477554;13.120548;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27326034;52.477142;13.360176;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27326073;52.475330;13.359817;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27326074;52.475441;13.359947;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27356662;52.540127;13.204050;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27356672;52.540012;13.202725;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27356680;52.540619;13.202634;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27374459;52.465065;13.328462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27386085;52.406384;13.557985;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27386086;52.406715;13.558238;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27396773;52.381058;13.130764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27411228;52.524914;13.406322;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27411250;52.521347;13.402901;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27431678;52.484402;13.388174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27431838;52.483940;13.394344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432049;52.443127;13.315589;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432050;52.443134;13.315801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432328;52.447048;13.315176;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432330;52.449535;13.315253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432331;52.449612;13.315498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432693;52.435417;13.313244;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27432695;52.435360;13.313439;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27432725;52.489014;13.394443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432729;52.489113;13.393733;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;27432782;52.492149;13.390840;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27432789;52.491428;13.394411;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432794;52.490257;13.400249;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432889;52.483692;13.400304;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432940;52.489113;13.405607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27432942;52.488914;13.407734;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27432943;52.492500;13.402028;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433378;52.451466;13.335380;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433426;52.449986;13.346871;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433647;52.457371;13.355921;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433650;52.456791;13.359404;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433700;52.456429;13.348769;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27433701;52.456421;13.348952;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27434191;52.451118;13.337882;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27435143;52.492416;13.390916;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27435145;52.491711;13.394490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452617;52.431343;13.309806;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452620;52.431427;13.309652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452626;52.431343;13.309556;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452627;52.431259;13.309702;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452628;52.433273;13.307327;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452629;52.433346;13.307509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452630;52.439793;13.300181;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452681;52.432724;13.287047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452691;52.432426;13.279719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452692;52.431904;13.277673;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27452702;52.430653;13.266478;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27452945;52.426346;13.276821;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452969;52.409725;13.273072;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27452982;52.408974;13.267403;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27466343;52.619534;13.304123;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27466430;52.596027;13.291655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484533;52.535549;13.422224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484538;52.534336;13.425752;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484546;52.535618;13.421979;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484564;52.532627;13.412404;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484575;52.548664;13.420568;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27484585;52.542973;13.426316;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27490950;52.397079;13.243545;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27490957;52.400791;13.252431;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27490984;52.400536;13.266863;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27490986;52.400555;13.268645;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27490993;52.400822;13.268775;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27492103;52.437824;13.348349;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27492311;52.431900;13.338166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27492334;52.434475;13.342592;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27492411;52.427872;13.326762;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27492413;52.427780;13.326369;"{""crossing"":""no"",""highway"":""traffic_signals""}" berlin;traffic_signals;27492597;52.405815;13.234970;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27537749;52.513172;13.331628;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27538838;52.470901;13.369466;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;27538881;52.469810;13.371920;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539563;52.492760;13.387744;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539568;52.493004;13.387881;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539580;52.487377;13.386094;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539592;52.485031;13.386086;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539597;52.483246;13.386053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27539857;52.463612;13.402857;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540213;52.459507;13.415873;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540218;52.459595;13.416016;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540475;52.470051;13.385762;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540613;52.451576;13.415365;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540615;52.451618;13.414929;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540623;52.451458;13.415511;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27540631;52.451588;13.416344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541017;52.462337;13.434490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541027;52.461971;13.434640;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541036;52.462032;13.434763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541045;52.462345;13.434648;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541348;52.462704;13.444822;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541358;52.463085;13.444546;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541367;52.463669;13.444299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541374;52.463757;13.444219;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541382;52.463726;13.444075;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541917;52.454288;13.460918;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541923;52.454182;13.460980;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541929;52.454323;13.461540;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27541937;52.454426;13.461473;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27542365;52.465778;13.456139;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27542370;52.465706;13.456302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27544587;52.470055;13.385517;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27554926;52.453106;13.455535;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27554952;52.467670;13.442027;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27554989;52.473362;13.440811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27554990;52.473717;13.440608;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27554997;52.478985;13.437549;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27554999;52.479988;13.436521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555077;52.481236;13.437785;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27555096;52.493465;13.437424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555103;52.491215;13.435209;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555112;52.489880;13.433913;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555211;52.498154;13.421493;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555216;52.498993;13.427610;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;27555217;52.498920;13.427466;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;27555221;52.499027;13.422232;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27555234;52.487442;13.431542;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555275;52.468170;13.460513;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27555993;52.459110;13.400109;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556001;52.452904;13.399368;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556049;52.452534;13.407817;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556061;52.452511;13.408013;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556085;52.452660;13.384621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556167;52.451103;13.378635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556201;52.449661;13.366803;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556297;52.443413;13.375544;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556303;52.445122;13.373983;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556344;52.447224;13.361841;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556349;52.446789;13.360713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556410;52.445267;13.379490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556438;52.443291;13.386327;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556440;52.445572;13.385872;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556461;52.440186;13.387396;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556638;52.439026;13.387779;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556642;52.445564;13.385716;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556650;52.455761;13.384015;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556653;52.459332;13.384596;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556658;52.464821;13.385674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556660;52.466099;13.385681;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27556664;52.468586;13.385719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559635;52.516624;13.260426;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559636;52.516476;13.260180;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559639;52.518806;13.257166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559640;52.518909;13.257426;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559692;52.523834;13.249421;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559693;52.523884;13.249262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559694;52.523956;13.249465;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559704;52.524555;13.247437;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559706;52.524429;13.247345;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559775;52.524879;13.245077;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559777;52.525002;13.245133;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559786;52.526344;13.240218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559787;52.526215;13.240147;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559810;52.516182;13.261083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27559811;52.514862;13.263343;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27560039;52.514812;13.263011;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27585623;52.500851;13.306795;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586408;52.528503;13.220885;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586410;52.528397;13.220973;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586432;52.526947;13.215918;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586433;52.526817;13.216097;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586465;52.527370;13.211696;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586466;52.527245;13.211550;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586468;52.527431;13.211460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586470;52.527317;13.211306;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586497;52.530178;13.204926;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586503;52.530170;13.204601;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27586505;52.530273;13.204730;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27587990;52.529026;13.237000;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27603959;52.486538;13.320233;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27604142;52.486607;13.327683;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27784967;52.494629;13.349761;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785155;52.485706;13.338528;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785156;52.485699;13.338671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785157;52.485607;13.340967;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785158;52.485603;13.341209;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785302;52.484356;13.352944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785304;52.484657;13.353034;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785364;52.486919;13.356984;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785365;52.486866;13.357113;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785374;52.486324;13.360325;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785385;52.486050;13.355994;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785387;52.485977;13.356094;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785390;52.487476;13.354694;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785476;52.485165;13.363519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785479;52.485306;13.363486;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785489;52.486061;13.361413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785496;52.486202;13.351024;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785567;52.494732;13.353977;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785570;52.494644;13.355251;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785840;52.494251;13.361048;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785848;52.493534;13.365514;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27785855;52.493279;13.367114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786067;52.488937;13.362789;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786104;52.490326;13.360312;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786105;52.490391;13.360102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786112;52.490452;13.360418;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786114;52.490505;13.360220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786594;52.489491;13.349030;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27786595;52.489384;13.349051;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;27786596;52.489902;13.353198;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786597;52.489792;13.353224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786927;52.488651;13.340575;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27786929;52.488541;13.340606;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787375;52.488522;13.339367;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787388;52.488419;13.339402;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787557;52.485069;13.369070;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787646;52.485062;13.364808;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787910;52.487865;13.373629;"{""highway"":""traffic_signals""}" berlin;traffic_signals;27787965;52.487713;13.376655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28091940;52.492668;13.370937;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28093013;52.479767;13.360258;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095131;52.460533;13.417838;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095228;52.480171;13.421111;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095233;52.480331;13.421082;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095424;52.480602;13.425015;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095432;52.480625;13.425204;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095437;52.480782;13.424959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095439;52.480801;13.425146;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28095602;52.481335;13.429389;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096028;52.490063;13.386542;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096060;52.495918;13.389635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096063;52.496063;13.389616;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096068;52.497562;13.389236;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096072;52.498047;13.389131;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096096;52.478184;13.385969;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096372;52.484875;13.386087;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096582;52.472439;13.377976;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28096583;52.472439;13.377818;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28150269;52.524399;13.449281;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28150292;52.514511;13.467504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28151271;52.514156;13.453559;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28200189;52.541775;13.273541;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28200228;52.548592;13.270399;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28237292;52.470646;13.516961;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28237343;52.470802;13.516623;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28237510;52.469032;13.514754;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28245703;52.460712;13.503876;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28246501;52.462486;13.513817;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28248044;52.525677;13.339275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248866;52.531761;13.343371;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248867;52.526344;13.343276;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248870;52.526222;13.343246;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248871;52.525429;13.342989;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248876;52.538296;13.344320;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28248879;52.539127;13.344963;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28249778;52.538021;13.344220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28250597;52.468662;13.514929;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28250611;52.468971;13.514353;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;28252015;52.546387;13.358975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252016;52.545181;13.357061;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252019;52.544064;13.354937;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252023;52.551540;13.367261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252024;52.551662;13.367396;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252025;52.549656;13.364309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28252361;52.548481;13.355600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253030;52.548409;13.355483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253032;52.551765;13.354914;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253034;52.553886;13.358996;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253035;52.554119;13.358652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253434;52.457718;13.543481;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;28253982;52.546467;13.359177;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253984;52.546398;13.359299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253985;52.545467;13.360953;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28253986;52.544819;13.362104;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28254757;52.557098;13.365659;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28254758;52.556816;13.365711;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28255087;52.562714;13.364636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28255091;52.563835;13.364367;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28255854;52.562668;13.364418;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300055;52.553814;13.377288;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300063;52.553925;13.377154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300064;52.553802;13.377043;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300100;52.552349;13.381402;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300103;52.552269;13.381574;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300192;52.556858;13.373745;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300202;52.556881;13.373479;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300220;52.556538;13.374136;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300234;52.556561;13.373869;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300252;52.556297;13.377102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300261;52.556602;13.377016;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300270;52.556549;13.377655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300272;52.556274;13.377499;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300377;52.556923;13.369224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300533;52.558674;13.371154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300576;52.559696;13.369801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300577;52.559757;13.369907;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300978;52.556030;13.384244;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300986;52.555763;13.384054;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300992;52.555748;13.384222;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28300996;52.556019;13.384414;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28320472;52.575855;13.271049;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28320486;52.575760;13.277510;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28320759;52.561974;13.254637;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28321261;52.547272;13.247771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28321262;52.548138;13.258880;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28341799;52.460663;13.503626;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28345850;52.567623;13.351325;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373593;52.535480;13.517494;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373611;52.533043;13.475976;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373615;52.526844;13.479517;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373619;52.523071;13.479436;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373623;52.523083;13.479736;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373635;52.510628;13.463819;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373646;52.513943;13.439687;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373648;52.510468;13.437094;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373650;52.517101;13.440565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28373968;52.469162;13.491417;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28373974;52.515820;13.412330;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382469;52.555141;13.225708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382470;52.555092;13.225979;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382518;52.558846;13.227769;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382519;52.558800;13.228053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382521;52.558926;13.228127;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382654;52.549416;13.227144;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28382655;52.549503;13.227413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28394546;52.486568;13.527011;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28394548;52.486595;13.526797;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472250;52.522808;13.197702;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472271;52.525421;13.193956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472292;52.531296;13.197052;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472298;52.517677;13.186116;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472300;52.517620;13.186368;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472303;52.520248;13.187148;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28472305;52.520214;13.187344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28514138;52.507057;13.231829;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28549581;52.462276;13.514736;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28552441;52.521732;13.259179;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28552443;52.521072;13.262891;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28552452;52.521847;13.259235;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28794056;52.527023;13.416013;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28794059;52.558903;13.413044;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28794346;52.544006;13.415549;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28794353;52.540504;13.416416;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;28796697;52.455185;13.514125;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28796790;52.454086;13.513218;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;28797265;52.454468;13.517360;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28932266;52.525490;13.193739;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28933018;52.418312;13.416833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28933019;52.420841;13.427631;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28933020;52.423714;13.436593;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28933023;52.427105;13.446867;"{""highway"":""traffic_signals""}" berlin;traffic_signals;28997946;52.521030;13.263113;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29018805;52.485035;13.376498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29024827;52.508907;13.218379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29025740;52.554291;13.402561;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29025741;52.536079;13.376203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29030457;52.508492;13.260784;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29030466;52.502266;13.266072;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29030468;52.498718;13.272071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047878;52.595387;13.332934;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047881;52.595482;13.332900;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047885;52.593899;13.333293;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047888;52.593830;13.333483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047890;52.595509;13.333071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29047891;52.595413;13.333102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29121104;52.555008;13.365903;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122327;52.536999;13.397016;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122646;52.550735;13.413753;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122648;52.553902;13.408673;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122651;52.554562;13.402575;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122653;52.554192;13.408729;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122659;52.452557;13.433058;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122660;52.452419;13.433260;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122661;52.452690;13.438676;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122662;52.452579;13.438678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29122667;52.448971;13.436276;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123149;52.540718;13.414247;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123397;52.539059;13.423984;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123422;52.528557;13.416957;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123424;52.528423;13.417171;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123430;52.528763;13.409823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123432;52.526932;13.415428;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123434;52.526741;13.415694;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123438;52.525154;13.419613;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123671;52.524021;13.411885;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29123672;52.523884;13.411716;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29150073;52.550552;13.414102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29175413;52.522942;13.197686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29189239;52.560745;13.376974;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29189246;52.560379;13.380181;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29189262;52.564655;13.378045;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29189263;52.564240;13.373534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29192960;52.520039;13.392022;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29194675;52.518192;13.400681;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29207822;52.510662;13.393795;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29207827;52.510792;13.393754;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29207836;52.513981;13.405844;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29208254;52.504288;13.387158;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29208264;52.501114;13.394557;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29209302;52.494450;13.399558;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29209305;52.494560;13.399604;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29209310;52.494423;13.399754;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29209324;52.493877;13.402837;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29209325;52.494030;13.402892;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29210909;52.498409;13.399624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29215057;52.510586;13.410111;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29215077;52.518017;13.417799;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29217280;52.502495;13.414943;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29217293;52.501991;13.416530;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29217294;52.502068;13.416589;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29217317;52.501263;13.419301;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29218326;52.503239;13.420672;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29219437;52.515663;13.418051;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29219438;52.515629;13.418206;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29219440;52.518398;13.407273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29219465;52.522266;13.409421;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221504;52.520031;13.404646;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221506;52.519917;13.404811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221514;52.523952;13.409654;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221583;52.522053;13.416708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221586;52.522026;13.416238;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221602;52.524967;13.419967;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29221603;52.525204;13.420248;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266155;52.533127;13.429270;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266156;52.532986;13.429559;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266244;52.536140;13.432763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266245;52.536320;13.432999;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266247;52.536030;13.433067;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266370;52.534039;13.437237;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266371;52.532085;13.441267;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266372;52.531952;13.441448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266373;52.532150;13.441719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29266374;52.537724;13.428895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269360;52.545525;13.427851;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269369;52.545692;13.427913;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269373;52.545799;13.427679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269377;52.545639;13.427618;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269381;52.547756;13.428786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269475;52.547848;13.428536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269480;52.541340;13.438823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269481;52.541229;13.438681;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269482;52.541100;13.439042;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269483;52.541210;13.439172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269490;52.543400;13.441306;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269491;52.543293;13.441621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269509;52.545425;13.444253;"{""name"":""Greifswalder Stra\u00dfe"",""highway"":""traffic_signals""}" berlin;traffic_signals;29269510;52.545609;13.444691;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269511;52.545498;13.445013;"{""name"":""Greifswalder Stra\u00dfe"",""highway"":""traffic_signals""}" berlin;traffic_signals;29269512;52.545315;13.444551;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29269804;52.523262;13.429653;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29269805;52.523094;13.429623;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29269806;52.523106;13.429907;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29269807;52.523266;13.429925;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29270276;52.526409;13.447444;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29270277;52.525593;13.444783;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29270278;52.524895;13.442449;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29270293;52.525154;13.443895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29270294;52.526222;13.447587;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29270295;52.526325;13.447921;"{""name"":""Landsberger Allee"",""highway"":""traffic_signals""}" berlin;traffic_signals;29271261;52.513580;13.424129;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271356;52.521690;13.435462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271357;52.521835;13.435613;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271377;52.518021;13.432983;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271390;52.517208;13.440809;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271391;52.517235;13.440595;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271392;52.517071;13.440771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271394;52.517841;13.432919;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271680;52.521343;13.446584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271682;52.523895;13.439606;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271704;52.520378;13.451521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271705;52.520481;13.451951;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271706;52.522228;13.450214;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29271707;52.524296;13.448885;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29273048;52.515133;13.431967;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29273064;52.510181;13.430134;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29273065;52.510464;13.430298;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29273080;52.513405;13.424054;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29275853;52.508572;13.434912;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29275855;52.508408;13.434726;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29275987;52.502632;13.446844;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29275991;52.502785;13.446714;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29275992;52.502728;13.446946;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29275999;52.512653;13.445515;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29276014;52.510761;13.451588;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29276217;52.507549;13.427752;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29276220;52.507343;13.428273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29276692;52.501240;13.441643;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276745;52.500214;13.423079;"{""name"":""Heinrichplatz"",""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276746;52.499187;13.422371;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276750;52.499260;13.426431;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276780;52.500332;13.437704;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276959;52.499104;13.426252;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276961;52.499126;13.427157;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29276965;52.500969;13.442151;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29283307;52.448895;13.354906;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29283308;52.446747;13.360507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325953;52.479610;13.377002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325954;52.479691;13.376876;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325955;52.479576;13.376818;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325956;52.479488;13.376941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325966;52.483406;13.376814;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325967;52.483410;13.376988;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325968;52.485035;13.376671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325978;52.485046;13.372283;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325979;52.485050;13.372077;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325982;52.476906;13.376862;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325991;52.481636;13.385798;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325992;52.481625;13.386046;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29325995;52.485008;13.382333;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29420136;52.555084;13.423512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29420746;52.548332;13.450826;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29420764;52.552113;13.465635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29420767;52.554016;13.467441;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421277;52.537159;13.449597;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421278;52.539196;13.452686;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29421303;52.577335;13.483362;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421416;52.567329;13.412136;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421417;52.566189;13.412297;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421723;52.565376;13.406551;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421726;52.570087;13.407250;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29421728;52.570713;13.409661;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29422506;52.572079;13.428687;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29428372;52.558674;13.386316;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29428373;52.558708;13.386196;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29489362;52.572483;13.365953;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29489368;52.567238;13.362435;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29490326;52.571892;13.379995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29492958;52.567276;13.362614;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29492980;52.573666;13.351838;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29492981;52.573837;13.351871;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29498368;52.484245;13.385830;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29498369;52.484249;13.386075;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29498394;52.476845;13.377069;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29498423;52.476780;13.376946;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533773;52.424919;13.373017;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533779;52.422409;13.370696;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533795;52.439247;13.381697;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533796;52.437878;13.380391;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533804;52.434795;13.378266;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29533811;52.429741;13.375870;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29551509;52.599846;13.252066;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29551855;52.590557;13.292000;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29551949;52.583122;13.300025;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29552076;52.602097;13.324828;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29561053;52.367134;13.422189;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29580984;52.417484;13.438143;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29621401;52.504322;13.620656;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29621436;52.501240;13.641975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29621613;52.504196;13.620640;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29653735;52.465736;13.385509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29653738;52.465733;13.385679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29654547;52.439846;13.392129;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29654549;52.440804;13.391771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29656704;52.431919;13.459957;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29657360;52.455704;13.369913;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29657655;52.452641;13.384415;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29657699;52.424831;13.435568;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29657790;52.394756;13.419588;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29658416;52.446720;13.402141;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658420;52.459469;13.416109;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658449;52.460438;13.417959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658454;52.464645;13.432895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658627;52.467113;13.370262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658890;52.440193;13.395334;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29658897;52.440060;13.394592;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29674290;52.458172;13.384132;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29674292;52.458157;13.384290;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29683684;52.452789;13.371878;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;29683687;52.455299;13.375438;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29683696;52.455402;13.375172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29683698;52.455463;13.375718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29683702;52.455475;13.375299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29683703;52.455631;13.375627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29686212;52.561073;13.333363;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29686215;52.550308;13.339064;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29686271;52.556923;13.334687;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29686272;52.556812;13.334508;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29689182;52.561707;13.326234;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29689184;52.561687;13.325940;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29690634;52.573631;13.343619;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29690659;52.569237;13.329853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29690662;52.575546;13.332036;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29690839;52.565624;13.321754;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29690840;52.565552;13.321720;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691228;52.575397;13.332193;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691249;52.575405;13.331996;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691259;52.499065;13.646705;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691517;52.583248;13.343703;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691792;52.587376;13.334597;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691793;52.587486;13.334570;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29691794;52.587498;13.334795;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29709475;52.448059;13.385244;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29709476;52.448051;13.385408;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29709995;52.440880;13.381305;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710798;52.582413;13.319516;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710801;52.587505;13.323987;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710802;52.587521;13.323774;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710803;52.587658;13.323915;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710804;52.587650;13.324115;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29710852;52.583923;13.309531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29711524;52.498180;13.268381;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29711645;52.581989;13.305437;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29720800;52.481743;13.440191;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29720814;52.487160;13.421369;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;29720820;52.488140;13.414068;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29736117;52.486046;13.430172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29737236;52.446774;13.401940;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29768656;52.634720;13.496608;"{""note"":""Dorfkreuzung"",""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29768657;52.632782;13.500265;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29768666;52.618103;13.487710;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29768672;52.609325;13.481280;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29768693;52.591377;13.453541;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29768694;52.589996;13.453152;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29768717;52.567211;13.440190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29769449;52.427929;13.405174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29769509;52.434422;13.390060;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29769516;52.420807;13.433982;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29769518;52.421764;13.437904;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29778602;52.572052;13.428955;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29778886;52.561001;13.457117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29779119;52.550255;13.458680;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784556;52.527332;13.450741;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784557;52.527161;13.450850;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784655;52.523083;13.453640;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784670;52.525139;13.452228;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784672;52.525558;13.458219;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784919;52.513550;13.477022;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29784923;52.517094;13.461121;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785111;52.508560;13.451032;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785113;52.510696;13.452032;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785114;52.507511;13.450270;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29785147;52.503601;13.444163;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785475;52.501690;13.450776;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785485;52.502953;13.457083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29785854;52.506592;13.458872;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29786484;52.501183;13.459154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29786490;52.499954;13.466057;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29786496;52.497505;13.464636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29787097;52.493923;13.454319;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29787098;52.494225;13.454679;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29787103;52.492897;13.459143;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29787108;52.494019;13.460608;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29787110;52.492836;13.459399;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29787479;52.500053;13.443879;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29788837;52.486359;13.446362;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29789680;52.493912;13.403600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29789682;52.493790;13.403436;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29789683;52.493538;13.405873;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29789685;52.493427;13.405793;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29789701;52.492035;13.412607;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29789703;52.491909;13.412534;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29789705;52.491814;13.413346;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29789706;52.491711;13.413271;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29789730;52.493176;13.414289;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;29789731;52.493343;13.413629;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;29789748;52.490986;13.416281;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29790215;52.490459;13.423597;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794142;52.516636;13.479530;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794177;52.526505;13.479928;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794178;52.526924;13.479896;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794181;52.532982;13.476432;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794182;52.533096;13.476329;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794183;52.532932;13.476073;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794215;52.529701;13.460948;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794218;52.531376;13.469020;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794219;52.531490;13.468941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794320;52.529369;13.460500;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794828;52.536011;13.473442;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794829;52.536148;13.473328;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794830;52.536171;13.473565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794831;52.536106;13.473626;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794851;52.532097;13.471636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29794852;52.531933;13.471722;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29796812;52.512646;13.484345;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29803523;52.503075;13.473544;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29804020;52.502007;13.481399;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29804023;52.499035;13.480559;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29805981;52.510662;13.500388;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29805989;52.509655;13.498102;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806003;52.505981;13.495914;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806029;52.500938;13.492972;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806034;52.500156;13.496306;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806161;52.509666;13.503555;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806182;52.505543;13.511465;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806206;52.505348;13.513426;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29806606;52.509979;13.519530;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29806607;52.509750;13.519495;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29808670;52.496876;13.506930;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29808672;52.496311;13.509590;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29808680;52.495827;13.524411;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29808709;52.436848;13.231490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29808818;52.493580;13.526199;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29809391;52.509499;13.546338;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29809410;52.516548;13.545361;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29825865;52.489082;13.407896;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29831325;52.454361;13.319071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29831420;52.477791;13.308173;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29831523;52.491432;13.312615;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29831527;52.505447;13.333801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29831562;52.521397;13.333797;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29845354;52.508663;13.218066;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29846057;52.511021;13.171591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857950;52.534477;13.537206;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857959;52.534668;13.537038;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857969;52.525726;13.540146;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857970;52.525936;13.540212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857984;52.525707;13.533636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857985;52.525501;13.533695;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857990;52.526047;13.519770;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29857995;52.525826;13.519795;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858023;52.525829;13.519391;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858024;52.526031;13.519366;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858029;52.535309;13.517256;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858030;52.535461;13.517185;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858037;52.542828;13.541766;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858049;52.535324;13.517615;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858057;52.536381;13.524761;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858075;52.542824;13.550111;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858076;52.542866;13.550259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858084;52.536503;13.524688;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858104;52.542988;13.550160;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858454;52.550777;13.548454;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858455;52.554306;13.551577;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858458;52.557713;13.554443;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858462;52.550861;13.548222;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858492;52.553596;13.545122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858549;52.570404;13.565667;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858561;52.570477;13.565456;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858605;52.574944;13.574184;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29858606;52.575287;13.576442;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29865864;52.399513;13.206816;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29879265;52.509438;13.550673;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29881315;52.509331;13.553540;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29881316;52.509029;13.553173;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29881317;52.508701;13.561583;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29881318;52.508556;13.561521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29884236;52.434372;13.389739;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29884985;52.503075;13.561663;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885007;52.534328;13.566204;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885018;52.540756;13.569868;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885021;52.546032;13.571694;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885022;52.546268;13.571742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885031;52.540783;13.569661;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885034;52.545925;13.571343;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885035;52.546150;13.571398;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885046;52.544552;13.564422;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885047;52.544559;13.564808;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885052;52.546982;13.575201;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885062;52.544727;13.564372;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885063;52.544762;13.564778;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885068;52.547153;13.575081;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885195;52.468632;13.374082;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885303;52.533264;13.550334;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885309;52.534225;13.557242;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885314;52.541477;13.563456;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29885329;52.541557;13.563219;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;29885362;52.547791;13.558072;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29885368;52.550678;13.548368;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29890795;52.427795;13.405186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29916137;52.555950;13.567224;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29916382;52.549072;13.583308;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29916387;52.549347;13.587108;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29916388;52.549309;13.583160;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918194;52.544182;13.620018;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918195;52.548584;13.593064;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918196;52.546810;13.603554;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918522;52.546612;13.603683;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918523;52.546780;13.603742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918527;52.538654;13.604273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918528;52.536701;13.604693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918541;52.529228;13.625935;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918549;52.536762;13.605029;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29918930;52.487507;13.299943;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29927301;52.527241;13.330668;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29962151;52.523727;13.329803;"{""highway"":""traffic_signals""}" berlin;traffic_signals;29988104;52.485931;13.361462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30006292;52.412697;13.392693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30006296;52.409214;13.376091;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30006297;52.409241;13.376270;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30006298;52.409130;13.376324;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30010870;52.440212;13.395156;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30027164;52.474674;13.361797;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30051642;52.410484;13.376249;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30051645;52.412510;13.361514;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30051660;52.419991;13.390609;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30096718;52.414341;13.350335;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30096720;52.413319;13.355331;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30096722;52.417461;13.314721;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30096725;52.417404;13.314595;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30096733;52.438416;13.384259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099353;52.423973;13.314388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099357;52.421131;13.310655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099363;52.430847;13.317559;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099366;52.421303;13.310689;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099373;52.421211;13.310807;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099376;52.430859;13.317419;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30099377;52.430759;13.317558;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30100090;52.430477;13.312355;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30134861;52.419338;13.249104;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30134985;52.421932;13.298450;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30135002;52.417870;13.305221;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30138571;52.428841;13.328823;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30205899;52.440430;13.244775;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30205926;52.440605;13.255229;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30245210;52.483822;13.282309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30301195;52.543644;13.338639;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30301197;52.543346;13.338841;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30301214;52.560863;13.333500;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30325037;52.446671;13.360579;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30349241;52.441734;13.261685;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30411612;52.547958;13.361534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30427949;52.525768;13.306200;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30427952;52.525764;13.305977;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30429498;52.570831;13.398346;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30429692;52.576832;13.398287;"{""note"":""tempor\u00e4re Heinrich-Heine Umfahrung"",""highway"":""traffic_signals""}" berlin;traffic_signals;30431693;52.581482;13.404219;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30432015;52.583809;13.390996;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;30432018;52.586113;13.389686;"{""note"":""Baustellenampel \/ Abbiegebeschr\u00e4nkung wegen Baustelle"",""highway"":""traffic_signals""}" berlin;traffic_signals;30432115;52.587952;13.368771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30433667;52.596874;13.360531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30433714;52.596653;13.356138;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30433715;52.596401;13.351017;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30433732;52.591499;13.346118;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30433744;52.596199;13.347634;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30435422;52.595818;13.339410;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30436159;52.591667;13.326319;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30436160;52.592072;13.326615;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30437187;52.604649;13.326546;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30437208;52.607010;13.319738;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30437211;52.607861;13.323808;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30482870;52.509171;13.282002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30516515;52.383209;13.121762;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30554089;52.588554;13.430215;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30554109;52.572277;13.414741;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30558166;52.590031;13.430819;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30559324;52.592903;13.431703;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30559359;52.585583;13.402636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30561507;52.592407;13.398424;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;30561524;52.593117;13.402830;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;30624409;52.566967;13.477069;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30683582;52.548649;13.466938;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30683634;52.551785;13.465823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30683671;52.550587;13.475721;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;30684912;52.565048;13.492277;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30684913;52.564674;13.495072;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30684927;52.565159;13.492309;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30684928;52.564800;13.495126;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;30690648;52.573368;13.504937;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30690659;52.575851;13.503287;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30691212;52.569267;13.526626;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30691255;52.572323;13.564404;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692650;52.548519;13.508688;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692651;52.549023;13.501299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692658;52.548500;13.508378;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692763;52.550117;13.508090;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692765;52.550076;13.508486;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30692770;52.549946;13.508746;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694246;52.533455;13.484997;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694248;52.533661;13.484962;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694257;52.533886;13.491774;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694261;52.534195;13.499732;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694262;52.534035;13.491753;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694266;52.534344;13.499710;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694272;52.534588;13.505622;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694273;52.534725;13.505596;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30694277;52.535290;13.514251;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30736687;52.529327;13.296441;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30736688;52.530430;13.296001;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30736705;52.541103;13.368664;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30738238;52.442406;13.354018;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30738639;52.434574;13.361990;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30739798;52.431942;13.346346;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30770319;52.621132;13.235858;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30770328;52.614399;13.244843;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30774329;52.589985;13.283334;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30774341;52.590919;13.282499;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30784086;52.542908;13.198628;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30784114;52.542809;13.198453;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30784417;52.548904;13.193512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30784424;52.545277;13.208063;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30784461;52.540672;13.202382;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30818175;52.611332;13.318149;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30818866;52.613506;13.343893;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30819613;52.602009;13.329674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30819616;52.603558;13.334360;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30820549;52.600033;13.341179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30821366;52.618607;13.390516;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30822847;52.618565;13.390331;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30822872;52.636356;13.375901;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30822924;52.602806;13.402053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30830935;52.562550;13.330763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30968456;52.497047;13.290092;"{""highway"":""traffic_signals""}" berlin;traffic_signals;30968457;52.496944;13.290158;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31012008;52.507233;13.565563;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31032527;52.465225;13.421536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31032759;52.460899;13.435063;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31032766;52.468494;13.430752;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31033930;52.447296;13.396053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31036344;52.431988;13.391445;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31036800;52.419487;13.398183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31049079;52.419571;13.398543;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31049220;52.415688;13.406248;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31049221;52.415802;13.406183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31054788;52.426662;13.394122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31054794;52.426723;13.394436;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31058252;52.452545;13.432812;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31058253;52.452415;13.432980;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31058257;52.448833;13.436167;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31178993;52.453266;13.143546;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31258106;52.523460;13.359708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31259025;52.481583;13.431605;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31259331;52.471081;13.452192;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31259334;52.473858;13.455841;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31259335;52.473942;13.455866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31259852;52.480434;13.442825;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31260170;52.477631;13.448037;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31260523;52.475845;13.439632;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31271886;52.451042;13.295820;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31347576;52.453484;13.315470;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31347598;52.453411;13.315538;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31348468;52.451008;13.338046;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31348488;52.451107;13.338073;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31348555;52.450951;13.337580;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31350671;52.444340;13.338824;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31357325;52.486603;13.428953;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31357327;52.487328;13.426959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31357344;52.460884;13.481337;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31357356;52.470268;13.464807;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31357357;52.470352;13.464686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31372375;52.502380;13.353073;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31386435;52.442688;13.296993;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31386830;52.432434;13.299215;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31387114;52.426628;13.304220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31387148;52.428928;13.306893;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390255;52.449615;13.304210;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390457;52.466782;13.337993;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390642;52.465656;13.456183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390644;52.464500;13.448388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390645;52.465080;13.451289;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390653;52.468098;13.460686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390656;52.470169;13.464645;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390657;52.471359;13.466905;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31390711;52.471458;13.466772;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31390720;52.465149;13.451253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31390721;52.464569;13.448311;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31396729;52.419415;13.158768;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31396730;52.419518;13.158877;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31424532;52.413620;13.222379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31451403;52.449921;13.270269;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31492399;52.455746;13.577101;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31492403;52.459026;13.579847;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31492408;52.463142;13.583818;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31492466;52.453175;13.593179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31492513;52.451588;13.593112;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31532410;52.485001;13.573584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31532419;52.505085;13.581552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31532420;52.505184;13.581553;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31532812;52.463226;13.583637;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31669453;52.553375;13.153495;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31669806;52.551090;13.165344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31669864;52.535957;13.156750;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;31669866;52.533173;13.157996;"{""highway"":""traffic_signals""}" berlin;traffic_signals;31961242;52.536163;13.204425;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32266938;52.426292;13.526670;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;32266940;52.423031;13.525914;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32349745;52.412453;13.349783;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32349787;52.405273;13.356103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32350733;52.412354;13.362320;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32351077;52.425289;13.332301;"{""highway"":""traffic_signals""}" berlin;traffic_signals;32855157;52.671234;13.279887;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017633;52.547459;13.184726;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017635;52.547489;13.184565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017638;52.546185;13.191544;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017639;52.551521;13.185453;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017642;52.551476;13.185590;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017675;52.555328;13.198620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017688;52.554062;13.207630;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017690;52.554054;13.207821;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017696;52.559010;13.207928;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017700;52.562031;13.197009;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017706;52.555710;13.207450;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017707;52.541531;13.183288;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017708;52.541451;13.183459;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33017710;52.548710;13.178061;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33018533;52.559002;13.208134;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33018536;52.561646;13.208517;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33018539;52.560226;13.218911;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33018551;52.565388;13.209205;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33018552;52.565365;13.209390;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33063435;52.413918;13.242563;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205303;52.523552;13.161799;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205314;52.521320;13.162647;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205353;52.533474;13.169390;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205354;52.533604;13.169419;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205355;52.534058;13.181671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205366;52.536263;13.182058;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205370;52.538372;13.182364;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205371;52.538464;13.182399;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205378;52.537540;13.187435;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205420;52.547588;13.184757;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33205422;52.546303;13.191525;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33206768;52.541683;13.167909;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33206882;52.543068;13.157888;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33206884;52.543102;13.157751;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33206897;52.544575;13.151191;"{""crossing"":""unmarked"",""highway"":""traffic_signals""}" berlin;traffic_signals;33206969;52.548847;13.178122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33206984;52.547615;13.184603;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33209407;52.536743;13.189922;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33210059;52.535492;13.195290;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33211661;52.531372;13.158633;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33211720;52.533058;13.158034;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33236652;52.551826;13.120704;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33484080;52.542866;13.239646;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33484081;52.542919;13.239864;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33484094;52.544197;13.247026;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33484095;52.544075;13.246957;"{""highway"":""traffic_signals""}" berlin;traffic_signals;33484152;52.546764;13.230438;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34055947;52.666794;13.282811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34104940;52.532982;13.592659;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34182450;52.547878;13.209753;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34660443;52.426422;13.374504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34666593;52.462440;13.326198;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34780709;52.534637;13.199627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34781671;52.533386;13.206985;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34782258;52.531754;13.213787;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34812301;52.464439;13.413519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967003;52.445717;13.449948;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967004;52.445545;13.449931;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967046;52.452591;13.452122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967047;52.452484;13.452170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967070;52.445518;13.454948;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34967071;52.445332;13.455013;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968247;52.436954;13.447529;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968248;52.436844;13.451155;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968250;52.436756;13.451335;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968252;52.436768;13.450976;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968307;52.434193;13.456221;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968325;52.431995;13.460102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;34968326;52.431885;13.460202;"{""highway"":""traffic_signals""}" berlin;traffic_signals;35107209;52.452572;13.438507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;35107210;52.452679;13.438496;"{""highway"":""traffic_signals""}" berlin;traffic_signals;35110809;52.440536;13.434689;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;35110810;52.440250;13.434910;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;35233743;52.562737;13.346076;"{""highway"":""traffic_signals""}" berlin;traffic_signals;35244866;52.567581;13.351079;"{""highway"":""traffic_signals""}" berlin;traffic_signals;35966308;52.501442;13.275535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;38920778;52.430744;13.532779;"{""highway"":""traffic_signals""}" berlin;traffic_signals;49545308;52.526367;13.499789;"{""highway"":""traffic_signals""}" berlin;traffic_signals;49823805;52.556923;13.528220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;49840926;52.554417;13.538408;"{""highway"":""traffic_signals""}" berlin;traffic_signals;50134174;52.564529;13.508867;"{""highway"":""traffic_signals""}" berlin;traffic_signals;50808060;52.539604;13.514329;"{""highway"":""traffic_signals""}" berlin;traffic_signals;50808066;52.546375;13.509617;"{""highway"":""traffic_signals""}" berlin;traffic_signals;50808206;52.546379;13.509295;"{""highway"":""traffic_signals""}" berlin;traffic_signals;50808209;52.539551;13.514071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;51581216;52.553780;13.467333;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;52003611;52.515705;13.498607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;52151282;52.521935;13.416136;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;52599735;52.534168;13.437627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;52645620;52.514919;13.583687;"{""highway"":""traffic_signals""}" berlin;traffic_signals;52645631;52.520832;13.588059;"{""highway"":""traffic_signals""}" berlin;traffic_signals;52664443;52.536613;13.604723;"{""highway"":""traffic_signals""}" berlin;traffic_signals;52664445;52.536713;13.605068;"{""highway"":""traffic_signals""}" berlin;traffic_signals;54631314;52.502132;13.280976;"{""highway"":""traffic_signals""}" berlin;traffic_signals;55035684;52.526684;13.485344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;55042772;52.523197;13.485527;"{""highway"":""traffic_signals""}" berlin;traffic_signals;55198489;52.513767;13.524662;"{""highway"":""traffic_signals""}" berlin;traffic_signals;55208813;52.511951;13.492586;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;55209414;52.516132;13.493660;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;55892902;52.492123;13.527099;"{""highway"":""traffic_signals""}" berlin;traffic_signals;57343510;52.426769;13.519803;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;59380577;52.469059;13.491266;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;59388408;52.528782;13.519430;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59388409;52.528770;13.519120;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59684207;52.442978;13.296688;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59718228;52.474098;13.713261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59850779;52.505009;13.598733;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59850780;52.504875;13.598721;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59851166;52.504967;13.590853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59851167;52.505112;13.590867;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59851256;52.504986;13.588128;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59851257;52.505108;13.588216;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59893232;52.554024;13.371471;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59905492;52.488274;13.414120;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59931141;52.487808;13.322615;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59931142;52.486530;13.326387;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59931144;52.486450;13.326388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59955202;52.542805;13.541498;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59955217;52.542744;13.541704;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59955222;52.542889;13.541568;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59955480;52.528107;13.548685;"{""highway"":""traffic_signals""}" berlin;traffic_signals;59978773;52.551208;13.165405;"{""highway"":""traffic_signals""}" berlin;traffic_signals;60180388;52.512737;13.182757;"{""highway"":""traffic_signals""}" berlin;traffic_signals;60180392;52.509266;13.180311;"{""highway"":""traffic_signals""}" berlin;traffic_signals;60345087;52.350788;13.629344;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;60668468;52.492168;13.319749;"{""highway"":""traffic_signals""}" berlin;traffic_signals;60668470;52.492294;13.319622;"{""highway"":""traffic_signals""}" berlin;traffic_signals;60668853;52.489021;13.315979;"{""highway"":""traffic_signals""}" berlin;traffic_signals;61693468;52.534409;13.557008;"{""highway"":""traffic_signals""}" berlin;traffic_signals;61771103;52.550705;13.414128;"{""highway"":""traffic_signals""}" berlin;traffic_signals;61771109;52.548809;13.420718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;61771347;52.551289;13.403779;"{""highway"":""traffic_signals""}" berlin;traffic_signals;61771575;52.550972;13.408181;"{""highway"":""traffic_signals""}" berlin;traffic_signals;64964299;52.394146;13.266714;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66338646;52.550072;13.572714;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66352177;52.547844;13.558816;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66376082;52.555222;13.574572;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66376479;52.555134;13.574533;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66396790;52.548561;13.593200;"{""highway"":""traffic_signals""}" berlin;traffic_signals;66398850;52.549538;13.587484;"{""highway"":""traffic_signals""}" berlin;traffic_signals;68372054;52.590961;13.442247;"{""highway"":""traffic_signals""}" berlin;traffic_signals;68435087;52.615349;13.444812;"{""highway"":""traffic_signals""}" berlin;traffic_signals;68435104;52.618008;13.448735;"{""highway"":""traffic_signals""}" berlin;traffic_signals;70880309;52.627625;13.311393;"{""highway"":""traffic_signals""}" berlin;traffic_signals;72709884;52.516468;13.545361;"{""highway"":""traffic_signals""}" berlin;traffic_signals;72759775;52.487602;13.299813;"{""highway"":""traffic_signals""}" berlin;traffic_signals;73729228;52.514988;13.583620;"{""highway"":""traffic_signals""}" berlin;traffic_signals;73768179;52.517185;13.589188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;73770814;52.514069;13.590975;"{""highway"":""traffic_signals""}" berlin;traffic_signals;73778240;52.548378;13.593081;"{""highway"":""traffic_signals""}" berlin;traffic_signals;74877812;52.500153;13.342861;"{""highway"":""traffic_signals""}" berlin;traffic_signals;74947181;52.437256;13.562137;"{""highway"":""traffic_signals""}" berlin;traffic_signals;75070774;52.459030;13.579731;"{""highway"":""traffic_signals""}" berlin;traffic_signals;75138126;52.452927;13.593198;"{""highway"":""traffic_signals""}" berlin;traffic_signals;75670662;52.650936;13.540752;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;76598376;52.646832;13.450470;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;76598379;52.643700;13.479511;"{""highway"":""traffic_signals""}" berlin;traffic_signals;76633693;52.602283;13.431379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;76652370;52.614513;13.442776;"{""highway"":""traffic_signals""}" berlin;traffic_signals;78510453;52.508476;13.257729;"{""highway"":""traffic_signals""}" berlin;traffic_signals;78647375;52.508690;13.258468;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79358794;52.577049;13.583040;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79391340;52.555996;13.567633;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79391356;52.557808;13.554528;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79391357;52.557880;13.554322;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79812790;52.507347;13.277260;"{""highway"":""traffic_signals""}" berlin;traffic_signals;79812803;52.507034;13.276972;"{""highway"":""traffic_signals""}" berlin;traffic_signals;80007284;52.602299;13.431086;"{""highway"":""traffic_signals""}" berlin;traffic_signals;80184057;52.577641;13.428460;"{""highway"":""traffic_signals""}" berlin;traffic_signals;81227035;52.533058;13.198946;"{""highway"":""traffic_signals""}" berlin;traffic_signals;81398151;52.528629;13.192516;"{""highway"":""traffic_signals""}" berlin;traffic_signals;81398241;52.529099;13.195510;"{""highway"":""traffic_signals""}" berlin;traffic_signals;81398245;52.529076;13.195747;"{""highway"":""traffic_signals""}" berlin;traffic_signals;82449774;52.466885;13.338139;"{""highway"":""traffic_signals""}" berlin;traffic_signals;85720710;52.534325;13.566432;"{""highway"":""traffic_signals""}" berlin;traffic_signals;86030003;52.451588;13.593326;"{""highway"":""traffic_signals""}" berlin;traffic_signals;86030007;52.452927;13.593390;"{""highway"":""traffic_signals""}" berlin;traffic_signals;86049391;52.438534;13.592585;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;88591101;52.428421;13.346962;"{""highway"":""traffic_signals""}" berlin;traffic_signals;91401151;52.551792;13.465263;"{""highway"":""traffic_signals""}" berlin;traffic_signals;91401167;52.551857;13.465959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;91414324;52.556686;13.467181;"{""highway"":""traffic_signals""}" berlin;traffic_signals;91416118;52.557053;13.466719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;91720348;52.550575;13.413721;"{""highway"":""traffic_signals""}" berlin;traffic_signals;94487952;52.425613;13.545336;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;94934635;52.452862;13.569596;"{""highway"":""traffic_signals""}" berlin;traffic_signals;94946360;52.444084;13.578507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;94950163;52.440971;13.586593;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;94959539;52.452797;13.569418;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95048676;52.540787;13.203836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95048681;52.540218;13.204217;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95729187;52.580685;13.363389;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95734865;52.478317;13.345080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95760103;52.588150;13.339773;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95760120;52.588051;13.339854;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95760121;52.588093;13.340029;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95790027;52.563812;13.364190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95916868;52.543797;13.599538;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95916889;52.549316;13.587359;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95916890;52.544250;13.603052;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95916891;52.544075;13.603088;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95916892;52.544094;13.603475;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95919670;52.538677;13.604591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;95926576;52.547581;13.598925;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;95926714;52.547428;13.598848;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;95949261;52.440674;13.586419;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;96492262;52.446693;13.506693;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;96516593;52.499157;13.480705;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;97636932;52.630775;13.499347;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;97859299;52.634495;13.496277;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;98973665;52.526310;13.387363;"{""highway"":""traffic_signals""}" berlin;traffic_signals;98977836;52.529400;13.405480;"{""highway"":""traffic_signals""}" berlin;traffic_signals;98978100;52.528603;13.409920;"{""highway"":""traffic_signals""}" berlin;traffic_signals;98983781;52.540112;13.412007;"{""highway"":""traffic_signals""}" berlin;traffic_signals;100032633;52.512791;13.484383;"{""highway"":""traffic_signals""}" berlin;traffic_signals;100078509;52.514557;13.477833;"{""highway"":""traffic_signals""}" berlin;traffic_signals;100167360;52.456184;13.475418;"{""highway"":""traffic_signals""}" berlin;traffic_signals;100745597;52.450115;13.756823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101171046;52.556034;13.567276;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101179606;52.568798;13.549666;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101333380;52.435474;13.541420;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101472351;52.502228;13.353133;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101480420;52.500347;13.345933;"{""highway"":""traffic_signals""}" berlin;traffic_signals;101487541;52.506542;13.345685;"{""highway"":""traffic_signals""}" berlin;traffic_signals;102918593;52.513489;13.307169;"{""highway"":""traffic_signals""}" berlin;traffic_signals;103552203;52.503979;13.352566;"{""highway"":""traffic_signals""}" berlin;traffic_signals;103554406;52.504322;13.351596;"{""highway"":""traffic_signals""}" berlin;traffic_signals;107606974;52.593971;13.333512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;116095899;52.491299;13.316698;"{""highway"":""traffic_signals""}" berlin;traffic_signals;116095906;52.491127;13.316660;"{""highway"":""traffic_signals""}" berlin;traffic_signals;116592063;52.415733;13.531213;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;122341666;52.477539;13.478638;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;122341674;52.477661;13.478844;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;128376938;52.510078;13.284228;"{""highway"":""traffic_signals""}" berlin;traffic_signals;128376943;52.510223;13.284212;"{""highway"":""traffic_signals""}" berlin;traffic_signals;128415539;52.534649;13.294402;"{""highway"":""traffic_signals""}" berlin;traffic_signals;128415587;52.534298;13.292839;"{""highway"":""traffic_signals""}" berlin;traffic_signals;129652639;52.415970;13.497665;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;130093531;52.534424;13.294503;"{""highway"":""traffic_signals""}" berlin;traffic_signals;130093532;52.533329;13.294313;"{""highway"":""traffic_signals""}" berlin;traffic_signals;130093533;52.533356;13.293794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;130097525;52.463146;13.326671;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;130101293;52.474590;13.361534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;130101301;52.474361;13.363032;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133250944;52.534908;13.293489;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133250946;52.534828;13.293772;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133250951;52.534729;13.293570;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133262472;52.534081;13.293836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133262508;52.533894;13.293719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;133310416;52.533497;13.293938;"{""highway"":""traffic_signals""}" berlin;traffic_signals;134560302;52.567589;13.574279;"{""highway"":""traffic_signals""}" berlin;traffic_signals;134560312;52.560799;13.569488;"{""highway"":""traffic_signals""}" berlin;traffic_signals;134600409;52.555916;13.567545;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138459579;52.420578;13.473355;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;138461467;52.425812;13.473970;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138496258;52.425705;13.473968;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138496279;52.427719;13.468051;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138498924;52.427723;13.468251;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138498926;52.427788;13.468175;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138548556;52.424156;13.485342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138559855;52.424049;13.485490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138559856;52.424152;13.485624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138562268;52.424255;13.485472;"{""highway"":""traffic_signals""}" berlin;traffic_signals;138628551;52.427658;13.468129;"{""highway"":""traffic_signals""}" berlin;traffic_signals;142490285;52.528957;13.119105;"{""highway"":""traffic_signals""}" berlin;traffic_signals;144581468;52.428890;13.256272;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;148493518;52.423122;13.473299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;150944687;52.592903;13.547099;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;150956211;52.487305;13.574930;"{""highway"":""traffic_signals""}" berlin;traffic_signals;150996044;52.522568;13.300671;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;150996211;52.524361;13.303126;"{""highway"":""traffic_signals""}" berlin;traffic_signals;150996212;52.525585;13.303596;"{""highway"":""traffic_signals""}" berlin;traffic_signals;151012843;52.514137;13.562955;"{""highway"":""traffic_signals""}" berlin;traffic_signals;151012844;52.514446;13.562867;"{""highway"":""traffic_signals""}" berlin;traffic_signals;151021325;52.526405;13.547992;"{""highway"":""traffic_signals""}" berlin;traffic_signals;151029449;52.512203;13.201036;"{""highway"":""traffic_signals""}" berlin;traffic_signals;151197385;52.375473;13.418632;"{""highway"":""traffic_signals""}" berlin;traffic_signals;156869073;52.498970;13.271154;"{""highway"":""traffic_signals""}" berlin;traffic_signals;158707328;52.429180;13.550999;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;158953992;52.419426;13.312636;"{""highway"":""traffic_signals""}" berlin;traffic_signals;160503146;52.521427;13.403135;"{""highway"":""traffic_signals""}" berlin;traffic_signals;160514854;52.515411;13.397927;"{""highway"":""traffic_signals""}" berlin;traffic_signals;161925319;52.506264;13.368987;"{""highway"":""traffic_signals""}" berlin;traffic_signals;162055790;52.502316;13.353261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;162055830;52.505329;13.352342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;162081807;52.508595;13.369719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;163038096;52.532742;13.592736;"{""highway"":""traffic_signals""}" berlin;traffic_signals;163038261;52.533096;13.592932;"{""highway"":""traffic_signals""}" berlin;traffic_signals;165736680;52.582993;13.483205;"{""highway"":""traffic_signals""}" berlin;traffic_signals;165919229;52.420784;13.300725;"{""highway"":""traffic_signals""}" berlin;traffic_signals;166926141;52.608521;13.429767;"{""highway"":""traffic_signals""}" berlin;traffic_signals;169482220;52.606289;13.419986;"{""highway"":""traffic_signals""}" berlin;traffic_signals;169492708;52.606163;13.420218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;169504965;52.602318;13.430893;"{""highway"":""traffic_signals""}" berlin;traffic_signals;174069318;52.496395;13.419698;"{""highway"":""traffic_signals""}" berlin;traffic_signals;186962583;52.574242;13.347786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;186969527;52.562469;13.326484;"{""highway"":""traffic_signals""}" berlin;traffic_signals;186982261;52.552094;13.349225;"{""highway"":""traffic_signals""}" berlin;traffic_signals;187538010;52.505455;13.334256;"{""highway"":""traffic_signals""}" berlin;traffic_signals;188382916;52.566833;13.316448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;194539308;52.561653;13.208337;"{""highway"":""traffic_signals""}" berlin;traffic_signals;194539328;52.545006;13.231613;"{""highway"":""traffic_signals""}" berlin;traffic_signals;195386875;52.525726;13.540296;"{""highway"":""traffic_signals""}" berlin;traffic_signals;196725581;52.515415;13.418172;"{""highway"":""traffic_signals""}" berlin;traffic_signals;196741367;52.524048;13.409712;"{""highway"":""traffic_signals""}" berlin;traffic_signals;197353988;52.528027;13.425050;"{""highway"":""traffic_signals""}" berlin;traffic_signals;197381282;52.496342;13.331167;"{""highway"":""traffic_signals""}" berlin;traffic_signals;197636542;52.553474;13.153540;"{""highway"":""traffic_signals""}" berlin;traffic_signals;199538245;52.460789;13.481232;"{""highway"":""traffic_signals""}" berlin;traffic_signals;201558269;52.466042;13.471049;"{""highway"":""traffic_signals""}" berlin;traffic_signals;201589158;52.466091;13.471146;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203497094;52.533726;13.550627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203590065;52.540611;13.232178;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203590068;52.540604;13.232502;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203603949;52.546658;13.230255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203604033;52.538418;13.213693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;203604037;52.538574;13.213665;"{""highway"":""traffic_signals""}" berlin;traffic_signals;205325392;52.470459;13.370674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;206170064;52.405239;13.356194;"{""highway"":""traffic_signals""}" berlin;traffic_signals;206191958;52.443180;13.479132;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;206191965;52.442860;13.478763;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;206236717;52.434196;13.359347;"{""highway"":""traffic_signals""}" berlin;traffic_signals;208775633;52.545025;13.231750;"{""highway"":""traffic_signals""}" berlin;traffic_signals;213227870;52.506680;13.228432;"{""highway"":""traffic_signals""}" berlin;traffic_signals;220523277;52.437737;13.547674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;223826118;52.570404;13.361003;"{""highway"":""traffic_signals""}" berlin;traffic_signals;235637250;52.462959;13.377229;"{""highway"":""traffic_signals""}" berlin;traffic_signals;235637267;52.466309;13.378141;"{""highway"":""traffic_signals""}" berlin;traffic_signals;237164131;52.458347;13.332354;"{""highway"":""traffic_signals""}" berlin;traffic_signals;237254713;52.436775;13.545006;"{""highway"":""traffic_signals""}" berlin;traffic_signals;239732715;52.497734;13.503822;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;242833370;52.516266;13.454082;"{""highway"":""traffic_signals""}" berlin;traffic_signals;243343883;52.482693;13.514978;"{""highway"":""traffic_signals""}" berlin;traffic_signals;243834572;52.543980;13.599505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;243993451;52.526043;13.459062;"{""highway"":""traffic_signals""}" berlin;traffic_signals;243995320;52.517975;13.453053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;244129883;52.524040;13.439504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;244430178;52.490406;13.456030;"{""highway"":""traffic_signals""}" berlin;traffic_signals;244430184;52.490768;13.459114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;244480773;52.480610;13.415749;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;246771373;52.430099;13.549246;"{""highway"":""traffic_signals""}" berlin;traffic_signals;246771374;52.434326;13.542527;"{""highway"":""traffic_signals""}" berlin;traffic_signals;247140199;52.462284;13.583063;"{""highway"":""traffic_signals""}" berlin;traffic_signals;247140200;52.462341;13.582874;"{""highway"":""traffic_signals""}" berlin;traffic_signals;247369495;52.555698;13.207658;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248155564;52.468304;13.550372;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;248183473;52.514217;13.191114;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248201898;52.548962;13.210254;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248386473;52.486221;13.424365;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248386474;52.486362;13.424444;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248386475;52.487682;13.425561;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248386844;52.486519;13.424056;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248386845;52.486324;13.424095;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248387254;52.488213;13.425138;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;248389154;52.487877;13.425424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248495222;52.558239;13.197926;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248511412;52.496250;13.419965;"{""crossing"":""no"",""highway"":""traffic_signals""}" berlin;traffic_signals;248511413;52.495609;13.420501;"{""highway"":""traffic_signals""}" berlin;traffic_signals;248862910;52.595921;13.291689;"{""highway"":""traffic_signals""}" berlin;traffic_signals;249171219;52.390766;13.340490;"{""highway"":""traffic_signals""}" berlin;traffic_signals;249360346;52.590878;13.282317;"{""highway"":""traffic_signals""}" berlin;traffic_signals;249380660;52.548859;13.210264;"{""highway"":""traffic_signals""}" berlin;traffic_signals;249675440;52.542717;13.541431;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;249676686;52.399422;13.544199;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;249698365;52.508347;13.257998;"{""highway"":""traffic_signals""}" berlin;traffic_signals;250786257;52.539295;13.639451;"{""highway"":""traffic_signals""}" berlin;traffic_signals;250786281;52.533142;13.641673;"{""highway"":""traffic_signals""}" berlin;traffic_signals;250930554;52.540882;13.544109;"{""highway"":""traffic_signals""}" berlin;traffic_signals;250930567;52.540997;13.544002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;250930889;52.543106;13.549886;"{""highway"":""traffic_signals""}" berlin;traffic_signals;251106773;52.512520;13.320802;"{""highway"":""traffic_signals""}" berlin;traffic_signals;251150123;52.512608;13.320549;"{""highway"":""traffic_signals""}" berlin;traffic_signals;252864802;52.513439;13.335611;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;253029510;52.561115;13.212552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;253250441;52.542892;13.239753;"{""highway"":""traffic_signals""}" berlin;traffic_signals;253943505;52.449677;13.662510;"{""highway"":""traffic_signals""}" berlin;traffic_signals;253998574;52.486649;13.357732;"{""highway"":""traffic_signals""}" berlin;traffic_signals;254125326;52.485291;13.354844;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;254306676;52.467281;13.367028;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;254335451;52.493614;13.323691;"{""highway"":""traffic_signals""}" berlin;traffic_signals;254335453;52.493797;13.323730;"{""highway"":""traffic_signals""}" berlin;traffic_signals;254867810;52.466248;13.457679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;255561544;52.488461;13.301982;"{""highway"":""traffic_signals""}" berlin;traffic_signals;255561545;52.488319;13.302188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;256045560;52.554970;13.366104;"{""highway"":""traffic_signals""}" berlin;traffic_signals;258045541;52.516270;13.409243;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;258117328;52.533066;13.453641;"{""highway"":""traffic_signals""}" berlin;traffic_signals;258127854;52.518124;13.400742;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;258485607;52.522999;13.473174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;259171102;52.531258;13.267285;"{""highway"":""traffic_signals""}" berlin;traffic_signals;259173275;52.634178;13.497609;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;259173276;52.635342;13.499348;"{""highway"":""traffic_signals""}" berlin;traffic_signals;259407442;52.541729;13.167713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;259456181;52.556675;13.140261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;259964504;52.367130;13.422297;"{""highway"":""traffic_signals""}" berlin;traffic_signals;260033998;52.428181;13.325213;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;260644695;52.521748;13.162467;"{""highway"":""traffic_signals""}" berlin;traffic_signals;260647424;52.519859;13.462495;"{""highway"":""traffic_signals""}" berlin;traffic_signals;260658026;52.533474;13.387447;"{""highway"":""traffic_signals""}" berlin;traffic_signals;260742575;52.492321;13.461069;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;260771675;52.470543;13.370786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;261166926;52.526314;13.181828;"{""highway"":""traffic_signals""}" berlin;traffic_signals;261694006;52.466324;13.457579;"{""highway"":""traffic_signals""}" berlin;traffic_signals;261711066;52.493923;13.460813;"{""highway"":""traffic_signals""}" berlin;traffic_signals;261711249;52.492813;13.460033;"{""highway"":""traffic_signals""}" berlin;traffic_signals;261723446;52.480061;13.475289;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;261723447;52.479931;13.475107;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;262087450;52.513229;13.589624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262206651;52.460262;13.480575;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262280248;52.477264;13.342298;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262317064;52.486679;13.465171;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;262317101;52.484364;13.468601;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;262399992;52.518627;13.169963;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262408397;52.400494;13.514574;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;262454829;52.516300;13.376887;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262463248;52.520222;13.422759;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262468056;52.520699;13.415491;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262469034;52.523911;13.412181;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262471375;52.528831;13.409497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262476527;52.529785;13.401307;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262479941;52.516426;13.402419;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262693008;52.505177;13.448617;"{""highway"":""traffic_signals""}" berlin;traffic_signals;262818920;52.519409;13.416768;"{""highway"":""traffic_signals""}" berlin;traffic_signals;263130720;52.478165;13.316840;"{""highway"":""traffic_signals""}" berlin;traffic_signals;263577593;52.499462;13.418187;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;264112995;52.438229;13.382871;"{""highway"":""traffic_signals""}" berlin;traffic_signals;264193113;52.611435;13.251621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;264893653;52.575634;13.228965;"{""highway"":""traffic_signals""}" berlin;traffic_signals;265065179;52.531338;13.196912;"{""highway"":""traffic_signals""}" berlin;traffic_signals;266540878;52.525726;13.414411;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;266540882;52.525154;13.413650;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;266593571;52.494827;13.352557;"{""highway"":""traffic_signals""}" berlin;traffic_signals;266832360;52.520569;13.414632;"{""highway"":""traffic_signals""}" berlin;traffic_signals;266832361;52.520344;13.414893;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;267039763;52.429859;13.454280;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267046789;52.502289;13.266262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267350171;52.456421;13.322728;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267350285;52.456436;13.322565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267364614;52.457516;13.321222;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267365408;52.468979;13.332719;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267368308;52.479259;13.345124;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267368309;52.479458;13.345146;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267492915;52.516628;13.445132;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;267609132;52.527988;13.195507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267609133;52.527893;13.195247;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267609134;52.527733;13.195282;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267609135;52.527802;13.194994;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267615050;52.511864;13.612247;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267620336;52.514732;13.315185;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267620337;52.514622;13.315080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267638478;52.449001;13.354972;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267980708;52.518856;13.339711;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267980710;52.522911;13.329528;"{""highway"":""traffic_signals""}" berlin;traffic_signals;267980715;52.522358;13.328617;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268001141;52.501144;13.641901;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268002292;52.534515;13.631370;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268021311;52.493446;13.367171;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268076066;52.433670;13.191952;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268111126;52.502048;13.280874;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268194873;52.570580;13.398764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268225462;52.510052;13.542207;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268225719;52.509624;13.546229;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268225807;52.509827;13.545669;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;268243924;52.509659;13.544643;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268243926;52.509617;13.544796;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;268338822;52.501038;13.521733;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268468777;52.492973;13.422057;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268468778;52.495605;13.420367;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268475993;52.479321;13.425657;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268475995;52.479282;13.425483;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268483193;52.556244;13.381471;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268828337;52.531517;13.642316;"{""highway"":""traffic_signals""}" berlin;traffic_signals;268986171;52.555973;13.381280;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269140695;52.496586;13.485898;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;269789702;52.383141;13.122626;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269843725;52.511486;13.268646;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269843726;52.511631;13.268822;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269884615;52.486061;13.574229;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269931132;52.511822;13.311682;"{""highway"":""traffic_signals""}" berlin;traffic_signals;269931135;52.512012;13.311644;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270335525;52.408058;13.101255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270341855;52.474335;13.520411;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;270495935;52.424541;13.356680;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270528486;52.427681;13.355344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270537507;52.412395;13.361463;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270539518;52.413818;13.361876;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270539525;52.420059;13.358906;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270539530;52.427647;13.355143;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270539531;52.429131;13.354569;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270546177;52.412529;13.361369;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270636232;52.438553;13.343992;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270679014;52.496426;13.331050;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270709234;52.559219;13.131223;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270967329;52.545307;13.370420;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270967330;52.545242;13.370644;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270967331;52.544697;13.370072;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270967900;52.543262;13.369809;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270967901;52.543552;13.369673;"{""highway"":""traffic_signals""}" berlin;traffic_signals;270975461;52.460804;13.503756;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271169699;52.493736;13.365582;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271170064;52.493759;13.365993;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271171346;52.494175;13.362812;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271171348;52.493988;13.362727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271186757;52.483311;13.292252;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271186758;52.483421;13.292102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271188390;52.436359;13.345763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271188391;52.436275;13.345894;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271241709;52.468941;13.307607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271246079;52.474556;13.328360;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271246081;52.474548;13.328567;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271246589;52.468067;13.335102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271330438;52.539909;13.203848;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271335813;52.545464;13.445344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271370539;52.566841;13.346638;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271420357;52.529964;13.328608;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271649075;52.535824;13.363159;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271649080;52.536076;13.363412;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271649352;52.535694;13.363523;"{""highway"":""traffic_signals""}" berlin;traffic_signals;271949130;52.438770;13.592478;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;272256206;52.512863;13.326775;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;272359147;52.496727;13.384571;"{""highway"":""traffic_signals""}" berlin;traffic_signals;272738428;52.539890;13.202819;"{""highway"":""traffic_signals""}" berlin;traffic_signals;272783491;52.538929;13.179448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;273445087;52.510654;13.208764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274107526;52.476128;13.363015;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274107527;52.474735;13.361591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274228452;52.478081;13.344718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274257524;52.476437;13.357572;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274278144;52.454151;13.513344;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;274278147;52.452801;13.508427;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;274495429;52.488235;13.368781;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274800031;52.535915;13.363255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274891309;52.424580;13.356865;"{""highway"":""traffic_signals""}" berlin;traffic_signals;274977646;52.541786;13.369932;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275000460;52.528740;13.343340;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275415673;52.497566;13.364092;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275415674;52.497311;13.363967;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275422687;52.495380;13.366325;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275422689;52.495396;13.366048;"{""highway"":""traffic_signals""}" berlin;traffic_signals;275727121;52.508686;13.273066;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;275727127;52.509415;13.274061;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;276248318;52.464340;13.513723;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276505293;52.458889;13.506512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276505294;52.458782;13.506335;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276577337;52.541416;13.334391;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276585516;52.495895;13.524686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276589705;52.508617;13.466294;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;276654797;52.509895;13.524933;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;276771804;52.540081;13.202480;"{""highway"":""traffic_signals""}" berlin;traffic_signals;276997294;52.424847;13.373155;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277275165;52.567574;13.210729;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277633641;52.551830;13.209281;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277633761;52.551598;13.209563;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277634088;52.557175;13.207656;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277634213;52.557171;13.207877;"{""highway"":""traffic_signals""}" berlin;traffic_signals;277870599;52.556103;13.381365;"{""highway"":""traffic_signals""}" berlin;traffic_signals;278022158;52.422684;13.348737;"{""highway"":""traffic_signals""}" berlin;traffic_signals;278022606;52.456280;13.140497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;278523169;52.502308;13.470081;"{""highway"":""traffic_signals""}" berlin;traffic_signals;279305164;52.448242;13.363992;"{""highway"":""traffic_signals""}" berlin;traffic_signals;279972853;52.543137;13.352601;"{""highway"":""traffic_signals""}" berlin;traffic_signals;280180843;52.534264;13.279964;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;281157439;52.512478;13.377006;"{""highway"":""traffic_signals""}" berlin;traffic_signals;281565008;52.551186;13.463501;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" berlin;traffic_signals;281788337;52.456745;13.562481;"{""highway"":""traffic_signals""}" berlin;traffic_signals;281788931;52.514732;13.351093;"{""highway"":""traffic_signals""}" berlin;traffic_signals;281814186;52.539291;13.424096;"{""highway"":""traffic_signals""}" berlin;traffic_signals;281817500;52.532261;13.441582;"{""highway"":""traffic_signals""}" berlin;traffic_signals;281898902;52.634781;13.496504;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;282763131;52.508667;13.261007;"{""highway"":""traffic_signals""}" berlin;traffic_signals;282771047;52.516296;13.453639;"{""highway"":""traffic_signals""}" berlin;traffic_signals;283017357;52.433640;13.497710;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;283017446;52.433529;13.497924;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;283035794;52.515434;13.398027;"{""highway"":""traffic_signals""}" berlin;traffic_signals;283038325;52.511326;13.401216;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;283038326;52.511166;13.401197;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;283045467;52.511200;13.401359;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;283089493;52.521210;13.455080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;283608270;52.475266;13.324197;"{""highway"":""traffic_signals""}" berlin;traffic_signals;283608271;52.475334;13.324049;"{""highway"":""traffic_signals""}" berlin;traffic_signals;283725463;52.435841;13.273764;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;285116276;52.494678;13.308865;"{""highway"":""traffic_signals""}" berlin;traffic_signals;285116279;52.494728;13.309012;"{""highway"":""traffic_signals""}" berlin;traffic_signals;286031542;52.507336;13.565651;"{""highway"":""traffic_signals""}" berlin;traffic_signals;286033278;52.505512;13.572444;"{""highway"":""traffic_signals""}" berlin;traffic_signals;286033342;52.505405;13.572379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;286400111;52.494946;13.285969;"{""highway"":""traffic_signals""}" berlin;traffic_signals;286472703;52.425709;13.208920;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;286702893;52.452515;13.449161;"{""highway"":""traffic_signals""}" berlin;traffic_signals;287326318;52.452377;13.449006;"{""highway"":""traffic_signals""}" berlin;traffic_signals;287833809;52.536285;13.273584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;287924192;52.440762;13.586907;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;287930839;52.457333;13.448767;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288012597;52.534409;13.280027;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;288017422;52.590137;13.283020;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288017966;52.588558;13.284611;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288210334;52.462139;13.445206;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288267826;52.513523;13.477218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288268004;52.514454;13.478117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288268136;52.516342;13.479564;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288304530;52.543747;13.542509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;288304532;52.543804;13.542311;"{""highway"":""traffic_signals""}" berlin;traffic_signals;289665182;52.552708;13.425319;"{""highway"":""traffic_signals""}" berlin;traffic_signals;289665653;52.539993;13.247750;"{""highway"":""traffic_signals""}" berlin;traffic_signals;291234733;52.548306;13.200866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;291234924;52.548737;13.200752;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292298701;52.509247;13.325735;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292298705;52.508743;13.326727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292446222;52.504807;13.610208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292446223;52.504921;13.610205;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292446640;52.505585;13.561824;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292446671;52.505589;13.561666;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292446703;52.507248;13.559109;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292447155;52.509563;13.518425;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292449187;52.550430;13.509973;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292559086;52.439709;13.276113;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;292559087;52.439857;13.275990;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;292559354;52.442245;13.274865;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;292909842;52.456322;13.511214;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292913593;52.467392;13.513331;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292913621;52.467430;13.513090;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292988140;52.402176;13.352723;"{""highway"":""traffic_signals""}" berlin;traffic_signals;292988144;52.402126;13.352826;"{""highway"":""traffic_signals""}" berlin;traffic_signals;293147516;52.484390;13.390914;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;293211788;52.553497;13.545002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;293211789;52.554325;13.538339;"{""highway"":""traffic_signals""}" berlin;traffic_signals;294152029;52.436783;13.562071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;294153466;52.437290;13.562294;"{""highway"":""traffic_signals""}" berlin;traffic_signals;294494421;52.488457;13.423478;"{""highway"":""traffic_signals""}" berlin;traffic_signals;294494422;52.488560;13.423527;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295093349;52.467396;13.330857;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295093493;52.467300;13.331028;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295240665;52.509075;13.450815;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295240686;52.508991;13.451261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295600229;52.504944;13.440869;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;295693757;52.514256;13.563175;"{""highway"":""traffic_signals""}" berlin;traffic_signals;295705005;52.520603;13.415172;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;295705017;52.515694;13.417933;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;295705020;52.515408;13.417993;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;296091316;52.370380;13.564246;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;296106756;52.575649;13.285075;"{""highway"":""traffic_signals""}" berlin;traffic_signals;296887819;52.444489;13.574505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;296943373;52.440620;13.586708;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;297043795;52.444412;13.573627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297067766;52.548828;13.247912;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297091393;52.445862;13.562678;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297091812;52.446014;13.562697;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297296819;52.517487;13.436532;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297296825;52.517654;13.436562;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297319805;52.521160;13.263187;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297481137;52.453190;13.593323;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297481206;52.452904;13.594333;"{""highway"":""traffic_signals""}" berlin;traffic_signals;297748242;52.445923;13.444800;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;298080685;52.484234;13.390915;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;298092526;52.484432;13.387914;"{""highway"":""traffic_signals""}" berlin;traffic_signals;298092532;52.483440;13.385838;"{""highway"":""traffic_signals""}" berlin;traffic_signals;298092533;52.483429;13.386054;"{""highway"":""traffic_signals""}" berlin;traffic_signals;298241599;52.440140;13.351524;"{""highway"":""traffic_signals""}" berlin;traffic_signals;298241601;52.440205;13.351425;"{""highway"":""traffic_signals""}" berlin;traffic_signals;298367137;52.504303;13.441845;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;298367300;52.504395;13.441935;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;299239294;52.542625;13.541366;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;299239295;52.542587;13.541587;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;300466901;52.608601;13.429866;"{""highway"":""traffic_signals""}" berlin;traffic_signals;300467037;52.608334;13.429786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;300467351;52.608562;13.429968;"{""highway"":""traffic_signals""}" berlin;traffic_signals;300528783;52.517529;13.440896;"{""highway"":""traffic_signals""}" berlin;traffic_signals;301150310;52.543972;13.354924;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;301496158;52.416309;13.495007;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;301571464;52.413715;13.362001;"{""highway"":""traffic_signals""}" berlin;traffic_signals;301571470;52.413731;13.361864;"{""highway"":""traffic_signals""}" berlin;traffic_signals;301689536;52.525295;13.443803;"{""highway"":""traffic_signals""}" berlin;traffic_signals;301943795;52.507240;13.559244;"{""highway"":""traffic_signals""}" berlin;traffic_signals;303133082;52.396599;13.539635;"{""highway"":""traffic_signals""}" berlin;traffic_signals;303171940;52.570435;13.407003;"{""highway"":""traffic_signals""}" berlin;traffic_signals;304417107;52.420059;13.175118;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;304510227;52.474243;13.362958;"{""highway"":""traffic_signals""}" berlin;traffic_signals;305010260;52.496685;13.486016;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;305326722;52.417824;13.287035;"{""highway"":""traffic_signals""}" berlin;traffic_signals;305480576;52.409225;13.370921;"{""highway"":""traffic_signals""}" berlin;traffic_signals;305480581;52.409340;13.370937;"{""highway"":""traffic_signals""}" berlin;traffic_signals;305789146;52.433979;13.211883;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;305804662;52.454243;13.328554;"{""highway"":""traffic_signals""}" berlin;traffic_signals;306705728;52.520798;13.587869;"{""highway"":""traffic_signals""}" berlin;traffic_signals;306982585;52.430790;13.532701;"{""highway"":""traffic_signals""}" berlin;traffic_signals;307707279;52.547901;13.388670;"{""highway"":""traffic_signals""}" berlin;traffic_signals;308314569;52.452225;13.508878;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;308703901;52.537800;13.604773;"{""highway"":""traffic_signals""}" berlin;traffic_signals;308703903;52.537781;13.604452;"{""highway"":""traffic_signals""}" berlin;traffic_signals;309017564;52.526501;13.479590;"{""highway"":""traffic_signals""}" berlin;traffic_signals;309157105;52.468243;13.550155;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;309344788;52.533718;13.443880;"{""highway"":""traffic_signals""}" berlin;traffic_signals;309345035;52.533268;13.443525;"{""highway"":""traffic_signals""}" berlin;traffic_signals;309345653;52.533379;13.443342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;309719728;52.525452;13.445046;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310069196;52.522617;13.409880;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310271481;52.523235;13.383666;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310271525;52.522549;13.379683;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310276963;52.566570;13.413623;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310285545;52.558674;13.371325;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310348579;52.519760;13.388357;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310348879;52.526287;13.387164;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310348898;52.527191;13.387215;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310349014;52.527157;13.386992;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310350615;52.530739;13.383808;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310350755;52.531670;13.389704;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310350795;52.532562;13.398949;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310351081;52.534893;13.398047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310483548;52.394829;13.534644;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;310484869;52.557556;13.385534;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310484870;52.557594;13.385395;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310485761;52.399525;13.544653;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;310485762;52.399426;13.544780;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;310602020;52.549122;13.376583;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310602021;52.549194;13.376451;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743412;52.518955;13.428134;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743454;52.518890;13.427895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743478;52.518459;13.427561;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743480;52.518333;13.427647;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743491;52.518093;13.428411;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743630;52.518158;13.428703;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743775;52.518650;13.428986;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310743917;52.518791;13.428806;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310745907;52.528141;13.424970;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310817886;52.529461;13.444606;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310817949;52.529568;13.444034;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310818639;52.527737;13.445982;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310818818;52.527866;13.446302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;310881876;52.541897;13.336997;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311181577;52.551998;13.354565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311181586;52.551598;13.353791;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311181592;52.551395;13.354066;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311181997;52.551331;13.350231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311183136;52.549210;13.354083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311183137;52.549271;13.354186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311203566;52.555038;13.361215;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311203567;52.555321;13.360969;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311464976;52.528236;13.392482;"{""highway"":""traffic_signals""}" berlin;traffic_signals;311718989;52.529625;13.401500;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312033000;52.426460;13.374369;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312034825;52.424561;13.378544;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312114095;52.503685;13.337585;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312114096;52.503853;13.337764;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312215682;52.500099;13.307149;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312776183;52.551136;13.408208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;312818182;52.452354;13.508612;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;313159791;52.631096;13.310231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;313159827;52.630608;13.310375;"{""highway"":""traffic_signals""}" berlin;traffic_signals;313161309;52.589378;13.338957;"{""highway"":""traffic_signals""}" berlin;traffic_signals;313163011;52.562943;13.364712;"{""highway"":""traffic_signals""}" berlin;traffic_signals;313521560;52.544167;13.247203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;315225865;52.400539;13.514705;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;315540230;52.558807;13.371166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;315758665;52.525055;13.336180;"{""highway"":""traffic_signals""}" berlin;traffic_signals;315758666;52.524891;13.336175;"{""highway"":""traffic_signals""}" berlin;traffic_signals;316035194;52.538006;13.344378;"{""highway"":""traffic_signals""}" berlin;traffic_signals;316771064;52.421131;13.415190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;317316214;52.556679;13.372322;"{""highway"":""traffic_signals""}" berlin;traffic_signals;317316219;52.556965;13.372389;"{""highway"":""traffic_signals""}" berlin;traffic_signals;317316755;52.557121;13.369275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;318545593;52.499115;13.426836;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;318549149;52.499386;13.431220;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;319587581;52.523628;13.423847;"{""highway"":""traffic_signals""}" berlin;traffic_signals;319711971;52.454220;13.318356;"{""highway"":""traffic_signals""}" berlin;traffic_signals;320441343;52.547852;13.388507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;320558313;52.454018;13.319097;"{""highway"":""traffic_signals""}" berlin;traffic_signals;320853367;52.549717;13.391916;"{""highway"":""traffic_signals""}" berlin;traffic_signals;321336975;52.487843;13.300112;"{""highway"":""traffic_signals""}" berlin;traffic_signals;321336978;52.487720;13.299853;"{""highway"":""traffic_signals""}" berlin;traffic_signals;321336981;52.487835;13.300737;"{""highway"":""traffic_signals""}" berlin;traffic_signals;321336983;52.487717;13.300503;"{""highway"":""traffic_signals""}" berlin;traffic_signals;321735459;52.525536;13.445227;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;322650958;52.484245;13.428823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;323219164;52.548393;13.388071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;323826123;52.438820;13.386591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;323826126;52.452518;13.332813;"{""highway"":""traffic_signals""}" berlin;traffic_signals;323826130;52.452412;13.332702;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324343921;52.413754;13.363255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324343923;52.413662;13.363295;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324348929;52.525341;13.437388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324348934;52.525349;13.437174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324397716;52.410763;13.366366;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324753730;52.508839;13.326849;"{""highway"":""traffic_signals""}" berlin;traffic_signals;324753731;52.509327;13.325878;"{""highway"":""traffic_signals""}" berlin;traffic_signals;325161331;52.503052;13.179712;"{""highway"":""traffic_signals""}" berlin;traffic_signals;325689295;52.409035;13.359358;"{""highway"":""traffic_signals""}" berlin;traffic_signals;326115551;52.427605;13.326386;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;332319232;52.500202;13.438001;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;332624394;52.489544;13.405529;"{""highway"":""traffic_signals""}" berlin;traffic_signals;332625971;52.489170;13.405412;"{""highway"":""traffic_signals""}" berlin;traffic_signals;332739454;52.526962;13.333550;"{""highway"":""traffic_signals""}" berlin;traffic_signals;332739459;52.526875;13.333533;"{""highway"":""traffic_signals""}" berlin;traffic_signals;333022137;52.538029;13.228802;"{""highway"":""traffic_signals""}" berlin;traffic_signals;333022140;52.537891;13.228855;"{""highway"":""traffic_signals""}" berlin;traffic_signals;335839624;52.552845;13.424204;"{""highway"":""traffic_signals""}" berlin;traffic_signals;335839627;52.552536;13.424268;"{""highway"":""traffic_signals""}" berlin;traffic_signals;335839629;52.552490;13.424733;"{""highway"":""traffic_signals""}" berlin;traffic_signals;336294368;52.550159;13.422188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;336583884;52.452667;13.319688;"{""highway"":""traffic_signals""}" berlin;traffic_signals;337267056;52.482117;13.433654;"{""highway"":""traffic_signals""}" berlin;traffic_signals;337267071;52.481960;13.433648;"{""highway"":""traffic_signals""}" berlin;traffic_signals;340356079;52.554497;13.414561;"{""highway"":""traffic_signals""}" berlin;traffic_signals;341275010;52.474243;13.520628;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;341364291;52.505356;13.329723;"{""highway"":""traffic_signals""}" berlin;traffic_signals;341882558;52.549007;13.387218;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342315348;52.520798;13.414937;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;342368167;52.554577;13.429763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342368516;52.554554;13.429532;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342368740;52.556587;13.429414;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342368804;52.556458;13.429039;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342369011;52.556286;13.429355;"{""highway"":""traffic_signals""}" berlin;traffic_signals;342371446;52.567917;13.427880;"{""highway"":""traffic_signals""}" berlin;traffic_signals;343216049;52.541050;13.411966;"{""highway"":""traffic_signals""}" berlin;traffic_signals;343275519;52.553761;13.467430;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;343275528;52.557049;13.466941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;343314979;52.451683;13.310251;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;343381624;52.542660;13.541642;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;343381651;52.535381;13.537258;"{""highway"":""traffic_signals""}" berlin;traffic_signals;343590422;52.528709;13.409405;"{""highway"":""traffic_signals""}" berlin;traffic_signals;344070622;52.569324;13.403479;"{""highway"":""traffic_signals""}" berlin;traffic_signals;344287213;52.438778;13.387667;"{""highway"":""traffic_signals""}" berlin;traffic_signals;344506196;52.415501;13.361789;"{""highway"":""traffic_signals""}" berlin;traffic_signals;345383999;52.554451;13.551695;"{""highway"":""traffic_signals""}" berlin;traffic_signals;345384098;52.554535;13.551448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;345517573;52.440674;13.586780;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;346113594;52.547741;13.439517;"{""highway"":""traffic_signals""}" berlin;traffic_signals;346113642;52.547329;13.439191;"{""highway"":""traffic_signals""}" berlin;traffic_signals;346646051;52.541107;13.425171;"{""highway"":""traffic_signals""}" berlin;traffic_signals;346646116;52.541039;13.425509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;349171160;52.402016;13.258984;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;349777432;52.549881;13.128242;"{""highway"":""traffic_signals""}" berlin;traffic_signals;349904567;52.549561;13.386554;"{""highway"":""traffic_signals""}" berlin;traffic_signals;349904569;52.549461;13.386412;"{""highway"":""traffic_signals""}" berlin;traffic_signals;354513906;52.524040;13.144027;"{""highway"":""traffic_signals""}" berlin;traffic_signals;354513942;52.526363;13.133054;"{""highway"":""traffic_signals""}" berlin;traffic_signals;354693256;52.589752;13.283380;"{""highway"":""traffic_signals""}" berlin;traffic_signals;357384481;52.498257;13.399512;"{""highway"":""traffic_signals""}" berlin;traffic_signals;358084206;52.482079;13.408862;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;359087028;52.532368;13.396121;"{""highway"":""traffic_signals""}" berlin;traffic_signals;359367756;52.532177;13.393962;"{""highway"":""traffic_signals""}" berlin;traffic_signals;359508217;52.469482;13.385741;"{""highway"":""traffic_signals""}" berlin;traffic_signals;361152276;52.441334;13.593675;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;362195377;52.552982;13.414494;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999887;52.548988;13.502094;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999891;52.553158;13.478924;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999892;52.553089;13.479444;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999893;52.553295;13.479946;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999897;52.546429;13.467527;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999898;52.546825;13.467577;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999899;52.546780;13.468110;"{""highway"":""traffic_signals""}" berlin;traffic_signals;363999900;52.546417;13.468103;"{""highway"":""traffic_signals""}" berlin;traffic_signals;364286380;52.419888;13.490009;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;366908789;52.454777;13.511933;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;368020746;52.510128;13.329746;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;369750661;52.450829;13.339888;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;369955569;52.463226;13.385308;"{""highway"":""traffic_signals""}" berlin;traffic_signals;369955728;52.463211;13.385457;"{""highway"":""traffic_signals""}" berlin;traffic_signals;370000485;52.452538;13.271522;"{""highway"":""traffic_signals""}" berlin;traffic_signals;370000487;52.452488;13.271738;"{""highway"":""traffic_signals""}" berlin;traffic_signals;370002572;52.449963;13.270074;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;370131148;52.454235;13.338848;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;370932582;52.570324;13.556202;"{""highway"":""traffic_signals""}" berlin;traffic_signals;373168646;52.584091;13.288535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;373168647;52.584145;13.288727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;373168649;52.584259;13.288637;"{""highway"":""traffic_signals""}" berlin;traffic_signals;373168651;52.584202;13.288441;"{""highway"":""traffic_signals""}" berlin;traffic_signals;378205967;52.501595;13.450706;"{""highway"":""traffic_signals""}" berlin;traffic_signals;379588259;52.546265;13.143983;"{""highway"":""traffic_signals""}" berlin;traffic_signals;385246995;52.503510;13.444083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;385384034;52.510029;13.518370;"{""highway"":""traffic_signals""}" berlin;traffic_signals;386343992;52.499580;13.352499;"{""highway"":""traffic_signals""}" berlin;traffic_signals;387410030;52.547680;13.558685;"{""highway"":""traffic_signals""}" berlin;traffic_signals;387605891;52.457497;13.543360;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;387605893;52.461578;13.513735;"{""highway"":""traffic_signals""}" berlin;traffic_signals;387605895;52.462173;13.515174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;390043094;52.508884;13.272289;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;392182854;52.521805;13.416438;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;392683156;52.458099;13.497227;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;392683157;52.458321;13.497173;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;392683158;52.458073;13.497567;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;392683159;52.458271;13.497571;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;393353039;52.597767;13.332456;"{""highway"":""traffic_signals""}" berlin;traffic_signals;394829358;52.496815;13.523771;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;401332059;52.596558;13.354303;"{""highway"":""traffic_signals""}" berlin;traffic_signals;401332131;52.597118;13.364850;"{""highway"":""traffic_signals""}" berlin;traffic_signals;402449680;52.485413;13.354707;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;402508074;52.526787;13.215810;"{""highway"":""traffic_signals""}" berlin;traffic_signals;410503803;52.547844;13.577671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;410504111;52.547691;13.577816;"{""highway"":""traffic_signals""}" berlin;traffic_signals;410541157;52.538090;13.634939;"{""highway"":""traffic_signals""}" berlin;traffic_signals;415838099;52.512989;13.326752;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;415858659;52.470879;13.385779;"{""highway"":""traffic_signals""}" berlin;traffic_signals;415858669;52.470882;13.385535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;418730510;52.554073;13.198888;"{""highway"":""traffic_signals""}" berlin;traffic_signals;421409699;52.463238;13.326960;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;422567738;52.428020;13.325657;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;425690212;52.549202;13.413945;"{""highway"":""traffic_signals""}" berlin;traffic_signals;426583142;52.452217;13.423428;"{""highway"":""traffic_signals""}" berlin;traffic_signals;426583145;52.452339;13.423810;"{""highway"":""traffic_signals""}" berlin;traffic_signals;426969172;52.458763;13.322440;"{""highway"":""traffic_signals""}" berlin;traffic_signals;426969173;52.458721;13.322567;"{""highway"":""traffic_signals""}" berlin;traffic_signals;429696379;52.591198;13.384841;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;429696380;52.591221;13.385537;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;430126341;52.544743;13.427562;"{""highway"":""traffic_signals""}" berlin;traffic_signals;430126357;52.544781;13.427274;"{""highway"":""traffic_signals""}" berlin;traffic_signals;430206552;52.512367;13.377179;"{""highway"":""traffic_signals""}" berlin;traffic_signals;433073029;52.436848;13.293138;"{""highway"":""traffic_signals""}" berlin;traffic_signals;433557530;52.513065;13.481698;"{""highway"":""traffic_signals""}" berlin;traffic_signals;434098008;52.490456;13.180328;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;439225013;52.483261;13.501370;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;440047779;52.447006;13.624134;"{""highway"":""traffic_signals""}" berlin;traffic_signals;440047783;52.446892;13.624554;"{""highway"":""traffic_signals""}" berlin;traffic_signals;440318986;52.534031;13.553022;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;440318987;52.533844;13.553342;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;442121662;52.509216;13.519627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;443546230;52.459236;13.347496;"{""highway"":""traffic_signals""}" berlin;traffic_signals;443546709;52.451405;13.347995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;443546710;52.451382;13.348174;"{""highway"":""traffic_signals""}" berlin;traffic_signals;443896349;52.445454;13.588107;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;444562882;52.454819;13.320020;"{""crossing"":""no"",""highway"":""traffic_signals""}" berlin;traffic_signals;444894685;52.514675;13.464345;"{""highway"":""traffic_signals""}" berlin;traffic_signals;445075318;52.526276;13.369242;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;445075319;52.526623;13.369024;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;445788328;52.446613;13.559434;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;447911495;52.471191;13.328509;"{""highway"":""traffic_signals""}" berlin;traffic_signals;447911496;52.471535;13.327552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;447937665;52.477798;13.448100;"{""highway"":""traffic_signals""}" berlin;traffic_signals;449081753;52.509815;13.542075;"{""highway"":""traffic_signals""}" berlin;traffic_signals;449099355;52.509289;13.550648;"{""highway"":""traffic_signals""}" berlin;traffic_signals;450052155;52.447342;13.362125;"{""highway"":""traffic_signals""}" berlin;traffic_signals;452592833;52.552528;13.391760;"{""highway"":""traffic_signals""}" berlin;traffic_signals;454157973;52.533134;13.412565;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;454920626;52.489876;13.419712;"{""highway"":""traffic_signals""}" berlin;traffic_signals;455231384;52.498692;13.418339;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;458914818;52.416386;13.495129;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;458918598;52.421700;13.488696;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;469462966;52.512310;13.452751;"{""highway"":""traffic_signals""}" berlin;traffic_signals;469462967;52.512379;13.452305;"{""highway"":""traffic_signals""}" berlin;traffic_signals;471376273;52.482063;13.424858;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;471376392;52.498463;13.414332;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;471376401;52.490490;13.423768;"{""highway"":""traffic_signals""}" berlin;traffic_signals;471376509;52.498611;13.414338;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;471801039;52.529507;13.461130;"{""highway"":""traffic_signals""}" berlin;traffic_signals;473137791;52.548569;13.273277;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;473137792;52.548576;13.272194;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;473149155;52.520798;13.542385;"{""highway"":""traffic_signals""}" berlin;traffic_signals;473482354;52.429493;13.529240;"{""highway"":""traffic_signals""}" berlin;traffic_signals;474752180;52.510853;13.451628;"{""highway"":""traffic_signals""}" berlin;traffic_signals;474752184;52.510777;13.452065;"{""highway"":""traffic_signals""}" berlin;traffic_signals;474752249;52.517967;13.453430;"{""highway"":""traffic_signals""}" berlin;traffic_signals;479064357;52.431984;13.258924;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;484234145;52.556313;13.428971;"{""highway"":""traffic_signals""}" berlin;traffic_signals;490061551;52.595654;13.335170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;490078377;52.595592;13.335176;"{""highway"":""traffic_signals""}" berlin;traffic_signals;492462303;52.428242;13.519361;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493149893;52.525692;13.445091;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;493585712;52.426991;13.520043;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493585714;52.426750;13.520294;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;493585730;52.428719;13.526896;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493585751;52.428844;13.527023;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;493585752;52.428936;13.526966;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493585780;52.432854;13.536505;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493585795;52.432285;13.535456;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;493585805;52.432964;13.536539;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;493585807;52.433125;13.536374;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;493585811;52.432957;13.536104;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;493585812;52.432796;13.536262;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;498806478;52.549652;13.392044;"{""highway"":""traffic_signals""}" berlin;traffic_signals;501547016;52.502617;13.278707;"{""highway"":""traffic_signals""}" berlin;traffic_signals;502089541;52.544987;13.591632;"{""highway"":""traffic_signals""}" berlin;traffic_signals;502128121;52.544254;13.603440;"{""highway"":""traffic_signals""}" berlin;traffic_signals;505819759;52.517551;13.440679;"{""highway"":""traffic_signals""}" berlin;traffic_signals;506357654;52.525768;13.414319;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;506357655;52.525185;13.413587;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;506357660;52.525826;13.414193;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;506357662;52.525246;13.413469;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;507035401;52.472389;13.428700;"{""highway"":""traffic_signals""}" berlin;traffic_signals;508308242;52.460518;13.418122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;508308243;52.460594;13.417984;"{""highway"":""traffic_signals""}" berlin;traffic_signals;512445218;52.516350;13.310137;"{""highway"":""traffic_signals""}" berlin;traffic_signals;512445220;52.516235;13.310048;"{""highway"":""traffic_signals""}" berlin;traffic_signals;514876560;52.444435;13.338972;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;515352298;52.428600;13.327902;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;516394523;52.509296;13.518411;"{""highway"":""traffic_signals""}" berlin;traffic_signals;517482930;52.468884;13.514180;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;517483755;52.468891;13.514945;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;518245049;52.434273;13.456287;"{""highway"":""traffic_signals""}" berlin;traffic_signals;518426769;52.430363;13.312334;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692343;52.437176;13.358871;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692344;52.437950;13.348344;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692345;52.437901;13.348275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692346;52.437870;13.348412;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;524692350;52.440319;13.351566;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692351;52.440250;13.351645;"{""highway"":""traffic_signals""}" berlin;traffic_signals;524692378;52.438450;13.354170;"{""highway"":""traffic_signals""}" berlin;traffic_signals;526812433;52.522369;13.409262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;528847889;52.527596;13.389353;"{""highway"":""traffic_signals""}" berlin;traffic_signals;531571354;52.541157;13.357604;"{""highway"":""traffic_signals""}" berlin;traffic_signals;533626126;52.509171;13.281882;"{""highway"":""traffic_signals""}" berlin;traffic_signals;534145293;52.528736;13.122281;"{""highway"":""traffic_signals""}" berlin;traffic_signals;534145295;52.528641;13.122222;"{""highway"":""traffic_signals""}" berlin;traffic_signals;534431092;52.452763;13.574327;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;536806696;52.437775;13.256926;"{""highway"":""traffic_signals""}" berlin;traffic_signals;538795142;52.517353;13.395033;"{""highway"":""traffic_signals""}" berlin;traffic_signals;539245712;52.459270;13.347641;"{""highway"":""traffic_signals""}" berlin;traffic_signals;539267239;52.459084;13.347649;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;539737134;52.420162;13.480108;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;539737423;52.432251;13.495840;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;540764952;52.516266;13.409089;"{""highway"":""traffic_signals""}" berlin;traffic_signals;547858262;52.460014;13.446836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;550695033;52.502468;13.486899;"{""highway"":""traffic_signals""}" berlin;traffic_signals;555085005;52.532764;13.519406;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559630105;52.548786;13.504592;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559630107;52.548931;13.504589;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645656;52.549980;13.497140;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645658;52.549885;13.497258;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645661;52.549992;13.497681;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645662;52.550148;13.497487;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645673;52.555016;13.502601;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645675;52.555172;13.502783;"{""highway"":""traffic_signals""}" berlin;traffic_signals;559645676;52.554981;13.502857;"{""highway"":""traffic_signals""}" berlin;traffic_signals;560815026;52.533100;13.518721;"{""highway"":""traffic_signals""}" berlin;traffic_signals;560966816;52.550285;13.510074;"{""highway"":""traffic_signals""}" berlin;traffic_signals;561151462;52.488186;13.424983;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;565611209;52.447643;13.268648;"{""highway"":""traffic_signals""}" berlin;traffic_signals;565611213;52.447613;13.268820;"{""highway"":""traffic_signals""}" berlin;traffic_signals;566219460;52.551918;13.120772;"{""highway"":""traffic_signals""}" berlin;traffic_signals;566219463;52.551964;13.120624;"{""highway"":""traffic_signals""}" berlin;traffic_signals;566219465;52.551868;13.120553;"{""highway"":""traffic_signals""}" berlin;traffic_signals;567178197;52.499226;13.382324;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;567574430;52.478390;13.363733;"{""highway"":""traffic_signals""}" berlin;traffic_signals;567607186;52.448669;13.511689;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;567607201;52.432137;13.535218;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;568037516;52.485123;13.364809;"{""highway"":""traffic_signals""}" berlin;traffic_signals;568037518;52.485249;13.363621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;573213380;52.457481;13.321346;"{""highway"":""traffic_signals""}" berlin;traffic_signals;573213382;52.460468;13.324080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;573213383;52.460423;13.324187;"{""highway"":""traffic_signals""}" berlin;traffic_signals;573484397;52.543041;13.352718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;576321825;52.440060;13.395532;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577322007;52.487999;13.425094;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577325401;52.487293;13.421389;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;577383677;52.551270;13.383734;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577383678;52.551426;13.383467;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577383683;52.551392;13.383684;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577383684;52.551186;13.383607;"{""highway"":""traffic_signals""}" berlin;traffic_signals;577383685;52.551342;13.383309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;582702130;52.397900;13.207621;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;585467954;52.516235;13.449038;"{""highway"":""traffic_signals""}" berlin;traffic_signals;585467957;52.516376;13.449071;"{""highway"":""traffic_signals""}" berlin;traffic_signals;587656940;52.509289;13.519184;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159282;52.529739;13.401190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159289;52.529617;13.401269;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159325;52.569355;13.401131;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159345;52.569469;13.403299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159387;52.570801;13.410213;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588159407;52.571148;13.410117;"{""highway"":""traffic_signals""}" berlin;traffic_signals;588181343;52.524982;13.406430;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;588970816;52.435463;13.366768;"{""highway"":""traffic_signals""}" berlin;traffic_signals;593898177;52.436844;13.561985;"{""highway"":""traffic_signals""}" berlin;traffic_signals;595300460;52.422894;13.313131;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;595300470;52.425434;13.316291;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;595300490;52.435005;13.320901;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;595300553;52.438221;13.324331;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;595300666;52.442089;13.341612;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;595970618;52.453411;13.509892;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;596559464;52.482265;13.525456;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;596559518;52.482239;13.525631;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;597174969;52.529270;13.378674;"{""highway"":""traffic_signals""}" berlin;traffic_signals;598158268;52.442768;13.582503;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;598234403;52.513420;13.477050;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;598284527;52.497494;13.464341;"{""highway"":""traffic_signals""}" berlin;traffic_signals;598605515;52.526024;13.547703;"{""highway"":""traffic_signals""}" berlin;traffic_signals;598605517;52.526134;13.548356;"{""highway"":""traffic_signals""}" berlin;traffic_signals;598605518;52.528111;13.549013;"{""highway"":""traffic_signals""}" berlin;traffic_signals;600189121;52.553234;13.520041;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;601131682;52.482933;13.441767;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602224293;52.486813;13.276384;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602224298;52.486855;13.276299;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602232364;52.486759;13.284289;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602244726;52.482094;13.281102;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602244728;52.482075;13.281222;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602244733;52.482182;13.281253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602926406;52.558613;13.337448;"{""highway"":""traffic_signals""}" berlin;traffic_signals;602926407;52.558704;13.337584;"{""highway"":""traffic_signals""}" berlin;traffic_signals;604944178;52.477211;13.438899;"{""highway"":""traffic_signals""}" berlin;traffic_signals;604945817;52.477173;13.438755;"{""highway"":""traffic_signals""}" berlin;traffic_signals;604945824;52.475826;13.439480;"{""highway"":""traffic_signals""}" berlin;traffic_signals;606727855;52.491547;13.323137;"{""highway"":""traffic_signals""}" berlin;traffic_signals;606986501;52.512150;13.389608;"{""highway"":""traffic_signals""}" berlin;traffic_signals;606986885;52.512020;13.389629;"{""highway"":""traffic_signals""}" berlin;traffic_signals;610302155;52.600086;13.324226;"{""highway"":""traffic_signals""}" berlin;traffic_signals;613400621;52.485077;13.368105;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;613636113;52.425781;13.545470;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;615945366;52.588680;13.324995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;615987959;52.540604;13.204191;"{""highway"":""traffic_signals""}" berlin;traffic_signals;615988002;52.540897;13.203895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;620874781;52.427769;13.513375;"{""highway"":""traffic_signals""}" berlin;traffic_signals;621219394;52.536209;13.433298;"{""highway"":""traffic_signals""}" berlin;traffic_signals;622968087;52.442410;13.353836;"{""highway"":""traffic_signals""}" berlin;traffic_signals;623767537;52.548370;13.451259;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;623877076;52.494316;13.342274;"{""highway"":""traffic_signals""}" berlin;traffic_signals;623877077;52.494411;13.342262;"{""highway"":""traffic_signals""}" berlin;traffic_signals;626486759;52.425884;13.208735;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;627101639;52.547546;13.449514;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;627101665;52.547630;13.449407;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;628156652;52.512379;13.317208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;628156655;52.512363;13.316996;"{""highway"":""traffic_signals""}" berlin;traffic_signals;631440615;52.537159;13.260717;"{""highway"":""traffic_signals""}" berlin;traffic_signals;631457492;52.507484;13.450066;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;631457503;52.508629;13.450612;"{""highway"":""traffic_signals""}" berlin;traffic_signals;632358968;52.454758;13.314382;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;632947478;52.504520;13.382371;"{""highway"":""traffic_signals""}" berlin;traffic_signals;632947480;52.504471;13.382251;"{""highway"":""traffic_signals""}" berlin;traffic_signals;637829352;52.445953;13.444490;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;638916560;52.526131;13.306012;"{""highway"":""traffic_signals""}" berlin;traffic_signals;638930659;52.540863;13.202682;"{""highway"":""traffic_signals""}" berlin;traffic_signals;639306879;52.547512;13.449433;"{""highway"":""traffic_signals""}" berlin;traffic_signals;648796373;52.538406;13.197151;"{""highway"":""traffic_signals""}" berlin;traffic_signals;650732362;52.429771;13.454388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651773362;52.422962;13.440854;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651773414;52.423000;13.440904;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651773416;52.423038;13.440845;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651773417;52.423000;13.440801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651968459;52.422749;13.457741;"{""highway"":""traffic_signals""}" berlin;traffic_signals;651968460;52.422646;13.457681;"{""highway"":""traffic_signals""}" berlin;traffic_signals;652432788;52.429638;13.454038;"{""highway"":""traffic_signals""}" berlin;traffic_signals;652432790;52.430847;13.457277;"{""highway"":""traffic_signals""}" berlin;traffic_signals;652432791;52.431065;13.457533;"{""highway"":""traffic_signals""}" berlin;traffic_signals;654381332;52.512596;13.323292;"{""crossing"":""island"",""highway"":""traffic_signals""}" berlin;traffic_signals;654381359;52.512768;13.323269;"{""crossing"":""island"",""highway"":""traffic_signals""}" berlin;traffic_signals;656006018;52.416191;13.258999;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;658612539;52.449615;13.323581;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;661116249;52.510609;13.505016;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;661116264;52.510750;13.505045;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;663977268;52.464924;13.328323;"{""highway"":""traffic_signals""}" berlin;traffic_signals;667465427;52.522751;13.415308;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;667465428;52.522568;13.415068;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;669009699;52.547005;13.405603;"{""highway"":""traffic_signals""}" berlin;traffic_signals;671564358;52.430859;13.532604;"{""highway"":""traffic_signals""}" berlin;traffic_signals;671803106;52.548183;13.450649;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;672790353;52.544910;13.361939;"{""highway"":""traffic_signals""}" berlin;traffic_signals;673868062;52.533260;13.387256;"{""highway"":""traffic_signals""}" berlin;traffic_signals;673868193;52.533382;13.387576;"{""highway"":""traffic_signals""}" berlin;traffic_signals;675602656;52.522282;13.328413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;676381849;52.539894;13.418738;"{""highway"":""traffic_signals""}" berlin;traffic_signals;676381851;52.536167;13.417870;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;677136755;52.519459;13.416898;"{""highway"":""traffic_signals""}" berlin;traffic_signals;681323999;52.436878;13.503744;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;683261981;52.636448;13.493061;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;683872399;52.490215;13.468155;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;687014641;52.512238;13.489806;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;687014645;52.512112;13.489362;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;687014648;52.512318;13.489674;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;690461100;52.618767;13.240122;"{""highway"":""traffic_signals""}" berlin;traffic_signals;690461112;52.626423;13.227467;"{""highway"":""traffic_signals""}" berlin;traffic_signals;690461159;52.597942;13.275118;"{""highway"":""traffic_signals""}" berlin;traffic_signals;690916517;52.452805;13.508837;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;690916527;52.453457;13.509815;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;696464205;52.511803;13.492548;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;703741936;52.637802;13.491113;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;703741937;52.637745;13.491076;"{""highway"":""traffic_signals""}" berlin;traffic_signals;715195279;52.561562;13.208507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;715922666;52.613476;13.343823;"{""highway"":""traffic_signals""}" berlin;traffic_signals;715930219;52.623104;13.292684;"{""highway"":""traffic_signals""}" berlin;traffic_signals;717643256;52.453678;13.509798;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;717643262;52.453720;13.509829;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;727384649;52.455853;13.383820;"{""highway"":""traffic_signals""}" berlin;traffic_signals;727384652;52.455864;13.384002;"{""highway"":""traffic_signals""}" berlin;traffic_signals;729666149;52.505104;13.448843;"{""highway"":""traffic_signals""}" berlin;traffic_signals;732567064;52.592949;13.431531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;732696381;52.523796;13.423967;"{""highway"":""traffic_signals""}" berlin;traffic_signals;734289388;52.588589;13.430022;"{""highway"":""traffic_signals""}" berlin;traffic_signals;734840317;52.548988;13.387521;"{""highway"":""traffic_signals""}" berlin;traffic_signals;734864838;52.549664;13.414003;"{""highway"":""traffic_signals""}" berlin;traffic_signals;735966021;52.520557;13.414619;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;735967921;52.520912;13.415496;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;735967922;52.521099;13.415249;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;735967923;52.521126;13.415279;"{""highway"":""traffic_signals""}" berlin;traffic_signals;736589135;52.596882;13.360628;"{""highway"":""traffic_signals""}" berlin;traffic_signals;736589147;52.596947;13.360614;"{""highway"":""traffic_signals""}" berlin;traffic_signals;736589173;52.596943;13.360525;"{""highway"":""traffic_signals""}" berlin;traffic_signals;738859923;52.509220;13.374127;"{""highway"":""traffic_signals""}" berlin;traffic_signals;738859926;52.509411;13.374100;"{""highway"":""traffic_signals""}" berlin;traffic_signals;739857943;52.523136;13.433537;"{""highway"":""traffic_signals""}" berlin;traffic_signals;739857949;52.523125;13.434062;"{""highway"":""traffic_signals""}" berlin;traffic_signals;739857956;52.523342;13.434293;"{""highway"":""traffic_signals""}" berlin;traffic_signals;746506872;52.595818;13.339314;"{""highway"":""traffic_signals""}" berlin;traffic_signals;746506873;52.595768;13.339319;"{""highway"":""traffic_signals""}" berlin;traffic_signals;746506874;52.595772;13.339410;"{""highway"":""traffic_signals""}" berlin;traffic_signals;746585466;52.599667;13.301279;"{""highway"":""traffic_signals""}" berlin;traffic_signals;746585479;52.599613;13.301346;"{""highway"":""traffic_signals""}" berlin;traffic_signals;751755096;52.534775;13.328220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;752845049;52.479374;13.345273;"{""highway"":""traffic_signals""}" berlin;traffic_signals;761505318;52.452759;13.384398;"{""highway"":""traffic_signals""}" berlin;traffic_signals;761505343;52.452774;13.384601;"{""highway"":""traffic_signals""}" berlin;traffic_signals;763119306;52.535126;13.514354;"{""highway"":""traffic_signals""}" berlin;traffic_signals;765351452;52.591915;13.348505;"{""highway"":""traffic_signals""}" berlin;traffic_signals;766746960;52.461079;13.317734;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;768038190;52.551094;13.463573;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" berlin;traffic_signals;768405657;52.535263;13.277067;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;769267661;52.499233;13.431301;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;772829349;52.495892;13.361275;"{""highway"":""traffic_signals""}" berlin;traffic_signals;777364615;52.499680;13.362785;"{""highway"":""traffic_signals""}" berlin;traffic_signals;815343318;52.499161;13.419031;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343319;52.498837;13.417720;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343321;52.499439;13.418014;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343324;52.498974;13.417095;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343327;52.498737;13.418551;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343355;52.499084;13.417659;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;815343357;52.498825;13.417129;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;821551878;52.480400;13.421667;"{""highway"":""traffic_signals""}" berlin;traffic_signals;822502381;52.566193;13.412519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;824505908;52.489662;13.389920;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;835557132;52.470921;13.289718;"{""highway"":""traffic_signals""}" berlin;traffic_signals;835557148;52.470860;13.289437;"{""highway"":""traffic_signals""}" berlin;traffic_signals;838052144;52.520084;13.162655;"{""highway"":""traffic_signals""}" berlin;traffic_signals;855358513;52.415424;13.530849;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;858908887;52.516369;13.376719;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;858908893;52.514591;13.377617;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;858908900;52.516354;13.376898;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;858908904;52.516281;13.376591;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;858908920;52.516125;13.376616;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;858926808;52.541172;13.412543;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;860313203;52.524944;13.406173;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;860691344;52.511162;13.297373;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;862859888;52.519180;13.295773;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;862859894;52.519341;13.295600;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;862859914;52.519470;13.295576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;866542501;52.480190;13.525397;"{""highway"":""traffic_signals""}" berlin;traffic_signals;866635116;52.464104;13.410157;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;876679671;52.405548;13.573544;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;885842161;52.572361;13.398637;"{""highway"":""traffic_signals""}" berlin;traffic_signals;899290170;52.536808;13.326868;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;899290185;52.536758;13.326611;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;900980708;52.525352;13.342747;"{""highway"":""traffic_signals""}" berlin;traffic_signals;900980716;52.525330;13.342956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;901799422;52.487209;13.421055;"{""highway"":""traffic_signals""}" berlin;traffic_signals;901799430;52.487133;13.421162;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;920062547;52.588524;13.429998;"{""highway"":""traffic_signals""}" berlin;traffic_signals;920062552;52.588486;13.430188;"{""highway"":""traffic_signals""}" berlin;traffic_signals;925747402;52.397057;13.517940;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;925747472;52.396996;13.517782;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259332;52.442719;13.581954;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259357;52.456944;13.625897;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259379;52.452801;13.574276;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259386;52.442535;13.582775;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259405;52.452896;13.574538;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259426;52.442646;13.581888;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259455;52.452938;13.574523;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259466;52.442490;13.582543;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259477;52.438736;13.592055;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259489;52.452965;13.574446;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259495;52.452824;13.574234;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259514;52.438591;13.592738;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259519;52.456760;13.625436;"{""highway"":""traffic_signals""}" berlin;traffic_signals;928259538;52.442833;13.582069;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259539;52.452976;13.574414;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259541;52.457081;13.625484;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;928259562;52.442421;13.582474;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;928259564;52.452778;13.574478;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;933731988;52.537106;13.223256;"{""highway"":""traffic_signals""}" berlin;traffic_signals;933732137;52.537254;13.223195;"{""highway"":""traffic_signals""}" berlin;traffic_signals;937153130;52.431534;13.495255;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937153142;52.431568;13.495476;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937153152;52.431728;13.495083;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937153155;52.431755;13.495262;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937153158;52.432289;13.495956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;937153169;52.431679;13.495437;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;937153195;52.431625;13.495087;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;937964351;52.415459;13.531261;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937964379;52.415493;13.530781;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;937964399;52.412140;13.484508;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937964631;52.415421;13.531131;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;937965278;52.415661;13.531288;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;937965365;52.415688;13.530749;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;937965397;52.415730;13.530918;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;942862060;52.405674;13.573844;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942862225;52.405945;13.573395;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942862238;52.405590;13.573161;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942862293;52.394928;13.534592;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942862613;52.393021;13.525496;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;942862792;52.395012;13.534210;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942863195;52.394821;13.534078;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;942863431;52.394726;13.534102;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;942863622;52.393108;13.525492;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141536;52.429642;13.530069;"{""highway"":""traffic_signals""}" berlin;traffic_signals;945141569;52.428349;13.519857;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141768;52.429737;13.529943;"{""crossing"":""unmarked"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141793;52.428127;13.519655;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141809;52.428368;13.519382;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;945141900;52.432426;13.535008;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141912;52.429691;13.530003;"{""highway"":""traffic_signals""}" berlin;traffic_signals;945141937;52.429661;13.530043;"{""crossing"":""unmarked"",""highway"":""traffic_signals""}" berlin;traffic_signals;945141958;52.432266;13.535008;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;945142201;52.432407;13.535234;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;945142211;52.429615;13.530101;"{""crossing"":""unmarked"",""highway"":""traffic_signals""}" berlin;traffic_signals;945142226;52.428535;13.519538;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;946947095;52.399185;13.544297;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;946947235;52.399231;13.544681;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;946947841;52.399265;13.544183;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948654823;52.435307;13.501013;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948654832;52.416218;13.497616;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948654838;52.415596;13.496581;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948654845;52.418594;13.505644;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948654859;52.416111;13.497736;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948654926;52.415989;13.497404;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655114;52.415661;13.496182;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655155;52.435215;13.500579;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655172;52.418449;13.505588;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655234;52.421822;13.488195;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655237;52.436646;13.503707;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655314;52.419418;13.510518;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655422;52.435146;13.500666;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655593;52.415600;13.496342;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655674;52.418526;13.506048;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655683;52.419243;13.510426;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655701;52.421535;13.488458;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655713;52.416286;13.497271;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655755;52.415661;13.496732;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655758;52.416111;13.497328;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655780;52.415787;13.496857;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655821;52.435379;13.500616;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655869;52.419189;13.510589;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655897;52.415764;13.496187;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655919;52.435417;13.500896;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655943;52.421867;13.488364;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948655945;52.436810;13.504162;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948655968;52.419304;13.510756;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948656010;52.419960;13.490176;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948656093;52.415844;13.496353;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948656155;52.436745;13.503609;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948656208;52.436890;13.503877;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;948656228;52.415852;13.496618;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948656242;52.418324;13.505925;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;948656285;52.421574;13.488628;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;949590928;52.504395;13.435132;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;951424896;52.501007;13.521479;"{""highway"":""traffic_signals""}" berlin;traffic_signals;956276568;52.404694;13.510447;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276576;52.411755;13.503703;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276589;52.409889;13.505337;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276594;52.404690;13.510748;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276598;52.397606;13.519312;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276609;52.411579;13.503297;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276638;52.411800;13.503414;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276644;52.397457;13.519220;"{""highway"":""traffic_signals""}" berlin;traffic_signals;956276645;52.411552;13.503505;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276711;52.409649;13.505427;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276721;52.404526;13.510355;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276756;52.404495;13.510651;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276770;52.397343;13.518517;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276904;52.411743;13.503303;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276917;52.404449;13.510526;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;956276928;52.409672;13.505184;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276930;52.409840;13.505246;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276935;52.411613;13.503612;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276938;52.404633;13.510336;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276939;52.409714;13.505530;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;956276983;52.409824;13.505574;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;961575580;52.496883;13.524082;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;961807409;52.522301;13.416293;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961807414;52.522343;13.416582;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961807418;52.522102;13.416073;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961807421;52.522236;13.416908;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961816249;52.520763;13.415424;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961816257;52.520653;13.415298;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961875299;52.517151;13.409157;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961875301;52.516792;13.409467;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961875308;52.516685;13.409316;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961875311;52.516937;13.409432;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961963788;52.515373;13.418161;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961963796;52.515491;13.417884;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961963819;52.515587;13.418332;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961963824;52.515377;13.418288;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961984568;52.516914;13.408861;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961984577;52.517159;13.408986;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961984592;52.517056;13.408832;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;961984606;52.516705;13.409163;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;964750391;52.513767;13.473380;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;967017877;52.524086;13.412385;"{""highway"":""traffic_signals""}" berlin;traffic_signals;968024959;52.487427;13.419473;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;968024963;52.487545;13.419507;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;971891590;52.513912;13.473422;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;982330846;52.515041;13.350682;"{""highway"":""traffic_signals""}" berlin;traffic_signals;987195315;52.434399;13.542699;"{""highway"":""traffic_signals""}" berlin;traffic_signals;988883947;52.446682;13.506804;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;998756458;52.535378;13.406416;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1006022665;52.535114;13.276954;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1011319218;52.514183;13.453362;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1022827807;52.459637;13.368030;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1064688236;52.478882;13.310127;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1071557118;52.590580;13.282807;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1086886776;52.593719;13.281278;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1090987241;52.559532;13.412264;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1104278089;52.534969;13.509708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1104278210;52.534840;13.509691;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1111431985;52.453938;13.319408;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1111432020;52.454132;13.318944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1111432024;52.454136;13.319263;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1111432074;52.454086;13.318621;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1121847584;52.490017;13.419366;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1121847597;52.490150;13.419790;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1121847602;52.489998;13.419851;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1121856178;52.487186;13.421535;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1122015351;52.458801;13.342295;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1122427292;52.513252;13.322549;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1123399074;52.505463;13.329749;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1141487788;52.589783;13.283522;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1169056635;52.469025;13.328259;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1169056647;52.469025;13.328423;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1170555093;52.469543;13.343847;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1188819366;52.506798;13.292883;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1188819367;52.506687;13.292894;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1224092187;52.518505;13.283477;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1243852524;52.561775;13.326032;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1246065063;52.375515;13.418708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1246065065;52.375523;13.418373;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1246065439;52.375381;13.418335;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1254415600;52.512184;13.317132;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1264394986;52.523857;13.439268;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1268256357;52.548695;13.467206;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1268256377;52.548676;13.467083;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1275468905;52.523224;13.413659;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1275468907;52.523399;13.413889;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1282023414;52.553131;13.347026;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1282023418;52.553249;13.347200;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1289731061;52.524117;13.409884;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1299836371;52.510094;13.329721;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1304649484;52.537003;13.260680;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1315009238;52.470306;13.385566;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1315015321;52.469410;13.385278;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1326451025;52.542484;13.365771;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1326451034;52.542591;13.366064;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1327749308;52.513626;13.350408;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1342724020;52.515827;13.369879;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1348697004;52.517757;13.376838;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1352310847;52.517776;13.370819;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1355629047;52.452415;13.509003;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1356086674;52.427685;13.215342;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1358046339;52.464531;13.513382;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1358046341;52.464760;13.513847;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1358046342;52.464844;13.513497;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1369666639;52.465179;13.162830;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1371037846;52.458942;13.331274;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1379155296;52.541862;13.235842;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1380016726;52.547680;13.449341;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1380718942;52.558716;13.413552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1380795032;52.559769;13.413052;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1380795081;52.559772;13.413343;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1380846675;52.559940;13.413039;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1380846742;52.561134;13.412938;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1383533700;52.438675;13.564826;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1383533711;52.440193;13.554429;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1383533714;52.441757;13.569849;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1383533716;52.441795;13.569526;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1383533722;52.442074;13.569657;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1383533725;52.444553;13.569062;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1383533727;52.444626;13.569145;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1383533729;52.444691;13.569227;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1387894030;52.476871;13.288561;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1395641253;52.478329;13.524627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641256;52.478565;13.524339;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641269;52.478825;13.524552;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641283;52.480129;13.525208;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641298;52.480328;13.524839;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641306;52.480423;13.525083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1395641370;52.482956;13.525859;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1395641373;52.482979;13.525677;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1402103177;52.538269;13.231737;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1402680373;52.548244;13.451078;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1404082035;52.537910;13.264244;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1404734013;52.505836;13.321907;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1406942843;52.458878;13.331183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1408373503;52.512405;13.452791;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1408771150;52.458145;13.497148;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1412045005;52.520390;13.469581;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1412236774;52.448601;13.511925;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1412236775;52.448685;13.512159;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1412236776;52.448837;13.511707;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1412236777;52.448845;13.512183;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1412236785;52.448914;13.511950;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1412236790;52.452171;13.508688;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1412236791;52.452522;13.508473;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1412236797;52.452686;13.508958;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1412236799;52.452885;13.508800;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1415785242;52.506161;13.568763;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1415785252;52.506317;13.569278;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1415785254;52.506374;13.568672;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1419412378;52.439693;13.402513;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1420372619;52.462410;13.322016;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1420372623;52.462467;13.322066;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1421651699;52.446793;13.623818;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1426021644;52.469719;13.331295;"{""crossing"":""island"",""highway"":""traffic_signals""}" berlin;traffic_signals;1428406776;52.542686;13.392477;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1428406778;52.542728;13.392660;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1433876784;52.509144;13.180229;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1440912794;52.518711;13.563995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1440912822;52.518848;13.564186;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1440912834;52.518875;13.563681;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1440912846;52.519001;13.563877;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1447899974;52.517780;13.376971;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1448679344;52.529430;13.397569;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1453038454;52.630268;13.382530;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1454872917;52.487514;13.431615;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1459314406;52.387470;13.409861;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1466866946;52.489815;13.433852;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1468426088;52.520699;13.542203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1475154250;52.431400;13.310024;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1499849235;52.489922;13.433797;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856799;52.489826;13.434043;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856801;52.489948;13.433978;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856815;52.491135;13.435130;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856816;52.491169;13.435342;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856820;52.491261;13.435070;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1499856821;52.491280;13.435270;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1501407578;52.542255;13.639450;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1501407583;52.543545;13.648047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1502780009;52.486752;13.428958;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1502780041;52.487492;13.431405;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1503705770;52.516781;13.445167;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1509404644;52.471439;13.441331;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1509404653;52.481178;13.434752;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1509404654;52.481239;13.434882;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1509404660;52.484386;13.428815;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1509633768;52.486698;13.428681;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1509987576;52.576115;13.294385;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1509987580;52.576180;13.295033;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1509987582;52.576420;13.294368;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1509987622;52.576538;13.295006;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1510364563;52.452248;13.426379;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1510364582;52.452362;13.426377;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1511952652;52.445786;13.444576;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1516808171;52.522739;13.300498;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1516844985;52.484505;13.345366;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1516844988;52.484688;13.345477;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1516845006;52.484779;13.345024;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518110235;52.505756;13.519504;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1518839530;52.553516;13.414653;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518839542;52.553612;13.414068;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1518839544;52.553856;13.414921;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518864798;52.440376;13.435100;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518864807;52.443993;13.433259;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518864808;52.444016;13.433752;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1518864811;52.444328;13.433415;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1525212345;52.435108;13.540190;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1528011431;52.499157;13.427714;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1528011560;52.499283;13.427091;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1539712847;52.498779;13.419370;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1539712862;52.498806;13.419430;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1539712870;52.499077;13.418893;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1539734178;52.498901;13.418809;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1539734183;52.498955;13.419402;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1539734200;52.499161;13.418822;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1539749693;52.498928;13.417861;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1540496418;52.468681;13.514207;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1540834043;52.417522;13.366603;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1543145111;52.444420;13.569454;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1543145123;52.444542;13.568937;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1543145142;52.444691;13.569579;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1543145146;52.444794;13.569328;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1545985671;52.551144;13.463527;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1546015296;52.553822;13.467642;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" berlin;traffic_signals;1546020576;52.553921;13.467673;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1546103543;52.488094;13.424826;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1546111331;52.487591;13.425484;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1546111385;52.487640;13.425684;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1546111582;52.487736;13.425090;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1546111714;52.487759;13.425761;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1546111715;52.487904;13.424900;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1549537382;52.559998;13.467128;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1549537393;52.563976;13.469790;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1549660326;52.572159;13.482708;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1553912671;52.435143;13.500957;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1556021380;52.467163;13.488961;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223255;52.425671;13.545035;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223269;52.425758;13.545011;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560223286;52.425907;13.545480;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223356;52.426224;13.546343;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223370;52.426304;13.546282;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560223389;52.426411;13.546674;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560223399;52.426441;13.526940;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223408;52.426472;13.526352;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223416;52.426476;13.546313;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223426;52.426479;13.546623;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223489;52.426662;13.526672;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223690;52.428238;13.519838;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560223806;52.428703;13.526753;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560223813;52.428757;13.526498;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1560223832;52.428852;13.526456;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1560557449;52.457935;13.317819;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1561864600;52.568005;13.439618;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1566370849;52.600803;13.514589;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1566942204;52.522652;13.415518;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233653;52.452850;13.515424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233658;52.453030;13.514696;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233660;52.453087;13.515236;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233662;52.454144;13.513046;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233670;52.454182;13.513415;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233672;52.454372;13.513255;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233674;52.454605;13.512082;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233675;52.454716;13.511959;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233676;52.454865;13.512413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1569233677;52.455025;13.511686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1570964707;52.542835;13.451588;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1570967247;52.542961;13.451697;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1571789015;52.498974;13.646610;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1571789028;52.499119;13.645925;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1576655201;52.444378;13.573627;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1580769291;52.529495;13.379379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1585628404;52.549961;13.417351;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1585630223;52.549828;13.417231;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1591359079;52.446438;13.559399;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1591359087;52.446659;13.558668;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1591359104;52.446693;13.559536;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1591359113;52.446907;13.558827;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1591359167;52.471638;13.478516;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1594381971;52.626068;13.495816;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1594454695;52.557583;13.413827;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1594460701;52.561146;13.410941;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1599952651;52.539234;13.424409;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1599952656;52.538994;13.424294;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1599974858;52.540272;13.416325;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1599974865;52.539459;13.421576;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1600073874;52.537903;13.412047;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1602843567;52.542923;13.426576;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1607637656;52.510071;13.525039;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1611632113;52.418560;13.324695;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1611914120;52.416607;13.338232;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1614024727;52.429066;13.329704;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1614099519;52.409065;13.359261;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1614392921;52.442413;13.332077;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1617500942;52.446327;13.292851;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1617792206;52.447823;13.299343;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1617792220;52.449230;13.303686;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1618621880;52.448124;13.340111;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1618722108;52.446499;13.559444;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1629411669;52.546646;13.603481;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1629411731;52.548405;13.592929;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1631217896;52.495514;13.420426;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631217912;52.495514;13.420561;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631217939;52.495602;13.420190;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631217991;52.495613;13.420689;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631218251;52.496387;13.419576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631218256;52.496456;13.420003;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1631515735;52.557034;13.466811;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1635358118;52.485966;13.430105;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1635358119;52.485989;13.430343;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1635358120;52.486088;13.430440;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1635358121;52.486237;13.430382;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1636208464;52.433472;13.319420;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1637792039;52.438438;13.592326;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1637792046;52.446209;13.585586;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1638727892;52.452412;13.332702;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1638729836;52.453178;13.331704;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1646998571;52.482868;13.434655;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1652675097;52.434353;13.538787;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1652675099;52.434490;13.538564;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1652675105;52.435333;13.541279;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1652869620;52.487267;13.421479;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1654049201;52.394413;13.401668;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1655745427;52.507019;13.561650;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1655745434;52.507156;13.561270;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1655745439;52.507374;13.561445;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1656102229;52.513252;13.322551;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1658721677;52.388767;13.300365;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1659650482;52.406395;13.558290;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1659650510;52.406483;13.558425;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1662571374;52.394268;13.411114;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1666469770;52.508541;13.260826;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1672301034;52.399403;13.544722;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1672301047;52.399490;13.544595;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1672821438;52.523392;13.370591;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1673191431;52.420399;13.538705;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1673191432;52.420433;13.538908;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1673191433;52.420528;13.538612;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1673191434;52.420582;13.538817;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1673427306;52.513664;13.350203;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1679204688;52.520721;13.480303;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1679204825;52.548679;13.467120;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1680264425;52.517262;13.588682;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1680264471;52.517750;13.588940;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1684769972;52.529476;13.590469;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1684769974;52.529510;13.590297;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1686976998;52.507519;13.552742;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1688091720;52.404327;13.406023;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1688279783;52.463272;13.402060;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1688279818;52.463772;13.400652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1688818125;52.542397;13.639446;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1688839858;52.517731;13.589428;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1691852046;52.576134;13.503531;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1692816050;52.534573;13.630801;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1692823367;52.529324;13.626038;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693004230;52.523464;13.587424;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693004231;52.523487;13.587277;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693515317;52.455593;13.558306;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693515796;52.455711;13.557983;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693515869;52.456001;13.558482;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693515987;52.456345;13.562283;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693516034;52.456627;13.562724;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693516136;52.457615;13.542158;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693516139;52.457703;13.543555;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1693516145;52.457741;13.542283;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1704693513;52.429565;13.529298;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1704693673;52.432190;13.535121;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1704693699;52.432369;13.535327;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1708861791;52.441738;13.261705;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1709226069;52.525768;13.414319;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1711812127;52.510731;13.376682;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1711812144;52.510735;13.376839;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1712961595;52.514088;13.406282;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1714102745;52.540119;13.418840;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1715902468;52.562984;13.504809;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1715902470;52.563000;13.505349;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1715902531;52.563465;13.504652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1715902532;52.563622;13.505783;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1717543012;52.568249;13.412059;"{""note"":""Baustellenampel"",""highway"":""traffic_signals""}" berlin;traffic_signals;1723962795;52.512886;13.330332;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1750793012;52.520008;13.422589;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1752085816;52.522591;13.415021;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1753210615;52.509800;13.273437;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1753894241;52.534138;13.280059;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1761322091;52.457409;13.355671;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769380239;52.490402;13.423634;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769380269;52.490433;13.423805;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769380589;52.496494;13.419639;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769380594;52.496540;13.419805;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769380605;52.496540;13.420167;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691969;52.509510;13.546390;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691971;52.509621;13.546297;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691973;52.509705;13.546402;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691974;52.509712;13.546309;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691976;52.509811;13.542162;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691977;52.509815;13.545727;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691978;52.509888;13.524895;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691980;52.509911;13.542176;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691981;52.510040;13.542145;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1769691984;52.510078;13.525084;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691993;52.510529;13.504652;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691996;52.510662;13.504309;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1769691997;52.510746;13.505118;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1772659001;52.486362;13.428950;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1772659002;52.486404;13.429150;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1772659003;52.486538;13.429147;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1772659004;52.486557;13.428726;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1773474956;52.504742;13.342962;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1773474958;52.504623;13.342881;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1773601366;52.482941;13.501297;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1773601367;52.482967;13.501473;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1773601369;52.483150;13.501543;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1773601390;52.483227;13.500968;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1773601391;52.483295;13.501149;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1783635041;52.502895;13.631713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1783635042;52.502937;13.632400;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1783635046;52.503159;13.632053;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1790511403;52.551678;13.465600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1791264885;52.524830;13.406109;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1791505417;52.511860;13.475457;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1791505420;52.512123;13.472864;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1792859967;52.455513;13.580434;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1797707408;52.548584;13.508358;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1803638860;52.467075;13.367142;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1803638861;52.467152;13.367311;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1803835381;52.531738;13.389748;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1806879055;52.456345;13.510158;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1806879063;52.456501;13.509642;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1806879080;52.456593;13.509797;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1806879095;52.468548;13.514771;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1806879098;52.468559;13.514369;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1809302384;52.379791;13.643272;"{""note"":""Tram reversing"",""highway"":""traffic_signals""}" berlin;traffic_signals;1809959877;52.555641;13.476476;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1812153269;52.523495;13.402766;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1812234357;52.513832;13.382176;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1814668307;52.504032;13.409354;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1818648902;52.510334;13.389902;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1821341202;52.607643;13.433563;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821622029;52.590031;13.401695;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821647683;52.585468;13.402650;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821765888;52.579254;13.398225;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821766046;52.580452;13.400956;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821788428;52.569244;13.401328;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821890717;52.572330;13.398794;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821890886;52.576866;13.398458;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1821890940;52.579239;13.398395;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822518681;52.510986;13.468669;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1822620447;52.515709;13.454214;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822635086;52.512482;13.452353;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822646800;52.507748;13.450519;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822646820;52.507816;13.450244;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822646831;52.508488;13.450995;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1822646835;52.508564;13.450582;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1823188364;52.449726;13.662291;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1823188670;52.457176;13.540771;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1823189254;52.469234;13.597131;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1824063565;52.460701;13.384886;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1827996421;52.519993;13.404944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1828018094;52.523888;13.411403;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1828018095;52.523991;13.411558;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1828882341;52.543526;13.491405;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1828882363;52.547775;13.499786;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1828900020;52.547821;13.499625;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1828900051;52.548820;13.501565;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1831656634;52.426926;13.446878;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1831656635;52.426979;13.447024;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1831656636;52.427044;13.446725;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1831724695;52.570747;13.410030;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1831749631;52.566406;13.412266;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1831749635;52.566425;13.412485;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1832211368;52.458740;13.348918;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1832211371;52.458843;13.348292;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1832211395;52.459187;13.349099;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1832211401;52.459297;13.348437;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1833612983;52.544769;13.591550;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1836912206;52.518513;13.169847;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837751351;52.513073;13.330057;"{""crossing"":""island"",""highway"":""traffic_signals""}" berlin;traffic_signals;1837751357;52.513229;13.330339;"{""crossing"":""no"",""highway"":""traffic_signals""}" berlin;traffic_signals;1837751366;52.513412;13.330162;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1837885579;52.533382;13.387576;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885603;52.533474;13.387447;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885687;52.535439;13.390166;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885692;52.535477;13.390088;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885694;52.535534;13.390236;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885778;52.538235;13.395785;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885779;52.538242;13.395944;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885781;52.538292;13.396121;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885782;52.538296;13.396230;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885803;52.538349;13.396183;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885819;52.539104;13.398988;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837885867;52.539825;13.401592;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1837908216;52.541042;13.406685;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838489920;52.547634;13.413600;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838489928;52.553986;13.414410;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1838511080;52.547668;13.413194;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838613291;52.532532;13.412780;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838613299;52.533081;13.412957;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1838613313;52.537949;13.412413;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838613334;52.540096;13.412368;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1838613379;52.541187;13.412310;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1839996186;52.542511;13.541736;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1839996193;52.542538;13.541757;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1841185986;52.569496;13.526555;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1841629020;52.501553;13.475194;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1843860808;52.505074;13.337243;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1843860811;52.505161;13.337275;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1843860812;52.505177;13.336152;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1843860814;52.505260;13.339922;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1843860816;52.505260;13.336179;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1843860821;52.505383;13.339910;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1844135134;52.451530;13.601128;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1845060450;52.560303;13.387560;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1847396278;52.566013;13.395886;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1852868719;52.497688;13.361348;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1860618676;52.525639;13.445296;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1860618677;52.525639;13.445296;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1861798449;52.546520;13.418257;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1863123322;52.458496;13.526478;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1864407560;52.552006;13.465766;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1864614860;52.518166;13.499253;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1865677206;52.438648;13.592687;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1865677271;52.440693;13.586809;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1865878264;52.442516;13.582573;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1866453296;52.509995;13.518789;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1867580144;52.446701;13.506645;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1867580145;52.446720;13.506472;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1867737430;52.438499;13.354173;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1871042714;52.510529;13.291367;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1871042715;52.510551;13.291772;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1871042716;52.510693;13.291365;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1871042717;52.510715;13.291762;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1876468338;52.516644;13.409083;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1876468340;52.516720;13.409557;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1876468341;52.517105;13.408770;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1876468344;52.517235;13.409252;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1876510383;52.443794;13.288773;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1876510386;52.443871;13.288976;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1876510389;52.443916;13.288654;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1876510393;52.443993;13.288860;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1884227377;52.438000;13.548221;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1895427085;52.542694;13.541878;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1895427132;52.542774;13.541939;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1895560465;52.542557;13.541567;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1895560473;52.542595;13.541343;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1896179401;52.399918;13.250439;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1899025078;52.528786;13.519158;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1906766906;52.426826;13.520308;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1906766908;52.426857;13.519791;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1906766973;52.428009;13.513080;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1906767014;52.428448;13.513572;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1918530791;52.470253;13.464507;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1918938058;52.454273;13.318619;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1918938059;52.454529;13.318691;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1918938060;52.454540;13.318457;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1956115008;52.397011;13.719738;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1956115167;52.396660;13.719926;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1956115380;52.396751;13.719601;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1956116130;52.396881;13.720089;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1960108571;52.514687;13.352012;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1961834996;52.499104;13.418819;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;1965369467;52.533474;13.387447;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1965563833;52.440823;13.586379;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1965563895;52.440865;13.586479;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1965563905;52.440876;13.586503;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1965563951;52.440975;13.586807;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1965563960;52.441116;13.593302;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1965563969;52.441303;13.593100;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1965564020;52.441437;13.593335;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1976653168;52.428871;13.550834;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1976653169;52.428883;13.550571;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1976653170;52.428940;13.550444;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1976653171;52.428963;13.551024;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1976653173;52.429153;13.550410;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1976653174;52.429253;13.550875;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1976653175;52.429268;13.550557;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1978474647;52.431545;13.546968;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1978484088;52.431534;13.546651;"{""highway"":""traffic_signals""}" berlin;traffic_signals;1978484360;52.431606;13.546962;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;1978485413;52.430119;13.549300;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1978490363;52.431454;13.546779;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;1978557290;52.524368;13.418756;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2002009879;52.463272;13.403253;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2003086094;52.463596;13.400773;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2008877545;52.433548;13.498108;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2008877559;52.433739;13.497714;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2008877575;52.433773;13.497924;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2014223795;52.456612;13.510161;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2014223842;52.533684;13.550175;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2017902853;52.432632;13.554904;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2017902854;52.432739;13.554813;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2019486488;52.545170;13.543432;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2019486521;52.545406;13.543623;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2019510386;52.545105;13.543653;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2019510387;52.545135;13.543898;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2019510388;52.545334;13.543841;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2019622143;52.492962;13.421925;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2020514544;52.505821;13.368388;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2021286619;52.503559;13.307621;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2021286620;52.503616;13.307693;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2021286621;52.503620;13.307502;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2021286622;52.503681;13.307581;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2021497324;52.417599;13.332975;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2030570375;52.532639;13.519100;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2030570382;52.532799;13.518570;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2030862315;52.446442;13.506543;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2030862318;52.446453;13.506791;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2030862326;52.446495;13.506379;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2030862358;52.446625;13.506256;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2032008686;52.446308;13.514427;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2032008687;52.446346;13.514108;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2032008688;52.446423;13.514023;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2032008689;52.446419;13.514629;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2032008690;52.446548;13.514042;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2032008691;52.446579;13.514677;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2032008692;52.446671;13.514260;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2032008988;52.453468;13.510141;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2038971867;52.396667;13.540093;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2038971871;52.396950;13.540059;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042635583;52.466297;13.521379;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2042635586;52.466301;13.521675;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042635588;52.466434;13.521820;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2042635591;52.466476;13.521260;"{""crossing"":""no"",""highway"":""traffic_signals""}" berlin;traffic_signals;2042758825;52.418102;13.147713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758827;52.418198;13.147379;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758830;52.418362;13.148051;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758850;52.419575;13.161658;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758853;52.419712;13.161365;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758857;52.419804;13.175411;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042758860;52.419853;13.161793;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758862;52.419903;13.175597;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758865;52.419922;13.175526;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042758868;52.419945;13.175003;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042758870;52.419952;13.161539;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758873;52.419964;13.174939;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758875;52.420036;13.175495;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042758878;52.420086;13.175359;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2042758880;52.420120;13.175396;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2042758891;52.420406;13.166943;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2042758898;52.420513;13.167049;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2043804605;52.451717;13.600776;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2043804615;52.451870;13.601434;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2054993600;52.527985;13.423713;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2054993615;52.528168;13.424278;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2054993632;52.528286;13.423322;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2054993646;52.528488;13.423926;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2055878742;52.570641;13.398861;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2058326246;52.498837;13.459631;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2058326249;52.498947;13.459962;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2058326252;52.498997;13.459485;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2058326261;52.499119;13.459838;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2058326281;52.500217;13.455256;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2058326286;52.500240;13.455535;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2058326301;52.500336;13.455631;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2058326306;52.500374;13.455111;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2058326311;52.500473;13.455178;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2058326316;52.500484;13.455469;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2077938192;52.504253;13.442291;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077938193;52.504402;13.441583;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077938207;52.504696;13.440812;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2077938208;52.504745;13.441032;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077938211;52.504784;13.440932;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2077938213;52.504803;13.440535;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2077938217;52.504845;13.440440;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077938223;52.504902;13.440645;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2077938231;52.504967;13.440891;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077971749;52.505886;13.438459;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077971751;52.506069;13.437949;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2077971752;52.506104;13.438454;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2078713441;52.378239;13.645456;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2078713442;52.378277;13.645273;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2078713444;52.378281;13.645519;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2078713447;52.378414;13.645207;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2078713448;52.378452;13.645284;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2079691190;52.460712;13.384720;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2079691194;52.460815;13.385145;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2079691196;52.460861;13.384590;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2079691198;52.460976;13.384954;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2079691199;52.460991;13.384785;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2083460194;52.558086;13.135289;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2088368499;52.523365;13.370462;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2089375600;52.526253;13.369177;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2089428375;52.526512;13.369141;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2089428400;52.526905;13.370410;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2093636965;52.508320;13.434880;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2093636967;52.508442;13.435095;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2093636969;52.508549;13.434412;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2093636971;52.508709;13.434605;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2093636973;52.508724;13.435108;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2165987562;52.433765;13.498294;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2165987563;52.433804;13.498551;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2165987564;52.434010;13.498140;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2165987566;52.434052;13.498393;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2169462569;52.434868;13.540079;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2169668995;52.369530;13.700460;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2184060054;52.491528;13.323302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2198290681;52.541649;13.168070;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2202075022;52.460003;13.408049;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2202075089;52.463306;13.404216;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2202075092;52.463352;13.403045;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2202075095;52.463379;13.403977;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2202075096;52.463387;13.402276;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075097;52.463406;13.404265;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075099;52.463428;13.401908;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2202075102;52.463509;13.403339;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2202075103;52.463520;13.402334;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2202075104;52.463558;13.404141;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2202075106;52.463570;13.403083;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075108;52.463573;13.402800;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075109;52.463600;13.403058;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2202075110;52.463608;13.401099;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075111;52.463615;13.403918;"{""crossing"":""traffic_signals""}" berlin;traffic_signals;2202075113;52.463715;13.401181;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2215380458;52.393696;13.406502;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2215380459;52.393707;13.406814;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2217017495;52.499073;13.646655;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2250683384;52.631344;13.519304;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" berlin;traffic_signals;2251393211;52.568134;13.305302;"{""highway"":""traffic_signals""}" berlin;traffic_signals;2255293275;52.446400;13.559338;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2255293279;52.446491;13.558909;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2255293282;52.446636;13.558757;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2255293284;52.446732;13.558754;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2255293291;52.446758;13.559300;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" berlin;traffic_signals;2255293298;52.446842;13.558874;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" \ No newline at end of file diff --git a/assets/csv/odbl/berlin_toilets.csv b/assets/csv/odbl/berlin_toilets.csv new file mode 100644 index 0000000..c553b61 --- /dev/null +++ b/assets/csv/odbl/berlin_toilets.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags berlin;toilet;29040668;52.525005;13.335496;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;36310181;52.550682;13.334696;[] berlin;toilet;60240150;52.518494;13.406313;"{""wheelchair"":""yes""}" berlin;toilet;66917214;52.516846;13.382957;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;68437796;52.489113;13.450987;[] berlin;toilet;71180687;52.517624;13.374006;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes"",""fee"":""0.50 \u20ac""}" berlin;toilet;76464669;52.482880;13.326294;"{""name"":""\u00d6ffentliche Toiletten"",""wheelchair"":""no""}" berlin;toilet;76465610;52.563938;13.326712;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;78252191;52.522049;13.400430;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;81362621;52.509659;13.272672;"{""name"":""\u00d6ffentliche Toiletten"",""wheelchair"":""no""}" berlin;toilet;86001818;52.514713;13.392784;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;88456311;52.447598;13.229318;"{""wheelchair"":""no""}" berlin;toilet;97876682;52.635666;13.494711;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;151012608;52.527950;13.538041;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;151012639;52.513420;13.554916;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;216261158;52.528980;13.378122;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;245287540;52.512703;13.413565;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;253775733;52.439541;13.177282;[] berlin;toilet;253775734;52.437317;13.177346;[] berlin;toilet;253775735;52.440594;13.177316;[] berlin;toilet;254863962;52.470295;13.464116;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;257372882;52.487473;13.464385;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;257380124;52.492012;13.478242;"{""wheelchair"":""yes""}" berlin;toilet;258411014;52.479050;13.328337;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;258604531;52.481106;13.363352;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no""}" berlin;toilet;258889664;52.570076;13.565886;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;259606829;52.541481;13.205663;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;259606898;52.538380;13.201164;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;259983109;52.484306;13.352755;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;261606216;52.523487;13.432912;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;261745933;52.544716;13.390661;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;264964211;52.529373;13.591378;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;268981842;52.495853;13.419761;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;270161514;52.495064;13.439161;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;271938947;52.430531;13.121762;"{""wheelchair"":""yes""}" berlin;toilet;276795709;52.433987;13.423039;[] berlin;toilet;276899653;52.548214;13.451460;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;278139236;52.536888;13.205014;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes""}" berlin;toilet;280441806;52.438980;13.343104;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;286472700;52.423904;13.216314;[] berlin;toilet;286472701;52.423073;13.212888;[] berlin;toilet;286618730;52.478649;13.343571;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;286976952;52.517246;13.513785;[] berlin;toilet;286976954;52.515038;13.508848;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;287525643;52.498257;13.285593;[] berlin;toilet;287809080;52.536152;13.294005;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;288089406;52.541496;13.438207;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;288089949;52.533566;13.437066;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;289193076;52.452229;13.452052;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;291412453;52.452507;13.148975;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;294583209;52.494854;13.353646;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;294614943;52.487629;13.425302;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;296134228;52.427650;13.326095;"{""wheelchair"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;298063781;52.402744;13.258632;[] berlin;toilet;302805945;52.484592;13.385554;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;304575905;52.516376;13.375523;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;308003239;52.506500;13.227692;"{""wheelchair"":""no""}" berlin;toilet;308611347;52.548630;13.420882;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;308809962;52.550667;13.413489;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;309334321;52.417614;13.304842;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;309363218;52.494022;13.325086;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;309371016;52.501492;13.317329;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;310022911;52.545784;13.427534;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;310354965;52.543011;13.412010;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;310570379;52.589111;13.272575;"{""name"":""2x City Toilette"",""wheelchair"":""yes""}" berlin;toilet;310612133;52.589855;13.282790;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;310665969;52.503426;13.330873;"{""name"":""\u00d6ffentliche Toiletten"",""wheelchair"":""no""}" berlin;toilet;311083145;52.495323;13.299377;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;311161398;52.545536;13.355636;"{""name"":""WC Herren"",""wheelchair"":""no""}" berlin;toilet;311161400;52.545479;13.355717;"{""name"":""WC Damen"",""wheelchair"":""no""}" berlin;toilet;311161404;52.545307;13.355146;"{""name"":""WC Herren"",""wheelchair"":""no""}" berlin;toilet;311161409;52.545250;13.355224;"{""name"":""WC Damen"",""wheelchair"":""no""}" berlin;toilet;311161410;52.545052;13.354651;"{""name"":""WC Herren""}" berlin;toilet;311161411;52.544998;13.354724;"{""name"":""WC Damen"",""wheelchair"":""no""}" berlin;toilet;311161412;52.544746;13.355063;"{""name"":""WC Herren"",""wheelchair"":""yes""}" berlin;toilet;311161413;52.544659;13.355182;"{""name"":""WC Damen""}" berlin;toilet;311580179;52.543598;13.351224;"{""wheelchair"":""yes"",""operator"":""TFH-Berlin"",""fee"":""no""}" berlin;toilet;311644392;52.430817;13.309507;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;312476072;52.519966;13.461077;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""no""}" berlin;toilet;312955941;52.475784;13.290380;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;315361412;52.459225;13.355690;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;315792825;52.497166;13.322382;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;315896534;52.525299;13.231113;[] berlin;toilet;317179422;52.546967;13.358536;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;317389489;52.551052;13.430442;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;322867182;52.585411;13.253807;[] berlin;toilet;333314104;52.477551;13.421898;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;333944057;52.559868;13.413512;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;337223385;52.535503;13.416986;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;337223695;52.546757;13.405408;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;343401150;52.550556;13.377991;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;345555787;52.464638;13.513884;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;347422928;52.442551;13.312021;[] berlin;toilet;349011829;52.505333;13.302788;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;349304086;52.505226;13.322765;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;353202022;52.488556;13.390900;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;364123000;52.386513;13.398467;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;365365513;52.473816;13.439537;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;365605621;52.527378;13.330581;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;369032628;52.550377;13.351631;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;371097628;52.413567;13.363172;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;375879906;52.507202;13.332588;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""no""}" berlin;toilet;377120370;52.516285;13.356798;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;377675091;52.532459;13.412901;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;388125800;52.458878;13.579947;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;388591683;52.507900;13.463935;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;390428248;52.432491;13.408253;[] berlin;toilet;401552930;52.507866;13.306674;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;405040172;52.505943;13.560903;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;405430472;52.543015;13.350155;"{""name"":""Damen WC"",""wheelchair"":""yes""}" berlin;toilet;408469307;52.544453;13.352728;"{""name"":""Damen WC"",""wheelchair"":""limited""}" berlin;toilet;408469602;52.544426;13.352779;"{""name"":""Herren WC"",""wheelchair"":""yes""}" berlin;toilet;413653260;52.509602;13.338850;"{""wheelchair"":""yes""}" berlin;toilet;413653263;52.506924;13.337965;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""no""}" berlin;toilet;413653264;52.506855;13.342077;"{""wheelchair"":""yes""}" berlin;toilet;416821723;52.423180;13.473554;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;419275395;52.512665;13.336686;"{""wheelchair"":""noexit"",""fee"":""no""}" berlin;toilet;426687394;52.502415;13.342681;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;429461039;52.503014;13.484151;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;429578416;52.413662;13.574310;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;437290305;52.521461;13.412969;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;439239170;52.450657;13.624349;"{""wheelchair"":""no""}" berlin;toilet;440072802;52.509567;13.435713;"{""name"":""Rail \u0026 Fresh WC"",""wheelchair"":""yes""}" berlin;toilet;441257129;52.462326;13.544495;[] berlin;toilet;441257192;52.462185;13.546485;[] berlin;toilet;441257332;52.462616;13.546485;"{""wheelchair"":""yes""}" berlin;toilet;442394347;52.444401;13.385754;"{""name"":""City Toilete"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;442397976;52.466133;13.436753;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;446782658;52.472153;13.261868;[] berlin;toilet;448443039;52.530975;13.470620;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;448809595;52.471741;13.441638;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;448809919;52.473686;13.440940;[] berlin;toilet;449372452;52.471836;13.266102;[] berlin;toilet;450310345;52.481052;13.526633;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;450573181;52.561844;13.237315;[] berlin;toilet;451759262;52.442505;13.240187;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;459280620;52.474110;13.445437;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;469165335;52.433411;13.419281;"{""fee"":""no""}" berlin;toilet;477427675;52.469887;13.181491;"{""fee"":""no""}" berlin;toilet;477529798;52.505573;13.374301;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall"",""fee"":""yes""}" berlin;toilet;477532020;52.500008;13.430348;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall"",""fee"":""yes""}" berlin;toilet;480350451;52.498890;13.527064;"{""wheelchair"":""yes""}" berlin;toilet;480350454;52.499657;13.530656;"{""wheelchair"":""yes""}" berlin;toilet;480350456;52.501682;13.532566;"{""wheelchair"":""yes""}" berlin;toilet;480350458;52.504765;13.529375;"{""wheelchair"":""unknown""}" berlin;toilet;480350479;52.507732;13.532193;"{""wheelchair"":""yes""}" berlin;toilet;485950613;52.510956;13.499917;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;487067546;52.521236;13.441941;"{""wheelchair"":""yes""}" berlin;toilet;490178984;52.489571;13.234628;[] berlin;toilet;492080874;52.544243;13.549429;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;500002022;52.511234;13.469124;"{""name"":""City Toilette"",""note"":""usage 50 cent"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;502569266;52.482853;13.438214;[] berlin;toilet;503360841;52.455620;13.302147;[] berlin;toilet;503360880;52.452606;13.303105;[] berlin;toilet;506836884;52.429329;13.129357;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;506836885;52.432446;13.143145;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;515660597;52.490337;13.457267;"{""wheelchair"":""yes""}" berlin;toilet;520248239;52.505230;13.333875;"{""name"":""City Pissoir"",""wheelchair"":""no""}" berlin;toilet;522533991;52.471222;13.386862;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;530510700;52.513157;13.476953;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;539477774;52.468880;13.526487;"{""operator"":""Modellpark Berlin-Brandenburg""}" berlin;toilet;539506614;52.521336;13.163236;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;558361430;52.533195;13.336683;"{""note"":""Caf\u00e9 Achteck""}" berlin;toilet;559576305;52.512299;13.253659;[] berlin;toilet;559615852;52.535831;13.601056;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;559615853;52.539394;13.604709;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;560336667;52.482590;13.601140;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;566352589;52.513027;13.243552;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;566352601;52.512115;13.240747;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;567869854;52.458595;13.526667;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;568322284;52.545586;13.494260;"{""name"":""Citytoilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;582889347;52.518990;13.479573;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;588548879;52.552601;13.466247;"{""name"":""Citytoilette"",""wheelchair"":""yes""}" berlin;toilet;599305846;52.507595;13.450635;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;599913127;52.508141;13.374454;"{""wheelchair"":""yes"",""operator"":""unknown""}" berlin;toilet;602941961;52.450649;13.342896;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;603045622;52.463928;13.377691;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;603054378;52.422546;13.371083;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;603054379;52.387741;13.410158;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;606332828;52.458496;13.349196;"{""name"":""City-Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606334104;52.486420;13.327544;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606342979;52.467209;13.308641;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;606342985;52.473297;13.309321;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;606347837;52.476616;13.281787;"{""name"":""City-Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606347840;52.518810;13.290364;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606355966;52.516018;13.260035;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606361931;52.490517;13.398072;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;606361933;52.511425;13.447264;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall"",""fee"":""yes""}" berlin;toilet;606361945;52.527100;13.427390;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;612241397;52.457272;13.321353;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;613404098;52.525162;13.196928;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;613570529;52.556171;13.348280;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;614554794;52.558868;13.337708;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;614554795;52.499931;13.363150;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;614555064;52.556114;13.383567;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;614557466;52.555473;13.356044;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;617053934;52.479939;13.428399;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;617082837;52.424519;13.463107;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;617082900;52.479156;13.437648;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;618048318;52.634289;13.495584;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;621244508;52.475052;13.366030;"{""wheelchair"":""yes"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;623907322;52.539936;13.353468;"{""name"":""Cafe Achteck""}" berlin;toilet;648910282;52.548923;13.359239;"{""opening_hours"":""Mo-Fr 9:00-17:00""}" berlin;toilet;650378255;52.467644;13.376773;"{""operator"":""Kaufland""}" berlin;toilet;656586619;52.537556;13.402536;[] berlin;toilet;660898991;52.502613;13.415159;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;666388920;52.493137;13.310931;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes""}" berlin;toilet;667482284;52.498569;13.418212;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;667990662;52.439095;13.720988;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;674124305;52.534233;13.195382;"{""wheelchair"":""yes""}" berlin;toilet;674124307;52.533886;13.197517;"{""wheelchair"":""yes""}" berlin;toilet;690485727;52.507832;13.334898;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;697095974;52.453697;13.509483;"{""operator"":""Wall AG"",""fee"":""50 cent""}" berlin;toilet;718143708;52.510586;13.236857;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;718143802;52.507187;13.279216;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;726126780;52.473373;13.314765;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no""}" berlin;toilet;731644150;52.479656;13.409104;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;739293288;52.421459;13.179094;"{""name"":""Bahnhofstoiletten"",""wheelchair"":""no""}" berlin;toilet;747395207;52.580692;13.400220;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;753328979;52.567223;13.411801;"{""name"":""City Toilette"",""note"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;765566780;52.431049;13.259650;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""City Toilette""}" berlin;toilet;783433120;52.529289;13.443476;"{""wheelchair"":""yes""}" berlin;toilet;785511270;52.523449;13.433485;[] berlin;toilet;812189276;52.503052;13.424535;"{""wheelchair"":""yes"",""operator"":""Bezirksamt Friedrichshain-Kreuzberg"",""fee"":""note""}" berlin;toilet;821587328;52.482014;13.303637;"{""note"":""male""}" berlin;toilet;821587335;52.482349;13.303413;"{""note"":""female""}" berlin;toilet;821588546;52.481518;13.301535;[] berlin;toilet;821588551;52.482323;13.303348;"{""note"":""female""}" berlin;toilet;832550019;52.564156;13.363803;"{""wheelchair"":""no""}" berlin;toilet;840325608;52.492844;13.408554;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;851492389;52.434425;13.414348;"{""wheelchair"":""limited"",""fee"":""no""}" berlin;toilet;853887530;52.455891;13.376100;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;854328761;52.539028;13.425542;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;855355995;52.410957;13.527558;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;895280129;52.476498;13.365203;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;897675464;52.522858;13.586616;[] berlin;toilet;927092067;52.514187;13.391578;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;932522039;52.454556;13.189963;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;936149311;52.491936;13.235406;[] berlin;toilet;948654855;52.415768;13.497877;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;956276731;52.403484;13.507338;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;960164646;52.528294;13.319693;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;976553355;52.525078;13.369059;"{""name"":""WC Center Berlin-Hauptbahnhof"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;976596829;52.507130;13.332082;"{""name"":""\u00d6ffentliche Toilette (nur mit Euro-Schl\u00fcssel)"",""wheelchair"":""yes""}" berlin;toilet;988820045;52.524231;13.366770;"{""name"":""\u00d6ffentliche Toilette am Berlin Hbf"",""wheelchair"":""no""}" berlin;toilet;1002641311;52.422951;13.312497;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1030895309;52.438763;13.386892;"{""name"":""Historische Toilette (Caf\u00e9 Achteck)"",""wheelchair"":""no""}" berlin;toilet;1037876143;52.421398;13.176356;"{""name"":""\u00d6ffentliche Toiletten"",""wheelchair"":""yes""}" berlin;toilet;1070919487;52.504921;13.278363;"{""wheelchair"":""no""}" berlin;toilet;1096930211;52.535519;13.200319;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1102909349;52.469646;13.341622;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;1147909340;52.520794;13.588438;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;1158920828;52.607109;13.420745;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;1181090513;52.407932;13.094825;[] berlin;toilet;1205048326;52.497757;13.403246;"{""wheelchair"":""yes""}" berlin;toilet;1205705420;52.497623;13.405599;[] berlin;toilet;1206287825;52.455933;13.350882;[] berlin;toilet;1206287828;52.455780;13.352836;[] berlin;toilet;1229446777;52.510174;13.306739;"{""wheelchair"":""no""}" berlin;toilet;1242393944;52.375740;13.649226;"{""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;1249802242;52.522240;13.409806;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes""}" berlin;toilet;1255768719;52.437275;13.421911;"{""fee"":""no""}" berlin;toilet;1278639602;52.480427;13.336751;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1302233643;52.600536;13.401804;"{""wheelchair"":""yes""}" berlin;toilet;1306551400;52.507557;13.394944;[] berlin;toilet;1306966563;52.553738;13.413355;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;1312775377;52.539932;13.353467;[] berlin;toilet;1314637281;52.453945;13.143247;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1314648134;52.451103;13.336156;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1323444917;52.539467;13.577244;"{""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;1323444930;52.538696;13.579750;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1332815597;52.465881;13.486830;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""opening_hours"":""24\/7""}" berlin;toilet;1334651630;52.553833;13.198534;"{""wheelchair"":""yes""}" berlin;toilet;1348055724;52.458252;13.303989;[] berlin;toilet;1348055726;52.456215;13.307043;[] berlin;toilet;1358366757;52.407463;13.590601;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1366551999;52.544460;13.238330;"{""name"":""\u00d6ffentliche Toilette"",""wheelchair"":""yes""}" berlin;toilet;1371616212;52.434467;13.539225;"{""wheelchair"":""yes"",""operator"":""Wall AG""}" berlin;toilet;1374102424;52.505039;13.528398;"{""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;1388197149;52.509476;13.497072;"{""name"":""Bahnhofstoilette Lichtenberg"",""wheelchair"":""yes""}" berlin;toilet;1402073765;52.534355;13.198325;"{""name"":""rail \u0026 fresh WC"",""wheelchair"":""yes""}" berlin;toilet;1446861553;52.537399;13.571650;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1453830466;52.522678;13.372035;"{""wheelchair"":""no""}" berlin;toilet;1453886966;52.522545;13.370818;"{""wheelchair"":""no""}" berlin;toilet;1468392703;52.537472;13.204534;"{""wheelchair"":""limited""}" berlin;toilet;1469076897;52.504696;13.523816;"{""wheelchair"":""no""}" berlin;toilet;1482482347;52.538582;13.575105;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1489542116;52.493717;13.366910;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1496353211;52.484928;13.318657;[] berlin;toilet;1535094001;52.548008;13.504734;"{""wheelchair"":""yes""}" berlin;toilet;1639361903;52.472542;13.328044;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes""}" berlin;toilet;1653339120;52.522060;13.407694;"{""name"":""\u00d6ffentliche Toiletten"",""wheelchair"":""yes""}" berlin;toilet;1676549556;52.588169;13.288532;"{""name"":""City Toilette"",""wheelchair"":""yes"",""operator"":""Wall AG"",""fee"":""yes"",""opening_hours"":""24\/7""}" berlin;toilet;1694286748;52.585403;13.209515;[] berlin;toilet;1707534860;52.444130;13.574700;[] berlin;toilet;1772989815;52.540737;13.214244;"{""wheelchair"":""yes"",""fee"":""no""}" berlin;toilet;1783747284;52.487576;13.263739;"{""operator"":""Wall""}" berlin;toilet;1792425992;52.478485;13.356762;"{""name"":""Dixi"",""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;1800469785;52.593216;13.268612;[] berlin;toilet;1809995809;52.512798;13.320092;"{""name"":""Technische Universit\u00e4t"",""wheelchair"":""yes""}" berlin;toilet;1813864246;52.459427;13.366940;"{""note"":""Dixi-Klo"",""wheelchair"":""no"",""fee"":""no""}" berlin;toilet;1832343332;52.470325;13.417160;[] berlin;toilet;1835625932;52.540951;13.213727;"{""name"":""Behindertentoilette (nur mit dem Euro-Schl\u00fcssel)"",""wheelchair"":""yes""}" berlin;toilet;1837548917;52.457748;13.625518;"{""name"":""City Toilette"",""wheelchair"":""yes""}" berlin;toilet;1860568005;52.553944;13.465627;[] berlin;toilet;1899025641;52.506111;13.274852;[] berlin;toilet;1899025644;52.506630;13.273173;[] berlin;toilet;1913867221;52.491898;13.438645;"{""wheelchair"":""yes"",""operator"":""Burg am See"",""fee"":""yes""}" berlin;toilet;1914161737;52.547626;13.163342;"{""name"":""Container Toiletten"",""wheelchair"":""no""}" berlin;toilet;1917330916;52.504936;13.270459;[] berlin;toilet;1930280120;52.406914;13.136923;"{""operator"":""Golf- und Landclub Wannsee e.V."",""fee"":""no""}" berlin;toilet;1930280139;52.410751;13.122923;"{""operator"":""Golf- und Landclub Wannsee e.V."",""fee"":""no""}" berlin;toilet;1930280143;52.414829;13.126653;"{""operator"":""Golf- und Landclub Wannsee e.V."",""fee"":""no""}" berlin;toilet;1978502855;52.438103;13.545360;"{""opening_hours"":""Mo-Sa 08:00-22:00""}" berlin;toilet;1978519821;52.440964;13.546049;[] berlin;toilet;1991761085;52.631969;13.288994;"{""name"":""City Toilette"",""wheelchair"":""yes"",""fee"":""yes""}" berlin;toilet;2082331579;52.554382;13.291896;[] berlin;toilet;2082331581;52.553726;13.291451;[] berlin;toilet;2082331586;52.554504;13.292154;[] berlin;toilet;2105798813;52.617619;13.488577;[] berlin;toilet;2132541603;52.533195;13.240089;[] berlin;toilet;2143522429;52.504070;13.424317;[] berlin;toilet;2187133241;52.469746;13.442812;"{""fee"":""50 cent (no change money)""}" \ No newline at end of file diff --git a/assets/csv/odbl/london_atms.csv b/assets/csv/odbl/london_atms.csv new file mode 100644 index 0000000..1200a8c --- /dev/null +++ b/assets/csv/odbl/london_atms.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags london;atm;26610812;51.538853;-0.142181;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;37552361;51.358025;-0.216253;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;37552364;51.357849;-0.216658;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;45265824;51.607349;0.219641;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;60660465;51.522987;-0.125750;"{""name"":""HSBC"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;77920686;51.522102;-0.124665;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;130116003;51.499161;-0.130710;"{""name"":""HSBC"",""wheelchair"":""limited"",""amenity"":""bank""}" london;atm;130116214;51.498039;-0.134952;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;246112128;51.462227;-0.137577;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;249249799;51.617542;-0.311961;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;249674177;51.633163;0.008255;"{""name"":""Chingford Station Road Post Office"",""amenity"":""post_office""}" london;atm;254924507;51.519016;-0.133076;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;255396267;51.514641;-0.098229;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;256141206;51.604305;-0.339894;"{""amenity"":""bank""}" london;atm;263018281;51.561897;-0.073812;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;263018282;51.561123;-0.073729;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;263905051;51.573105;-0.072108;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;266890504;51.378933;-0.242485;"{""name"":""Nationwide Building Society"",""amenity"":""bank""}" london;atm;266902540;51.385830;-0.211702;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;271388951;51.496124;-0.142750;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;273217496;51.496902;-0.135599;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;273542290;51.462090;-0.115524;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;273542291;51.461567;-0.115745;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;275726796;51.492489;-0.137906;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;277834912;51.361198;-0.192185;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;277834922;51.361404;-0.192432;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;279104433;51.527073;-0.059707;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;280380043;51.462193;-0.302948;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;280380045;51.462383;-0.302849;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;280380052;51.462975;-0.302445;"{""name"":""The Royal Bank of Scotland"",""amenity"":""bank""}" london;atm;280546700;51.512623;-0.078472;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;280546902;51.511696;-0.081985;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;280547868;51.512157;-0.080360;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;280547869;51.512257;-0.080059;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;280547870;51.512047;-0.079483;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;280547917;51.460972;-0.303379;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;283207082;51.496639;-0.081097;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;286509335;51.492126;-0.061971;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;288037175;51.406590;-0.029077;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;290939743;51.427963;-0.168332;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;291671987;51.444958;-0.151430;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;291671988;51.444736;-0.151660;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;291671991;51.443493;-0.152642;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;293503095;51.472412;-0.093140;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;293509933;51.488018;-0.095808;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;293525841;51.499504;-0.130019;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;293741400;51.533298;-0.172485;"{""name"":""Barclays - St John\u0027s Wood Branch"",""amenity"":""bank""}" london;atm;293741409;51.533375;-0.170268;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;293990348;51.539169;-0.142630;"{""name"":""HSBC"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;293990489;51.538967;-0.142877;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;293992178;51.538204;-0.141850;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;298036347;51.511768;-0.083927;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;299520334;51.514904;-0.073241;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;299521884;51.518330;-0.079443;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;299614774;51.533501;-0.106076;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;299614800;51.533924;-0.105729;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;302172057;51.507488;-0.272662;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;302172060;51.507500;-0.272083;"{""amenity"":""bank""}" london;atm;302173382;51.506699;-0.269501;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;302963478;51.516293;-0.133358;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;302963479;51.516438;-0.131917;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;305394868;51.544113;-0.296991;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;305399276;51.552101;-0.299182;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;306047358;51.533363;-0.106611;"{""name"":""Marks \u0026 Spencer"",""amenity"":""bank""}" london;atm;306135269;51.516396;-0.082876;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;308839175;51.532497;-0.106448;"{""name"":""Abbey National"",""amenity"":""bank""}" london;atm;309376857;51.562344;-0.073466;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;311877311;51.519508;-0.121626;"{""name"":""The Co-operative Bank"",""amenity"":""bank""}" london;atm;311877347;51.519264;-0.121321;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;312671342;51.402851;-0.193244;"{""name"":""Abbey"",""amenity"":""bank""}" london;atm;316079995;51.494682;-0.129793;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;331101729;51.558411;-0.118647;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;331101730;51.558506;-0.118458;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;331362129;51.592548;-0.105678;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;331880905;51.543812;-0.103552;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;331880912;51.545177;-0.103452;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;331880925;51.546665;-0.104368;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;332043741;51.546471;-0.103350;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;333731865;51.522938;-0.136394;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;334691573;51.521629;-0.135597;"{""name"":""Lloyds TSB"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;336108135;51.533005;-0.105490;"{""name"":""Royal Bank of Scotland"",""amenity"":""bank""}" london;atm;338472543;51.517960;-0.107500;"{""name"":""NatWest"",""wheelchair"":""no"",""amenity"":""bank""}" london;atm;343588118;51.565117;-0.103354;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;344229693;51.581657;-0.099630;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;347463599;51.475163;-0.206154;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;348713724;51.534176;-0.105594;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;348714057;51.534645;-0.105205;"{""name"":""Nationwide""}" london;atm;348819221;51.510479;-0.128528;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;350392310;51.514343;-0.104104;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;350404884;51.512905;-0.103948;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;355416945;51.524189;-0.096282;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;362243797;51.444767;-0.151829;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;369119295;51.514603;-0.083616;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;371512163;51.524483;-0.077586;"{""name"":""Tesco Express"",""operator"":""Tesco Express""}" london;atm;381706825;51.408722;-0.024980;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;381706827;51.408745;-0.025213;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;383979071;51.515633;-0.137860;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;385560839;51.496147;-0.126349;"{""name"":""Lloyds TSB"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;387121710;51.509121;-0.195022;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;387121716;51.509262;-0.194741;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;390923942;51.537201;-0.141463;"{""name"":""Abbey"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;390923953;51.537296;-0.141558;"{""name"":""Nationwide"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;391009867;51.537010;-0.140691;"{""name"":""Halifax"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;392185618;51.569237;-0.346654;"{""name"":""A\u0026K Convenience Store""}" london;atm;393464429;51.566799;-0.107623;"{""name"":""Budget Supermarket Off License""}" london;atm;401290404;51.578079;-0.098595;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;408561639;51.547672;-0.224631;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;418209974;51.460876;-0.216908;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;423598119;51.496601;-0.088348;"{""name"":""Costcutter""}" london;atm;426001389;51.535545;-0.089022;"{""name"":""The Co-operative Food"",""operator"":""coop""}" london;atm;429269953;51.529823;-0.120157;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;430433217;51.528728;-0.119407;"{""amenity"":""bank""}" london;atm;432693154;51.426079;-0.335875;"{""name"":""Barclays Bank"",""amenity"":""bank""}" london;atm;434527471;51.533077;-0.029929;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;439421478;51.461788;-0.167695;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;442518405;51.487103;-0.095353;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;442694264;51.532410;-0.105997;"{""name"":""Royal Bank of Scotland"",""amenity"":""bank""}" london;atm;444635319;51.496826;-0.141112;"{""amenity"":""bank""}" london;atm;446806477;51.565845;-0.135673;"{""amenity"":""bank""}" london;atm;448750306;51.562580;0.218554;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;448750323;51.562393;0.219665;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;448750335;51.556271;0.249261;"{""amenity"":""bank""}" london;atm;448750348;51.556942;0.249393;"{""amenity"":""bank""}" london;atm;448750366;51.555405;0.248870;"{""amenity"":""bank""}" london;atm;448780971;51.594334;-0.108558;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;449109106;51.596329;-0.109470;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;452433523;51.518803;-0.108215;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;455011107;51.631264;0.003358;"{""name"":""Abbey"",""amenity"":""bank""}" london;atm;455011109;51.631748;0.004557;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;455011112;51.632832;0.007710;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;456384028;51.406540;-0.028228;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;457102339;51.589752;-0.221386;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;457132147;51.589638;-0.221910;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;462025325;51.513424;-0.153474;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;469341861;51.586384;0.199599;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;475271920;51.549397;-0.140694;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;475271985;51.548946;-0.140798;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;475271989;51.548752;-0.141298;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;475531767;51.547832;-0.141161;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;479029666;51.546478;-0.075722;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;479121697;51.513615;-0.100919;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;482835019;51.488693;-0.096187;"{""name"":""Tesco Express""}" london;atm;482835023;51.488110;-0.095477;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;482835049;51.485886;-0.093984;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;499320022;51.514061;-0.132623;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;506453824;51.483337;-0.307588;"{""amenity"":""bank""}" london;atm;506453825;51.483280;-0.307180;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;518613707;51.438995;-0.054311;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;518613711;51.439346;-0.054564;"{""name"":""Abbey"",""amenity"":""bank""}" london;atm;534672074;51.511459;-0.187485;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;544316316;51.566788;-0.442232;"{""amenity"":""fuel""}" london;atm;566481304;51.617413;-0.176926;"{""name"":""Lloyds"",""amenity"":""bank""}" london;atm;567931797;51.511368;-0.123314;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;571285794;51.541866;0.000310;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;577248613;51.507561;-0.130895;"{""name"":""Bank of Scotland"",""amenity"":""bank""}" london;atm;582929612;51.533237;-0.474056;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;587759630;51.498848;-0.112738;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;588513717;51.503983;-0.114963;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;595301429;51.509499;-0.133129;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;600924677;51.510998;-0.120372;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;601052927;51.509861;-0.123210;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;603130942;51.511292;-0.124841;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;608608183;51.568325;0.009798;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;609782327;51.512466;-0.103947;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;610452793;51.504097;-0.218378;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;610453397;51.503281;-0.218305;"{""amenity"":""bank""}" london;atm;610477348;51.516632;-0.209672;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;612016134;51.497429;-0.089790;[] london;atm;615934921;51.549366;-0.191205;"{""name"":""Tesco Metro""}" london;atm;615937288;51.550228;-0.191288;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;618653418;51.534576;-0.105251;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;623347094;51.507828;-0.140821;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;623358868;51.508896;-0.137462;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;623428328;51.515926;-0.144464;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;658951636;51.548653;-0.075448;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;658951644;51.548962;-0.075413;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;660899255;51.560619;-0.074050;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;660899261;51.560894;-0.074038;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;666743533;51.497387;-0.080532;"{""name"":""Sainsbury\u0027s Local""}" london;atm;666920291;51.512661;-0.075377;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;669946809;51.564480;-0.353273;"{""name"":""HSBC"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;675849633;51.506954;-0.139573;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;676020130;51.573906;-0.073366;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;678240182;51.477310;-0.286063;"{""name"":""Barclays Kew Gardens"",""amenity"":""bank""}" london;atm;688131959;51.467522;-0.424247;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;693728392;51.406258;-0.057743;"{""name"":""Co-operative Food""}" london;atm;695217642;51.523422;-0.136780;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;698983593;51.513470;-0.111954;"{""name"":""Tesco Express""}" london;atm;703382395;51.518120;-0.116020;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;719511020;51.616898;-0.176557;"{""amenity"":""bank""}" london;atm;719511093;51.616653;-0.176662;"{""amenity"":""bank""}" london;atm;762639712;51.518978;-0.121507;"{""amenity"":""bank""}" london;atm;793984996;51.580139;-0.335094;"{""name"":""Harrow Post Office"",""wheelchair"":""yes"",""amenity"":""post_office""}" london;atm;799284689;51.514530;-0.141492;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;805304483;51.511749;-0.128557;"{""name"":""Eurochange"",""amenity"":""bureau_de_change""}" london;atm;819864697;51.547314;-0.480216;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;823341237;51.482441;-0.199971;"{""amenity"":""bank""}" london;atm;823341251;51.482330;-0.199874;"{""amenity"":""bank""}" london;atm;846207472;51.446938;-0.328128;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;846207480;51.446301;-0.328038;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;846207532;51.445202;-0.330823;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;846207560;51.445419;-0.331128;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;852122458;51.513828;-0.152659;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;870407273;51.460388;-0.305445;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;870407302;51.460506;-0.304664;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;885355373;51.651920;-0.081928;"{""name"":""Nat West"",""amenity"":""bank""}" london;atm;908783056;51.491840;-0.192234;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;914971693;51.559628;-0.250672;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;915100795;51.579868;-0.334237;"{""name"":""Barclays"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;929323234;51.450218;-0.358015;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;929323278;51.449715;-0.357754;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;929323329;51.449017;-0.357970;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;930043378;51.513817;-0.302293;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;930043392;51.513699;-0.302772;"{""name"":""Barclays Bank"",""amenity"":""bank""}" london;atm;973869370;51.450848;0.057088;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;973869916;51.450836;0.055591;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1075888031;51.400406;-0.255542;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;1075888036;51.401417;-0.255864;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1075894400;51.401596;-0.255944;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;1082110109;51.592770;0.026272;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;1096305302;51.500717;-0.306842;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1098744209;51.402889;-0.256407;"{""amenity"":""bank""}" london;atm;1100604247;51.362354;-0.192937;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1111908866;51.465405;-0.165003;"{""name"":""Asda"",""wheelchair"":""yes""}" london;atm;1116295871;51.399799;-0.255420;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1117171639;51.513855;-0.302069;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1141415213;51.519783;-0.087817;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1155466802;51.463715;-0.168392;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;1156910414;51.511330;-0.122739;"{""name"":""Lloyds TSB Covent Garden"",""amenity"":""bank""}" london;atm;1158189104;51.540100;0.000650;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;1158189109;51.543102;0.003522;"{""name"":""Naionwide Building Society"",""amenity"":""bank""}" london;atm;1212098471;51.446693;-0.328325;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;1212098483;51.446609;-0.327912;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1258483211;51.498753;-0.176983;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1266124446;51.516163;-0.154641;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1290667522;51.595127;-0.383865;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;1312678775;51.595245;-0.384070;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1312678942;51.595158;-0.384554;"{""amenity"":""bank""}" london;atm;1315559710;51.594975;0.023414;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1322060900;51.540779;0.000868;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1342121198;51.514057;-0.146203;"{""amenity"":""bank""}" london;atm;1364157095;51.549595;-0.163788;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1482958065;51.529041;-0.236774;"{""amenity"":""atm""}" london;atm;1489585769;51.579170;-0.334132;"{""name"":""Habib Bank AG Zurich"",""wheelchair"":""limited"",""amenity"":""bank""}" london;atm;1489589641;51.579903;-0.333867;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;1490039255;51.580750;-0.334153;"{""name"":""Nationwide"",""wheelchair"":""yes"",""amenity"":""bank""}" london;atm;1547180572;51.511681;-0.081110;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;1567062388;51.582886;-0.199183;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1591079224;51.523464;-0.098364;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1605743657;51.498493;-0.156857;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1619138182;51.464073;-0.165811;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1656059458;51.455658;-0.036434;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1665007106;51.511650;-0.085546;"{""name"":""Clydesdale Bank"",""amenity"":""bank""}" london;atm;1708718109;51.504036;-0.016073;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;1708940309;51.450909;0.052756;"{""name"":""NatWest"",""amenity"":""bank""}" london;atm;1722302362;51.519173;-0.087022;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1767457195;51.374596;-0.094713;"{""name"":""Co-operative"",""amenity"":""bank""}" london;atm;1768843678;51.562733;0.217608;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;1798783062;51.571270;-0.195573;"{""name"":""Barclays Bank"",""amenity"":""bank""}" london;atm;1798783065;51.572075;-0.196146;"{""name"":""Lloyds Bank"",""amenity"":""bank""}" london;atm;1798785409;51.571823;-0.196458;"{""name"":""NATWEST"",""amenity"":""bank""}" london;atm;1822091856;51.484447;-0.110231;"{""name"":""Barclays Bank"",""amenity"":""bank""}" london;atm;1843846145;51.473278;-0.093170;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1852968861;51.400894;-0.255698;"{""name"":""LLoyds TSB"",""amenity"":""bank""}" london;atm;1852968862;51.400616;-0.256002;"{""name"":""Halifax"",""amenity"":""bank""}" london;atm;1880285965;51.379963;-0.073995;"{""amenity"":""bank""}" london;atm;1936163405;51.504395;-0.014593;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1938293357;51.489826;0.068619;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1944440362;51.401817;-0.195326;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;1944454501;51.404808;-0.164831;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;1944457683;51.405361;-0.163130;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1944468211;51.404900;-0.164323;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1944478521;51.406391;-0.163115;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1945656711;51.421402;-0.207327;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1945661891;51.420986;-0.207933;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1945664995;51.421978;-0.207155;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1956302687;51.462551;-0.136320;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;1956319595;51.462437;-0.136644;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1962301245;51.499645;-0.119207;"{""name"":""Nat West"",""amenity"":""bank""}" london;atm;1968174586;51.432034;-0.129402;"{""name"":""Lloyds TSB"",""amenity"":""bank""}" london;atm;1968206894;51.431969;-0.129063;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1968208217;51.431908;-0.129074;"{""name"":""RBS"",""amenity"":""bank""}" london;atm;1969408907;51.421387;-0.207821;"{""name"":""Natwest"",""amenity"":""bank""}" london;atm;1973956642;51.441311;-0.187465;"{""name"":""Barclays Bank"",""amenity"":""bank""}" london;atm;1974009472;51.456657;-0.193119;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;1974010977;51.456547;-0.193034;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;1998914764;51.354828;-0.213938;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;2010350559;51.474968;-0.338472;"{""name"":""Barclay\u0027s"",""amenity"":""bank""}" london;atm;2035021868;51.615623;-0.176892;"{""name"":""HSBC"",""amenity"":""bank""}" london;atm;2078747252;51.512959;-0.305320;"{""name"":""Nationwide"",""amenity"":""bank""}" london;atm;2142548851;51.474052;-0.035918;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;2173397104;51.362823;-0.192972;"{""name"":""Santander"",""amenity"":""bank""}" london;atm;2195968620;51.571182;-0.195524;"{""name"":""Santander Bank"",""amenity"":""bank""}" london;atm;2216165771;51.587799;-0.221242;"{""name"":""Barclays"",""amenity"":""bank""}" london;atm;2216172824;51.587055;-0.220443;"{""name"":""HSBC"",""amenity"":""bank""}" \ No newline at end of file diff --git a/assets/csv/odbl/london_radars.csv b/assets/csv/odbl/london_radars.csv new file mode 100644 index 0000000..4741cd3 --- /dev/null +++ b/assets/csv/odbl/london_radars.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags london;radar;196625;51.577152;-0.217809;[] london;radar;196638;51.577011;-0.217721;[] london;radar;432745;51.459267;0.035962;[] london;radar;186369758;51.547256;-0.095812;"{""maxspeed"":""30 mph""}" london;radar;194007503;51.381428;-0.195774;[] london;radar;206094898;51.374531;-0.300762;[] london;radar;206094899;51.389805;-0.266789;[] london;radar;264803287;51.487186;-0.107141;[] london;radar;266385250;51.487347;-0.016221;"{""note"":""Gatso - Taking pictures of West Bound cards""}" london;radar;276369810;51.540627;-0.117030;[] london;radar;295709723;51.487858;-0.106478;[] london;radar;305410622;51.549435;-0.281034;"{""note"":""Speed Camera Looking North West Max Speed 30mph""}" london;radar;344786621;51.560814;-0.113950;[] london;radar;345868866;51.488632;-0.123235;[] london;radar;381948201;51.578793;-0.223271;[] london;radar;421958189;51.453007;0.099550;[] london;radar;421958194;51.453407;0.098424;[] london;radar;421958197;51.455746;0.088253;[] london;radar;421958200;51.458057;0.072836;[] london;radar;421965982;51.515240;-0.008741;[] london;radar;421965984;51.520756;-0.010535;[] london;radar;421965985;51.521187;-0.010424;[] london;radar;421968028;51.495186;0.004297;[] london;radar;421968205;51.472809;0.025918;[] london;radar;421968208;51.476608;0.023427;[] london;radar;421968747;51.445671;0.157935;[] london;radar;421968752;51.448444;0.147248;[] london;radar;421968756;51.448269;0.129617;[] london;radar;421968759;51.449303;0.120310;[] london;radar;441984191;51.510235;-0.116721;[] london;radar;443424318;51.492336;-0.125271;[] london;radar;477286838;51.538212;-0.070254;[] london;radar;479019415;51.525669;-0.111544;[] london;radar;479575805;51.529133;-0.094996;[] london;radar;506310017;51.491489;-0.135684;[] london;radar;513552883;51.457233;-0.441340;[] london;radar;567763225;51.496445;-0.282136;[] london;radar;623993693;51.456066;-0.063967;[] london;radar;623993696;51.456055;-0.064033;[] london;radar;648398357;51.513878;-0.249449;"{""name"":""Red Light Camera""}" london;radar;1275821199;51.494999;-0.330305;[] london;radar;1275821200;51.492687;-0.324719;[] london;radar;1284220434;51.487659;-0.130262;[] london;radar;1345629640;51.532860;-0.317501;[] london;radar;1419576580;51.557297;-0.464033;[] london;radar;1484886508;51.456280;-0.219137;[] london;radar;1590088452;51.509232;-0.083970;[] london;radar;1590114998;51.509163;-0.082764;[] london;radar;1675124019;51.494053;-0.087862;[] london;radar;1678581664;51.548012;-0.407057;[] london;radar;1713315564;51.504135;-0.219541;[] london;radar;1769061868;51.492561;-0.285514;[] london;radar;1794145898;51.531296;-0.135161;"{""direction"":""south""}" london;radar;1852996948;51.510986;-0.095612;[] london;radar;1938390461;51.492981;0.055723;[] london;radar;2097687309;51.569511;-0.137198;[] london;radar;2097687311;51.569469;-0.137334;[] london;radar;2140822154;51.515255;-0.008568;[] london;radar;2198821405;51.496223;-0.025811;[] london;radar;2204101340;51.569016;-0.094633;[] london;radar;2204117303;51.561356;-0.091716;[] london;radar;2247287185;51.494118;-0.088214;[] london;radar;2255492573;51.491390;-0.294132;[] \ No newline at end of file diff --git a/assets/csv/odbl/london_signals.csv b/assets/csv/odbl/london_signals.csv new file mode 100644 index 0000000..1a3744a --- /dev/null +++ b/assets/csv/odbl/london_signals.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags london;traffic_signals;99937;51.522987;-0.152452;"{""highway"":""traffic_signals""}" london;traffic_signals;101831;51.535618;-0.147046;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;101839;51.537510;-0.152659;"{""highway"":""traffic_signals""}" london;traffic_signals;101843;51.534904;-0.163649;"{""highway"":""traffic_signals""}" london;traffic_signals;101877;51.528675;-0.163558;"{""highway"":""traffic_signals""}" london;traffic_signals;101884;51.530029;-0.169045;"{""highway"":""traffic_signals""}" london;traffic_signals;101889;51.536339;-0.176327;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;101894;51.543419;-0.175114;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;101918;51.559460;-0.196930;"{""highway"":""traffic_signals""}" london;traffic_signals;101977;51.545708;-0.155847;"{""highway"":""traffic_signals""}" london;traffic_signals;101990;51.520565;-0.147699;"{""highway"":""traffic_signals""}" london;traffic_signals;101991;51.521652;-0.148189;"{""highway"":""traffic_signals""}" london;traffic_signals;101992;51.521397;-0.149695;"{""highway"":""traffic_signals""}" london;traffic_signals;101993;51.520317;-0.149225;"{""highway"":""traffic_signals""}" london;traffic_signals;101997;51.519077;-0.148681;"{""highway"":""traffic_signals""}" london;traffic_signals;101998;51.519348;-0.147141;"{""highway"":""traffic_signals""}" london;traffic_signals;101999;51.519737;-0.144923;"{""highway"":""traffic_signals""}" london;traffic_signals;102000;51.520103;-0.142736;"{""highway"":""traffic_signals""}" london;traffic_signals;102020;51.517433;-0.155406;"{""highway"":""traffic_signals""}" london;traffic_signals;102025;51.519451;-0.156314;"{""highway"":""traffic_signals""}" london;traffic_signals;102030;51.517067;-0.157572;"{""highway"":""traffic_signals""}" london;traffic_signals;102031;51.519917;-0.158806;"{""highway"":""traffic_signals""}" london;traffic_signals;102035;51.515270;-0.161352;"{""highway"":""traffic_signals""}" london;traffic_signals;102037;51.516369;-0.161775;"{""highway"":""traffic_signals""}" london;traffic_signals;102038;51.515862;-0.164110;"{""highway"":""traffic_signals""}" london;traffic_signals;102044;51.512550;-0.166548;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;102069;51.512749;-0.175266;"{""highway"":""traffic_signals""}" london;traffic_signals;102072;51.511574;-0.175916;"{""highway"":""traffic_signals""}" london;traffic_signals;102085;51.510281;-0.186926;"{""highway"":""traffic_signals""}" london;traffic_signals;102090;51.509476;-0.194108;"{""highway"":""traffic_signals""}" london;traffic_signals;102100;51.501980;-0.190902;"{""highway"":""traffic_signals""}" london;traffic_signals;104312;51.521503;-0.113308;"{""highway"":""traffic_signals""}" london;traffic_signals;104315;51.518158;-0.111316;"{""highway"":""traffic_signals""}" london;traffic_signals;104318;51.516197;-0.101904;"{""highway"":""traffic_signals""}" london;traffic_signals;104319;51.515354;-0.098788;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;104320;51.514713;-0.096874;"{""highway"":""traffic_signals""}" london;traffic_signals;104322;51.513802;-0.092334;"{""highway"":""traffic_signals""}" london;traffic_signals;104323;51.514042;-0.075187;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;104327;51.515102;-0.070101;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;104363;51.482174;-0.008820;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;104401;51.499046;-0.198597;"{""highway"":""traffic_signals""}" london;traffic_signals;104404;51.508644;-0.199990;"{""highway"":""traffic_signals""}" london;traffic_signals;104417;51.561478;-0.203486;"{""highway"":""traffic_signals""}" london;traffic_signals;106211;51.522999;-0.136609;"{""highway"":""traffic_signals""}" london;traffic_signals;106801;51.521088;-0.049907;"{""highway"":""traffic_signals""}" london;traffic_signals;106839;51.527176;-0.078059;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;106848;51.520168;-0.074455;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;106853;51.526482;-0.083893;"{""highway"":""traffic_signals""}" london;traffic_signals;106858;51.526028;-0.087532;"{""highway"":""traffic_signals""}" london;traffic_signals;106877;51.531193;-0.086273;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;106881;51.527420;-0.088808;"{""highway"":""traffic_signals""}" london;traffic_signals;106886;51.530315;-0.092396;"{""highway"":""traffic_signals""}" london;traffic_signals;106927;51.510769;-0.042073;"{""highway"":""traffic_signals""}" london;traffic_signals;106928;51.510612;-0.042250;"{""highway"":""traffic_signals""}" london;traffic_signals;106969;51.511032;-0.061018;"{""highway"":""traffic_signals""}" london;traffic_signals;107000;51.537804;-0.060807;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107013;51.539936;-0.055824;"{""highway"":""traffic_signals""}" london;traffic_signals;107022;51.540787;-0.076518;"{""highway"":""traffic_signals""}" london;traffic_signals;107043;51.540623;-0.095834;"{""highway"":""traffic_signals""}" london;traffic_signals;107199;51.512711;-0.038940;"{""highway"":""traffic_signals""}" london;traffic_signals;107310;51.568054;0.006971;"{""highway"":""traffic_signals""}" london;traffic_signals;107316;51.518860;-0.136985;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107319;51.519363;-0.135661;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107320;51.520084;-0.133821;"{""highway"":""traffic_signals""}" london;traffic_signals;107322;51.516247;-0.132873;"{""highway"":""traffic_signals""}" london;traffic_signals;107352;51.520828;-0.139093;"{""highway"":""traffic_signals""}" london;traffic_signals;107358;51.534981;-0.062988;"{""highway"":""traffic_signals""}" london;traffic_signals;107374;51.525024;-0.034847;"{""highway"":""traffic_signals""}" london;traffic_signals;107387;51.544975;-0.046086;"{""highway"":""traffic_signals""}" london;traffic_signals;107391;51.545837;-0.055097;"{""highway"":""traffic_signals""}" london;traffic_signals;107392;51.546654;-0.055021;"{""highway"":""traffic_signals""}" london;traffic_signals;107393;51.548031;-0.047710;"{""highway"":""traffic_signals""}" london;traffic_signals;107409;51.560753;-0.048947;"{""highway"":""traffic_signals""}" london;traffic_signals;107550;51.493088;-0.046981;"{""highway"":""traffic_signals""}" london;traffic_signals;107551;51.493805;-0.048344;"{""highway"":""traffic_signals""}" london;traffic_signals;107566;51.502380;-0.077468;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;107586;51.514397;-0.083607;"{""highway"":""traffic_signals""}" london;traffic_signals;107587;51.513393;-0.084082;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107604;51.514610;-0.075776;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107608;51.514980;-0.068454;"{""highway"":""traffic_signals""}" london;traffic_signals;107614;51.511189;-0.073225;"{""highway"":""traffic_signals""}" london;traffic_signals;107618;51.509899;-0.074561;"{""highway"":""traffic_signals""}" london;traffic_signals;107621;51.509411;-0.078076;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107637;51.511700;-0.090742;"{""highway"":""traffic_signals""}" london;traffic_signals;107639;51.512138;-0.092734;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;107645;51.512897;-0.096470;"{""highway"":""traffic_signals""}" london;traffic_signals;107669;51.511757;-0.104260;"{""highway"":""traffic_signals""}" london;traffic_signals;107693;51.514118;-0.109418;"{""highway"":""traffic_signals""}" london;traffic_signals;107697;51.512783;-0.114490;"{""highway"":""traffic_signals""}" london;traffic_signals;107699;51.510902;-0.113508;"{""crossing"":""traffic_signals""}" london;traffic_signals;107733;51.504784;-0.114120;"{""highway"":""traffic_signals""}" london;traffic_signals;107734;51.504990;-0.114103;"{""highway"":""traffic_signals""}" london;traffic_signals;107735;51.505165;-0.113689;"{""highway"":""traffic_signals""}" london;traffic_signals;107736;51.505077;-0.113322;"{""highway"":""traffic_signals""}" london;traffic_signals;107738;51.504498;-0.113686;"{""highway"":""traffic_signals""}" london;traffic_signals;107746;51.500416;-0.116564;"{""highway"":""traffic_signals""}" london;traffic_signals;107764;51.506042;-0.126990;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;107766;51.504627;-0.123219;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;107770;51.507175;-0.127584;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;107773;51.507484;-0.127330;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;107783;51.508560;-0.127286;"{""highway"":""traffic_signals""}" london;traffic_signals;107790;51.511322;-0.128389;"{""highway"":""traffic_signals""}" london;traffic_signals;107792;51.513248;-0.129147;"{""name"":""Cambridge Circus"",""highway"":""traffic_signals""}" london;traffic_signals;107797;51.509201;-0.132409;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;107798;51.510101;-0.133386;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;107809;51.511452;-0.133057;"{""highway"":""traffic_signals""}" london;traffic_signals;107813;51.510708;-0.133948;"{""highway"":""traffic_signals""}" london;traffic_signals;107824;51.516403;-0.130377;"{""name"":""St Giles\u0027s Circus"",""highway"":""traffic_signals""}" london;traffic_signals;107828;51.516243;-0.124426;"{""highway"":""traffic_signals""}" london;traffic_signals;107829;51.517269;-0.122510;"{""highway"":""traffic_signals""}" london;traffic_signals;107831;51.516918;-0.126896;"{""highway"":""traffic_signals""}" london;traffic_signals;107839;51.520596;-0.126411;"{""highway"":""traffic_signals""}" london;traffic_signals;107853;51.517750;-0.127596;"{""highway"":""traffic_signals""}" london;traffic_signals;107856;51.520393;-0.117622;"{""highway"":""traffic_signals""}" london;traffic_signals;107863;51.519894;-0.122169;"{""highway"":""traffic_signals""}" london;traffic_signals;107864;51.521481;-0.124123;"{""highway"":""traffic_signals""}" london;traffic_signals;107865;51.522144;-0.124918;"{""highway"":""traffic_signals""}" london;traffic_signals;107867;51.527172;-0.118415;"{""highway"":""traffic_signals""}" london;traffic_signals;107879;51.525677;-0.125520;"{""highway"":""traffic_signals""}" london;traffic_signals;107888;51.529881;-0.124266;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107894;51.525040;-0.110594;"{""highway"":""traffic_signals""}" london;traffic_signals;107896;51.530354;-0.121064;"{""highway"":""traffic_signals""}" london;traffic_signals;107908;51.531906;-0.106257;"{""highway"":""traffic_signals""}" london;traffic_signals;107919;51.535900;-0.111076;"{""highway"":""traffic_signals""}" london;traffic_signals;107925;51.536938;-0.116546;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;107974;51.530842;-0.121002;"{""highway"":""traffic_signals""}" london;traffic_signals;107976;51.529095;-0.126277;"{""highway"":""traffic_signals""}" london;traffic_signals;107992;51.524258;-0.128866;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108033;51.521389;-0.131546;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108034;51.522415;-0.132641;"{""highway"":""traffic_signals""}" london;traffic_signals;108040;51.523697;-0.137214;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;108054;51.513985;-0.141554;"{""highway"":""traffic_signals""}" london;traffic_signals;108055;51.513126;-0.140664;"{""highway"":""traffic_signals""}" london;traffic_signals;108058;51.510387;-0.138254;"{""highway"":""traffic_signals""}" london;traffic_signals;108062;51.515934;-0.135869;"{""highway"":""traffic_signals""}" london;traffic_signals;108076;51.503723;-0.136066;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108091;51.500946;-0.133871;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;108094;51.501141;-0.127771;"{""highway"":""traffic_signals""}" london;traffic_signals;108097;51.497829;-0.134008;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108103;51.496899;-0.129375;"{""highway"":""traffic_signals""}" london;traffic_signals;108118;51.497688;-0.079763;"{""highway"":""traffic_signals""}" london;traffic_signals;108120;51.496674;-0.081835;"{""highway"":""traffic_signals""}" london;traffic_signals;108153;51.480820;-0.009498;"{""highway"":""traffic_signals""}" london;traffic_signals;108154;51.481129;-0.008084;"{""highway"":""traffic_signals""}" london;traffic_signals;108178;51.533272;0.008029;"{""highway"":""traffic_signals""}" london;traffic_signals;108180;51.535149;0.008737;"{""highway"":""traffic_signals""}" london;traffic_signals;108182;51.536884;0.006416;"{""highway"":""traffic_signals""}" london;traffic_signals;108192;51.493561;-0.100706;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;108203;51.523067;-0.151141;"{""highway"":""traffic_signals""}" london;traffic_signals;108234;51.517101;-0.144439;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108236;51.516842;-0.145960;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108245;51.511150;-0.143276;"{""highway"":""traffic_signals""}" london;traffic_signals;108252;51.512291;-0.144440;"{""highway"":""traffic_signals""}" london;traffic_signals;108263;51.509872;-0.136171;"{""highway"":""traffic_signals""}" london;traffic_signals;108275;51.502029;-0.140059;"{""highway"":""traffic_signals""}" london;traffic_signals;108283;51.500175;-0.140969;"{""highway"":""traffic_signals""}" london;traffic_signals;108287;51.502190;-0.141883;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;108290;51.499107;-0.143139;"{""highway"":""traffic_signals""}" london;traffic_signals;108299;51.497475;-0.135620;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108322;51.496941;-0.139290;"{""highway"":""traffic_signals""}" london;traffic_signals;108353;51.493420;-0.144683;"{""highway"":""traffic_signals""}" london;traffic_signals;108355;51.491802;-0.141257;"{""highway"":""traffic_signals""}" london;traffic_signals;108389;51.517586;-0.107850;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;108396;51.522541;-0.102060;"{""highway"":""traffic_signals""}" london;traffic_signals;108408;51.520084;-0.097299;"{""highway"":""traffic_signals""}" london;traffic_signals;108417;51.523319;-0.098566;"{""highway"":""traffic_signals""}" london;traffic_signals;108428;51.524349;-0.080322;"{""highway"":""traffic_signals""}" london;traffic_signals;108464;51.526684;-0.088030;"{""highway"":""traffic_signals""}" london;traffic_signals;108466;51.528175;-0.091528;"{""highway"":""traffic_signals""}" london;traffic_signals;108503;51.531364;-0.114095;"{""highway"":""traffic_signals""}" london;traffic_signals;108512;51.533970;-0.111522;"{""highway"":""traffic_signals""}" london;traffic_signals;108525;51.535141;-0.104169;"{""highway"":""traffic_signals""}" london;traffic_signals;108544;51.528522;-0.101030;"{""highway"":""traffic_signals""}" london;traffic_signals;108548;51.525822;-0.104035;"{""highway"":""traffic_signals""}" london;traffic_signals;108565;51.539253;-0.081087;"{""highway"":""traffic_signals""}" london;traffic_signals;108586;51.538990;-0.076701;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108591;51.532928;-0.077142;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108597;51.526279;-0.078015;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108610;51.538662;-0.098918;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108621;51.534988;-0.070134;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108671;51.521904;-0.046285;"{""highway"":""traffic_signals""}" london;traffic_signals;108810;51.506073;-0.070818;"{""highway"":""traffic_signals""}" london;traffic_signals;108857;51.506134;-0.088313;"{""highway"":""traffic_signals""}" london;traffic_signals;108860;51.505089;-0.089620;"{""highway"":""traffic_signals""}" london;traffic_signals;108894;51.510548;-0.115756;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108898;51.513264;-0.117148;"{""highway"":""traffic_signals""}" london;traffic_signals;108901;51.517693;-0.119311;"{""highway"":""traffic_signals""}" london;traffic_signals;108903;51.518246;-0.113795;"{""highway"":""traffic_signals""}" london;traffic_signals;108909;51.524364;-0.115906;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;108999;51.537178;0.009378;"{""highway"":""traffic_signals""}" london;traffic_signals;109076;51.568306;0.010930;"{""highway"":""traffic_signals""}" london;traffic_signals;109149;51.541767;-0.145741;"{""highway"":""traffic_signals""}" london;traffic_signals;109152;51.542721;-0.141818;"{""highway"":""traffic_signals""}" london;traffic_signals;109170;51.536091;-0.146750;"{""highway"":""traffic_signals""}" london;traffic_signals;109172;51.536766;-0.146204;"{""highway"":""traffic_signals""}" london;traffic_signals;109196;51.543861;-0.152598;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;109202;51.545914;-0.150744;"{""highway"":""traffic_signals""}" london;traffic_signals;109224;51.526569;-0.163118;"{""highway"":""traffic_signals""}" london;traffic_signals;109359;51.526379;-0.112973;"{""highway"":""traffic_signals""}" london;traffic_signals;109360;51.527035;-0.096802;"{""highway"":""traffic_signals""}" london;traffic_signals;109361;51.529724;-0.097459;"{""highway"":""traffic_signals""}" london;traffic_signals;109375;51.523643;-0.077290;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;109588;51.506523;-0.152146;"{""highway"":""traffic_signals""}" london;traffic_signals;109624;51.509304;-0.123962;"{""highway"":""traffic_signals""}" london;traffic_signals;109642;51.483547;-0.167362;"{""highway"":""traffic_signals""}" london;traffic_signals;109645;51.482189;-0.173514;"{""highway"":""traffic_signals""}" london;traffic_signals;109652;51.481686;-0.181593;"{""highway"":""traffic_signals""}" london;traffic_signals;109657;51.501759;-0.161309;"{""highway"":""traffic_signals""}" london;traffic_signals;109670;51.501728;-0.174596;"{""highway"":""traffic_signals""}" london;traffic_signals;109671;51.502159;-0.174618;"{""highway"":""traffic_signals""}" london;traffic_signals;109684;51.495724;-0.173624;"{""highway"":""traffic_signals""}" london;traffic_signals;109735;51.510799;-0.093041;"{""highway"":""traffic_signals""}" london;traffic_signals;109745;51.505627;-0.099741;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;109753;51.505714;-0.111317;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;109782;51.517452;-0.093739;"{""highway"":""traffic_signals""}" london;traffic_signals;109806;51.521656;-0.112735;"{""highway"":""traffic_signals""}" london;traffic_signals;109861;51.490784;-0.149730;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;109867;51.490990;-0.144108;"{""highway"":""traffic_signals""}" london;traffic_signals;109870;51.494980;-0.182827;"{""highway"":""traffic_signals""}" london;traffic_signals;109871;51.494884;-0.184923;"{""highway"":""traffic_signals""}" london;traffic_signals;109922;51.487617;-0.267125;"{""highway"":""traffic_signals""}" london;traffic_signals;109977;51.524166;-0.158450;"{""highway"":""traffic_signals""}" london;traffic_signals;110005;51.521702;-0.159652;"{""highway"":""traffic_signals""}" london;traffic_signals;110008;51.520290;-0.156697;"{""highway"":""traffic_signals""}" london;traffic_signals;110011;51.522072;-0.157498;"{""highway"":""traffic_signals""}" london;traffic_signals;110030;51.513889;-0.153796;"{""highway"":""traffic_signals""}" london;traffic_signals;110037;51.510342;-0.154402;"{""highway"":""traffic_signals""}" london;traffic_signals;110039;51.510979;-0.157096;"{""highway"":""traffic_signals""}" london;traffic_signals;110042;51.510883;-0.157788;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;110043;51.509876;-0.156896;"{""highway"":""traffic_signals""}" london;traffic_signals;110086;51.531860;-0.139133;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;110094;51.527840;-0.131369;"{""highway"":""traffic_signals""}" london;traffic_signals;110096;51.526371;-0.133656;"{""highway"":""traffic_signals""}" london;traffic_signals;110097;51.527313;-0.130875;"{""highway"":""traffic_signals""}" london;traffic_signals;110098;51.527225;-0.130783;"{""highway"":""traffic_signals""}" london;traffic_signals;110099;51.527714;-0.129729;"{""highway"":""traffic_signals""}" london;traffic_signals;110104;51.526302;-0.133564;"{""highway"":""traffic_signals""}" london;traffic_signals;110146;51.519238;-0.087692;"{""highway"":""traffic_signals""}" london;traffic_signals;110147;51.520493;-0.087275;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;110179;51.524624;-0.077260;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;110237;51.514339;-0.078145;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;110238;51.516415;-0.083536;"{""highway"":""traffic_signals""}" london;traffic_signals;110239;51.516167;-0.081581;"{""highway"":""traffic_signals""}" london;traffic_signals;110249;51.517685;-0.065660;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;110270;51.526131;-0.123732;"{""highway"":""traffic_signals""}" london;traffic_signals;110279;51.525337;-0.087432;"{""highway"":""traffic_signals""}" london;traffic_signals;110285;51.526524;-0.100091;"{""highway"":""traffic_signals""}" london;traffic_signals;132404;51.510746;0.000162;"{""highway"":""traffic_signals""}" london;traffic_signals;132432;51.522133;0.031191;"{""highway"":""traffic_signals""}" london;traffic_signals;132481;51.524830;0.112000;"{""highway"":""traffic_signals""}" london;traffic_signals;134053;51.590748;0.141938;"{""highway"":""traffic_signals""}" london;traffic_signals;134060;51.572197;0.142023;"{""highway"":""traffic_signals""}" london;traffic_signals;134074;51.582443;0.117559;"{""highway"":""traffic_signals""}" london;traffic_signals;138990;51.509151;-0.026554;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;138995;51.511795;-0.039189;"{""highway"":""traffic_signals""}" london;traffic_signals;152208;51.546505;-0.141769;"{""highway"":""traffic_signals""}" london;traffic_signals;152210;51.538925;-0.142624;"{""name"":""Britannia Junction"",""highway"":""traffic_signals""}" london;traffic_signals;152211;51.540501;-0.139881;"{""highway"":""traffic_signals""}" london;traffic_signals;152212;51.538311;-0.138017;"{""highway"":""traffic_signals""}" london;traffic_signals;152213;51.536812;-0.136699;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;152214;51.536175;-0.138653;"{""highway"":""traffic_signals""}" london;traffic_signals;152217;51.537125;-0.141130;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;152221;51.541763;-0.138374;"{""highway"":""traffic_signals""}" london;traffic_signals;152234;51.540703;-0.144238;"{""highway"":""traffic_signals""}" london;traffic_signals;152241;51.539848;-0.136747;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;152275;51.577721;-0.147340;"{""highway"":""traffic_signals""}" london;traffic_signals;152284;51.581730;-0.156825;"{""highway"":""traffic_signals""}" london;traffic_signals;155318;51.550835;-0.140687;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;155329;51.541962;-0.135884;"{""highway"":""traffic_signals""}" london;traffic_signals;155332;51.542770;-0.137446;"{""highway"":""traffic_signals""}" london;traffic_signals;155337;51.547813;-0.130493;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;168069;51.535530;-0.132497;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;168071;51.535210;-0.135432;"{""highway"":""traffic_signals""}" london;traffic_signals;168083;51.543369;-0.125948;"{""highway"":""traffic_signals""}" london;traffic_signals;168089;51.531609;-0.111216;"{""highway"":""traffic_signals""}" london;traffic_signals;168272;51.513210;-0.145379;"{""highway"":""traffic_signals""}" london;traffic_signals;195384;51.646790;-0.187528;"{""highway"":""traffic_signals""}" london;traffic_signals;195390;51.647701;-0.190356;"{""highway"":""traffic_signals""}" london;traffic_signals;195430;51.647888;-0.190714;"{""highway"":""traffic_signals""}" london;traffic_signals;195439;51.653015;-0.199908;"{""highway"":""traffic_signals""}" london;traffic_signals;195441;51.651123;-0.196586;"{""highway"":""traffic_signals""}" london;traffic_signals;195709;51.551506;-0.141015;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;195715;51.556850;-0.138389;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;195728;51.565502;-0.134404;"{""highway"":""traffic_signals""}" london;traffic_signals;195730;51.566525;-0.134616;"{""highway"":""traffic_signals""}" london;traffic_signals;195731;51.566025;-0.133724;"{""highway"":""traffic_signals""}" london;traffic_signals;195734;51.569153;-0.142218;"{""highway"":""traffic_signals""}" london;traffic_signals;195824;51.602619;-0.173993;"{""highway"":""traffic_signals""}" london;traffic_signals;195977;51.683609;-0.050704;"{""highway"":""traffic_signals""}" london;traffic_signals;195981;51.682644;-0.048575;"{""highway"":""traffic_signals""}" london;traffic_signals;195983;51.682472;-0.050632;"{""highway"":""traffic_signals""}" london;traffic_signals;196021;51.630180;-0.174914;"{""name"":""Whetstone"",""highway"":""traffic_signals""}" london;traffic_signals;196023;51.629833;-0.174771;"{""highway"":""traffic_signals""}" london;traffic_signals;196066;51.612431;-0.175743;"{""highway"":""traffic_signals""}" london;traffic_signals;196069;51.612465;-0.177775;"{""highway"":""traffic_signals""}" london;traffic_signals;196101;51.601749;-0.193130;"{""highway"":""traffic_signals""}" london;traffic_signals;196108;51.597122;-0.197986;"{""highway"":""traffic_signals""}" london;traffic_signals;196122;51.589828;-0.200168;"{""highway"":""traffic_signals""}" london;traffic_signals;196129;51.589752;-0.198120;"{""highway"":""traffic_signals""}" london;traffic_signals;196150;51.589672;-0.200147;"{""highway"":""traffic_signals""}" london;traffic_signals;196161;51.589554;-0.195642;"{""highway"":""traffic_signals""}" london;traffic_signals;196251;51.641941;-0.242912;"{""highway"":""traffic_signals""}" london;traffic_signals;196276;51.607445;-0.175075;"{""highway"":""traffic_signals""}" london;traffic_signals;196299;51.602489;-0.174089;"{""highway"":""traffic_signals""}" london;traffic_signals;196427;51.612427;-0.109603;"{""highway"":""traffic_signals""}" london;traffic_signals;196428;51.612259;-0.109587;"{""highway"":""traffic_signals""}" london;traffic_signals;196495;51.615986;-0.086712;"{""highway"":""traffic_signals""}" london;traffic_signals;196558;51.588543;-0.206457;"{""highway"":""traffic_signals""}" london;traffic_signals;196587;51.591206;-0.211870;"{""highway"":""traffic_signals""}" london;traffic_signals;196590;51.591286;-0.211693;"{""highway"":""traffic_signals""}" london;traffic_signals;196602;51.588783;-0.206222;"{""highway"":""traffic_signals""}" london;traffic_signals;196751;51.600109;-0.181808;"{""highway"":""traffic_signals""}" london;traffic_signals;196833;51.649033;-0.169648;"{""highway"":""traffic_signals""}" london;traffic_signals;196848;51.644112;-0.161103;"{""highway"":""traffic_signals""}" london;traffic_signals;196873;51.636593;-0.138300;"{""highway"":""traffic_signals""}" london;traffic_signals;196884;51.656197;-0.201862;"{""highway"":""traffic_signals""}" london;traffic_signals;197275;51.533936;-0.329939;"{""highway"":""traffic_signals""}" london;traffic_signals;197320;51.526108;-0.274032;"{""highway"":""traffic_signals""}" london;traffic_signals;197350;51.521908;-0.259387;"{""highway"":""traffic_signals""}" london;traffic_signals;197372;51.519409;-0.262456;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;197414;51.513836;-0.249002;"{""highway"":""traffic_signals""}" london;traffic_signals;197415;51.515148;-0.249407;"{""highway"":""traffic_signals""}" london;traffic_signals;197419;51.514027;-0.245796;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;197441;51.514488;-0.233744;"{""highway"":""traffic_signals""}" london;traffic_signals;197455;51.514984;-0.226198;"{""highway"":""traffic_signals""}" london;traffic_signals;197458;51.515446;-0.226232;"{""highway"":""traffic_signals""}" london;traffic_signals;197460;51.517002;-0.227230;"{""highway"":""traffic_signals""}" london;traffic_signals;197508;51.541672;-0.175302;"{""highway"":""traffic_signals""}" london;traffic_signals;197549;51.516842;-0.209567;"{""highway"":""traffic_signals""}" london;traffic_signals;197550;51.516006;-0.208990;"{""highway"":""traffic_signals""}" london;traffic_signals;197558;51.514248;-0.207723;"{""highway"":""traffic_signals""}" london;traffic_signals;197634;51.518112;-0.167472;"{""highway"":""traffic_signals""}" london;traffic_signals;197636;51.519218;-0.169107;"{""highway"":""traffic_signals""}" london;traffic_signals;197697;51.517860;-0.148104;"{""highway"":""traffic_signals""}" london;traffic_signals;197974;51.563210;-0.107699;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;197979;51.490753;-0.191170;"{""highway"":""traffic_signals""}" london;traffic_signals;197992;51.481197;-0.183272;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;197998;51.479984;-0.195693;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198001;51.477325;-0.201630;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198006;51.476261;-0.192928;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198014;51.483334;-0.185419;"{""highway"":""traffic_signals""}" london;traffic_signals;198043;51.485760;-0.173034;"{""highway"":""traffic_signals""}" london;traffic_signals;198072;51.547291;-0.116547;"{""highway"":""traffic_signals""}" london;traffic_signals;198100;51.546795;-0.118074;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198236;51.534519;-0.076975;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198256;51.530991;-0.069551;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;198376;51.526871;-0.108421;"{""highway"":""traffic_signals""}" london;traffic_signals;198744;51.589443;-0.163923;"{""name"":""East Finchley"",""highway"":""traffic_signals""}" london;traffic_signals;198854;51.521797;-0.159706;"{""highway"":""traffic_signals""}" london;traffic_signals;199055;51.576553;-0.144604;"{""highway"":""traffic_signals""}" london;traffic_signals;199402;51.579540;-0.123677;"{""highway"":""traffic_signals""}" london;traffic_signals;199404;51.578403;-0.123926;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;199433;51.570644;-0.115087;"{""highway"":""traffic_signals""}" london;traffic_signals;199438;51.568604;-0.110696;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;199451;51.575466;-0.098476;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;199496;51.565472;-0.093437;"{""highway"":""traffic_signals""}" london;traffic_signals;199499;51.563904;-0.092421;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;199542;51.556774;-0.115639;"{""highway"":""traffic_signals""}" london;traffic_signals;200044;51.522171;-0.157542;"{""highway"":""traffic_signals""}" london;traffic_signals;200047;51.523075;-0.152551;"{""highway"":""traffic_signals""}" london;traffic_signals;200048;51.523186;-0.151141;"{""highway"":""traffic_signals""}" london;traffic_signals;200078;51.615742;-0.143820;"{""highway"":""traffic_signals""}" london;traffic_signals;200088;51.612846;-0.158614;"{""name"":""Friern Barnet"",""highway"":""traffic_signals""}" london;traffic_signals;200266;51.594982;-0.216764;"{""highway"":""traffic_signals""}" london;traffic_signals;200267;51.595131;-0.216670;"{""highway"":""traffic_signals""}" london;traffic_signals;201074;51.587715;-0.134066;"{""highway"":""traffic_signals""}" london;traffic_signals;201114;51.606850;-0.124390;"{""highway"":""traffic_signals""}" london;traffic_signals;201144;51.620842;-0.121810;"{""highway"":""traffic_signals""}" london;traffic_signals;201151;51.617783;-0.109040;"{""highway"":""traffic_signals""}" london;traffic_signals;201189;51.623592;-0.103803;"{""highway"":""traffic_signals""}" london;traffic_signals;201206;51.615665;-0.109600;"{""highway"":""traffic_signals""}" london;traffic_signals;201266;51.600590;-0.115764;"{""highway"":""traffic_signals""}" london;traffic_signals;201269;51.599003;-0.110993;"{""highway"":""traffic_signals""}" london;traffic_signals;201966;51.630463;-0.236016;"{""highway"":""traffic_signals""}" london;traffic_signals;201984;51.627262;-0.241635;"{""highway"":""traffic_signals""}" london;traffic_signals;202047;51.586102;-0.230716;"{""highway"":""traffic_signals""}" london;traffic_signals;202048;51.585865;-0.231087;"{""highway"":""traffic_signals""}" london;traffic_signals;202067;51.572502;-0.227394;"{""highway"":""traffic_signals""}" london;traffic_signals;202083;51.571442;-0.231962;"{""name"":""Staples Corner Roundabout"",""highway"":""traffic_signals""}" london;traffic_signals;202085;51.571175;-0.232280;"{""name"":""Staples Corner Roundabout"",""highway"":""traffic_signals""}" london;traffic_signals;202087;51.570820;-0.231799;"{""name"":""Staples Corner Roundabout"",""highway"":""traffic_signals""}" london;traffic_signals;202090;51.571270;-0.231322;"{""name"":""Staples Corner Roundabout"",""highway"":""traffic_signals""}" london;traffic_signals;202289;51.452148;-0.405776;"{""highway"":""traffic_signals""}" london;traffic_signals;202299;51.444138;-0.411145;"{""highway"":""traffic_signals""}" london;traffic_signals;204464;51.609348;0.262234;"{""highway"":""traffic_signals""}" london;traffic_signals;205915;51.496178;-0.453954;"{""highway"":""traffic_signals""}" london;traffic_signals;207311;51.529083;-0.138635;"{""highway"":""traffic_signals""}" london;traffic_signals;207576;51.539585;-0.175817;"{""highway"":""traffic_signals""}" london;traffic_signals;208724;51.557827;-0.195713;"{""highway"":""traffic_signals""}" london;traffic_signals;208725;51.557743;-0.195836;"{""highway"":""traffic_signals""}" london;traffic_signals;209135;51.629349;-0.165929;"{""highway"":""traffic_signals""}" london;traffic_signals;212367;51.548397;-0.448962;"{""highway"":""traffic_signals""}" london;traffic_signals;215295;51.518944;-0.228075;"{""highway"":""traffic_signals""}" london;traffic_signals;215531;51.504642;-0.215908;"{""highway"":""traffic_signals""}" london;traffic_signals;215534;51.504631;-0.217465;"{""highway"":""traffic_signals""}" london;traffic_signals;215565;51.503345;-0.223128;"{""highway"":""traffic_signals""}" london;traffic_signals;215701;51.503841;-0.220658;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;216159;51.505436;-0.212788;"{""highway"":""traffic_signals""}" london;traffic_signals;216161;51.505596;-0.211904;"{""highway"":""traffic_signals""}" london;traffic_signals;219279;51.492832;0.010248;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;219292;51.485825;0.007306;"{""highway"":""traffic_signals""}" london;traffic_signals;220857;51.567341;-0.112664;"{""highway"":""traffic_signals""}" london;traffic_signals;220861;51.563305;-0.118274;"{""highway"":""traffic_signals""}" london;traffic_signals;220863;51.564548;-0.104705;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;220864;51.564674;-0.104463;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;220874;51.565819;-0.084774;"{""highway"":""traffic_signals""}" london;traffic_signals;220876;51.572453;-0.090646;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;220879;51.572521;-0.090724;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;220884;51.576408;-0.098584;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;220891;51.581383;-0.099457;"{""highway"":""traffic_signals""}" london;traffic_signals;220920;51.589340;-0.108138;"{""highway"":""traffic_signals""}" london;traffic_signals;221730;51.542706;-0.106614;"{""highway"":""traffic_signals""}" london;traffic_signals;221731;51.543163;-0.103205;"{""highway"":""traffic_signals""}" london;traffic_signals;221742;51.543701;-0.100616;"{""highway"":""traffic_signals""}" london;traffic_signals;221768;51.546627;-0.087081;"{""highway"":""traffic_signals""}" london;traffic_signals;221773;51.546581;-0.083783;"{""highway"":""traffic_signals""}" london;traffic_signals;221776;51.543114;-0.084354;"{""highway"":""traffic_signals""}" london;traffic_signals;221798;51.549095;-0.098105;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;221817;51.549595;-0.110804;"{""highway"":""traffic_signals""}" london;traffic_signals;221847;51.552158;-0.085382;"{""highway"":""traffic_signals""}" london;traffic_signals;222417;51.592133;-0.257536;"{""highway"":""traffic_signals""}" london;traffic_signals;222428;51.584293;-0.248174;"{""highway"":""traffic_signals""}" london;traffic_signals;222432;51.578728;-0.240847;"{""highway"":""traffic_signals""}" london;traffic_signals;222453;51.582733;-0.227096;"{""highway"":""traffic_signals""}" london;traffic_signals;222454;51.582726;-0.226905;"{""highway"":""traffic_signals""}" london;traffic_signals;222467;51.589760;-0.221755;"{""highway"":""traffic_signals""}" london;traffic_signals;223069;51.487980;0.031010;"{""highway"":""traffic_signals""}" london;traffic_signals;223153;51.482819;-0.003129;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;224662;51.502007;-0.228846;"{""highway"":""traffic_signals""}" london;traffic_signals;224673;51.506462;-0.234511;"{""highway"":""traffic_signals""}" london;traffic_signals;224688;51.502651;-0.214003;"{""highway"":""traffic_signals""}" london;traffic_signals;224701;51.506748;-0.245103;"{""highway"":""traffic_signals""}" london;traffic_signals;224714;51.506557;-0.256823;"{""highway"":""traffic_signals""}" london;traffic_signals;224754;51.508327;-0.276051;"{""highway"":""traffic_signals""}" london;traffic_signals;224776;51.512886;-0.296416;"{""highway"":""traffic_signals""}" london;traffic_signals;224779;51.511414;-0.292008;"{""highway"":""traffic_signals""}" london;traffic_signals;224791;51.510151;-0.291876;"{""highway"":""traffic_signals""}" london;traffic_signals;224807;51.513233;-0.304333;"{""highway"":""traffic_signals""}" london;traffic_signals;224809;51.512981;-0.306252;"{""highway"":""traffic_signals""}" london;traffic_signals;224812;51.515244;-0.304661;"{""highway"":""traffic_signals""}" london;traffic_signals;224817;51.516014;-0.304765;"{""highway"":""traffic_signals""}" london;traffic_signals;224821;51.510918;-0.319475;"{""highway"":""traffic_signals""}" london;traffic_signals;225149;51.508785;-0.334515;"{""highway"":""traffic_signals""}" london;traffic_signals;225154;51.508259;-0.342019;"{""highway"":""traffic_signals""}" london;traffic_signals;227700;51.450344;-0.100705;"{""highway"":""traffic_signals""}" london;traffic_signals;227710;51.455238;-0.113735;"{""name"":""Brixton Water Lane"",""highway"":""traffic_signals""}" london;traffic_signals;227716;51.461868;-0.111815;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;227722;51.464718;-0.114166;"{""highway"":""traffic_signals""}" london;traffic_signals;227726;51.465839;-0.116550;"{""highway"":""traffic_signals""}" london;traffic_signals;227729;51.470417;-0.112497;"{""highway"":""traffic_signals""}" london;traffic_signals;227737;51.481277;-0.110806;"{""highway"":""traffic_signals""}" london;traffic_signals;227738;51.481983;-0.112355;"{""highway"":""traffic_signals""}" london;traffic_signals;227744;51.472420;-0.122302;"{""highway"":""traffic_signals""}" london;traffic_signals;227752;51.465370;-0.129628;"{""highway"":""traffic_signals""}" london;traffic_signals;227758;51.459755;-0.129136;"{""highway"":""traffic_signals""}" london;traffic_signals;227761;51.455673;-0.119083;"{""highway"":""traffic_signals""}" london;traffic_signals;227790;51.444828;-0.111523;"{""highway"":""traffic_signals""}" london;traffic_signals;234222;51.524261;-0.292156;"{""highway"":""traffic_signals""}" london;traffic_signals;234237;51.516998;-0.291327;"{""highway"":""traffic_signals""}" london;traffic_signals;234276;51.500809;-0.296555;"{""highway"":""traffic_signals""}" london;traffic_signals;234278;51.499699;-0.299791;"{""highway"":""traffic_signals""}" london;traffic_signals;234280;51.498325;-0.305806;"{""highway"":""traffic_signals""}" london;traffic_signals;234290;51.526482;-0.138622;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;236609;51.537941;-0.057049;"{""highway"":""traffic_signals""}" london;traffic_signals;237485;51.541786;-0.048787;"{""highway"":""traffic_signals""}" london;traffic_signals;237900;51.522160;-0.106998;"{""highway"":""traffic_signals""}" london;traffic_signals;237908;51.514153;-0.104387;"{""name"":""Ludgate Circus"",""highway"":""traffic_signals""}" london;traffic_signals;238701;51.543064;-0.069920;"{""highway"":""traffic_signals""}" london;traffic_signals;238717;51.551109;-0.031063;"{""highway"":""traffic_signals""}" london;traffic_signals;238743;51.533531;-0.022348;"{""highway"":""traffic_signals""}" london;traffic_signals;242820;51.546169;-0.075646;"{""highway"":""traffic_signals""}" london;traffic_signals;243073;51.557247;-0.074564;"{""highway"":""traffic_signals""}" london;traffic_signals;243103;51.552677;-0.057991;"{""highway"":""traffic_signals""}" london;traffic_signals;243112;51.550926;-0.051411;"{""highway"":""traffic_signals""}" london;traffic_signals;243131;51.562958;-0.058068;"{""highway"":""traffic_signals""}" london;traffic_signals;243136;51.554581;-0.068302;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;243246;51.570316;-0.025250;"{""highway"":""traffic_signals""}" london;traffic_signals;243745;51.558064;-0.069254;"{""highway"":""traffic_signals""}" london;traffic_signals;243757;51.580250;0.023074;"{""highway"":""traffic_signals""}" london;traffic_signals;243758;51.581974;0.020302;"{""highway"":""traffic_signals""}" london;traffic_signals;243761;51.583229;0.020188;"{""highway"":""traffic_signals""}" london;traffic_signals;243771;51.575329;-0.012854;"{""highway"":""traffic_signals""}" london;traffic_signals;243772;51.573875;-0.009809;"{""highway"":""traffic_signals""}" london;traffic_signals;243785;51.582733;-0.018719;"{""highway"":""traffic_signals""}" london;traffic_signals;243789;51.563164;-0.016346;"{""highway"":""traffic_signals""}" london;traffic_signals;245155;51.560669;-0.073995;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;245156;51.561970;-0.073647;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;245174;51.573467;-0.072520;"{""highway"":""traffic_signals""}" london;traffic_signals;245179;51.577225;-0.073057;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;245181;51.579407;-0.080750;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;255562;51.516663;-0.141199;"{""highway"":""traffic_signals""}" london;traffic_signals;255566;51.515480;-0.140699;"{""highway"":""traffic_signals""}" london;traffic_signals;271885;51.546940;-0.203674;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;271891;51.537315;-0.192689;"{""highway"":""traffic_signals""}" london;traffic_signals;271896;51.530659;-0.184278;"{""highway"":""traffic_signals""}" london;traffic_signals;271916;51.536152;-0.182145;"{""highway"":""traffic_signals""}" london;traffic_signals;274612;51.519680;-0.169834;"{""highway"":""traffic_signals""}" london;traffic_signals;275410;51.514454;-0.177646;"{""highway"":""traffic_signals""}" london;traffic_signals;275415;51.514542;-0.159531;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;275417;51.513905;-0.178626;"{""highway"":""traffic_signals""}" london;traffic_signals;275423;51.519093;-0.158455;"{""highway"":""traffic_signals""}" london;traffic_signals;275424;51.514194;-0.161597;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;275428;51.516903;-0.165536;"{""highway"":""traffic_signals""}" london;traffic_signals;275429;51.518154;-0.167404;"{""highway"":""traffic_signals""}" london;traffic_signals;275435;51.514809;-0.173331;"{""highway"":""traffic_signals""}" london;traffic_signals;275452;51.516075;-0.187475;"{""highway"":""traffic_signals""}" london;traffic_signals;275453;51.515808;-0.188383;"{""highway"":""traffic_signals""}" london;traffic_signals;275479;51.510361;-0.185768;"{""highway"":""traffic_signals""}" london;traffic_signals;275483;51.515022;-0.195051;"{""highway"":""traffic_signals""}" london;traffic_signals;275492;51.508694;-0.203653;"{""highway"":""traffic_signals""}" london;traffic_signals;275493;51.507881;-0.203050;"{""highway"":""traffic_signals""}" london;traffic_signals;275508;51.496681;-0.205889;"{""highway"":""traffic_signals""}" london;traffic_signals;276448;51.498634;-0.060599;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;276457;51.498764;-0.070127;"{""highway"":""traffic_signals""}" london;traffic_signals;276472;51.492249;-0.065196;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;276487;51.493221;-0.073642;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;276507;51.499886;-0.095560;"{""highway"":""traffic_signals""}" london;traffic_signals;276508;51.499111;-0.096968;"{""highway"":""traffic_signals""}" london;traffic_signals;276516;51.502403;-0.082480;"{""highway"":""traffic_signals""}" london;traffic_signals;276518;51.500835;-0.098618;"{""highway"":""traffic_signals""}" london;traffic_signals;276529;51.534599;-0.204682;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;276554;51.490761;-0.183047;"{""highway"":""traffic_signals""}" london;traffic_signals;276556;51.493847;-0.178632;"{""highway"":""traffic_signals""}" london;traffic_signals;276557;51.493732;-0.168887;"{""highway"":""traffic_signals""}" london;traffic_signals;276560;51.497063;-0.163589;"{""highway"":""traffic_signals""}" london;traffic_signals;279636;51.549038;-0.366709;"{""highway"":""traffic_signals""}" london;traffic_signals;279668;51.577187;-0.333325;"{""highway"":""traffic_signals""}" london;traffic_signals;279678;51.581612;-0.340614;"{""highway"":""traffic_signals""}" london;traffic_signals;279679;51.569431;-0.346801;"{""highway"":""traffic_signals""}" london;traffic_signals;279681;51.569061;-0.347267;"{""highway"":""traffic_signals""}" london;traffic_signals;282258;51.600613;-0.267410;"{""highway"":""traffic_signals""}" london;traffic_signals;282670;51.566788;-0.206424;"{""highway"":""traffic_signals""}" london;traffic_signals;282671;51.566719;-0.206568;"{""highway"":""traffic_signals""}" london;traffic_signals;282672;51.561359;-0.203642;"{""highway"":""traffic_signals""}" london;traffic_signals;287599;51.478752;-0.407726;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;287822;51.479519;-0.439211;"{""highway"":""traffic_signals""}" london;traffic_signals;292139;51.466251;-0.150530;"{""highway"":""traffic_signals""}" london;traffic_signals;292407;51.436066;-0.255965;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;292409;51.435928;-0.255649;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;292413;51.435661;-0.256177;"{""highway"":""traffic_signals""}" london;traffic_signals;292488;51.458611;-0.194991;"{""highway"":""traffic_signals""}" london;traffic_signals;292559;51.472507;-0.176945;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;292566;51.475273;-0.175033;"{""highway"":""traffic_signals""}" london;traffic_signals;292650;51.415958;-0.284164;"{""highway"":""traffic_signals""}" london;traffic_signals;292702;51.410866;-0.296674;"{""highway"":""traffic_signals""}" london;traffic_signals;292708;51.410484;-0.300546;"{""highway"":""traffic_signals""}" london;traffic_signals;292719;51.410847;-0.292087;"{""highway"":""traffic_signals""}" london;traffic_signals;292729;51.408245;-0.302008;"{""highway"":""traffic_signals""}" london;traffic_signals;292732;51.407742;-0.303766;"{""highway"":""traffic_signals""}" london;traffic_signals;292739;51.405502;-0.304050;"{""highway"":""traffic_signals""}" london;traffic_signals;293525;51.472618;-0.200507;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;293730;51.413166;-0.368304;"{""highway"":""traffic_signals""}" london;traffic_signals;294576;51.475555;-0.391175;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;294586;51.476318;-0.384273;"{""highway"":""traffic_signals""}" london;traffic_signals;294587;51.476479;-0.384161;"{""highway"":""traffic_signals""}" london;traffic_signals;295240;51.491772;-0.282365;"{""highway"":""traffic_signals""}" london;traffic_signals;295243;51.491844;-0.281430;"{""highway"":""traffic_signals""}" london;traffic_signals;295247;51.491241;-0.281004;"{""highway"":""traffic_signals""}" london;traffic_signals;295249;51.490997;-0.281556;"{""highway"":""traffic_signals""}" london;traffic_signals;295649;51.457241;-0.322082;"{""highway"":""traffic_signals""}" london;traffic_signals;295651;51.457100;-0.322388;"{""highway"":""traffic_signals""}" london;traffic_signals;295653;51.457466;-0.322410;"{""highway"":""traffic_signals""}" london;traffic_signals;295656;51.457352;-0.322796;"{""highway"":""traffic_signals""}" london;traffic_signals;296152;51.492851;-0.251416;"{""highway"":""traffic_signals""}" london;traffic_signals;296249;51.411278;-0.307317;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;296250;51.411900;-0.306142;"{""highway"":""traffic_signals""}" london;traffic_signals;296257;51.412766;-0.305075;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;296258;51.412628;-0.305100;"{""highway"":""traffic_signals""}" london;traffic_signals;296259;51.412823;-0.305165;"{""highway"":""traffic_signals""}" london;traffic_signals;296267;51.412888;-0.303464;"{""highway"":""traffic_signals""}" london;traffic_signals;296273;51.413376;-0.300761;"{""highway"":""traffic_signals""}" london;traffic_signals;296309;51.410835;-0.300823;"{""highway"":""traffic_signals""}" london;traffic_signals;296348;51.409782;-0.289264;"{""highway"":""traffic_signals""}" london;traffic_signals;296362;51.409031;-0.286967;"{""highway"":""traffic_signals""}" london;traffic_signals;296363;51.408436;-0.285436;"{""highway"":""traffic_signals""}" london;traffic_signals;297270;51.430065;-0.307120;"{""highway"":""traffic_signals""}" london;traffic_signals;297670;51.451145;-0.319622;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;297708;51.445518;-0.329806;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;298009;51.461182;-0.160332;"{""highway"":""traffic_signals""}" london;traffic_signals;298050;51.464474;-0.161887;"{""highway"":""traffic_signals""}" london;traffic_signals;298414;51.448879;-0.329577;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;298581;51.426201;-0.339737;"{""highway"":""traffic_signals""}" london;traffic_signals;299176;51.460789;-0.217150;"{""highway"":""traffic_signals""}" london;traffic_signals;299194;51.465904;-0.214130;"{""highway"":""traffic_signals""}" london;traffic_signals;299200;51.468426;-0.211245;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;299202;51.469303;-0.210255;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;299250;51.483521;-0.219302;"{""highway"":""traffic_signals""}" london;traffic_signals;299253;51.485855;-0.220334;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;299255;51.486866;-0.221104;"{""highway"":""traffic_signals""}" london;traffic_signals;299256;51.487347;-0.221707;"{""highway"":""traffic_signals""}" london;traffic_signals;299257;51.487736;-0.222210;"{""highway"":""traffic_signals""}" london;traffic_signals;299275;51.491093;-0.223497;"{""highway"":""traffic_signals""}" london;traffic_signals;299479;51.492741;-0.224825;"{""highway"":""traffic_signals""}" london;traffic_signals;299492;51.491611;-0.222139;"{""highway"":""traffic_signals""}" london;traffic_signals;300516;51.472073;-0.135421;"{""highway"":""traffic_signals""}" london;traffic_signals;303007;51.465302;-0.378145;"{""highway"":""traffic_signals""}" london;traffic_signals;303011;51.466843;-0.370893;"{""highway"":""traffic_signals""}" london;traffic_signals;303013;51.467350;-0.368570;"{""highway"":""traffic_signals""}" london;traffic_signals;303046;51.470020;-0.356874;"{""highway"":""traffic_signals""}" london;traffic_signals;303048;51.470520;-0.355048;"{""highway"":""traffic_signals""}" london;traffic_signals;303053;51.465500;-0.363881;"{""highway"":""traffic_signals""}" london;traffic_signals;303069;51.471752;-0.349949;"{""highway"":""traffic_signals""}" london;traffic_signals;303079;51.475105;-0.338745;"{""highway"":""traffic_signals""}" london;traffic_signals;303096;51.469109;-0.328750;"{""highway"":""traffic_signals""}" london;traffic_signals;303181;51.460529;-0.331563;"{""highway"":""traffic_signals""}" london;traffic_signals;303190;51.456959;-0.372612;"{""highway"":""traffic_signals""}" london;traffic_signals;303439;51.483456;-0.306342;"{""highway"":""traffic_signals""}" london;traffic_signals;304020;51.366646;-0.306969;"{""highway"":""traffic_signals""}" london;traffic_signals;304396;51.399441;-0.302623;"{""highway"":""traffic_signals""}" london;traffic_signals;304434;51.385307;-0.295490;"{""highway"":""traffic_signals""}" london;traffic_signals;324224;51.502186;-0.109926;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;364259;51.498856;-0.112463;"{""highway"":""traffic_signals""}" london;traffic_signals;364263;51.495598;-0.115104;"{""highway"":""traffic_signals""}" london;traffic_signals;364267;51.496449;-0.111468;"{""highway"":""traffic_signals""}" london;traffic_signals;364274;51.497395;-0.107676;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;364275;51.498333;-0.109211;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;364278;51.497704;-0.103578;"{""highway"":""traffic_signals""}" london;traffic_signals;364280;51.500942;-0.104704;"{""highway"":""traffic_signals""}" london;traffic_signals;364282;51.502323;-0.109459;"{""highway"":""traffic_signals""}" london;traffic_signals;364286;51.503677;-0.104572;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;364291;51.499050;-0.099844;"{""highway"":""traffic_signals""}" london;traffic_signals;364296;51.502934;-0.096060;"{""highway"":""traffic_signals""}" london;traffic_signals;364298;51.503887;-0.095755;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;379963;51.618011;-0.308070;"{""highway"":""traffic_signals""}" london;traffic_signals;391643;51.599674;-0.173278;"{""highway"":""traffic_signals""}" london;traffic_signals;406266;51.557617;-0.090358;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;406320;51.565392;-0.073111;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;424613;51.510807;-0.068499;"{""highway"":""traffic_signals""}" london;traffic_signals;424614;51.509064;-0.067721;"{""highway"":""traffic_signals""}" london;traffic_signals;424624;51.513897;-0.070671;"{""highway"":""traffic_signals""}" london;traffic_signals;432765;51.457256;0.042446;"{""highway"":""traffic_signals""}" london;traffic_signals;432766;51.457150;0.042728;"{""highway"":""traffic_signals""}" london;traffic_signals;432809;51.446266;0.014763;"{""highway"":""traffic_signals""}" london;traffic_signals;432812;51.446011;0.013863;"{""highway"":""traffic_signals""}" london;traffic_signals;432839;51.445900;-0.017253;"{""highway"":""traffic_signals""}" london;traffic_signals;432840;51.443882;-0.018021;"{""highway"":""traffic_signals""}" london;traffic_signals;432858;51.443226;-0.026977;"{""highway"":""traffic_signals""}" london;traffic_signals;432887;51.439053;-0.053999;"{""highway"":""traffic_signals""}" london;traffic_signals;432892;51.440529;-0.061517;"{""highway"":""traffic_signals""}" london;traffic_signals;432895;51.440784;-0.064018;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;432935;51.440998;-0.106252;"{""highway"":""traffic_signals""}" london;traffic_signals;432952;51.445225;-0.124475;"{""highway"":""traffic_signals""}" london;traffic_signals;432990;51.452995;-0.147305;"{""highway"":""traffic_signals""}" london;traffic_signals;432997;51.447861;-0.131891;"{""highway"":""traffic_signals""}" london;traffic_signals;459327;51.652321;-0.079774;"{""highway"":""traffic_signals""}" london;traffic_signals;489645;51.515938;-0.174971;"{""highway"":""traffic_signals""}" london;traffic_signals;489646;51.515179;-0.176363;"{""highway"":""traffic_signals""}" london;traffic_signals;489647;51.518028;-0.180280;"{""highway"":""traffic_signals""}" london;traffic_signals;489648;51.517529;-0.182114;"{""highway"":""traffic_signals""}" london;traffic_signals;490193;51.580334;-0.328674;"{""highway"":""traffic_signals""}" london;traffic_signals;497192;51.651546;-0.059833;"{""highway"":""traffic_signals""}" london;traffic_signals;515466;51.584160;-0.265573;"{""highway"":""traffic_signals""}" london;traffic_signals;519123;51.529728;-0.268599;"{""highway"":""traffic_signals""}" london;traffic_signals;520083;51.539730;-0.300540;"{""highway"":""traffic_signals""}" london;traffic_signals;520084;51.539661;-0.300668;"{""highway"":""traffic_signals""}" london;traffic_signals;525058;51.564556;-0.223870;"{""highway"":""traffic_signals""}" london;traffic_signals;525086;51.636745;-0.081608;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;535279;51.307667;-0.146118;"{""highway"":""traffic_signals""}" london;traffic_signals;539939;51.367718;-0.118983;"{""highway"":""traffic_signals""}" london;traffic_signals;539940;51.368404;-0.118646;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;540017;51.423046;-0.129518;"{""highway"":""traffic_signals""}" london;traffic_signals;540022;51.429241;-0.131092;"{""highway"":""traffic_signals""}" london;traffic_signals;615087;51.652412;-0.076545;"{""highway"":""traffic_signals""}" london;traffic_signals;618667;51.590443;-0.103321;"{""highway"":""traffic_signals""}" london;traffic_signals;618780;51.433147;-0.017595;"{""highway"":""traffic_signals""}" london;traffic_signals;623418;51.446381;0.014656;"{""highway"":""traffic_signals""}" london;traffic_signals;623795;51.426781;0.013493;"{""highway"":""traffic_signals""}" london;traffic_signals;623817;51.424358;-0.003926;"{""highway"":""traffic_signals""}" london;traffic_signals;629221;51.469753;-0.028089;"{""highway"":""traffic_signals""}" london;traffic_signals;629345;51.481407;-0.014812;"{""highway"":""traffic_signals""}" london;traffic_signals;629371;51.474270;-0.021270;"{""highway"":""traffic_signals""}" london;traffic_signals;629400;51.466793;-0.011388;"{""highway"":""traffic_signals""}" london;traffic_signals;629425;51.460766;-0.012961;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;629441;51.464020;-0.012115;"{""highway"":""traffic_signals""}" london;traffic_signals;629452;51.460812;-0.013125;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;646873;51.426117;-0.018653;"{""highway"":""traffic_signals""}" london;traffic_signals;647054;51.427895;-0.031899;"{""highway"":""traffic_signals""}" london;traffic_signals;647063;51.428635;-0.037569;"{""highway"":""traffic_signals""}" london;traffic_signals;647069;51.430721;-0.037585;"{""highway"":""traffic_signals""}" london;traffic_signals;650447;51.428539;-0.013129;"{""highway"":""traffic_signals""}" london;traffic_signals;658190;51.546471;-0.132412;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;699757;51.492695;-0.255314;"{""highway"":""traffic_signals""}" london;traffic_signals;702349;51.468433;-0.367152;"{""highway"":""traffic_signals""}" london;traffic_signals;702365;51.467331;-0.362677;"{""highway"":""traffic_signals""}" london;traffic_signals;702625;51.470734;-0.355099;"{""highway"":""traffic_signals""}" london;traffic_signals;819548;51.557034;-0.010405;"{""highway"":""traffic_signals""}" london;traffic_signals;820870;51.522175;-0.138580;"{""highway"":""traffic_signals""}" london;traffic_signals;878240;51.546902;-0.221130;"{""highway"":""traffic_signals""}" london;traffic_signals;893952;51.334782;-0.112560;"{""highway"":""traffic_signals""}" london;traffic_signals;1252826;51.515087;-0.337407;"{""highway"":""traffic_signals""}" london;traffic_signals;1253237;51.509521;-0.355407;"{""highway"":""traffic_signals""}" london;traffic_signals;2227034;51.529957;-0.105226;"{""highway"":""traffic_signals""}" london;traffic_signals;2350043;51.607693;-0.068039;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2350053;51.602348;-0.067702;"{""highway"":""traffic_signals""}" london;traffic_signals;2350059;51.598579;-0.068036;"{""highway"":""traffic_signals""}" london;traffic_signals;2350065;51.593987;-0.069502;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2350093;51.588989;-0.070460;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2373562;51.543064;-0.208394;"{""highway"":""traffic_signals""}" london;traffic_signals;2374143;51.547897;-0.191016;"{""highway"":""traffic_signals""}" london;traffic_signals;2375153;51.532143;-0.237286;"{""highway"":""traffic_signals""}" london;traffic_signals;2378878;51.527885;-0.215956;"{""highway"":""traffic_signals""}" london;traffic_signals;2384927;51.542343;-0.076284;"{""highway"":""traffic_signals""}" london;traffic_signals;2430250;51.456768;-0.189677;"{""highway"":""traffic_signals""}" london;traffic_signals;3428265;51.491840;-0.044814;"{""highway"":""traffic_signals""}" london;traffic_signals;3428943;51.484562;-0.053643;"{""highway"":""traffic_signals""}" london;traffic_signals;3431452;51.505116;-0.084429;"{""highway"":""traffic_signals""}" london;traffic_signals;3675558;51.456615;0.011560;"{""highway"":""traffic_signals""}" london;traffic_signals;3703385;51.485889;0.018031;"{""highway"":""traffic_signals""}" london;traffic_signals;6976186;51.548058;-0.311855;"{""highway"":""traffic_signals""}" london;traffic_signals;6976210;51.552021;-0.299046;"{""highway"":""traffic_signals""}" london;traffic_signals;7020887;51.647709;-0.132846;"{""highway"":""traffic_signals""}" london;traffic_signals;7258116;51.606770;-0.124229;"{""highway"":""traffic_signals""}" london;traffic_signals;7258170;51.597210;-0.109915;"{""highway"":""traffic_signals""}" london;traffic_signals;7435423;51.653328;-0.059705;"{""highway"":""traffic_signals""}" london;traffic_signals;7436541;51.660061;-0.058774;"{""highway"":""traffic_signals""}" london;traffic_signals;9241160;51.550739;-0.339468;"{""highway"":""traffic_signals""}" london;traffic_signals;9241192;51.543774;-0.342393;"{""highway"":""traffic_signals""}" london;traffic_signals;9275795;51.490074;-0.308990;"{""highway"":""traffic_signals""}" london;traffic_signals;9275820;51.488297;-0.313344;"{""highway"":""traffic_signals""}" london;traffic_signals;9275821;51.488255;-0.313207;"{""highway"":""traffic_signals""}" london;traffic_signals;9512915;51.510410;-0.131496;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;9521006;51.516743;-0.137372;"{""highway"":""traffic_signals""}" london;traffic_signals;9521029;51.515835;-0.136779;"{""highway"":""traffic_signals""}" london;traffic_signals;9521031;51.515743;-0.137707;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;9521033;51.518623;-0.137607;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;9521034;51.518040;-0.139166;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;9521035;51.516060;-0.134657;"{""highway"":""traffic_signals""}" london;traffic_signals;9726333;51.553658;-0.293340;"{""highway"":""traffic_signals""}" london;traffic_signals;9789808;51.509216;-0.134290;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;9790784;51.524002;-0.145210;"{""highway"":""traffic_signals""}" london;traffic_signals;9790785;51.523533;-0.147906;"{""highway"":""traffic_signals""}" london;traffic_signals;9791485;51.519142;-0.132846;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;9791494;51.513641;-0.141252;"{""highway"":""traffic_signals""}" london;traffic_signals;9791495;51.514984;-0.144282;"{""highway"":""traffic_signals""}" london;traffic_signals;9791496;51.516033;-0.144769;"{""highway"":""traffic_signals""}" london;traffic_signals;10028711;51.509796;0.034181;"{""highway"":""traffic_signals""}" london;traffic_signals;10028725;51.502338;0.031194;"{""highway"":""traffic_signals""}" london;traffic_signals;10365738;51.526836;-0.132230;"{""highway"":""traffic_signals""}" london;traffic_signals;10399143;51.448456;-0.447064;"{""highway"":""traffic_signals""}" london;traffic_signals;10465247;51.400482;-0.300418;"{""highway"":""traffic_signals""}" london;traffic_signals;10512503;51.528244;-0.091799;"{""highway"":""traffic_signals""}" london;traffic_signals;10539794;51.550606;-0.075147;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;10580566;51.513111;-0.114953;"{""highway"":""traffic_signals""}" london;traffic_signals;10606317;51.527802;-0.104746;"{""highway"":""traffic_signals""}" london;traffic_signals;10676793;51.520416;-0.078862;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;10676799;51.520279;-0.085242;"{""highway"":""traffic_signals""}" london;traffic_signals;10677374;51.514751;-0.089700;"{""highway"":""traffic_signals""}" london;traffic_signals;10677375;51.515045;-0.092123;"{""highway"":""traffic_signals""}" london;traffic_signals;10677377;51.514065;-0.086417;"{""highway"":""traffic_signals""}" london;traffic_signals;10677378;51.512650;-0.092480;"{""highway"":""traffic_signals""}" london;traffic_signals;10694827;51.407246;-0.304554;"{""highway"":""traffic_signals""}" london;traffic_signals;10694880;51.410656;-0.301961;"{""highway"":""traffic_signals""}" london;traffic_signals;10702686;51.407764;-0.303368;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;10703275;51.528606;-0.119477;"{""highway"":""traffic_signals""}" london;traffic_signals;10703277;51.529438;-0.115809;"{""highway"":""traffic_signals""}" london;traffic_signals;10703711;51.530910;-0.119832;"{""highway"":""traffic_signals""}" london;traffic_signals;10800380;51.438122;-0.421347;"{""highway"":""traffic_signals""}" london;traffic_signals;10802602;51.464558;-0.412424;"{""highway"":""traffic_signals""}" london;traffic_signals;10865075;51.482632;-0.123920;"{""highway"":""traffic_signals""}" london;traffic_signals;10865103;51.474564;-0.122739;"{""highway"":""traffic_signals""}" london;traffic_signals;10865118;51.486420;-0.119204;"{""highway"":""traffic_signals""}" london;traffic_signals;10868898;51.459198;-0.133326;"{""highway"":""traffic_signals""}" london;traffic_signals;10869203;51.470112;-0.132775;"{""highway"":""traffic_signals""}" london;traffic_signals;10870255;51.526989;-0.080402;"{""note"":""This is a box junction. I\u0027m not aware of any tagging scheme for these."",""highway"":""traffic_signals""}" london;traffic_signals;11002219;51.359425;-0.149780;"{""highway"":""traffic_signals""}" london;traffic_signals;11002221;51.357323;-0.149349;"{""highway"":""traffic_signals""}" london;traffic_signals;11060847;51.517494;-0.009632;"{""highway"":""traffic_signals""}" london;traffic_signals;11079513;51.448322;-0.163428;"{""highway"":""traffic_signals""}" london;traffic_signals;11079536;51.470860;-0.164638;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;11079541;51.472801;-0.162624;"{""highway"":""traffic_signals""}" london;traffic_signals;11079616;51.473564;-0.133304;"{""highway"":""traffic_signals""}" london;traffic_signals;11080816;51.367405;-0.153853;"{""name"":""Wallington Green"",""highway"":""traffic_signals""}" london;traffic_signals;11080848;51.394150;-0.145957;"{""highway"":""traffic_signals""}" london;traffic_signals;11080866;51.376987;-0.131733;"{""highway"":""traffic_signals""}" london;traffic_signals;11080884;51.374474;-0.118945;"{""highway"":""traffic_signals""}" london;traffic_signals;11616710;51.535740;-0.171115;"{""highway"":""traffic_signals""}" london;traffic_signals;11616717;51.534332;-0.174242;"{""highway"":""traffic_signals""}" london;traffic_signals;11730492;51.573410;-0.072338;"{""highway"":""traffic_signals""}" london;traffic_signals;11730501;51.560165;-0.070312;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;11863161;51.522812;-0.125781;"{""highway"":""traffic_signals""}" london;traffic_signals;11878624;51.521717;-0.124501;"{""highway"":""traffic_signals""}" london;traffic_signals;11894290;51.589825;0.030599;"{""highway"":""traffic_signals""}" london;traffic_signals;11943738;51.595078;0.022128;"{""highway"":""traffic_signals""}" london;traffic_signals;11943748;51.595680;0.021933;"{""highway"":""traffic_signals""}" london;traffic_signals;11947096;51.572376;0.064738;"{""highway"":""traffic_signals""}" london;traffic_signals;11947151;51.592907;0.040951;"{""highway"":""traffic_signals""}" london;traffic_signals;11947282;51.590157;0.048891;"{""highway"":""traffic_signals""}" london;traffic_signals;12111753;51.474789;-0.163499;"{""highway"":""traffic_signals""}" london;traffic_signals;12195919;51.501446;-0.180397;"{""highway"":""traffic_signals""}" london;traffic_signals;12197066;51.497189;-0.158974;"{""highway"":""traffic_signals""}" london;traffic_signals;12206437;51.618587;0.026763;"{""highway"":""traffic_signals""}" london;traffic_signals;12237860;51.485165;-0.082306;"{""highway"":""traffic_signals""}" london;traffic_signals;12237872;51.487144;-0.065799;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;12237875;51.483959;-0.066180;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;12237876;51.489540;-0.096448;"{""highway"":""traffic_signals""}" london;traffic_signals;12237886;51.488075;-0.058238;"{""highway"":""traffic_signals""}" london;traffic_signals;12237891;51.481510;-0.085540;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;12237893;51.482311;-0.094487;"{""highway"":""traffic_signals""}" london;traffic_signals;12237898;51.485149;-0.093815;"{""highway"":""traffic_signals""}" london;traffic_signals;12238097;51.505165;-0.089479;"{""highway"":""traffic_signals""}" london;traffic_signals;12238098;51.504910;-0.095658;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;12239374;51.486851;-0.073948;"{""highway"":""traffic_signals""}" london;traffic_signals;12239377;51.483376;-0.064964;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;12239378;51.482655;-0.063107;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;12244822;51.525944;0.029288;"{""highway"":""traffic_signals""}" london;traffic_signals;12244823;51.522388;0.022572;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;12245451;51.583782;0.005939;"{""highway"":""traffic_signals""}" london;traffic_signals;12353264;51.498692;-0.105114;"{""highway"":""traffic_signals""}" london;traffic_signals;12442327;51.524956;-0.035078;"{""highway"":""traffic_signals""}" london;traffic_signals;12445461;51.660053;-0.058559;"{""highway"":""traffic_signals""}" london;traffic_signals;12630811;51.375744;-0.014620;"{""highway"":""traffic_signals""}" london;traffic_signals;12630814;51.367256;0.038944;"{""highway"":""traffic_signals""}" london;traffic_signals;12630912;51.396290;0.112269;"{""highway"":""traffic_signals""}" london;traffic_signals;12731581;51.533913;-0.022061;"{""highway"":""traffic_signals""}" london;traffic_signals;12816125;51.497505;-0.156001;"{""highway"":""traffic_signals""}" london;traffic_signals;12893532;51.566162;-0.135277;"{""highway"":""traffic_signals""}" london;traffic_signals;12893536;51.566387;-0.134084;"{""highway"":""traffic_signals""}" london;traffic_signals;13249075;51.529030;-0.126138;"{""highway"":""traffic_signals""}" london;traffic_signals;13250138;51.516579;-0.128976;"{""highway"":""traffic_signals""}" london;traffic_signals;13328975;51.630417;0.000970;"{""highway"":""traffic_signals""}" london;traffic_signals;13334818;51.636051;-0.012872;"{""highway"":""traffic_signals""}" london;traffic_signals;13334831;51.631611;-0.000988;"{""highway"":""traffic_signals""}" london;traffic_signals;13349588;51.512291;-0.160952;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13679956;51.532486;-0.032509;"{""highway"":""traffic_signals""}" london;traffic_signals;13783814;51.520107;-0.056396;"{""highway"":""traffic_signals""}" london;traffic_signals;13786441;51.529366;-0.013766;"{""highway"":""traffic_signals""}" london;traffic_signals;13799040;51.522209;-0.106216;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13802394;51.427246;-0.010890;"{""highway"":""traffic_signals""}" london;traffic_signals;13808009;51.410252;-0.025024;"{""highway"":""traffic_signals""}" london;traffic_signals;13808010;51.408802;-0.025126;"{""highway"":""traffic_signals""}" london;traffic_signals;13808018;51.407249;-0.020139;"{""highway"":""traffic_signals""}" london;traffic_signals;13808175;51.406258;0.001338;"{""highway"":""traffic_signals""}" london;traffic_signals;13808176;51.406246;0.002116;"{""highway"":""traffic_signals""}" london;traffic_signals;13808187;51.407333;0.011640;"{""highway"":""traffic_signals""}" london;traffic_signals;13808198;51.408707;0.010830;"{""highway"":""traffic_signals""}" london;traffic_signals;13808332;51.379734;-0.014604;"{""highway"":""traffic_signals""}" london;traffic_signals;13808395;51.388119;0.002673;"{""highway"":""traffic_signals""}" london;traffic_signals;13808402;51.391998;0.000159;"{""highway"":""traffic_signals""}" london;traffic_signals;13808576;51.398415;-0.047890;"{""highway"":""traffic_signals""}" london;traffic_signals;13808589;51.408585;-0.059543;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;13808609;51.399494;-0.074623;"{""highway"":""traffic_signals""}" london;traffic_signals;13808727;51.375126;-0.080872;"{""highway"":""traffic_signals""}" london;traffic_signals;13808728;51.375008;-0.081205;"{""highway"":""traffic_signals""}" london;traffic_signals;13820245;51.425838;-0.049117;"{""highway"":""traffic_signals""}" london;traffic_signals;13820250;51.426292;-0.052756;"{""highway"":""traffic_signals""}" london;traffic_signals;13820271;51.417439;-0.044266;"{""highway"":""traffic_signals""}" london;traffic_signals;13820278;51.415401;-0.048129;"{""highway"":""traffic_signals""}" london;traffic_signals;13820283;51.413876;-0.051631;"{""highway"":""traffic_signals""}" london;traffic_signals;13820337;51.411457;-0.066087;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;13820352;51.416328;-0.072744;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13820355;51.417522;-0.073733;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13823640;51.478836;-0.054810;"{""highway"":""traffic_signals""}" london;traffic_signals;13823646;51.472961;-0.052730;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;13823656;51.475399;-0.038405;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13823663;51.473019;-0.032685;"{""highway"":""traffic_signals""}" london;traffic_signals;13823678;51.464535;-0.014557;"{""highway"":""traffic_signals""}" london;traffic_signals;13823705;51.474251;-0.075046;"{""highway"":""traffic_signals""}" london;traffic_signals;13823722;51.477585;-0.070204;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13823725;51.479794;-0.067627;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13823726;51.478172;-0.068349;"{""highway"":""traffic_signals""}" london;traffic_signals;13824233;51.462742;-0.064752;"{""highway"":""traffic_signals""}" london;traffic_signals;13824237;51.449120;-0.074315;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13824259;51.464970;-0.084054;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13824261;51.467400;-0.091021;"{""highway"":""traffic_signals""}" london;traffic_signals;13824280;51.459656;-0.093992;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;13824311;51.453083;-0.087520;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;13824339;51.455547;-0.084009;"{""highway"":""traffic_signals""}" london;traffic_signals;13824353;51.443291;-0.067572;"{""highway"":""traffic_signals""}" london;traffic_signals;13824380;51.474148;-0.092922;"{""highway"":""traffic_signals""}" london;traffic_signals;13824388;51.465588;-0.102924;"{""highway"":""traffic_signals""}" london;traffic_signals;13854678;51.431553;0.021332;"{""highway"":""traffic_signals""}" london;traffic_signals;13884056;51.469372;-0.085703;"{""highway"":""traffic_signals""}" london;traffic_signals;13891003;51.428158;-0.034094;"{""highway"":""traffic_signals""}" london;traffic_signals;13922342;51.471100;0.055026;"{""highway"":""traffic_signals""}" london;traffic_signals;13922375;51.450802;0.052246;"{""highway"":""traffic_signals""}" london;traffic_signals;13964265;51.533077;0.054398;"{""name"":""East Ham"",""highway"":""traffic_signals""}" london;traffic_signals;13968558;51.530518;0.021315;"{""highway"":""traffic_signals""}" london;traffic_signals;13980239;51.592819;0.040893;"{""highway"":""traffic_signals""}" london;traffic_signals;13982976;51.590069;0.048767;"{""highway"":""traffic_signals""}" london;traffic_signals;14454837;51.497154;-0.204527;"{""highway"":""traffic_signals""}" london;traffic_signals;14454840;51.495037;-0.211435;"{""highway"":""traffic_signals""}" london;traffic_signals;14454843;51.494125;-0.214153;"{""highway"":""traffic_signals""}" london;traffic_signals;14454856;51.494038;-0.201931;"{""highway"":""traffic_signals""}" london;traffic_signals;14598607;51.408993;0.014309;"{""highway"":""traffic_signals""}" london;traffic_signals;14598701;51.406429;0.018713;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;14598740;51.462887;0.029363;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;14598750;51.462959;0.029829;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;14598783;51.453278;0.026342;"{""highway"":""traffic_signals""}" london;traffic_signals;14598918;51.401661;0.043599;"{""highway"":""traffic_signals""}" london;traffic_signals;14598965;51.398602;0.020164;"{""highway"":""traffic_signals""}" london;traffic_signals;14598966;51.408848;0.010744;"{""highway"":""traffic_signals""}" london;traffic_signals;14598968;51.408897;0.014274;"{""highway"":""traffic_signals""}" london;traffic_signals;14598981;51.399136;0.017237;"{""highway"":""traffic_signals""}" london;traffic_signals;14598985;51.398697;0.015739;"{""highway"":""traffic_signals""}" london;traffic_signals;14599670;51.395191;0.026113;"{""highway"":""traffic_signals""}" london;traffic_signals;14662807;51.476704;-0.192298;"{""highway"":""traffic_signals""}" london;traffic_signals;14672924;51.518551;-0.105331;"{""highway"":""traffic_signals""}" london;traffic_signals;14849356;51.358768;-0.212983;"{""name"":""St Dunstans"",""highway"":""traffic_signals""}" london;traffic_signals;14849404;51.358730;-0.213163;"{""highway"":""traffic_signals""}" london;traffic_signals;14954185;51.528347;-0.127873;"{""highway"":""traffic_signals""}" london;traffic_signals;14958919;51.527645;-0.129666;"{""highway"":""traffic_signals""}" london;traffic_signals;15096370;51.418427;-0.135020;"{""highway"":""traffic_signals""}" london;traffic_signals;15706719;51.502411;-0.008565;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;15850049;51.417931;-0.135876;"{""highway"":""traffic_signals""}" london;traffic_signals;15870724;51.396664;-0.028722;"{""highway"":""traffic_signals""}" london;traffic_signals;16172329;51.427395;-0.131086;"{""highway"":""traffic_signals""}" london;traffic_signals;16172335;51.425323;-0.139944;"{""highway"":""traffic_signals""}" london;traffic_signals;16242326;51.603218;-0.262662;"{""highway"":""traffic_signals""}" london;traffic_signals;16473185;51.446098;-0.328481;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;16490236;51.446156;-0.328561;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;16574808;51.445656;-0.400123;"{""highway"":""traffic_signals""}" london;traffic_signals;17168861;51.417580;-0.136499;"{""highway"":""traffic_signals""}" london;traffic_signals;17168894;51.432098;-0.129233;"{""highway"":""traffic_signals""}" london;traffic_signals;17180519;51.455139;-0.338779;"{""highway"":""traffic_signals""}" london;traffic_signals;17180522;51.455265;-0.338673;"{""highway"":""traffic_signals""}" london;traffic_signals;17180523;51.455048;-0.338531;"{""highway"":""traffic_signals""}" london;traffic_signals;17916443;51.492458;-0.262683;"{""highway"":""traffic_signals""}" london;traffic_signals;17921992;51.527485;-0.352310;"{""highway"":""traffic_signals""}" london;traffic_signals;17960592;51.598736;-0.392913;"{""highway"":""traffic_signals""}" london;traffic_signals;18008363;51.511211;-0.375562;"{""highway"":""traffic_signals""}" london;traffic_signals;18013273;51.526142;-0.205377;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;18055036;51.514992;-0.068658;"{""highway"":""traffic_signals""}" london;traffic_signals;18061280;51.547901;-0.075461;"{""crossing"":""traffic_signals""}" london;traffic_signals;18061283;51.551636;-0.065773;"{""highway"":""traffic_signals""}" london;traffic_signals;18061614;51.549465;-0.077674;"{""highway"":""traffic_signals""}" london;traffic_signals;18061627;51.543991;-0.069847;"{""highway"":""traffic_signals""}" london;traffic_signals;18064179;51.546215;-0.054130;"{""highway"":""traffic_signals""}" london;traffic_signals;18064186;51.546669;-0.052221;"{""highway"":""traffic_signals""}" london;traffic_signals;18064236;51.545235;-0.041675;"{""highway"":""traffic_signals""}" london;traffic_signals;18064279;51.546772;-0.047636;"{""highway"":""traffic_signals""}" london;traffic_signals;18064285;51.542065;-0.047402;"{""highway"":""traffic_signals""}" london;traffic_signals;18064384;51.546787;-0.047832;"{""highway"":""traffic_signals""}" london;traffic_signals;18064457;51.543587;-0.055306;"{""highway"":""traffic_signals""}" london;traffic_signals;18092188;51.590176;-0.017370;"{""highway"":""traffic_signals""}" london;traffic_signals;18126546;51.492691;-0.266782;"{""highway"":""traffic_signals""}" london;traffic_signals;18126962;51.499805;-0.210218;"{""highway"":""traffic_signals""}" london;traffic_signals;18127030;51.487061;-0.179099;"{""note"":""coming from east there\u0027s cycle route sign to right, but the signs on traffic signals forbid right turn. no exceptions."",""highway"":""traffic_signals""}" london;traffic_signals;18129852;51.487453;-0.168657;"{""highway"":""traffic_signals""}" london;traffic_signals;18129858;51.489582;-0.155816;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;18129860;51.492317;-0.157573;"{""highway"":""traffic_signals""}" london;traffic_signals;18129869;51.485821;-0.150062;"{""highway"":""traffic_signals""}" london;traffic_signals;18129871;51.492283;-0.158086;"{""highway"":""traffic_signals""}" london;traffic_signals;18129881;51.492512;-0.147800;"{""highway"":""traffic_signals""}" london;traffic_signals;18130216;51.492222;-0.139937;"{""highway"":""traffic_signals""}" london;traffic_signals;18130218;51.492809;-0.138126;"{""highway"":""traffic_signals""}" london;traffic_signals;18130232;51.488766;-0.134946;"{""highway"":""traffic_signals""}" london;traffic_signals;18183430;51.462193;-0.207477;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;18293426;51.464005;-0.215413;"{""highway"":""traffic_signals""}" london;traffic_signals;18393148;51.427616;-0.190802;"{""highway"":""traffic_signals""}" london;traffic_signals;18393178;51.442757;-0.188862;"{""highway"":""traffic_signals""}" london;traffic_signals;18393197;51.456718;-0.192700;"{""highway"":""traffic_signals""}" london;traffic_signals;18398287;51.516853;-0.085849;"{""highway"":""traffic_signals""}" london;traffic_signals;18406542;51.431545;0.031415;"{""highway"":""traffic_signals""}" london;traffic_signals;18485054;51.579990;-0.334041;"{""highway"":""traffic_signals""}" london;traffic_signals;18670880;51.522301;-0.107096;"{""highway"":""traffic_signals""}" london;traffic_signals;19091847;51.415905;-0.187212;"{""highway"":""traffic_signals""}" london;traffic_signals;19091860;51.419720;-0.083118;"{""highway"":""traffic_signals""}" london;traffic_signals;19091870;51.410194;-0.086943;"{""highway"":""traffic_signals""}" london;traffic_signals;19091883;51.404266;-0.081489;"{""highway"":""traffic_signals""}" london;traffic_signals;19106240;51.415607;-0.192448;"{""highway"":""traffic_signals""}" london;traffic_signals;19106294;51.441601;-0.124803;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;19107972;51.416855;-0.081425;"{""highway"":""traffic_signals""}" london;traffic_signals;19108834;51.371635;-0.096267;"{""highway"":""traffic_signals""}" london;traffic_signals;20349780;51.508808;-0.338015;"{""highway"":""traffic_signals""}" london;traffic_signals;20356113;51.427994;-0.167992;"{""highway"":""traffic_signals""}" london;traffic_signals;20460680;51.517536;-0.093721;"{""highway"":""traffic_signals""}" london;traffic_signals;20472185;51.421600;-0.002055;"{""highway"":""traffic_signals""}" london;traffic_signals;20626295;51.509789;-0.088294;"{""highway"":""traffic_signals""}" london;traffic_signals;20821081;51.510189;-0.187844;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;20821089;51.501736;-0.184031;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;20912165;51.453487;-0.220633;"{""highway"":""traffic_signals""}" london;traffic_signals;20921580;51.574902;-0.242785;"{""highway"":""traffic_signals""}" london;traffic_signals;20921581;51.575134;-0.241762;"{""highway"":""traffic_signals""}" london;traffic_signals;20947395;51.502876;-0.152256;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;20956810;51.544796;-0.272622;"{""highway"":""traffic_signals""}" london;traffic_signals;20956811;51.544884;-0.272473;"{""highway"":""traffic_signals""}" london;traffic_signals;20956815;51.544514;-0.272248;"{""highway"":""traffic_signals""}" london;traffic_signals;20956816;51.544598;-0.272092;"{""highway"":""traffic_signals""}" london;traffic_signals;20960809;51.474289;-0.206916;"{""highway"":""traffic_signals""}" london;traffic_signals;20960815;51.480480;-0.197506;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;20960820;51.480110;-0.194257;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;20960821;51.480236;-0.193067;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;20962512;51.480698;-0.199065;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;20963439;51.495182;-0.173448;"{""highway"":""traffic_signals""}" london;traffic_signals;20963758;51.526440;-0.193450;"{""highway"":""traffic_signals""}" london;traffic_signals;20965794;51.514957;-0.097411;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;20965798;51.515583;-0.098646;"{""highway"":""traffic_signals""}" london;traffic_signals;20965803;51.514568;-0.096872;"{""highway"":""traffic_signals""}" london;traffic_signals;21036395;51.494125;-0.146748;"{""highway"":""traffic_signals""}" london;traffic_signals;21042255;51.407856;-0.300480;"{""highway"":""traffic_signals""}" london;traffic_signals;21073809;51.461224;0.057737;"{""highway"":""traffic_signals""}" london;traffic_signals;21098180;51.527683;-0.197196;"{""highway"":""traffic_signals""}" london;traffic_signals;21099151;51.384193;-0.190514;"{""highway"":""traffic_signals""}" london;traffic_signals;21099153;51.384567;-0.189560;"{""highway"":""traffic_signals""}" london;traffic_signals;21099154;51.384010;-0.190122;"{""highway"":""traffic_signals""}" london;traffic_signals;21105391;51.484470;-0.175763;"{""highway"":""traffic_signals""}" london;traffic_signals;21155251;51.406071;-0.165629;"{""highway"":""traffic_signals""}" london;traffic_signals;21155270;51.412102;-0.178399;"{""highway"":""traffic_signals""}" london;traffic_signals;21269079;51.489326;-0.130804;"{""highway"":""traffic_signals""}" london;traffic_signals;21279528;51.435619;-0.159662;"{""highway"":""traffic_signals""}" london;traffic_signals;21297256;51.458748;-0.074941;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;21302259;51.464260;-0.176882;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;21302272;51.466625;-0.178161;"{""highway"":""traffic_signals""}" london;traffic_signals;21303311;51.466778;-0.178495;"{""highway"":""traffic_signals""}" london;traffic_signals;21315202;51.452789;-0.179128;"{""highway"":""traffic_signals""}" london;traffic_signals;21315499;51.421402;-0.207643;"{""highway"":""traffic_signals""}" london;traffic_signals;21315536;51.419250;-0.196454;"{""highway"":""traffic_signals""}" london;traffic_signals;21329835;51.457230;-0.194866;"{""highway"":""traffic_signals""}" london;traffic_signals;21381822;51.367668;-0.099038;"{""highway"":""traffic_signals""}" london;traffic_signals;21381825;51.367729;-0.115984;"{""highway"":""traffic_signals""}" london;traffic_signals;21381877;51.360336;-0.130214;"{""highway"":""traffic_signals""}" london;traffic_signals;21382610;51.359592;-0.137799;"{""highway"":""traffic_signals""}" london;traffic_signals;21389926;51.403728;-0.240137;"{""highway"":""traffic_signals""}" london;traffic_signals;21390002;51.416943;-0.179522;"{""highway"":""traffic_signals""}" london;traffic_signals;21390007;51.434296;-0.162127;"{""highway"":""traffic_signals""}" london;traffic_signals;21390083;51.422562;-0.105881;"{""highway"":""traffic_signals""}" london;traffic_signals;21390709;51.383121;-0.107497;"{""highway"":""traffic_signals""}" london;traffic_signals;21390710;51.380775;-0.112877;"{""highway"":""traffic_signals""}" london;traffic_signals;21391366;51.367222;-0.096297;"{""highway"":""traffic_signals""}" london;traffic_signals;21392087;51.504227;-0.114538;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;21392089;51.507069;-0.104343;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;21392116;51.510841;-0.113329;"{""crossing"":""traffic_signals""}" london;traffic_signals;21392287;51.519814;-0.105724;"{""highway"":""traffic_signals""}" london;traffic_signals;21408517;51.457073;-0.194214;"{""highway"":""traffic_signals""}" london;traffic_signals;21489351;51.583858;-0.331934;"{""highway"":""traffic_signals""}" london;traffic_signals;21494279;51.502831;-0.376358;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;21494282;51.500301;-0.376453;"{""highway"":""traffic_signals""}" london;traffic_signals;21504097;51.455391;-0.129292;"{""highway"":""traffic_signals""}" london;traffic_signals;21504436;51.470509;-0.107170;"{""highway"":""traffic_signals""}" london;traffic_signals;21508952;51.488544;-0.111204;"{""highway"":""traffic_signals""}" london;traffic_signals;21508976;51.387020;-0.096529;"{""highway"":""traffic_signals""}" london;traffic_signals;21511938;51.443848;-0.167986;"{""highway"":""traffic_signals""}" london;traffic_signals;21515927;51.397678;-0.172937;"{""highway"":""traffic_signals""}" london;traffic_signals;21515931;51.405430;-0.164068;"{""highway"":""traffic_signals""}" london;traffic_signals;21516133;51.485855;-0.108531;"{""highway"":""traffic_signals""}" london;traffic_signals;21516134;51.479160;-0.105410;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;21516141;51.478355;-0.085352;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;21516144;51.473728;-0.083315;"{""highway"":""traffic_signals""}" london;traffic_signals;21516712;51.433037;-0.117773;"{""highway"":""traffic_signals""}" london;traffic_signals;21551394;51.572323;-0.104685;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;21554368;51.517036;-0.125867;"{""highway"":""traffic_signals""}" london;traffic_signals;21568607;51.462341;-0.066684;"{""highway"":""traffic_signals""}" london;traffic_signals;21580540;51.454006;-0.062469;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;21580877;51.466854;-0.065879;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;21596859;51.405983;0.015417;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;21596937;51.402454;0.015521;"{""highway"":""traffic_signals""}" london;traffic_signals;21598782;51.582344;0.117508;"{""highway"":""traffic_signals""}" london;traffic_signals;21606846;51.598354;0.231868;"{""highway"":""traffic_signals""}" london;traffic_signals;21606848;51.598221;0.231978;"{""highway"":""traffic_signals""}" london;traffic_signals;21606857;51.602489;0.244674;"{""highway"":""traffic_signals""}" london;traffic_signals;21613762;51.586964;0.224167;"{""highway"":""traffic_signals""}" london;traffic_signals;21651906;51.511181;-0.149883;"{""highway"":""traffic_signals""}" london;traffic_signals;21651907;51.511597;-0.147805;"{""highway"":""traffic_signals""}" london;traffic_signals;21652813;51.542328;-0.343066;"{""highway"":""traffic_signals""}" london;traffic_signals;21662657;51.493122;-0.224350;"{""highway"":""traffic_signals""}" london;traffic_signals;21665587;51.516502;-0.129464;"{""highway"":""traffic_signals""}" london;traffic_signals;21665588;51.515690;-0.126650;"{""highway"":""traffic_signals""}" london;traffic_signals;21665589;51.515007;-0.129920;"{""highway"":""traffic_signals""}" london;traffic_signals;21725390;51.554283;-0.447834;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;21910801;51.582436;-0.099682;"{""highway"":""traffic_signals""}" london;traffic_signals;21990620;51.520874;-0.081597;"{""highway"":""traffic_signals""}" london;traffic_signals;22448096;51.367538;0.024965;"{""highway"":""traffic_signals""}" london;traffic_signals;23782147;51.385090;-0.295035;"{""highway"":""traffic_signals""}" london;traffic_signals;23821913;51.395241;-0.299044;"{""highway"":""traffic_signals""}" london;traffic_signals;23868366;51.413044;-0.280664;"{""highway"":""traffic_signals""}" london;traffic_signals;24828788;51.490978;-0.139492;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;24828805;51.490902;-0.139326;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;24923172;51.503685;-0.101429;"{""highway"":""traffic_signals""}" london;traffic_signals;24945396;51.553963;-0.404100;"{""highway"":""traffic_signals""}" london;traffic_signals;25077811;51.582989;-0.331691;"{""highway"":""traffic_signals""}" london;traffic_signals;25161373;51.510891;-0.093013;"{""highway"":""traffic_signals""}" london;traffic_signals;25161375;51.509888;-0.088252;"{""highway"":""traffic_signals""}" london;traffic_signals;25161376;51.510948;-0.086857;"{""highway"":""traffic_signals""}" london;traffic_signals;25161379;51.510746;-0.086733;"{""highway"":""traffic_signals""}" london;traffic_signals;25211433;51.510391;-0.305631;"{""highway"":""traffic_signals""}" london;traffic_signals;25229321;51.461987;-0.187735;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25229331;51.461872;-0.187644;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25229336;51.461773;-0.187537;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25229834;51.458832;-0.182660;"{""highway"":""traffic_signals""}" london;traffic_signals;25256254;51.512585;-0.155448;"{""highway"":""traffic_signals""}" london;traffic_signals;25256256;51.511414;-0.154907;"{""highway"":""traffic_signals""}" london;traffic_signals;25256375;51.509155;-0.153828;"{""highway"":""traffic_signals""}" london;traffic_signals;25256623;51.512653;-0.148319;"{""highway"":""traffic_signals""}" london;traffic_signals;25256840;51.512596;-0.143186;"{""highway"":""traffic_signals""}" london;traffic_signals;25257287;51.509022;-0.144205;"{""highway"":""traffic_signals""}" london;traffic_signals;25257765;51.506432;-0.143499;"{""highway"":""traffic_signals""}" london;traffic_signals;25258022;51.507816;-0.151002;"{""highway"":""traffic_signals""}" london;traffic_signals;25258083;51.509945;-0.156290;"{""highway"":""traffic_signals""}" london;traffic_signals;25265301;51.509514;-0.078182;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25265345;51.510002;-0.074991;"{""highway"":""traffic_signals""}" london;traffic_signals;25265349;51.509911;-0.074952;"{""highway"":""traffic_signals""}" london;traffic_signals;25280968;51.492035;-0.136492;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25291664;51.511997;-0.172288;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25291779;51.495625;-0.175074;"{""highway"":""traffic_signals""}" london;traffic_signals;25302960;51.466526;-0.169639;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25305337;51.494846;-0.129071;"{""highway"":""traffic_signals""}" london;traffic_signals;25305532;51.490162;-0.132645;"{""highway"":""traffic_signals""}" london;traffic_signals;25305567;51.488125;-0.138447;"{""highway"":""traffic_signals""}" london;traffic_signals;25375955;51.516495;-0.129507;"{""highway"":""traffic_signals""}" london;traffic_signals;25377946;51.504826;-0.126342;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25398261;51.467697;-0.329532;"{""highway"":""traffic_signals""}" london;traffic_signals;25421007;51.517452;-0.195833;"{""highway"":""traffic_signals""}" london;traffic_signals;25421035;51.513519;-0.203069;"{""highway"":""traffic_signals""}" london;traffic_signals;25422452;51.592876;-0.334895;"{""highway"":""traffic_signals""}" london;traffic_signals;25423758;51.473892;-0.065561;"{""highway"":""traffic_signals""}" london;traffic_signals;25423778;51.474125;-0.068702;"{""crossing"":""traffic_signals""}" london;traffic_signals;25423785;51.472008;-0.069718;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25446127;51.501041;-0.382737;"{""highway"":""traffic_signals""}" london;traffic_signals;25468979;51.505898;-0.100771;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;25470465;51.515717;-0.119090;"{""highway"":""traffic_signals""}" london;traffic_signals;25470679;51.517391;-0.121845;"{""highway"":""traffic_signals""}" london;traffic_signals;25471742;51.498592;-0.112430;"{""highway"":""traffic_signals""}" london;traffic_signals;25472373;51.502632;-0.116208;"{""highway"":""traffic_signals""}" london;traffic_signals;25472381;51.526752;-0.132158;"{""highway"":""traffic_signals""}" london;traffic_signals;25472975;51.492275;-0.101827;"{""highway"":""traffic_signals""}" london;traffic_signals;25473484;51.505630;-0.088753;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25473511;51.515034;-0.156567;"{""highway"":""traffic_signals""}" london;traffic_signals;25475331;51.514198;-0.107780;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25475770;51.513176;-0.077757;"{""highway"":""traffic_signals""}" london;traffic_signals;25475988;51.519142;-0.163022;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25477228;51.518196;-0.079791;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25477773;51.519920;-0.087449;"{""highway"":""traffic_signals""}" london;traffic_signals;25481320;51.504086;-0.210697;"{""highway"":""traffic_signals""}" london;traffic_signals;25481612;51.497982;-0.207750;"{""highway"":""traffic_signals""}" london;traffic_signals;25484527;51.478790;-0.086476;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25495406;51.522076;-0.145716;"{""highway"":""traffic_signals""}" london;traffic_signals;25495409;51.519775;-0.144725;"{""highway"":""traffic_signals""}" london;traffic_signals;25496592;51.517365;-0.142903;"{""highway"":""traffic_signals""}" london;traffic_signals;25497323;51.519718;-0.101550;"{""highway"":""traffic_signals""}" london;traffic_signals;25497340;51.518963;-0.100945;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25497440;51.516342;-0.154903;"{""highway"":""traffic_signals""}" london;traffic_signals;25499190;51.498322;-0.109546;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;25499270;51.496559;-0.099710;"{""highway"":""traffic_signals""}" london;traffic_signals;25499383;51.500839;-0.108374;"{""highway"":""traffic_signals""}" london;traffic_signals;25500807;51.518120;-0.155717;"{""highway"":""traffic_signals""}" london;traffic_signals;25500894;51.528721;-0.119572;"{""highway"":""traffic_signals""}" london;traffic_signals;25502371;51.535484;-0.133198;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25507024;51.504601;-0.123089;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;25508636;51.527176;-0.138629;"{""highway"":""traffic_signals""}" london;traffic_signals;25508642;51.528538;-0.140794;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25509425;51.492531;-0.228999;"{""highway"":""traffic_signals""}" london;traffic_signals;25522558;51.523468;-0.143916;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;25534085;51.497551;-0.125698;"{""highway"":""traffic_signals""}" london;traffic_signals;25572337;51.612904;-0.036972;"{""note"":""Part Time"",""highway"":""traffic_signals""}" london;traffic_signals;25572354;51.611565;-0.031533;"{""highway"":""traffic_signals""}" london;traffic_signals;25582945;51.561649;0.129819;"{""highway"":""traffic_signals""}" london;traffic_signals;25582946;51.561703;0.129982;"{""highway"":""traffic_signals""}" london;traffic_signals;25587015;51.614555;-0.064482;"{""highway"":""traffic_signals""}" london;traffic_signals;25588463;51.546604;-0.143897;"{""highway"":""traffic_signals""}" london;traffic_signals;25620980;51.508587;-0.069185;"{""highway"":""traffic_signals""}" london;traffic_signals;25632714;51.520035;-0.097403;"{""highway"":""traffic_signals""}" london;traffic_signals;25676450;51.497635;-0.452396;"{""highway"":""traffic_signals""}" london;traffic_signals;25676532;51.515373;-0.474617;"{""highway"":""traffic_signals""}" london;traffic_signals;25715966;51.587101;-0.101086;"{""highway"":""traffic_signals""}" london;traffic_signals;25716013;51.589508;-0.110704;"{""highway"":""traffic_signals""}" london;traffic_signals;25733541;51.554722;-0.256083;"{""highway"":""traffic_signals""}" london;traffic_signals;25744145;51.556671;-0.178547;"{""highway"":""traffic_signals""}" london;traffic_signals;25782908;51.435547;0.101924;"{""highway"":""traffic_signals""}" london;traffic_signals;25811337;51.432926;0.102723;"{""highway"":""traffic_signals""}" london;traffic_signals;25838820;51.426502;0.100924;"{""name"":""Sidcup Police Station"",""highway"":""traffic_signals""}" london;traffic_signals;25838935;51.450596;0.103116;"{""highway"":""traffic_signals""}" london;traffic_signals;25878219;51.607594;0.263231;"{""highway"":""traffic_signals""}" london;traffic_signals;25879183;51.437592;0.072182;"{""highway"":""traffic_signals""}" london;traffic_signals;25879186;51.434868;0.063721;"{""highway"":""traffic_signals""}" london;traffic_signals;25879232;51.450733;0.063452;"{""highway"":""traffic_signals""}" london;traffic_signals;25879238;51.450626;0.080635;"{""highway"":""traffic_signals""}" london;traffic_signals;25893657;51.566833;-0.107893;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25894030;51.591011;0.209991;"{""highway"":""traffic_signals""}" london;traffic_signals;25894059;51.586517;0.199670;"{""highway"":""traffic_signals""}" london;traffic_signals;25894462;51.565113;-0.103726;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;25895251;51.567650;0.144760;"{""highway"":""traffic_signals""}" london;traffic_signals;25896609;51.603031;0.246943;"{""highway"":""traffic_signals""}" london;traffic_signals;25904687;51.435036;0.063310;"{""highway"":""traffic_signals""}" london;traffic_signals;25916142;51.439114;0.050612;"{""highway"":""traffic_signals""}" london;traffic_signals;25954522;51.483376;-0.493552;"{""highway"":""traffic_signals""}" london;traffic_signals;25954527;51.483883;-0.493063;"{""highway"":""traffic_signals""}" london;traffic_signals;25992801;51.552887;-0.057772;"{""highway"":""traffic_signals""}" london;traffic_signals;26022712;51.473465;-0.086653;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;26022787;51.473949;-0.090576;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26027584;51.451138;0.078678;"{""highway"":""traffic_signals""}" london;traffic_signals;26027604;51.450687;0.062696;"{""highway"":""traffic_signals""}" london;traffic_signals;26064875;51.564091;-0.105694;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26070908;51.462574;0.107160;"{""highway"":""traffic_signals""}" london;traffic_signals;26118118;51.427567;0.054795;"{""highway"":""traffic_signals""}" london;traffic_signals;26118146;51.434776;0.063501;"{""highway"":""traffic_signals""}" london;traffic_signals;26198366;51.563084;-0.127545;"{""crossing"":""traffic_signals""}" london;traffic_signals;26200367;51.382378;0.107812;"{""highway"":""traffic_signals""}" london;traffic_signals;26242513;51.534374;-0.138427;"{""highway"":""traffic_signals""}" london;traffic_signals;26242765;51.533047;-0.137008;"{""highway"":""traffic_signals""}" london;traffic_signals;26373336;51.510574;-0.182813;"{""highway"":""traffic_signals""}" london;traffic_signals;26373364;51.515423;-0.188259;"{""highway"":""traffic_signals""}" london;traffic_signals;26373484;51.513783;-0.187768;"{""highway"":""traffic_signals""}" london;traffic_signals;26373938;51.506599;-0.207643;"{""highway"":""traffic_signals""}" london;traffic_signals;26388970;51.546318;-0.069776;"{""highway"":""traffic_signals""}" london;traffic_signals;26388972;51.546009;-0.069673;"{""highway"":""traffic_signals""}" london;traffic_signals;26389040;51.546345;-0.069553;"{""highway"":""traffic_signals""}" london;traffic_signals;26389140;51.492001;-0.178403;"{""highway"":""traffic_signals""}" london;traffic_signals;26389340;51.493484;-0.168991;"{""highway"":""traffic_signals""}" london;traffic_signals;26389823;51.502228;-0.158450;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26398737;51.477242;-0.123284;"{""highway"":""traffic_signals""}" london;traffic_signals;26399220;51.445213;-0.151281;"{""highway"":""traffic_signals""}" london;traffic_signals;26399224;51.438225;-0.156574;"{""highway"":""traffic_signals""}" london;traffic_signals;26406606;51.515652;-0.070651;"{""highway"":""traffic_signals""}" london;traffic_signals;26406624;51.510277;-0.072777;"{""highway"":""traffic_signals""}" london;traffic_signals;26439519;51.371780;0.109329;"{""highway"":""traffic_signals""}" london;traffic_signals;26441498;51.371571;0.109025;"{""highway"":""traffic_signals""}" london;traffic_signals;26441502;51.371284;0.109364;"{""highway"":""traffic_signals""}" london;traffic_signals;26463729;51.402130;-0.154330;"{""highway"":""traffic_signals""}" london;traffic_signals;26463940;51.401054;-0.168512;"{""highway"":""traffic_signals""}" london;traffic_signals;26463978;51.399731;-0.159738;"{""highway"":""traffic_signals""}" london;traffic_signals;26469062;51.371819;-0.110048;"{""highway"":""traffic_signals""}" london;traffic_signals;26545955;51.487736;-0.095479;"{""highway"":""traffic_signals""}" london;traffic_signals;26546278;51.488258;-0.106003;"{""highway"":""traffic_signals""}" london;traffic_signals;26546583;51.476780;-0.112376;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;26547424;51.558323;0.065238;"{""highway"":""traffic_signals""}" london;traffic_signals;26547425;51.557892;0.065474;"{""highway"":""traffic_signals""}" london;traffic_signals;26560759;51.478962;-0.094079;"{""highway"":""traffic_signals""}" london;traffic_signals;26561271;51.389931;-0.179242;"{""highway"":""traffic_signals""}" london;traffic_signals;26596761;51.512894;-0.225217;"{""highway"":""traffic_signals""}" london;traffic_signals;26603356;51.537975;-0.482329;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26615425;51.511700;-0.027064;"{""highway"":""traffic_signals""}" london;traffic_signals;26636502;51.606289;-0.068135;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26671717;51.507408;-0.128026;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;26671720;51.507511;-0.128239;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;26683004;51.529778;0.138956;"{""highway"":""traffic_signals""}" london;traffic_signals;26683005;51.531151;0.141267;"{""highway"":""traffic_signals""}" london;traffic_signals;26683014;51.531616;0.147744;"{""highway"":""traffic_signals""}" london;traffic_signals;26699559;51.515831;-0.125987;"{""highway"":""traffic_signals""}" london;traffic_signals;26699560;51.516285;-0.126345;"{""highway"":""traffic_signals""}" london;traffic_signals;26756601;51.441734;-0.187639;"{""highway"":""traffic_signals""}" london;traffic_signals;26776972;51.466175;-0.101594;"{""highway"":""traffic_signals""}" london;traffic_signals;26788036;51.489063;-0.193617;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26788832;51.489880;-0.195103;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26814978;51.531139;-0.104552;"{""highway"":""traffic_signals""}" london;traffic_signals;26814988;51.530712;-0.105842;"{""highway"":""traffic_signals""}" london;traffic_signals;26818662;51.515862;-0.175096;"{""note"":""Paddington service road \u0026 London Road on same signals"",""highway"":""traffic_signals""}" london;traffic_signals;26821852;51.480827;-0.023324;"{""highway"":""traffic_signals""}" london;traffic_signals;26823093;51.487888;-0.095550;"{""highway"":""traffic_signals""}" london;traffic_signals;26971017;51.547127;-0.480305;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;26973814;51.545254;-0.482361;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26973818;51.544022;-0.481368;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26973819;51.544014;-0.481577;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26973821;51.544144;-0.481363;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26973833;51.544827;-0.482668;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26973834;51.544765;-0.482535;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26974199;51.547142;-0.483327;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26974216;51.547153;-0.483222;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;26975000;51.549858;-0.483676;"{""highway"":""traffic_signals""}" london;traffic_signals;26975009;51.549911;-0.483556;"{""highway"":""traffic_signals""}" london;traffic_signals;26977637;51.549988;-0.483684;"{""highway"":""traffic_signals""}" london;traffic_signals;26977640;51.549927;-0.483768;"{""highway"":""traffic_signals""}" london;traffic_signals;27021878;51.389793;-0.188693;"{""highway"":""traffic_signals""}" london;traffic_signals;27120419;51.560287;-0.399843;"{""highway"":""traffic_signals""}" london;traffic_signals;27125486;51.484116;-0.184258;"{""highway"":""traffic_signals""}" london;traffic_signals;27125492;51.489334;-0.175590;"{""highway"":""traffic_signals""}" london;traffic_signals;27144237;51.573811;-0.413410;"{""highway"":""traffic_signals""}" london;traffic_signals;27150372;51.421589;-0.203168;"{""highway"":""traffic_signals""}" london;traffic_signals;27152183;51.418583;-0.203633;"{""highway"":""traffic_signals""}" london;traffic_signals;27182652;51.424500;-0.216131;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;27222596;51.443432;-0.152864;"{""highway"":""traffic_signals""}" london;traffic_signals;27227565;51.466625;-0.297300;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;27242779;51.439468;-0.163748;"{""highway"":""traffic_signals""}" london;traffic_signals;27248037;51.441463;-0.147301;"{""highway"":""traffic_signals""}" london;traffic_signals;27254676;51.439545;-0.163902;"{""highway"":""traffic_signals""}" london;traffic_signals;27254677;51.439381;-0.163743;"{""highway"":""traffic_signals""}" london;traffic_signals;27284994;51.418678;0.118045;"{""highway"":""traffic_signals""}" london;traffic_signals;27299373;51.541462;-0.258914;"{""highway"":""traffic_signals""}" london;traffic_signals;27408260;51.511574;-0.305673;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;27420463;51.582565;-0.316200;"{""highway"":""traffic_signals""}" london;traffic_signals;27459165;51.516117;-0.080184;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;27460478;51.513733;-0.076587;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;27462890;51.608814;0.021080;"{""highway"":""traffic_signals""}" london;traffic_signals;27462899;51.602943;0.034853;"{""highway"":""traffic_signals""}" london;traffic_signals;27481272;51.494736;-0.191122;"{""highway"":""traffic_signals""}" london;traffic_signals;27494410;51.483864;0.000848;"{""highway"":""traffic_signals""}" london;traffic_signals;27503588;51.512978;-0.162734;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;27510693;51.480301;-0.185716;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;27604123;51.584888;-0.019506;"{""highway"":""traffic_signals""}" london;traffic_signals;27604247;51.582813;-0.018299;"{""highway"":""traffic_signals""}" london;traffic_signals;27621346;51.582191;-0.027832;"{""highway"":""traffic_signals""}" london;traffic_signals;27621654;51.582893;-0.028003;"{""highway"":""traffic_signals""}" london;traffic_signals;27622248;51.580158;-0.018368;"{""highway"":""traffic_signals""}" london;traffic_signals;27668447;51.583298;-0.018564;"{""highway"":""traffic_signals""}" london;traffic_signals;27668452;51.583302;-0.018873;"{""highway"":""traffic_signals""}" london;traffic_signals;28419121;51.513741;-0.076046;"{""highway"":""traffic_signals""}" london;traffic_signals;28419328;51.516823;-0.081019;"{""highway"":""traffic_signals""}" london;traffic_signals;28782062;51.505711;-0.131296;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;28794075;51.600857;-0.017111;"{""highway"":""traffic_signals""}" london;traffic_signals;28794082;51.600452;-0.016278;"{""highway"":""traffic_signals""}" london;traffic_signals;28794715;51.591648;-0.004934;"{""highway"":""traffic_signals""}" london;traffic_signals;28800013;51.510632;-0.042068;"{""highway"":""traffic_signals""}" london;traffic_signals;29098907;51.531059;0.141406;"{""highway"":""traffic_signals""}" london;traffic_signals;29098924;51.556847;0.146732;"{""highway"":""traffic_signals""}" london;traffic_signals;29098927;51.530079;0.138679;"{""highway"":""traffic_signals""}" london;traffic_signals;29098928;51.529888;0.138434;"{""highway"":""traffic_signals""}" london;traffic_signals;29098930;51.530647;0.139636;"{""highway"":""traffic_signals""}" london;traffic_signals;29098934;51.529915;0.139023;"{""highway"":""traffic_signals""}" london;traffic_signals;29350100;51.490879;-0.206921;"{""highway"":""traffic_signals""}" london;traffic_signals;29400341;51.462944;-0.082183;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;29528585;51.514999;-0.226008;"{""highway"":""traffic_signals""}" london;traffic_signals;29541113;51.452206;-0.101483;"{""highway"":""traffic_signals""}" london;traffic_signals;29566034;51.461784;-0.077118;"{""highway"":""traffic_signals""}" london;traffic_signals;29566162;51.461693;-0.080181;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;29740919;51.533539;-0.128850;"{""highway"":""traffic_signals""}" london;traffic_signals;29764459;51.594162;0.010203;"{""highway"":""traffic_signals""}" london;traffic_signals;29835497;51.440098;-0.106233;"{""highway"":""traffic_signals""}" london;traffic_signals;29835498;51.445705;-0.105121;"{""highway"":""traffic_signals""}" london;traffic_signals;29835499;51.450882;-0.100723;"{""highway"":""traffic_signals""}" london;traffic_signals;29835500;51.452656;-0.101227;"{""highway"":""traffic_signals""}" london;traffic_signals;29901666;51.516865;-0.165662;"{""highway"":""traffic_signals""}" london;traffic_signals;30177934;51.494884;0.012113;"{""highway"":""traffic_signals""}" london;traffic_signals;30346433;51.556503;-0.398448;"{""highway"":""traffic_signals""}" london;traffic_signals;30492016;51.487530;-0.267205;"{""highway"":""traffic_signals""}" london;traffic_signals;30562638;51.594425;0.219392;"{""highway"":""traffic_signals""}" london;traffic_signals;30562731;51.594574;0.219229;"{""highway"":""traffic_signals""}" london;traffic_signals;30566099;51.464802;-0.300937;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;30566102;51.464920;-0.300748;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;30631685;51.443031;-0.132865;"{""highway"":""traffic_signals""}" london;traffic_signals;30636655;51.437939;-0.126946;"{""highway"":""traffic_signals""}" london;traffic_signals;30682023;51.437012;-0.127487;"{""highway"":""traffic_signals""}" london;traffic_signals;30731344;51.442780;-0.149641;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;30797240;51.575142;0.187312;"{""highway"":""traffic_signals""}" london;traffic_signals;30797241;51.575195;0.187501;"{""highway"":""traffic_signals""}" london;traffic_signals;30863432;51.454891;-0.311908;"{""highway"":""traffic_signals""}" london;traffic_signals;30865846;51.586914;0.223994;"{""highway"":""traffic_signals""}" london;traffic_signals;30872713;51.594517;0.219289;"{""highway"":""traffic_signals""}" london;traffic_signals;30914949;51.456402;-0.308626;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;30991467;51.557625;0.268429;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;31002220;51.466854;-0.365113;"{""highway"":""traffic_signals""}" london;traffic_signals;31002221;51.468769;-0.362288;"{""highway"":""traffic_signals""}" london;traffic_signals;31002222;51.467796;-0.361631;"{""highway"":""traffic_signals""}" london;traffic_signals;31002232;51.471439;-0.355380;"{""highway"":""traffic_signals""}" london;traffic_signals;31022253;51.503288;-0.191670;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;31046866;51.468479;-0.368919;"{""highway"":""traffic_signals""}" london;traffic_signals;31145991;51.530693;-0.077178;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;31257896;51.585171;-0.332266;"{""highway"":""traffic_signals""}" london;traffic_signals;31387839;51.576557;0.186918;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;31466577;51.471741;-0.236911;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;31502299;51.565521;0.176165;"{""highway"":""traffic_signals""}" london;traffic_signals;31503019;51.561085;0.148318;"{""highway"":""traffic_signals""}" london;traffic_signals;31503392;51.561302;0.148045;"{""highway"":""traffic_signals""}" london;traffic_signals;31503674;51.551582;0.160786;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;31504656;51.543884;0.166207;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;31508174;51.529007;0.189789;"{""highway"":""traffic_signals""}" london;traffic_signals;31624769;51.400597;-0.264991;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;31809733;51.595325;0.221623;"{""highway"":""traffic_signals""}" london;traffic_signals;31809761;51.595200;0.221709;"{""highway"":""traffic_signals""}" london;traffic_signals;31924500;51.436466;-0.104718;"{""highway"":""traffic_signals""}" london;traffic_signals;32168261;51.462940;-0.186184;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32168263;51.462971;-0.185936;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32168273;51.461353;-0.184628;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32168277;51.461380;-0.184462;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32440493;51.463264;0.187569;"{""highway"":""traffic_signals""}" london;traffic_signals;32440595;51.463512;0.186597;"{""highway"":""traffic_signals""}" london;traffic_signals;32445824;51.462456;0.107885;"{""highway"":""traffic_signals""}" london;traffic_signals;32532605;51.419975;-0.206099;"{""highway"":""traffic_signals""}" london;traffic_signals;32568970;51.415577;-0.191894;"{""highway"":""traffic_signals""}" london;traffic_signals;32569662;51.420612;-0.206324;"{""highway"":""traffic_signals""}" london;traffic_signals;32570627;51.412586;-0.192250;"{""highway"":""traffic_signals""}" london;traffic_signals;32584483;51.493351;-0.198418;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;32603681;51.450619;-0.085500;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32604149;51.446651;-0.095964;"{""highway"":""traffic_signals""}" london;traffic_signals;32635301;51.557217;0.069990;"{""highway"":""traffic_signals""}" london;traffic_signals;32635721;51.557411;0.069892;"{""highway"":""traffic_signals""}" london;traffic_signals;32636770;51.541935;0.004008;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;32636815;51.542465;0.003755;"{""highway"":""traffic_signals""}" london;traffic_signals;32636817;51.542000;0.003794;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;32636824;51.542114;0.004051;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;32650603;51.529552;-0.014384;"{""highway"":""traffic_signals""}" london;traffic_signals;32651014;51.529709;-0.013555;"{""highway"":""traffic_signals""}" london;traffic_signals;32651015;51.529484;-0.013767;"{""highway"":""traffic_signals""}" london;traffic_signals;32845449;51.421215;-0.077930;"{""highway"":""traffic_signals""}" london;traffic_signals;32894407;51.543633;0.004063;"{""highway"":""traffic_signals""}" london;traffic_signals;32895522;51.571060;0.015664;"{""highway"":""traffic_signals""}" london;traffic_signals;32897443;51.569729;0.023483;"{""highway"":""traffic_signals""}" london;traffic_signals;32907313;51.617023;-0.017540;"{""highway"":""traffic_signals""}" london;traffic_signals;32913244;51.607883;-0.016964;"{""highway"":""traffic_signals""}" london;traffic_signals;32925452;51.504570;-0.113206;"{""highway"":""traffic_signals""}" london;traffic_signals;32928688;51.452915;-0.101015;"{""highway"":""traffic_signals""}" london;traffic_signals;32975917;51.500469;-0.074377;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;32978305;51.463303;-0.114826;"{""highway"":""traffic_signals""}" london;traffic_signals;32979385;51.459492;-0.116768;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;33002257;51.441814;-0.084386;"{""highway"":""traffic_signals""}" london;traffic_signals;33043139;51.506847;-0.206735;"{""highway"":""traffic_signals""}" london;traffic_signals;33141178;51.513817;-0.111055;"{""highway"":""traffic_signals""}" london;traffic_signals;33148784;51.450264;-0.057467;"{""highway"":""traffic_signals""}" london;traffic_signals;33164941;51.456150;-0.144432;"{""highway"":""traffic_signals""}" london;traffic_signals;33213210;51.474567;-0.120060;"{""highway"":""traffic_signals""}" london;traffic_signals;33213216;51.477390;-0.117091;"{""highway"":""traffic_signals""}" london;traffic_signals;33213869;51.466290;-0.101365;"{""highway"":""traffic_signals""}" london;traffic_signals;33488930;51.440540;-0.058895;"{""highway"":""traffic_signals""}" london;traffic_signals;33657939;51.491909;-0.098070;"{""highway"":""traffic_signals""}" london;traffic_signals;33658241;51.464306;-0.060469;"{""highway"":""traffic_signals""}" london;traffic_signals;33717261;51.361012;-0.150260;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;33747188;51.487373;-0.315473;"{""highway"":""traffic_signals""}" london;traffic_signals;33767403;51.535732;-0.122314;"{""highway"":""traffic_signals""}" london;traffic_signals;33776298;51.453804;-0.113058;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;33778719;51.544426;-0.055270;"{""highway"":""traffic_signals""}" london;traffic_signals;34075684;51.514019;-0.301924;"{""highway"":""traffic_signals""}" london;traffic_signals;34168004;51.530521;-0.092488;"{""highway"":""traffic_signals""}" london;traffic_signals;34216966;51.501240;-0.078095;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;34555518;51.410767;-0.161412;"{""highway"":""traffic_signals""}" london;traffic_signals;34555520;51.410744;-0.161608;"{""highway"":""traffic_signals""}" london;traffic_signals;34555522;51.410919;-0.161542;"{""highway"":""traffic_signals""}" london;traffic_signals;34555523;51.410889;-0.161413;"{""highway"":""traffic_signals""}" london;traffic_signals;34555526;51.415260;-0.154034;"{""highway"":""traffic_signals""}" london;traffic_signals;34555527;51.420753;-0.145695;"{""highway"":""traffic_signals""}" london;traffic_signals;34555530;51.427742;-0.133478;"{""highway"":""traffic_signals""}" london;traffic_signals;34555603;51.434319;-0.128171;"{""highway"":""traffic_signals""}" london;traffic_signals;34555604;51.435448;-0.128046;"{""highway"":""traffic_signals""}" london;traffic_signals;34555605;51.440083;-0.125897;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;34595440;51.558468;-0.006926;"{""highway"":""traffic_signals""}" london;traffic_signals;34708773;51.523438;-0.147866;"{""highway"":""traffic_signals""}" london;traffic_signals;34708774;51.523911;-0.145171;"{""highway"":""traffic_signals""}" london;traffic_signals;34814727;51.491196;0.009048;"{""highway"":""traffic_signals""}" london;traffic_signals;34814732;51.491791;0.008804;"{""highway"":""traffic_signals""}" london;traffic_signals;34911610;51.406303;0.018581;"{""highway"":""traffic_signals""}" london;traffic_signals;34911614;51.403828;0.018640;"{""highway"":""traffic_signals""}" london;traffic_signals;34911623;51.402916;0.018828;"{""highway"":""traffic_signals""}" london;traffic_signals;34911629;51.398609;0.020343;"{""highway"":""traffic_signals""}" london;traffic_signals;34912142;51.407864;0.017107;"{""highway"":""traffic_signals""}" london;traffic_signals;35432953;51.407146;-0.229476;"{""highway"":""traffic_signals""}" london;traffic_signals;35432954;51.406994;-0.229450;"{""highway"":""traffic_signals""}" london;traffic_signals;35787401;51.443665;0.180804;"{""highway"":""traffic_signals""}" london;traffic_signals;35787520;51.451550;0.178624;"{""highway"":""traffic_signals""}" london;traffic_signals;35962679;51.457561;0.097574;"{""highway"":""traffic_signals""}" london;traffic_signals;36242350;51.463718;0.187172;"{""highway"":""traffic_signals""}" london;traffic_signals;36242389;51.463593;0.187783;"{""highway"":""traffic_signals""}" london;traffic_signals;36268497;51.465038;-0.084038;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;36473282;51.495792;0.002887;"{""highway"":""traffic_signals""}" london;traffic_signals;36491639;51.534042;-0.329974;"{""highway"":""traffic_signals""}" london;traffic_signals;36494522;51.482372;-0.312586;"{""highway"":""traffic_signals""}" london;traffic_signals;36565008;51.473358;-0.071115;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;36712006;51.430088;-0.174248;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;36867981;51.384010;-0.190323;"{""highway"":""traffic_signals""}" london;traffic_signals;36867983;51.384804;-0.189757;"{""highway"":""traffic_signals""}" london;traffic_signals;36867985;51.389778;-0.188571;"{""highway"":""traffic_signals""}" london;traffic_signals;38455886;51.605461;-0.085766;"{""highway"":""traffic_signals""}" london;traffic_signals;38455905;51.602913;-0.086792;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;38456575;51.603054;-0.087086;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;38456693;51.598022;-0.091975;"{""highway"":""traffic_signals""}" london;traffic_signals;38456750;51.602798;-0.087208;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;38456752;51.602959;-0.086952;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;38456968;51.601402;-0.091121;"{""highway"":""traffic_signals""}" london;traffic_signals;38457042;51.602787;-0.086880;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;38457368;51.601440;-0.091259;"{""highway"":""traffic_signals""}" london;traffic_signals;38458681;51.605503;-0.085970;"{""highway"":""traffic_signals""}" london;traffic_signals;38524566;51.508305;-0.274504;"{""highway"":""traffic_signals""}" london;traffic_signals;38881819;51.598106;-0.094894;"{""highway"":""traffic_signals""}" london;traffic_signals;38885627;51.586536;-0.095546;"{""highway"":""traffic_signals""}" london;traffic_signals;41315208;51.594795;-0.069203;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;41578999;51.518463;-0.062495;"{""highway"":""traffic_signals""}" london;traffic_signals;43663043;51.605595;-0.068174;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;46192508;51.403908;0.018818;"{""highway"":""traffic_signals""}" london;traffic_signals;49312205;51.649609;-0.193880;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;49335657;51.504173;-0.015637;"{""highway"":""traffic_signals""}" london;traffic_signals;49569872;51.548019;-0.047516;"{""highway"":""traffic_signals""}" london;traffic_signals;50116786;51.522865;-0.077685;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;50116804;51.522915;-0.077471;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;50918735;51.544968;-0.035631;"{""highway"":""traffic_signals""}" london;traffic_signals;50930574;51.544796;-0.031622;"{""highway"":""traffic_signals""}" london;traffic_signals;52711298;51.525749;-0.088045;"{""highway"":""traffic_signals""}" london;traffic_signals;52711315;51.525513;-0.087968;"{""highway"":""traffic_signals""}" london;traffic_signals;53847568;51.485687;-0.145530;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;54590266;51.412914;-0.192425;"{""highway"":""traffic_signals""}" london;traffic_signals;54597052;51.410069;-0.192460;"{""highway"":""traffic_signals""}" london;traffic_signals;54647274;51.414425;-0.178738;"{""highway"":""traffic_signals""}" london;traffic_signals;54652429;51.416489;-0.178317;"{""highway"":""traffic_signals""}" london;traffic_signals;55115508;51.491455;-0.221992;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;55120123;51.491245;-0.228475;"{""highway"":""traffic_signals""}" london;traffic_signals;55120426;51.492302;-0.224794;"{""highway"":""traffic_signals""}" london;traffic_signals;55123491;51.491364;-0.222214;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;55414715;51.411339;-0.192534;"{""highway"":""traffic_signals""}" london;traffic_signals;55419178;51.411339;-0.192409;"{""highway"":""traffic_signals""}" london;traffic_signals;55435356;51.413853;-0.184009;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;56472509;51.537338;-0.154561;"{""highway"":""traffic_signals""}" london;traffic_signals;57659731;51.492180;-0.193013;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;57786953;51.517475;-0.080468;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;59605961;51.450809;0.179732;"{""highway"":""traffic_signals""}" london;traffic_signals;59656792;51.510345;0.001614;"{""highway"":""traffic_signals""}" london;traffic_signals;59838731;51.371994;0.109325;"{""highway"":""traffic_signals""}" london;traffic_signals;59851487;51.542297;0.006870;"{""highway"":""traffic_signals""}" london;traffic_signals;60086902;51.366058;-0.158666;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;60306355;51.375084;-0.081017;"{""highway"":""traffic_signals""}" london;traffic_signals;60433202;51.474148;-0.093163;"{""highway"":""traffic_signals""}" london;traffic_signals;60433203;51.474033;-0.092914;"{""highway"":""traffic_signals""}" london;traffic_signals;60433205;51.474045;-0.093174;"{""highway"":""traffic_signals""}" london;traffic_signals;60434026;51.472061;-0.093054;"{""highway"":""traffic_signals""}" london;traffic_signals;60660951;51.375145;-0.091847;"{""highway"":""traffic_signals""}" london;traffic_signals;61097509;51.509731;-0.074563;"{""highway"":""traffic_signals""}" london;traffic_signals;61098290;51.506229;-0.088452;"{""highway"":""traffic_signals""}" london;traffic_signals;61101788;51.538055;-0.025581;"{""highway"":""traffic_signals""}" london;traffic_signals;61102693;51.524414;0.030141;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;61102710;51.525215;0.023974;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;61765626;51.517296;-0.088706;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;61766015;51.516102;-0.081640;"{""highway"":""traffic_signals""}" london;traffic_signals;61766058;51.516342;-0.083583;"{""highway"":""traffic_signals""}" london;traffic_signals;61877295;51.588181;-0.061108;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;62574775;51.504543;-0.083353;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;71014265;51.521374;-0.263602;"{""highway"":""traffic_signals""}" london;traffic_signals;71014266;51.521488;-0.263516;"{""highway"":""traffic_signals""}" london;traffic_signals;71193591;51.526207;-0.419299;"{""highway"":""traffic_signals""}" london;traffic_signals;76484935;51.484489;-0.110020;"{""highway"":""traffic_signals""}" london;traffic_signals;78598326;51.503849;-0.136190;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;81587624;51.395409;0.025757;"{""highway"":""traffic_signals""}" london;traffic_signals;81599359;51.401558;0.044628;"{""highway"":""traffic_signals""}" london;traffic_signals;82618402;51.309216;-0.080945;"{""highway"":""traffic_signals""}" london;traffic_signals;82627361;51.363224;-0.191581;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;83137896;51.589401;-0.196682;"{""highway"":""traffic_signals""}" london;traffic_signals;83618274;51.454845;0.051311;"{""highway"":""traffic_signals""}" london;traffic_signals;83628051;51.457001;0.042146;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;83790262;51.526176;-0.273790;"{""highway"":""traffic_signals""}" london;traffic_signals;83791215;51.526367;-0.274246;"{""highway"":""traffic_signals""}" london;traffic_signals;84870240;51.356369;-0.033927;"{""highway"":""traffic_signals""}" london;traffic_signals;86108362;51.472260;-0.031415;"{""highway"":""traffic_signals""}" london;traffic_signals;86108456;51.535152;-0.274998;"{""highway"":""traffic_signals""}" london;traffic_signals;87293080;51.553253;-0.286274;"{""highway"":""traffic_signals""}" london;traffic_signals;87293081;51.553616;-0.286719;"{""highway"":""traffic_signals""}" london;traffic_signals;87293130;51.553371;-0.287223;"{""highway"":""traffic_signals""}" london;traffic_signals;88785499;51.483528;-0.000276;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;88793668;51.486450;0.017018;"{""highway"":""traffic_signals""}" london;traffic_signals;88833224;51.489105;0.017596;"{""highway"":""traffic_signals""}" london;traffic_signals;88833225;51.488297;0.017459;"{""highway"":""traffic_signals""}" london;traffic_signals;89399741;51.534039;-0.260755;"{""highway"":""traffic_signals""}" london;traffic_signals;89481798;51.363785;-0.098516;"{""highway"":""traffic_signals""}" london;traffic_signals;89482984;51.362263;-0.098193;"{""highway"":""traffic_signals""}" london;traffic_signals;90096043;51.487259;0.017209;"{""highway"":""traffic_signals""}" london;traffic_signals;90099744;51.489128;0.017424;"{""highway"":""traffic_signals""}" london;traffic_signals;90108062;51.487839;0.031156;"{""highway"":""traffic_signals""}" london;traffic_signals;90223146;51.473469;-0.086736;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;90268298;51.480888;-0.094369;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;91207202;51.411980;-0.296374;"{""highway"":""traffic_signals""}" london;traffic_signals;91256030;51.417175;-0.282110;"{""highway"":""traffic_signals""}" london;traffic_signals;91549551;51.409557;-0.302964;"{""highway"":""traffic_signals""}" london;traffic_signals;91590193;51.492893;0.053215;"{""highway"":""traffic_signals""}" london;traffic_signals;91698289;51.494915;-0.387414;"{""highway"":""traffic_signals""}" london;traffic_signals;91698293;51.494808;-0.387508;"{""highway"":""traffic_signals""}" london;traffic_signals;91791107;51.491001;0.082499;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;91791882;51.490047;0.085109;"{""highway"":""traffic_signals""}" london;traffic_signals;91791909;51.490788;0.082710;"{""highway"":""traffic_signals""}" london;traffic_signals;91793307;51.492485;0.085909;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;92758800;51.551037;-0.004125;"{""highway"":""traffic_signals""}" london;traffic_signals;94235627;51.507206;-0.205384;"{""highway"":""traffic_signals""}" london;traffic_signals;94912249;51.498623;0.104971;"{""highway"":""traffic_signals""}" london;traffic_signals;94954984;51.311172;0.035124;"{""highway"":""traffic_signals""}" london;traffic_signals;95985124;51.518417;-0.034756;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;96044367;51.570637;0.011981;"{""highway"":""traffic_signals""}" london;traffic_signals;96067898;51.551369;-0.020938;"{""highway"":""traffic_signals""}" london;traffic_signals;96620001;51.498089;-0.109184;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;96620008;51.498169;-0.109594;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;96784082;51.350567;-0.023702;"{""highway"":""traffic_signals""}" london;traffic_signals;101330838;51.493027;-0.073991;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;101335548;51.485706;-0.054072;"{""highway"":""traffic_signals""}" london;traffic_signals;102705510;51.500134;-0.078616;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;102705860;51.500626;-0.074322;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;102714594;51.491375;-0.103015;"{""highway"":""traffic_signals""}" london;traffic_signals;102731774;51.473743;-0.082991;"{""highway"":""traffic_signals""}" london;traffic_signals;102981193;51.292919;-0.101922;"{""highway"":""traffic_signals""}" london;traffic_signals;104060778;51.320019;-0.140766;"{""highway"":""traffic_signals""}" london;traffic_signals;104276183;51.484997;-0.068897;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;104667414;51.520306;0.058826;"{""highway"":""traffic_signals""}" london;traffic_signals;105528111;51.364803;-0.099029;"{""highway"":""traffic_signals""}" london;traffic_signals;105545832;51.396671;-0.081761;"{""highway"":""traffic_signals""}" london;traffic_signals;105662656;51.477432;-0.080936;"{""highway"":""traffic_signals""}" london;traffic_signals;105666832;51.478851;-0.086614;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;105916872;51.476269;-0.093819;"{""highway"":""traffic_signals""}" london;traffic_signals;105952454;51.487007;-0.111380;"{""highway"":""traffic_signals""}" london;traffic_signals;106226349;51.618065;-0.307918;"{""highway"":""traffic_signals""}" london;traffic_signals;108035634;51.484413;-0.126148;"{""highway"":""traffic_signals""}" london;traffic_signals;110102905;51.473339;-0.122299;"{""highway"":""traffic_signals""}" london;traffic_signals;110295727;51.477676;-0.106792;"{""highway"":""traffic_signals""}" london;traffic_signals;111928517;51.472900;-0.107549;"{""highway"":""traffic_signals""}" london;traffic_signals;116071674;51.541943;0.026184;"{""highway"":""traffic_signals""}" london;traffic_signals;116107778;51.517986;0.013494;"{""highway"":""traffic_signals""}" london;traffic_signals;116110918;51.531033;0.019291;"{""highway"":""traffic_signals""}" london;traffic_signals;116114716;51.515976;0.007312;"{""highway"":""traffic_signals""}" london;traffic_signals;116115788;51.541080;0.002087;"{""highway"":""traffic_signals""}" london;traffic_signals;116117394;51.542786;0.009206;"{""highway"":""traffic_signals""}" london;traffic_signals;116119860;51.536873;0.022056;"{""highway"":""traffic_signals""}" london;traffic_signals;117875557;51.532688;0.052111;"{""highway"":""traffic_signals""}" london;traffic_signals;117881570;51.538410;0.051333;"{""highway"":""traffic_signals""}" london;traffic_signals;119593573;51.433643;-0.103631;"{""highway"":""traffic_signals""}" london;traffic_signals;122671181;51.490795;-0.206874;"{""highway"":""traffic_signals""}" london;traffic_signals;126034296;51.467197;-0.420308;"{""highway"":""traffic_signals""}" london;traffic_signals;126034311;51.465950;-0.420110;"{""highway"":""traffic_signals""}" london;traffic_signals;126484525;51.430611;-0.139858;"{""highway"":""traffic_signals""}" london;traffic_signals;126549484;51.531937;0.047765;"{""highway"":""traffic_signals""}" london;traffic_signals;126578991;51.520733;0.004469;"{""highway"":""traffic_signals""}" london;traffic_signals;126629130;51.515053;0.008321;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;126629133;51.515202;0.008089;"{""highway"":""traffic_signals""}" london;traffic_signals;126630932;51.515522;0.007298;"{""highway"":""traffic_signals""}" london;traffic_signals;128550019;51.318550;-0.139167;"{""highway"":""traffic_signals""}" london;traffic_signals;128644019;51.377937;-0.102593;"{""highway"":""traffic_signals""}" london;traffic_signals;128651044;51.379681;-0.100260;"{""highway"":""traffic_signals""}" london;traffic_signals;128661574;51.379501;-0.100016;"{""highway"":""traffic_signals""}" london;traffic_signals;128661578;51.378422;-0.099838;"{""highway"":""traffic_signals""}" london;traffic_signals;128685386;51.374516;-0.093929;"{""highway"":""traffic_signals""}" london;traffic_signals;129977209;51.607426;0.020060;"{""highway"":""traffic_signals""}" london;traffic_signals;129980062;51.607761;0.035917;"{""highway"":""traffic_signals""}" london;traffic_signals;129992921;51.532936;0.005743;"{""highway"":""traffic_signals""}" london;traffic_signals;129993132;51.533443;-0.007736;"{""highway"":""traffic_signals""}" london;traffic_signals;130281268;51.384399;-0.108989;"{""highway"":""traffic_signals""}" london;traffic_signals;132016737;51.381866;-0.094132;"{""crossing"":""unknown"",""highway"":""traffic_signals""}" london;traffic_signals;132078429;51.420734;-0.175683;"{""crossing"":""traffic_signals""}" london;traffic_signals;132302085;51.510857;-0.068518;"{""highway"":""traffic_signals""}" london;traffic_signals;135495747;51.526131;0.073545;"{""highway"":""traffic_signals""}" london;traffic_signals;135499386;51.524200;0.072727;"{""highway"":""traffic_signals""}" london;traffic_signals;135544495;51.509926;0.026212;"{""highway"":""traffic_signals""}" london;traffic_signals;135565728;51.501465;0.070815;"{""highway"":""traffic_signals""}" london;traffic_signals;135764459;51.506451;-0.152225;"{""highway"":""traffic_signals""}" london;traffic_signals;135764648;51.506409;-0.152154;"{""highway"":""traffic_signals""}" london;traffic_signals;135772063;51.502514;-0.152201;"{""highway"":""traffic_signals""}" london;traffic_signals;135773173;51.502831;-0.152470;"{""highway"":""traffic_signals""}" london;traffic_signals;139717254;51.385143;-0.295000;"{""highway"":""traffic_signals""}" london;traffic_signals;139743245;51.385345;-0.295688;"{""highway"":""traffic_signals""}" london;traffic_signals;139960447;51.411324;-0.048158;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;140390308;51.407688;-0.025527;"{""highway"":""traffic_signals""}" london;traffic_signals;147027794;51.572186;-0.422545;"{""highway"":""traffic_signals""}" london;traffic_signals;149274755;51.399830;-0.085726;"{""highway"":""traffic_signals""}" london;traffic_signals;150895569;51.373928;-0.106530;"{""highway"":""traffic_signals""}" london;traffic_signals;156621578;51.540356;-0.124996;"{""highway"":""traffic_signals""}" london;traffic_signals;166585128;51.482807;-0.309437;"{""highway"":""traffic_signals""}" london;traffic_signals;177690757;51.551144;0.147466;"{""highway"":""traffic_signals""}" london;traffic_signals;180494869;51.543037;0.147874;"{""highway"":""traffic_signals""}" london;traffic_signals;180506090;51.551144;0.147465;"{""highway"":""traffic_signals""}" london;traffic_signals;180577865;51.529713;0.138686;"{""highway"":""traffic_signals""}" london;traffic_signals;180584879;51.531136;0.143990;"{""highway"":""traffic_signals""}" london;traffic_signals;180584880;51.531300;0.143984;"{""highway"":""traffic_signals""}" london;traffic_signals;182204557;51.515633;-0.221660;"{""highway"":""traffic_signals""}" london;traffic_signals;182207843;51.515697;-0.221832;"{""highway"":""traffic_signals""}" london;traffic_signals;182209173;51.514885;-0.221124;"{""highway"":""traffic_signals""}" london;traffic_signals;182209717;51.514977;-0.221035;"{""highway"":""traffic_signals""}" london;traffic_signals;183175932;51.511520;0.011603;"{""highway"":""traffic_signals""}" london;traffic_signals;183214592;51.505150;-0.007113;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;183249039;51.507946;0.014512;"{""highway"":""traffic_signals""}" london;traffic_signals;184038330;51.407906;0.016793;"{""highway"":""traffic_signals""}" london;traffic_signals;186242050;51.562973;-0.107904;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;194007508;51.392395;-0.187880;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;194007513;51.392410;-0.187988;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;195919213;51.362732;-0.131746;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;196209191;51.357834;-0.147533;"{""highway"":""traffic_signals""}" london;traffic_signals;197736430;51.411362;-0.307419;"{""highway"":""traffic_signals""}" london;traffic_signals;206151002;51.307201;-0.146392;"{""highway"":""traffic_signals""}" london;traffic_signals;213434815;51.453312;-0.430036;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;213751599;51.594204;-0.185569;"{""highway"":""traffic_signals""}" london;traffic_signals;217907948;51.428555;-0.187725;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;223425485;51.466152;-0.374026;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;223425493;51.464558;-0.381310;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;223425499;51.464001;-0.383935;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;240612993;51.453457;-0.376159;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;240745228;51.401447;-0.256071;"{""highway"":""traffic_signals""}" london;traffic_signals;241162418;51.445538;-0.399870;"{""highway"":""traffic_signals""}" london;traffic_signals;241495281;51.382019;-0.284268;"{""highway"":""traffic_signals""}" london;traffic_signals;241768846;51.411209;-0.291154;"{""highway"":""traffic_signals""}" london;traffic_signals;242401771;51.533413;-0.128722;"{""highway"":""traffic_signals""}" london;traffic_signals;242414617;51.519581;-0.188704;"{""highway"":""traffic_signals""}" london;traffic_signals;242538450;51.445187;-0.399017;"{""highway"":""traffic_signals""}" london;traffic_signals;242553053;51.588161;-0.063456;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;242553070;51.588394;-0.062965;"{""note"":""Tagged as a toucan for simplicity"",""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;242735393;51.616329;-0.244191;"{""highway"":""traffic_signals""}" london;traffic_signals;242928623;51.530045;-0.014487;"{""highway"":""traffic_signals""}" london;traffic_signals;243462780;51.492439;-0.260860;"{""highway"":""traffic_signals""}" london;traffic_signals;243707553;51.481518;-0.010048;"{""highway"":""traffic_signals""}" london;traffic_signals;243866833;51.543419;-0.174734;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;243866834;51.543346;-0.174913;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;243917970;51.456940;0.041962;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;244003174;51.382069;-0.284194;"{""highway"":""traffic_signals""}" london;traffic_signals;244003377;51.382549;-0.285811;"{""highway"":""traffic_signals""}" london;traffic_signals;244003378;51.382477;-0.285862;"{""highway"":""traffic_signals""}" london;traffic_signals;244491280;51.510525;-0.042180;"{""highway"":""traffic_signals""}" london;traffic_signals;244491281;51.510532;-0.042125;"{""highway"":""traffic_signals""}" london;traffic_signals;245003298;51.451641;-0.437238;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;245008856;51.641628;-0.181093;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;245215800;51.462811;-0.185991;"{""highway"":""traffic_signals""}" london;traffic_signals;245216871;51.462051;-0.186179;"{""highway"":""traffic_signals""}" london;traffic_signals;245216872;51.462715;-0.184765;"{""highway"":""traffic_signals""}" london;traffic_signals;245216873;51.461876;-0.184936;"{""highway"":""traffic_signals""}" london;traffic_signals;245721768;51.378757;-0.095426;"{""highway"":""traffic_signals""}" london;traffic_signals;245733443;51.373516;-0.102019;"{""highway"":""traffic_signals""}" london;traffic_signals;245801643;51.514214;0.060717;"{""highway"":""traffic_signals""}" london;traffic_signals;245802546;51.494648;-0.141462;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;245802550;51.494858;-0.141669;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;246241154;51.608929;0.263558;"{""highway"":""traffic_signals""}" london;traffic_signals;247043049;51.421871;-0.203045;"{""highway"":""traffic_signals""}" london;traffic_signals;247052518;51.482929;-0.074057;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;247324855;51.587418;-0.133664;"{""highway"":""traffic_signals""}" london;traffic_signals;247957485;51.505260;-0.084762;"{""highway"":""traffic_signals""}" london;traffic_signals;248042627;51.345661;-0.114242;"{""highway"":""traffic_signals""}" london;traffic_signals;248081400;51.447674;-0.326639;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;248216425;51.432774;-0.153509;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;248217930;51.432121;-0.151003;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;248858447;51.574226;0.017579;"{""highway"":""traffic_signals""}" london;traffic_signals;248948331;51.517857;-0.009803;"{""highway"":""traffic_signals""}" london;traffic_signals;248950612;51.608501;0.020854;"{""highway"":""traffic_signals""}" london;traffic_signals;249094495;51.527596;-0.384231;"{""note"":""FIXME unlikely"",""highway"":""traffic_signals""}" london;traffic_signals;249235142;51.649712;-0.060012;"{""highway"":""traffic_signals""}" london;traffic_signals;249401340;51.507477;-0.355036;"{""highway"":""traffic_signals""}" london;traffic_signals;249470444;51.519085;-0.079327;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;249573654;51.491402;-0.265712;"{""highway"":""traffic_signals""}" london;traffic_signals;249590275;51.381935;0.107984;"{""highway"":""traffic_signals""}" london;traffic_signals;249675191;51.614815;-0.064433;"{""highway"":""traffic_signals""}" london;traffic_signals;249783322;51.375706;-0.277163;"{""highway"":""traffic_signals""}" london;traffic_signals;249799319;51.509701;-0.319092;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;249855895;51.480621;-0.428904;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;250321957;51.611732;-0.031310;"{""highway"":""traffic_signals""}" london;traffic_signals;250355023;51.557514;-0.469680;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;250601112;51.622433;-0.254503;"{""highway"":""traffic_signals""}" london;traffic_signals;250672832;51.544682;-0.031036;"{""highway"":""traffic_signals""}" london;traffic_signals;250802385;51.522644;-0.262058;"{""highway"":""traffic_signals""}" london;traffic_signals;250802474;51.519596;-0.262369;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;250802476;51.519436;-0.262163;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;250854204;51.374523;-0.118750;"{""highway"":""traffic_signals""}" london;traffic_signals;251019268;51.522930;-0.447170;"{""highway"":""traffic_signals""}" london;traffic_signals;251022424;51.522896;-0.447879;"{""highway"":""traffic_signals""}" london;traffic_signals;251605574;51.615768;-0.109591;"{""highway"":""traffic_signals""}" london;traffic_signals;251609704;51.616203;-0.083030;"{""highway"":""traffic_signals""}" london;traffic_signals;251885652;51.614632;-0.068256;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;251910125;51.656212;-0.029576;"{""highway"":""traffic_signals""}" london;traffic_signals;252120822;51.406559;-0.303878;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;252331387;51.575123;0.044572;"{""highway"":""traffic_signals""}" london;traffic_signals;252694405;51.505039;-0.224603;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;252694468;51.505054;-0.224711;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;252694469;51.505066;-0.224848;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;252937298;51.534306;-0.105002;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;253017417;51.410355;-0.300508;"{""highway"":""traffic_signals""}" london;traffic_signals;253181347;51.447365;-0.409014;"{""highway"":""traffic_signals""}" london;traffic_signals;253234773;51.446518;-0.409800;"{""highway"":""traffic_signals""}" london;traffic_signals;253234774;51.446644;-0.409584;"{""highway"":""traffic_signals""}" london;traffic_signals;253257338;51.481457;-0.450146;"{""highway"":""traffic_signals""}" london;traffic_signals;253258115;51.479519;-0.450050;"{""highway"":""traffic_signals""}" london;traffic_signals;253395117;51.443321;-0.411938;"{""highway"":""traffic_signals""}" london;traffic_signals;253822013;51.489376;-0.464550;"{""highway"":""traffic_signals""}" london;traffic_signals;253932242;51.524281;0.072912;"{""highway"":""traffic_signals""}" london;traffic_signals;253936588;51.502277;0.031366;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;253936589;51.502369;0.031538;"{""highway"":""traffic_signals""}" london;traffic_signals;253938317;51.508186;0.017161;"{""highway"":""traffic_signals""}" london;traffic_signals;253939433;51.510391;0.001258;"{""highway"":""traffic_signals""}" london;traffic_signals;253939847;51.510487;0.001738;"{""highway"":""traffic_signals""}" london;traffic_signals;253942608;51.506622;-0.007666;"{""highway"":""traffic_signals""}" london;traffic_signals;254012014;51.531796;0.147896;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254012409;51.531437;0.148723;"{""highway"":""traffic_signals""}" london;traffic_signals;254581841;51.538250;-0.486629;"{""highway"":""traffic_signals""}" london;traffic_signals;254590925;51.599789;-0.173135;"{""highway"":""traffic_signals""}" london;traffic_signals;254752235;51.504215;-0.216236;"{""highway"":""traffic_signals""}" london;traffic_signals;254752241;51.505238;-0.217220;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254936592;51.450970;-0.142205;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254936593;51.451115;-0.142057;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254936594;51.451054;-0.142168;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254937037;51.451038;-0.142302;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;254956189;51.444550;-0.410849;"{""highway"":""traffic_signals""}" london;traffic_signals;255463197;51.557713;-0.396100;"{""highway"":""traffic_signals""}" london;traffic_signals;255463429;51.559952;-0.399350;"{""highway"":""traffic_signals""}" london;traffic_signals;255469012;51.508945;-0.197317;"{""highway"":""traffic_signals""}" london;traffic_signals;255682625;51.511082;-0.157157;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256242482;51.575226;0.044529;"{""highway"":""traffic_signals""}" london;traffic_signals;256252069;51.600697;-0.015809;"{""highway"":""traffic_signals""}" london;traffic_signals;256255053;51.601353;-0.016689;"{""highway"":""traffic_signals""}" london;traffic_signals;256620237;51.489899;-0.308883;"{""highway"":""traffic_signals""}" london;traffic_signals;256794573;51.507057;-0.127581;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794574;51.507080;-0.127444;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794580;51.507099;-0.128097;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794581;51.507053;-0.127994;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794582;51.507389;-0.128259;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794584;51.507282;-0.127170;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794585;51.507378;-0.127055;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794588;51.507626;-0.127412;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;256794594;51.507545;-0.127169;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;257065026;51.683887;-0.048564;"{""highway"":""traffic_signals""}" london;traffic_signals;257897965;51.642944;-0.254490;"{""highway"":""traffic_signals""}" london;traffic_signals;258870727;51.399330;-0.197335;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;258885007;51.401711;-0.197356;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;258886621;51.385075;-0.189991;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;258886624;51.384884;-0.189795;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;259047787;51.565907;-0.406781;"{""highway"":""traffic_signals""}" london;traffic_signals;260983592;51.601845;-0.235298;"{""highway"":""traffic_signals""}" london;traffic_signals;261719449;51.458797;-0.191907;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;261719450;51.458714;-0.191813;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;261719452;51.458725;-0.191990;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;262311227;51.527897;-0.021293;"{""highway"":""traffic_signals""}" london;traffic_signals;262718706;51.470413;-0.210601;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;264515752;51.517872;-0.119060;"{""highway"":""traffic_signals""}" london;traffic_signals;264835727;51.502007;-0.111983;"{""highway"":""traffic_signals""}" london;traffic_signals;264836658;51.498634;-0.111914;"{""highway"":""traffic_signals""}" london;traffic_signals;265111477;51.528496;-0.144325;"{""highway"":""traffic_signals""}" london;traffic_signals;265565440;51.494820;-0.182938;"{""highway"":""traffic_signals""}" london;traffic_signals;265663508;51.515244;-0.071778;"{""highway"":""traffic_signals""}" london;traffic_signals;266851336;51.370777;-0.209392;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;266851341;51.370796;-0.209589;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;267390148;51.531841;-0.349560;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;267653118;51.468914;-0.119393;"{""highway"":""traffic_signals""}" london;traffic_signals;268124583;51.510845;-0.104427;"{""highway"":""traffic_signals""}" london;traffic_signals;268125394;51.511124;-0.104410;"{""highway"":""traffic_signals""}" london;traffic_signals;268125395;51.510986;-0.104679;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;268699974;51.540173;0.002737;"{""highway"":""traffic_signals""}" london;traffic_signals;268787350;51.540924;0.002303;"{""highway"":""traffic_signals""}" london;traffic_signals;269022741;51.507256;0.070679;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;269032729;51.574608;-0.086024;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;269032730;51.574646;-0.086122;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;269137138;51.349602;-0.193702;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;269253631;51.543098;0.000732;"{""highway"":""traffic_signals""}" london;traffic_signals;269255194;51.541637;-0.001845;"{""highway"":""traffic_signals""}" london;traffic_signals;269336909;51.531849;-0.295134;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;269527788;51.498699;-0.070178;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;269527800;51.498562;-0.060581;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;269789440;51.509983;0.026262;"{""highway"":""traffic_signals""}" london;traffic_signals;269789447;51.509888;0.026133;"{""highway"":""traffic_signals""}" london;traffic_signals;269866288;51.502323;-0.077510;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;270712105;51.498005;-0.202082;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;273114735;51.496178;-0.025723;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;273533109;51.500824;-0.051598;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;275039120;51.540173;0.148072;"{""highway"":""traffic_signals""}" london;traffic_signals;275071132;51.543522;0.003980;"{""highway"":""traffic_signals""}" london;traffic_signals;275071208;51.543522;0.004227;"{""highway"":""traffic_signals""}" london;traffic_signals;275973975;51.490795;-0.223533;"{""highway"":""traffic_signals""}" london;traffic_signals;276830826;51.426235;-0.070786;"{""highway"":""traffic_signals""}" london;traffic_signals;276830879;51.424149;-0.076010;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;277031996;51.504681;-0.083324;"{""highway"":""traffic_signals""}" london;traffic_signals;277675341;51.455803;-0.076355;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;279213937;51.482571;-0.063157;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;279219467;51.493771;-0.085178;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;279219468;51.493973;-0.085218;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;279552753;51.654099;-0.201580;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;280136320;51.447895;-0.328896;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;280883311;51.496712;-0.099679;"{""highway"":""traffic_signals""}" london;traffic_signals;281454943;51.511375;-0.118913;"{""highway"":""traffic_signals""}" london;traffic_signals;281454959;51.513004;-0.117979;"{""highway"":""traffic_signals""}" london;traffic_signals;281454980;51.520767;-0.116279;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;281454988;51.517677;-0.118939;"{""highway"":""traffic_signals""}" london;traffic_signals;281455020;51.522247;-0.105939;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;281455031;51.511261;-0.042101;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;281455056;51.491936;-0.044986;"{""highway"":""traffic_signals""}" london;traffic_signals;281619158;51.461285;-0.145676;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;282009801;51.511070;-0.061024;"{""highway"":""traffic_signals""}" london;traffic_signals;282022733;51.515087;0.008554;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;282197883;51.594906;0.022181;"{""highway"":""traffic_signals""}" london;traffic_signals;282592450;51.513817;0.031603;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;282879059;51.500160;-0.075698;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;282879161;51.502270;0.031219;"{""crossing"":""toucan"",""highway"":""traffic_signals""}" london;traffic_signals;282879202;51.508053;0.014291;"{""highway"":""traffic_signals""}" london;traffic_signals;283326645;51.539799;-0.094464;"{""highway"":""traffic_signals""}" london;traffic_signals;283342292;51.598419;-0.068035;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;283349311;51.598026;-0.092138;"{""highway"":""traffic_signals""}" london;traffic_signals;285712659;51.603176;0.246807;"{""highway"":""traffic_signals""}" london;traffic_signals;286938114;51.414421;-0.300802;"{""highway"":""traffic_signals""}" london;traffic_signals;287244099;51.489338;-0.077392;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;287244753;51.489841;-0.075306;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;287453577;51.499237;-0.091648;"{""highway"":""traffic_signals""}" london;traffic_signals;288041097;51.507671;-0.272926;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;288041137;51.510002;-0.272208;"{""highway"":""traffic_signals""}" london;traffic_signals;288571889;51.406570;-0.303880;"{""highway"":""traffic_signals""}" london;traffic_signals;289009561;51.474686;-0.122769;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;289532427;51.402908;0.018677;"{""highway"":""traffic_signals""}" london;traffic_signals;289532430;51.413841;-0.051610;"{""highway"":""traffic_signals""}" london;traffic_signals;290017288;51.449310;-0.123398;"{""name"":""Tusons Corner"",""highway"":""traffic_signals""}" london;traffic_signals;290359066;51.444218;-0.152144;"{""note"":""next to Sainsburys entrance (one from Bedford Hill too)"",""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;290496417;51.392979;-0.298661;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;291052621;51.587036;-0.191444;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;291463438;51.507240;-0.378300;"{""highway"":""traffic_signals""}" london;traffic_signals;291674456;51.440456;-0.155292;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;291722982;51.525154;-0.138605;"{""highway"":""traffic_signals""}" london;traffic_signals;292747453;51.446869;-0.149256;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;292868634;51.410389;-0.300756;"{""highway"":""traffic_signals""}" london;traffic_signals;293018529;51.378147;0.101223;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;293018611;51.403908;0.018632;"{""highway"":""traffic_signals""}" london;traffic_signals;293263449;51.410675;-0.296620;"{""highway"":""traffic_signals""}" london;traffic_signals;293475140;51.450554;0.080281;"{""highway"":""traffic_signals""}" london;traffic_signals;293475443;51.435272;0.102057;"{""highway"":""traffic_signals""}" london;traffic_signals;293479366;51.434711;0.063984;"{""highway"":""traffic_signals""}" london;traffic_signals;293479740;51.434830;0.064014;"{""highway"":""traffic_signals""}" london;traffic_signals;293480067;51.439011;0.050405;"{""highway"":""traffic_signals""}" london;traffic_signals;293548181;51.525066;-0.138327;"{""highway"":""traffic_signals""}" london;traffic_signals;293548187;51.524895;-0.137738;"{""highway"":""traffic_signals""}" london;traffic_signals;293548191;51.524773;-0.138070;"{""highway"":""traffic_signals""}" london;traffic_signals;293548192;51.525059;-0.137781;"{""highway"":""traffic_signals""}" london;traffic_signals;293548193;51.524841;-0.137898;"{""highway"":""traffic_signals""}" london;traffic_signals;293548196;51.525326;-0.138172;"{""highway"":""traffic_signals""}" london;traffic_signals;293548203;51.525105;-0.138549;"{""highway"":""traffic_signals""}" london;traffic_signals;293548204;51.525288;-0.138281;"{""highway"":""traffic_signals""}" london;traffic_signals;293794591;51.420055;-0.078336;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;293810464;51.524101;-0.144357;"{""highway"":""traffic_signals""}" london;traffic_signals;293810470;51.524021;-0.143651;"{""highway"":""traffic_signals""}" london;traffic_signals;293810472;51.523960;-0.143996;"{""highway"":""traffic_signals""}" london;traffic_signals;293998441;51.535942;-0.139815;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;294863394;51.398823;-0.303360;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;295317701;51.493675;-0.100478;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;295998807;51.525639;-0.161580;"{""highway"":""traffic_signals""}" london;traffic_signals;295998818;51.525696;-0.161250;"{""highway"":""traffic_signals""}" london;traffic_signals;295998819;51.525536;-0.161404;"{""highway"":""traffic_signals""}" london;traffic_signals;295998820;51.525520;-0.161531;"{""highway"":""traffic_signals""}" london;traffic_signals;296044908;51.526810;-0.087983;"{""highway"":""traffic_signals""}" london;traffic_signals;297810421;51.421959;-0.128970;"{""highway"":""traffic_signals""}" london;traffic_signals;298129802;51.413113;-0.288339;"{""highway"":""traffic_signals""}" london;traffic_signals;299167735;51.548458;-0.465780;"{""highway"":""traffic_signals""}" london;traffic_signals;299376451;51.403992;-0.055482;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;301015884;51.536301;-0.176150;"{""highway"":""traffic_signals""}" london;traffic_signals;301015888;51.539574;-0.175688;"{""highway"":""traffic_signals""}" london;traffic_signals;301015890;51.541607;-0.175208;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;301015892;51.541718;-0.175150;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;301664721;51.547489;-0.105567;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;302013776;51.515663;-0.080485;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;302013777;51.515705;-0.079355;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;303288295;51.528564;-0.267971;"{""highway"":""traffic_signals""}" london;traffic_signals;303299649;51.408924;-0.304402;"{""highway"":""traffic_signals""}" london;traffic_signals;303798305;51.474796;-0.343087;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;303798310;51.475216;-0.336772;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;303798327;51.469501;-0.357691;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;303798330;51.467941;-0.366024;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;304403008;51.535084;-0.274989;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;304652819;51.537228;-0.298626;"{""highway"":""traffic_signals""}" london;traffic_signals;305403317;51.541405;-0.258881;"{""highway"":""traffic_signals""}" london;traffic_signals;305403703;51.549023;-0.107598;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;305454989;51.544930;-0.033556;"{""highway"":""traffic_signals""}" london;traffic_signals;306456324;51.578053;-0.147360;"{""highway"":""traffic_signals""}" london;traffic_signals;307821045;51.504444;-0.218075;"{""highway"":""traffic_signals""}" london;traffic_signals;308419818;51.505253;-0.216891;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;308728957;51.500263;-0.140308;"{""highway"":""traffic_signals""}" london;traffic_signals;308728960;51.500416;-0.140826;"{""highway"":""traffic_signals""}" london;traffic_signals;308728988;51.491188;-0.229007;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;308728989;51.490955;-0.229007;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;311958645;51.520531;-0.191364;"{""highway"":""traffic_signals""}" london;traffic_signals;317169125;51.462330;-0.012952;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;317169126;51.462440;-0.013075;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;317182576;51.480011;-0.111242;"{""name"":""Kennington Church"",""highway"":""traffic_signals""}" london;traffic_signals;323139285;51.399433;-0.183717;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;330087839;51.561398;-0.331191;"{""highway"":""traffic_signals""}" london;traffic_signals;331101738;51.559402;-0.116561;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;331362131;51.592514;-0.105906;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;333185696;51.545769;-0.117918;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;333380958;51.555542;-0.121986;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;333670409;51.520370;-0.134100;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;333774733;51.555702;-0.117847;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;333774735;51.555759;-0.118082;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;336108182;51.536266;-0.102067;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;336254734;51.562607;-0.071206;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;338474256;51.515778;-0.104723;"{""highway"":""traffic_signals""}" london;traffic_signals;339883239;51.546143;-0.101814;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;339905917;51.547138;-0.092156;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;343256006;51.457058;-0.197823;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;343256009;51.457088;-0.197607;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;343506933;51.560944;-0.115824;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;343567590;51.566216;-0.114533;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;343588277;51.387188;-0.096298;"{""highway"":""traffic_signals""}" london;traffic_signals;345251286;51.557487;-0.469530;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;345392770;51.568272;-0.440447;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;347361350;51.461578;-0.139535;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;347562586;51.525455;-0.136005;"{""highway"":""traffic_signals""}" london;traffic_signals;348714119;51.535736;-0.103762;"{""highway"":""traffic_signals""}" london;traffic_signals;350687646;51.398861;-0.098012;"{""highway"":""traffic_signals""}" london;traffic_signals;350687666;51.398792;-0.098654;"{""highway"":""traffic_signals""}" london;traffic_signals;350687686;51.399017;-0.098040;"{""highway"":""traffic_signals""}" london;traffic_signals;353915118;51.547279;-0.116572;"{""highway"":""traffic_signals""}" london;traffic_signals;356286872;51.492573;-0.200133;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;356286873;51.492523;-0.200281;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286874;51.492611;-0.200353;"{""note"":""controlled by upstream traffic lights"",""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286875;51.492741;-0.200108;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;356286876;51.492714;-0.200581;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286880;51.492897;-0.200058;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;356286886;51.494431;-0.195723;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;356286892;51.494156;-0.195139;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286893;51.494507;-0.195220;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286894;51.494640;-0.195391;"{""note"":""controlled by upstream traffic lights"",""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286895;51.494682;-0.195571;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;356286896;51.494537;-0.195724;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;356809886;51.493431;-0.198889;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;357443228;51.555820;-0.178695;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;360981830;51.517570;0.023429;"{""highway"":""traffic_signals""}" london;traffic_signals;361217605;51.517136;0.034111;"{""highway"":""traffic_signals""}" london;traffic_signals;361220175;51.517502;0.032450;"{""highway"":""traffic_signals""}" london;traffic_signals;361220177;51.517437;0.031902;"{""highway"":""traffic_signals""}" london;traffic_signals;362230480;51.512650;-0.158540;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;364346001;51.461094;-0.202482;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;366240047;51.511662;-0.175921;"{""highway"":""traffic_signals""}" london;traffic_signals;366925716;51.462971;0.182125;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;367077584;51.512085;-0.103078;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;368044217;51.510967;-0.104268;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;369246463;51.505417;-0.212915;"{""highway"":""traffic_signals""}" london;traffic_signals;369859316;51.563408;-0.073232;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;369859317;51.563404;-0.073225;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;369859318;51.563412;-0.073223;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;369975051;51.559776;-0.074072;"{""crossing"":""traffic_signals""}" london;traffic_signals;370198689;51.584354;-0.123248;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;370464779;51.547321;-0.075583;"{""crossing"":""traffic_signals""}" london;traffic_signals;371685481;51.492905;0.014762;"{""highway"":""traffic_signals""}" london;traffic_signals;373364228;51.515144;-0.097399;"{""highway"":""traffic_signals""}" london;traffic_signals;374317968;51.562145;-0.075631;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;377494060;51.514839;-0.078037;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;377498314;51.513462;-0.081226;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;377508732;51.527042;-0.077731;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;378805081;51.525696;-0.086977;"{""highway"":""traffic_signals""}" london;traffic_signals;378805102;51.525894;-0.087142;"{""highway"":""traffic_signals""}" london;traffic_signals;378996645;51.462177;-0.081048;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;378996646;51.462959;-0.082152;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;381085455;51.486084;-0.121983;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;382172727;51.522331;-0.261164;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;382574526;51.525192;0.072092;"{""highway"":""traffic_signals""}" london;traffic_signals;382941341;51.454296;0.152292;"{""highway"":""traffic_signals""}" london;traffic_signals;392367278;51.505165;-0.217219;"{""highway"":""traffic_signals""}" london;traffic_signals;392625778;51.461330;-0.138674;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;396093955;51.512798;-0.114858;"{""highway"":""traffic_signals""}" london;traffic_signals;401652113;51.478252;0.179718;"{""highway"":""traffic_signals""}" london;traffic_signals;405895020;51.537094;-0.192420;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;408561643;51.546906;-0.221296;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;408561644;51.546982;-0.221095;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;408561645;51.546902;-0.220926;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;408561646;51.546803;-0.221183;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;408561704;51.545589;-0.215065;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;409290475;51.543003;-0.208517;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;409290476;51.542992;-0.208291;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;409290477;51.543110;-0.208291;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;409290478;51.543137;-0.208498;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;409888614;51.498745;-0.125879;"{""highway"":""traffic_signals""}" london;traffic_signals;409906496;51.491001;-0.126034;"{""highway"":""traffic_signals""}" london;traffic_signals;410936538;51.557011;-0.215736;"{""highway"":""traffic_signals""}" london;traffic_signals;411810970;51.355015;-0.222363;"{""highway"":""traffic_signals""}" london;traffic_signals;412416750;51.488308;0.017289;"{""highway"":""traffic_signals""}" london;traffic_signals;415386718;51.454235;0.152264;"{""highway"":""traffic_signals""}" london;traffic_signals;415386719;51.455063;0.152862;"{""highway"":""traffic_signals""}" london;traffic_signals;415386725;51.454277;0.152417;"{""highway"":""traffic_signals""}" london;traffic_signals;415386758;51.454281;0.151951;"{""highway"":""traffic_signals""}" london;traffic_signals;415389485;51.454632;0.152467;"{""highway"":""traffic_signals""}" london;traffic_signals;417182148;51.375801;-0.276955;"{""highway"":""traffic_signals""}" london;traffic_signals;419331767;51.526459;-0.083638;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;419357785;51.568718;-0.207800;"{""highway"":""traffic_signals""}" london;traffic_signals;419632307;51.511868;-0.103921;"{""highway"":""traffic_signals""}" london;traffic_signals;419805545;51.494301;-0.120450;"{""highway"":""traffic_signals""}" london;traffic_signals;419805552;51.494312;-0.121052;"{""highway"":""traffic_signals""}" london;traffic_signals;419806288;51.494259;-0.121136;"{""highway"":""traffic_signals""}" london;traffic_signals;419853720;51.488689;-0.129349;"{""highway"":""traffic_signals""}" london;traffic_signals;419855719;51.488735;-0.129497;"{""highway"":""traffic_signals""}" london;traffic_signals;419856077;51.488567;-0.129503;"{""highway"":""traffic_signals""}" london;traffic_signals;419856597;51.488625;-0.129654;"{""highway"":""traffic_signals""}" london;traffic_signals;419886946;51.591026;-0.256043;"{""highway"":""traffic_signals""}" london;traffic_signals;420502460;51.472561;0.047815;"{""highway"":""traffic_signals""}" london;traffic_signals;424095525;51.379826;-0.099714;"{""highway"":""traffic_signals""}" london;traffic_signals;425677665;51.551891;-0.020306;"{""highway"":""traffic_signals""}" london;traffic_signals;427931759;51.529819;-0.124100;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;427931760;51.530094;-0.123616;"{""highway"":""traffic_signals""}" london;traffic_signals;427931766;51.530746;-0.122153;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;432721504;51.526489;-0.028298;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;433184113;51.526142;-0.030003;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;433184143;51.525349;-0.033417;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;434557533;51.540070;-0.140911;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;439426195;51.459923;-0.171208;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;439566041;51.512814;-0.041262;"{""highway"":""traffic_signals""}" london;traffic_signals;440394713;51.511745;-0.008624;"{""highway"":""traffic_signals""}" london;traffic_signals;440398055;51.512943;-0.008148;"{""highway"":""traffic_signals""}" london;traffic_signals;440398910;51.512875;-0.007957;"{""highway"":""traffic_signals""}" london;traffic_signals;440400868;51.511524;-0.008409;"{""highway"":""traffic_signals""}" london;traffic_signals;440403471;51.511787;-0.007427;"{""highway"":""traffic_signals""}" london;traffic_signals;440804315;51.513142;-0.008445;"{""highway"":""traffic_signals""}" london;traffic_signals;440828219;51.511166;-0.010144;"{""highway"":""traffic_signals""}" london;traffic_signals;441316326;51.489880;0.084918;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;442034211;51.434834;0.063641;"{""highway"":""traffic_signals""}" london;traffic_signals;442034212;51.434917;0.063396;"{""highway"":""traffic_signals""}" london;traffic_signals;442606895;51.508823;0.047643;"{""highway"":""traffic_signals""}" london;traffic_signals;442615973;51.656250;-0.029402;"{""highway"":""traffic_signals""}" london;traffic_signals;443131428;51.507492;-0.355112;"{""highway"":""traffic_signals""}" london;traffic_signals;443251660;51.491272;0.070244;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;443258572;51.490986;0.072724;"{""highway"":""traffic_signals""}" london;traffic_signals;443277063;51.498737;0.104970;"{""highway"":""traffic_signals""}" london;traffic_signals;443279845;51.498615;0.104995;"{""highway"":""traffic_signals""}" london;traffic_signals;443279893;51.498585;0.104807;"{""highway"":""traffic_signals""}" london;traffic_signals;443439365;51.649635;-0.059784;"{""highway"":""traffic_signals""}" london;traffic_signals;443439479;51.649700;-0.060498;"{""highway"":""traffic_signals""}" london;traffic_signals;443446763;51.653221;-0.059926;"{""highway"":""traffic_signals""}" london;traffic_signals;443828340;51.480671;-0.023281;"{""highway"":""traffic_signals""}" london;traffic_signals;443833008;51.480640;-0.022963;"{""highway"":""traffic_signals""}" london;traffic_signals;443841106;51.480724;-0.023015;"{""highway"":""traffic_signals""}" london;traffic_signals;443842289;51.480877;-0.023314;"{""highway"":""traffic_signals""}" london;traffic_signals;444428081;51.521393;-0.075678;"{""highway"":""traffic_signals""}" london;traffic_signals;444505330;51.486366;0.017828;"{""highway"":""traffic_signals""}" london;traffic_signals;444505335;51.485958;0.018277;"{""highway"":""traffic_signals""}" london;traffic_signals;444505463;51.485722;0.018304;"{""highway"":""traffic_signals""}" london;traffic_signals;444505753;51.486599;0.017408;"{""highway"":""traffic_signals""}" london;traffic_signals;444505868;51.487576;0.017132;"{""highway"":""traffic_signals""}" london;traffic_signals;444505878;51.487373;0.017364;"{""highway"":""traffic_signals""}" london;traffic_signals;444505888;51.486694;0.018082;"{""highway"":""traffic_signals""}" london;traffic_signals;444505913;51.486992;0.017638;"{""highway"":""traffic_signals""}" london;traffic_signals;444505929;51.486637;0.018262;"{""highway"":""traffic_signals""}" london;traffic_signals;444541271;51.475842;-0.032596;"{""highway"":""traffic_signals""}" london;traffic_signals;444543658;51.474884;-0.026311;"{""highway"":""traffic_signals""}" london;traffic_signals;444543747;51.474979;-0.026423;"{""highway"":""traffic_signals""}" london;traffic_signals;444551203;51.475864;-0.032945;"{""highway"":""traffic_signals""}" london;traffic_signals;444825364;51.594326;-0.016299;"{""highway"":""traffic_signals""}" london;traffic_signals;444874835;51.526527;-0.438323;"{""highway"":""traffic_signals""}" london;traffic_signals;444929367;51.477158;-0.404349;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;444929707;51.477161;-0.404492;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;445376295;51.474491;-0.023787;"{""highway"":""traffic_signals""}" london;traffic_signals;445381763;51.474751;-0.024294;"{""highway"":""traffic_signals""}" london;traffic_signals;445399319;51.476200;-0.422627;"{""highway"":""traffic_signals""}" london;traffic_signals;445400867;51.474415;-0.024161;"{""highway"":""traffic_signals""}" london;traffic_signals;447085743;51.428577;-0.013069;"{""highway"":""traffic_signals""}" london;traffic_signals;447393434;51.408752;0.011026;"{""highway"":""traffic_signals""}" london;traffic_signals;447897789;51.547173;-0.055002;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;448900636;51.615158;-0.127930;"{""highway"":""traffic_signals""}" london;traffic_signals;449182850;51.453602;0.026222;"{""highway"":""traffic_signals""}" london;traffic_signals;449183902;51.453522;0.025835;"{""highway"":""traffic_signals""}" london;traffic_signals;449185573;51.453426;0.026506;"{""highway"":""traffic_signals""}" london;traffic_signals;451705581;51.492031;-0.171341;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;452449067;51.526405;-0.107755;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;452770013;51.509117;-0.026471;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;454218635;51.542953;-0.149207;"{""highway"":""traffic_signals""}" london;traffic_signals;455705622;51.516346;-0.119682;"{""highway"":""traffic_signals""}" london;traffic_signals;455916113;51.490959;-0.228865;"{""highway"":""traffic_signals""}" london;traffic_signals;455920257;51.489693;-0.228875;"{""highway"":""traffic_signals""}" london;traffic_signals;456363902;51.517181;-0.122802;"{""highway"":""traffic_signals""}" london;traffic_signals;457009451;51.448196;0.022955;"{""highway"":""traffic_signals""}" london;traffic_signals;457009506;51.448254;0.022550;"{""highway"":""traffic_signals""}" london;traffic_signals;457009537;51.448109;0.022851;"{""highway"":""traffic_signals""}" london;traffic_signals;457090108;51.601723;-0.193358;"{""highway"":""traffic_signals""}" london;traffic_signals;457816226;51.468712;-0.371468;"{""highway"":""traffic_signals""}" london;traffic_signals;459786687;51.598907;-0.111037;"{""highway"":""traffic_signals""}" london;traffic_signals;459808317;51.543266;-0.129088;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;461883823;51.462940;0.027488;"{""highway"":""traffic_signals""}" london;traffic_signals;461884561;51.463001;0.027574;"{""highway"":""traffic_signals""}" london;traffic_signals;461886669;51.463154;0.027394;"{""highway"":""traffic_signals""}" london;traffic_signals;461905014;51.462769;0.029664;"{""highway"":""traffic_signals""}" london;traffic_signals;462143707;51.463058;0.027283;"{""highway"":""traffic_signals""}" london;traffic_signals;471488502;51.512054;-0.080180;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;472346848;51.512131;-0.102053;"{""highway"":""traffic_signals""}" london;traffic_signals;472493109;51.566814;-0.072981;"{""note"":""Location approximate"",""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;472493763;51.515308;-0.079846;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;473091605;51.526146;-0.083878;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;473091607;51.526215;-0.083796;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;474996540;51.549809;-0.140871;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;475528276;51.548523;-0.141122;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;478191310;51.410835;-0.300986;"{""highway"":""traffic_signals""}" london;traffic_signals;478191312;51.410904;-0.301048;"{""highway"":""traffic_signals""}" london;traffic_signals;491427672;51.451771;0.178144;"{""highway"":""traffic_signals""}" london;traffic_signals;491439103;51.451481;0.176799;"{""highway"":""traffic_signals""}" london;traffic_signals;491439112;51.451481;0.176922;"{""highway"":""traffic_signals""}" london;traffic_signals;491440138;51.451599;0.176845;"{""highway"":""traffic_signals""}" london;traffic_signals;493445638;51.451725;0.178380;"{""highway"":""traffic_signals""}" london;traffic_signals;496043061;51.623093;-0.289527;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;512462551;51.544296;-0.272289;"{""highway"":""traffic_signals""}" london;traffic_signals;512462567;51.544861;-0.272915;"{""highway"":""traffic_signals""}" london;traffic_signals;512462603;51.544582;-0.271834;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;514130264;51.448818;-0.192444;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;519998333;51.513359;-0.160179;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;519998343;51.513329;-0.160514;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;519998354;51.512409;-0.160897;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;519998365;51.512138;-0.174166;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;519998368;51.511963;-0.174080;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;519998381;51.511875;-0.174502;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;520296343;51.511265;-0.042205;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;529071827;51.598583;-0.068226;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;529071838;51.598564;-0.067666;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;529116484;51.592522;-0.069735;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;529804135;51.552353;-0.448892;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;534622287;51.549507;-0.054945;"{""highway"":""traffic_signals""}" london;traffic_signals;534937316;51.475109;-0.393704;"{""highway"":""traffic_signals""}" london;traffic_signals;534937318;51.475166;-0.394105;"{""highway"":""traffic_signals""}" london;traffic_signals;536170368;51.579613;-0.322648;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;537997647;51.569019;-0.347149;"{""highway"":""traffic_signals""}" london;traffic_signals;537997678;51.569340;-0.346525;"{""highway"":""traffic_signals""}" london;traffic_signals;543389741;51.501156;-0.115974;"{""highway"":""traffic_signals""}" london;traffic_signals;544325871;51.558685;-0.445541;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;550437302;51.478405;-0.037476;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;555127605;51.478474;-0.493857;"{""highway"":""traffic_signals""}" london;traffic_signals;558335297;51.462891;-0.184681;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;558335342;51.462727;-0.184584;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;558335462;51.462040;-0.186467;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;558335610;51.461880;-0.186278;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;559033682;51.467205;-0.420747;"{""highway"":""traffic_signals""}" london;traffic_signals;560103731;51.514847;-0.302328;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;560105198;51.499226;-0.314736;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;560105995;51.515854;-0.302237;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;567049176;51.511520;-0.305117;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;568544275;51.498829;-0.242849;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;575225170;51.616432;-0.244334;"{""highway"":""traffic_signals""}" london;traffic_signals;585323616;51.419807;-0.078732;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;590035409;51.519505;-0.262215;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;600889661;51.564304;-0.135156;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;600889669;51.564713;-0.132380;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;603749192;51.502258;-0.139567;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;604013818;51.539837;0.157088;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;604013820;51.537533;0.163456;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;604014105;51.546097;0.165076;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;604015453;51.541473;0.147823;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;604036382;51.540077;0.127599;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;612164709;51.494141;-0.174626;"{""highway"":""traffic_signals""}" london;traffic_signals;614217744;51.473572;-0.069647;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;614490950;51.533051;-0.106116;"{""highway"":""traffic_signals""}" london;traffic_signals;614490952;51.533150;-0.105928;"{""highway"":""traffic_signals""}" london;traffic_signals;618396000;51.537941;-0.056932;"{""highway"":""traffic_signals""}" london;traffic_signals;631100649;51.356705;-0.031517;"{""highway"":""traffic_signals""}" london;traffic_signals;632673456;51.507465;-0.128846;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;637511509;51.494358;-0.121273;"{""highway"":""traffic_signals""}" london;traffic_signals;637761616;51.404007;-0.304286;"{""highway"":""traffic_signals""}" london;traffic_signals;637762649;51.401741;-0.304440;"{""highway"":""traffic_signals""}" london;traffic_signals;638339580;51.568779;-0.207594;"{""highway"":""traffic_signals""}" london;traffic_signals;649333812;51.617355;-0.087436;"{""highway"":""traffic_signals""}" london;traffic_signals;652830993;51.413445;-0.300598;"{""highway"":""traffic_signals""}" london;traffic_signals;652857237;51.410858;-0.296768;"{""highway"":""traffic_signals""}" london;traffic_signals;653985524;51.544777;-0.076022;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;653985525;51.544769;-0.075931;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;658951648;51.549183;-0.075312;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;658958408;51.554153;-0.074798;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;662143285;51.511452;0.011317;"{""highway"":""traffic_signals""}" london;traffic_signals;662143386;51.511482;0.011478;"{""highway"":""traffic_signals""}" london;traffic_signals;662143409;51.511456;0.011384;"{""highway"":""traffic_signals""}" london;traffic_signals;662334537;51.516155;0.024975;"{""highway"":""traffic_signals""}" london;traffic_signals;662334605;51.516254;0.025240;"{""highway"":""traffic_signals""}" london;traffic_signals;662838386;51.474007;-0.066972;"{""highway"":""traffic_signals""}" london;traffic_signals;664486001;51.517139;0.034432;"{""highway"":""traffic_signals""}" london;traffic_signals;666209785;51.514374;0.060494;"{""highway"":""traffic_signals""}" london;traffic_signals;668033002;51.508320;0.074595;"{""highway"":""traffic_signals""}" london;traffic_signals;677090365;51.551029;-0.020628;"{""highway"":""traffic_signals""}" london;traffic_signals;684302834;51.561481;-0.099459;"{""highway"":""traffic_signals""}" london;traffic_signals;685439238;51.514133;-0.245811;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;691084080;51.517605;-0.141603;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;692129352;51.517780;-0.140297;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;692129358;51.517818;-0.140187;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;692129360;51.517799;-0.140307;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;694456752;51.489006;-0.077855;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;694456776;51.488888;-0.078013;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;697037361;51.509045;-0.073916;"{""highway"":""traffic_signals""}" london;traffic_signals;703149894;51.545551;-0.075756;"{""highway"":""traffic_signals""}" london;traffic_signals;704054144;51.493713;-0.085371;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;704054153;51.494049;-0.085022;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;704054162;51.494656;-0.084830;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;704054164;51.494766;-0.084934;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;713699218;51.498020;-0.452997;"{""highway"":""traffic_signals""}" london;traffic_signals;713699377;51.497482;-0.452851;"{""highway"":""traffic_signals""}" london;traffic_signals;713699486;51.498188;-0.452719;"{""highway"":""traffic_signals""}" london;traffic_signals;713699543;51.497299;-0.453124;"{""highway"":""traffic_signals""}" london;traffic_signals;713699600;51.498116;-0.453145;"{""highway"":""traffic_signals""}" london;traffic_signals;713699709;51.497398;-0.452743;"{""highway"":""traffic_signals""}" london;traffic_signals;727674383;51.564247;-0.443770;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;728600286;51.467159;-0.105010;"{""crossing"":""traffic_signals""}" london;traffic_signals;731245248;51.573509;-0.072172;"{""highway"":""traffic_signals""}" london;traffic_signals;731619811;51.480309;-0.108369;"{""highway"":""traffic_signals""}" london;traffic_signals;732206502;51.462929;-0.107794;"{""highway"":""traffic_signals""}" london;traffic_signals;732206517;51.463017;-0.107751;"{""highway"":""traffic_signals""}" london;traffic_signals;732206521;51.463028;-0.107322;"{""highway"":""traffic_signals""}" london;traffic_signals;732206529;51.463150;-0.107429;"{""highway"":""traffic_signals""}" london;traffic_signals;732206535;51.463116;-0.107290;"{""highway"":""traffic_signals""}" london;traffic_signals;734785267;51.466896;-0.100078;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;734787146;51.468334;-0.098563;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;734787741;51.469742;-0.096262;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;735006263;51.461872;-0.111813;"{""highway"":""traffic_signals""}" london;traffic_signals;735028665;51.459324;-0.116578;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;735028678;51.459244;-0.116922;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;736346328;51.475506;-0.131266;"{""highway"":""traffic_signals""}" london;traffic_signals;736758941;51.502747;-0.158596;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;737071850;51.484745;-0.118637;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;737071851;51.484798;-0.118454;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;739827884;51.515575;-0.401930;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;739827906;51.521042;-0.417220;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;739827912;51.517170;-0.403877;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;739827937;51.515381;-0.401374;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;739852410;51.517235;-0.404051;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;740384609;51.500931;-0.126415;"{""highway"":""traffic_signals""}" london;traffic_signals;740384612;51.500107;-0.126266;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;742961398;51.517075;-0.144584;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;742961466;51.515888;-0.145558;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;765883321;51.487236;-0.196181;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;766865747;51.477753;-0.190024;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;769286789;51.595577;-0.145099;"{""highway"":""traffic_signals""}" london;traffic_signals;770163539;51.484985;-0.255214;"{""highway"":""traffic_signals""}" london;traffic_signals;771811368;51.480881;-0.452336;"{""highway"":""traffic_signals""}" london;traffic_signals;772706080;51.539795;-0.195516;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;773636690;51.449314;-0.446143;"{""highway"":""traffic_signals""}" london;traffic_signals;775882863;51.536491;-0.076870;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;775882864;51.562782;-0.071201;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;778610537;51.457119;-0.067447;"{""highway"":""traffic_signals""}" london;traffic_signals;778611527;51.454567;-0.069360;"{""highway"":""traffic_signals""}" london;traffic_signals;790235939;51.583225;-0.072361;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;790235949;51.582943;-0.072492;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;790235954;51.583321;-0.072183;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;790236070;51.582893;-0.072363;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;790236078;51.582920;-0.072206;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;790236097;51.585293;-0.071711;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;790236109;51.582981;-0.072534;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;790867554;51.488159;-0.076440;"{""highway"":""traffic_signals""}" london;traffic_signals;791582744;51.589104;-0.063577;"{""highway"":""traffic_signals""}" london;traffic_signals;791582806;51.588131;-0.061593;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;791583029;51.589077;-0.063667;"{""highway"":""traffic_signals""}" london;traffic_signals;791583064;51.588135;-0.063318;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;791604114;51.589417;-0.063534;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;792051177;51.398125;-0.047034;"{""highway"":""traffic_signals""}" london;traffic_signals;792051192;51.398170;-0.047380;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;792051196;51.398190;-0.047180;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;792615003;51.489254;-0.130890;"{""highway"":""traffic_signals""}" london;traffic_signals;792630439;51.489445;-0.131511;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;792630487;51.489540;-0.131642;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;792630513;51.489540;-0.131731;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;798769656;51.535675;-0.175846;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;800600452;51.551117;-0.165869;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;800600498;51.550278;-0.164657;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;800676793;51.502106;-0.185926;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;805450774;51.521439;-0.135202;"{""highway"":""traffic_signals""}" london;traffic_signals;806391323;51.588028;-0.061490;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;808618641;51.493088;-0.222581;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;808618647;51.492973;-0.222424;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;808618651;51.493004;-0.222746;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;809995590;51.492874;-0.224746;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;809995592;51.492874;-0.224887;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;810343583;51.501938;-0.228821;"{""highway"":""traffic_signals""}" london;traffic_signals;810371994;51.493416;-0.144386;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;811891487;51.531528;-0.104434;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812104354;51.538223;-0.487635;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;812104358;51.538212;-0.487986;"{""crossing"":""no"",""highway"":""traffic_signals""}" london;traffic_signals;812149205;51.504185;-0.215972;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812149212;51.504154;-0.218883;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;812149214;51.504894;-0.215658;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812149215;51.505615;-0.211806;"{""highway"":""traffic_signals""}" london;traffic_signals;812149225;51.504723;-0.215649;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812149227;51.504051;-0.216155;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812149229;51.504372;-0.218970;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;812166391;51.514370;-0.235202;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812180691;51.514454;-0.235226;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812249620;51.505814;-0.144665;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812249639;51.504906;-0.146522;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;812249676;51.504856;-0.146452;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;814102060;51.512516;-0.158698;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;815606609;51.513119;-0.161585;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;815606611;51.513210;-0.160296;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;815606629;51.513035;-0.161408;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;818596071;51.524071;-0.037425;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;819705727;51.522442;-0.042011;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;819705761;51.523067;-0.039753;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;822255421;51.469456;-0.275734;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;822255464;51.469284;-0.275798;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;822255542;51.464542;-0.300606;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;822255556;51.464500;-0.300425;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;841517799;51.508873;-0.197114;"{""highway"":""traffic_signals""}" london;traffic_signals;841517802;51.509144;-0.197093;"{""highway"":""traffic_signals""}" london;traffic_signals;841519718;51.509270;-0.195390;"{""highway"":""traffic_signals""}" london;traffic_signals;841519720;51.509254;-0.195019;"{""highway"":""traffic_signals""}" london;traffic_signals;841519724;51.509106;-0.195229;"{""highway"":""traffic_signals""}" london;traffic_signals;841519725;51.509083;-0.195337;"{""highway"":""traffic_signals""}" london;traffic_signals;841766420;51.508575;-0.199750;"{""highway"":""traffic_signals""}" london;traffic_signals;841766430;51.508724;-0.198845;"{""highway"":""traffic_signals""}" london;traffic_signals;842436167;51.565403;-0.134533;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;846207603;51.445259;-0.331541;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;846207614;51.445168;-0.333302;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;848260694;51.543179;0.000680;"{""highway"":""traffic_signals""}" london;traffic_signals;849424424;51.544346;-0.479915;"{""highway"":""traffic_signals""}" london;traffic_signals;849424433;51.544449;-0.480216;"{""highway"":""traffic_signals""}" london;traffic_signals;849424438;51.545223;-0.482147;"{""highway"":""traffic_signals""}" london;traffic_signals;849424446;51.545380;-0.482159;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;849424449;51.544983;-0.481141;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;849424451;51.544807;-0.482414;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;849424463;51.544567;-0.480390;"{""highway"":""traffic_signals""}" london;traffic_signals;849781350;51.499519;-0.222072;"{""crossing"":""traffic_signals""}" london;traffic_signals;849845981;51.548229;-0.483194;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;852019112;51.530399;-0.138709;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;853294002;51.503780;-0.136130;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;860183703;51.501465;-0.180220;"{""highway"":""traffic_signals""}" london;traffic_signals;860183705;51.493816;-0.178798;"{""highway"":""traffic_signals""}" london;traffic_signals;865007962;51.474903;-0.040269;"{""crossing"":""traffic_signals""}" london;traffic_signals;866311235;51.517147;-0.125267;"{""highway"":""traffic_signals""}" london;traffic_signals;868053792;51.470604;-0.069045;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;870488957;51.585606;-0.180915;"{""highway"":""traffic_signals""}" london;traffic_signals;870489012;51.585732;-0.180862;"{""highway"":""traffic_signals""}" london;traffic_signals;874743581;51.524323;-0.141243;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;874743764;51.524220;-0.141162;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;878467898;51.591740;-0.179239;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;881888130;51.511635;-0.139346;"{""highway"":""traffic_signals""}" london;traffic_signals;888625311;51.552216;-0.448605;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;888625320;51.552238;-0.448978;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;888625325;51.551888;-0.448664;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;888625342;51.552025;-0.448946;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;888625353;51.552021;-0.448586;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892500377;51.554340;-0.447951;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892500378;51.554405;-0.447805;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892543351;51.569832;-0.437908;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892543357;51.569870;-0.437709;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892750533;51.512573;0.000215;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892750536;51.512524;-0.000242;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892750545;51.512585;0.000053;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892750555;51.512539;-0.000151;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;892856387;51.508907;0.037922;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;892856445;51.508961;0.037715;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;893491886;51.530861;-0.119639;"{""highway"":""traffic_signals""}" london;traffic_signals;894727911;51.621288;-0.292124;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;894727930;51.621365;-0.294724;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;902608591;51.565319;-0.133719;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;909513875;51.526863;-0.210704;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;917233855;51.543152;-0.150253;"{""highway"":""traffic_signals""}" london;traffic_signals;921334391;51.486301;-0.072420;"{""highway"":""traffic_signals""}" london;traffic_signals;921789673;51.532021;-0.125457;"{""highway"":""traffic_signals""}" london;traffic_signals;922758609;51.485058;-0.068847;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;922758664;51.483425;-0.064922;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;922758690;51.484089;-0.066328;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;925490510;51.549843;-0.044208;"{""crossing"":""traffic_signals""}" london;traffic_signals;926533978;51.531094;-0.067328;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;928073352;51.519859;-0.169548;"{""highway"":""traffic_signals""}" london;traffic_signals;929323056;51.451866;-0.357952;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;929323102;51.450886;-0.357871;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;931617011;51.539505;-0.141790;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;934844867;51.513954;-0.249029;"{""highway"":""traffic_signals""}" london;traffic_signals;940322554;51.515148;-0.304648;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;940322589;51.516235;-0.302798;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;941395970;51.589046;-0.110312;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;941396653;51.588627;-0.109932;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;941396720;51.588913;-0.110495;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;941396735;51.588951;-0.110666;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;941531991;51.615833;-0.086904;"{""highway"":""traffic_signals""}" london;traffic_signals;965267525;51.518051;-0.115923;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;968726994;51.453468;-0.146922;"{""highway"":""traffic_signals""}" london;traffic_signals;976536664;51.487171;-0.123253;"{""highway"":""traffic_signals""}" london;traffic_signals;987814907;51.493336;-0.073775;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;988315084;51.526443;-0.207589;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;989697010;51.380589;-0.183034;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;989697038;51.383488;-0.188747;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;997776862;51.375904;-0.277391;"{""highway"":""traffic_signals""}" london;traffic_signals;1000235488;51.529045;-0.282743;"{""highway"":""traffic_signals""}" london;traffic_signals;1015041869;51.498169;-0.063942;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1015042033;51.498096;-0.063911;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1016023571;51.498280;-0.146973;"{""highway"":""traffic_signals""}" london;traffic_signals;1030659607;51.652428;-0.198578;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1032792753;51.493378;-0.100391;"{""highway"":""traffic_signals""}" london;traffic_signals;1032792757;51.493256;-0.100246;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1032792770;51.493134;-0.100562;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1032792773;51.493210;-0.100814;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1067244518;51.379475;-0.280997;"{""highway"":""traffic_signals""}" london;traffic_signals;1067244520;51.378841;-0.281086;"{""highway"":""traffic_signals""}" london;traffic_signals;1067244521;51.379429;-0.279999;"{""highway"":""traffic_signals""}" london;traffic_signals;1086707051;51.568073;-0.099414;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1094124402;51.513714;-0.129412;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;1098949259;51.381908;-0.156834;"{""highway"":""traffic_signals""}" london;traffic_signals;1102994227;51.508644;-0.127264;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102994236;51.508568;-0.127063;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102994237;51.508362;-0.127251;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102994238;51.509537;-0.127516;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1102994241;51.509190;-0.127262;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1102995756;51.511414;-0.128386;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102995757;51.511139;-0.128400;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102995758;51.511360;-0.128272;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102996989;51.513386;-0.129035;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102996992;51.513329;-0.129194;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102996994;51.513107;-0.129316;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1102996997;51.513065;-0.129050;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1103001639;51.515610;-0.128629;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1103212841;51.513325;-0.128948;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1103851009;51.650314;-0.063151;"{""highway"":""traffic_signals""}" london;traffic_signals;1104333749;51.421124;-0.207320;"{""highway"":""traffic_signals""}" london;traffic_signals;1104496292;51.519524;-0.120173;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1104496295;51.518845;-0.121371;"{""highway"":""traffic_signals""}" london;traffic_signals;1104496296;51.519379;-0.120063;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1104496309;51.519459;-0.119912;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1104496319;51.519478;-0.120100;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1106056853;51.511436;-0.118931;"{""highway"":""traffic_signals""}" london;traffic_signals;1106056876;51.509304;-0.124142;"{""highway"":""traffic_signals""}" london;traffic_signals;1108474941;51.376060;-0.152921;"{""highway"":""traffic_signals""}" london;traffic_signals;1110941496;51.502083;-0.158446;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1110941502;51.501617;-0.160275;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1110941516;51.502239;-0.158326;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1115974394;51.560059;-0.468888;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1116142938;51.492214;-0.178153;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1116142956;51.492207;-0.178313;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116142957;51.492153;-0.178435;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116178460;51.490528;-0.185903;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116178462;51.490665;-0.186044;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116178465;51.490654;-0.185887;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116178468;51.490551;-0.186209;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1116207696;51.488838;-0.222855;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals;island""}" london;traffic_signals;1117274878;51.513714;-0.303130;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1117582952;51.514591;-0.233766;"{""highway"":""traffic_signals""}" london;traffic_signals;1118872948;51.510445;-0.473794;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1119490639;51.502285;-0.174640;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1119490640;51.502159;-0.174388;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120315880;51.497162;-0.204147;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1120315892;51.497066;-0.204318;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120315912;51.497269;-0.204663;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348719;51.490669;-0.213151;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348749;51.495949;-0.208662;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1120348754;51.490791;-0.213398;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348760;51.490707;-0.213595;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348785;51.494091;-0.214309;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348788;51.494160;-0.214019;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348792;51.490757;-0.213019;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348795;51.494980;-0.211366;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120348800;51.494987;-0.211570;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120363231;51.487679;-0.222135;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1120456186;51.495335;-0.179271;"{""highway"":""traffic_signals""}" london;traffic_signals;1121437332;51.501431;-0.306810;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1126184002;51.490807;-0.191215;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1126184004;51.490723;-0.191281;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1126184018;51.490772;-0.191118;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1128210368;51.484879;-0.220048;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1128391656;51.491470;-0.227277;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1128391677;51.491409;-0.227063;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1128810130;51.475475;-0.187921;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1139387715;51.510578;-0.115090;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1139411937;51.546841;-0.098617;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1139411938;51.546818;-0.098328;"{""highway"":""traffic_signals""}" london;traffic_signals;1140859067;51.536812;-0.192090;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1143684241;51.445004;-0.019992;"{""highway"":""traffic_signals""}" london;traffic_signals;1143684259;51.445019;-0.020338;"{""highway"":""traffic_signals""}" london;traffic_signals;1143684269;51.445354;-0.019733;"{""highway"":""traffic_signals""}" london;traffic_signals;1149459135;51.526497;-0.108248;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1149802691;51.565449;-0.134280;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1153273612;51.616768;-0.244935;"{""highway"":""traffic_signals""}" london;traffic_signals;1153761658;51.524811;0.027371;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1155466816;51.463364;-0.169047;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1161589918;51.536400;-0.003989;"{""highway"":""traffic_signals""}" london;traffic_signals;1163837064;51.461933;-0.187853;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1163837212;51.461685;-0.187569;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1163837391;51.461838;-0.187942;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1163837438;51.461742;-0.187861;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1163837497;51.461716;-0.187370;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1163837700;51.461918;-0.187978;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1164346820;51.435516;-0.256338;"{""highway"":""traffic_signals""}" london;traffic_signals;1165573484;51.525417;-0.033557;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1165921261;51.463863;-0.167755;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1165921272;51.463627;-0.167963;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1165921281;51.463692;-0.168012;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1165921299;51.463909;-0.167776;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1165921305;51.463753;-0.167516;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1165921331;51.463924;-0.167726;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1165950648;51.535152;-0.005836;"{""highway"":""traffic_signals""}" london;traffic_signals;1165971181;51.517143;-0.067289;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1167277825;51.534931;-0.005464;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277829;51.536438;-0.004069;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277845;51.536488;-0.004399;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277863;51.536270;-0.004446;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277885;51.535099;-0.005724;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277896;51.535385;-0.005488;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277897;51.535320;-0.005308;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277942;51.535385;-0.005726;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277950;51.534988;-0.005383;"{""highway"":""traffic_signals""}" london;traffic_signals;1167277960;51.535423;-0.005690;"{""highway"":""traffic_signals""}" london;traffic_signals;1169745818;51.447735;-0.131936;"{""highway"":""traffic_signals""}" london;traffic_signals;1169782893;51.438370;-0.126970;"{""highway"":""traffic_signals""}" london;traffic_signals;1171104940;51.561829;-0.111475;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1174518656;51.541637;-0.001694;"{""highway"":""traffic_signals""}" london;traffic_signals;1174695101;51.504482;-0.220106;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1186043376;51.466900;-0.422185;"{""highway"":""traffic_signals""}" london;traffic_signals;1188082633;51.412395;-0.300690;"{""highway"":""traffic_signals""}" london;traffic_signals;1188082661;51.412495;-0.300722;"{""highway"":""traffic_signals""}" london;traffic_signals;1188235262;51.409626;-0.289107;"{""highway"":""traffic_signals""}" london;traffic_signals;1189506499;51.409271;-0.301038;"{""highway"":""traffic_signals""}" london;traffic_signals;1189506522;51.409405;-0.300744;"{""highway"":""traffic_signals""}" london;traffic_signals;1189506581;51.408100;-0.301801;"{""highway"":""traffic_signals""}" london;traffic_signals;1189506620;51.408054;-0.302078;"{""highway"":""traffic_signals""}" london;traffic_signals;1191148319;51.490959;0.077810;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1191148329;51.490955;0.082359;"{""highway"":""traffic_signals""}" london;traffic_signals;1192530579;51.427151;-0.131214;"{""highway"":""traffic_signals""}" london;traffic_signals;1192530605;51.427334;-0.131332;"{""highway"":""traffic_signals""}" london;traffic_signals;1195920811;51.408119;-0.301907;"{""highway"":""traffic_signals""}" london;traffic_signals;1198275640;51.459450;-0.306297;"{""highway"":""traffic_signals""}" london;traffic_signals;1198275664;51.464504;-0.300616;"{""highway"":""traffic_signals""}" london;traffic_signals;1198275671;51.461330;-0.303353;"{""highway"":""traffic_signals""}" london;traffic_signals;1198275686;51.458546;-0.305778;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1198275742;51.449383;-0.323020;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1198275753;51.452000;-0.315695;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1198931047;51.482059;-0.009135;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1203378805;51.516804;0.031871;"{""highway"":""traffic_signals""}" london;traffic_signals;1209300513;51.516247;0.025031;"{""highway"":""traffic_signals""}" london;traffic_signals;1209852963;51.515766;0.008790;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1209916134;51.508289;0.016125;"{""highway"":""traffic_signals""}" london;traffic_signals;1209916138;51.508385;0.016269;"{""highway"":""traffic_signals""}" london;traffic_signals;1209916157;51.508095;0.017220;"{""highway"":""traffic_signals""}" london;traffic_signals;1209916169;51.508259;0.016381;"{""highway"":""traffic_signals""}" london;traffic_signals;1210573584;51.493824;0.063200;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1210573599;51.493778;0.063426;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1212005181;51.426266;-0.339919;"{""highway"":""traffic_signals""}" london;traffic_signals;1214172269;51.549553;-0.054949;"{""highway"":""traffic_signals""}" london;traffic_signals;1214193339;51.506016;-0.095306;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1214922426;51.511993;-0.104101;"{""highway"":""traffic_signals""}" london;traffic_signals;1215563895;51.515095;-0.097200;"{""highway"":""traffic_signals""}" london;traffic_signals;1221111667;51.607395;0.263195;"{""highway"":""traffic_signals""}" london;traffic_signals;1222209491;51.531246;-0.127205;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1226769884;51.439964;-0.125781;"{""crossing"":""pelican"",""highway"":""traffic_signals""}" london;traffic_signals;1227938936;51.509579;-0.134634;"{""highway"":""traffic_signals""}" london;traffic_signals;1230341610;51.528423;-0.127939;"{""highway"":""traffic_signals""}" london;traffic_signals;1230908667;51.515396;-0.188388;"{""highway"":""traffic_signals""}" london;traffic_signals;1231977677;51.496704;-0.144633;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1231977687;51.496586;-0.144863;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1231977791;51.497108;-0.145988;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1231977820;51.496914;-0.139468;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1231977887;51.497002;-0.146137;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1232048662;51.497314;-0.135620;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1232377095;51.532364;-0.139339;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1235880073;51.503021;-0.152530;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1235889286;51.502552;-0.149881;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1235892803;51.503399;-0.150924;"{""highway"":""traffic_signals""}" london;traffic_signals;1239583152;51.573406;-0.097569;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1242641460;51.414410;-0.300972;"{""highway"":""traffic_signals""}" london;traffic_signals;1242641503;51.414341;-0.300917;"{""highway"":""traffic_signals""}" london;traffic_signals;1251965456;51.522938;-0.157897;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1264119066;51.459743;-0.012756;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1268886230;51.526127;-0.087681;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1274273770;51.493488;-0.048376;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1274273783;51.493538;-0.048468;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1274273784;51.493568;-0.048209;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1274273789;51.493561;-0.048291;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1280491924;51.516758;-0.085560;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1311962016;51.512432;-0.093286;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1311962122;51.512505;-0.093317;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1312264610;51.514656;-0.089747;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1312310533;51.557583;-0.147523;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1312932894;51.513569;-0.076828;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1315533325;51.517342;0.031950;"{""highway"":""traffic_signals""}" london;traffic_signals;1315533332;51.517490;0.032268;"{""highway"":""traffic_signals""}" london;traffic_signals;1315533333;51.517208;0.034229;"{""highway"":""traffic_signals""}" london;traffic_signals;1315533338;51.516922;0.032370;"{""highway"":""traffic_signals""}" london;traffic_signals;1317706961;51.517105;0.032263;"{""highway"":""traffic_signals""}" london;traffic_signals;1317706964;51.517941;0.032188;"{""highway"":""traffic_signals""}" london;traffic_signals;1317706967;51.516846;0.032031;"{""highway"":""traffic_signals""}" london;traffic_signals;1317707080;51.517712;0.032082;"{""highway"":""traffic_signals""}" london;traffic_signals;1317707083;51.517067;0.032408;"{""highway"":""traffic_signals""}" london;traffic_signals;1317707093;51.517818;0.032443;"{""highway"":""traffic_signals""}" london;traffic_signals;1317707110;51.517212;0.032056;"{""highway"":""traffic_signals""}" london;traffic_signals;1320378795;51.493217;-0.224212;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1320378802;51.493122;-0.223950;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1323984300;51.560680;-0.492971;"{""highway"":""traffic_signals""}" london;traffic_signals;1325390229;51.540890;0.001410;"{""highway"":""traffic_signals""}" london;traffic_signals;1337371015;51.538960;0.051240;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1339091259;51.529892;-0.102416;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1339091463;51.531227;-0.104522;"{""highway"":""traffic_signals""}" london;traffic_signals;1340118021;51.486790;-0.190327;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1341793727;51.529827;-0.115809;"{""highway"":""traffic_signals""}" london;traffic_signals;1341793733;51.529812;-0.115966;"{""highway"":""traffic_signals""}" london;traffic_signals;1341793735;51.522163;-0.135978;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1341793738;51.522198;-0.135876;"{""highway"":""traffic_signals""}" london;traffic_signals;1345318518;51.493290;-0.218815;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1345318534;51.493473;-0.216345;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1345766519;51.558586;-0.120548;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766521;51.552471;-0.112184;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766526;51.552799;-0.112401;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766538;51.552494;-0.112551;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766556;51.546295;-0.103418;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1345766568;51.552773;-0.112148;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766575;51.558296;-0.120319;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766588;51.552849;-0.112376;"{""highway"":""traffic_signals""}" london;traffic_signals;1345766589;51.546326;-0.103382;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1346106429;51.518341;0.013319;"{""highway"":""traffic_signals""}" london;traffic_signals;1346106431;51.518253;0.013691;"{""highway"":""traffic_signals""}" london;traffic_signals;1346106458;51.518024;0.012979;"{""highway"":""traffic_signals""}" london;traffic_signals;1346164945;51.514996;0.008116;"{""highway"":""traffic_signals""}" london;traffic_signals;1346164983;51.515541;0.007578;"{""highway"":""traffic_signals""}" london;traffic_signals;1346164985;51.515530;0.008726;"{""highway"":""traffic_signals""}" london;traffic_signals;1346164995;51.516136;0.007774;"{""highway"":""traffic_signals""}" london;traffic_signals;1346165024;51.515991;0.008601;"{""highway"":""traffic_signals""}" london;traffic_signals;1346165052;51.515518;0.009053;"{""highway"":""traffic_signals""}" london;traffic_signals;1346240059;51.519798;0.012053;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1348207047;51.540287;0.165403;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1349024362;51.472038;-0.405343;"{""highway"":""traffic_signals""}" london;traffic_signals;1349411613;51.531799;-0.109318;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1350606962;51.392910;0.111372;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876695;51.499634;-0.197107;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1351876699;51.500175;-0.195598;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876702;51.501537;-0.191841;"{""crossing"":""traffic_signals;island"",""highway"":""traffic_signals""}" london;traffic_signals;1351876707;51.500286;-0.195436;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876711;51.500542;-0.194576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876714;51.500099;-0.195533;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876729;51.500462;-0.194511;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351876736;51.500973;-0.193389;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1351876738;51.499607;-0.196899;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351879191;51.498890;-0.198498;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1351923014;51.526535;-0.083692;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1356420705;51.529953;-0.014436;"{""highway"":""traffic_signals""}" london;traffic_signals;1356420725;51.529888;-0.014380;"{""highway"":""traffic_signals""}" london;traffic_signals;1356420735;51.529633;-0.014581;"{""highway"":""traffic_signals""}" london;traffic_signals;1356901661;51.495068;-0.182872;"{""highway"":""traffic_signals""}" london;traffic_signals;1363493755;51.535049;-0.138922;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1363498727;51.538002;-0.141940;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1363657399;51.536797;-0.142217;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1363681906;51.525352;0.074615;"{""highway"":""traffic_signals""}" london;traffic_signals;1363688274;51.539291;-0.138889;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364077068;51.525208;-0.203683;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364077069;51.527199;-0.213576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364077070;51.524765;-0.202757;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364130986;51.506409;-0.237993;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364130988;51.506710;-0.246880;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364130989;51.506668;-0.253674;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364130991;51.506523;-0.240130;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364130994;51.506699;-0.250871;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364161197;51.517666;-0.107206;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364161199;51.517979;-0.107686;"{""highway"":""traffic_signals""}" london;traffic_signals;1364161201;51.517796;-0.107864;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364168180;51.517879;-0.107316;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1364172237;51.517719;-0.108043;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1365141255;51.532146;-0.127698;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1365887500;51.513451;-0.089924;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1366095187;51.516029;-0.097009;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1366095189;51.516953;-0.096869;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1367729300;51.608353;0.261192;"{""highway"":""traffic_signals""}" london;traffic_signals;1369709170;51.506577;-0.152201;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1369709175;51.506420;-0.152421;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1382081303;51.389458;-0.325196;"{""highway"":""traffic_signals""}" london;traffic_signals;1399265894;51.531570;-0.105284;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1399265895;51.531742;-0.105277;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1413476786;51.594002;-0.129471;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1413891167;51.600956;-0.017340;"{""highway"":""traffic_signals""}" london;traffic_signals;1413891192;51.601276;-0.017248;"{""highway"":""traffic_signals""}" london;traffic_signals;1413891230;51.600861;-0.017240;"{""highway"":""traffic_signals""}" london;traffic_signals;1413899640;51.601162;-0.015823;"{""highway"":""traffic_signals""}" london;traffic_signals;1413899691;51.601467;-0.016601;"{""highway"":""traffic_signals""}" london;traffic_signals;1413899698;51.600391;-0.016412;"{""highway"":""traffic_signals""}" london;traffic_signals;1414542363;51.599804;-0.023704;"{""crossing"":""traffic_signals""}" london;traffic_signals;1416564693;51.596115;0.010124;"{""highway"":""traffic_signals""}" london;traffic_signals;1416588995;51.594963;0.010523;"{""highway"":""traffic_signals""}" london;traffic_signals;1416600554;51.594933;0.010332;"{""highway"":""traffic_signals""}" london;traffic_signals;1427421955;51.523865;-0.145428;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427422074;51.523975;-0.145379;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427449277;51.535320;-0.148178;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427454164;51.535427;-0.147217;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427461969;51.535858;-0.146895;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427483066;51.536716;-0.146491;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427518591;51.538425;-0.144057;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427518605;51.538876;-0.142731;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427518613;51.538548;-0.144006;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427518625;51.539093;-0.142763;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427521711;51.540920;-0.142094;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427522854;51.542732;-0.141964;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427522855;51.542824;-0.141824;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427522865;51.542568;-0.141843;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1427528577;51.544834;-0.141493;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1434944546;51.582798;-0.031107;"{""crossing"":""traffic_signals""}" london;traffic_signals;1436436072;51.600651;-0.010301;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1436610032;51.543797;-0.011242;"{""highway"":""traffic_signals""}" london;traffic_signals;1439299034;51.607296;-0.085737;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1439501879;51.543919;-0.011220;"{""highway"":""traffic_signals""}" london;traffic_signals;1439767153;51.542076;-0.008598;"{""highway"":""traffic_signals""}" london;traffic_signals;1439824507;51.544182;-0.003840;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1440165671;51.542179;-0.008636;"{""highway"":""traffic_signals""}" london;traffic_signals;1440165699;51.540916;-0.006936;"{""highway"":""traffic_signals""}" london;traffic_signals;1440165705;51.540943;-0.006765;"{""highway"":""traffic_signals""}" london;traffic_signals;1446537392;51.380264;-0.281793;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1446537394;51.380119;-0.281840;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1446537425;51.377579;-0.279153;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1446537429;51.377754;-0.279133;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1447008789;51.616116;-0.084897;"{""highway"":""traffic_signals""}" london;traffic_signals;1447021627;51.616543;-0.087405;"{""highway"":""traffic_signals""}" london;traffic_signals;1447021635;51.616280;-0.086053;"{""highway"":""traffic_signals""}" london;traffic_signals;1447021646;51.616730;-0.086499;"{""highway"":""traffic_signals""}" london;traffic_signals;1447021661;51.616444;-0.087341;"{""highway"":""traffic_signals""}" london;traffic_signals;1447021691;51.616798;-0.086314;"{""highway"":""traffic_signals""}" london;traffic_signals;1447052072;51.534702;-0.124557;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1447169891;51.616238;-0.082823;"{""highway"":""traffic_signals""}" london;traffic_signals;1447169896;51.616032;-0.084773;"{""highway"":""traffic_signals""}" london;traffic_signals;1447193580;51.612724;-0.086774;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1447898997;51.614708;-0.068303;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1447902602;51.614868;-0.072163;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1447902608;51.614899;-0.071667;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1448066792;51.560200;-0.070323;"{""crossing"":""traffic_signals""}" london;traffic_signals;1448524558;51.407841;-0.303549;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1448681868;51.560738;0.147899;"{""highway"":""traffic_signals""}" london;traffic_signals;1448681877;51.561050;0.147477;"{""highway"":""traffic_signals""}" london;traffic_signals;1448846737;51.522785;-0.131657;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1449496496;51.621513;-0.255570;"{""highway"":""traffic_signals""}" london;traffic_signals;1449631772;51.407932;-0.303594;"{""highway"":""traffic_signals""}" london;traffic_signals;1449631776;51.407909;-0.303570;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1449631777;51.407871;-0.303699;"{""highway"":""traffic_signals""}" london;traffic_signals;1449631778;51.407776;-0.303312;"{""highway"":""traffic_signals""}" london;traffic_signals;1451199951;51.523106;-0.447703;"{""highway"":""traffic_signals""}" london;traffic_signals;1451200009;51.522766;-0.447426;"{""highway"":""traffic_signals""}" london;traffic_signals;1451200015;51.522957;-0.448017;"{""highway"":""traffic_signals""}" london;traffic_signals;1451319682;51.570690;-0.147523;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1451327189;51.569176;-0.142094;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1451327450;51.569214;-0.142359;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1451327451;51.569180;-0.142391;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1451327452;51.569145;-0.142018;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1451707001;51.448650;-0.446385;"{""highway"":""traffic_signals""}" london;traffic_signals;1451731063;51.442841;-0.473829;"{""highway"":""traffic_signals""}" london;traffic_signals;1453664756;51.370926;-0.096985;"{""highway"":""traffic_signals""}" london;traffic_signals;1453664784;51.370728;-0.096689;"{""highway"":""traffic_signals""}" london;traffic_signals;1453664796;51.371834;-0.096662;"{""highway"":""traffic_signals""}" london;traffic_signals;1453695020;51.370564;-0.096793;"{""highway"":""traffic_signals""}" london;traffic_signals;1453784955;51.428352;-0.033988;"{""highway"":""traffic_signals""}" london;traffic_signals;1453784998;51.428352;-0.034557;"{""highway"":""traffic_signals""}" london;traffic_signals;1453785008;51.428371;-0.034652;"{""highway"":""traffic_signals""}" london;traffic_signals;1453785009;51.428379;-0.034106;"{""highway"":""traffic_signals""}" london;traffic_signals;1453785022;51.428486;-0.034389;"{""highway"":""traffic_signals""}" london;traffic_signals;1453786869;51.428112;-0.034534;"{""highway"":""traffic_signals""}" london;traffic_signals;1453892506;51.337627;-0.116358;"{""highway"":""traffic_signals""}" london;traffic_signals;1454311707;51.403759;-0.240227;"{""highway"":""traffic_signals""}" london;traffic_signals;1454311709;51.403999;-0.240403;"{""highway"":""traffic_signals""}" london;traffic_signals;1454325707;51.404018;-0.240280;"{""highway"":""traffic_signals""}" london;traffic_signals;1454953271;51.398987;-0.187044;"{""highway"":""traffic_signals""}" london;traffic_signals;1456152049;51.611919;-0.031718;"{""highway"":""traffic_signals""}" london;traffic_signals;1456295057;51.351986;-0.037867;"{""highway"":""traffic_signals""}" london;traffic_signals;1464107096;51.642860;-0.255172;"{""highway"":""traffic_signals""}" london;traffic_signals;1466732705;51.449120;-0.074315;"{""crossing"":""yes"",""highway"":""traffic_signals""}" london;traffic_signals;1474298454;51.413757;-0.192624;"{""highway"":""traffic_signals""}" london;traffic_signals;1474298458;51.414043;-0.192535;"{""highway"":""traffic_signals""}" london;traffic_signals;1474298466;51.413834;-0.192627;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1484898085;51.461250;-0.302167;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1488974283;51.366577;-0.306879;"{""highway"":""traffic_signals""}" london;traffic_signals;1489009713;51.378475;-0.280219;"{""highway"":""traffic_signals""}" london;traffic_signals;1489009737;51.378590;-0.280263;"{""highway"":""traffic_signals""}" london;traffic_signals;1489014835;51.379597;-0.281048;"{""highway"":""traffic_signals""}" london;traffic_signals;1489676531;51.490967;0.081438;"{""highway"":""traffic_signals""}" london;traffic_signals;1489676532;51.490597;0.082365;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687601;51.491367;0.070168;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687604;51.491093;0.077984;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687606;51.491318;0.069996;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687608;51.491592;0.069475;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687610;51.490711;0.072941;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489687612;51.490784;0.073335;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1489750672;51.378780;-0.281196;"{""highway"":""traffic_signals""}" london;traffic_signals;1489947012;51.511356;-0.104885;"{""highway"":""traffic_signals""}" london;traffic_signals;1491004336;51.491077;0.069937;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1491283816;51.492645;0.085915;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1491283822;51.492596;0.086206;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1496229606;51.592693;0.040733;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1496229619;51.592751;0.041149;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1496229624;51.592754;0.041565;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1496239836;51.590149;0.048613;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1496239862;51.590290;0.048665;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1499717947;51.601109;-0.016049;"{""highway"":""traffic_signals""}" london;traffic_signals;1499717949;51.601162;-0.017118;"{""highway"":""traffic_signals""}" london;traffic_signals;1499735083;51.600571;-0.015807;"{""highway"":""traffic_signals""}" london;traffic_signals;1500714658;51.460052;0.047768;"{""highway"":""traffic_signals""}" london;traffic_signals;1500716547;51.460186;0.047577;"{""highway"":""traffic_signals""}" london;traffic_signals;1502103182;51.483780;-0.492510;"{""highway"":""traffic_signals""}" london;traffic_signals;1503756242;51.495045;-0.099726;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1503756252;51.495590;-0.100957;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1504568066;51.608372;0.261429;"{""highway"":""traffic_signals""}" london;traffic_signals;1504568067;51.608967;0.263836;"{""highway"":""traffic_signals""}" london;traffic_signals;1507753974;51.462067;0.110646;"{""highway"":""traffic_signals""}" london;traffic_signals;1508464353;51.500919;-0.193206;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1508467060;51.496223;-0.207107;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1508467061;51.496555;-0.206112;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1508484716;51.473740;-0.213029;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1511438757;51.530563;-0.122314;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1511438771;51.530643;-0.122136;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1511438773;51.530670;-0.122445;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1511438795;51.530727;-0.122539;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1514726033;51.522041;-0.145926;"{""highway"":""traffic_signals""}" london;traffic_signals;1520069355;51.522766;-0.125904;"{""highway"":""traffic_signals""}" london;traffic_signals;1521865435;51.520451;-0.086998;"{""note"":""island also"",""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1521865453;51.520638;-0.087252;"{""note"":""island also"",""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1527267765;51.522453;-0.111825;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1528999913;51.488644;-0.192464;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1530969637;51.540287;-0.070157;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1538908210;51.558739;-0.117794;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1549453812;51.494797;-0.141401;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1552717193;51.600964;-0.233698;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717197;51.600918;-0.233674;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717210;51.601040;-0.233899;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717216;51.601440;-0.234483;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717217;51.601040;-0.234016;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717227;51.601528;-0.234418;"{""highway"":""traffic_signals""}" london;traffic_signals;1552717234;51.600796;-0.234112;"{""highway"":""traffic_signals""}" london;traffic_signals;1552720442;51.588707;-0.205598;"{""highway"":""traffic_signals""}" london;traffic_signals;1552732628;51.642750;-0.255353;"{""highway"":""traffic_signals""}" london;traffic_signals;1557109974;51.505093;-0.217022;"{""highway"":""traffic_signals""}" london;traffic_signals;1558332792;51.426907;-0.190694;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1558429825;51.490860;-0.206576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1558429829;51.490944;-0.206632;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1560692400;51.464996;-0.248693;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1561064624;51.478870;-0.170494;"{""highway"":""traffic_signals""}" london;traffic_signals;1569016990;51.539719;-0.195430;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1570019226;51.519657;-0.262472;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1571540938;51.408005;-0.294563;"{""highway"":""traffic_signals""}" london;traffic_signals;1584018276;51.412548;-0.192632;"{""highway"":""traffic_signals""}" london;traffic_signals;1584018287;51.412540;-0.192508;"{""highway"":""traffic_signals""}" london;traffic_signals;1584078391;51.419594;-0.202802;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091312;51.420341;-0.205048;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091313;51.420433;-0.205043;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091332;51.419628;-0.202972;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091339;51.421799;-0.202840;"{""highway"":""traffic_signals""}" london;traffic_signals;1584091346;51.420364;-0.204900;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091374;51.420761;-0.206185;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091375;51.419697;-0.202839;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584091396;51.419861;-0.203636;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584094808;51.419403;-0.201344;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1584094809;51.419117;-0.199203;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1585611947;51.423531;-0.172682;"{""highway"":""traffic_signals""}" london;traffic_signals;1587361325;51.533432;-0.007977;"{""highway"":""traffic_signals""}" london;traffic_signals;1588256310;51.440395;-0.096024;"{""highway"":""traffic_signals""}" london;traffic_signals;1588342539;51.464783;-0.214817;"{""highway"":""traffic_signals""}" london;traffic_signals;1595406844;51.372711;-0.131625;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1597462600;51.456619;-0.192774;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1598278402;51.480167;-0.189782;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1598291355;51.486984;-0.221250;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1600943181;51.446579;-0.298846;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1600946596;51.446251;-0.300156;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601670281;51.496807;-0.206098;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601681511;51.505402;-0.226035;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601684573;51.505913;-0.228681;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601684885;51.506248;-0.231528;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601832340;51.519665;-0.101731;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1601832358;51.519760;-0.101646;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602844262;51.460735;-0.187812;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602849303;51.522636;-0.102094;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602849339;51.525654;-0.104076;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602849351;51.525787;-0.104217;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602849364;51.525829;-0.103904;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602849372;51.525887;-0.104010;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602885015;51.522392;-0.102016;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1602885018;51.522560;-0.101772;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1605031206;51.490242;-0.206548;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1605031251;51.490742;-0.207150;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1605031257;51.490849;-0.207118;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1605485599;51.489426;-0.206058;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1605697883;51.408066;0.016846;"{""highway"":""traffic_signals""}" london;traffic_signals;1606831546;51.372429;-0.151119;"{""highway"":""traffic_signals""}" london;traffic_signals;1607079587;51.522522;-0.102245;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1607421005;51.502575;-0.149589;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1607466004;51.459717;-0.012499;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1609307442;51.524883;-0.110402;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611159798;51.517326;-0.155363;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611159802;51.517464;-0.155275;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611159803;51.517506;-0.155435;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611159847;51.518219;-0.155757;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611183150;51.519344;-0.156271;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611183162;51.519478;-0.156151;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1611183169;51.519482;-0.156333;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612218513;51.522556;-0.143856;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612319338;51.520172;-0.156648;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612319339;51.520325;-0.156512;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612319347;51.520401;-0.156746;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612472676;51.521824;-0.157377;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612472721;51.522022;-0.157797;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612472735;51.522110;-0.157303;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612472736;51.522144;-0.157706;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1612820908;51.460827;-0.167051;"{""highway"":""traffic_signals""}" london;traffic_signals;1614146358;51.522217;-0.157257;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1614191533;51.466694;-0.189407;"{""highway"":""traffic_signals""}" london;traffic_signals;1614191535;51.477104;-0.191650;"{""highway"":""traffic_signals""}" london;traffic_signals;1614978621;51.516376;-0.119526;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049293;51.531433;-0.294447;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049298;51.531578;-0.294383;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049301;51.531406;-0.293020;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049304;51.529613;-0.292308;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049309;51.530334;-0.294990;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049312;51.529778;-0.292508;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049320;51.531460;-0.292825;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049324;51.529861;-0.292794;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049328;51.529526;-0.292695;"{""highway"":""traffic_signals""}" london;traffic_signals;1616049333;51.530293;-0.294739;"{""highway"":""traffic_signals""}" london;traffic_signals;1616162948;51.511410;-0.118833;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1617713594;51.517284;-0.142862;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1617713596;51.517300;-0.142761;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1617713600;51.517349;-0.142989;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1617713615;51.517529;-0.141575;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1617713618;51.517574;-0.141752;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1618016666;51.502541;-0.213864;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1618016672;51.502567;-0.214202;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1618016684;51.502701;-0.213836;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1618016690;51.502731;-0.214117;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1618230792;51.498070;-0.222454;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1619521350;51.539871;-0.187319;"{""highway"":""traffic_signals""}" london;traffic_signals;1620664221;51.531567;-0.182534;"{""highway"":""traffic_signals""}" london;traffic_signals;1621375304;51.533497;-0.187558;"{""highway"":""traffic_signals""}" london;traffic_signals;1621375314;51.534653;-0.180333;"{""highway"":""traffic_signals""}" london;traffic_signals;1621375323;51.535404;-0.178288;"{""highway"":""traffic_signals""}" london;traffic_signals;1623760797;51.526386;-0.100028;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1623760890;51.526543;-0.100003;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1623760909;51.526585;-0.100115;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1624002651;51.496151;-0.052216;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1624002682;51.496357;-0.052196;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1624002686;51.496407;-0.052456;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1624002691;51.496433;-0.052559;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1624002701;51.496429;-0.052354;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1625254498;51.468494;-0.506979;"{""highway"":""traffic_signals""}" london;traffic_signals;1628948931;51.550529;-0.021652;"{""highway"":""traffic_signals""}" london;traffic_signals;1631425310;51.459694;-0.075155;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1633735235;51.475445;-0.391254;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1633758283;51.478676;-0.367321;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1633758286;51.478577;-0.367140;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1633780564;51.483738;-0.325246;"{""highway"":""traffic_signals""}" london;traffic_signals;1634706145;51.480682;-0.199221;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1635822109;51.520580;-0.165456;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1635822113;51.520573;-0.165333;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1635914171;51.513371;-0.158984;"{""highway"":""traffic_signals""}" london;traffic_signals;1635914174;51.515003;-0.162852;"{""highway"":""traffic_signals""}" london;traffic_signals;1635914177;51.515488;-0.159977;"{""highway"":""traffic_signals""}" london;traffic_signals;1637999354;51.480869;-0.434259;"{""highway"":""traffic_signals""}" london;traffic_signals;1639968590;51.479897;-0.195662;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1639968611;51.479996;-0.195471;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827482;51.531410;0.147714;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827506;51.531506;0.147430;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827509;51.531506;0.148064;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827522;51.531601;0.147537;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827525;51.531612;0.148152;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1640827557;51.531807;0.148045;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1641519549;51.485973;-0.180905;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1643721518;51.594486;-0.090645;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721522;51.599758;-0.092016;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721565;51.607311;-0.085587;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721569;51.609177;-0.085661;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721573;51.609379;-0.085505;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721603;51.612644;-0.086640;"{""highway"":""traffic_signals""}" london;traffic_signals;1643721606;51.612823;-0.086969;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721607;51.612862;-0.086442;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721608;51.612961;-0.086622;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1643721612;51.613033;-0.086716;"{""highway"":""traffic_signals""}" london;traffic_signals;1643721746;51.636566;-0.081650;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1643930959;51.463181;-0.492561;"{""highway"":""traffic_signals""}" london;traffic_signals;1643981765;51.483063;-0.492795;"{""highway"":""traffic_signals""}" london;traffic_signals;1645281507;51.481647;-0.476564;"{""highway"":""traffic_signals""}" london;traffic_signals;1645281525;51.481785;-0.476562;"{""highway"":""traffic_signals""}" london;traffic_signals;1647046831;51.463257;-0.492888;"{""highway"":""traffic_signals""}" london;traffic_signals;1647046837;51.463634;-0.493998;"{""highway"":""traffic_signals""}" london;traffic_signals;1647046846;51.463844;-0.494062;"{""highway"":""traffic_signals""}" london;traffic_signals;1647047008;51.467731;-0.506674;"{""highway"":""traffic_signals""}" london;traffic_signals;1647047012;51.467773;-0.506825;"{""highway"":""traffic_signals""}" london;traffic_signals;1647047051;51.468452;-0.507170;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168853;51.448505;-0.447080;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168861;51.448612;-0.446954;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168890;51.448746;-0.446526;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168895;51.448792;-0.447401;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168925;51.449219;-0.446409;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168930;51.449245;-0.446204;"{""highway"":""traffic_signals""}" london;traffic_signals;1647168955;51.449402;-0.446765;"{""highway"":""traffic_signals""}" london;traffic_signals;1647632114;51.443932;-0.469165;"{""highway"":""traffic_signals""}" london;traffic_signals;1647632117;51.443977;-0.469495;"{""highway"":""traffic_signals""}" london;traffic_signals;1647632285;51.448776;-0.447640;"{""highway"":""traffic_signals""}" london;traffic_signals;1647911495;51.629677;-0.077941;"{""highway"":""traffic_signals""}" london;traffic_signals;1647911502;51.629745;-0.078400;"{""highway"":""traffic_signals""}" london;traffic_signals;1647911521;51.630020;-0.077881;"{""highway"":""traffic_signals""}" london;traffic_signals;1647911527;51.630032;-0.078438;"{""highway"":""traffic_signals""}" london;traffic_signals;1647918146;51.615685;-0.086874;"{""highway"":""traffic_signals""}" london;traffic_signals;1647918149;51.615730;-0.087069;"{""highway"":""traffic_signals""}" london;traffic_signals;1647918151;51.616127;-0.085828;"{""highway"":""traffic_signals""}" london;traffic_signals;1647918153;51.616695;-0.087949;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182281;51.449509;-0.446666;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182304;51.453060;-0.444258;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182305;51.453110;-0.444512;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182306;51.453171;-0.444172;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182309;51.453232;-0.444424;"{""highway"":""traffic_signals""}" london;traffic_signals;1648182491;51.466568;-0.422667;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251065;51.453918;-0.427416;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251151;51.459408;-0.412332;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251154;51.459450;-0.412171;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251247;51.463001;-0.415227;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251258;51.463219;-0.415350;"{""highway"":""traffic_signals""}" london;traffic_signals;1648251277;51.463284;-0.415269;"{""highway"":""traffic_signals""}" london;traffic_signals;1648320909;51.458652;-0.403338;"{""highway"":""traffic_signals""}" london;traffic_signals;1648778291;51.429043;-0.354291;"{""highway"":""traffic_signals""}" london;traffic_signals;1648778376;51.435131;-0.375011;"{""highway"":""traffic_signals""}" london;traffic_signals;1650191549;51.401196;-0.237538;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1650975418;51.549122;-0.107719;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1651335341;51.341316;-0.318108;"{""highway"":""traffic_signals""}" london;traffic_signals;1651797157;51.523472;-0.144212;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1651916659;51.599804;-0.091835;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1653312325;51.558205;-0.118757;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312327;51.560337;-0.115095;"{""highway"":""traffic_signals""}" london;traffic_signals;1653312333;51.561447;-0.112618;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312343;51.562584;-0.109381;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312349;51.562878;-0.108519;"{""highway"":""traffic_signals""}" london;traffic_signals;1653312376;51.575863;-0.084722;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312377;51.576935;-0.083693;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312378;51.578053;-0.082430;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312379;51.580608;-0.078188;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1653312388;51.581860;-0.075038;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1654482192;51.413799;-0.381553;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084446;51.539398;-0.142399;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084457;51.553181;-0.140888;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084460;51.555225;-0.139601;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084461;51.555828;-0.139172;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084478;51.560493;-0.137272;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084486;51.562763;-0.136024;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084556;51.564156;-0.130298;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1655084630;51.572445;-0.125780;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1658899367;51.504913;-0.075798;"{""highway"":""traffic_signals""}" london;traffic_signals;1658899500;51.505993;-0.075086;"{""highway"":""traffic_signals""}" london;traffic_signals;1660509194;51.500294;-0.127355;"{""highway"":""traffic_signals""}" london;traffic_signals;1660745918;51.532085;-0.192916;"{""highway"":""traffic_signals""}" london;traffic_signals;1660745996;51.536865;-0.192152;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1660746009;51.541859;-0.197959;"{""highway"":""traffic_signals""}" london;traffic_signals;1664655719;51.452377;-0.405707;"{""highway"":""traffic_signals""}" london;traffic_signals;1664655728;51.451916;-0.405764;"{""highway"":""traffic_signals""}" london;traffic_signals;1664711690;51.530579;-0.176592;"{""highway"":""traffic_signals""}" london;traffic_signals;1664711764;51.533272;-0.172976;"{""highway"":""traffic_signals""}" london;traffic_signals;1665157363;51.579300;-0.072927;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157379;51.581413;-0.072530;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157407;51.582779;-0.072520;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1665157427;51.583839;-0.072236;"{""highway"":""traffic_signals""}" london;traffic_signals;1665157433;51.585312;-0.071794;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157453;51.590828;-0.070048;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157464;51.595665;-0.068768;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157470;51.596630;-0.068386;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157475;51.600727;-0.067853;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157511;51.604546;-0.068065;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157519;51.611732;-0.065002;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1665157524;51.613087;-0.064741;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1666006223;51.478298;-0.493678;"{""highway"":""traffic_signals""}" london;traffic_signals;1666009552;51.478436;-0.493818;"{""highway"":""traffic_signals""}" london;traffic_signals;1666028023;51.479221;-0.486986;"{""highway"":""traffic_signals""}" london;traffic_signals;1666028028;51.479252;-0.486312;"{""highway"":""traffic_signals""}" london;traffic_signals;1666034526;51.479290;-0.486977;"{""highway"":""traffic_signals""}" london;traffic_signals;1666324097;51.515419;-0.154473;"{""highway"":""traffic_signals""}" london;traffic_signals;1666324108;51.515785;-0.152184;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;1666324130;51.515965;-0.157006;"{""highway"":""traffic_signals""}" london;traffic_signals;1666324135;51.515991;-0.150976;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;1666324146;51.516193;-0.149662;"{""highway"":""traffic_signals""}" london;traffic_signals;1666324195;51.516937;-0.151304;"{""highway"":""traffic_signals""}" london;traffic_signals;1667203485;51.516167;-0.149876;"{""highway"":""traffic_signals""}" london;traffic_signals;1667203491;51.516350;-0.148834;"{""highway"":""traffic_signals""}" london;traffic_signals;1667203511;51.516582;-0.147517;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1667283086;51.505196;-0.097714;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1667485266;51.479641;-0.433105;"{""highway"":""traffic_signals""}" london;traffic_signals;1667485283;51.479431;-0.428417;"{""highway"":""traffic_signals""}" london;traffic_signals;1667485294;51.479637;-0.428635;"{""highway"":""traffic_signals""}" london;traffic_signals;1667485301;51.479542;-0.428857;"{""highway"":""traffic_signals""}" london;traffic_signals;1667521218;51.466522;-0.422134;"{""highway"":""traffic_signals""}" london;traffic_signals;1667521223;51.466015;-0.419905;"{""highway"":""traffic_signals""}" london;traffic_signals;1667527230;51.463215;-0.415019;"{""highway"":""traffic_signals""}" london;traffic_signals;1667569356;51.472290;-0.405512;"{""highway"":""traffic_signals""}" london;traffic_signals;1667569360;51.471958;-0.405898;"{""highway"":""traffic_signals""}" london;traffic_signals;1667569390;51.471680;-0.405722;"{""highway"":""traffic_signals""}" london;traffic_signals;1667569398;51.472412;-0.405374;"{""highway"":""traffic_signals""}" london;traffic_signals;1668506616;51.493729;-0.174505;"{""highway"":""traffic_signals""}" london;traffic_signals;1670718875;51.579674;-0.123834;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1670718906;51.579697;-0.123917;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1670718983;51.579739;-0.123749;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1671272906;51.552181;-0.192956;"{""highway"":""traffic_signals""}" london;traffic_signals;1671981828;51.372189;-0.091766;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1671981840;51.372246;-0.091920;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1672580159;51.480869;-0.283606;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1677474767;51.523441;-0.108408;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678226827;51.510689;-0.086622;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678226846;51.510700;-0.086754;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678226917;51.510860;-0.085721;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678227045;51.511032;-0.085847;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678245252;51.513390;-0.083872;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678369047;51.580990;-0.211926;"{""highway"":""traffic_signals""}" london;traffic_signals;1678369048;51.581039;-0.212066;"{""highway"":""traffic_signals""}" london;traffic_signals;1678369337;51.592751;-0.234099;"{""highway"":""traffic_signals""}" london;traffic_signals;1678369345;51.592976;-0.234263;"{""highway"":""traffic_signals""}" london;traffic_signals;1678452728;51.507107;-0.104518;"{""highway"":""traffic_signals""}" london;traffic_signals;1678452732;51.507263;-0.104344;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678452734;51.507366;-0.104667;"{""highway"":""traffic_signals""}" london;traffic_signals;1678452753;51.510921;-0.104446;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678452795;51.513210;-0.098027;"{""highway"":""traffic_signals""}" london;traffic_signals;1678581690;51.549244;-0.465420;"{""highway"":""traffic_signals""}" london;traffic_signals;1678820258;51.514866;-0.173425;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678820567;51.515854;-0.174854;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678987031;51.519157;-0.169208;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1678987037;51.519176;-0.169260;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1679063050;51.357662;-0.216334;"{""highway"":""traffic_signals""}" london;traffic_signals;1679375999;51.379372;-0.280154;"{""highway"":""traffic_signals""}" london;traffic_signals;1680414589;51.425598;-0.220226;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680414594;51.425327;-0.218724;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680837211;51.526310;-0.112731;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680837220;51.526485;-0.113328;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680837228;51.526520;-0.113238;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680893582;51.524258;-0.116064;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680893657;51.527138;-0.118565;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1680893658;51.527245;-0.118441;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1681545656;51.486572;-0.252610;"{""highway"":""traffic_signals""}" london;traffic_signals;1681576522;51.404491;-0.341912;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1683443774;51.509106;-0.073427;"{""highway"":""traffic_signals""}" london;traffic_signals;1683568323;51.509521;-0.073864;"{""highway"":""traffic_signals""}" london;traffic_signals;1683687587;51.509365;-0.073484;"{""highway"":""traffic_signals""}" london;traffic_signals;1684049542;51.529705;-0.124290;"{""highway"":""traffic_signals""}" london;traffic_signals;1684049543;51.530174;-0.124310;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1684049554;51.530216;-0.124192;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1684049634;51.614967;-0.071793;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1684106441;51.491093;0.009052;"{""highway"":""traffic_signals""}" london;traffic_signals;1684107480;51.491726;0.008720;"{""highway"":""traffic_signals""}" london;traffic_signals;1684108142;51.491875;0.009345;"{""highway"":""traffic_signals""}" london;traffic_signals;1684123502;51.491379;0.008499;"{""highway"":""traffic_signals""}" london;traffic_signals;1684126490;51.510029;-0.074128;"{""highway"":""traffic_signals""}" london;traffic_signals;1684511838;51.513783;-0.092155;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1684511955;51.515030;-0.091975;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1684630303;51.494820;0.012245;"{""highway"":""traffic_signals""}" london;traffic_signals;1684833436;51.485744;-0.299417;"{""highway"":""traffic_signals""}" london;traffic_signals;1684833776;51.491402;-0.282675;"{""highway"":""traffic_signals""}" london;traffic_signals;1684865994;51.421795;-0.358984;"{""highway"":""traffic_signals""}" london;traffic_signals;1684989053;51.552094;-0.085574;"{""highway"":""traffic_signals""}" london;traffic_signals;1685168856;51.446701;-0.328155;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1685751692;51.517384;-0.142797;"{""highway"":""traffic_signals""}" london;traffic_signals;1685760099;51.525238;-0.090750;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1685777697;51.381115;-0.245978;"{""highway"":""traffic_signals""}" london;traffic_signals;1685777698;51.381168;-0.245908;"{""highway"":""traffic_signals""}" london;traffic_signals;1685784308;51.327820;-0.210052;"{""highway"":""traffic_signals""}" london;traffic_signals;1685784314;51.327835;-0.210178;"{""highway"":""traffic_signals""}" london;traffic_signals;1685957562;51.493206;-0.223844;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1686050878;51.577484;-0.368699;"{""highway"":""traffic_signals""}" london;traffic_signals;1686050879;51.577522;-0.368802;"{""highway"":""traffic_signals""}" london;traffic_signals;1686050880;51.581570;-0.364913;"{""highway"":""traffic_signals""}" london;traffic_signals;1687639094;51.457417;-0.493711;"{""highway"":""traffic_signals""}" london;traffic_signals;1687639104;51.457424;-0.493883;"{""highway"":""traffic_signals""}" london;traffic_signals;1689262115;51.523426;-0.197657;"{""highway"":""traffic_signals""}" london;traffic_signals;1689605561;51.513199;-0.077876;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1689605567;51.513214;-0.077854;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1689619924;51.524189;-0.201541;"{""highway"":""traffic_signals""}" london;traffic_signals;1689620037;51.525185;-0.197461;"{""highway"":""traffic_signals""}" london;traffic_signals;1689620257;51.527721;-0.197381;"{""highway"":""traffic_signals""}" london;traffic_signals;1690246784;51.541836;-0.173255;"{""highway"":""traffic_signals""}" london;traffic_signals;1690246937;51.543591;-0.162586;"{""highway"":""traffic_signals""}" london;traffic_signals;1690247077;51.544010;-0.153071;"{""highway"":""traffic_signals""}" london;traffic_signals;1690247375;51.546654;-0.158019;"{""highway"":""traffic_signals""}" london;traffic_signals;1691695826;51.486835;-0.116502;"{""highway"":""traffic_signals""}" london;traffic_signals;1692040020;51.547192;-0.186811;"{""highway"":""traffic_signals""}" london;traffic_signals;1693326351;51.373981;-0.105705;"{""highway"":""traffic_signals""}" london;traffic_signals;1693911457;51.509624;-0.025922;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1694422207;51.522949;-0.077938;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1694505356;51.523636;-0.079163;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1694505357;51.524258;-0.080163;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1694505449;51.525131;-0.081762;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1694591960;51.526039;-0.087820;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695218631;51.523720;-0.079078;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695218650;51.524399;-0.080412;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695296485;51.519348;-0.074497;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695296556;51.520073;-0.074438;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695296795;51.522739;-0.077749;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1695310819;51.501945;-0.151459;"{""highway"":""traffic_signals""}" london;traffic_signals;1696027870;51.504246;-0.114659;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1697948165;51.471672;-0.414839;"{""highway"":""traffic_signals""}" london;traffic_signals;1697948225;51.473942;-0.494391;"{""highway"":""traffic_signals""}" london;traffic_signals;1697948295;51.479366;-0.432845;"{""highway"":""traffic_signals""}" london;traffic_signals;1697948345;51.479462;-0.433247;"{""highway"":""traffic_signals""}" london;traffic_signals;1697948384;51.480553;-0.434304;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1699845066;51.509094;-0.219151;"{""highway"":""traffic_signals""}" london;traffic_signals;1699964732;51.523792;-0.063941;"{""highway"":""traffic_signals""}" london;traffic_signals;1700106533;51.516933;-0.126756;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1700106576;51.517002;-0.126962;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1700106707;51.517101;-0.125916;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1700140638;51.516193;-0.126267;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1702832147;51.435993;-0.255561;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1702832166;51.436031;-0.256045;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1708231910;51.463810;-0.167552;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1713684590;51.468845;-0.509334;"{""highway"":""traffic_signals""}" london;traffic_signals;1715004789;51.487106;-0.253024;"{""highway"":""traffic_signals""}" london;traffic_signals;1715004839;51.486912;-0.252026;"{""highway"":""traffic_signals""}" london;traffic_signals;1715004867;51.487335;-0.252483;"{""highway"":""traffic_signals""}" london;traffic_signals;1715004921;51.486938;-0.251850;"{""highway"":""traffic_signals""}" london;traffic_signals;1715004957;51.487053;-0.252822;"{""highway"":""traffic_signals""}" london;traffic_signals;1715158900;51.492874;-0.149077;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1716099103;51.515827;-0.136914;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1716099125;51.515930;-0.136843;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1721713677;51.514717;-0.089484;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1721713699;51.514843;-0.089646;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1722268367;51.516819;-0.085534;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1722268378;51.516861;-0.085571;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1724712911;51.323017;-0.134822;"{""highway"":""traffic_signals""}" london;traffic_signals;1727000337;51.478733;-0.010686;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038119;51.480686;-0.009382;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038121;51.480690;-0.009250;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038133;51.480785;-0.009334;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038189;51.481319;-0.010101;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038191;51.481358;-0.009994;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727038202;51.481449;-0.010135;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727123527;51.505833;-0.378744;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1727529875;51.501122;-0.127493;"{""highway"":""traffic_signals""}" london;traffic_signals;1728044555;51.389454;-0.065720;"{""highway"":""traffic_signals""}" london;traffic_signals;1729572838;51.485710;0.007020;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1730342669;51.484348;0.002155;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1734261474;51.367699;-0.306490;"{""highway"":""traffic_signals""}" london;traffic_signals;1734261480;51.367710;-0.306611;"{""highway"":""traffic_signals""}" london;traffic_signals;1736086250;51.360973;-0.309371;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1736525679;51.484402;-0.049447;"{""highway"":""traffic_signals""}" london;traffic_signals;1745285994;51.614712;-0.127096;"{""highway"":""traffic_signals""}" london;traffic_signals;1745361165;51.615093;-0.127300;"{""highway"":""traffic_signals""}" london;traffic_signals;1745361187;51.614952;-0.128153;"{""highway"":""traffic_signals""}" london;traffic_signals;1745361189;51.615047;-0.127217;"{""highway"":""traffic_signals""}" london;traffic_signals;1747582932;51.509232;-0.221618;"{""highway"":""traffic_signals""}" london;traffic_signals;1747678311;51.509151;-0.221724;"{""highway"":""traffic_signals""}" london;traffic_signals;1747678312;51.509010;-0.221764;"{""highway"":""traffic_signals""}" london;traffic_signals;1747678313;51.508690;-0.222116;"{""highway"":""traffic_signals""}" london;traffic_signals;1748004258;51.374126;-0.096623;"{""highway"":""traffic_signals""}" london;traffic_signals;1751777985;51.374683;-0.090569;"{""highway"":""traffic_signals""}" london;traffic_signals;1757164225;51.425129;-0.382944;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1759071600;51.501892;-0.170041;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1762952912;51.526939;-0.080549;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1763037855;51.526848;-0.080394;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1763296619;51.419998;-0.128028;"{""highway"":""traffic_signals""}" london;traffic_signals;1764426966;51.527008;-0.080364;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1767752827;51.468895;-0.276925;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1768844021;51.540077;0.153158;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1770285345;51.526196;-0.080333;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1770308182;51.526764;-0.081376;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1770308190;51.526794;-0.081199;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1770308209;51.526848;-0.081268;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1771321247;51.523075;-0.150997;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1771321250;51.523209;-0.150850;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1773062919;51.419865;-0.128244;"{""highway"":""traffic_signals""}" london;traffic_signals;1773062932;51.420174;-0.128170;"{""highway"":""traffic_signals""}" london;traffic_signals;1773063074;51.423008;-0.129706;"{""highway"":""traffic_signals""}" london;traffic_signals;1777484315;51.526306;-0.274479;"{""highway"":""traffic_signals""}" london;traffic_signals;1781908251;51.438919;-0.426282;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1782019856;51.500965;-0.124412;"{""highway"":""traffic_signals""}" london;traffic_signals;1782019879;51.500908;-0.125816;"{""highway"":""traffic_signals""}" london;traffic_signals;1782019898;51.501007;-0.124316;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020034;51.501194;-0.126130;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020107;51.502148;-0.126070;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020291;51.500237;-0.126267;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020337;51.500195;-0.127719;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020400;51.501015;-0.126390;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020433;51.500137;-0.126091;"{""highway"":""traffic_signals""}" london;traffic_signals;1782020519;51.502125;-0.126273;"{""highway"":""traffic_signals""}" london;traffic_signals;1782885578;51.473198;-0.121643;"{""highway"":""traffic_signals""}" london;traffic_signals;1782885598;51.473175;-0.122350;"{""highway"":""traffic_signals""}" london;traffic_signals;1782885615;51.473095;-0.121662;"{""highway"":""traffic_signals""}" london;traffic_signals;1782885645;51.473133;-0.121721;"{""highway"":""traffic_signals""}" london;traffic_signals;1782989389;51.538563;-0.144018;"{""highway"":""traffic_signals""}" london;traffic_signals;1782989437;51.538387;-0.144106;"{""highway"":""traffic_signals""}" london;traffic_signals;1782989445;51.538368;-0.143846;"{""highway"":""traffic_signals""}" london;traffic_signals;1787915304;51.366707;-0.118304;"{""highway"":""traffic_signals""}" london;traffic_signals;1794145627;51.539337;-0.142225;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1794145780;51.531448;-0.135325;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1794145911;51.538799;-0.142527;"{""highway"":""traffic_signals""}" london;traffic_signals;1795464109;51.409451;-0.213229;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1795464111;51.408829;-0.229806;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1795464125;51.410820;-0.209517;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1795464132;51.409485;-0.230460;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1796184774;51.457043;-0.197599;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1797237662;51.441772;-0.084542;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1805488747;51.479462;-0.449323;"{""highway"":""traffic_signals""}" london;traffic_signals;1805488748;51.479614;-0.449407;"{""highway"":""traffic_signals""}" london;traffic_signals;1811886212;51.511391;-0.104225;"{""highway"":""traffic_signals""}" london;traffic_signals;1812447928;51.503948;-0.025674;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1812447931;51.504021;-0.025307;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1812447936;51.503895;-0.025130;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1812447964;51.503284;-0.025203;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1813232745;51.509499;0.018165;"{""highway"":""traffic_signals""}" london;traffic_signals;1813446022;51.490829;0.082494;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1813447181;51.489861;0.085380;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1813517736;51.649345;-0.059885;"{""highway"":""traffic_signals""}" london;traffic_signals;1821516211;51.601105;-0.232845;"{""highway"":""traffic_signals""}" london;traffic_signals;1824077922;51.459419;-0.198626;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1827621081;51.504498;-0.083238;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;1828371632;51.470932;-0.406027;"{""highway"":""traffic_signals""}" london;traffic_signals;1828408299;51.510971;-0.107935;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1828408301;51.511059;-0.107933;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1828499467;51.542233;-0.346067;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1828560856;51.500332;-0.073840;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;1828560858;51.500366;-0.073802;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;1828560863;51.500565;-0.073839;"{""crossing"":""controlled"",""highway"":""traffic_signals""}" london;traffic_signals;1828793858;51.477509;-0.101465;"{""highway"":""traffic_signals""}" london;traffic_signals;1832129759;51.515961;-0.104753;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;1832129789;51.516727;-0.103463;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;1832129849;51.517513;-0.107504;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1832129856;51.517555;-0.107408;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1832129878;51.517738;-0.107196;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1832248428;51.517567;-0.107735;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1832248449;51.517921;-0.107389;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1834075744;51.483414;-0.116490;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1834829670;51.539524;-0.085730;"{""highway"":""traffic_signals""}" london;traffic_signals;1838949288;51.435825;-0.143964;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843189567;51.401566;-0.190389;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843189603;51.401691;-0.190389;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843189608;51.401730;-0.190275;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843189674;51.403141;-0.192049;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843189688;51.403187;-0.192236;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1843327290;51.547733;-0.056323;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1845141005;51.594971;-0.144883;"{""crossing"":""island"",""highway"":""traffic_signals""}" london;traffic_signals;1845141006;51.594990;-0.145412;"{""highway"":""traffic_signals""}" london;traffic_signals;1845141007;51.595348;-0.145015;"{""highway"":""traffic_signals""}" london;traffic_signals;1845141008;51.595543;-0.144927;"{""crossing"":""uncontrolled"",""highway"":""traffic_signals""}" london;traffic_signals;1847093589;51.580376;0.073466;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1861586686;51.339363;-0.292793;"{""highway"":""traffic_signals""}" london;traffic_signals;1862200595;51.588165;-0.093660;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1862219119;51.602909;-0.087249;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1864047135;51.511269;-0.073110;"{""highway"":""traffic_signals""}" london;traffic_signals;1865629977;51.616520;-0.087947;"{""highway"":""traffic_signals""}" london;traffic_signals;1865630006;51.629707;-0.078217;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1865630007;51.630051;-0.078126;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1867990079;51.511135;-0.107890;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1868411731;51.495106;-0.099894;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1868411756;51.495644;-0.101064;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1868411758;51.495712;-0.101016;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1876059988;51.578457;-0.098958;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1881093194;51.509014;-0.024263;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1881093201;51.508980;-0.024290;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1887555614;51.434185;-0.128283;"{""highway"":""traffic_signals""}" london;traffic_signals;1887555665;51.436966;-0.127674;"{""highway"":""traffic_signals""}" london;traffic_signals;1896037114;51.640911;-0.162253;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1896037118;51.647449;-0.189470;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1896067101;51.647449;-0.132739;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1898062904;51.498768;-0.060589;"{""highway"":""traffic_signals""}" london;traffic_signals;1907483313;51.569321;-0.346913;"{""highway"":""traffic_signals""}" london;traffic_signals;1907483314;51.569355;-0.347025;"{""highway"":""traffic_signals""}" london;traffic_signals;1912168473;51.588802;-0.109879;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1912460170;51.364742;-0.118287;"{""highway"":""traffic_signals""}" london;traffic_signals;1920276336;51.566616;-0.321975;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1920276342;51.566685;-0.322054;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1927002476;51.383545;-0.065279;"{""highway"":""traffic_signals""}" london;traffic_signals;1927002816;51.385868;-0.062893;"{""highway"":""traffic_signals""}" london;traffic_signals;1927220454;51.515965;-0.129385;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1930291894;51.461288;-0.160153;"{""highway"":""traffic_signals""}" london;traffic_signals;1930299761;51.460945;-0.161821;"{""highway"":""traffic_signals""}" london;traffic_signals;1930299767;51.461079;-0.161930;"{""highway"":""traffic_signals""}" london;traffic_signals;1930299771;51.460945;-0.161870;"{""highway"":""traffic_signals""}" london;traffic_signals;1930299794;51.461071;-0.161499;"{""highway"":""traffic_signals""}" london;traffic_signals;1930352252;51.461281;-0.156384;"{""highway"":""traffic_signals""}" london;traffic_signals;1930352280;51.461327;-0.156579;"{""highway"":""traffic_signals""}" london;traffic_signals;1930352284;51.461250;-0.156264;"{""highway"":""traffic_signals""}" london;traffic_signals;1930681927;51.461300;-0.156631;"{""highway"":""traffic_signals""}" london;traffic_signals;1930705214;51.412231;-0.067233;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1933419536;51.463768;-0.167449;"{""highway"":""traffic_signals""}" london;traffic_signals;1933419555;51.463848;-0.167857;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1933419568;51.463924;-0.165514;"{""highway"":""traffic_signals""}" london;traffic_signals;1933419571;51.463974;-0.165673;"{""highway"":""traffic_signals""}" london;traffic_signals;1933553916;51.518959;-0.148629;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1933553937;51.519100;-0.148552;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1933870286;51.520187;-0.142771;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1934001688;51.644779;-0.060566;"{""highway"":""traffic_signals""}" london;traffic_signals;1934001693;51.644882;-0.060199;"{""highway"":""traffic_signals""}" london;traffic_signals;1934001703;51.645012;-0.060634;"{""highway"":""traffic_signals""}" london;traffic_signals;1934001710;51.645058;-0.060329;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193453;51.649143;-0.059845;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193458;51.649239;-0.060280;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193459;51.649273;-0.060430;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193466;51.649578;-0.060414;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193480;51.650028;-0.063416;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193482;51.650131;-0.063186;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193486;51.650314;-0.063340;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193487;51.650314;-0.063654;"{""highway"":""traffic_signals""}" london;traffic_signals;1934193488;51.650383;-0.063584;"{""highway"":""traffic_signals""}" london;traffic_signals;1934300000;51.611809;-0.031383;"{""highway"":""traffic_signals""}" london;traffic_signals;1934300008;51.611851;-0.031783;"{""highway"":""traffic_signals""}" london;traffic_signals;1934425701;51.561062;0.148338;"{""highway"":""traffic_signals""}" london;traffic_signals;1934425706;51.561253;0.147968;"{""highway"":""traffic_signals""}" london;traffic_signals;1935831863;51.512051;-0.027882;"{""highway"":""traffic_signals""}" london;traffic_signals;1935839335;51.511662;-0.028261;"{""highway"":""traffic_signals""}" london;traffic_signals;1936005006;51.500904;-0.139608;"{""highway"":""traffic_signals""}" london;traffic_signals;1936062421;51.500854;-0.123599;"{""highway"":""traffic_signals""}" london;traffic_signals;1936062445;51.501141;-0.123883;"{""highway"":""traffic_signals""}" london;traffic_signals;1936062447;51.501144;-0.123971;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291609;51.576050;0.042835;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291610;51.575905;0.045192;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291612;51.576973;0.043972;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291613;51.576809;0.043776;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291615;51.575832;0.045479;"{""highway"":""traffic_signals""}" london;traffic_signals;1936291616;51.576092;0.042655;"{""highway"":""traffic_signals""}" london;traffic_signals;1936297520;51.525330;0.074413;"{""highway"":""traffic_signals""}" london;traffic_signals;1936297527;51.526024;0.073414;"{""highway"":""traffic_signals""}" london;traffic_signals;1936459687;51.474567;-0.023765;"{""highway"":""traffic_signals""}" london;traffic_signals;1936459691;51.474670;-0.024322;"{""highway"":""traffic_signals""}" london;traffic_signals;1936459694;51.474777;-0.023750;"{""highway"":""traffic_signals""}" london;traffic_signals;1936459696;51.474789;-0.023850;"{""highway"":""traffic_signals""}" london;traffic_signals;1936574780;51.474602;-0.041757;"{""highway"":""traffic_signals""}" london;traffic_signals;1936574797;51.474800;-0.040561;"{""highway"":""traffic_signals""}" london;traffic_signals;1936574805;51.474873;-0.041522;"{""highway"":""traffic_signals""}" london;traffic_signals;1936671441;51.473869;-0.068674;"{""highway"":""traffic_signals""}" london;traffic_signals;1936671447;51.473915;-0.068722;"{""highway"":""traffic_signals""}" london;traffic_signals;1936671478;51.474091;-0.068658;"{""highway"":""traffic_signals""}" london;traffic_signals;1936857377;51.519707;-0.184825;"{""highway"":""traffic_signals""}" london;traffic_signals;1937709569;51.484501;-0.125988;"{""highway"":""traffic_signals""}" london;traffic_signals;1937919746;51.515312;-0.226510;"{""highway"":""traffic_signals""}" london;traffic_signals;1937948454;51.508911;-0.196894;"{""highway"":""traffic_signals""}" london;traffic_signals;1937962747;51.499622;-0.196859;"{""highway"":""traffic_signals""}" london;traffic_signals;1937962751;51.500164;-0.195636;"{""highway"":""traffic_signals""}" london;traffic_signals;1937962754;51.500210;-0.195222;"{""highway"":""traffic_signals""}" london;traffic_signals;1937962756;51.500332;-0.195478;"{""highway"":""traffic_signals""}" london;traffic_signals;1938175710;51.581596;-0.090409;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1938240186;51.501476;-0.161204;"{""highway"":""traffic_signals""}" london;traffic_signals;1938240191;51.501659;-0.160944;"{""highway"":""traffic_signals""}" london;traffic_signals;1938240214;51.501865;-0.160473;"{""highway"":""traffic_signals""}" london;traffic_signals;1938264019;51.502815;-0.152275;"{""highway"":""traffic_signals""}" london;traffic_signals;1938580076;51.511902;-0.126912;"{""highway"":""traffic_signals""}" london;traffic_signals;1938953393;51.517406;-0.120383;"{""highway"":""traffic_signals""}" london;traffic_signals;1938953440;51.519547;-0.119912;"{""highway"":""traffic_signals""}" london;traffic_signals;1939558650;51.513149;-0.088769;"{""highway"":""traffic_signals""}" london;traffic_signals;1939558659;51.513268;-0.090062;"{""highway"":""traffic_signals""}" london;traffic_signals;1939558660;51.513290;-0.089250;"{""highway"":""traffic_signals""}" london;traffic_signals;1939558671;51.513344;-0.088430;"{""highway"":""traffic_signals""}" london;traffic_signals;1939558675;51.513374;-0.089294;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1939558690;51.513466;-0.089456;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1939558695;51.513557;-0.088486;"{""highway"":""traffic_signals""}" london;traffic_signals;1941530563;51.419868;-0.078291;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1941530580;51.420033;-0.078449;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1946796260;51.591915;-0.333248;"{""highway"":""traffic_signals""}" london;traffic_signals;1947257517;51.511204;-0.119597;"{""highway"":""traffic_signals""}" london;traffic_signals;1947276617;51.510452;-0.121367;"{""highway"":""traffic_signals""}" london;traffic_signals;1947276620;51.510456;-0.121578;"{""highway"":""traffic_signals""}" london;traffic_signals;1947324459;51.508980;-0.144002;"{""highway"":""traffic_signals""}" london;traffic_signals;1947324470;51.512074;-0.139730;"{""highway"":""traffic_signals""}" london;traffic_signals;1951103382;51.514263;-0.073826;"{""highway"":""traffic_signals""}" london;traffic_signals;1951103388;51.514641;-0.074156;"{""highway"":""traffic_signals""}" london;traffic_signals;1951190475;51.514549;-0.073634;"{""highway"":""traffic_signals""}" london;traffic_signals;1951190476;51.514603;-0.074260;"{""highway"":""traffic_signals""}" london;traffic_signals;1951242848;51.509487;-0.073548;"{""highway"":""traffic_signals""}" london;traffic_signals;1951242850;51.509811;-0.074448;"{""highway"":""traffic_signals""}" london;traffic_signals;1951396374;51.514812;-0.065857;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1951616232;51.510757;-0.085832;"{""highway"":""traffic_signals""}" london;traffic_signals;1951616284;51.510906;-0.085715;"{""highway"":""traffic_signals""}" london;traffic_signals;1951616292;51.510941;-0.085864;"{""highway"":""traffic_signals""}" london;traffic_signals;1951616297;51.510986;-0.085933;"{""highway"":""traffic_signals""}" london;traffic_signals;1953036374;51.531010;-0.104524;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197835;51.576336;0.066242;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197852;51.576660;0.066831;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197869;51.576611;0.065761;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197871;51.576706;0.067053;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197877;51.576172;0.066168;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197891;51.576557;0.065911;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197895;51.576878;0.066295;"{""highway"":""traffic_signals""}" london;traffic_signals;1953197901;51.576767;0.066272;"{""highway"":""traffic_signals""}" london;traffic_signals;1953281381;51.595211;0.012077;"{""highway"":""traffic_signals""}" london;traffic_signals;1953281387;51.596340;0.011712;"{""highway"":""traffic_signals""}" london;traffic_signals;1953281391;51.595295;0.011899;"{""highway"":""traffic_signals""}" london;traffic_signals;1953281404;51.596027;0.010212;"{""highway"":""traffic_signals""}" london;traffic_signals;1953281438;51.596287;0.011604;"{""highway"":""traffic_signals""}" london;traffic_signals;1953749503;51.500343;-0.116506;"{""highway"":""traffic_signals""}" london;traffic_signals;1953749506;51.500439;-0.116923;"{""highway"":""traffic_signals""}" london;traffic_signals;1953749509;51.500507;-0.116836;"{""highway"":""traffic_signals""}" london;traffic_signals;1953749528;51.500877;-0.115788;"{""highway"":""traffic_signals""}" london;traffic_signals;1953893735;51.524681;-0.127894;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1954678413;51.531406;-0.104203;"{""highway"":""traffic_signals""}" london;traffic_signals;1954751963;51.526348;-0.083829;"{""highway"":""traffic_signals""}" london;traffic_signals;1954751967;51.526329;-0.084124;"{""highway"":""traffic_signals""}" london;traffic_signals;1960297433;51.487957;-0.076516;"{""highway"":""traffic_signals""}" london;traffic_signals;1960297437;51.487816;-0.076521;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1960297441;51.488052;-0.076492;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1960297474;51.488201;-0.076093;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1960297481;51.487858;-0.076182;"{""highway"":""traffic_signals""}" london;traffic_signals;1960297488;51.487980;-0.076120;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1960297501;51.488083;-0.075987;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1960297512;51.488075;-0.076090;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1960339675;51.488907;-0.077874;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1960339682;51.488956;-0.077735;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1960355031;51.488804;-0.077738;"{""highway"":""traffic_signals""}" london;traffic_signals;1960807647;51.489532;-0.131462;"{""highway"":""traffic_signals""}" london;traffic_signals;1960807649;51.489716;-0.131625;"{""highway"":""traffic_signals""}" london;traffic_signals;1960905151;51.496609;-0.144979;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1961391694;51.614769;-0.127509;"{""highway"":""traffic_signals""}" london;traffic_signals;1961391695;51.614811;-0.127320;"{""highway"":""traffic_signals""}" london;traffic_signals;1961442183;51.610985;-0.135348;"{""highway"":""traffic_signals""}" london;traffic_signals;1961442191;51.611092;-0.135867;"{""highway"":""traffic_signals""}" london;traffic_signals;1961442193;51.611221;-0.135410;"{""highway"":""traffic_signals""}" london;traffic_signals;1961442194;51.611336;-0.135865;"{""highway"":""traffic_signals""}" london;traffic_signals;1961442250;51.614944;-0.127912;"{""highway"":""traffic_signals""}" london;traffic_signals;1961706007;51.583435;-0.018714;"{""highway"":""traffic_signals""}" london;traffic_signals;1961967131;51.501762;-0.151502;"{""highway"":""traffic_signals""}" london;traffic_signals;1965789177;51.331566;-0.124805;"{""highway"":""traffic_signals""}" london;traffic_signals;1966643850;51.512096;0.185127;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1966643854;51.511478;0.184520;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1969830058;51.594524;-0.168825;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1970778290;51.448853;-0.237938;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1974396812;51.375080;-0.080760;"{""highway"":""traffic_signals""}" london;traffic_signals;1978322872;51.468742;-0.509394;"{""highway"":""traffic_signals""}" london;traffic_signals;1978322882;51.467651;-0.509892;"{""highway"":""traffic_signals""}" london;traffic_signals;1978322883;51.467693;-0.509704;"{""highway"":""traffic_signals""}" london;traffic_signals;1982846875;51.612965;-0.086553;"{""highway"":""traffic_signals""}" london;traffic_signals;1985774548;51.493176;-0.073719;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1985774550;51.493301;-0.073882;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1987115196;51.504971;-0.007360;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1987115198;51.505051;-0.007353;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1988479371;51.501263;-0.075720;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1988479384;51.501286;-0.075693;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;1990685517;51.546326;-0.079586;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1990912115;51.511269;-0.075114;"{""highway"":""traffic_signals""}" london;traffic_signals;1990912123;51.511135;-0.075056;"{""highway"":""traffic_signals""}" london;traffic_signals;1992569752;51.546547;-0.087265;"{""highway"":""traffic_signals""}" london;traffic_signals;1994081035;51.544678;-0.032880;"{""highway"":""traffic_signals""}" london;traffic_signals;1994081037;51.544750;-0.032727;"{""highway"":""traffic_signals""}" london;traffic_signals;1996917919;51.419704;-0.081005;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1997021713;51.419640;-0.083072;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1998572647;51.418308;-0.082334;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1998832002;51.506252;-0.102062;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;1998832003;51.505379;-0.104493;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2001147689;51.416935;-0.081358;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2001147693;51.416962;-0.081472;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2002455020;51.441151;-0.091283;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2007068501;51.483639;-0.493122;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068502;51.483749;-0.492719;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068506;51.483063;-0.492601;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068511;51.483368;-0.492911;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068512;51.483559;-0.492491;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068513;51.483505;-0.492480;"{""highway"":""traffic_signals""}" london;traffic_signals;2007068515;51.483597;-0.493113;"{""highway"":""traffic_signals""}" london;traffic_signals;2007094507;51.483860;-0.492904;"{""highway"":""traffic_signals""}" london;traffic_signals;2008891522;51.525440;-0.033470;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010515698;51.480721;-0.428716;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010515704;51.480492;-0.433813;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010515729;51.480736;-0.434607;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010515744;51.480606;-0.433991;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010526976;51.481041;-0.422028;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010526977;51.480518;-0.428478;"{""highway"":""traffic_signals""}" london;traffic_signals;2010526979;51.480965;-0.421805;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010542823;51.479809;-0.411014;"{""highway"":""traffic_signals""}" london;traffic_signals;2010542833;51.479458;-0.410256;"{""highway"":""traffic_signals""}" london;traffic_signals;2010542851;51.479546;-0.410995;"{""highway"":""traffic_signals""}" london;traffic_signals;2010542864;51.478886;-0.407755;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010542871;51.479748;-0.410458;"{""highway"":""traffic_signals""}" london;traffic_signals;2010928922;51.457405;-0.410130;"{""highway"":""traffic_signals""}" london;traffic_signals;2010969157;51.456791;-0.409588;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010969162;51.456852;-0.409780;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2010982040;51.457314;-0.410246;"{""highway"":""traffic_signals""}" london;traffic_signals;2011133342;51.440723;-0.388844;"{""highway"":""traffic_signals""}" london;traffic_signals;2011133444;51.440815;-0.388933;"{""highway"":""traffic_signals""}" london;traffic_signals;2011133463;51.440910;-0.389087;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2013017599;51.547588;-0.141446;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2013403122;51.512802;-0.041016;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2013494713;51.647930;-0.190640;"{""highway"":""traffic_signals""}" london;traffic_signals;2013581310;51.457630;-0.460712;"{""highway"":""traffic_signals""}" london;traffic_signals;2013581321;51.465023;-0.426697;"{""highway"":""traffic_signals""}" london;traffic_signals;2013581323;51.457493;-0.460282;"{""highway"":""traffic_signals""}" london;traffic_signals;2013581343;51.457806;-0.460522;"{""highway"":""traffic_signals""}" london;traffic_signals;2014156847;51.510342;-0.007026;"{""highway"":""traffic_signals""}" london;traffic_signals;2014464653;51.513538;-0.048860;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2018469849;51.507915;-0.027326;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2018469853;51.507919;-0.027128;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2018469856;51.507923;-0.027165;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2020465099;51.591801;-0.104956;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2024339507;51.514271;-0.073795;"{""highway"":""traffic_signals""}" london;traffic_signals;2024766708;51.614475;-0.158868;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2025300677;51.494957;-0.086022;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2030035508;51.510490;-0.042391;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2030035521;51.510574;-0.042398;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2030969908;51.452492;-0.101624;"{""highway"":""traffic_signals""}" london;traffic_signals;2034301247;51.509663;-0.376511;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2036161545;51.504158;-0.015481;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2037923431;51.511826;-0.174092;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2037923440;51.511570;-0.176111;"{""highway"":""traffic_signals""}" london;traffic_signals;2038064029;51.507847;-0.140310;"{""highway"":""traffic_signals""}" london;traffic_signals;2043280984;51.490860;-0.213260;"{""highway"":""traffic_signals""}" london;traffic_signals;2043280986;51.490578;-0.213265;"{""highway"":""traffic_signals""}" london;traffic_signals;2043280987;51.490795;-0.213472;"{""highway"":""traffic_signals""}" london;traffic_signals;2043280988;51.490662;-0.213057;"{""highway"":""traffic_signals""}" london;traffic_signals;2044638145;51.545486;-0.103081;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2046320613;51.510971;-0.363807;"{""highway"":""traffic_signals""}" london;traffic_signals;2046355615;51.510765;-0.363378;"{""highway"":""traffic_signals""}" london;traffic_signals;2046355622;51.510689;-0.363716;"{""highway"":""traffic_signals""}" london;traffic_signals;2046355626;51.510906;-0.364103;"{""highway"":""traffic_signals""}" london;traffic_signals;2046355632;51.510811;-0.364285;"{""highway"":""traffic_signals""}" london;traffic_signals;2047105806;51.548038;-0.117997;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2047806107;51.515331;-0.141230;"{""highway"":""traffic_signals""}" london;traffic_signals;2048496209;51.506844;-0.007518;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2048496211;51.506733;-0.007548;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2048505605;51.545544;-0.103202;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2050004126;51.509964;-0.358217;"{""highway"":""traffic_signals""}" london;traffic_signals;2051755763;51.579739;-0.123516;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2054219041;51.509418;-0.218860;"{""highway"":""traffic_signals""}" london;traffic_signals;2054226245;51.509212;-0.219115;"{""highway"":""traffic_signals""}" london;traffic_signals;2054226253;51.509289;-0.219156;"{""highway"":""traffic_signals""}" london;traffic_signals;2056479645;51.504284;-0.014005;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2056479646;51.504353;-0.013981;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2058118160;51.533108;-0.077138;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2058516816;51.506191;-0.130028;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2066046353;51.478359;-0.103562;"{""highway"":""traffic_signals""}" london;traffic_signals;2070861955;51.511982;-0.004290;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2070861969;51.512032;-0.004463;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2072596391;51.546246;-0.072380;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2077163097;51.535339;-0.103990;"{""highway"":""traffic_signals""}" london;traffic_signals;2080184751;51.561794;-0.331977;"{""highway"":""traffic_signals""}" london;traffic_signals;2080184796;51.561699;-0.331213;"{""highway"":""traffic_signals""}" london;traffic_signals;2080205559;51.561939;-0.331841;"{""highway"":""traffic_signals""}" london;traffic_signals;2080207092;51.561626;-0.331182;"{""highway"":""traffic_signals""}" london;traffic_signals;2084187583;51.501850;-0.159986;"{""highway"":""traffic_signals""}" london;traffic_signals;2084187584;51.501495;-0.160981;"{""highway"":""traffic_signals""}" london;traffic_signals;2090193531;51.502460;-0.149675;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2094002739;51.556473;-0.178624;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2094002753;51.556538;-0.178375;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2094944260;51.533562;-0.007580;"{""highway"":""traffic_signals""}" london;traffic_signals;2094944263;51.533646;-0.007698;"{""highway"":""traffic_signals""}" london;traffic_signals;2095026317;51.535606;-0.103549;"{""highway"":""traffic_signals""}" london;traffic_signals;2095078998;51.525539;-0.135728;"{""highway"":""traffic_signals""}" london;traffic_signals;2095082045;51.523483;-0.147628;"{""highway"":""traffic_signals""}" london;traffic_signals;2095082047;51.523289;-0.148750;"{""highway"":""traffic_signals""}" london;traffic_signals;2096436908;51.519356;-0.120365;"{""highway"":""traffic_signals""}" london;traffic_signals;2096436911;51.519154;-0.120808;"{""highway"":""traffic_signals""}" london;traffic_signals;2096450591;51.519508;-0.120051;"{""highway"":""traffic_signals""}" london;traffic_signals;2096561060;51.517139;-0.124790;"{""highway"":""traffic_signals""}" london;traffic_signals;2096561071;51.517021;-0.124935;"{""highway"":""traffic_signals""}" london;traffic_signals;2096587914;51.546902;-0.098512;"{""highway"":""traffic_signals""}" london;traffic_signals;2097232600;51.376354;-0.098225;"{""highway"":""traffic_signals""}" london;traffic_signals;2100685951;51.556728;-0.178629;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2100685956;51.556755;-0.178485;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2102261383;51.587624;-0.134134;"{""highway"":""traffic_signals""}" london;traffic_signals;2102261399;51.587753;-0.133779;"{""highway"":""traffic_signals""}" london;traffic_signals;2102264252;51.587486;-0.133664;"{""highway"":""traffic_signals""}" london;traffic_signals;2102279500;51.549259;-0.107884;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2105133278;51.493282;-0.100597;"{""highway"":""traffic_signals""}" london;traffic_signals;2108099245;51.530460;-0.041756;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2112283199;51.520779;-0.165739;"{""highway"":""traffic_signals""}" london;traffic_signals;2112283202;51.520950;-0.164529;"{""highway"":""traffic_signals""}" london;traffic_signals;2112283206;51.520844;-0.164449;"{""highway"":""traffic_signals""}" london;traffic_signals;2112283207;51.520649;-0.165800;"{""highway"":""traffic_signals""}" london;traffic_signals;2112289533;51.520962;-0.163809;"{""highway"":""traffic_signals""}" london;traffic_signals;2112289534;51.521072;-0.163833;"{""highway"":""traffic_signals""}" london;traffic_signals;2112289537;51.520699;-0.165342;"{""highway"":""traffic_signals""}" london;traffic_signals;2112602732;51.525051;-0.138159;"{""highway"":""traffic_signals""}" london;traffic_signals;2114657419;51.504894;-0.215746;"{""highway"":""traffic_signals""}" london;traffic_signals;2114657426;51.505310;-0.216932;"{""highway"":""traffic_signals""}" london;traffic_signals;2114741349;51.509163;-0.218761;"{""highway"":""traffic_signals""}" london;traffic_signals;2114813993;51.545361;-0.075711;"{""highway"":""traffic_signals""}" london;traffic_signals;2114818873;51.545258;-0.075916;"{""highway"":""traffic_signals""}" london;traffic_signals;2114886894;51.533569;-0.122337;"{""highway"":""traffic_signals""}" london;traffic_signals;2114886913;51.533401;-0.122347;"{""highway"":""traffic_signals""}" london;traffic_signals;2114886923;51.533417;-0.122431;"{""highway"":""traffic_signals""}" london;traffic_signals;2117444169;51.519039;-0.121264;"{""highway"":""traffic_signals""}" london;traffic_signals;2117444174;51.519138;-0.121162;"{""highway"":""traffic_signals""}" london;traffic_signals;2117447071;51.519096;-0.120721;"{""highway"":""traffic_signals""}" london;traffic_signals;2117467718;51.518799;-0.121049;"{""highway"":""traffic_signals""}" london;traffic_signals;2117470721;51.517773;-0.120400;"{""highway"":""traffic_signals""}" london;traffic_signals;2117470724;51.517666;-0.119991;"{""highway"":""traffic_signals""}" london;traffic_signals;2117482629;51.535442;-0.104047;"{""highway"":""traffic_signals""}" london;traffic_signals;2117485142;51.534508;-0.104805;"{""highway"":""traffic_signals""}" london;traffic_signals;2117485143;51.535015;-0.104299;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2117496810;51.534374;-0.104762;"{""highway"":""traffic_signals""}" london;traffic_signals;2117496814;51.534302;-0.105133;"{""highway"":""traffic_signals""}" london;traffic_signals;2117496818;51.533333;-0.105782;"{""highway"":""traffic_signals""}" london;traffic_signals;2117718752;51.531399;-0.104418;"{""highway"":""traffic_signals""}" london;traffic_signals;2117738581;51.531475;-0.104468;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2117745664;51.531544;-0.104494;"{""highway"":""traffic_signals""}" london;traffic_signals;2117756380;51.531689;-0.105309;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2117765189;51.534340;-0.104973;"{""highway"":""traffic_signals""}" london;traffic_signals;2117960406;51.552761;-0.112548;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2117975833;51.555935;-0.116819;"{""highway"":""traffic_signals""}" london;traffic_signals;2117975842;51.556320;-0.117164;"{""highway"":""traffic_signals""}" london;traffic_signals;2117975853;51.556004;-0.116709;"{""highway"":""traffic_signals""}" london;traffic_signals;2117975868;51.556282;-0.117321;"{""highway"":""traffic_signals""}" london;traffic_signals;2117975875;51.556198;-0.116735;"{""highway"":""traffic_signals""}" london;traffic_signals;2117990327;51.550251;-0.109122;"{""highway"":""traffic_signals""}" london;traffic_signals;2117990328;51.550648;-0.109317;"{""highway"":""traffic_signals""}" london;traffic_signals;2117990827;51.550259;-0.109582;"{""highway"":""traffic_signals""}" london;traffic_signals;2117990828;51.550659;-0.109672;"{""highway"":""traffic_signals""}" london;traffic_signals;2120283164;51.480614;-0.429166;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2128271502;51.598057;-0.092464;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2128271503;51.598171;-0.091978;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2128271504;51.598324;-0.092148;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2128271505;51.598019;-0.091812;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2135103073;51.374451;-0.118578;"{""highway"":""traffic_signals""}" london;traffic_signals;2135411294;51.519882;-0.097372;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2135411296;51.519890;-0.097264;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2135411297;51.520012;-0.097506;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2138932167;51.497505;-0.135430;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2138932179;51.497734;-0.133987;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2138932180;51.497795;-0.134148;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2138932181;51.497890;-0.133846;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2140227862;51.513710;-0.092350;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2140465367;51.511299;-0.008475;"{""highway"":""traffic_signals""}" london;traffic_signals;2140484926;51.511414;-0.006971;"{""highway"":""traffic_signals""}" london;traffic_signals;2140485392;51.510307;-0.006907;"{""highway"":""traffic_signals""}" london;traffic_signals;2140510374;51.511780;-0.007681;"{""highway"":""traffic_signals""}" london;traffic_signals;2140514374;51.512970;-0.007994;"{""highway"":""traffic_signals""}" london;traffic_signals;2140523273;51.511391;-0.008555;"{""highway"":""traffic_signals""}" london;traffic_signals;2140523274;51.513123;-0.008312;"{""highway"":""traffic_signals""}" london;traffic_signals;2140546941;51.511337;-0.010830;"{""highway"":""traffic_signals""}" london;traffic_signals;2140799893;51.511055;-0.010642;"{""highway"":""traffic_signals""}" london;traffic_signals;2140799896;51.511230;-0.010239;"{""highway"":""traffic_signals""}" london;traffic_signals;2140805072;51.511806;-0.007353;"{""highway"":""traffic_signals""}" london;traffic_signals;2140805073;51.511497;-0.008758;"{""highway"":""traffic_signals""}" london;traffic_signals;2140805074;51.511478;-0.007338;"{""highway"":""traffic_signals""}" london;traffic_signals;2140805075;51.511688;-0.007532;"{""highway"":""traffic_signals""}" london;traffic_signals;2140805076;51.511551;-0.008919;"{""highway"":""traffic_signals""}" london;traffic_signals;2140822153;51.517475;-0.009745;"{""highway"":""traffic_signals""}" london;traffic_signals;2141989621;51.456715;-0.192509;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2142099654;51.492928;-0.121456;"{""highway"":""traffic_signals""}" london;traffic_signals;2142099657;51.492592;-0.121586;"{""highway"":""traffic_signals""}" london;traffic_signals;2142099676;51.492306;-0.121854;"{""highway"":""traffic_signals""}" london;traffic_signals;2142174868;51.498718;0.001500;"{""highway"":""traffic_signals""}" london;traffic_signals;2142179144;51.494621;0.004971;"{""highway"":""traffic_signals""}" london;traffic_signals;2142179146;51.494747;0.004994;"{""highway"":""traffic_signals""}" london;traffic_signals;2142187610;51.498222;0.001644;"{""highway"":""traffic_signals""}" london;traffic_signals;2142187612;51.497807;0.001764;"{""highway"":""traffic_signals""}" london;traffic_signals;2142189922;51.496460;0.002175;"{""highway"":""traffic_signals""}" london;traffic_signals;2143356389;51.492592;0.008677;"{""highway"":""traffic_signals""}" london;traffic_signals;2143391760;51.517635;-0.010012;"{""highway"":""traffic_signals""}" london;traffic_signals;2143391761;51.517677;-0.009206;"{""highway"":""traffic_signals""}" london;traffic_signals;2143398092;51.551968;-0.020894;"{""highway"":""traffic_signals""}" london;traffic_signals;2143401296;51.551487;-0.021265;"{""highway"":""traffic_signals""}" london;traffic_signals;2143401303;51.551731;-0.020834;"{""highway"":""traffic_signals""}" london;traffic_signals;2143401312;51.551117;-0.020733;"{""highway"":""traffic_signals""}" london;traffic_signals;2143401313;51.551746;-0.021034;"{""highway"":""traffic_signals""}" london;traffic_signals;2143401318;51.551624;-0.020628;"{""highway"":""traffic_signals""}" london;traffic_signals;2143402925;51.550606;-0.021692;"{""highway"":""traffic_signals""}" london;traffic_signals;2143402959;51.550781;-0.021029;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408620;51.550827;-0.020374;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408622;51.552567;-0.019375;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408624;51.552521;-0.019744;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408625;51.550903;-0.020412;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408626;51.552441;-0.019666;"{""highway"":""traffic_signals""}" london;traffic_signals;2143408873;51.551006;-0.021097;"{""highway"":""traffic_signals""}" london;traffic_signals;2143410923;51.544872;-0.030573;"{""highway"":""traffic_signals""}" london;traffic_signals;2143410929;51.544533;-0.032639;"{""highway"":""traffic_signals""}" london;traffic_signals;2143411012;51.545094;-0.035368;"{""highway"":""traffic_signals""}" london;traffic_signals;2143411296;51.544853;-0.032956;"{""highway"":""traffic_signals""}" london;traffic_signals;2143411684;51.544739;-0.031114;"{""highway"":""traffic_signals""}" london;traffic_signals;2143412754;51.545319;-0.035696;"{""highway"":""traffic_signals""}" london;traffic_signals;2143413355;51.545029;-0.035882;"{""highway"":""traffic_signals""}" london;traffic_signals;2143413361;51.545002;-0.035798;"{""highway"":""traffic_signals""}" london;traffic_signals;2143516618;51.552036;-0.085377;"{""highway"":""traffic_signals""}" london;traffic_signals;2143522360;51.552299;-0.085307;"{""highway"":""traffic_signals""}" london;traffic_signals;2143523082;51.552078;-0.085431;"{""highway"":""traffic_signals""}" london;traffic_signals;2143523083;51.552204;-0.085545;"{""highway"":""traffic_signals""}" london;traffic_signals;2144312594;51.492550;0.008999;"{""highway"":""traffic_signals""}" london;traffic_signals;2144328711;51.491150;0.009038;"{""highway"":""traffic_signals""}" london;traffic_signals;2144333605;51.491932;0.009066;"{""highway"":""traffic_signals""}" london;traffic_signals;2144333613;51.491444;0.008926;"{""highway"":""traffic_signals""}" london;traffic_signals;2144344375;51.492943;0.010346;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144693870;51.494049;-0.086516;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144693871;51.493969;-0.086661;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144693872;51.494324;-0.086565;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144702691;51.494896;-0.086222;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144702699;51.494255;-0.086409;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144708986;51.494865;-0.086006;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2144708989;51.494820;-0.086140;"{""highway"":""traffic_signals""}" london;traffic_signals;2146033384;51.461716;-0.139432;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2146058743;51.483559;-0.127084;"{""highway"":""traffic_signals""}" london;traffic_signals;2146096066;51.494690;-0.084997;"{""highway"":""traffic_signals""}" london;traffic_signals;2146096071;51.494732;-0.084740;"{""highway"":""traffic_signals""}" london;traffic_signals;2146100409;51.494312;-0.086696;"{""highway"":""traffic_signals""}" london;traffic_signals;2146107580;51.493797;-0.085420;"{""highway"":""traffic_signals""}" london;traffic_signals;2146107710;51.493717;-0.085067;"{""highway"":""traffic_signals""}" london;traffic_signals;2146107711;51.494053;-0.085144;"{""highway"":""traffic_signals""}" london;traffic_signals;2146987845;51.493683;-0.085283;"{""highway"":""traffic_signals""}" london;traffic_signals;2147019575;51.494209;-0.086407;"{""highway"":""traffic_signals""}" london;traffic_signals;2147168639;51.437828;-0.127160;"{""highway"":""traffic_signals""}" london;traffic_signals;2147168640;51.438194;-0.126926;"{""highway"":""traffic_signals""}" london;traffic_signals;2147168641;51.438351;-0.126680;"{""highway"":""traffic_signals""}" london;traffic_signals;2147516011;51.497189;0.004341;"{""highway"":""traffic_signals""}" london;traffic_signals;2148446372;51.331940;-0.075632;"{""highway"":""traffic_signals""}" london;traffic_signals;2148535294;51.490772;-0.081223;"{""highway"":""traffic_signals""}" london;traffic_signals;2148535295;51.490784;-0.081098;"{""highway"":""traffic_signals""}" london;traffic_signals;2148535296;51.490620;-0.081070;"{""highway"":""traffic_signals""}" london;traffic_signals;2148535299;51.490643;-0.081376;"{""highway"":""traffic_signals""}" london;traffic_signals;2148535300;51.490753;-0.080875;"{""highway"":""traffic_signals""}" london;traffic_signals;2149303132;51.524220;-0.292124;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2149934085;51.483845;-0.086391;"{""highway"":""traffic_signals""}" london;traffic_signals;2149936892;51.483913;-0.085843;"{""highway"":""traffic_signals""}" london;traffic_signals;2149936893;51.483402;-0.087652;"{""highway"":""traffic_signals""}" london;traffic_signals;2149936897;51.483276;-0.088436;"{""highway"":""traffic_signals""}" london;traffic_signals;2149937778;51.483692;-0.086111;"{""highway"":""traffic_signals""}" london;traffic_signals;2149938048;51.483707;-0.086216;"{""highway"":""traffic_signals""}" london;traffic_signals;2149941345;51.483524;-0.088126;"{""highway"":""traffic_signals""}" london;traffic_signals;2149954564;51.502686;-0.077311;"{""highway"":""traffic_signals""}" london;traffic_signals;2149954565;51.502483;-0.077334;"{""highway"":""traffic_signals""}" london;traffic_signals;2149955546;51.502888;-0.077077;"{""highway"":""traffic_signals""}" london;traffic_signals;2150864349;51.493477;-0.100550;"{""highway"":""traffic_signals""}" london;traffic_signals;2150864351;51.493420;-0.100189;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2150868153;51.493252;-0.100085;"{""highway"":""traffic_signals""}" london;traffic_signals;2150871635;51.493118;-0.100842;"{""highway"":""traffic_signals""}" london;traffic_signals;2151162603;51.492439;-0.261021;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2152131358;51.518257;-0.062831;"{""highway"":""traffic_signals""}" london;traffic_signals;2152131365;51.518387;-0.063143;"{""highway"":""traffic_signals""}" london;traffic_signals;2152131368;51.518635;-0.062856;"{""highway"":""traffic_signals""}" london;traffic_signals;2152144219;51.519817;-0.056810;"{""highway"":""traffic_signals""}" london;traffic_signals;2152160386;51.519871;-0.055928;"{""highway"":""traffic_signals""}" london;traffic_signals;2152588372;51.492367;-0.121428;"{""highway"":""traffic_signals""}" london;traffic_signals;2152588380;51.500595;-0.115716;"{""highway"":""traffic_signals""}" london;traffic_signals;2152588468;51.504417;-0.113753;"{""highway"":""traffic_signals""}" london;traffic_signals;2156710670;51.591370;-0.176227;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2156754368;51.492355;-0.262755;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2156754370;51.492455;-0.262533;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2156754373;51.492462;-0.262837;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2163568766;51.514099;-0.292058;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2164217317;51.509075;-0.073398;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2164223194;51.509007;-0.073608;"{""highway"":""traffic_signals""}" london;traffic_signals;2164223196;51.509060;-0.073556;"{""highway"":""traffic_signals""}" london;traffic_signals;2164223197;51.508972;-0.073440;"{""highway"":""traffic_signals""}" london;traffic_signals;2166214187;51.495960;-0.014109;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2167992681;51.522240;-0.262636;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2168004640;51.522346;-0.261208;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2171153774;51.295944;-0.152946;"{""highway"":""traffic_signals""}" london;traffic_signals;2171153777;51.295994;-0.152634;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2171153799;51.296242;-0.152702;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2171155235;51.316978;-0.137918;"{""highway"":""traffic_signals""}" london;traffic_signals;2173949234;51.500854;-0.285038;"{""highway"":""traffic_signals""}" london;traffic_signals;2173949235;51.500889;-0.285410;"{""highway"":""traffic_signals""}" london;traffic_signals;2173949238;51.500961;-0.285490;"{""highway"":""traffic_signals""}" london;traffic_signals;2173949242;51.501091;-0.284805;"{""highway"":""traffic_signals""}" london;traffic_signals;2173949243;51.501179;-0.285269;"{""highway"":""traffic_signals""}" london;traffic_signals;2176499429;51.509792;-0.047688;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2177834973;51.524178;-0.143323;"{""highway"":""traffic_signals""}" london;traffic_signals;2177834977;51.524162;-0.143383;"{""highway"":""traffic_signals""}" london;traffic_signals;2177842862;51.523876;-0.144231;"{""highway"":""traffic_signals""}" london;traffic_signals;2177844432;51.524792;-0.144104;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2177844434;51.524742;-0.144208;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2177844443;51.524693;-0.144103;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2177848412;51.531235;-0.145078;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180250750;51.531982;-0.295058;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180250753;51.531898;-0.295104;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180250754;51.532028;-0.294740;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180264961;51.532021;-0.295112;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180693494;51.495567;-0.100999;"{""highway"":""traffic_signals""}" london;traffic_signals;2180694751;51.495140;-0.099901;"{""highway"":""traffic_signals""}" london;traffic_signals;2180702994;51.495045;-0.099667;"{""highway"":""traffic_signals""}" london;traffic_signals;2180739562;51.495388;-0.178632;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742978;51.495338;-0.179218;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742981;51.495438;-0.178936;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742982;51.495197;-0.179053;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742984;51.495529;-0.179127;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742987;51.495121;-0.178872;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742988;51.495239;-0.179329;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180742989;51.495285;-0.178755;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2180746170;51.495464;-0.178942;"{""highway"":""traffic_signals""}" london;traffic_signals;2180746177;51.495293;-0.178690;"{""highway"":""traffic_signals""}" london;traffic_signals;2180746179;51.495159;-0.179045;"{""highway"":""traffic_signals""}" london;traffic_signals;2180808898;51.477917;-0.372986;"{""highway"":""traffic_signals""}" london;traffic_signals;2180813979;51.476437;-0.384470;"{""highway"":""traffic_signals""}" london;traffic_signals;2180815863;51.483177;-0.326712;"{""highway"":""traffic_signals""}" london;traffic_signals;2180815864;51.483315;-0.326524;"{""highway"":""traffic_signals""}" london;traffic_signals;2180815867;51.483292;-0.327648;"{""highway"":""traffic_signals""}" london;traffic_signals;2180816841;51.483711;-0.324812;"{""highway"":""traffic_signals""}" london;traffic_signals;2180819044;51.483917;-0.325108;"{""highway"":""traffic_signals""}" london;traffic_signals;2181311474;51.512890;-0.319670;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2181311482;51.512974;-0.319547;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2181311488;51.513000;-0.319734;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2184965488;51.511044;-0.119111;"{""highway"":""traffic_signals""}" london;traffic_signals;2185761599;51.522346;-0.340223;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2185774271;51.527061;-0.346576;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2189899427;51.574184;0.183838;"{""highway"":""traffic_signals""}" london;traffic_signals;2194412539;51.531658;-0.365742;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2194668460;51.492752;-0.200712;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2194686375;51.492687;-0.200619;"{""highway"":""traffic_signals""}" london;traffic_signals;2194774882;51.492893;-0.200595;"{""highway"":""traffic_signals""}" london;traffic_signals;2194804480;51.494717;-0.195598;"{""highway"":""traffic_signals""}" london;traffic_signals;2194809056;51.494534;-0.195164;"{""highway"":""traffic_signals""}" london;traffic_signals;2198694417;51.506390;-0.152387;"{""highway"":""traffic_signals""}" london;traffic_signals;2198840127;51.516281;-0.142428;"{""highway"":""traffic_signals""}" london;traffic_signals;2198840140;51.516476;-0.142247;"{""highway"":""traffic_signals""}" london;traffic_signals;2198840144;51.516567;-0.142440;"{""highway"":""traffic_signals""}" london;traffic_signals;2198870621;51.515442;-0.142006;"{""highway"":""traffic_signals""}" london;traffic_signals;2198870625;51.515266;-0.142296;"{""highway"":""traffic_signals""}" london;traffic_signals;2198870641;51.515083;-0.142006;"{""highway"":""traffic_signals""}" london;traffic_signals;2198870643;51.515270;-0.141731;"{""highway"":""traffic_signals""}" london;traffic_signals;2203957210;51.492123;-0.278782;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204067545;51.563141;-0.107866;"{""highway"":""traffic_signals""}" london;traffic_signals;2204067551;51.563164;-0.107817;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204070132;51.560123;-0.115182;"{""highway"":""traffic_signals""}" london;traffic_signals;2204070133;51.560154;-0.115127;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204070678;51.560059;-0.114894;"{""highway"":""traffic_signals""}" london;traffic_signals;2204070679;51.560291;-0.115136;"{""highway"":""traffic_signals""}" london;traffic_signals;2204097024;51.570988;-0.096081;"{""highway"":""traffic_signals""}" london;traffic_signals;2204097025;51.570461;-0.095818;"{""highway"":""traffic_signals""}" london;traffic_signals;2204098000;51.570572;-0.096203;"{""highway"":""traffic_signals""}" london;traffic_signals;2204098013;51.570797;-0.095599;"{""highway"":""traffic_signals""}" london;traffic_signals;2204104484;51.568237;-0.094173;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204169571;51.535252;-0.104436;"{""highway"":""traffic_signals""}" london;traffic_signals;2204169574;51.535099;-0.104062;"{""highway"":""traffic_signals""}" london;traffic_signals;2204176506;51.557629;-0.119272;"{""highway"":""traffic_signals""}" london;traffic_signals;2204176507;51.557983;-0.119584;"{""highway"":""traffic_signals""}" london;traffic_signals;2204176512;51.557686;-0.119637;"{""highway"":""traffic_signals""}" london;traffic_signals;2204180234;51.558411;-0.120773;"{""highway"":""traffic_signals""}" london;traffic_signals;2204181096;51.558376;-0.120675;"{""highway"":""traffic_signals""}" london;traffic_signals;2204808503;51.509457;-0.025805;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2204808514;51.509533;-0.025666;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2204808520;51.509548;-0.025831;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204808553;51.509647;-0.025552;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204808558;51.509670;-0.026040;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2204808577;51.509716;-0.025891;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2204808582;51.509727;-0.025493;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2204808589;51.509758;-0.025729;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2205062085;51.440826;-0.063908;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2205062089;51.440907;-0.063945;"{""crossing"":""traffic_signals""}" london;traffic_signals;2205062091;51.440964;-0.064162;"{""highway"":""traffic_signals""}" london;traffic_signals;2205102847;51.503010;-0.152663;"{""highway"":""traffic_signals""}" london;traffic_signals;2205104570;51.503284;-0.150966;"{""highway"":""traffic_signals""}" london;traffic_signals;2205117782;51.509987;-0.134816;"{""highway"":""traffic_signals""}" london;traffic_signals;2205124744;51.510124;-0.134976;"{""highway"":""traffic_signals""}" london;traffic_signals;2209720338;51.456593;-0.020119;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2212081655;51.525223;-0.353061;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2212081838;51.519047;-0.354723;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2212086659;51.517818;-0.354763;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2213529577;51.498108;-0.144028;"{""highway"":""traffic_signals""}" london;traffic_signals;2213529578;51.498180;-0.143779;"{""highway"":""traffic_signals""}" london;traffic_signals;2213529585;51.498169;-0.144021;"{""highway"":""traffic_signals""}" london;traffic_signals;2213538538;51.533913;-0.127042;"{""highway"":""traffic_signals""}" london;traffic_signals;2214957484;51.509659;-0.135084;"{""highway"":""traffic_signals""}" london;traffic_signals;2214988209;51.507626;-0.131369;"{""highway"":""traffic_signals""}" london;traffic_signals;2215209036;51.511536;-0.147780;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2215209203;51.512600;-0.148292;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2215472142;51.508389;-0.138863;"{""highway"":""traffic_signals""}" london;traffic_signals;2215475637;51.507999;-0.140175;"{""highway"":""traffic_signals""}" london;traffic_signals;2215475640;51.508465;-0.138499;"{""highway"":""traffic_signals""}" london;traffic_signals;2215490962;51.507519;-0.141090;"{""highway"":""traffic_signals""}" london;traffic_signals;2215490964;51.507084;-0.142217;"{""highway"":""traffic_signals""}" london;traffic_signals;2215490965;51.507435;-0.141522;"{""highway"":""traffic_signals""}" london;traffic_signals;2215498449;51.507160;-0.141843;"{""highway"":""traffic_signals""}" london;traffic_signals;2215498450;51.507347;-0.141186;"{""highway"":""traffic_signals""}" london;traffic_signals;2215498452;51.507259;-0.142176;"{""highway"":""traffic_signals""}" london;traffic_signals;2215502652;51.508179;-0.140131;"{""highway"":""traffic_signals""}" london;traffic_signals;2215503568;51.507774;-0.140725;"{""highway"":""traffic_signals""}" london;traffic_signals;2215503569;51.507587;-0.140417;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388380;51.501095;-0.093442;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388382;51.501026;-0.092985;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388383;51.501404;-0.093468;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388398;51.500935;-0.092801;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388403;51.500854;-0.092587;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388413;51.501400;-0.092981;"{""highway"":""traffic_signals""}" london;traffic_signals;2217388417;51.500626;-0.092730;"{""highway"":""traffic_signals""}" london;traffic_signals;2217412070;51.500954;-0.092764;"{""highway"":""traffic_signals""}" london;traffic_signals;2218340967;51.513374;-0.089349;"{""highway"":""traffic_signals""}" london;traffic_signals;2218362321;51.513588;-0.089028;"{""highway"":""traffic_signals""}" london;traffic_signals;2218364543;51.513351;-0.089621;"{""highway"":""traffic_signals""}" london;traffic_signals;2218795594;51.534569;-0.138442;"{""highway"":""traffic_signals""}" london;traffic_signals;2218795610;51.534515;-0.138458;"{""highway"":""traffic_signals""}" london;traffic_signals;2220982862;51.525131;0.072288;"{""highway"":""traffic_signals""}" london;traffic_signals;2240037030;51.495014;-0.086136;"{""highway"":""traffic_signals""}" london;traffic_signals;2245001131;51.520088;-0.170778;"{""highway"":""traffic_signals""}" london;traffic_signals;2245001631;51.520226;-0.170430;"{""highway"":""traffic_signals""}" london;traffic_signals;2245002941;51.519970;-0.170282;"{""highway"":""traffic_signals""}" london;traffic_signals;2245002942;51.519905;-0.169951;"{""highway"":""traffic_signals""}" london;traffic_signals;2250509874;51.588894;-0.109959;"{""crossing"":""traffic_signals"",""highway"":""traffic_signals""}" london;traffic_signals;2251190418;51.379505;-0.100061;"{""highway"":""traffic_signals""}" london;traffic_signals;2251377979;51.468899;-0.276876;"{""crossing"":""traffic_signals"",""highway"":""crossing""}" london;traffic_signals;2251380947;51.509068;0.046993;"{""highway"":""traffic_signals""}" london;traffic_signals;2251380948;51.509121;0.046817;"{""highway"":""traffic_signals""}" london;traffic_signals;2255359691;51.491421;-0.291827;"{""highway"":""traffic_signals""}" london;traffic_signals;2257920073;51.621376;-0.254714;"{""highway"":""traffic_signals""}" \ No newline at end of file diff --git a/assets/csv/odbl/london_toilets.csv b/assets/csv/odbl/london_toilets.csv new file mode 100644 index 0000000..8a267aa --- /dev/null +++ b/assets/csv/odbl/london_toilets.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags london;toilet;3210226;51.601555;-0.193111;"{""note"":""An automated single toilet cubicle, no fee is charged unlike many\/most toilets of this type"",""fee"":""no""}" london;toilet;20849686;51.408733;-0.332375;[] london;toilet;20910215;51.405575;-0.336138;[] london;toilet;25475748;51.523392;-0.119408;"{""note"":""currently closed""}" london;toilet;25534499;51.494755;-0.132234;[] london;toilet;26049416;51.451286;0.052013;[] london;toilet;26819225;51.516178;-0.187353;"{""note"":""Automatic""}" london;toilet;26819248;51.515942;-0.188494;[] london;toilet;30442251;51.474945;-0.300530;"{""wheelchair"":""yes""}" london;toilet;30442336;51.472847;-0.292996;"{""wheelchair"":""yes""}" london;toilet;30581735;51.481567;-0.297854;"{""wheelchair"":""yes""}" london;toilet;33378270;51.452400;-0.109991;[] london;toilet;36446497;51.519840;0.254499;[] london;toilet;48181882;51.526691;-0.061778;"{""fee"":""yes""}" london;toilet;53447471;51.541222;-0.059206;[] london;toilet;54070004;51.559456;-0.151891;[] london;toilet;60460567;51.474270;-0.092830;[] london;toilet;60660471;51.525990;-0.125841;[] london;toilet;207145549;51.478279;-0.290668;"{""wheelchair"":""yes""}" london;toilet;235424107;51.504936;-0.159624;[] london;toilet;239713872;51.512825;-0.160470;[] london;toilet;243834668;51.490482;-0.351551;[] london;toilet;246852982;51.532310;-0.029050;[] london;toilet;247049800;51.481472;-0.092241;[] london;toilet;247324371;51.510136;-0.187012;[] london;toilet;249679374;51.516460;-0.076907;"{""note"":""Automated single person sanisette toilet"",""fee"":""yes""}" london;toilet;252934371;51.536240;-0.102470;[] london;toilet;253100929;51.469879;-0.358254;[] london;toilet;253369110;51.366161;-0.160282;[] london;toilet;255396286;51.514297;-0.056268;[] london;toilet;255684945;51.514221;-0.201214;[] london;toilet;257422992;51.517605;-0.118628;[] london;toilet;262362381;51.511894;-0.027648;[] london;toilet;262443427;51.561325;-0.086498;[] london;toilet;262903620;51.494484;0.064351;[] london;toilet;265106459;51.520512;-0.153753;[] london;toilet;265255765;51.510601;-0.289129;[] london;toilet;266819600;51.496841;-0.214747;"{""note"":""Automated toilets"",""fee"":""no""}" london;toilet;267188423;51.631992;-0.175596;[] london;toilet;269060964;51.357037;-0.191760;[] london;toilet;269890771;51.495014;-0.054979;[] london;toilet;270691871;51.428185;-0.168466;[] london;toilet;270713159;51.498734;-0.199385;[] london;toilet;270748491;51.543369;-0.323572;[] london;toilet;271387568;51.492111;-0.138488;[] london;toilet;272018703;51.512196;-0.348371;[] london;toilet;273460550;51.448868;-0.106757;[] london;toilet;280885803;51.468277;-0.066871;[] london;toilet;281578660;51.533482;-0.049570;"{""fee"":""yes""}" london;toilet;281580306;51.448616;-0.106439;[] london;toilet;281580386;51.449505;-0.108791;[] london;toilet;281620329;51.478069;-0.024950;"{""wheelchair"":""yes""}" london;toilet;281841123;51.457001;-0.145741;[] london;toilet;281851493;51.525669;-0.153889;[] london;toilet;281851835;51.528809;-0.149113;[] london;toilet;281852211;51.529644;-0.161104;[] london;toilet;282116692;51.479851;-0.159388;[] london;toilet;282569729;51.513206;-0.113371;[] london;toilet;283162497;51.527920;0.004981;[] london;toilet;283833564;51.442913;-0.153114;[] london;toilet;286480244;51.445133;-0.151518;[] london;toilet;288562205;51.496017;-0.263700;[] london;toilet;288980690;51.502968;-0.280304;"{""note"":""Pay, Men only"",""fee"":""yes""}" london;toilet;288980719;51.508465;-0.275507;"{""note"":""Outside Redback, Streetside""}" london;toilet;290985718;51.480892;-0.007837;"{""wheelchair"":""no""}" london;toilet;291647639;51.421967;-0.119540;[] london;toilet;291667176;51.382294;-0.069166;[] london;toilet;293389189;51.537224;-0.157447;[] london;toilet;297165854;51.463886;-0.093878;[] london;toilet;297357795;51.465160;-0.090952;[] london;toilet;297701210;51.613174;-0.158302;[] london;toilet;298007677;51.421837;-0.366812;"{""name"":""Accesible"",""wheelchair"":""yes""}" london;toilet;298288065;51.392323;-0.304565;[] london;toilet;298299046;51.511337;-0.175716;[] london;toilet;298850997;51.471153;-0.222335;[] london;toilet;300334711;51.499908;-0.129384;"{""fee"":""yes""}" london;toilet;301017077;51.531616;-0.170314;[] london;toilet;302410564;51.523594;-0.170258;[] london;toilet;303798311;51.475170;-0.336621;"{""note"":""tin can style""}" london;toilet;304689836;51.553612;-0.296272;[] london;toilet;312671223;51.475136;-0.038744;[] london;toilet;317160679;51.490685;-0.152865;[] london;toilet;321223692;51.568100;-0.185009;[] london;toilet;321311369;51.483437;-0.264790;"{""opening_hours"":""rarely open""}" london;toilet;323205649;51.553364;-0.294804;[] london;toilet;323990551;51.530014;-0.293083;"{""operator"":""TFL""}" london;toilet;329105463;51.590782;-0.433162;[] london;toilet;331275122;51.564186;-0.173586;[] london;toilet;331289045;51.571587;-0.166981;[] london;toilet;331922282;51.572018;-0.193912;[] london;toilet;332492772;51.405029;-0.337708;[] london;toilet;332925681;51.569263;-0.143609;[] london;toilet;333257433;51.541256;0.045924;[] london;toilet;333300005;51.652622;-0.086359;[] london;toilet;333774743;51.556091;-0.117500;"{""note"":""No idea if they are still working...""}" london;toilet;336369392;51.555027;-0.110223;[] london;toilet;338472531;51.517998;-0.110043;[] london;toilet;339312700;51.573612;-0.184683;[] london;toilet;339925126;51.508205;-0.128554;"{""wheelchair"":""yes""}" london;toilet;341229285;51.496780;-0.141643;[] london;toilet;343588115;51.565090;-0.104216;[] london;toilet;344521109;51.503502;-0.113190;[] london;toilet;345396854;51.503292;-0.135897;[] london;toilet;345397964;51.364422;-0.191795;[] london;toilet;346352276;51.504684;-0.130020;[] london;toilet;348814978;51.510773;-0.129764;[] london;toilet;350409063;51.510872;-0.085805;"{""note"":""Accessed via steps in traffic island""}" london;toilet;353890734;51.437695;-0.231882;[] london;toilet;359721951;51.533413;-0.042678;"{""name"":""Victoria Park Pavilion"",""wheelchair"":""limited"",""fee"":""no""}" london;toilet;364346000;51.461163;-0.202350;[] london;toilet;366238452;51.619160;-0.162190;[] london;toilet;367015951;51.466736;0.069617;[] london;toilet;369007992;51.386070;-0.290256;[] london;toilet;370192075;51.432156;-0.291935;[] london;toilet;370192623;51.442699;-0.293523;[] london;toilet;370261548;51.445297;-0.078665;"{""fee"":""no""}" london;toilet;380494795;51.515633;-0.132367;[] london;toilet;386703361;51.452930;-0.221171;"{""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;389681906;51.527851;-0.152611;[] london;toilet;389688170;51.532604;-0.157813;[] london;toilet;409627541;51.420460;-0.286651;[] london;toilet;409646988;51.436272;-0.256557;[] london;toilet;414239364;51.625282;-0.282868;[] london;toilet;415291323;51.504631;-0.084349;[] london;toilet;415291324;51.504681;-0.084118;[] london;toilet;420369792;51.406731;0.011430;"{""name"":""The Hill Bromley Public Toilets"",""fee"":""no""}" london;toilet;430403334;51.525795;-0.035353;[] london;toilet;438170659;51.514019;-0.126053;[] london;toilet;441958987;51.513367;-0.096802;[] london;toilet;443418088;51.532467;-0.032881;"{""fee"":""yes""}" london;toilet;443939741;51.545471;-0.056100;"{""wheelchair"":""yes""}" london;toilet;452433524;51.521938;-0.110020;"{""wheelchair"":""yes"",""fee"":""yes"",""opening_hours"":""24\/7""}" london;toilet;452484690;51.511490;-0.123314;"{""fee"":""no""}" london;toilet;453435240;51.319351;0.073260;[] london;toilet;454200833;51.339062;0.028978;[] london;toilet;454212874;51.507252;-0.143572;[] london;toilet;459678291;51.594498;0.235683;[] london;toilet;461686710;51.353176;0.089500;[] london;toilet;462008328;51.529594;-0.097322;"{""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;469136361;51.547668;-0.054466;"{""note"":""20p"",""fee"":""yes""}" london;toilet;477366640;51.483459;-0.009582;"{""fee"":""yes""}" london;toilet;477530711;51.437584;0.071883;[] london;toilet;479029658;51.546333;-0.075893;"{""name"":""Toilet"",""wheelchair"":""limited"",""fee"":""yes""}" london;toilet;482704445;51.489491;0.045170;[] london;toilet;491410750;51.452274;0.179537;[] london;toilet;496275979;51.504478;-0.084557;[] london;toilet;497379966;51.521297;-0.181149;[] london;toilet;499350869;51.513641;-0.135737;[] london;toilet;511645366;51.524387;-0.201420;[] london;toilet;539063877;51.613529;0.131870;[] london;toilet;541172777;51.574810;-0.370190;[] london;toilet;553308759;51.517677;-0.081602;"{""fee"":""yes""}" london;toilet;560712757;51.501122;-0.138128;"{""note"":""children only""}" london;toilet;563313189;51.399925;-0.020205;[] london;toilet;564744078;51.480034;-0.178129;[] london;toilet;565576656;51.483414;-0.009720;[] london;toilet;566313868;51.511711;-0.121707;[] london;toilet;567239700;51.403206;0.014305;[] london;toilet;568113185;51.392990;0.112597;[] london;toilet;568113602;51.392159;0.114461;[] london;toilet;573320909;51.508102;-0.124580;[] london;toilet;573320912;51.508217;-0.124714;[] london;toilet;581142801;51.579994;-0.150482;[] london;toilet;581143053;51.582420;-0.149956;[] london;toilet;588130427;51.500828;-0.113284;[] london;toilet;588175347;51.507511;-0.121810;"{""name"":""Embankment Toilets"",""fee"":""yes""}" london;toilet;595709484;51.523663;-0.143843;[] london;toilet;596763309;51.508923;-0.125948;[] london;toilet;639141976;51.518322;-0.206943;"{""name"":""Pay toilet accessable"",""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;646762510;51.417469;-0.082388;[] london;toilet;654083991;51.547321;-0.072452;[] london;toilet;662427640;51.472008;-0.217745;"{""wheelchair"":""yes""}" london;toilet;666920937;51.513935;-0.075004;"{""note"":""An automated Sanisette superloo"",""fee"":""yes""}" london;toilet;679121842;51.484314;-0.257905;"{""name"":""Cafe Lavatories""}" london;toilet;688694871;51.553288;-0.286044;[] london;toilet;694510919;51.508766;-0.078752;"{""fee"":""yes""}" london;toilet;700357918;51.388466;0.023262;[] london;toilet;703330322;51.479130;-0.290166;"{""wheelchair"":""yes""}" london;toilet;703499479;51.483425;-0.292917;"{""wheelchair"":""yes""}" london;toilet;703499480;51.482635;-0.295586;"{""wheelchair"":""yes""}" london;toilet;703499481;51.483906;-0.294083;"{""wheelchair"":""yes""}" london;toilet;703499482;51.473194;-0.294377;"{""wheelchair"":""yes""}" london;toilet;704892236;51.512592;-0.114881;[] london;toilet;705074466;51.462963;-0.112772;[] london;toilet;706106376;51.531677;-0.123858;"{""wheelchair"":""no"",""fee"":""yes""}" london;toilet;727674425;51.563931;-0.443680;"{""fee"":""yes""}" london;toilet;727674428;51.569763;-0.437805;"{""wheelchair"":""no"",""operator"":""TfL"",""fee"":""no"",""opening_hours"":""6:30-00:00""}" london;toilet;736819740;51.481911;-0.155957;"{""wheelchair"":""yes""}" london;toilet;739680914;51.509457;-0.084506;[] london;toilet;747813217;51.514313;-0.099343;[] london;toilet;751735279;51.510380;-0.117747;[] london;toilet;771818199;51.481331;-0.198368;[] london;toilet;780114296;51.452053;-0.254585;"{""fee"":""no""}" london;toilet;793236444;51.436264;-0.204120;[] london;toilet;798908359;51.494133;-0.099223;[] london;toilet;804289634;51.566570;-0.189173;[] london;toilet;804358498;51.565971;-0.157235;[] london;toilet;815734786;51.554314;-0.165032;[] london;toilet;819828632;51.501606;0.033694;"{""wheelchair"":""yes""}" london;toilet;845373758;51.489052;-0.134078;"{""wheelchair"":""yes""}" london;toilet;852122499;51.522320;-0.155658;"{""note"":""Gentlemen Only"",""operator"":""City of Westminster""}" london;toilet;866383916;51.509804;-0.131136;[] london;toilet;871153883;51.656506;-0.149665;[] london;toilet;882397790;51.497444;-0.081505;[] london;toilet;885335037;51.651894;-0.084297;[] london;toilet;885392904;51.491619;-0.415274;"{""wheelchair"":""yes"",""fee"":""no""}" london;toilet;888429921;51.569584;0.129537;[] london;toilet;899437167;51.521210;-0.184136;[] london;toilet;908396274;51.533291;-0.218736;[] london;toilet;918721618;51.504837;-0.086416;[] london;toilet;919741103;51.501446;-0.203259;"{""wheelchair"":""yes""}" london;toilet;929322934;51.452396;-0.359003;"{""operator"":""Community Toilet Scheme""}" london;toilet;931630612;51.541965;-0.144599;"{""note"":""inc disabled"",""wheelchair"":""yes""}" london;toilet;935555307;51.559620;-0.250819;"{""note"":""Fee: 10p"",""fee"":""yes""}" london;toilet;936473044;51.505978;-0.091156;[] london;toilet;944197035;51.669956;-0.068902;[] london;toilet;1088333795;51.504490;-0.078594;"{""wheelchair"":""no"",""operator"":""More London"",""fee"":""no""}" london;toilet;1090774423;51.486237;-0.123477;"{""name"":""Vauxhall station forecourt"",""note"":""Urinal."",""wheelchair"":""no""}" london;toilet;1098162013;51.501534;-0.306615;[] london;toilet;1102236526;51.504852;-0.082782;"{""wheelchair"":""yes"",""operator"":""More London"",""fee"":""no""}" london;toilet;1115390365;51.507244;-0.143535;[] london;toilet;1117274840;51.513100;-0.302513;[] london;toilet;1117274887;51.514912;-0.301470;[] london;toilet;1133624650;51.533424;-0.204430;[] london;toilet;1145191859;51.518429;-0.100640;"{""wheelchair"":""no""}" london;toilet;1174213694;51.472832;-0.105662;[] london;toilet;1186119761;51.437443;-0.116180;[] london;toilet;1207087355;51.493908;-0.174390;[] london;toilet;1226107944;51.579140;-0.337111;"{""wheelchair"":""no"",""operator"":""Transport for London"",""fee"":""no""}" london;toilet;1226108166;51.579189;-0.337302;"{""wheelchair"":""no"",""operator"":""Transport for London"",""fee"":""no""}" london;toilet;1242549284;51.551830;-0.141220;[] london;toilet;1255801499;51.570099;-0.125146;[] london;toilet;1279780460;51.457104;0.146172;[] london;toilet;1295894918;51.418255;-0.171661;[] london;toilet;1296405857;51.632912;0.009606;[] london;toilet;1296610762;51.511974;-0.224469;[] london;toilet;1296653744;51.463348;-0.170081;"{""fee"":""yes""}" london;toilet;1304102792;51.567257;-0.199313;[] london;toilet;1306552273;51.504654;-0.169968;"{""wheelchair"":""yes"",""fee"":""no""}" london;toilet;1313266175;51.540394;-0.375823;[] london;toilet;1313267412;51.467251;-0.422925;[] london;toilet;1313535473;51.556786;-0.281488;[] london;toilet;1320893735;51.510860;-0.100460;"{""name"":""Paul\u0027s Walk"",""fee"":""yes""}" london;toilet;1320895538;51.510872;-0.105144;"{""name"":""Blackfriars Millennium Pier""}" london;toilet;1321888834;51.541733;-0.000516;"{""fee"":""yes""}" london;toilet;1333739507;51.478577;-0.290582;"{""wheelchair"":""yes"",""fee"":""no""}" london;toilet;1361990617;51.431950;-0.212896;[] london;toilet;1364665481;51.457890;0.116490;[] london;toilet;1372372846;51.606186;-0.186038;[] london;toilet;1376858185;51.655727;-0.204005;"{""name"":""The Spires"",""wheelchair"":""yes"",""opening_hours"":""Mo-Th 08:30-20:00; Fr 08:30-21:00; Sa 08:30-19:00; Su 10:00-16:00""}" london;toilet;1388988156;51.530212;-0.481336;[] london;toilet;1390249803;51.461666;-0.215920;"{""name"":""Putney Library"",""wheelchair"":""yes"",""opening_hours"":""Mo,We,Th 09:00-20:00; Fr 09:00-14:00; Sa 09:00-17:00; Su 13:00-17:00""}" london;toilet;1390254084;51.483307;-0.219046;"{""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;1401908264;51.517200;-0.093807;[] london;toilet;1407515795;51.519909;-0.075702;"{""fee"":""no""}" london;toilet;1408474635;51.529274;-0.046888;"{""wheelchair"":""no"",""fee"":""yes""}" london;toilet;1412226827;51.474483;-0.102617;[] london;toilet;1414109691;51.504841;-0.086407;[] london;toilet;1421212310;51.481270;-0.189321;[] london;toilet;1421816194;51.511211;-0.308228;[] london;toilet;1422401250;51.549152;-0.152815;"{""name"":""Queen\u0027s Crescent"",""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;1425191724;51.431381;-0.276304;[] london;toilet;1428315650;51.492653;-0.149264;"{""fee"":""yes""}" london;toilet;1428315721;51.493370;-0.149154;"{""fee"":""yes""}" london;toilet;1428315779;51.495369;-0.145228;"{""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;1436775907;51.515900;-0.204746;[] london;toilet;1445861686;51.528183;-0.075703;"{""name"":""Hackney Road"",""fee"":""yes""}" london;toilet;1449001356;51.543041;-0.006584;[] london;toilet;1449156765;51.543274;-0.005048;[] london;toilet;1453583158;51.543285;-0.005072;[] london;toilet;1461884001;51.642971;-0.161912;"{""name"":""East Barnet War Memorial"",""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;1483282639;51.500023;0.003961;[] london;toilet;1484898071;51.447784;-0.323494;"{""note"":""Male only"",""wheelchair"":""no"",""fee"":""no""}" london;toilet;1491602080;51.488117;-0.396382;[] london;toilet;1491620412;51.488537;-0.387580;[] london;toilet;1493328982;51.514111;-0.139512;[] london;toilet;1499089924;51.579727;-0.150075;[] london;toilet;1508420512;51.471802;-0.488262;[] london;toilet;1508663666;51.580036;-0.334431;"{""fee"":""yes""}" london;toilet;1510803670;51.370682;-0.195002;[] london;toilet;1515455642;51.442207;-0.089693;[] london;toilet;1539891332;51.402412;-0.188469;[] london;toilet;1546034593;51.479336;0.154007;[] london;toilet;1579064293;51.541832;0.001224;[] london;toilet;1581245058;51.516731;-0.178210;[] london;toilet;1591382301;51.522598;-0.125984;[] london;toilet;1597710055;51.415474;-0.338212;"{""wheelchair"":""yes""}" london;toilet;1646417228;51.540234;-0.439248;[] london;toilet;1649317042;51.428783;-0.047479;[] london;toilet;1656334886;51.473919;-0.035260;[] london;toilet;1658544859;51.472538;-0.037309;[] london;toilet;1667373942;51.472401;-0.036948;[] london;toilet;1670423000;51.474072;-0.035908;[] london;toilet;1671272868;51.551811;-0.192293;[] london;toilet;1676805184;51.475197;-0.036192;[] london;toilet;1684609581;51.474648;-0.037685;[] london;toilet;1684643221;51.475075;-0.035824;[] london;toilet;1684652387;51.476913;-0.042089;[] london;toilet;1684656254;51.476479;-0.032380;[] london;toilet;1685968030;51.474144;-0.036614;[] london;toilet;1686284781;51.476418;-0.037700;[] london;toilet;1686333587;51.474846;-0.035713;[] london;toilet;1686505988;51.474384;-0.038081;[] london;toilet;1686505990;51.474152;-0.037974;[] london;toilet;1687371002;51.475105;-0.038668;[] london;toilet;1687451490;51.651550;-0.149596;"{""name"":""Cockfosters Underground Station"",""fee"":""yes"",""opening_hours"":""Mo-Sa 06:00-24:00; Su 07:00-23:00""}" london;toilet;1687451492;51.651810;-0.149706;"{""name"":""Cockfosters Underground Station"",""fee"":""yes"",""opening_hours"":""Mo-Sa 06:00-24:00; Su 07:00-23:00""}" london;toilet;1689263091;51.618797;-0.134391;[] london;toilet;1689288768;51.649628;-0.085339;[] london;toilet;1694708634;51.431664;0.021489;[] london;toilet;1708650816;51.494240;-0.012504;[] london;toilet;1713383928;51.504440;-0.224602;"{""note"":""Automated toilets"",""wheelchair"":""yes""}" london;toilet;1723656498;51.509274;-0.090662;[] london;toilet;1735303350;51.503010;0.004206;[] london;toilet;1752163497;51.477116;-0.235327;[] london;toilet;1752190418;51.476315;-0.230073;[] london;toilet;1752190426;51.476406;-0.234886;[] london;toilet;1752190519;51.477043;-0.236225;[] london;toilet;1752208308;51.568367;-0.142684;[] london;toilet;1756373274;51.484844;-0.162757;[] london;toilet;1757749635;51.486038;-0.123810;"{""name"":""Vauxhall bus station"",""wheelchair"":""yes"",""opening_hours"":""Mo-Sa 06:00-20:00; Su 10:00-17:30""}" london;toilet;1778378552;51.617256;-0.117155;[] london;toilet;1831933124;51.491024;-0.096843;"{""name"":""Public Toilet"",""note"":""Inside Cuming Museum, accessible from the One Stop Shop"",""wheelchair"":""yes"",""fee"":""no""}" london;toilet;1853127924;51.572746;0.066836;"{""wheelchair"":""yes"",""fee"":""no""}" london;toilet;1920522604;51.298473;-0.134592;[] london;toilet;1933715155;51.465031;-0.160824;"{""fee"":""no""}" london;toilet;1933715200;51.463821;-0.163958;"{""fee"":""no""}" london;toilet;1939280040;51.458473;-0.169817;[] london;toilet;1958800796;51.517006;-0.115350;"{""operator"":""Camden Council""}" london;toilet;1961583238;51.546650;0.025826;[] london;toilet;1963290546;51.593563;-0.021210;"{""wheelchair"":""yes""}" london;toilet;1964458523;51.594177;0.023714;[] london;toilet;1968744125;51.501328;-0.123805;[] london;toilet;1973254569;51.508072;0.062913;[] london;toilet;1973254582;51.507381;0.064629;[] london;toilet;1973254583;51.507381;0.063251;[] london;toilet;1973254590;51.507404;0.062215;[] london;toilet;1984550247;51.501453;-0.203338;[] london;toilet;1988404054;51.354069;-0.104192;[] london;toilet;2004354331;51.523888;-0.088248;[] london;toilet;2048918706;51.571388;0.013876;[] london;toilet;2068129910;51.536373;-0.043382;"{""fee"":""yes""}" london;toilet;2141849209;51.538868;-0.142480;"{""wheelchair"":""no"",""fee"":""no""}" london;toilet;2141849210;51.538891;-0.142843;"{""wheelchair"":""no"",""fee"":""no""}" london;toilet;2148322519;51.499352;-0.314296;[] london;toilet;2156754403;51.492649;-0.260541;"{""note"":""Automated Sanisette\/Superloo toilet""}" london;toilet;2178454024;51.624775;-0.057604;"{""name"":""Market Square, Edmonton Green"",""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;2180092343;51.417603;-0.072572;"{""name"":""Crystal Palace Station platform 1 toilets"",""fee"":""no""}" london;toilet;2180092344;51.418049;-0.072803;"{""name"":""Crystal Palace station ticket hall toilets"",""wheelchair"":""yes"",""fee"":""no""}" london;toilet;2184647917;51.508858;-0.198370;"{""name"":""Notting Hill Gate"",""wheelchair"":""yes"",""fee"":""yes""}" london;toilet;2184649501;51.596474;-0.130268;"{""name"":""Alexandra Palace Toilets""}" london;toilet;2201329914;51.636005;-0.059165;[] london;toilet;2239832207;51.493057;-0.228303;[] \ No newline at end of file diff --git a/assets/csv/odbl/paris_dab.csv b/assets/csv/odbl/paris_dab.csv new file mode 100644 index 0000000..14f6bdf --- /dev/null +++ b/assets/csv/odbl/paris_dab.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags paris;atm;27415802;48.883286;2.302207;"{""name"":""Paris 17 Wagram"",""note"":""situation : 108 AVENUE DE WAGRAM"",""amenity"":""post_office""}" paris;atm;29434739;48.855461;2.306825;"{""name"":""Paris \u00c9cole Militaire"",""amenity"":""post_office""}" paris;atm;60769229;48.895027;2.344757;"{""name"":""La Poste Paris Duhesme"",""amenity"":""post_office""}" paris;atm;159959656;48.845619;2.305137;"{""name"":""Paris Fran\u00e7ois Bonvin"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;207782744;48.867306;2.345888;"{""name"":""Paris Sentier"",""amenity"":""post_office""}" paris;atm;213197163;48.870285;2.350896;"{""name"":""Paris Bonne Nouvelle"",""note"":""situation : 18 BOULEVARD DE BONNE NOUVELLE"",""amenity"":""post_office""}" paris;atm;243066043;48.827808;2.279868;"{""name"":""Issy-les-Moulineaux Corentin Celton"",""amenity"":""post_office""}" paris;atm;247757325;48.836353;2.353672;"{""name"":""Poste Reine Blanche;Paris Reine Blanche \/austerlitz"",""note"":""situation : 21 RUE DE LA REINE BLANCHE"",""amenity"":""post_office""}" paris;atm;248170531;48.852272;2.340637;"{""name"":""Paris Od\u00e9on \/ Beaux-Arts"",""amenity"":""post_office""}" paris;atm;249560489;48.834648;2.317286;"{""name"":""Paris Pernety \/plaisance"",""note"":""situation : 52 RUE PERNETY"",""amenity"":""post_office""}" paris;atm;249661318;48.831814;2.330759;"{""name"":""Paris Denfert Rochereau"",""note"":""situation : 15 B AVENUE DU GENERAL LECLERC"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;249881132;48.844536;2.324273;"{""name"":""Paris Littr\u00e9"",""amenity"":""post_office""}" paris;atm;250229129;48.841431;2.306954;"{""name"":""Paris Volontaires \/ Fran\u00e7ois Bonvin"",""amenity"":""post_office""}" paris;atm;251509876;48.835571;2.285967;"{""name"":""Paris Desnouettes"",""amenity"":""post_office""}" paris;atm;251773325;48.847668;2.352743;"{""name"":""Paris Jussieu"",""note"":""situation : 30 B RUE DU CARDINAL LEMOINE"",""amenity"":""post_office""}" paris;atm;251774784;48.846081;2.374245;"{""name"":""Paris Gare-de-Lyon"",""amenity"":""post_office""}" paris;atm;251774919;48.843822;2.372902;"{""name"":""Paris Gamma"",""wheelchair"":""limited"",""amenity"":""post_office""}" paris;atm;251861700;48.852669;2.332366;"{""name"":""Paris Saint-Germain-des-Pr\u00e9s \/ M\u00e9dicis"",""amenity"":""post_office""}" paris;atm;252114719;48.849403;2.337070;"{""name"":""Paris M\u00e9dicis"",""amenity"":""post_office""}" paris;atm;252657578;48.824913;2.357154;"{""name"":""Paris Moulin de la Pointe \/ Massena"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;252657581;48.828587;2.356896;"{""name"":""Paris Italie"",""note"":""situation : 23 AVENUE D ITALIE"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;252657780;48.825996;2.345921;"{""name"":""Paris Butte Aux Cailles"",""note"":""situation : 216 RUE DE TOLBIAC"",""amenity"":""post_office""}" paris;atm;254115436;48.850193;2.325032;"{""name"":""Paris S\u00e8vres-Babylone \/ Raspail"",""amenity"":""post_office""}" paris;atm;256168136;48.842056;2.363690;"{""name"":""Paris Austerlitz"",""note"":""situation : 7 B BOULEVARD DE L HOPITAL"",""amenity"":""post_office""}" paris;atm;257685751;48.822689;2.326003;"{""name"":""Paris Porte D\u0027orleans"",""amenity"":""post_office""}" paris;atm;257686907;48.818981;2.361204;"{""name"":""Paris Massena"",""note"":""situation : 129 BOULEVARD MASSENA"",""amenity"":""post_office""}" paris;atm;257711184;48.846912;2.381399;"{""name"":""Paris Crozatier"",""amenity"":""post_office""}" paris;atm;259008233;48.884201;2.338862;"{""name"":""Paris Abbesses"",""amenity"":""post_office""}" paris;atm;259446778;48.844872;2.297453;"{""name"":""Paris Saint-Lambert"",""wheelchair"":""no"",""amenity"":""post_office""}" paris;atm;259637362;48.856819;2.352301;"{""name"":""Paris Hotel De Ville"",""note"":""situation : PLACE DE L HOTEL DE VILLE"",""amenity"":""post_office""}" paris;atm;261568869;48.850052;2.307692;"{""name"":""Paris S\u00e9gur"",""wheelchair"":""no"",""amenity"":""post_office""}" paris;atm;267314325;48.858627;2.300782;"{""name"":""Paris Champ de Mars"",""amenity"":""post_office""}" paris;atm;268021892;48.829678;2.297353;"{""name"":""Paris Georges Brassens"",""note"":""situation : 113 BOULEVARD LEFEBVRE"",""amenity"":""post_office""}" paris;atm;268456227;48.869755;2.341488;"{""name"":""Paris Bourse"",""amenity"":""post_office""}" paris;atm;269334059;48.879719;2.357027;"{""name"":""Paris Gare-du-Nord"",""amenity"":""post_office""}" paris;atm;276791622;48.822266;2.301301;"{""name"":""Malakoff Centre"",""amenity"":""post_office""}" paris;atm;277055083;48.841362;2.343800;"{""name"":""Paris Feuillantines"",""note"":""situation : 47 RUE D ULM"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;277055134;48.841587;2.350559;"{""name"":""Paris Mouffetard \/ Feuillantines"",""note"":""situation : 10 RUE DE L EPEE DE BOIS"",""amenity"":""post_office""}" paris;atm;280128292;48.852810;2.417955;"{""name"":""Montreuil Bas-Montreuil"",""amenity"":""post_office""}" paris;atm;280709223;48.868645;2.395703;"{""name"":""Paris Pyr\u00e9n\u00e9es"",""amenity"":""post_office""}" paris;atm;280709541;48.872849;2.399380;"{""name"":""Paris T\u00e9l\u00e9graphe"",""amenity"":""post_office""}" paris;atm;281165517;48.841011;2.306601;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;282085304;48.835236;2.326312;"{""name"":""Paris Daguerre"",""note"":""situation : 66 RUE DAGUERRE"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;282489742;48.874222;2.339692;"{""name"":""Paris Drouot"",""amenity"":""post_office""}" paris;atm;283225858;48.857002;2.300792;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;283225859;48.857914;2.300566;"{""name"":""Le Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;287542104;48.833691;2.346621;"{""name"":""Paris Corvisart"",""note"":""situation : 9 RUE CORVISART"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;288464994;48.846397;2.387074;"{""name"":""Paris Reuilly"",""note"":""situation : 30 RUE DE REUILLY"",""amenity"":""post_office""}" paris;atm;293986535;48.863266;2.385821;"{""name"":""Paris P\u00e8re Lachaise"",""note"":""situation : 103 AVENUE DE LA REPUBLIQUE"",""amenity"":""post_office""}" paris;atm;295339761;48.817669;2.260619;"{""name"":""Issy \u00c9pinettes"",""operator"":""La Poste"",""stamping_machine"":""yes"",""moneo_loading"":""yes""}" paris;atm;298904586;48.841442;2.286911;"{""name"":""Paris Boucicaut \/ Citro\u00ebn"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;299014619;48.876770;2.286732;"{""name"":""Paris Grande Arm\u00e9e"",""amenity"":""post_office""}" paris;atm;301724236;48.829468;2.308478;"{""name"":""Paris Plaisance"",""amenity"":""post_office""}" paris;atm;301861488;48.831779;2.314341;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;302009746;48.858723;2.402888;"{""name"":""Paris Charonne"",""note"":""situation : 132 RUE DES PYRENEES"",""amenity"":""post_office""}" paris;atm;302009749;48.852192;2.401359;"{""name"":""La Poste - Buzenval;Paris Buzenval"",""note"":""situation : 56 B RUE DE BUZENVAL"",""amenity"":""post_office""}" paris;atm;312765791;48.846725;2.284947;"{""name"":""Paris Beaugrenelle \/ Lourmel"",""amenity"":""post_office""}" paris;atm;312766434;48.848213;2.290097;"{""name"":""Paris Lourmel"",""amenity"":""post_office""}" paris;atm;314323079;48.872490;2.326764;"{""name"":""Paris Madeleine"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;315461886;48.883595;2.329166;"{""name"":""Paris Place Clichy"",""amenity"":""post_office""}" paris;atm;315765064;48.827682;2.327100;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;317817778;48.892319;2.341663;"{""name"":""Paris 18 Montmartre"",""amenity"":""post_office""}" paris;atm;320952617;48.850101;2.342809;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;321001717;48.832718;2.362666;"{""amenity"":""bank""}" paris;atm;321012447;48.830494;2.356324;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;321256323;48.832592;2.354484;"{""name"":""Agence BNP Paribas"",""wheelchair"":""no"",""amenity"":""bank""}" paris;atm;321367548;48.877045;2.405094;"{""name"":""Paris Les Tourelles"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;324333615;48.855408;2.326854;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;324477002;48.869747;2.370954;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;325094788;48.865910;2.378174;"{""name"":""Paris Saint-Maur"",""note"":""situation : 113 RUE OBERKAMPF"",""amenity"":""post_office""}" paris;atm;325095717;48.861271;2.377384;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;325095719;48.861240;2.374713;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;325096089;48.864346;2.378353;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;325674983;48.859383;2.379090;"{""name"":""Paris Parmentier"",""note"":""situation : 7 AVENUE PARMENTIER"",""amenity"":""post_office""}" paris;atm;325682976;48.853561;2.333514;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;325731602;48.841587;2.322848;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;326243219;48.874321;2.373763;"{""name"":""Paris Sambre Et Meuse"",""note"":""situation : 46 RUE DE SAMBRE ET MEUSE"",""amenity"":""post_office""}" paris;atm;326244483;48.870396;2.370965;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;327074413;48.877884;2.351014;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;327426199;48.852947;2.343412;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;330440150;48.814011;2.286541;"{""name"":""Malakoff Henri Barbusse"",""amenity"":""post_office""}" paris;atm;331228813;48.884571;2.408157;"{""name"":""Le Pr\u00e9-Saint-Gervais"",""amenity"":""post_office""}" paris;atm;338261415;48.830505;2.367788;"{""name"":""Paris Jeanne D\u0027arc"",""note"":""situation : 38 PLACE JEANNE D ARC"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;340359973;48.811565;2.271186;"{""name"":""Clamart La Fourche"",""amenity"":""post_office""}" paris;atm;340402114;48.851845;2.389095;"{""name"":""Paris Sainte-Marguerite"",""note"":""situation : 41 RUE DES BOULETS"",""amenity"":""post_office""}" paris;atm;380036287;48.819824;2.338639;"{""name"":""Paris Cite Universitaire"",""note"":""situation : 19 BOULEVARD JOURDAN"",""amenity"":""post_office""}" paris;atm;380036288;48.818996;2.338267;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;388836249;48.851486;2.400116;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;388836252;48.851658;2.400940;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;388836255;48.851723;2.401360;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;393172728;48.852100;2.403463;"{""name"":""BRED"",""amenity"":""bank""}" paris;atm;416532519;48.865108;2.374434;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;416532522;48.863022;2.386939;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;416532526;48.862507;2.385557;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;416532533;48.869965;2.371335;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;416538600;48.868973;2.372011;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;416542241;48.868767;2.372149;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;416550028;48.865299;2.375231;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;418062334;48.865192;2.375840;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;418064396;48.862907;2.386038;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;418073935;48.866848;2.383738;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;420684832;48.864513;2.368381;"{""name"":""Fortis"",""amenity"":""bank""}" paris;atm;426204020;48.831882;2.356812;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;428147504;48.862461;2.359462;"{""name"":""Paris Archives"",""note"":""situation : 67 RUE DES ARCHIVES"",""amenity"":""post_office""}" paris;atm;428162004;48.846539;2.378629;"{""amenity"":""bank""}" paris;atm;428162830;48.850731;2.377907;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;428163878;48.852985;2.382783;"{""name"":""Paris Faidherbe"",""note"":""situation : 33 RUE FAIDHERBE"",""amenity"":""post_office""}" paris;atm;429432285;48.899220;2.258106;"{""name"":""Courbevoie Aristide Briand"",""amenity"":""post_office""}" paris;atm;431830449;48.833088;2.331655;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;439201814;48.821217;2.342496;"{""name"":""Paris Montsouris"",""note"":""situation : 78 RUE DE L AMIRAL MOUCHEZ"",""amenity"":""post_office""}" paris;atm;439892393;48.873119;2.358614;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;446783203;48.874779;2.384881;"{""name"":""Paris Simon Bolivar"",""amenity"":""post_office""}" paris;atm;469974762;48.839874;2.393923;"{""name"":""Paris Daumesnil \/ Tahiti"",""amenity"":""post_office""}" paris;atm;469974767;48.839417;2.398481;"{""name"":""Paris Tahiti"",""note"":""situation : 68 BOULEVARD DE REUILLY"",""amenity"":""post_office""}" paris;atm;469974782;48.835484;2.385494;"{""name"":""Paris Lachambeaudie"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;470938406;48.815075;2.318727;"{""name"":""Montrouge Verdier"",""amenity"":""post_office""}" paris;atm;471619425;48.864079;2.409038;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;471619426;48.864025;2.408415;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;471629647;48.864681;2.406038;"{""name"":""Paris Edith Piaf"",""note"":""situation : 21 RUE BELGRAND"",""amenity"":""post_office""}" paris;atm;476311624;48.836742;2.298286;"{""name"":""HSBC Paris Vaugirard"",""amenity"":""bank""}" paris;atm;476312253;48.835735;2.302063;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;489652093;48.894844;2.280438;"{""name"":""Levallois-Perret Principal"",""amenity"":""post_office""}" paris;atm;490724238;48.899094;2.283197;"{""name"":""Levallois Front-de-Seine"",""amenity"":""post_office""}" paris;atm;497875041;48.860565;2.375142;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;506889671;48.864475;2.287951;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;506889677;48.864597;2.288035;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;506889739;48.864933;2.288311;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;506889930;48.865452;2.288681;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;506890029;48.866795;2.289617;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;506890260;48.867729;2.290972;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;519049947;48.836906;2.402171;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;519099109;48.839680;2.394521;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;520290748;48.839306;2.397008;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;525399382;48.874393;2.357427;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;527797020;48.848297;2.371578;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;530272877;48.847080;2.374047;"{""amenity"":""bank""}" paris;atm;530272900;48.846901;2.372166;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;530272901;48.847939;2.371723;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;530272902;48.846104;2.374087;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;530881588;48.847702;2.374029;"{""amenity"":""bank""}" paris;atm;534903465;48.846165;2.374739;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;534903643;48.846161;2.374916;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;534910746;48.845779;2.374553;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;535320364;48.856964;2.378893;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;535320368;48.856644;2.379115;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;561157126;48.856354;2.305000;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;582550217;48.858768;2.302973;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;582551527;48.858620;2.303931;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;582747896;48.854679;2.305172;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;595475959;48.823959;2.363465;"{""name"":""Paris Olympiades"",""note"":""situation : 19 RUE SIMONE WEIL"",""amenity"":""post_office""}" paris;atm;596077146;48.891052;2.319115;"{""name"":""Paris Brochant"",""amenity"":""post_office""}" paris;atm;597266169;48.883991;2.321856;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;599814682;48.891407;2.326739;"{""name"":""Paris Guy-Moquet"",""amenity"":""post_office""}" paris;atm;605496588;48.825668;2.292565;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;605502325;48.824780;2.294770;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;613504963;48.835987;2.396043;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;622502617;48.849628;2.349084;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;622502621;48.834538;2.353770;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;632680262;48.840599;2.418102;"{""note"":""situation : 6 RUE JEANNE D ARC"",""amenity"":""post_office""}" paris;atm;636873927;48.840302;2.361944;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;637464400;48.904751;2.331688;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;647333663;48.864883;2.405393;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;651300679;48.883392;2.381245;"{""name"":""Paris Laumi\u00e8re"",""amenity"":""post_office""}" paris;atm;658960144;48.876732;2.338627;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;658960148;48.876469;2.332619;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;658960150;48.875351;2.332400;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;660133658;48.880684;2.374183;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;663314827;48.877392;2.339526;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;668354941;48.873798;2.316052;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;668579722;48.870827;2.377944;"{""name"":""Paris Belleville"",""note"":""situation : 73 BOULEVARD DE BELLEVILLE"",""amenity"":""post_office""}" paris;atm;674769500;48.880795;2.300305;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;675233441;48.842361;2.281493;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;677151959;48.855766;2.346439;"{""name"":""Paris \u00cele de la Cit\u00e9"",""note"":""situation : 1 BOULEVARD DU PALAIS"",""amenity"":""post_office""}" paris;atm;677580732;48.852917;2.343685;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;677770389;48.859482;2.346711;"{""name"":""Paris Ch\u00e2telet"",""amenity"":""post_office""}" paris;atm;679038468;48.830158;2.264935;"{""name"":""Issy Forum Seine"",""amenity"":""post_office""}" paris;atm;679060943;48.838669;2.282272;"{""wheelchair"":""limited"",""amenity"":""bank""}" paris;atm;679073158;48.866611;2.354020;"{""name"":""Paris Arts Et Metiers"",""note"":""situation : 259 RUE SAINT MARTIN"",""amenity"":""post_office""}" paris;atm;680443205;48.862541;2.349665;"{""name"":""Paris Beaubourg"",""amenity"":""post_office""}" paris;atm;681370057;48.864868;2.342719;"{""name"":""Agence de Paris Louvre Conseil"",""amenity"":""bank""}" paris;atm;685481946;48.874279;2.376056;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;687994336;48.868664;2.342176;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale Bourse"",""amenity"":""bank""}" paris;atm;691225540;48.857822;2.274649;"{""name"":""Caixa Geral de Depositos"",""amenity"":""bank""}" paris;atm;691512408;48.866093;2.352675;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;694644475;48.852100;2.356872;"{""name"":""Paris \u00cele Saint-Louis"",""note"":""situation : 16 RUE DES 2 PONTS"",""amenity"":""post_office""}" paris;atm;697571455;48.861294;2.353701;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;702793868;48.857758;2.355871;"{""name"":""Paris Moussy"",""note"":""situation : 10 RUE DE MOUSSY"",""amenity"":""post_office""}" paris;atm;702977137;48.857273;2.361575;"{""name"":""Paris Le Marais"",""note"":""situation : 27 RUE DES FRANCS BOURGEOIS"",""amenity"":""post_office""}" paris;atm;706799817;48.866989;2.362044;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;707316749;48.866718;2.361185;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;708258203;48.877720;2.393746;"{""name"":""Paris Place des F\u00eates"",""amenity"":""post_office""}" paris;atm;709224514;48.865612;2.360840;"{""name"":""Paris Temple"",""note"":""situation : 160 RUE DU TEMPLE"",""amenity"":""post_office""}" paris;atm;717961742;48.863979;2.365199;"{""name"":""Paris Saintonge"",""note"":""situation : 64 RUE DE SAINTONGE"",""amenity"":""post_office""}" paris;atm;722234865;48.863079;2.351038;"{""name"":""BRED"",""amenity"":""bank""}" paris;atm;724144586;48.842121;2.321725;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;724331813;48.847607;2.342836;"{""name"":""Paris Sorbonne"",""note"":""situation : 13 RUE CUJAS"",""amenity"":""post_office""}" paris;atm;726308929;48.859459;2.379395;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;726584958;48.857559;2.384847;"{""name"":""Paris Mercoeur"",""note"":""situation : 80 RUE LEON FROT"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;727718580;48.841892;2.321874;"{""name"":""Paris Tour Montparnasse"",""amenity"":""post_office""}" paris;atm;727739354;48.852169;2.331423;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;727779857;48.844730;2.324472;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;727779879;48.842808;2.323971;"{""name"":""Banque de Bretagne"",""amenity"":""bank""}" paris;atm;735172041;48.880741;2.364956;"{""name"":""Paris Louis-Blanc"",""amenity"":""post_office""}" paris;atm;749485952;48.888351;2.391779;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;766689455;48.869400;2.364897;"{""name"":""Paris Canal Saint-Martin"",""note"":""situation : 11 RUE LEON JOUHAUX"",""amenity"":""post_office""}" paris;atm;784342728;48.868862;2.359232;"{""name"":""Paris Republique"",""note"":""situation : 56 RUE RENE BOULANGER"",""amenity"":""post_office""}" paris;atm;789985789;48.890427;2.376014;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;797963551;48.900578;2.316184;"{""name"":""Clichy Victor Hugo"",""amenity"":""post_office""}" paris;atm;801196117;48.847870;2.319831;"{""name"":""Paris Cherche-Midi"",""amenity"":""post_office""}" paris;atm;810140301;48.829922;2.378703;"{""name"":""Paris Rive Gauche"",""note"":""situation : RUE OLIVIER MESSIAEN"",""amenity"":""post_office""}" paris;atm;810140304;48.829655;2.378984;"{""name"":""LCL"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;812129477;48.870140;2.320805;"{""name"":""Paris Anjou"",""amenity"":""post_office""}" paris;atm;822953039;48.879181;2.314116;"{""name"":""Paris Monceau"",""amenity"":""post_office""}" paris;atm;828728734;48.870701;2.308332;"{""name"":""Paris Colis\u00e9e"",""amenity"":""post_office""}" paris;atm;831915657;48.868729;2.301416;"{""name"":""Barklays"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;838041211;48.873894;2.300871;"{""name"":""Paris Chambre De Commerce"",""amenity"":""post_office""}" paris;atm;838163171;48.824390;2.274444;"{""name"":""BNP Paribas"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;839186018;48.846172;2.410532;"{""name"":""Paris Soult"",""note"":""situation : 137 BOULEVARD SOULT"",""amenity"":""post_office""}" paris;atm;843477419;48.869843;2.306176;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;867491337;48.892193;2.407504;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;867507911;48.891918;2.405924;"{""name"":""Fortis"",""amenity"":""bank""}" paris;atm;878709956;48.829006;2.246309;"{""name"":""Boulogne-Billancourt Sud"",""amenity"":""post_office""}" paris;atm;913507962;48.828457;2.379080;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;913550836;48.828880;2.382041;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;913551306;48.829384;2.378245;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;916536557;48.844463;2.405865;"{""amenity"":""bank""}" paris;atm;916861458;48.876595;2.361163;"{""name"":""Paris Gare de l\u0027Est"",""amenity"":""post_office""}" paris;atm;916889331;48.891682;2.406221;"{""name"":""Pantin Principal"",""amenity"":""post_office""}" paris;atm;938011740;48.874989;2.286013;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;938864834;48.868797;2.289573;"{""name"":""Paris \u00c9toile"",""amenity"":""post_office""}" paris;atm;939459496;48.875969;2.283499;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;939792457;48.811378;2.383540;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;942635902;48.868103;2.281938;"{""name"":""Paris Victor Hugo \/ Montevideo"",""amenity"":""post_office""}" paris;atm;942880083;48.846001;2.373458;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;955242946;48.861202;2.275164;"{""name"":""Paris Muette \/ Mozart"",""amenity"":""post_office""}" paris;atm;957292026;48.859402;2.277425;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;966207786;48.841141;2.313651;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;971286181;48.875980;2.346227;"{""name"":""Paris Montholon"",""amenity"":""post_office""}" paris;atm;971476201;48.876053;2.345064;"{""name"":""BRED"",""amenity"":""bank""}" paris;atm;975370163;48.841774;2.318510;"{""name"":""BNP Paribas"",""wheelchair"":""limited"",""amenity"":""bank""}" paris;atm;975573854;48.819443;2.305967;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;975602773;48.821957;2.303861;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;976978258;48.835297;2.249513;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;978607979;48.839481;2.309785;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;980377563;48.878185;2.287859;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;986921150;48.836285;2.306193;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;987616152;48.825611;2.315648;"{""name"":""Paris Brune"",""note"":""situation : 105 BOULEVARD BRUNE"",""amenity"":""post_office""}" paris;atm;987727065;48.884674;2.362600;"{""name"":""Paris Philippe-de-Girard"",""amenity"":""post_office""}" paris;atm;992935781;48.823471;2.325286;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;992951504;48.823292;2.326084;"{""name"":""BNP Paribas Porte d\u0027Orleans 14e"",""amenity"":""bank""}" paris;atm;993828540;48.841206;2.316736;"{""name"":""Paris Bienvenue"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1001216232;48.845440;2.258242;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1014690243;48.860699;2.355429;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1014690275;48.860527;2.355207;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1015358473;48.883900;2.289382;"{""name"":""Paris Gouvion Saint-Cyr"",""note"":""situation : 79 RUE BAYEN"",""amenity"":""post_office""}" paris;atm;1020227483;48.871765;2.376517;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1022719809;48.838833;2.257051;"{""name"":""Paris Parc des Princes"",""amenity"":""post_office""}" paris;atm;1023556462;48.856293;2.408675;"{""name"":""Paris Saint-Blaise"",""note"":""situation : 37 RUE MOURAUD"",""amenity"":""post_office""}" paris;atm;1049759431;48.830719;2.319302;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1049759485;48.830402;2.319227;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1107823409;48.882412;2.381464;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1108731805;48.875816;2.286707;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1124797130;48.850437;2.325041;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1143043426;48.895462;2.251355;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1166504906;48.848011;2.260585;"{""name"":""Bred"",""amenity"":""bank""}" paris;atm;1166729036;48.855553;2.360296;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1166729305;48.858543;2.355500;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1175138675;48.818329;2.421163;"{""name"":""Saint-Maurice Leclerc"",""note"":""situation : 23 Rue du Mar\u00e9chal Leclerc"",""amenity"":""post_office""}" paris;atm;1179938579;48.866131;2.353608;"{""name"":""Sofinco"",""amenity"":""bank""}" paris;atm;1185602621;48.841789;2.329379;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1202456832;48.861370;2.334896;"{""name"":""Paris Mus\u00e9e du Louvre"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1223611312;48.872444;2.329681;"{""name"":""Paris Opera"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1225461854;48.868530;2.362722;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;1225461855;48.864532;2.345843;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;1225461867;48.867188;2.362493;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1236329741;48.877026;2.341366;"{""name"":""Paris Rochechouart"",""amenity"":""post_office""}" paris;atm;1243135633;48.847137;2.386773;"{""name"":""Bred \/ Banque Populaire"",""amenity"":""bank""}" paris;atm;1243135690;48.838245;2.398562;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1243135825;48.835625;2.405737;"{""name"":""Bred \/ Banque Populaire"",""amenity"":""bank""}" paris;atm;1243135947;48.841755;2.386419;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;1244411712;48.845554;2.310811;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1244411719;48.845043;2.310457;"{""name"":""LCL"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1252379982;48.839439;2.291884;"{""name"":""Cr\u00e9dit Coop\u00e9ratif"",""amenity"":""bank""}" paris;atm;1278464764;48.879475;2.354724;"{""name"":""BNPP"",""amenity"":""bank""}" paris;atm;1280199207;48.883865;2.257177;"{""name"":""Neuilly Saint-James"",""amenity"":""post_office""}" paris;atm;1289318938;48.867397;2.303808;"{""name"":""Paris La Tremoille"",""amenity"":""post_office""}" paris;atm;1291172654;48.843109;2.312892;"{""name"":""Banque Populaire"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1292081055;48.867367;2.306482;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1292104306;48.876892;2.321819;"{""name"":""Paris Europe"",""amenity"":""post_office""}" paris;atm;1301310505;48.862614;2.371630;"{""name"":""Paris Richard Lenoir"",""note"":""situation : 97 BOULEVARD RICHARD LENOIR"",""amenity"":""post_office""}" paris;atm;1306563392;48.825687;2.365377;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1307180057;48.857750;2.374041;"{""name"":""Paris Popincourt"",""note"":""situation : 21 RUE BREGUET"",""amenity"":""post_office""}" paris;atm;1312400544;48.843445;2.277568;"{""name"":""Paris Citro\u00ebn"",""amenity"":""post_office""}" paris;atm;1317494803;48.869522;2.395075;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1319967015;48.826382;2.341452;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1319976587;48.826035;2.341501;"{""name"":""BNP Paribas Parc Montsouris"",""amenity"":""bank""}" paris;atm;1319976590;48.826202;2.341882;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;1319976596;48.826336;2.341441;"{""name"":""LCL"",""amenity"":""atm""}" paris;atm;1323375360;48.827850;2.326254;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1347770052;48.838829;2.281627;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1352424028;48.836796;2.391794;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;1362787029;48.823414;2.357803;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1363018192;48.828331;2.324956;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1364961132;48.903507;2.267532;"{""name"":""Courbevoie B\u00e9con"",""amenity"":""post_office""}" paris;atm;1366610009;48.825375;2.294474;"{""name"":""Vanves Plateau"",""amenity"":""post_office""}" paris;atm;1366610055;48.825310;2.293578;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;1373609032;48.850071;2.288654;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1385333837;48.856003;2.342574;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1404732468;48.895893;2.249337;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;1407515552;48.854420;2.325704;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1432196111;48.846508;2.401051;"{""name"":""Paris Picpus"",""note"":""situation : 65 RUE DU RENDEZ VOUS"",""amenity"":""post_office""}" paris;atm;1432223144;48.845921;2.405854;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1432261558;48.898891;2.246083;"{""name"":""Courbevoie Marceau"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1437396763;48.858536;2.275120;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1440251021;48.876900;2.338713;"{""amenity"":""bank""}" paris;atm;1440454930;48.838337;2.405930;"{""name"":""Paris Porte Doree"",""note"":""situation : 15 B RUE ROTTEMBOURG"",""amenity"":""post_office""}" paris;atm;1440883091;48.836777;2.392859;"{""name"":""Paris - Br\u00e8che aux Loups"",""note"":""situation : 11 RUE DE WATTIGNIES"",""amenity"":""post_office""}" paris;atm;1450939225;48.826675;2.405244;"{""amenity"":""bank""}" paris;atm;1457027509;48.891762;2.334601;"{""name"":""Paris Vauvenargues"",""amenity"":""post_office""}" paris;atm;1468115732;48.844646;2.383857;"{""name"":""Intermarch\u00e9"",""operator"":""Groupement des Mousquetaires""}" paris;atm;1470710851;48.831070;2.342514;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;1477993712;48.898243;2.358619;"{""name"":""Paris Porte De La Chapelle"",""amenity"":""post_office""}" paris;atm;1483017716;48.876850;2.332472;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;1489467276;48.875225;2.341023;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;1489467281;48.874939;2.340781;"{""name"":""LCL"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1489467289;48.875164;2.340764;"{""name"":""UCB"",""amenity"":""bank""}" paris;atm;1491946788;48.895824;2.252012;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1491946801;48.896126;2.252602;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1517780229;48.846828;2.310996;"{""name"":""SG"",""wheelchair"":""limited"",""amenity"":""bank""}" paris;atm;1520865557;48.821266;2.260446;"{""name"":""Credit Lyonnais"",""amenity"":""bank""}" paris;atm;1540677921;48.872791;2.332795;"{""amenity"":""bank""}" paris;atm;1541521675;48.826191;2.406020;"{""name"":""BRED"",""amenity"":""bank""}" paris;atm;1541521685;48.825703;2.406889;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1544866107;48.854042;2.410246;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1544919402;48.822067;2.414266;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;1564467796;48.846539;2.351878;"{""amenity"":""bank""}" paris;atm;1572738363;48.825672;2.350004;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1574109122;48.825993;2.345820;"{""name"":""La Banque Postale"",""amenity"":""bank""}" paris;atm;1579642967;48.827572;2.325896;"{""name"":""LCL Banque priv\u00e9e"",""amenity"":""bank""}" paris;atm;1579650016;48.827408;2.326271;"{""name"":""BNP Paribas - Alesia 14e"",""amenity"":""bank""}" paris;atm;1583626216;48.836910;2.371203;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1583739953;48.831280;2.377567;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;1593566393;48.872204;2.337183;"{""name"":""Paris Haussmann"",""amenity"":""post_office""}" paris;atm;1594977466;48.814785;2.305496;"{""name"":""Montrouge Haut Mesnil"",""amenity"":""post_office""}" paris;atm;1657637008;48.902634;2.393281;"{""name"":""Pantin Quatre Chemins"",""amenity"":""post_office""}" paris;atm;1665326829;48.867718;2.383701;"{""name"":""Paris M\u00e9nilmontant"",""amenity"":""post_office""}" paris;atm;1670553060;48.854939;2.306129;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1673104006;48.843338;2.349457;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1674745548;48.908436;2.260853;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1676570192;48.846600;2.418262;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1676877620;48.857063;2.381706;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1728840487;48.897591;2.247509;"{""amenity"":""bank""}" paris;atm;1728958913;48.896816;2.248337;"{""amenity"":""bank""}" paris;atm;1733878868;48.879070;2.354035;"{""name"":""caisse d\u0027\u00e9pargne"",""amenity"":""bank""}" paris;atm;1738679768;48.848598;2.261682;"{""name"":""Paris Auteuil \/ La Fontaine"",""note"":""situation : 46 RUE POUSSIN"",""amenity"":""post_office""}" paris;atm;1738679782;48.865883;2.295752;"{""name"":""Paris Chaillot"",""note"":""situation : 1 B RUE DE CHAILLOT"",""amenity"":""post_office""}" paris;atm;1738679783;48.852493;2.275357;"{""name"":""Paris La Fontaine"",""amenity"":""post_office""}" paris;atm;1738679784;48.867134;2.273915;"{""name"":""Paris Montevideo"",""note"":""situation : 19 RUE DE MONTEVIDEO"",""amenity"":""post_office""}" paris;atm;1738679785;48.856598;2.271700;"{""name"":""Paris Mozart"",""amenity"":""post_office""}" paris;atm;1738679786;48.864079;2.292688;"{""name"":""Paris Palais d\u0027I\u00e9na"",""amenity"":""post_office""}" paris;atm;1738679787;48.864964;2.287379;"{""name"":""Paris Trocadero Chaillot \u00c9toile"",""amenity"":""post_office""}" paris;atm;1738679788;48.841473;2.266776;"{""name"":""Paris Van Loo"",""amenity"":""post_office""}" paris;atm;1741252281;48.883999;2.338709;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;1741253395;48.884644;2.338069;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1743665620;48.848110;2.403676;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1746634561;48.850979;2.292792;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1747991143;48.836910;2.297163;"{""name"":""Paris Convention"",""amenity"":""post_office""}" paris;atm;1747991164;48.852390;2.292602;"{""name"":""Paris Dupleix"",""amenity"":""post_office""}" paris;atm;1747991174;48.834839;2.305136;"{""name"":""Paris Vouill\u00e9 \/ Georges Brassens"",""amenity"":""post_office""}" paris;atm;1748261702;48.860832;2.320214;"{""name"":""Paris Orsay"",""amenity"":""post_office""}" paris;atm;1748261726;48.860920;2.318035;"{""name"":""Paris Palais Bourbon"",""amenity"":""post_office""}" paris;atm;1748261738;48.855579;2.325869;"{""name"":""Paris Raspail"",""amenity"":""post_office""}" paris;atm;1748261745;48.857059;2.319010;"{""name"":""Paris Rodin \/ Orsay"",""amenity"":""post_office""}" paris;atm;1748261754;48.858166;2.294600;"{""name"":""Paris Tour Eiffel"",""note"":""situation : 1 IER ETAGE TOUR EIFFEL - 6 TOUR EIFFEL"",""amenity"":""post_office""}" paris;atm;1750121041;48.868870;2.329353;"{""name"":""Paris Capucines"",""amenity"":""post_office""}" paris;atm;1750121054;48.861771;2.347728;"{""name"":""Paris Forum des Halles"",""note"":""situation : 1 RUE PIERRE LESCOT"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1755234950;48.875080;2.323571;"{""name"":""Paris Saint-Lazare"",""amenity"":""post_office""}" paris;atm;1755256374;48.856129;2.331403;"{""name"":""Paris Beaux-Arts"",""amenity"":""post_office""}" paris;atm;1755256376;48.849171;2.336451;"{""name"":""Paris Palais-du-Luxembourg"",""amenity"":""post_office""}" paris;atm;1755269936;48.884243;2.320899;"{""name"":""Paris Batignolles"",""amenity"":""post_office""}" paris;atm;1755269937;48.896370;2.319624;"{""name"":""Paris Bessi\u00e8res"",""amenity"":""post_office""}" paris;atm;1755269940;48.889103;2.308390;"{""name"":""Paris Cardinet"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1755269941;48.883953;2.313764;"{""name"":""Paris Debussy"",""amenity"":""post_office""}" paris;atm;1755269944;48.879967;2.294663;"{""name"":""Paris Ternes"",""amenity"":""post_office""}" paris;atm;1755285674;48.829666;2.321925;"{""name"":""Paris Alesia"",""note"":""situation : 114 B RUE D ALESIA"",""amenity"":""post_office""}" paris;atm;1755285676;48.864826;2.397852;"{""name"":""Paris Place Gambetta"",""note"":""situation : 7 PLACE GAMBETTA"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1755305435;48.898735;2.336321;"{""name"":""Paris Bichat"",""amenity"":""post_office""}" paris;atm;1755305441;48.893337;2.351012;"{""name"":""Paris Boinod"",""amenity"":""post_office""}" paris;atm;1755305451;48.887871;2.349376;"{""name"":""Paris Ch\u00e2teau-Rouge"",""amenity"":""post_office""}" paris;atm;1755305452;48.884769;2.350696;"{""name"":""Paris La Goutte-d\u0027Or"",""amenity"":""post_office""}" paris;atm;1755305455;48.890015;2.338630;"{""name"":""Paris Lamarck"",""amenity"":""post_office""}" paris;atm;1755305469;48.890388;2.359501;"{""name"":""Paris Marx-Dormoy"",""amenity"":""post_office""}" paris;atm;1755305481;48.899529;2.370060;"{""name"":""Paris Porte d\u0027Aubervilliers"",""amenity"":""post_office""}" paris;atm;1755305487;48.894833;2.365069;"{""name"":""Paris Tristan-Tzara"",""amenity"":""post_office""}" paris;atm;1755326558;48.872269;2.346812;"{""name"":""Paris Conservatoire"",""amenity"":""post_office""}" paris;atm;1755326565;48.883129;2.334116;"{""name"":""Paris Pigalle"",""amenity"":""post_office""}" paris;atm;1755326575;48.881023;2.345128;"{""name"":""Paris Turgot"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1755332508;48.840801;2.332624;"{""name"":""Paris Observatoire \/ Daguerre"",""amenity"":""post_office""}" paris;atm;1755333057;48.825169;2.375375;"{""name"":""Paris Patay"",""amenity"":""post_office""}" paris;atm;1755334733;48.841000;2.377917;"{""name"":""Paris Minist\u00e8re des Finances"",""amenity"":""post_office""}" paris;atm;1755339555;48.875744;2.355560;"{""name"":""Paris Magenta"",""note"":""situation : 2 SQUARE ALBAN SATRAGNE"",""amenity"":""post_office""}" paris;atm;1756139992;48.855045;2.269950;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1760264179;48.884300;2.390535;"{""name"":""Paris Buttes Chaumont"",""amenity"":""post_office""}" paris;atm;1760264185;48.892769;2.374582;"{""name"":""Paris Curial"",""amenity"":""post_office""}" paris;atm;1760264190;48.883911;2.373943;"{""name"":""Paris Jaur\u00e8s"",""amenity"":""post_office""}" paris;atm;1760264192;48.888660;2.373789;"{""name"":""Paris Orgues de Flandre"",""amenity"":""post_office""}" paris;atm;1760283668;48.869171;2.408545;"{""name"":""Paris Saint-Fargeau"",""amenity"":""post_office""}" paris;atm;1765177762;48.844280;2.324469;"{""name"":""BNP Paribas"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1765475930;48.814617;2.420549;"{""name"":""La Poste"",""amenity"":""post_office""}" paris;atm;1768090401;48.820160;2.251848;"{""name"":""Issy-les-Moulineaux Ouest"",""note"":""situation : 23 ALLEE SAINTE LUCIE"",""amenity"":""post_office""}" paris;atm;1768090407;48.820778;2.290769;"{""name"":""Vanves H\u00f4tel-de-Ville"",""amenity"":""post_office""}" paris;atm;1768590474;48.819633;2.306182;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;1774814304;48.891453;2.254761;"{""name"":""Courbevoie Abreuvoir"",""amenity"":""post_office""}" paris;atm;1774814305;48.889957;2.271098;"{""name"":""Neuilly Bineau"",""amenity"":""post_office""}" paris;atm;1774814306;48.883312;2.246646;"{""name"":""Puteaux Jaur\u00e8s"",""amenity"":""post_office""}" paris;atm;1774929115;48.879566;2.416478;"{""name"":""Les Lilas"",""note"":""situation : 4 BOULEVARD DE LA LIBERTE"",""amenity"":""post_office""}" paris;atm;1775475006;48.881844;2.271623;"{""name"":""Neuilly Sablons"",""amenity"":""post_office""}" paris;atm;1776757353;48.909855;2.273795;"{""name"":""Asni\u00e8res Chanzy"",""amenity"":""post_office""}" paris;atm;1776757354;48.902004;2.304464;"{""name"":""Clichy H\u00f4tel-de-Ville"",""amenity"":""post_office""}" paris;atm;1776757355;48.905098;2.304466;"{""name"":""Clichy Vend\u00f4me"",""amenity"":""post_office""}" paris;atm;1785384226;48.835819;2.386935;"{""name"":""Cr\u00e9dit Lyonnais"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;1791678322;48.843048;2.294989;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1795309757;48.841602;2.322423;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;1797968248;48.810829;2.314708;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1801601969;48.843044;2.322396;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;1803872317;48.885040;2.320586;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1803872959;48.886086;2.317759;"{""name"":""Soci\u00e9te G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1807486231;48.818104;2.321597;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1813683775;48.846863;2.353700;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1814986504;48.820194;2.364294;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1821294951;48.882668;2.327957;"{""name"":""BRED"",""amenity"":""bank""}" paris;atm;1821294955;48.882866;2.327542;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;1821294970;48.882690;2.327616;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1823551386;48.880424;2.328740;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1824509093;48.874332;2.334537;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1826091786;48.830185;2.345695;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1834679818;48.834057;2.290142;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1834687247;48.833038;2.289096;"{""name"":""Banque Populaire Rives de Paris"",""amenity"":""bank""}" paris;atm;1834691783;48.833435;2.289058;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1843639309;48.864220;2.342342;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;1861758010;48.869064;2.408355;"{""name"":""La Banque Postale"",""amenity"":""bank""}" paris;atm;1862264926;48.881542;2.291471;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1875100026;48.810150;2.362532;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;1877434456;48.883865;2.327474;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1886413827;48.888954;2.322694;"{""name"":""Credit Agricole"",""amenity"":""bank""}" paris;atm;1896121483;48.893795;2.336230;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1896163609;48.897575;2.337432;"{""name"":""BNP"",""amenity"":""bank""}" paris;atm;1896235967;48.895931;2.345725;"{""name"":""Cr\u00e9dit Lyonnais"",""amenity"":""bank""}" paris;atm;1896288725;48.890617;2.334487;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;1896384368;48.892971;2.340283;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;1903153329;48.909702;2.333292;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1903182362;48.893196;2.327364;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1909231562;48.893803;2.336006;"{""name"":""Caisse d\u0027\u00e9pargne"",""amenity"":""bank""}" paris;atm;1909262083;48.892822;2.327606;"{""name"":""BNP"",""amenity"":""bank""}" paris;atm;1909267381;48.892704;2.327085;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1909736064;48.903687;2.331302;"{""name"":""Cr\u00e9dit du nord"",""amenity"":""bank""}" paris;atm;1909740746;48.905624;2.331527;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1909764028;48.909882;2.333356;"{""name"":""Banque populaire"",""amenity"":""bank""}" paris;atm;1909835437;48.895084;2.327952;"{""name"":""Banque populaire"",""amenity"":""bank""}" paris;atm;1909857258;48.892780;2.341690;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1911003788;48.905670;2.344363;"{""name"":""Saint-Ouen Michelet"",""amenity"":""post_office""}" paris;atm;1912412004;48.902519;2.388836;"{""name"":""Aubervilliers Quatre-Chemins"",""amenity"":""post_office""}" paris;atm;1925728132;48.888638;2.390136;"{""name"":""Paris Parc de la Villette"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1927335201;48.894676;2.422432;"{""name"":""Pantin Les Limites"",""amenity"":""post_office""}" paris;atm;1930542160;48.846684;2.343081;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;1930542161;48.846455;2.344065;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;1930542185;48.850719;2.345228;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;1937157674;48.850601;2.292176;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;1938608293;48.843403;2.283249;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1939149260;48.844158;2.281423;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1942437345;48.892803;2.378526;"{""name"":""Paris Ourcq"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;1958246215;48.895264;2.249661;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;1958796818;48.872524;2.356416;"{""name"":""Paris Saint-Laurent"",""note"":""situation : 38 BOULEVARD DE STRASBOURG"",""amenity"":""post_office""}" paris;atm;1971972689;48.898464;2.247997;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1972003375;48.860104;2.280086;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1986773294;48.835835;2.395944;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;1986782616;48.862011;2.350402;"{""name"":""HSBC"",""amenity"":""bank""}" paris;atm;1986819764;48.855591;2.270512;"{""name"":""Caisse d\u0027Epargne"",""amenity"":""bank""}" paris;atm;1987166852;48.860767;2.282986;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;1988263332;48.816647;2.318585;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;1989439054;48.874252;2.326761;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2000248668;48.876057;2.331457;"{""name"":""Lcl"",""amenity"":""bank""}" paris;atm;2003145802;48.860752;2.355131;"{""name"":""Caisse d\u0027Epargne"",""amenity"":""bank""}" paris;atm;2003145809;48.859932;2.349254;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;2003145816;48.861698;2.349775;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;2003145901;48.861359;2.353282;"{""amenity"":""bureau_de_change""}" paris;atm;2009243094;48.824722;2.294779;"{""name"":""Caisse d\u0027\u00c9pargne"",""amenity"":""bank""}" paris;atm;2012713338;48.836643;2.323588;"{""name"":""Bnpp"",""amenity"":""bank""}" paris;atm;2026672301;48.817917;2.319108;"{""name"":""Cr\u00e9dit mutuel"",""amenity"":""bank""}" paris;atm;2026672315;48.816940;2.318490;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;2026672329;48.818459;2.318768;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;2028031430;48.902706;2.303880;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;2028083413;48.879845;2.288248;"{""amenity"":""bank""}" paris;atm;2036576301;48.870689;2.301840;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;2036587898;48.871147;2.302186;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2062268690;48.901134;2.316930;"{""name"":""Cr\u00e9dit du Nord"",""amenity"":""bank""}" paris;atm;2066750015;48.901024;2.315884;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2084076529;48.813107;2.361640;"{""name"":""Attijariwafa Bank"",""amenity"":""bank""}" paris;atm;2086423556;48.875015;2.284202;"{""name"":""Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2096571808;48.827190;2.368992;"{""name"":""BNP"",""amenity"":""bank""}" paris;atm;2122664572;48.820709;2.286092;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2125350846;48.819294;2.301691;"{""name"":""Banque Populaire"",""amenity"":""bank""}" paris;atm;2133877525;48.818970;2.323441;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2190217316;48.890945;2.295186;"{""name"":""Levallois-Perret Eiffel"",""amenity"":""post_office""}" paris;atm;2191591239;48.812378;2.361253;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;2193272116;48.825974;2.350785;"{""name"":""Caisse d\u0027Epargne Paris Buttes aux Cailles"",""amenity"":""bank""}" paris;atm;2193312151;48.825829;2.348108;"{""name"":""LCL Paris - Buttes aux Cailles"",""amenity"":""bank""}" paris;atm;2193389534;48.826088;2.345080;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;2196302905;48.903915;2.392016;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2196307033;48.903675;2.392405;"{""name"":""Caisse d\u0027Epargne"",""amenity"":""bank""}" paris;atm;2199527970;48.832153;2.360832;"{""name"":""Banque LCL"",""amenity"":""bank""}" paris;atm;2202933118;48.812683;2.386294;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2204791416;48.869038;2.401880;"{""name"":""Bred"",""amenity"":""bank""}" paris;atm;2206746775;48.871445;2.403842;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2206746780;48.873470;2.405244;"{""name"":""Bred"",""amenity"":""bank""}" paris;atm;2206746801;48.871574;2.403786;"{""name"":""Caisse d\u0027Epargne"",""amenity"":""bank""}" paris;atm;2206746836;48.870975;2.403516;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;2206746848;48.871181;2.404156;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2206863483;48.876453;2.404532;"{""name"":""Caisse d\u0027Epargne"",""amenity"":""bank""}" paris;atm;2206863485;48.878548;2.410363;"{""name"":""Cr\u00e9dit Mutuel"",""amenity"":""bank""}" paris;atm;2207102094;48.865028;2.397876;"{""name"":""BNP Paribas"",""wheelchair"":""yes"",""amenity"":""bank""}" paris;atm;2207102096;48.864845;2.397366;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;2207102101;48.866119;2.399373;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;2207102107;48.864506;2.398308;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;2207102108;48.864777;2.399150;"{""name"":""LCL"",""amenity"":""bank""}" paris;atm;2207102114;48.864616;2.398029;"{""name"":""Soci\u00e9t\u00e9 G\u00e9n\u00e9rale"",""amenity"":""bank""}" paris;atm;2211556497;48.857544;2.350795;"{""name"":""BRED Banque Populaire"",""amenity"":""bank""}" paris;atm;2211669966;48.819927;2.305712;"{""name"":""Cr\u00e9dit Agricole"",""amenity"":""bank""}" paris;atm;2213842095;48.821449;2.302563;"{""name"":""BNP Paribas"",""amenity"":""bank""}" paris;atm;2213842102;48.820686;2.305208;"{""name"":""CIC"",""amenity"":""bank""}" paris;atm;2216215925;48.828804;2.369860;"{""name"":""Credit agricole"",""amenity"":""bank""}" paris;atm;2242420911;48.817799;2.398110;"{""name"":""IVRY SUR SEINE PORT"",""wheelchair"":""yes"",""amenity"":""post_office""}" paris;atm;2245306425;48.845589;2.411032;"{""amenity"":""bank""}" \ No newline at end of file diff --git a/assets/csv/odbl/paris_gtfs.sql.zip b/assets/csv/odbl/paris_gtfs.sql.zip new file mode 100644 index 0000000..9c4586c Binary files /dev/null and b/assets/csv/odbl/paris_gtfs.sql.zip differ diff --git a/assets/csv/odbl/paris_radars.csv b/assets/csv/odbl/paris_radars.csv new file mode 100644 index 0000000..49e4f85 --- /dev/null +++ b/assets/csv/odbl/paris_radars.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags paris;radar;110077;48.810062;2.338525;"{""zipcode"":""94110"",""maxspeed"":""90"",""ref"":""A6a""}" paris;radar;151739;48.821098;2.358970;"{""zipcode"":""75000"",""street"":""Avenue d\u0027Italie"",""maxspeed"":""50"",""milestone"":""133.135"",""name"":""Paris Avenue d\u0027Italie""}" paris;radar;151744;48.879147;2.347469;"{""name"":""France, Paris, Paris 9e"",""zipcode"":""75009"",""street"":""Rue de Maubeuge"",""maxspeed"":""50""}" paris;radar;151762;48.864586;2.305098;"{""name"":""France, Paris, Paris 1er"",""zipcode"":""75000"",""street"":""Cours Albert 1er"",""maxspeed"":""50""}" paris;radar;151766;48.836792;2.378075;"{""zipcode"":""75000"",""street"":""Quai de Bercy"",""maxspeed"":""50""}" paris;radar;151770;48.832367;2.280691;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Int\u00e9rieur"",""maxspeed"":""80"",""milestone"":""8.9""}" paris;radar;151772;48.860863;2.413916;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur"",""maxspeed"":""80"",""milestone"":""30.3""}" paris;radar;151779;48.885792;2.288091;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Int\u00e9rieur"",""maxspeed"":""80"",""milestone"":""17.3""}" paris;radar;151784;48.896435;2.309722;"{""name"":""Radar fixe : Paris, Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur, km 19.3"",""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur"",""maxspeed"":""80"",""milestone"":""19.3""}" paris;radar;151794;48.889957;2.396155;"{""name"":""France,Paris,Paris-Pantin"",""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur"",""maxspeed"":""80"",""milestone"":""26.6""}" paris;radar;151796;48.823528;2.310022;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur"",""maxspeed"":""80"",""milestone"":""6.4""}" paris;radar;151808;48.854305;2.254363;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Ext\u00e9rieur"",""maxspeed"":""80"",""milestone"":""12.950""}" paris;radar;152678;48.890110;2.256416;"{""name"":""France, Hauts-de-Seine, Courbevoie"",""zipcode"":""92400"",""street"":""Quai du Pr\u00e9sident Paul Doumer"",""maxspeed"":""70"",""ref"":""D7"",""milestone"":""1.660""}" paris;radar;153912;48.906498;2.290578;"{""name"":""Radar fixe : Ani\u00e8res-sur-Seine, Quai du Docteur Dervaux, km 1.0"",""zipcode"":""92600"",""street"":""Quai du Docteur Dervaux"",""maxspeed"":""70"",""ref"":""D7"",""milestone"":""1.0""}" paris;radar;153945;48.887577;2.251517;"{""zipcode"":""92400"",""street"":""Tunnel de La D\u00e9fense"",""maxspeed"":""70""}" paris;radar;153966;48.883415;2.264654;"{""zipcode"":""92200"",""street"":""Avenue Charles de Gaulle"",""maxspeed"":""70"",""ref"":""N13"",""milestone"":""7.6""}" paris;radar;311554;48.882587;2.267542;"{""zipcode"":""92200"",""street"":""Avenue Charles de Gaulle"",""maxspeed"":""70"",""ref"":""N13""}" paris;radar;537865;48.811131;2.337627;"{""zipcode"":""94110"",""maxspeed"":""70"",""ref"":""A6a"",""milestone"":""PK0+622""}" paris;radar;1434657;48.821983;2.379609;"{""zipcode"":""75000"",""street"":""Boulevard P\u00e9riph\u00e9rique Int\u00e9rieur"",""maxspeed"":""80"",""name"":""Boulevard P\u00e9riph\u00e9rique Int\u00e9rieur""}" paris;radar;1434727;48.853722;2.356439;"{""zipcode"":""75000"",""street"":""Quai de l\u0027H\u00f4tel de Ville"",""maxspeed"":""50""}" paris;radar;1434737;48.865856;2.354000;"{""zipcode"":""75002"",""street"":""Rue R\u00e9aumur"",""maxspeed"":""50""}" paris;radar;2242723;48.904594;2.393044;"{""zipcode"":""93300"",""street"":""Avenue Jean Jaur\u00e8s"",""maxspeed"":""50"",""ref"":""N2""}" \ No newline at end of file diff --git a/assets/csv/odbl/paris_wifi.csv b/assets/csv/odbl/paris_wifi.csv new file mode 100644 index 0000000..db6dc15 --- /dev/null +++ b/assets/csv/odbl/paris_wifi.csv @@ -0,0 +1 @@ +town;type;key;lat;lon;tags paris;wifi;c20398c0a2a45557efda4ec1b8eeaa56;48.886078;2.398179;"{""name"":""Square De La Marseillaise"",""note"":""1 Bis, Rue De La Marseillaise 75019 PARIS""}" paris;wifi;4e2f38f69ec0e5dd527d7ac04eb390cd;48.866093;2.315647;"{""name"":""Musee Du Petit Palais"",""note"":""1, Avenue Dutuit 75008 PARIS""}" paris;wifi;35994d0b654b7d5671d515aca6e1eb69;48.820637;2.401470;"{""name"":""Parc de Bercy"",""note"":""1, Cour Chamonard 75012 PARIS""}" paris;wifi;7869adc70cc6fdf7c5223969bca7176f;48.880138;2.309137;"{""name"":""Parc Monceau"",""note"":""1, Place De La Republique Dominicaine 75008 PARIS""}" paris;wifi;1a28522d2a63495563d2b1b0bed12195;48.832218;2.355559;"{""name"":""Mairie du 13E Arrondissement"",""note"":""1, Place D\u0027Italie 75013 PARIS""}" paris;wifi;7e309ab7c89384dea7cbd99071431559;48.869972;2.420121;"{""name"":""Jardin Du Trocadero"",""note"":""1, Place Du Onze Novembre 1918 75016 PARIS""}" paris;wifi;918d325c8b36d50cd9f3a31e142733ea;48.892429;2.344864;"{""name"":""Mairie du 18E Arrondissement"",""note"":""1, Place Jules Joffrin 75018 PARIS""}" paris;wifi;d24f4d57739b484f5d3789cfbffb4c53;48.842564;2.388757;"{""name"":""Jardin De Reuilly"",""note"":""1, Rue Albinoni 75012 PARIS""}" paris;wifi;e9eb19ac95bb117d5f39ee1e1ba6c9a6;48.876965;2.381169;"{""name"":""Parc des Buttes Chaumont (Bolivar)"",""note"":""1, Rue Botzaris 75019 PARIS""}" paris;wifi;7778580a51029390df864cf7aef89e75;48.853443;2.359329;"{""name"":""Biblioth\u00e8que Forney"",""note"":""1, Rue Du Figuier 75004 PARIS""}" paris;wifi;1890ef100d139efbdf550b2f05443663;48.873413;2.390992;"{""name"":""Maison des Associations Du 20eme"",""note"":""1, Rue Frederick Lemaitre 75020 PARIS""}" paris;wifi;438f37eac766e57c6bec1bb91838129b;48.852398;2.360616;"{""name"":""Esplanade Des Invalides"",""note"":""1, Rue Paul 75007 PARIS""}" paris;wifi;a2fb108f5d8241ea94f9800a4e6344bc;48.842297;2.295690;"{""name"":""Square Saint Lambert"",""note"":""1, Rue Theophraste Renaudot 75015 PARIS""}" paris;wifi;b90317ffa9eaea6d1646b5e110c92a8e;48.855007;2.359258;"{""name"":""Atelier de Restauration Photographique"",""note"":""10, Rue De Fourcy 75004 PARIS""}" paris;wifi;177d880beb90ca48ad76ddff45c0db49;48.863384;2.371819;"{""name"":""Jardin Bataclan"",""note"":""102, Boulevard Richard Lenoir 75011 PARIS""}" paris;wifi;eec9364ab462d5921360bfd43215390b;48.833965;2.362836;"{""name"":""Square Gustave Mesureur"",""note"":""105, Rue Jeanne D\u0027Arc 75013 PARIS""}" paris;wifi;e3e7b6445a7ba69abb4267ad8980866c;48.875610;2.356187;"{""name"":""Square Alban Satragne"",""note"":""107, Rue Du Faubourg Saint Denis 75010 PARIS""}" paris;wifi;17910676b6ee701461fea3eb5cff75ab;48.864731;2.297114;"{""name"":""Musee D\u0027Art Moderne"",""note"":""11, Avenue Du President Wilson 75016 PARIS""}" paris;wifi;ee2acb8776aefc0589602785412629dc;48.869286;2.360338;"{""name"":""Biblioth\u00e8que Lancry"",""note"":""11, Rue De Lancry 75010 PARIS""}" paris;wifi;7907528eef0352cfca44b580541c38ad;48.873360;2.340530;"{""name"":""Biblioth\u00e8que Drouot"",""note"":""11, Rue Drouot 75009 PARIS""}" paris;wifi;44213ade7fd0ef84724ed27dae05ff1b;48.888168;2.302397;"{""name"":""Biblioth\u00e8que Edmond Rostand"",""note"":""11, Rue Nicolas Chuquet 75017 PARIS""}" paris;wifi;54583a09dbc7b73c9aea52c166ad83a1;48.859928;2.403556;"{""name"":""M\u00e9diath\u00e8que Marguerite Duras"",""note"":""115 Rue de Bagnolet 75020 PARIS""}" paris;wifi;ba5d02be5c606bfe7ab55e38e2d998ec;48.874832;2.363691;"{""name"":""Centre d\u0027animation espace Jemmapes"",""note"":""116, Quai de Jemmapes 75010 PARIS""}" paris;wifi;ce8a588dbcfa50275932e11a778ae630;48.856792;2.320063;"{""name"":""Mairie du 7E Arrondissement \/ Biblioth\u00e8que Saint Simon"",""note"":""116, Rue De Grenelle 75007 PARIS""}" paris;wifi;8ed8fd1fb07fe650201b7491a675d29f;48.872002;2.399726;"{""name"":""Biblioth\u00e8que Saint Fargeau"",""note"":""12, Rue Du Telegraphe 75020 PARIS""}" paris;wifi;e0879ed0069c51429b3b88824bf72653;48.869949;2.394285;"{""name"":""Carre Baudoin"",""note"":""121, Rue De Menilmontant 75020 PARIS""}" paris;wifi;3ac8a39d09ea59d8bdcede28322ec09b;48.823723;2.358021;"{""name"":""Maison de L\u0027Emploi Du 13eme"",""note"":""126, Avenue D\u0027Italie 75013 PARIS""}" paris;wifi;8418b8375954030d58d05160f5d88329;48.860619;2.404614;"{""name"":""Square Antoine Blondin"",""note"":""128, Rue De Bagnolet 75020 PARIS""}" paris;wifi;f4e4a9e751adcb57f34b5cddd132a177;48.822636;2.361061;"{""name"":""Maison des Associations Du 13eme"",""note"":""13, Rue Caillaux 75013 PARIS""}" paris;wifi;9f0b2b45c2e04531f8d42daecf576afd;48.842014;2.389451;"{""name"":""All\u00e9e Vivaldi"",""note"":""13, Rue Henard 75012 PARIS""}" paris;wifi;eac7c286596938ce44b60606ea77b31d;48.829742;2.332416;"{""name"":""Espace Economie Emploi Du 14eme"",""note"":""13, Rue Remy Dumoncel 75014 PARIS""}" paris;wifi;d245ca71bb1bc6abf2fd7d739b19be5c;48.841133;2.388932;"{""name"":""Mairie du 12E Arrondissement"",""note"":""130, Avenue Daumesnil 75012 PARIS""}" paris;wifi;12826590fc5478fddaa1fb6a73031d47;48.858452;2.362605;"{""name"":""Square Leopold Achille"",""note"":""13-13Bis, Rue Payenne 75003 PARIS""}" paris;wifi;d7145e057df1a66def356f2fe662339e;48.826694;2.341872;"{""name"":""Biblioth\u00e8que Glaciere"",""note"":""132, Rue De La Glaciere 75013 PARIS""}" paris;wifi;2069a8bba1142f52156f155fc646e4e8;48.884201;2.394620;"{""name"":""Centre d\u0027Animation Angele Mercier"",""note"":""133, Boulevard Serurier 75019 PARIS""}" paris;wifi;91b632270e99dfb656790a54c7296844;48.858578;2.362692;"{""name"":""Square Georges Cain"",""note"":""14, Rue Payenne 75003 PARIS""}" paris;wifi;ca692e00fb7d541cbf861d2882e3f9a6;48.892651;2.379187;"{""name"":""Biblioth\u00e8que Benjamin Rabier"",""note"":""141, Avenue De Flandre 75019 PARIS""}" paris;wifi;94e659aa8654a4124bfab78fe90e32bd;48.875343;2.405810;"{""name"":""Piscine Georges Vallerey"",""note"":""148 Avenue Gambetta 75020 PARIS""}" paris;wifi;536a23fae39a71524c84dd6fcd8de93e;48.862083;2.406081;"{""name"":""Jardin Hospice Debrousse"",""note"":""148, Rue De Bagnolet 75020 PARIS""}" paris;wifi;fa2f936e5288ccb77e7aa5b7ffc5bf80;48.842617;2.361536;"{""name"":""Biblioth\u00e8que Buffon"",""note"":""15 Bis, Rue Buffon 75005 PARIS""}" paris;wifi;8686a0fd7e12eda21749344420509fa3;48.890263;2.347417;"{""name"":""Maison des Associations Du 18eme"",""note"":""15, Passage Ramey 75018 PARIS""}" paris;wifi;610a94fa31c1531cf5fdc6ac2eb67c6b;48.890839;2.375299;"{""name"":""Centre d\u0027Animation Jean Mathis"",""note"":""15, Rue Mathis 75019 PARIS""}" paris;wifi;2631ac7f21c07c155cf2a98700acce44;48.844097;2.387237;"{""name"":""Square Saint Eloi"",""note"":""15, Rue Sainte Claire Deville 75012 PARIS""}" paris;wifi;15d593d7bc1e9bef91fb797f746183d4;48.841595;2.299181;"{""name"":""Biblioth\u00e8que Vaugirard"",""note"":""154, Rue Lecourbe 75015 PARIS""}" paris;wifi;2b8eefe7237437b46606736aa1fe1831;48.855476;2.389520;"{""name"":""Square Charonne"",""note"":""159, Rue De Charonne 75011 PARIS""}" paris;wifi;b85318fbc5624d96496ae0fd9c4813c4;48.856697;2.283765;"{""name"":""Maison des Associations Du 16eme"",""note"":""16, Avenue Rene Boylesve 75016 PARIS""}" paris;wifi;4bf77092ece9c0b14ec2f03bc07c03b6;48.842926;2.317993;"{""name"":""Musee Antoine Bourdelle"",""note"":""16, Rue Antoine Bourdelle 75015 PARIS""}" paris;wifi;3086435ff0290a12c302a84c3c094bab;48.884277;2.321983;"{""name"":""Mairie du 17E Arrondissement"",""note"":""16, Rue Des Batignolles 75017 PARIS""}" paris;wifi;964a0cc57fd2c3940b58d87dfb831e2d;48.827736;2.358704;"{""name"":""Parc de Choisy"",""note"":""160, Avenue De Choisy 75013 PARIS""}" paris;wifi;1305f3cf41fe1554b7bc7294184adae1;48.827511;2.323429;"{""name"":""Jardin Porte De Chatillon"",""note"":""16-26, Rue De Chatillon 75014 PARIS""}" paris;wifi;b2bdc2ca0c1a7f03ab009719a55609ed;48.857998;2.308918;"{""name"":""Biblioth\u00e8que Amelie"",""note"":""164, Rue De Grenelle 75007 PARIS""}" paris;wifi;d6fadae153de3f44d9f346ea4b2481ce;48.893764;2.335472;"{""name"":""Maison de L\u0027Emploi Du 18eme"",""note"":""164, Rue Ordener 75018 PARIS""}" paris;wifi;537dbb3b347112d2e7e27580fccc0ebb;48.853401;2.335005;"{""name"":""Square Felix Desruelles"",""note"":""168 Bis, Boulevard Saint Germain 75006 PARIS""}" paris;wifi;258632831d3cb4534cfa8f126be7baeb;48.851795;2.386391;"{""name"":""Jardin Cite Prost"",""note"":""17 Rue Titon 75011 PARIS""}" paris;wifi;603894502e1c78130daa5e5bda8e9a6a;48.877769;2.303228;"{""name"":""Biblioth\u00e8que Courcelles"",""note"":""17 Ter, Avenue Beaucour 75008 PARIS""}" paris;wifi;d7173ba23916b1b5a352d1ee072fcf78;48.819786;2.356773;"{""name"":""Centre d\u0027Accueil Kellermann"",""note"":""17, Boulevard Kellermann 75013 PARIS""}" paris;wifi;ef4d3d45faafa488b18d1eddab4e0136;48.850044;2.363417;"{""name"":""Biblioth\u00e8que Personnel"",""note"":""17, Boulevard Morland 75004 PARIS""}" paris;wifi;7d8596299b98784c2895b942893a8028;48.890022;2.298637;"{""name"":""Square Andre Ulmann"",""note"":""17, Boulvard De Reims 75017 PARIS""}" paris;wifi;b4ed8bd76dd95faa782ee2ac124713f4;48.877365;2.368281;"{""name"":""Square Amadou Hampate Ba"",""note"":""17, Rue Boy Zelenski 75010 PARIS""}" paris;wifi;413bcda7a4de3648ab3bcf161c836e6d;48.866154;2.392321;"{""name"":""Biblioth\u00e8que Sorbier"",""note"":""17, Rue Sorbier 75020 PARIS""}" paris;wifi;4d19ef663a2a52bffcb27ff94fb2708a;48.877838;2.405779;"{""name"":""Archives de Paris"",""note"":""18, Boulevard Serurier 75019 PARIS""}" paris;wifi;5b5529385eee3832651b0d451e0c0ddd;48.884445;2.321686;"{""name"":""Biblioth\u00e8que Batignolles"",""note"":""18, Rue Des Batignolles 75017 PARIS""}" paris;wifi;5a8e57c5f9ac586942df9309fc170f2c;48.851551;2.383768;"{""name"":""Biblioth\u00e8que Faidherbe"",""note"":""18, Rue Faidherbe 75011 PARIS""}" paris;wifi;2f4bdcbfe9298ee14ed45d96ff27e8ea;48.879292;2.397643;"{""name"":""Biblioth\u00e8que Place Des Fetes"",""note"":""18, Rue Janssen 75019 PARIS""}" paris;wifi;363319cb60f7857667f35e7782fcd661;48.840366;2.392355;"{""name"":""Maison des Associations Du 12eme"",""note"":""181, Avenue Daumesnil 75012 PARIS""}" paris;wifi;4706eff173a5e09eae6311cf14c44d62;48.869942;2.375439;"{""name"":""Square Orillon Jules Vernes"",""note"":""19 Bis, Rue De L\u0027Orillon 75011 PARIS""}" paris;wifi;16742bd827b79b9a065c2472bdee4b4f;48.842407;2.389644;"{""name"":""Centre d\u0027Animation Reuilly"",""note"":""19, Rue Henard 75012 PARIS""}" paris;wifi;ee1c5aef0b7fa1ed51f46394e8b38ab4;48.895054;2.363879;"{""name"":""Biblioth\u00e8que Maurice Genevoix"",""note"":""19, Rue Tristan Tzara 75018 PARIS""}" paris;wifi;ed4bc5d73cce91d0f70162817bd25611;48.852024;2.389867;"{""name"":""Square Des Jardiniers"",""note"":""2 Passage Dumas 75011 PARIS""}" paris;wifi;76f04d40ac33d37fc10d1a9d3d814b8d;48.866482;2.340316;"{""name"":""Biblioth\u00e8que Charlote Delbo"",""note"":""2, Passage Des Petits Peres 75002 PARIS""}" paris;wifi;244217ea533feffd9a10986214fbc159;48.856064;2.355347;"{""name"":""Mairie du 4E Arrondissement"",""note"":""2, Place Baudoyer 75004 PARIS""}" paris;wifi;495f1d7a114c224d6126311b270a8670;48.835026;2.332077;"{""name"":""Square Claude Nicolas Ledoux"",""note"":""2, Place Denfert Rochereau 75014 PARIS""}" paris;wifi;91298be789fad601c3ec80797aab1964;48.832909;2.326452;"{""name"":""Mairie du 14E Arrondissement"",""note"":""2, Place Ferdinand Brunot 75014 PARIS""}" paris;wifi;b5612051973a1f76acb838695cf9ef22;48.832722;2.300696;"{""name"":""Parc Georges Brassens"",""note"":""2, Place Jacques Marette 75015 PARIS""}" paris;wifi;9de8135a863df4b4bc4a29597bfd4741;48.861809;2.284840;"{""name"":""Biblioth\u00e8que Trocadero"",""note"":""2, Rue Du Commandant Schloesing 75016 PARIS""}" paris;wifi;32b741271f580a5d6b9ff79aad2649db;48.884926;2.367265;"{""name"":""Biblioth\u00e8que Herge"",""note"":""2, Rue Du Departement 75019 PARIS""}" paris;wifi;2a26c3d5b29810ac828eaa1b08aec138;48.863861;2.361258;"{""name"":""Mairie du 3E Arrondissement \/ Maison des Associations"",""note"":""2, Rue Eugene Spuller 75003 PARIS""}" paris;wifi;35aae579c7863cdf39992ee0ff2cacc9;48.884411;2.354066;"{""name"":""Biblioth\u00e8que Goutte D\u0027Or"",""note"":""2, Rue Fleury 75018 PARIS""}" paris;wifi;f024863d87ad72f5d4ece48abfc536dc;48.824581;2.339926;"{""name"":""Parc Montsouris"",""note"":""2, Rue Gazan 75014 PARIS""}" paris;wifi;fa0793afe97dd20d39b99964ffe6519c;48.882500;2.282668;"{""name"":""Square Du Cardinal Petit De Julleville"",""note"":""2, Rue Gustave Charpentier 75017 PARIS""}" paris;wifi;4706726a7fa8c2c8283dcffd5bf4a131;48.833416;2.277091;"{""name"":""Centre Sportif Suzanne Lenglen"",""note"":""2, Rue Louis Armand 75015 PARIS""}" paris;wifi;538855af37c47510a7475dbca1448384;48.885288;2.376248;"{""name"":""Square Marcel Mouloudji"",""note"":""2, Rue Pierre Reverdy 75019 PARIS""}" paris;wifi;bd7712c497091aa106813c5db0527b1b;48.848320;2.350299;"{""name"":""Square Paul Langevin"",""note"":""20 Rue Monge 75005 PARIS""}" paris;wifi;a190d63be01c405a544ef2a27a366338;48.836540;2.253668;"{""name"":""Jardin Porte De Saint Cloud"",""note"":""20, Avenue Ferdinand Buisson 75016 PARIS""}" paris;wifi;890df839334ea59e598d919e38f2c51b;48.860065;2.378809;"{""name"":""Biblioth\u00e8que Parmentier"",""note"":""20, Avenue Parmentier 75011 PARIS""}" paris;wifi;a2fa13ba3e710d622e933c2012a5b832;48.848316;2.367787;"{""name"":""Jardin Arsenal"",""note"":""20, Boulevard De La Bastille 75012 PARIS""}" paris;wifi;e79ae40f49e8892f1e45de763c21eeae;48.823036;2.348935;"{""name"":""Square Fontaine A Mulard"",""note"":""20, Rue De La Fontaine A Mulard 75013 PARIS""}" paris;wifi;d2e2283e6eb1fbc95848c61e60494794;48.842056;2.263449;"{""name"":""Biblioth\u00e8que Musset"",""note"":""20, Rue De Musset 75016 PARIS""}" paris;wifi;a47fe01d4a9b094aef091edc05d428be;48.852676;2.400387;"{""name"":""Jardin Casque D\u0027Or"",""note"":""20, Rue Des Haies 75020 PARIS""}" paris;wifi;06974d4b858d38a62549d9155b713e61;48.880478;2.376417;"{""name"":""Maison des Associations Du 19eme"",""note"":""20, Rue Edouard Pailleron 75019 PARIS""}" paris;wifi;1915567b45336d5dc86f7e19f8c444e6;48.870216;2.365831;"{""name"":""Maison des Associations Du 10eme"",""note"":""206, Quai De Valmy 75010 PARIS""}" paris;wifi;563b0c2dc36c0a4b13f12c83fd435b51;48.875214;2.304799;"{""name"":""Centre d\u0027Animation Espace Beaujon"",""note"":""208, Rue Du Faubourg Saint Honore 75008 PARIS""}" paris;wifi;4d3a18c5b05a2417cd519fc2f9987adf;43.638695;5.099527;"{""name"":""Maison des entreprises et de l\u0027emploi du 10eme"",""note"":""209 rue Lafayette 75010 PARIS""}" paris;wifi;5596461029eeda456bd7d3d3f9ad0b6a;48.823502;2.316802;"{""name"":""Institut du Judo"",""note"":""21 Avenue de la Porte de Ch\u00e2tillon 75014 PARIS""}" paris;wifi;666d81030557770f21f2360bcdf20cb8;48.846237;2.344673;"{""name"":""Mairie du 5E Arrondissement"",""note"":""21, Place Du Pantheon 75005 PARIS""}" paris;wifi;98d67b4b090d4d4b4a2113017495fe13;48.842537;2.389709;"{""name"":""Espace Reuilly"",""note"":""21, Rue Henard 75012 PARIS""}" paris;wifi;e14d8ce1ddca4f8da5fc5cc499cc7173;48.851311;2.357950;"{""name"":""Biblioth\u00e8que Isle Saint Louis"",""note"":""21, Rue Saint Louis En L\u0027Isle 75004 PARIS""}" paris;wifi;9b9ffb08ddbedc20059ba864ef35b1d3;48.824100;2.376815;"{""name"":""Square Gandon Et Massena"",""note"":""211, Boulevard Massena 75013 PARIS""}" paris;wifi;70fa553fd6d2cac2f853a2360917e889;48.881016;2.290291;"{""name"":""Jardin De La Promenade Pereire"",""note"":""211, Boulevard Pereire 75017 PARIS""}" paris;wifi;00fb8118344d3866dee80f40556ee150;48.830952;2.356852;"{""name"":""Biblioth\u00e8que Italie"",""note"":""211, Boulevard Vincent Auriol 75013 PARIS""}" paris;wifi;87c9f3bacb84edc734fa0567516bae4c;48.835514;2.325834;"{""name"":""Maison des Associations Du 14eme"",""note"":""22, Rue Deparcieux 75014 PARIS""}" paris;wifi;869610a11b4cb72bc8e37129b1ab815d;48.830849;2.370095;"{""name"":""Square Heloise Et Abelard"",""note"":""22, Rue Pierre Gourdault 75013 PARIS""}" paris;wifi;a275ca9d12cc79bd8f10571c3e79ab55;48.846489;2.369914;"{""name"":""DSTI"",""note"":""227, Rue de Bercy 75012 PARIS""}" paris;wifi;e5d1a5bf704d1e76fd281cd303159c63;48.840466;2.320181;"{""name"":""Musee Memorial Marechal Leclerc"",""note"":""23, Allee De La Deuxieme Division Blindee 75015 PARIS""}" paris;wifi;e2890b76a8a4ba82e0aee22eacc8e2d4;48.857071;2.362948;"{""name"":""Musee Carnavalet"",""note"":""23, Rue De Sevigne 75003 PARIS""}" paris;wifi;fa9bc5cd8934c3a27fc131c3156d3519;48.845592;2.387220;"{""name"":""Biblioth\u00e8que Saint Eloi"",""note"":""23, Rue Du Colonel Rozanoff 75012 PARIS""}" paris;wifi;98d7e6d0f2fd06c9fff39c625d4947d7;48.865189;2.351069;"{""name"":""Maison des Associations Du 02eme"",""note"":""23, Rue Greneta 75002 PARIS""}" paris;wifi;77e47563e3fe5660ae3f9e93dfd14218;48.871941;2.298158;"{""name"":""Maison des Associations Du 08eme"",""note"":""23, Rue Vernet 75008 PARIS""}" paris;wifi;af5afa1bd4e18946f86fe32cda3f8209;48.826164;2.343706;"{""name"":""Jardin Michelet"",""note"":""237, Rue De Tolbiac 75013 PARIS""}" paris;wifi;92138b8bac6618f424b21b145e478b44;48.828136;2.344666;"{""name"":""Centre d\u0027Animation Daviel"",""note"":""24, Rue Daviel 75013 PARIS""}" paris;wifi;190bbab85e632e30f6bbbbb398adafed;48.851936;2.380773;"{""name"":""Jardin Louis Majorelle"",""note"":""24, Rue De La Forge Royale 75011 PARIS""}" paris;wifi;06e1935b45d6a1165b56f571ae32328e;48.878075;2.344892;"{""name"":""Biblioth\u00e8que Valeyre"",""note"":""24, Rue De Rochechouart 75009 PARIS""}" paris;wifi;adc13563964187c684b9ae867a978804;48.848724;2.348109;"{""name"":""E.C.A Rive Gauche"",""note"":""24, Rue Des Ecoles 75005 PARIS""}" paris;wifi;20767440b81f77527ff05c940b758136;48.857124;2.361670;"{""name"":""Biblioth\u00e8que Historique De La Ville De Paris"",""note"":""24, Rue Pavee 75004 PARIS""}" paris;wifi;53d9abdbe2fbd112fa358e9fc42de4f8;48.856956;2.370560;"{""name"":""Square Breguet Sabin"",""note"":""25, Boulevard Richard Lenoir 75011 PARIS""}" paris;wifi;bf3674aaf60a3fb6f96414bdb14fe9b4;48.892818;2.339308;"{""name"":""Square Leon Serpollet"",""note"":""25, Rue Des Cloys 75018 PARIS""}" paris;wifi;25340f22595eedb545b3029a3437b800;48.894943;2.323754;"{""name"":""Maison des Associations Du 17eme"",""note"":""25, Rue Lantiez 75017 PARIS""}" paris;wifi;fa06afa0877699af62a63c9a092b9e6c;48.881020;2.332407;"{""name"":""Biblioth\u00e8que Chaptal"",""note"":""26, Rue Chaptal 75009 PARIS""}" paris;wifi;8a5aae1138e158ce075f8368dcfc01e1;48.831726;2.296164;"{""name"":""Maison des Associations Du 15eme"",""note"":""26, Rue De La Saida 75015 PARIS""}" paris;wifi;fac83de65982f4cfe7d8b0a8374a278f;48.887112;2.367641;"{""name"":""Maison Du Developpement Economique Du 19eme"",""note"":""27, Rue Du Maroc 75019 PARIS""}" paris;wifi;b0d0bc6330a81400eee455c343679575;48.871784;2.385238;"{""name"":""Parc de Belleville"",""note"":""27, Rue Piat 75020 PARIS""}" paris;wifi;5e88bd2a574dcdd8dd72bece60911d02;48.851780;2.295709;"{""name"":""Jardin Nicole De Hauteclocque"",""note"":""28, Rue Edgar Faure 75015 PARIS""}" paris;wifi;8443c9dfafdd43a56e46f3bcaa18237b;48.891628;2.344563;"{""name"":""Biblioth\u00e8que Clignancourt"",""note"":""29, Rue Hermel 75018 PARIS""}" paris;wifi;b21cb2b0e25e322924a80ba1c8e58da9;48.853062;2.400943;"{""name"":""Biblioth\u00e8que Reunion"",""note"":""29-35, Rue Des Haies 75020 PARIS""}" paris;wifi;26e387aff9b24934aef8a908497674fc;48.827953;2.384560;"{""name"":""Maison des initiatives"",""note"":""3 Rue Jean Antoine de Ba\u00eff 75013 PARIS""}" paris;wifi;1e85f3a579372fdf63478fdd371aeba3;48.824368;2.314893;"{""name"":""Jardin Jules Noel"",""note"":""3, Avenue Maurice D\u0027Ocagne 75014 PARIS""}" paris;wifi;ddd2f6dd0a6d6034799ee1750c62746d;48.878063;2.381464;"{""name"":""Parc des Buttes Chaumont (Fessard)"",""note"":""3, Rue Botzaris 75019 PARIS""}" paris;wifi;e5a9366b6f2f3d937eb4a19ec8d09b98;48.821075;2.352560;"{""name"":""Parc Kellermann"",""note"":""3, Rue De La Poterne Des Peupliers 75013 PARIS""}" paris;wifi;61e0e19bbfea3bfe881e1e697030514e;48.877525;2.310144;"{""name"":""Mairie du 8E Arrondissement \/ Biblioth\u00e8que Europe"",""note"":""3, Rue De Lisbonne 75008 PARIS""}" paris;wifi;ef663f51c38bf3fc4462ecd85d5133e6;48.831108;2.312044;"{""name"":""Biblioth\u00e8que Plaisance"",""note"":""3, Rue De Ridder 75014 PARIS""}" paris;wifi;27716e3dbe8f3c6a05292bce526009f9;48.869083;2.362204;"{""name"":""Bourse Du Travail"",""note"":""3, Rue Du Chateau D\u0027Eau 75010 PARIS""}" paris;wifi;fbc46b406cbb04b50586f9eba2324354;48.856182;2.365770;"{""name"":""Square Louis XIII"",""note"":""30 Place Des Vosges 75004 PARIS""}" paris;wifi;c9ca1dd5bd37f33262ff09cbc87ed639;48.852634;2.359693;"{""name"":""Square De L\u0027Ave Maria"",""note"":""30, Quai Des Celestins 75004 PARIS""}" paris;wifi;3adcb92f08dee40cf0bfe0c2e5cc0970;48.852463;2.371784;"{""name"":""Activites artisanales et creation"",""note"":""30, Rue du Faubourg Saint Antoine 75012 PARIS""}" paris;wifi;df78b2daa12a3e83093180559e871b53;48.859200;2.411458;"{""name"":""Centre Sportif Louis Lumiere"",""note"":""30, Rue Louis Lumiere 75020 PARIS""}" paris;wifi;c6789cd39d71af031f31f38eb583f221;48.900257;2.335603;"{""name"":""Biblioth\u00e8que Porte Montmartre"",""note"":""30-32 Avenue Porte de Montmartre 75018 PARIS""}" paris;wifi;5982cda251ec52e9234dfd2c2a7a6cca;48.872021;2.395859;"{""name"":""Maison Du Developpement Economique Du 20eme"",""note"":""31, Rue De Pixerecourt 75020 PARIS""}" paris;wifi;88a15cd50cc3df03f6e54fc96b2bdae1;48.857517;2.361137;"{""name"":""Hotel d\u0027Albret"",""note"":""31, Rue Des Francs Bourgeois 75004 PARIS""}" paris;wifi;de02b76bd401f76d2a5f091d97a02d64;48.841267;2.299876;"{""name"":""Mairie du 15E Arrondissement"",""note"":""31, Rue Peclet 75015 PARIS""}" paris;wifi;6eaf590164673a3d8d4f6da3ce36035b;48.839748;2.351130;"{""name"":""Square Saint Medard"",""note"":""32 Rue Censier 75005 PARIS""}" paris;wifi;a7fb253d80138f37fa2ffcd9f0f50958;48.899418;2.329771;"{""name"":""Square Henri Huchard"",""note"":""32, Avenue De La Porte De Saint Ouen 75018 PARIS""}" paris;wifi;959569eb7a57be5b90e6975c84724c68;48.893559;2.324561;"{""name"":""Square De La Villa Sainte-Croix"",""note"":""32, Rue De La Jonquiere 75017 PARIS""}" paris;wifi;127fdfe289bbe3b6238514004f0bef96;48.851681;2.320280;"{""name"":""Jardin Catherine Laboure"",""note"":""33, Rue De Babylone 75007 PARIS""}" paris;wifi;73e94b48c1c703468b423601dd08c37e;48.845730;2.403214;"{""name"":""Jardin Rue Debergue"",""note"":""34 Rue Du Rendez-Vous 75012 PARIS""}" paris;wifi;ea92a0859af483cf2ca26740154f9841;48.842213;2.413105;"{""name"":""Solarium Roger Le Gall"",""note"":""34, Boulevard Carnot 75012 PARIS""}" paris;wifi;5947b0f9ebc457611d5b9104645d1e1b;48.122890;-1.706992;"{""name"":""Biblioth\u00e8que Flandre"",""note"":""35, Rue De Flandre 75019 PARIS""}" paris;wifi;582a0726e3271a86c95e092a6bab1a92;48.881042;2.336939;"{""name"":""Annexe Maison des Associations Du 09eme"",""note"":""35, Rue Victor Masse 75009 PARIS""}" paris;wifi;b6d77d557b66784a1c9c3c2d2c61edff;48.827652;2.376998;"{""name"":""Jardin Cyprian Norwid"",""note"":""36, Rue Du Chevaleret 75013 PARIS""}" paris;wifi;1b21debad3d7988f45ce130f232e4415;48.849918;2.286348;"{""name"":""Biblioth\u00e8que Beaugrenelle"",""note"":""36, Rue Emeriau 75015 PARIS""}" paris;wifi;0ffcf97839b07e1de287a9b7419da005;48.833687;2.325883;"{""name"":""Biblioth\u00e8que Georges Brassens"",""note"":""38, Rue Gassendi 75014 PARIS""}" paris;wifi;c9a89ae4cfdbfee156417fde7bf95a65;48.881298;2.379396;"{""name"":""Solarium Edouard Pailleron"",""note"":""39, Rue Edouard Pailleron 75019 PARIS""}" paris;wifi;b805deeb057d58ac787b914667a859dc;48.845039;2.353970;"{""name"":""Square Des Arenes De Lutece"",""note"":""4 Rue Des Arenes 75005 PARIS""}" paris;wifi;d926383e25f5a15845de5dcc92adf68d;48.844154;2.388386;"{""name"":""Centre d\u0027Animation Montgallet"",""note"":""4, Passage Stinville 75012 PARIS""}" paris;wifi;af9b35cf152871b643671f5aac75ca12;48.882706;2.382506;"{""name"":""Parc des Buttes Chaumont (Carrel)"",""note"":""4, Place Armand Carrel 75019 PARIS""}" paris;wifi;056dc66a567ed182023efbcfb608bff1;48.857086;2.352195;"{""name"":""Parvis de l\u0027H\u00f4tel de Ville"",""note"":""4, Place De L\u0027Hotel De Ville 75004 PARIS""}" paris;wifi;411353c8efbc30d99c9a197d5f130fde;48.860027;2.341015;"{""name"":""Mairie du 1Er Arrondissement \/ Biblioth\u00e8que Louvre"",""note"":""4, Place Du Louvre 75001 PARIS""}" paris;wifi;58867ac9004a03260e6c17c06e703ca0;48.859051;2.384119;"{""name"":""Square La Petite Roquette"",""note"":""4, Rue Servan 75011 PARIS""}" paris;wifi;e4adcd674d4aa5fa07107d6992716953;48.831482;2.319915;"{""name"":""Conseil de la Jeunesse"",""note"":""40, Rue Didot 75014 PARIS""}" paris;wifi;6fdb7c0e5fcb9e917cf394f350bb6d6c;48.836746;2.303477;"{""name"":""Biblioth\u00e8que Yourcenar"",""note"":""41, Rue d\u0027Alleray 75015 PARIS""}" paris;wifi;e101d34a2d00f1174413924626dd5051;48.895988;2.343420;"{""name"":""Square Sainte-Helene"",""note"":""41, Rue Letort 75018 PARIS""}" paris;wifi;aee4f89bf3fff22226f4459728f4eb3c;48.850498;2.436795;"{""name"":""Biblioth\u00e8que Diderot"",""note"":""42, Rue Daumesnil 75012 PARIS""}" paris;wifi;a112d580ca86b2dcb40f03eb17fc234e;48.884918;2.382828;"{""name"":""Biblioth\u00e8que Crim\u00e9e"",""note"":""42, Rue Petit 75019 PARIS""}" paris;wifi;8ea6bf4f10bd953bb809662513c90a42;48.842518;2.305368;"{""name"":""Square Blomet"",""note"":""43 Rue Blomet 75015 PARIS""}" paris;wifi;e06362d30ddc3d6f5a0a7544e22dddf2;48.831074;2.348076;"{""name"":""Square Rene Legall"",""note"":""43, Rue Corvisart 75013 PARIS""}" paris;wifi;848bf943944df791964f8cefcb9d5bc9;48.870544;2.377464;"{""name"":""Antenne Jeune Orillon"",""note"":""43, Rue De L\u0027Orillon 75011 PARIS""}" paris;wifi;f8fb26ecb63452a139d7aef8cadd6213;48.870251;2.384728;"{""name"":""Parc de Belleville"",""note"":""45, Rue Des Couronnes 75020 PARIS""}" paris;wifi;60343795043c86102b3bfe44589b6a47;48.860363;2.411276;"{""name"":""Centre d\u0027Animation Louis Lumiere"",""note"":""46, Rue Louis Lumiere 75020 PARIS""}" paris;wifi;cbc0382a1f7e0e0ceb5028ac48c25bb5;48.855389;2.280659;"{""name"":""Maison de Balzac"",""note"":""47, Rue Raynouard 75016 PARIS""}" paris;wifi;0325c2d72215e05b7776a2da60e7c5e8;48.846455;2.351431;"{""name"":""Biblioth\u00e8que Des Litt\u00e9ratures Polici\u00e8res"",""note"":""48, Rue Du Cardinal Lemoine 75005 PARIS""}" paris;wifi;f6f5a6f3411173353ba09cba0df97fac;48.858330;2.358410;"{""name"":""Espace des Blancs Manteaux"",""note"":""48, Rue Veille Du Temple 75004 PARIS""}" paris;wifi;f381fc2fee69c9693bf9222790846ec1;48.861809;2.341301;"{""name"":""Maison des Associations du 1er"",""note"":""5 bis rue du Louvre 75001 PARIS""}" paris;wifi;c1647a841607ceea8e25bdddec903cdc;48.882584;2.381934;"{""name"":""Mairie du 19E Arrondissement"",""note"":""5, Place Armand Carrel 75019 PARIS""}" paris;wifi;a2b267867d2b912b5cd142ef08ec12c8;48.838726;2.316890;"{""name"":""Jardin Atlantique"",""note"":""5, Place Des Cinq Martyrs Du Lyc\u00e9e Buffon 75015 PARIS""}" paris;wifi;17125ce17b5d56fa216d70a5e0399c0d;48.880402;2.399335;"{""name"":""Parc de La Butte Du Chapeau Rouge"",""note"":""5, Rue Alphonse Aulard 75019 PARIS""}" paris;wifi;6842c87def9fb7ee40ad1266d5bd430c;48.838840;2.277133;"{""name"":""Parc Andre Citroen"",""note"":""5, Rue De La Montagne De La Fage 75015 PARIS""}" paris;wifi;0eadeeb2c8f43285eedaf6858e628a42;48.856831;2.353674;"{""name"":""Biblioth\u00e8que Administrative De La Ville De Paris"",""note"":""5, Rue De Lobau 75004 PARIS""}" paris;wifi;f84b56376d5405ee9e1af6d6c3b13020;48.856297;2.367315;"{""name"":""Maison Initiatives Etudiantes"",""note"":""50, Rue Des Tournelles 75003 PARIS""}" paris;wifi;1b00e51d34eccbb5c8c92a584254ad57;48.881039;2.335920;"{""name"":""Maison des Associations Du 09eme"",""note"":""54, Rue Pigalle 75009 PARIS""}" paris;wifi;5e2d505041fc396f25a8fba05959c982;48.887554;2.325533;"{""name"":""Square Ernest Chausson"",""note"":""55, Avenue De Clichy 75017 PARIS""}" paris;wifi;35ec6c9b83aaca0e6e580a97190b1347;48.852459;2.410727;"{""name"":""Jardin Gare De Charonne"",""note"":""59, Boulevard Davout 75020 PARIS""}" paris;wifi;e576ec40792cacfc92a3ff6cbfb7c52f;48.841599;2.411564;"{""name"":""Centre d\u0027Hebergement Maurice Ravel"",""note"":""6, Avenue Maurice Ravel 75012 PARIS""}" paris;wifi;1fd4ffcacfcb8d478a7628410d434d7d;48.854950;2.366021;"{""name"":""Maison de Victor Hugo"",""note"":""6, Place Des Vosges 75004 PARIS""}" paris;wifi;c557610a5d0f77aca4f449e47a8ed4ca;48.865013;2.398764;"{""name"":""Mairie du 20E Arrondissement"",""note"":""6, Place Gambetta 75020 PARIS""}" paris;wifi;aa8a0359332d5ecee64a3d80efe7d5f0;48.852123;2.345219;"{""name"":""Biblioth\u00e8que Heure Joyeuse"",""note"":""6, Rue Des Pretres Saint Severin 75005 PARIS""}" paris;wifi;e0f00ca2051d66686d958c9ac637d1fe;48.872532;2.340836;"{""name"":""Mairie du 9E Arrondissement"",""note"":""6, Rue Drouot 75009 PARIS""}" paris;wifi;20acfe39cdc26677d7dbde91226d41a9;48.876175;2.388278;"{""name"":""Biblioth\u00e8que Fessart"",""note"":""6, Rue Fessart 75019 PARIS""}" paris;wifi;b40fe25dc70b42f7435ca5ebf38eb9ee;48.889820;2.319388;"{""name"":""Biblioth\u00e8que Brochant"",""note"":""6, Rue Fourneyron 75017 PARIS""}" paris;wifi;77fbca9514fed128cd4cef6b05971586;48.853516;2.339469;"{""name"":""Maison des Associations Du 06eme"",""note"":""60, Rue Saint Andre Des Arts 75006 PARIS""}" paris;wifi;6d5d63969f1c8553500e5fbfa6a0bd24;48.870285;2.385060;"{""name"":""Biblioth\u00e8que Couronnes"",""note"":""66, Rue Des Couronnes 75020 PARIS""}" paris;wifi;8a216fcfb1bf1c3aeb799733a1a2b32a;48.860573;2.372124;"{""name"":""Promenade Richard Lenoir"",""note"":""67, Boulevard Richard Lenoir 75011 PARIS""}" paris;wifi;0c321bd4757cf2cca7fc6ceeffd848ce;48.820801;2.356329;"{""name"":""Jardin Du Moulin De La Pointe"",""note"":""68, Rue Du Moulin De La Pointe 75013 PARIS""}" paris;wifi;3d5f7eac59c7ac0a7cc4272672e7fc72;48.845631;2.291309;"{""name"":""Maison Communale du 15 \u00e8me"",""note"":""69 Rue Violet 75015 PARIS""}" paris;wifi;1039810e6d6d8126d7d332132d84ce84;48.834843;2.342290;"{""name"":""Square Henri Cadiou"",""note"":""69, Boulevard Arago 75013 PARIS""}" paris;wifi;cf7f0e83896c6226d3f1ddc63fc22bbd;48.879730;2.312011;"{""name"":""Musee Cernuschi"",""note"":""7, Avenue Velasquez 75008 PARIS""}" paris;wifi;5132a4605cb1867add9f0f372ae4749d;48.888031;2.337738;"{""name"":""Square Suzanne Buisson"",""note"":""7, Rue Girardon 75018 PARIS""}" paris;wifi;dec5373f99069d8a2f849170afb4e15f;48.839355;2.351733;"{""name"":""Maison des Associations Du 05eme"",""note"":""7, Square Adanson 75005 PARIS""}" paris;wifi;416a494c9c1572fb37590150e84b3f87;48.842632;2.397545;"{""name"":""Biblioth\u00e8que Picpus"",""note"":""70, Rue De Picpus 75012 PARIS""}" paris;wifi;e57d255de6510fceb73d0b43464b85de;48.863976;2.277179;"{""name"":""Mairie du 16E Arrondissement"",""note"":""71, Avenue Henri Martin 75016 PARIS""}" paris;wifi;92fbcba8990862d1a8ab8690566e2cc5;48.871975;2.357310;"{""name"":""Mairie du 10E Arrondissement \/ Biblioth\u00e8que Chateau d\u0027Eau"",""note"":""72, Rue Du Faubourg Saint Martin 75010 PARIS""}" paris;wifi;e6d5d366a41235dcfa949b7591dba805;48.831280;2.319946;"{""name"":""Square Du Chanoine Viollet"",""note"":""72, Rue Du Moulin Vert 75014 PARIS""}" paris;wifi;28501d288a5cc4bd45e965f329ca6790;48.879524;2.388391;"{""name"":""Parc des Buttes Chaumont"",""note"":""74, Rue Botzaris 75019 PARIS""}" paris;wifi;eb3763153d323904736279d2e7135152;48.842567;2.349712;"{""name"":""Biblioth\u00e8que Mouffetard"",""note"":""74, Rue Mouffetard 75005 PARIS""}" paris;wifi;adeddacc068dc1318dd81869854676c5;48.826817;2.366574;"{""name"":""Biblioth\u00e8que Jean Pierre Melville"",""note"":""77, Rue Nationale 75013 PARIS""}" paris;wifi;3086b7c653f6b8ffaea95552f91f7318;48.847950;2.327704;"{""name"":""Biblioth\u00e8que Andre Malraux"",""note"":""78, Boulevard Raspail 75006 PARIS""}" paris;wifi;da023fc92344f98c0e1a1215ad5e77d3;48.850712;2.332816;"{""name"":""Mairie du 6E Arrondissement"",""note"":""78, Rue Bonaparte 75006 PARIS""}" paris;wifi;e0e905bbd12ae8e08570a350569c155e;48.820194;2.347818;"{""name"":""Square Jean Claude Nicolas Forestier"",""note"":""79, Boulevard Kellermann 75013 PARIS""}" paris;wifi;a392527d56e84fed158d9caa880ba105;48.844860;2.363970;"{""name"":""Jardin Tino Rossi"",""note"":""8 Quai Saint Bernard 75005 PARIS""}" paris;wifi;31457e43d78efc800dd6a0d50a350ea3;48.846321;2.256280;"{""name"":""Square Du Tchad"",""note"":""8, Avenue Du G\u00e9n\u00e9ral Sarrail 75016 PARIS""}" paris;wifi;43e7211b7c39636b34cde60bb6bda9a8;46.641998;2.338000;"{""name"":""Discoth\u00e8que des Halles"",""note"":""8, Porte Saint Eustache 75001 PARIS""}" paris;wifi;7da9d2c433d4d55f52812b8e1585ad52;48.867577;2.340758;"{""name"":""Mairie du 2E Arrondissement"",""note"":""8, Rue De La Banque 75002 PARIS""}" paris;wifi;14b879328980f20728af1c6a0a4633e6;48.840267;2.278690;"{""name"":""Biblioth\u00e8que Gutenberg"",""note"":""8, Rue De La Montagne D\u0027Aulas 75015 PARIS""}" paris;wifi;329058eefc1819675a0c4c715f49d1b4;48.874710;2.360730;"{""name"":""Jardin Villemin"",""note"":""8, Rue Des Recollets 75010 PARIS""}" paris;wifi;9c3c9d9eec544fffad51bd35d45a2b39;48.861439;2.378460;"{""name"":""Maison des Associations Du 11eme"",""note"":""8, Rue Du General Renault 75011 PARIS""}" paris;wifi;b85a0b7409b0f1290ec339da6dcc9acc;48.838287;2.353766;"{""name"":""Square Scipion"",""note"":""8, Rue Scipion 75005 PARIS""}" paris;wifi;610a1b548e276c828526b76186870d81;48.838627;2.322288;"{""name"":""Biblioth\u00e8que Vandamme"",""note"":""80, Avenue Du Maine 75014 PARIS""}" paris;wifi;8d9ad0c02dd16589a42e818ea5fa5a15;48.823166;2.373085;"{""name"":""Halle Georges Carpentier"",""note"":""81 bld Mass\u00e9na 75013 PARIS""}" paris;wifi;a3f56b46ea89c6baf9e6e8da0cd3ebe6;48.877296;2.370839;"{""name"":""Biblioth\u00e8que Francois Villon"",""note"":""81, Boulevard De La Villette 75010 PARIS""}" paris;wifi;72f0b8facff8065148123d4642014dd2;48.863609;2.360013;"{""name"":""Biblioth\u00e8que Marguerite Audoux"",""note"":""8-12, Rue Portefoin 75003 PARIS""}" paris;wifi;ed30f3806ea77fa467cb19b887394a3b;48.835270;2.255311;"{""name"":""Stade Coubertin"",""note"":""82, Rue Georges Laffont 75016 PARIS""}" paris;wifi;2d568939045b82d4da71ca8c6f79b469;48.858116;2.349384;"{""name"":""Tour St Jacques"",""note"":""88 rue de Rivoli 75004 PARIS""}" paris;wifi;a7bc99e3d0f4625fa49c4f6eb92ddce1;48.839165;2.338665;"{""name"":""Biblioth\u00e8que Port Royal"",""note"":""88 Ter, Boulevard De Port Royal 75005 PARIS""}" paris;wifi;516bbc8c8800d84220363a77e1bc335f;48.894703;2.318928;"{""name"":""Centre Culturel La Jonquiere"",""note"":""88, Rue La Jonquiere 75017 PARIS""}" paris;wifi;6318fac1a22f6a1fe93e6cf451bab6c1;48.863411;2.389559;"{""name"":""Square Samuel Champlain"",""note"":""9, Avenue Gambetta 75020 PARIS""}" paris;wifi;caab8fae565f05ad2ca5c5968b9ec11c;48.840294;2.278901;"{""name"":""Centre Animation Espace Cevennes"",""note"":""9, Rue De La Montagne D\u0027Aulas 75015 PARIS""}" paris;wifi;b7dee7f6c82094bf12f6017faf1c3844;48.836334;2.308726;"{""name"":""Square Alleray Labrouste"",""note"":""92, Rue D\u0027Alleray 75015 PARIS""}" paris;wifi;7634d0be329984f82dd4a9d5cb8e8e20;48.859642;2.307217;"{""name"":""Maison des Associations Du 07eme"",""note"":""93, Rue Saint Dominique 75007 PARIS""}" paris;wifi;ec5139a160552f3573b820f980877579;48.855808;2.410152;"{""name"":""Antenne Jeune Davout"",""note"":""94, Boulevard Davout 75020 PARIS""}" paris;wifi;91d48a142478a5d73ae9cdbd840dfb32;48.841393;2.391204;"{""name"":""Promenade Plantee"",""note"":""Allee Vivaldi 75012 PARIS""}" paris;wifi;048da5e9618762df4c276c654f976e58;48.874714;2.369599;"{""name"":""Square Juliette Dodu"",""note"":""Angle Rue Juliette Dodu 75010 PARIS""}" paris;wifi;a12971608fd3b2785615c49bbc8cb170;48.854607;2.300185;"{""name"":""Parc Champs De Mars"",""note"":""Avenue Charles Risler 75007 PARIS""}" paris;wifi;4de33e9b966d08c4e4183fcb8f63bd65;48.852310;2.280382;"{""name"":""Parc de Passy"",""note"":""Avenue Du President Kennedy 75016 PARIS""}" paris;wifi;a79260888077a9f84a4173a8f3ca6cb0;48.865398;2.317330;"{""name"":""Promenade Des Champs Elysees \/ Jardin De La Vallee Suisse"",""note"":""Avenue Edouard Tuck 75008 PARIS""}" paris;wifi;30762466ae5726aed282ef57fb367384;48.822571;2.323026;"{""name"":""Square Serment De Koufra"",""note"":""Avenue Ernest Reyer 75014 PARIS""}" paris;wifi;e1fd45eec8952b40bcdab86fdaed6c52;48.865356;2.381038;"{""name"":""Square Jean Aicard"",""note"":""Avenue Jean Aicard 75011 PARIS""}" paris;wifi;a4df33874e2e162f5e16442a804e1ed6;48.843384;2.325439;"{""name"":""Square Ozanam"",""note"":""Boulevard Du Montparnasse 75006 PARIS""}" paris;wifi;ffa8dcb8d5b1c65beb89af9e4a2d8beb;48.898766;2.370717;"{""name"":""Square Claude Bernard"",""note"":""Boulevard Macdonald 75019 PARIS""}" paris;wifi;3af7cdb43b6b87af9d56d91da9bd374d;48.876869;2.279986;"{""name"":""Square Alexandre Et Rene Parodi"",""note"":""Boulevard Thierry De Martel 75016 PARIS""}" paris;wifi;160e63516f2aa152b0c0c644705da2e5;48.831974;2.359757;"{""name"":""Square De La Raffinerie Say"",""note"":""Boulevard Vincent Auriol 75013 PARIS""}" paris;wifi;20667341d225a4084cc4936c43291170;48.858078;2.272868;"{""name"":""Jardin Du Ranelagh"",""note"":""Chaussee De La Muette 75016 PARIS""}" paris;wifi;e87b7f9205d54360dbbcccdb085d59e7;46.641998;2.338000;"{""name"":""Biblioth\u00e8que Francois Truffaut"",""note"":""Forum Des Halles 75001 PARIS""}" paris;wifi;0291efe375c9912f0eca3b6b65a9df41;48.854275;2.393534;"{""name"":""Jardin Damia"",""note"":""Passage Du Bureau 75011 PARIS""}" paris;wifi;d4bf5af14e14caa60546c763461bd0fb;48.886581;2.353427;"{""name"":""Square Leon"",""note"":""Passage Leon 75018 PARIS""}" paris;wifi;6bb6b9fc1d923ffc6496f57cb58bde1c;48.886715;2.317058;"{""name"":""Square Des Batignolles"",""note"":""Place Charles Fillion 75017 PARIS""}" paris;wifi;6931dda8014d59d7b23f9b1b00ccf19c;48.882198;2.344745;"{""name"":""Square D\u0027Anvers"",""note"":""Place D\u0027Anvers 75009 PARIS""}" paris;wifi;8f765e2bdea6a1c7563f05ac6130d3d2;48.832291;2.326420;"{""name"":""Square Ferdinand Brunot"",""note"":""Place Ferdinand Brunot 75014 PARIS""}" paris;wifi;ab9da502bb4a9a3b8dc6d3a301559ae0;48.876175;2.320609;"{""name"":""Square Marcel Pagnol"",""note"":""Place Henri Bergson 75008 PARIS""}" paris;wifi;458fc7a55cf04857c0e5af5ed0f8c459;48.857834;2.380788;"{""name"":""Mairie du 11E Arrondissement"",""note"":""Place Leon Blum 75011 PARIS""}" paris;wifi;2d6b1b2ba2a35115ca384badd546ec65;48.844505;2.290104;"{""name"":""Square Violet"",""note"":""Place Violet 75015 PARIS""}" paris;wifi;6ae5e25bf95b3281c12ff2dbb4cd35fa;48.819366;2.379145;"{""name"":""Solarium Josephine Baker"",""note"":""Porte De La Gare 75013 PARIS""}" paris;wifi;be0dd61c7bf921dd761a79e6a4bfb82e;48.864845;2.399500;"{""name"":""Square Edouard Vaillant"",""note"":""Rue Belgrand 75020 PARIS""}" paris;wifi;3887da8e86108e62a2de91d8ca9c9107;48.878605;2.331605;"{""name"":""Square Trinite D\u0027Estienne D\u0027Orves"",""note"":""Rue Blanche 75009 PARIS""}" paris;wifi;8626aeb91d7fde6b842977239e7658e5;48.882454;2.305385;"{""name"":""Parc Clichy Batignolles"",""note"":""Rue Cardinet 75017 PARIS""}" paris;wifi;5e15c3374954583ca70c1e61a25a5444;48.893375;2.369729;"{""name"":""Jardin d\u0027Eole"",""note"":""Rue d\u0027Aubervilliers 75018 PARIS""}" paris;wifi;c2b3b1d0672fa8799ec79005616edfb8;48.849125;2.412829;"{""name"":""Square Sarah Berhnardt"",""note"":""Rue De Lagny 75020 PARIS""}" paris;wifi;adcdfe2daac5f257e1e78cf57fbeffce;48.866032;2.388563;"{""name"":""Jardin Des Amandiers"",""note"":""Rue Des Cendriers 75020 PARIS""}" paris;wifi;eef0558a6b12d181206d6579759f1962;48.828346;2.367192;"{""name"":""Jardin Chateau Des Rentiers"",""note"":""Rue Du Chateau Des Rentiers 75013 PARIS""}" paris;wifi;221ec9d90ee89612ef25735dae3d74b4;48.852818;2.351656;"{""name"":""Square Jean XXIII"",""note"":""Rue Du Cloitre Notre Dame 75004 PARIS""}" paris;wifi;1888a3c02f31d69818664169ff3e5e0e;48.836864;2.291726;"{""name"":""Square Clos Feuquieres"",""note"":""Rue Du Clos Feuquieres 75015 PARIS""}" paris;wifi;701e3389a950ce3aeaa223f386e0783d;48.826771;2.354003;"{""name"":""Jardin De La Montgolfiere"",""note"":""Rue Du Moulinet 75013 PARIS""}" paris;wifi;d8baf689809f022095dd495575ba7ce8;48.836170;2.373285;"{""name"":""Jardin James Joyce"",""note"":""Rue Georges Balanchine 75013 PARIS""}" paris;wifi;77905263b1b56cbe5e3ea6fb24522def;48.831779;2.377783;"{""name"":""Square Georges Duhamel"",""note"":""Rue Jean Anouilh 75013 PARIS""}" paris;wifi;4b063e296cdd59444f9ddd8ede77fff4;48.826569;2.303527;"{""name"":""Square Julia Bartet"",""note"":""Rue Julia Bartet 75014 PARIS""}" paris;wifi;f467faf306c82456a80890c597ef1523;48.876671;2.346927;"{""name"":""Square Montholon"",""note"":""Rue La Fayette 75009 PARIS""}" paris;wifi;f027a6e9c064496f428df52caf014fc0;48.861694;2.377441;"{""name"":""Square Maurice Gardette"",""note"":""Rue Lacharriere 75011 PARIS""}" paris;wifi;436efbd44df62d587671c68e2933cbf9;48.850220;2.348515;"{""name"":""Square Rene Viviani"",""note"":""Rue Lagrange 75005 PARIS""}" paris;wifi;bc5e86438042b4da1a3b10c785b52d05;48.867310;2.411070;"{""name"":""Square Emmanuelle Fleury"",""note"":""Rue Le Vau 75020 PARIS""}" paris;wifi;83ca37a471e94889e23355dcbd1fd7da;48.894337;2.327223;"{""name"":""Square Des Epinettes"",""note"":""Rue Maria Deraismes 75017 PARIS""}" paris;wifi;88a12d28cae696096093be63e6d79d19;48.831692;2.328645;"{""name"":""Square Aspirant Dunand"",""note"":""Rue Mouton Duvernet 75014 PARIS""}" paris;wifi;033dfae8d8a659a9304f750ad045cde4;48.874229;2.323934;"{""name"":""Square Louis XVI"",""note"":""Rue Pasquier 75008 PARIS""}" paris;wifi;bd2090a6f781a93e0d0fa939bc16a3c9;48.873421;2.396013;"{""name"":""Square Pixerecourt"",""note"":""Rue Pixerecourt 75020 PARIS""}" paris;wifi;0a5c09f5b411e26b3c8efbdca5b82d24;48.838314;2.406188;"{""name"":""Square Charles Peguy"",""note"":""Rue Rottembourg 75012 PARIS""}" paris;wifi;904f6364077d60a8bf6212b966c48c7c;48.858292;2.406685;"{""name"":""Square De La Salamandre"",""note"":""Rue Saint Blaise 75020 PARIS""}" paris;wifi;9560c589fc868df561510ba2675fef61;48.862152;2.351940;"{""name"":""Square Emile Chautemps"",""note"":""Rue Saint Martin 75003 PARIS""}" \ No newline at end of file diff --git a/assets/csv/parcs/berlin.csv b/assets/csv/parcs/berlin.csv new file mode 100644 index 0000000..57b8a3b --- /dev/null +++ b/assets/csv/parcs/berlin.csv @@ -0,0 +1,16 @@ +Tiergarten;52.51094;13.337874 +Tiergarten;52.516947;13.375211 +Volkspark Friedrichshain;52.527901;13.436356 +Volkspark Friedrichshain;52.528488;13.444734 +Freibad Plötzensee;52.543031;13.328841 +Schloßpark;52.52241;13.290515 +Volkspark Humboldthain;52.54541;13.381588 +Park am Nordbahnhof;52.535675;13.383566 +Mauerpark;52.540677;13.404275 +Anton-Saefkow-Park;52.537133;13.44119 +Volkspark Prenzlauer Berg;52.53564;13.463437 +Fennpfuhlpark;52.528806;13.475551 +Blankensteinpark;52.521996;13.461032 +Plänterwald;52.4796;13.4754 +Schlesischer Busch;52.495456;13.44982 +Viktoriapark;52.488136;13.380497 diff --git a/assets/csv/parcs/london.csv b/assets/csv/parcs/london.csv new file mode 100644 index 0000000..db6c2cc --- /dev/null +++ b/assets/csv/parcs/london.csv @@ -0,0 +1,29 @@ +Brunswick Park;51.624723;-0.154687 +Burgess Park;51.48427;-0.084052 +Cannizaro Park;51.424826;-0.230744 +Clissold Park;51.561111;-0.088056 +Epping Forest;51.511214;-0.119824 +Finsbury Park;51.572215;-0.103362 +Greenwich Park;51.47691;0.001464 +Hackney Marsh;51.557;-0.03 +Haggerston Park;51.533056;-0.0675 +Highbury Fields;51.550278;-0.101667 +Hyde Park;51.507431;-0.165708 +Kennington Park;51.484167;-0.108889 +Kensington Gardens;51.506987;-0.179165 +Lammas Park;51.504949;-0.310857 +Lloyd Park;51.594557;-0.021326 +London Fields;51.541937;-0.060947 +Parliament Hill;51.562078;-0.176355 +Putney Lower Common;51.469489;-0.230602 +Regent's Park;51.532692;-0.141995 +Richmond Park;51.45;-0.283333 +Southwark Park;51.494651;-0.05581 +Tavistock Square Gardens;51.524958;-0.129066 +The Paddock Community Nature Park;51.588298;-0.054057 +Tiverton Green;51.538797;-0.215839 +Tooting Bec Common;51.441001;-0.139763 +Victoria Park;51.536442;-0.043555 +Wanstead Park;51.568571;0.04446 +Weavers Fields;51.52514;-0.061283 +West Ham Park;51.538436;0.022162 diff --git a/assets/csv/parcs/paris.csv b/assets/csv/parcs/paris.csv new file mode 100644 index 0000000..e24ff82 --- /dev/null +++ b/assets/csv/parcs/paris.csv @@ -0,0 +1,23 @@ +Jardin des Plantes;48.843962;2.3596 +Parc de Bercy;48.833538;2.384634 +Bois de Vincennes;48.824664;2.418387 +Bois de Vincennes;48.838563;2.467654 +Champ de Mars;48.858742;2.293493 +Champ de Mars;48.852911;2.30317 +Esplanade des Invalides;48.86126;2.313265 +Esplanade des Invalides;48.853942;2.312375 +Jardin des Tuileries;48.86525;2.322804 +Jardin des Tuileries;48.861876;2.332438 +Jardin du Luxembourg;48.848872;2.336075 +Jardin du Luxembourg;48.844381;2.336977 +Bois de Boulogne;48.849575;2.247176 +Bois de Boulogne;48.872049;2.27138 +Jardins du Troadéro;48.861491;2.289577 +Parc de la Villette;48.892368;2.390771 +Parc des Buttes Chaumont;48.876935;2.37942 +Parc des Buttes Chaumont;48.880971;2.387574 +Parc de Belleville;48.870252;2.384591 +Parc Monceau;48.880744;2.311696 +Parc Kellerman;48.821036;2.352282 +Parc MontSouris;48.822222;2.338333 +Square Georges Brassens;48.831691;2.300191 diff --git a/assets/fonts/fontsPackBasicLatin1.swf b/assets/fonts/fontsPackBasicLatin1.swf new file mode 100644 index 0000000..deba21e Binary files /dev/null and b/assets/fonts/fontsPackBasicLatin1.swf differ diff --git a/assets/fonts/fontsPackCyrillicArial.swf b/assets/fonts/fontsPackCyrillicArial.swf new file mode 100644 index 0000000..9f9f19e Binary files /dev/null and b/assets/fonts/fontsPackCyrillicArial.swf differ diff --git a/assets/img/intro_berlin.jpg b/assets/img/intro_berlin.jpg new file mode 100644 index 0000000..ed6563b Binary files /dev/null and b/assets/img/intro_berlin.jpg differ diff --git a/assets/img/intro_london.jpg b/assets/img/intro_london.jpg new file mode 100644 index 0000000..886f58f Binary files /dev/null and b/assets/img/intro_london.jpg differ diff --git a/assets/img/intro_paris.jpg b/assets/img/intro_paris.jpg new file mode 100644 index 0000000..087cc69 Binary files /dev/null and b/assets/img/intro_paris.jpg differ diff --git a/assets/swf/monuments.swf b/assets/swf/monuments.swf new file mode 100644 index 0000000..d532a4d Binary files /dev/null and b/assets/swf/monuments.swf differ diff --git a/assets/xml/berlin.xml b/assets/xml/berlin.xml new file mode 100644 index 0000000..e062d67 --- /dev/null +++ b/assets/xml/berlin.xml @@ -0,0 +1,99 @@ + + + + + + + 20000000 + + + + + + 90 + 1000 + -1 + -120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/xml/config.xml b/assets/xml/config.xml new file mode 100644 index 0000000..483f32d --- /dev/null +++ b/assets/xml/config.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transports + networks + street furnitures + social + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 642454689113510 + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + 60 + 90 + -1 + -120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/xml/en-EN/content.xml b/assets/xml/en-EN/content.xml new file mode 100644 index 0000000..cf5d16b --- /dev/null +++ b/assets/xml/en-EN/content.xml @@ -0,0 +1,716 @@ + + + + + + + + + + + + + + + + + + + + + + + / hour]]> + + + / m]]> + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + <![CDATA[NEED HELP?]]> + on how to use this website.]]> + + + + + <![CDATA[LOST IN THE DATA?]]> + + + + + + + <![CDATA[LOOKING FOR A PLACE?]]> + + + + <![CDATA[INTERESTED BY SPECIFIC DATA?]]> + Watch_Dogs WeareData gathers available geolocated data in a non-exhaustive way: we only display the information for which we have been given the authorization by the sources.]]> + + + <![CDATA[WANT TO LEARN MORE ABOUT YOUR CURRENT AREA?]]> + + + + <![CDATA[CURIOUS ABOUT PEOPLE VISITING THIS WEBSITE?]]> + + + + <![CDATA[INTERESTED IN ANOTHER CITY?]]> + + + + <![CDATA[ENJOY YOUR EXPLORATION!]]> + + + + + <![CDATA[About]]> + ABOUT WATCH_DOGS WeareData
+ In the video game Watch_Dogs, the city of Chicago is run by a Central Operating System (CTOS). This system use data to manage the entire city and to solve complex problems. Traffic jams, war against crime, power management... + This is not fiction anymore. Smart cities are real, it’s happening now. A huge amount of data is collected and managed every day in our modern cities, and those data are available for everybody.

+ Watch_Dogs WeareData is the first website to gather publicly available data about Paris, London and Berlin, in one location. Each of the three towns is recreated on a 3D map, allowing the user to discover the data that organizes and runs modern cities today, in real time. It also displays information about the inhabitants of these cities, via their social media activity.

+ What you will discover here are only facts and reality.
+ Watch_Dogs WeareData gathers available geolocated data in a non-exhaustive way: we only display the information for which we have been given the authorization by the sources.
+ Yet, it is already a huge amount of data.
+ You may even watch what other users are looking at on the website through Facebook connect.

+ If you are interested in this subject, we’d love to get your feedback about the website and about our connected world. Everyone has their part to play and their word to say. Stay connected and join the conversation on social media through the Watch_Dogs Facebook page or through Twitter using the hashtag #watchdogs


+ ABOUT WATCH_DOGS THE VIDEO GAME
+ In Watch Dogs, you will be immersed in a living, breathing and fully connected recreation of Chicago. You will assume the role of Aiden Pearce, a new type of vigilante who, with the help of his smartphone, will use his ability to hack into Chicago’s central operating system (CTOS) and control almost every element of the city. Aiden will be able to tap into the city’s omnipresent security cameras, download personal information to locate a target, control systems such as traffic lights or public transportation to stop a chase, and more. The city of Chicago is now the ultimate weapon. Fans can stay connected to Watch Dogs by visiting the official website, Facebook page and Twitter account.
+ Watch_Dogs will be released in EMEA territories for Xmas 2013 on PlayStation®3, Xbox 360® video game and entertainment system from Microsoft, the WiiU™ system from Nintendo and Windows PC, as well as at the launch of PlayStation®4 and Xbox One video game and entertainment system from Microsoft.


+ ABOUT UBISOFT
+ Ubisoft is a leading producer, publisher, and distributor of interactive entertainment products worldwide and has grown considerably through a strong and diversified lineup of products and partnerships. Ubisoft has offices in 26 countries and has sales in more than 55 countries around the globe. It is committed to delivering high-quality, cutting-edge video game titles to consumers. For the 2012-13 fiscal year Ubisoft generated sales of €1,256 million. To learn more, please visit http://www.ubisoftgroup.com




+ Thank you for using Watch_Dogs WeareData and enjoy!
+ The Ubisoft team.]]> +
+
+ + <![CDATA[Legals]]> + + + 1 – Company details
+ Publisher: UBISOFT EMEA
+ Registered address: 28 rue Armand Carrel, 93108 Montreuil, France
+ Telephone number: +33 (0)1 48 18 50 00
+ Share capital: SARL (private limited company incorporated in France) with capital of EUR 11,959,727
+ Company registration: 432 573 624 RCS BOBIGNY
+ APE (French SIC code): 5821Z / Publication of computer games
+ Host: BETC DIGITAL, 47 bis rue des Vinaigriers, 75010 Paris, France – Tel: +33 (0)1 56 41 35 00

+ + 2 – Purpose – Presentation of the website
+ These Terms and Conditions of Use for the “Watch Dogs Wearedata†website (the “Websiteâ€), accessible at http://wearedata.watchdogs.com, set out the terms and conditions of use of the Website by users. A “User†means any person who accesses a page of or browses the Website.
+ These Terms and Conditions of Use may be amended by UBISOFT at any time and without notice. If this is the case, the amended Terms and Conditions of Use will become effective on the date they are posted online. We recommend that Users read these Terms and Conditions of Use regularly. In any event, Users will be deemed to have accepted these Terms and Conditions of Use by the simple fact of using the Website.
+ As part of the promotional activities for “Watch Dogsâ€, the Website is offering Users the chance to consult public data available on three European cities: Paris, London and Berlin. The Website has no scientific purpose; it has been created purely for entertainment purposes. It is not exhaustive and may contain information which is not up to date. The sources used to compile the Website and the dates on which information was last updated are credited in the “Sources – Credits†tab.

+ + 3 – Terms and Conditions of Use of the Website
+ The Website is intended for strictly private use by private individuals. Any use for commercial, promotional or professional purposes is strictly prohibited.
+ By accessing the Website, Users undertake to comply with these Terms and Conditions of Use and certify that they are aware of the technical capacities and performances of their internet connections and have all the hardware and software required to browse the internet. They guarantee UBISOFT against any unlawful, non-compliant and/or unauthorised use of the information accessible via the Website.
+ UBISOFT reserves the right to close the Website and to remove or modify Website functions as of right, without notice and without indemnity.
+ To ensure optimum use of the Website, Users should configure their internet browser settings to activate JavaScript.

+ + 4 – Restrictions on use
+ Any copying, sale, use, publication, broadcasting, reproduction, representation and/or adaptation of the pre-existing content of the Website for either public or private use and whatever the desired purpose is prohibited.

+ + 5 – Intellectual Property
+ The animations, music, photographs, articles, texts, drawings, illustrations, software and icons as well as any works which appear on the Website are protected by intellectual property rights and are the property of UBISOFT and/or its partners where applicable. The “Sources – Credits†tab contains information on the origins of the information contained in the Website and, in certain cases, details of the holders of the corresponding intellectual property rights.
+ Users therefore undertake not to exploit in any way including, but not limited to, the downloading, extraction, storage, use, reproduction, sale, communication, representation, broadcasting, adaptation and/or borrowing, either directly or indirectly, on any medium, by any means or in any manner, content protected by intellectual property rights without the express authorisation of UBISOFT or the rights holders named on the Website.
+ No licence or other right of use in any intellectual property is granted to Users of the Website.
+ Failure to comply with these provisions will expose the User responsible to the possibility of criminal and civil prosecution under the relevant legislation.

+ + 6 – Cookies/Personal data
+ Google Analytics
+ This Website uses Google Analytics, a web analytics services provided by Google Inc. (“Googleâ€). Google Analytics uses “cookiesâ€, text files placed on your computer, to help the Website analyse how Users use the site. The information generated by the cookies about Users’ use of the Website (including their IP addresses) will be transmitted to and stored by Google on servers in the United States. Google will use this information for the purpose of evaluating Users’ use of the Website, compiling reports on website activity for its publisher and providing other services relating to website activity and internet usage. Google may also transfer this information to third parties where required to do so by law or where such third parties process the information on Google’s behalf, including in particular the publisher of this Website. Google will not associate Users’ IP addresses with any other data held by Google. Users may deactivate the use of cookies by selecting the appropriate settings in their browsers. However, this may mean that they are unable to use the full functionality of this Website. By using this Website, Users consent expressly to the processing of data about them by Google in the manner and for the purposes set out above.

+ Facebook
+ This Website uses Facebook Connect. To ensure an optimum browsing experience cookies will be placed on Users’ computers.
+ For more information about Facebook cookies, please go the following page: www.facebook.com/help/cookies

+ + Personal data
+ Under certain circumstances the Website will display data which has been made public by Users on Facebook, Twitter, Flickr, Foursquare or Instagram.
+ Any complaint regarding the public character of the data reproduced on the Website (and taken from one of the aforementioned sites) should be sent to the site in question (Facebook, Twitter, Flickr, Foursquare or Instagram, as appropriate) or dealt with by modifying the User’s personal account settings. Ubisoft accepts no liability for such complaints. Ubisoft merely undertakes to reflect any changes in confidentiality settings made by a User on one of the aforementioned sites as quickly as possible on the Website.
+ Ubisoft does not collect or store any personal data contained in computer files.

+ + 7 – Warranties
+ The Website is provided “as is†and Ubisoft makes no warranties or representations as to the use or the results of the use of the Website in terms of compliance, accuracy, exhaustivity, liability or security or in any other respect.
+ Within the limits permitted under the applicable law, Ubisoft provides no warranty as regards user satisfaction or the fitness of the Website for any particular purpose. Moreover, Ubisoft provides no warranty that the Website, including the servers and software necessary for its operation, will be free of interruption, errors, bugs, viruses or other forms of harmful code, nor that such errors, bugs, viruses or harmful code will be corrected.
+ Finally, Ubisoft provides no warranty that the information, content and/or other features accessible via the Website are accurate, complete or up to date. As a result, Ubisoft neither provides Users with any warranty nor accepts any liability in respect of Users in relation to their own actions.
+ Users are liable for all costs and risks associated with the use of the Website. Users accept all risks related to loss of time and efforts, loss of data (in particular gaming data), errors and loss of commercial or other data resulting from the use of the Website.
+ Users undertake to hold UBISOFT and BETC DIGITAL harmless against any legal action taken and any claims made against them by a third party as a result of the use of the Website by Users or via Users’ internet connections under conditions which breach these Terms and Conditions of Use.
+ This warranty covers any sum that UBISOFT or BETC DIGITAL might be required to pay in any respect, including in legal and court fees, whether acknowledged or ordered. Use of this Website comes without any warranty whatever.

+ + 8 – Applicable Law
+ These Terms and Conditions of Use are governed by French law.
+ In case of dispute or disagreement, the French courts shall have sole jurisdiction. This includes cases of plurality of defendants and applications for joinder of guarantor.

+ + 9 – Credits
+ This Website is designed and produced by BETC DIGITAL.

+ + This Website is not in any way sponsored, governed or approved by or associated in any manner whatever with Facebook, Twitter, Flickr, Foursquare or Instagram.
]]> +
+
+ + Consequently, Ubisoft cannot guarantee the comprehensiveness of the information provided on this site. The latest date for the updating of information on this site is indicated, with the source of each provided.
+ The data providers have in no way been involved with the development of this site, and consequently, they cannot guarantee the quality and accuracy of the information provided.

+ + Website users are encouraged to consult the sources and associated licences for more detail regarding the information provided.


+ + + PARIS
+ > TRANSPORT
+ > METRO
+ Frequency and train circulation
+ Date : 19/04/2013
+ Source = RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/offre-transport-de-la-ratp-format-gtfs.html?tx_icsoddatastore_pi1%5BreturnID%5D=38
+ ODbL open licence: http://opendatacommons.org/licenses/odbl/1.0/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/paris_gtfs.sql.zip

+ + Location of metro stations
+ Date : 18/12/2012
+ Source : RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/positions-geographiques-des-stations-du-reseau-ratp.html
+ Etalab open licence:
+ http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + Number of passengers per day and per station
+ Date : 31/07/2012
+ Source : RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/trafic-annuel-entrant-par-station-2011.html
+ Etalab open licence: http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > BIKE SHARE SYSTEM
+ Location of stations and availability of bikes
+ Date : 30/05/2013 (Real time, updated every 10 minutes)
+ Sources : JC Decaux, https://developer.jcdecaux.com
+ Etalab open licence: https://developer.jcdecaux.com/#/opendata/licence

+ + > NETWORK
+ > INTERNET SERVICE
+ Location
+ Date : April 2013
+ Source : Orange, http://www.orange.com/fr/content/download/3259/28413/version/6/file/PODIavril2013.pdf + With the kind authorisation of Orange
+ Paris / Location of the Main Distribution Frames:
+ The location of the Main Distribution Frames is pinpointed by their names and neighbourhood: they are therefore approximate

+ + Approximate number of subscribers
+ Date : 2013
+ Source : Approximate number of subscribers. Degrouptest http://www.degroupnews.com/carte-nra-adsl/ile-de-france/paris/
+ Credit: Data provided by DegroupTest.com

+ + > WIFI ROUTERS
+ Date : 12/04/2012
+ Source: Parisdata / OpenData Paris - Paris City Hall http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=125&portlet_id=106
+ ODbL Licence - City of Paris: http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/paris_wifi.csv

+ + > MOBILE
+ Relay antennae / Type of antenna
+ Date : 22/04/2013
+ Source : ANFR, http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licence : http://www.anfr.fr/fr/mentions-legales.html

+ + Electromagnetic fields / Strength of the field
+ Date : 22/04/2013
+ Source : ANFR, http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licence : http://www.anfr.fr/fr/mentions-legales.html

+ + > URBAN FIXTURES
+ > AUTOMATIC TELLER MACHINES
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org//
+ Licence : © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/paris_dab.csv

+ + > ADVERTISING BILLBOARDS: Placement and number of persons viewing
+ Date : 2013
+ Source : Clear Channel France
+








+ + > TRAFFIC LIGHTS
+ Date : 12/04/2011
+ Source: Parisdata / OpenData Paris - City of Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=103&portlet_id=106
+ ODbL licence - City of Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/paris_signals.csv

+ + > RADARS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ Licence : © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/paris_radars.csv

+ + + > PUBLIC TOILETS
+ Date : 04/04/2011
+ Source: Parisdata / OpenData Paris - Paris City Hall http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=93&portlet_id=106
+ ODbL licence - City of Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Download the adapted document: ttp://wearedata.watchdogs.com/assets/csv/paris_toilets.csv

+ + > VIDEO SURVEILLANCE CAMERAS
+ Date : 12/04/2012
+ Source: Paris Police Commission http://www.data.gouv.fr/DataSet/551635?xtmc=videoprotection&xtcr=1
+ Open licence: https://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > NEIGHBOURHOOD STATISTICS
+ > MONTHLY SALARY
+ Date : 2010
+ Source: INSEE, Dads (social data), Dossier on those employed at place of residence http://www.insee.fr/fr/themes/detail.asp?reg_id=99&ref_id=base-cc-salaire-net-horaire-moyen
+ Licence : http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > UNEMPLOYMENT RATE
+ Date : 2009/2011
+ Sources: INSEE, record of civil status and population estimations as at 1st January, RP2009 and RP1999 main usagehttp://www.insee.fr/fr/bases-de-donnees/esl/comparateur.asp?codgeo=arm-75101
+ Licence : http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > CRIME RATE
+ Date : 2010
+ Sources: Police Commission / ONDRP (The French National Supervisory Body of Crime and Punishment) Processing State 4001 for the City of Paris in 2010, DCPJ (French Internal Security Service) / ONDRP Processing
+ Licence : http://www.inhesj.fr/sites/default/files/RA2012/Licence-Ouverte-Open-Licence.pdf
+ Credit: Annual State 4001, DCPJ / ONDRP Processing

+ + > ELECTRICAL CONSUMPTION PER NEIGHBOURHOOD
+ Date : 2005
+ Sources: Greater Paris Region Institute for Urban Planning and Development Data sourced from simulation done by AirParif and mapped out by the IAU-îdF. http://www.iau-idf.fr/cartes/cartes-et-fiches-interactives/visiau-energie-center.html
+ Licence: © IAU-Île-de-France - Visiau Energie Center http://www.iau-idf.fr/fileadmin/user_upload/SIG/cartes_telecharge/visiau/Conditions_utilisation_Visiau.pd

+ + LONDON
+ + > MOBILE
+ Location of the relay antennae / type of antenna
+ Date : 2012
+ Source : http://www.sitefinder.ofcom.org.uk
+ Licence : © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + Electromagnetic fields / Strength of the field
+ Date : De 2008 à 2011
+ Source : http://stakeholders.ofcom.org.uk/sitefinder/mobile-base-station-audits
+ Licence : © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + > URBAN FIXTURES
+ > AUTOMATIC TELLER MACHINES
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap contributors
+ ODbL licence http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/london_atms.csv

+ + > TRAFFIC LIGHTS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap contributors
+ ODbL licence http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/london_signals.csv

+ + > RADARS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap contributors
+ ODbL licence http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/london_radars.csv

+ + > PUBLIC TOILETS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap contributors
+ ODbL licence http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/london_toilets.csv


+ + > NEIGHBOURHOOD STATISTICS
+ > MONTHLY SALARY
+ Date : 2011
+ Source: Office for National Statistics Annual Survey of Hours and Earnings, 2011 Revised Results (SOC 2010), Table 8 - Place of Residence by Local Authority
+ http://www.ons.gov.uk/ons/publications/re-reference-tables.html?edition=tcm%3A77-280145
+ Licence : Adapted from data from the Office for National Statistics licensed under the Open Government
+ Licence v.1.0
+ http://www.ons.gov.uk/ons/site-information/information/creative-commons-license/index.html

+ + > UNEMPLOYMENT RATE
+ Date : Oct 2010-Sep 2011
+ Author : GLA Social Exclusion team
+ Sources : GLA Intelligence Unit, based on ONS Model based unemployment data for local areas, derived using Annual Population Survey and Claimant Count data.
+ http://lseo.org.uk/datastore/package/unemployment-london-2012
+ Licence: Open Government Licence v.1.0 http://www.nationalarchives.gov.uk/doc/open-government-licence/

+ + > CRIME RATE
+ Date : 2011/2012
+ Sources: GLA Intelligence Unit
+ Metropolitan Police Service http://data.london.gov.uk/datastore/package/crime-rates-borough
+ via http://data.london.gov.uk/datastore/package/london-borough-profiles
+ Data only correct as of April, 2013.

+ + > ELECTRICAL CONSUMPTION
+ Date : 2011
+ Sources: Department of Energy and Climate Change http://data.london.gov.uk/datastore/package/electricity-consumption-borough
+ Licence : Crown copyright http://www.nationalarchives.gov.uk/doc/open-government-licence/


+ + BERLIN
+ > TRANSPORT
+ > METRO
+ Frequency and train circulation
+ Date : 2012
+ Source: Verkehrsverbund Berlin Brandenburg http://daten.berlin.de/datensaetze/vbb-fahrplan2012
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + Location of the stations
+ Date : 2012
+ Source: Verkehrsverbund Berlin-Brandenburg http://datenfragen.de/openvbb/Bahnhoefe_mit_Zugangskoordinaten_GK4_lon-lat_Auswahl.xlsx
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > BIKE SHARE SYSTEM
+ Location of the stations
+ Date : 2013
+ Source : Based on OpenStreetMap http://www.openstreetmap.org/
+ Licence: With kind permission from Deutsche Bahn © OpenStreetMap Contributors ODbL Licence http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_bicycles.csv

+ + > NETWORK
+ > INTERNET SERVICE
+ Date : 2013
+ Source : http://selke.de/hvt-standorte/
+ With kind authorization from Olaf Selke

+ + > WIFI ROUTERS
+ Date : 20/11/2012
+ Source: Senatsverwaltung für Wirtschaft, Technologie und Forschung http://daten.berlin.de/datensaetze/wlan-standorte-berlin
+ Licence: http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > MOBILE
+ Location of the relay antennae
+ Date : 05/2013
+ Source : Open Cell ID Project http://opencellid.de/
+ Licence: CC-BY-SA -http://creativecommons.org/licenses/by-sa/2.0/de/deed.en
+ + > URBAN FIXTURES
+ > AUTOMATIC TELLER MACHINES
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ Licence: © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_atms.csv

+ + > TRAFFIC LIGHTS
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence: © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_signals.csv
+ + > RADARS
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence: © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_radars.csv
PUBLIC TOILETS
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence: © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_toilets.csv
VIDEO SURVEILLANCE CAMERAS
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence: © OpenStreetMap contributors http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Download the adapted document: http://wearedata.watchdogs.com/assets/csv/odbl/odbl/berlin_cctvs.csv
NEIGHBOURHOOD STATISTICS
+ > MONTHLY SALARY
+ Source : Bundesagentur für Arbeit; Statistik-Service Ost
+ Crédits : With kind authorization from Bundesagentur für Arbeit; Statistik-Service Ost

+ + > UNEMPLOYMENT RATE
+ Source : Bundesagentur für Arbeit; Statistik-Service Ost
+ Crédits : With kind authorization from Bundesagentur für Arbeit; Statistik-Service Ost
+ + > CRIME RATE
+ Date : 2011/2012
+ Sources : http://www.berlin.de/polizei/kriminalitaet/pks.html/a>
+ "Nachdruck und sonstige Vervielfältigungen - auch auszugsweise - nur mit Quellenangabe gestattet" With kind authorization from Der Polizeipräsident in Berlin

+ + > ELECTRICAL CONSUMPTION
+ Date : 2008
+ Sources : Stromnetz Berlin GmbH Historie ab 2008 - Jahreshöchstlast der Netzlast (Berlin)
+
http://netzdaten-berlin.de/web/guest/suchen/-/details/historie-ab-2008--jahreshochstlast-der-netzlast-berlin
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + SOCIAL
+ > FOURSQUARE
+ https://developer.foursquare.com/

+ + > FLICKR
+ Licence : creative commons
+ Accreditation
+ http://creativecommons.org/licenses/by/2.0/
+ Accreditation-ShareAlike
+ http://creativecommons.org/licenses/by-sa/2.0/
+ Accreditation-NoDerivs
+ http://creativecommons.org/licenses/by-nd/2.0/

+ + > TWITTER
+ https://dev.twitter.com/terms/display-requirements
+ https://dev.twitter.com/terms/api-terms

+ + > INSTAGRAM
+ http://instagram.com/developer/]]> +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Area Stats.]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/assets/xml/en-EN/landing.xml b/assets/xml/en-EN/landing.xml new file mode 100644 index 0000000..b3360eb --- /dev/null +++ b/assets/xml/en-EN/landing.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/xml/es-ES/content.xml b/assets/xml/es-ES/content.xml new file mode 100644 index 0000000..de33962 --- /dev/null +++ b/assets/xml/es-ES/content.xml @@ -0,0 +1,714 @@ + + + + + + + + + + + + + + + + + + + + + + + /hora]]> + + + / m]]> + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + <![CDATA[¿NECESITAS AYUDA?]]> + + + + + + <![CDATA[¿PERDIDO ENTRE LOS DATOS?]]> + + + + + + + <![CDATA[¿BUSCAS UN LUGAR?]]> + + + + <![CDATA[¿TE INTERESAN UNOS DATOS ESPECÃFICOS?]]> + Watch_Dogs WeareData reúne información geolocalizada disponible de forma no exhaustiva; es decir, solo mostramos la información que las fuentes no han dado permiso para compartir.]]> + + + <![CDATA[¿QUIERES SABER MÃS SOBRE TU ZONA ACTUAL?]]> + + + + <![CDATA[¿SIENTES CURIOSIDAD POR LA GENTE QUE VISITA ESTE SITIO WEB?]]> + + + + <![CDATA[¿TE INTERESA OTRA CIUDAD?]]> + + + + <![CDATA[¡DISFRUTA DE TU EXPLORACIÓN!]]> + + + + + <![CDATA[Información]]> + ACERCA DE WATCH_DOGS WeareData
+ En el videojuego Watch_Dogs, la ciudad de Chicago está controlada por un sistema operativo central (ctOS). Este sistema usa datos para dirigir toda la ciudad y resolver problemas complejos, tales como atascos, la guerra contra el crimen, la gestión energética... + Todo esto ha dejado de ser ficción. Las ciudades inteligentes son reales, se pueden ver hoy en día. Todos los días se recopilan y gestionan infinidad de datos en cada una de nuestras modernas ciudades. Datos que están al alcance de cualquiera.

+ Watch_Dogs WeareData es la primera página web que reúne en un mismo lugar toda la información pública disponible de París, Londres y Berlín. Cada una de estas tres ciudades está recreada en un mapa 3D que permite al usuario descubrir en tiempo real todos los datos que organizan y hacen que dichas ciudades cobren vida. También muestra información sobre los habitantes de esas ciudades gracias a su actividad en las redes sociales.

+ Lo que descubrirás aquí son solo hechos y realidad.
+ Watch_Dogs WeareData reúne información geolocalizada disponible de forma no exhaustiva; es decir, solo mostramos la información que las fuentes no han dado permiso para compartir.
+ Y aun así, es una cantidad ingente de datos.
+ Hasta puedes ver, gracias a Facebook Connect, lo que otros usuarios están buscando en la página.

+ Si te interesa el tema, nos encantaría conocer tus comentarios sobre la página web y sobre nuestro mundo conectado. Todo el mundo tiene un papel que jugar y algo que decir. Manteneos conectados y participad en la conversación en las redes sociales a través de la página de Watch_Dogs en Facebook o a través de Twitter usando el hashtag #watchdogs.


+ ACERCA DEL VIDEOJUEGO WATCH_DOGS
+ En Watch_Dogs te sumergirás en una recreación de Chicago repleta de vida y completamente conectada. El protagonista de esta historia es Aiden Pearce, un nuevo tipo de justiciero que, con la ayuda de su smartphone, podrá piratear el sistema operativo central de Chicago (ctOS) y controlar prácticamente cualquier elemento de la ciudad. Aiden podrá entrar en las omnipresentes cámaras de seguridad de la ciudad, descargar información personal para localizar a un objetivo, controlar sistemas como los semáforos o el transporte público para detener una persecución y mucho más. La ciudad de Chicago es ahora el arma definitiva. Los aficionados podrán seguir conectados a Watch_Dogs visitando la página web oficial, la página de Facebook o la cuenta de Twitter.
+ Watch_Dogs llegará a todos los territorios de Europa, Oriente Medio y Asia en Navidades de 2013 para PlayStation®3, el sistema de entretenimiento y videojuegos Xbox 360® de Microsoft, la consola WiiU™ de Nintendo y Windows PC, y también estará presente en el lanzamiento de PlayStation®4 y el sistema de entretenimiento y videojuegos Xbox One de Microsoft.


+ ACERCA DE UBISOFT
+ Ubisoft es una empresa líder en la producción, edición y distribución de productos de ocio interactivo en todo el mundo, que ha crecido de forma considerable gracias a sus alianzas y a su potente y variado catálogo de productos. Ubisoft tiene oficinas en 26 países y vende en más de 55 países de todo el mundo. Su compromiso es el de ofrecer videojuegos punteros de la más alta calidad a los consumidores. En el año fiscal 2012-2013, Ubisoft obtuvo unas ventas de 1256 millones de euros. Para saber más sobre la compañía, visita http://www.ubisoftgroup.com




+ Gracias por usar Watch_Dogs WeareData. ¡Disfrútala!
+ El equipo de Ubisoft.]]> +
+
+ + <![CDATA[Avisos legales]]> + + + 1 - Datos identificativos de la sociedad:
+ Editor: UBISOFT EMEA
+ Domicilio social: 28 rue Armand Carrel 93108 Montreuil, FRANCIA
+ Número de teléfono: +33 (0)1 48 18 50 00
+ Capital social: SARL CON CAPITAL DE 11.959.727 EUROS
+ Nº de inscripción en el RCS 432.573.624 RCS BOBIGNY (Francia)
+ Código APE (Actividad Principal de la Empresa): 5821Z / Edición de juegos electrónicos
+ Proveedor de alojamiento web: BETC DIGITAL - 47 bis rue des Vinaigriers 75010 París (Francia) – +33 (0)1 56 41 35 00

+ + 2 – Objeto – Presentación de la Página Web
+ Las presentes condiciones de uso de la página web "Watch Dogs Wearedata", a la que puede accederse a través de la dirección http://wearedata.watchdogs.com (en adelante, la "Página Web"), definen las modalidades y condiciones de uso de la Página Web por parte del usuario. Se entenderá por usuario a cualquier persona que acceda a alguna sección de la Página Web o que navegue por ella.
+ UBISOFT podrá modificar dichas condiciones de uso en todo momento y sin previo aviso. En tal caso, las nuevas condiciones de uso entrarán en vigor desde el momento de su publicación en línea. Recomendamos al usuario que consulte periódicamente las condiciones de uso. De cualquier modo, el simple uso de la Página Web implicará la aceptación de las mismas por parte del usuario
+ Como parte de la campaña promocional del videojuego "Watch Dogs", la Página Web ofrece al usuario la posibilidad de consultar datos públicos existentes de tres ciudades europeas: París, Londres y Berlín. La Página Web no tiene carácter científico, sino que se ha diseñado exclusivamente con fines de ocio, por lo que la información reflejada no es exhaustiva y no todos los datos están actualizados. Las fuentes de datos utilizadas para su elaboración aparecen citadas en la pestaña "Fuentes - Créditos", donde también figura la fecha de su última actualización.

+ + 3 - Condiciones de uso de la página web
+ La Página Web está destinada a un uso estrictamente privado por parte de particulares. Queda terminantemente prohibido cualquier uso de la misma con fines comerciales, publicitarios o profesionales.
+ Al acceder a la Página Web, el usuario se compromete a cumplir las presentes condiciones de uso y declara conocer la capacidad y las prestaciones técnicas de su conexión a Internet, así como disponer de cualquier equipo y programa necesarios para navegar por Internet. El usuario eximirá a UBISOFT de toda responsabilidad ante cualquier uso ilegal, inadecuado y/o no autorizado que se haga de la información disponible a través de la Página Web.
+ UBISOFT se reserva el derecho a cerrar la Página Web o a eliminar o modificar, de pleno derecho, determinadas funciones de la misma, sin previo aviso y sin obligación de indemnización.
+ Para garantizar un uso óptimo de la página web, el usuario deberá activar los parámetros de JavaScript dentro de la configuración de su explorador de Internet.

+ + 4 – Límites de uso
+ Queda prohibido copiar, vender, explotar, publicar, difundir, reproducir, representar y/o adaptar el contenido previamente existente de la Página Web mediante su uso público o privado e independientemente de sus fines.

+ + 5 – Propiedad intelectual
+ Las animaciones, la música, las fotografías, los artículos, los textos, los dibujos, las ilustraciones, los programas y la iconografía, así como cualquier otra obra que figure en la Página Web, están protegidos por derechos de propiedad intelectual y son propiedad de UBISOFT y/o de sus socios, en su caso. Con respecto a los datos, en la pestaña "Fuentes - Créditos" se menciona el origen de los mismos y, en determinados casos, el titular de los derechos de propiedad intelectual.
+ A tal efecto, el usuario se compromete a no realizar ninguna de las operaciones que se mencionan a continuación, sin carácter restrictivo: descargar, extraer, almacenar, utilizar, reproducir, vender, comunicar, representar, difundir, adaptar y/o tomar prestados contenidos protegidos por derechos de propiedad intelectual, directa o indirectamente y sea cual sea el tipo de soporte, medio o método utilizado, sin autorización expresa de UBISOFT o de los titulares de dichos derechos especificados en la Página Web.
+ No se concederá al usuario de la Página Web ninguna licencia ni ninguna autorización que le permita ejercer ningún derecho de propiedad intelectual.
+ En caso de incumplir las presentes disposiciones, el usuario se expondrá a las correspondientes sanciones civiles y penales contempladas por las leyes aplicables en la materia.

+ + 6 – Cookies/datos personales
+ Google Analytics
+ CEsta página web utiliza Google Analytics, un servicio de análisis de estadísticas de páginas web prestado por Google Inc. (en adelante, "Google"). Google Analytics utiliza las denominadas cookies: archivos de texto que se instalan en el ordenador del usuario para que la página web pueda analizar el uso que este hace de la misma. Google transferirá los datos generados a partir de las cookies en relación con el uso de la página web (incluida la dirección IP) a servidores ubicados en Estados Unidos, donde quedarán almacenados. Google utilizará dicha información para evaluar el uso realizado de la página web, elaborar informes sobre la actividad de la misma destinados a su editor y prestar otros servicios relacionados con dicha actividad y con el uso de Internet. Google podrá comunicar datos a terceros en caso de estar obligado legalmente a ello o cuando el procesamiento de dichos datos corra a cargo de terceros en nombre de Google, incluido, entre ellos, el editor de la página web. Google no cotejará la dirección IP del usuario con ningún otro dato del que disponga. El uso de cookies puede desactivarse seleccionando los parámetros correspondientes de la configuración del explorador. No obstante, dicha desactivación podría impedir el funcionamiento correcto de algunas funciones de la página web. Al utilizar esta página web, el usuario autoriza expresamente que Google pueda procesar sus datos en los supuestos y con los fines anteriormente descritos.

+ Facebook
+ Esta página web utiliza Facebook Connect. Para poder usar esta función de manera óptima, se instalarán cookies en su ordenador.
+ Si desea obtener más información sobre las cookies de Facebook, puede consultar la siguiente página: www.facebook.com/help/cookies

+ + Datos personales
+ En determinados supuestos, la Página Web mostrará datos publicados por los usuarios en las páginas web de Facebook, Twitter, Flickr, Foursquare e Instagram.
+ Cualquier reclamación relativa al carácter público de los datos reproducidos en la Página Web (y extraídos de una de las páginas mencionadas anteriormente) deberá remitirse a dicha página en cuestión (Facebook Twitter, Flickr, Foursquare o Instagram, según el caso) o bien resolverse modificando los parámetros de la cuenta personal del usuario, sin que Ubisoft pueda asumir ninguna responsabilidad al respecto. Ubisoft únicamente se compromete a reflejar en la Página Web, lo antes posible, cualquier modificación de los parámetros de confidencialidad que el usuario haya realizado en una de las páginas anteriormente mencionadas.
+ Ubisoft no recopilará ni almacenará datos personales en archivos informáticos.

+ + 7 - Garantías
+ La página web se pone a disposición del usuario tal como aparece publicada. Ubisoft no asumirá ninguna responsabilidad ni ofrecerá ninguna garantía en relación con el uso o el resultado del uso de la página web en términos de adecuación, exactitud, exhaustividad, fiabilidad, seguridad u otros.
+ Dentro de los límites establecidos por las leyes aplicables, Ubisoft se exime de toda responsabilidad en cuanto a la satisfacción del usuario o la capacidad de la página web para responder a un uso determinado. Además, Ubisoft no garantiza que la página web, incluidos los servidores y programas necesarios para su funcionamiento, presten servicio ininterrumpidamente o sin errores, fallos de programación, virus o elementos perjudiciales, ni que dichos errores, fallos de programación, virus o elementos perjudiciales puedan corregirse.
+ Por último, Ubisoft no ofrecerá ninguna garantía en relación con el carácter exacto, completo o actualizado de la información, los contenidos y/o los elementos disponibles a través de la página web. En virtud de lo anterior, Ubisoft no proporcionará ninguna garantía a los usuarios ni asumirá ninguna responsabilidad hacia los mismos en relación con las propias acciones que lleven a cabo.
+ El usuario correrá con todos los gastos y asumirá todos los riesgos derivados del uso de la página web. El usuario asumirá todo riesgo vinculado a la inversión de tiempo y esfuerzo, la pérdida de datos (en especial, cualquier dato relacionado con el juego), los errores, la pérdida de información comercial o cualquier otra circunstancia que sea consecuencia del uso de la Página Web.
+ El usuario se compromete a eximir de responsabilidad a UBISOFT y a BETC DIGITAL ante cualquier acción legal iniciada contra dichas empresas o ante cualquier denuncia presentada en contra de las mismas por parte de terceros y derivada del uso de la Página Web realizado por el usuario, o mediante su conexión, en circunstancias que incumplan las condiciones de uso.
+ Dicha exención de responsabilidad se aplicará asimismo al pago de cualquier cantidad que UBISOFT y BETC DIGITAL estén obligadas a abonar por cualquier concepto, incluidos los honorarios de abogados y tasas judiciales reconocidos o dictados. El uso de la Página Web no implica ninguna garantía de ningún tipo.

+ + 8– Leyes aplicables
+ Las presentes condiciones de uso se regirán por las leyes francesas.
+ Cualquier litigio o reclamación se someterá exclusivamente a la jurisdicción de los tribunales franceses, aun en caso de pluralidad de demandados o citación en garantía.

+ + 9 - Créditos
+ Esta página web ha sido diseñada y elaborada por BETC DIGITAL.

+ + La página web no está patrocinada en ningún caso por Facebook, Twitter, Flickr, Foursquare o Instagram, ni gestionada, autorizada o vinculada de ningún modo a dichas páginas.
]]> +
+
+ + Por consiguiente, Ubisoft no puede garantizar el carácter exhaustivo de la información proporcionada en esta web. La fecha de actualización más reciente de la información de esta web aparece indicada junto con la fuente correspondiente.
+ Los proveedores de la información no han tomado parte en el desarrollo de la web, por lo que no pueden garantizar de ningún modo la calidad ni la precisión de la información proporcionada.

+ + Se anima a los usuarios de la web a consultar las fuentes y las licencias asociadas para obtener más detalles sobre la información proporcionada.


+ + + PARÃS
+ > TRANSPORTE
+ > METRO
+ Frecuencia y circulación de trenes
+ Fecha: 19/04/2013
+ Fuente = RATP http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/offre-transport-de-la-ratp-format-gtfs.html?tx_icsoddatastore_pi1%5BreturnID%5D=38
+ Licencia abierta de ODbL: http://opendatacommons.org/licenses/odbl/1.0/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/paris_gtfs.sql.zip.zip

+ + Ubicación de estaciones de metro
+ Fecha: 18/12/2012
+ Fuente: RATP http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/positions-geographiques-des-stations-du-reseau-ratp.html
+ Licencia abierta de Etalab:
+ http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + Número de pasajeros por día y estación
+ Fecha: 31/07/2012
+ Fuente: RATP http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/trafic-annuel-entrant-par-station-2011.html
+ Licencia abierta de Etalab: http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > SISTEMA DE ALQUILER DE BICIS
+ Ubicación de estaciones y disponibilidad de bicis
+ Fecha: 30/05/2013 (tiempo real, actualizado cada 10 minutos)
+ Fuentes: JC Decaux https://developer.jcdecaux.com
+ Licencia abierta de Etalab: https://developer.jcdecaux.com/#/opendata/licence

+ + > RED
+ > SERVICIO DE INTERNET
+ Ubicación
+ Fecha: abril de 2013
+ Fuente: Orangehttp://www.orange.com/fr/content/download/3259/28413/version/6/file/PODIavril2013.pdf + Con la autorización de Orange.
+ París / Ubicación de MDF:
+ La ubicación de los Main Distribution Frames (MDF) aparece señalada por sus nombres y barrios, y por consiguiente, son aproximados.

+ + Número aproximado de abonados
+ Fecha: 2013
+ Fuente: número aproximado de abonados. Degrouptest http://www.degroupnews.com/carte-nra-adsl/ile-de-france/paris/
+ Crédito: datos proporcionados por DegroupTest.com.

+ + > ROUTERS WIFI
+ Fecha: 12/04/2012
+ Fuente: Parisdata / OpenData París - Ayuntamiento de París http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=125&portlet_id=106
+ Licencia de ODbL - Ciudad de París: http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/paris_wifi.csv

+ + > MÓVIL
+ Antenas repetidoras / Tipo de antena
+ Fecha: 22/04/2013
+ Fuente: ANFR http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licencia : http://www.anfr.fr/fr/mentions-legales.html

+ + Campos electromagnéticos / Fuerza del campo
+ Fecha: 22/04/2013
+ Fuente: ANFR http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licencia: http://www.anfr.fr/fr/mentions-legales.html

+ + > DISPOSITIVOS URBANOS
+ > CAJEROS AUTOMÃTICOS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org//
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/paris_dab.csv

+ + > CARTELES PUBLICITARIOS: Colocación y número de personas que lo ven
+ Fecha: 2013
+ Fuente: Clear Channel Francia
+










+ + > SEMÃFOROS
+ Fecha: 12/04/2011
+ Fuente: Parisdata / OpenData París - Ciudad de París http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=103&portlet_id=106
+ Licencia de ODbL - Ciudad de París http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/paris_signals.csv

+ + > RADARES
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/paris_radars.csv

+ + + > ASEOS PÚBLICOS
+ Fecha: 04/04/2011
+ Fuente: Parisdata / OpenData París - Ayuntamiento de París http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=93&portlet_id=106
+ Licencia de ODbL - Ciudad de París http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Descarga el documento adaptado: ttp://wearedata.watchdogs.com/assets/csv/paris_toilets.csv

+ + > CÃMARAS DE VIDEOVIGILANCIA
+ Fecha: 12/04/2012
+ Fuente: Comisión de Policía de París http://www.data.gouv.fr/DataSet/551635?xtmc=videoprotection&xtcr=1
+ Licencia abierta: https://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > ESTADÃSTICAS POR BARRIOS
+ > SALARIO MENSUAL
+ Fecha: 2010
+ Fuente: INSEE, Dads (datos sociales), Expediente de empleados en el lugar de residencia http://www.insee.fr/fr/themes/detail.asp?reg_id=99&ref_id=base-cc-salaire-net-horaire-moyen
+ Licencia: http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > ÃNDICE DE DESEMPLEO
+ Fecha: 2009/2011
+ Fuentes: INSEE, registro de estado civil y estimación de población a 1 de enero, uso principal de RP2009 y RP1999http://www.insee.fr/fr/bases-de-donnees/esl/comparateur.asp?codgeo=arm-75101
+ Licencia: http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > ÃNDICE DE DELITOS
+ Fecha: 2010
+ Fuentes: Comisión de Policía / ONDRP (Cuerpo Nacional Francés de Supervisión de la Delincuencia y las Respuestas Penales) Estado de procesamiento 4001 para la ciudad de París en 2010, DCPJ (Dirección Central de Policía Judicial Francesa) / Procesamiento ONDRP
+ Licencia: http://www.inhesj.fr/sites/default/files/RA2012/Licence-Ouverte-Open-Licence.pdf
+ Crédito: Estado Anual 4001, DCPJ / Procesamiento ONDRP

+ + > CONSUMO DE ELECTRICIDAD POR BARRIO
+ Fecha: 2005
+ Fuentes: Instituto de Planificación y Urbanismo Región de Île-de-France. Datos procedentes de una simulación realizada por AirParif y mapeada por el IAU-îdF.http://www.iau-idf.fr/cartes/cartes-et-fiches-interactives/visiau-energie-center.html
+ Licencia: © IAU-Île-de-France - Centro Energético Visiau http://www.iau-idf.fr/fileadmin/user_upload/SIG/cartes_telecharge/visiau/Conditions_utilisation_Visiau.pd

+ + LONDRES
+ + > MÓVIL
+ Ubicación de las antenas repetidoras / tipo de antena
+ Fecha: 2012
+ Fuente : http://www.sitefinder.ofcom.org.uk
+ Licencia: © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + Campos electromagnéticos / Fuerza del campo
+ Fecha: desde 2008 hasta 2011
+ Fuente: http://stakeholders.ofcom.org.uk/sitefinder/mobile-base-station-audits
+ Licencia: © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + > DISPOSITIVOS URBANOS
+ > CAJEROS AUTOMÃTICOS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap colaboradores
+ Licencia de ODbL http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/london_atms.csv

+ + > SEMÃFOROS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap colaboradores
+ Licencia de ODbL http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/london_signals.csv

+ + > RADARES
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap colaboradores
+ Licencia de ODbL http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/london_radars.csv

+ + > ASEOS PÚBLICOS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ © OpenStreetMap colaboradores
+ Licencia de ODbL http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/london_toilets.csv


+ + > ESTADÃSTICAS POR BARRIOS
+ > SALARIO MENSUAL
+ Fecha: 2011
+ Fuente: Instituto Nacional de Estadística. Encuesta Anual de Estructura Salarial, 2011. Resultados revisados (SOC 2010), Tabla 8 - Lugar de residencia según autoridad local.
+ http://www.ons.gov.uk/ons/publications/re-reference-tables.html?edition=tcm%3A77-280145
+ Licencia: Adaptación de datos provenientes del Instituto Nacional de Estadística, bajo licencia de Open Government Licence v.1.0
+ http://www.ons.gov.uk/ons/site-information/information/creative-commons-license/index.html

+ + > ÃNDICE DE DESEMPLEO
+ Fecha: Oct. 2010 - Sep. 2011
+ Autor: Equipo de exclusión social área metropolitana, Londres. + Fuentes: Unidad de Inteligencia Metropolitana de Londres, basado en el modelo de la ONS de datos de desempleo en áreas locales, derivado de los datos de la Encuesta Anual de Población y de Demandantes de Empleo.
+ http://lseo.org.uk/datastore/package/unemployment-london-2012
+ Licencia: Open Government Licence v.1.0 http://www.nationalarchives.gov.uk/doc/open-government-licence/

+ + > ÃNDICE DE DELITOS
+ Fecha: 2011/2012
+ Fuentes: Unidad de Inteligencia Metropolitana de Londres.
+ Servicio de Policía Metropolitana http://data.london.gov.uk/datastore/package/crime-rates-borough
+ via http://data.london.gov.uk/datastore/package/london-borough-profiles
+ Datos correctos solo para abril de 2013.

+ + > CONSUMO ELÉCTRICO
+ Fecha: 2011
+ Fuentes: Departamento de Energía y Cambio Climático http://data.london.gov.uk/datastore/package/electricity-consumption-borough
+ Licencia: derechos de autor de la Corona.http://www.nationalarchives.gov.uk/doc/open-government-licence/


+ + BERLÃN
+ > TRANSPORTE
+ > METRO
+ Frecuencia y circulación de trenes
+ Fecha: 2012
+ Fuente: Verkehrsverbund Berlin-Brandenburg http://daten.berlin.de/datensaetze/vbb-fahrplan2012
+ Licencia: http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + Ubicación de las estaciones
+ Fecha: 2012
+ Fuente: Verkehrsverbund Berlin-Brandenburg. http://datenfragen.de/openvbb/Bahnhoefe_mit_Zugangskoordinaten_GK4_lon-lat_Auswahl.xlsx
+ Licencia: http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > SISTEMA DE ALQUILER DE BICIS
+ Ubicación de las estaciones
+ Fecha: 2013
+ Fuente: basado en OpenStreetMaphttp://www.openstreetmap.org/
+ Licencia: con el permiso de Deutsche Bahn © OpenStreetMap colaboradores. Licencia de ODbL http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_bicycles.csv

+ + > RED
+ > SERVICIO DE INTERNET
+ Fecha: 2013
+ Fuente: http://selke.de/hvt-standorte/
+ Con la autorización de Olaf Selke.

+ + > ROUTERS WIFI
+ Fecha: 20/11/2012
+ Fuente: Senatsverwaltung für Wirtschaft, Technologie und Forschung http://daten.berlin.de/datensaetze/wlan-standorte-berlin
+ Licencia: http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > MÓVIL
+ Ubicación de las antenas repetidoras
+ Fecha: 05/2013
+ Fuente: Proyecto Open Cell ID http://opencellid.de/
+ Licencia: CC-BY-SA - http://creativecommons.org/licenses/by-sa/2.0/de/deed.en
+ + > DISPOSITIVOS URBANOS
+ > CAJEROS AUTOMÃTICOSS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org/
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_atms.csv

+ + > SEMÃFOROS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_signals.csv
+ + > RADARES
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_radars.csv
ASEOS PÚBLICOS
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_toilets.csv
+ + > CÃMARAS DE VIDEOVIGILANCIA
+ Fecha: 2013
+ Fuente: Openstreetmap http://www.openstreetmap.org
+ Licencia: © OpenStreetMap colaboradores http://www.openstreetmap.org/copyright
+ Licencia de ODbL: http://opendatacommons.org/licenses/odbl/
+ Descarga el documento adaptado: http://wearedata.watchdogs.com/assets/csv/odbl/berlin_cctvs.csv
ESTADÃSTICAS POR BARRIOS
+ > SALARIO MENSUAL
+ Fuente: Bundesagentur für Arbeit; Statistik-Service Ost.
+ Créditos: con la autorización de Bundesagentur für Arbeit; Statistik-Service Ost.

+ + > ÃNDICE DE DESEMPLEO
+ Fuente: Bundesagentur für Arbeit; Statistik-Service Ost.
+ Créditos: con la autorización de Bundesagentur für Arbeit; Statistik-Service Ost.
+ + > ÃNDICE DE DELITOS
+ Fecha: 2011/2012
+ Fuente: http://www.berlin.de/polizei/kriminalitaet/pks.html/a>
+ Mención: "Nachdruck und sonstige Vervielfältigungen - auch auszugsweise - nur mit Quellenangabe gestattet". Con la autorización de Der Polizeipräsident de Berlín.

+ + > CONSUMO ELÉCTRICO
+ Fecha: 2008
+ Fuente: Stromnetz Berlin GmbH Historie ab 2008 - Jahreshöchstlast der Netzlast (Berlín)
+
http://netzdaten-berlin.de/web/guest/suchen/-/details/historie-ab-2008--jahreshochstlast-der-netzlast-berlin
+ Licencia : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + SOCIAL
+ > FOURSQUARE
+ https://developer.foursquare.com/

+ + > FLICKR
+ Licencia: creative commons
+ Acreditación
+ http://creativecommons.org/licenses/by/2.0/
+ Acreditación-ShareAlike
+ http://creativecommons.org/licenses/by-sa/2.0/
+ Acreditación-NoDerivs
+ http://creativecommons.org/licenses/by-nd/2.0/

+ + > TWITTER
+ https://dev.twitter.com/terms/display-requirements
+ https://dev.twitter.com/terms/api-terms

+ + > INSTAGRAM
+ http://instagram.com/developer/]]> +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Estadísticas de la zona]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/assets/xml/es-ES/landing.xml b/assets/xml/es-ES/landing.xml new file mode 100644 index 0000000..9c73ddf --- /dev/null +++ b/assets/xml/es-ES/landing.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/xml/fr-FR/content.xml b/assets/xml/fr-FR/content.xml new file mode 100644 index 0000000..a5dff3e --- /dev/null +++ b/assets/xml/fr-FR/content.xml @@ -0,0 +1,716 @@ + + + + + + + + + + + + + + + + + + + + + + + / heure]]> + + + / m]]> + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + <![CDATA[BESOIN D'AIDE ?]]> + sur l'utilisation de ce site]]> + + + + + <![CDATA[PERDU DANS LES DONNÉES ?]]> + + + + + + + <![CDATA[A LA RECHERCHE D'UN LIEU ?]]> + + + + <![CDATA[INTÉRESSÉ PAR DES DONNÉES EN PARTICULIER ?]]> + Les données géolocalisées disponibles recueillies par Watch_Dogs WeareData le sont de manière non exhaustive : nous ne pouvons en effet utiliser que les informations pour lesquelles les sources correspondantes nous ont accordé l’autorisation.]]> + + + <![CDATA[ENVIE D'EN SAVOIR PLUS SUR LA ZONE EXPLORÉE ?]]> + + + + <![CDATA[CURIEUX DE SAVOIR CE QUE FONT LES GENS ACTUELLEMENT CONNECTÉS ?]]> + + + + <![CDATA[ENVIE D'ALLER VOIR AILLEURS ?]]> + + + + <![CDATA[A VOUS D'EXPLORER !]]> + + + + + <![CDATA[À propos]]> + À PROPOS DE WATCH_DOGS WeareData
+ Dans Watch_Dogs, la ville de Chicago est gérée par le ctOS, un système de contrôle informatisé hautement perfectionné. Ce réseau utilise les données qui lui sont transmises pour contrôler l’ensemble des infrastructures urbaines et résoudre les problèmes complexes liés à la circulation routière, la lutte contre la délinquance, la gestion de l’électricité, etc. + Mais aujourd’hui, cette situation n’a plus rien de fictif : les villes « intelligentes » sont une réalité. Chaque jour, une quantité incalculable de données sont recueillies et traitées avant d’être rendues publiques et accessibles à tous.

+ Watch_Dogs WeareData est le premier site Internet à rassembler en un même endroit les données publiques de Paris, Londres et Berlin. Chacune de ces villes a été recréée sur une carte en 3D, de manière à permettre aux utilisateurs du site de découvrir en temps réel comment les villes modernes d’aujourd’hui organisent et traitent ces données. Le site donne également accès à diverses informations sur les habitants de ces villes, par le biais de leur activité sur les médias sociaux.

+ Ce que vous allez découvrir ici est la pure réalité.
+ Les données géolocalisées disponibles recueillies par Watch_Dogs WeareData le sont de manière non exhaustive : nous ne pouvons en effet utiliser que les informations pour lesquelles les sources correspondantes nous ont accordé l’autorisation.
+ Cependant, comme vous pourrez le constater, il s’agit déjà d’une quantité de données impressionnante.
+ Vous aurez également la possibilité de savoir quels sont les contenus du site les plus consultés par les autres utilisateurs en vous connectant avec votre compte Facebook.

+ Si ce sujet vous intéresse, nous vous invitons à nous faire part de vos commentaires sur le site et sur notre monde toujours plus connecté. Chacun d’entre nous a son rôle à jouer et est libre d’exprimer ses opinions. Restez connectés et rejoignez la conversation sur les médias sociaux via la page Facebook de Watch_Dogs ou sur Twitter en utilisant le hashtag #watchdogs !


+ À PROPOS DE WATCH_DOGS, LE JEU VIDÉO
+ Watch_Dogs va vous plonger dans une recréation de Chicago à la fois vivante, vibrante et entièrement connectée. Vous incarnerez Aiden Pearce, un justicier d’un nouveau genre, pouvant utiliser son smartphone pour pirater le ctOS (le système de contrôle informatisé de Chicago) et prendre le contrôle de pratiquement toutes les infrastructures de la ville. Aiden pourra ainsi accéder aux innombrables caméras de vidéosurveillance, télécharger des informations personnelles pour localiser une cible, contrôler les feux de circulation ou les rames de métro pour échapper à ses poursuivants, et bien plus encore ! La ville de Chicago est devenue l’arme ultime… Pour rester connecté à Watch_Dogs, nous vous invitons à visiter le site web officiel, la page Facebook et le compte Twitter du jeu !
+ Watch_Dogs sera disponible dès Noël 2013 dans toute la zone Europe/Moyen-Orient/Asie sur PlayStation®3, console de jeu et de divertissement Xbox 360® de Microsoft, console Wii U™ de Nintendo et PC Windows, ainsi qu’à la sortie de la PlayStation®4 et de la console de jeu et de divertissement Xbox One de Microsoft.


+ À PROPOS D’UBISOFT
+ Ubisoft est l’un des principaux acteurs du secteur de la production, de l’édition et de la distribution à l’international de produits de divertissement interactifs, ayant connu un développement considérable grâce à une gamme de produits diversifiée et à des partenariats stratégiques efficaces. Présent dans 26 pays et menant ses activités dans plus de 55 pays, Ubisoft a pour objectif principal de proposer aux consommateurs des jeux vidéo innovants et de très haute qualité. Au cours de l’exercice 2012-13, Ubisoft a généré un chiffre d’affaires de 1 256 millions d’euros. Pour plus d’informations, nous vous invitons à consulter le site http://www.ubisoftgroup.com




+ Merci d’utiliser Watch_Dogs WeareData. Nous espérons que vous apprécierez cette expérience d’un nouveau type !
+ L’équipe Ubisoft.]]> +
+
+ + <![CDATA[Mentions légales]]> + + + 1 - Identification de la société :
+ Éditeur : UBISOFT EMEA
+ Adresse siège social : 28 rue Armand Carrel 93108 Montreuil FRANCE
+ Numéro de téléphone : +33 (0)1 48 18 50 00
+ Capital social: SARL CAPITAL 11959 727 EUROS
+ RCS 432 573 624 RCS BOBIGNY
+ APE : 5821Z / Édition de jeux électroniques
+ Hébergeur : BETC DIGITAL - 47 bis rue des Vinaigriers 75010 Paris – 01 56 41 35 00

+ + 2 – Objet – Présentation du Site
+ Les présentes conditions d'utilisation du site « Watch Dogs Wearedata » accessible à l’adresse http://wearedata.watchdogs.com, ci-après dénommé le "Site", ont pour objet de définir les modalités et conditions d'utilisation du Site par l'utilisateur. Est utilisateur toute personne qui se connecte sur une page du Site ou qui navigue sur le Site.
+ Les conditions d'utilisation peuvent être modifiées à tout moment par UBISOFT et ce sans préavis. Dans ce cas, les conditions d'utilisation modifiées entrent en vigueur à compter de leur mise en ligne. Nous recommandons à l'utilisateur de lire régulièrement les conditions d'utilisation. En tout état de cause, l'utilisateur est réputé les avoir acceptées du simple fait de l'utilisation du Site.
+ Dans le cadre de la promotion du jeu vidéo « Watch Dogs » le Site propose à l’utilisateur une expérience de consultation des données publiques disponibles sur trois villes européennes : Paris, Londres et Berlin. Le Site n’a pas un but scientifique mais a été créé uniquement dans un but de divertissement, il n’est pas exhaustif et toutes les données ne sont pas à jour. Les sources des données ayant permis sa réalisation sont citées dans l’onglet « Sources - Crédits » ainsi que leur date de leur dernière mise à jour.

+ + 3 - Conditions d’utilisation du site
+ Le Site est réservé aux particuliers pour un usage strictement privé. Tout usage à des fins commerciales, promotionnelles ou professionnelles est strictement prohibé.
+ En accédant au Site, l'utilisateur s'engage à se conformer aux présentes conditions d'utilisation et déclare connaître les capacités et performances techniques de son accès internet et disposer de tous matériels et logiciels nécessaires à la navigation sur Internet. L'utilisateur garantit UBISOFT contre toute utilisation illicite, non conforme et/ou non autorisée des informations accessibles via ce Site.
+ UBISOFT se réserve le droit de clôturer le Site, supprimer ou modifier de plein droit, certaines des fonctionnalités du Site, sans préavis ni indemnité.
+ Pour une utilisation optimale du site, l'utilisateur doit configurer son navigateur Internet de telle manière à ce que les paramètres JavaScript soient activés.

+ + 4 – Limites d’utilisation
+ Il est interdit de copier, vendre, exploiter, publier, diffuser, reproduire, représenter et/ou adapter dans le cadre d'un usage public ou privé et quel que soit le but recherché, le contenu préexistant du Site.

+ + 5 – Propriété intellectuelle
+ Les animations, musiques, photographies, articles, textes, dessins, illustrations, logiciels et iconographies, ainsi que toutes œuvres qui apparaissent sur le Site sont protégés par un droit de propriété intellectuelle et sont la propriété d’UBISOFT et/ou de ses partenaires le cas échéant. Concernant les données l’onglet « Sources - Crédits » mentionne l’origine et éventuellement le titulaire des droits de propriété pour chacune.
+ A ce titre, l’utilisateur s’engage sans que cette liste ne soit limitative, à ne pas télécharger, extraire, stocker, utiliser, reproduire, vendre, communiquer, représenter, diffuser, adapter et/ou emprunter des contenus protégés par un droit de propriété intellectuelle, directement ou indirectement, sur un support quelconque, par tout moyen et sous toute forme que ce soit, sans autorisation expresse d’UBISOFT ou des titulaires identifiés sur le Site.
+ Aucune licence ou autre droit d’utilisation d’un quelconque droit de propriété intellectuelle n’est consenti à l’utilisateur du Site.
+ La violation de ces dispositions soumet l’utilisateur responsable aux peines pénales et civiles prévues par la législation applicable en la matière.

+ + 6 – Cookies/Données personnelles
+ Google Analytics
+ Ce site utilise Google Analytics, un service d'analyse de site internet fourni par Google Inc. («Google»). Google Analytics utilise des cookies, qui sont des fichiers texte placés sur l’ordinateur de l’utilisateur, pour aider le site internet à analyser l'utilisation du site par ses utilisateurs. Les données générées par les cookies concernant l’utilisation du site (y compris l’adresse IP) seront transmises et stockées par Google sur des serveurs situés aux Etats-Unis. Google utilisera cette information dans le but d'évaluer l’utilisation du site, de compiler des rapports sur l'activité du site à destination de son éditeur et de fournir d'autres services relatifs à l'activité du site et à l'utilisation d'Internet. Google est susceptible de communiquer ces données à des tiers en cas d'obligation légale ou lorsque ces tiers traitent ces données pour le compte de Google, y compris notamment l'éditeur de ce site. Google ne recoupera pas l’adresse IP de l’utilisateur avec toute autre donnée détenue par Google. L’utilisation de cookies peut être désactivée en sélectionnant les paramètres appropriés du navigateur. Cependant, une telle désactivation pourrait empêcher l'utilisation de certaines fonctionnalités de ce site. En utilisant ce site internet, l’utilisateur consent expressément au traitement de ses données par Google dans les conditions et pour les finalités décrites ci-dessus.

+ Facebook
+ Ce site utilise un Facebook Connect. Pour une expérience optimale des cookies sont placés sur votre ordinateur.
+ Pour plus d’information sur les cookies Facebook vous pouvez vous reporter à la page suivante : www.facebook.com/help/cookies

+ + Données personnelles
+ Sous certaines conditions, le Site affiche des données rendues publiques par les utilisateurs auprès des Sites Facebook, Twitter, Flickr, Foursquare, Instagram.
+ Toute contestation relative au caractère public des données reproduites sur le Site (et extraites d’un des sites susmentionnés) doit être adressée audit site (Facebook, Twitter, Flickr, Foursquare ou Instagram selon le cas) ou en modifiant les paramètres du compte personnel de l’utilisateur, sans qu’Ubisoft ne puisse être responsable. Ubisoft s’engage uniquement à refléter dans les plus brefs délais sur le Site tout changement de paramètre de confidentialité qu’un utilisateur aurait effectué sur l’un des sites susmentionnés.
+ Ubisoft ne collecte, ni ne conserve de données personnelles appelées à figurer dans des fichiers informatiques.

+ + 7 - Garanties
+ Le site est fourni en l'état. Ubisoft ne garantit et ne s’engage pas quant à l’utilisation ou aux résultats de l’utilisation du site, en termes de conformité, d’exactitude, d’exhaustivité, de fiabilité, de sécurité ou autre.
+ Dans les limites autorisées par le droit applicable, Ubisoft rejette toute garantie relative à la satisfaction de l’utilisateur ou à l’aptitude du site à répondre à une utilisation particulière. En outre, Ubisoft n'offre aucune garantie que le site, en ce compris les serveurs et logiciels nécessaires à son opération, seront sans interruption ou sans erreurs, bugs, virus ou éléments néfastes, ni que les erreurs, bugs, virus ou éléments néfastes seront corriges.
+ Enfin, Ubisoft n'offre aucune garantie relative au caractère exact, complet ou actualisé des informations, contenus et/ou des éléments accessibles via le site. De ce fait, Ubisoft n’offre aux utilisateurs aucune garantie et n’assume envers les utilisateurs aucune responsabilité en relation avec leurs propres agissements.
+ L’utilisateur prend à sa charge tous les coûts et tous les risques liés à l'utilisation du site. L’utilisateur assume tous risques liés à une perte de temps, d’efforts, perte de données (notamment, toute données de jeu), erreurs, perte d'informations commerciales ou autre résultant de l'utilisation du Site.
+ L’utilisateur s’engage à garantir UBISOFT et BETC DIGITAL contre toute action qui serait engagée à leur encontre, ou toute plainte qui serait déposée contre elles, par un tiers, du fait de l'utilisation par l’utilisateur, ou sous le contrôle de sa connexion, du Site dans des conditions qui ne seraient pas conformes aux conditions d’usage.
+ Cette garantie couvre toute somme UBISOFT et BETC DIGITAL que seraient tenues de verser à quelque titre que ce soit, y compris les honoraires d'avocat et frais de justice reconnus ou prononcés. L'utilisation du Site n'est assortie d'aucune garantie quelle qu'elle soit.

+ + 8– Droit applicable
+ Les présentes conditions d’utilisation sont soumises au droit français.
+ En cas de litige ou de contestation, seuls les Tribunaux français seront seuls compétents, même en cas de pluralité de défendeurs ou d'appels en garantie.

+ + 9- Crédits
+ Ce site a été conçu et réalisé par BETC DIGITAL

+ + Le site n’est en aucun cas sponsorisé, régi, approuvé ou associé de quelle que manière que ce soit, avec Facebook, Twitter, Flickr, Foursquare, ou Instagram.
]]> +
+
+ + En conséquence Ubisoft ne peut garantir l’exhaustivité des informations mises à disposition sur ce site. La date d’actualisation des informations utilisées sur ce site est indiquée avec la source de chaque donnée.
+ Les fournisseurs des données utilisées n’ont en aucune manière participé à l’élaboration de ce site et ne peuvent en conséquence garantir la qualité et l’exactitude des informations mises à disposition.

+ + Les internautes sont invités à consulter les sources et licences associées pour plus de détails concernant ces informations.


+ + + PARIS
+ > TRANSPORTS
+ > METRO
+ Fréquences et circulation des rames
+ Date : 19/04/2013
+ Source = RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/offre-transport-de-la-ratp-format-gtfs.html?tx_icsoddatastore_pi1%5BreturnID%5D=38
+ Licence ouverte ODbL : http://opendatacommons.org/licenses/odbl/1.0/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/paris_gtfs.sql.zip

+ + Emplacements des stations de métro
+ Date : 18/12/2012
+ Source : RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/positions-geographiques-des-stations-du-reseau-ratp.html
+ Licence ouverte ETALAB:
+ http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + Nombre de passagers par jour et par station
+ Date : 31/07/2012
+ Source : RATP, http://data.ratp.fr/fr/les-donnees/fiche-de-jeu-de-donnees/dataset/trafic-annuel-entrant-par-station-2011.html
+ Licence ouverte Etalab : http://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > VELOS LIBRE SERVICE
+ Emplacements des stations et disponibilité des vélos
+ Date : 30/05/2013 (Temps réel, actualisation toutes les 10 minutes)
+ Sources : JC Decaux, https://developer.jcdecaux.com
+ Licence ouverte Etalab : https://developer.jcdecaux.com/#/opendata/licence

+ + > RESEAU
+ > RELAIS INTERNET
+ Localisation
+ Date : avril 2013
+ Source : Orange, http://www.orange.com/fr/content/download/3259/28413/version/6/file/PODIavril2013.pdf + Avec l'aimable autorisation d'Orange
+ Paris / Localisation des NRA :
+ Les emplacements des NRA sont déduits de leurs noms et arrondissements : ils sont donc approximatifs

+ + Nombre d’abonnés approximatif
+ Date : 2013
+ Source : Nombre d’abonnés approximatif. Degrouptest http://www.degroupnews.com/carte-nra-adsl/ile-de-france/paris/
+ Crédit : Données fournies par DegroupTest.com

+ + > BORNES WIFI
+ Date : 12/04/2012
+ Source: Parisdata / OpenData Paris - Mairie de Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=125&portlet_id=106
+ License ODbL - Ville de Paris : http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/paris_wifi.csv

+ + > MOBILE
+ Antennes relais / Type d’antenne
+ Date : 22/04/2013
+ Source : ANFR http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licence : http://www.anfr.fr/fr/mentions-legales.html

+ + Champs électromagnétiques / Intensité du champ
+ Date : 22/04/2013
+ Source : ANFR, http://www.cartoradio.fr/
+ http://www.cartoradio.fr/cartoradio/web/#lonlat/2.352241/48.856617/4049
+ Licence : http://www.anfr.fr/fr/mentions-legales.html

+ + > MOBILIER URBAIN
+ > DISTRIBUTEURS AUTOMATIQUES DE BILLETS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org//
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ ODbL licence: http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/paris_dab.csv

+ + > PANNEAUX PUBLICITAIRES : Emplacement et nombre de personne exposées
+ Date : 2013
+ Source : Clear Channel France
+










+ + > FEUX DE CIRCULATION
+ Date : 12/04/2011
+ Source : Parisdata / OpenData Paris - Mairie de Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=103&portlet_id=106
+ License ODbL - Ville de Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/paris_signals.csv

+ + > RADARS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/paris_radars.csv

+ + + > TOILETTES PUBLIQUES
+ Date : 04/04/2011
+ Source : Parisdata / OpenData Paris - Mairie de Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?document_id=93&portlet_id=106
+ License ODbL - Ville de Paris http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?page_id=10
+ http://opendata.paris.fr/opendata/document?id=78&id_attribute=48
+ Télécharger le document adapté : ttp://wearedata.watchdogs.com/assets/csv/paris_toilets.csv

+ + > CAMERAS DE VIDEO SURVEILLANCE
+ Date : 12/04/2012
+ Source : Préfecture de Police de Paris http://www.data.gouv.fr/DataSet/551635?xtmc=videoprotection&xtcr=1
+ License ouverte : https://www.data.gouv.fr/Licence-Ouverte-Open-Licence

+ + > STATISTIQUES DE QUARTIER
+ > SALAIRE MENSUEL
+ Date : 2010
+ Source : INSEE, Dads, Fichier Salariés au lieu de résidence http://www.insee.fr/fr/themes/detail.asp?reg_id=99&ref_id=base-cc-salaire-net-horaire-moyen
+ Licence : http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > TAUX DE CHOMAGE
+ Date : 2009/2011
+ Sources : INSEE, état civil et estimations de population au 1er janvier, RP2009 et RP1999 exploitations principales http://www.insee.fr/fr/bases-de-donnees/esl/comparateur.asp?codgeo=arm-75101
+ Licence : http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm

+ + > TAUX DE CRIMINALITE
+ Date : 2010
+ Sources : Préfecture de police / Traitement ONDRP Etat 4001 pour la ville de Paris en 2010, DCPJ / traitement ONDRP
+ Licence : http://www.inhesj.fr/sites/default/files/RA2012/Licence-Ouverte-Open-Licence.pdf
+ Crédit : état 4001 annuel, DCPJ / traitement ONDRP

+ + > CONSOMMATION ELECTRIQUE PAR ARRONDISSEMENTS
+ Date : 2005
+ Sources : Institut d'aménagement et d'urbanisme Île-de-France Données issues de modélisations réalisées par AirParif et territorialisées par l'IAU-îdF. http://www.iau-idf.fr/cartes/cartes-et-fiches-interactives/visiau-energie-center.html
+ Licence : © IAU-Île-de-France - Visiau Energie Center http://www.iau-idf.fr/fileadmin/user_upload/SIG/cartes_telecharge/visiau/Conditions_utilisation_Visiau.pd

+ + LONDRES
+ + > MOBILE
+ Localisations des antennes relais / type d’antenne
+ Date : 2012
+ Source : http://www.sitefinder.ofcom.org.uk
+ Licence : © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + Champs électromagnétiques / Intensité du champ
+ Date : De 2008 à 2011
+ Source : http://stakeholders.ofcom.org.uk/sitefinder/mobile-base-station-audits
+ Licence : © Ofcom http://www.ofcom.org.uk/terms-of-use/

+ + > MOBILIER URBAIN
+ > DISTRIBUTEURS AUTOMATIQUES DE BILLETS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © les contributeurs d’OpenStreetMap
+ License ODbL http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/london_atms.csv

+ + > FEUX DE CIRCULATION
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © les contributeurs d’OpenStreetMap
+ License ODbL http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/london_signals.csv

+ + > RADARS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © les contributeurs d’OpenStreetMap
+ ODbL licence http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/london_radars.csv

+ + > TOILETTES PUBLIQUES
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ © les contributeurs d’OpenStreetMap
+ License ODbL http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/london_toilets.csv


+ + > STATISTIQUES DE QUARTIER
+ > SALAIRE MENSUEL
+ Date : 2011
+ Source : Office for national Statistics Annual Survey of Hours and Earnings, 2011 Revised Results (SOC 2010), Table 8 - Place of Residence by Local Authority
+ http://www.ons.gov.uk/ons/publications/re-reference-tables.html?edition=tcm%3A77-280145
+ Licence : Adapted from data from the Office for National Statistics licensed under the Open Government
+ Licence v.1.0
+ http://www.ons.gov.uk/ons/site-information/information/creative-commons-license/index.html

+ + > TAUX DE CHOMAGE
+ Date : Oct 2010-Sep 2011
+ Auteur : GLA Social Exclusion team
+ Sources : GLA Intelligence Unit, based on ONS Model based unemployment data for local areas, derived using Annual Population Survey and Claimant Count data.
+ http://lseo.org.uk/datastore/package/unemployment-london-2012
+ Licence: Open Government Licence v.1.0 http://www.nationalarchives.gov.uk/doc/open-government-licence/

+ + > TAUX DE CRIMINALITE
+ Date : 2011/2012
+ Sources: GLA Intelligence Unit
+ Metropolitan Police Service http://data.london.gov.uk/datastore/package/crime-rates-borough
+ via http://data.london.gov.uk/datastore/package/london-borough-profiles
+ Data only correct as of April, 2013.

+ + > CONSOMMATION ELECTRIQUE
+ Date : 2011
+ Sources: Department of Energy and Climate Change http://data.london.gov.uk/datastore/package/electricity-consumption-borough
+ Licence : Crown copyright http://www.nationalarchives.gov.uk/doc/open-government-licence/


+ + BERLIN
+ > TRANSPORTS
+ > METRO
+ Fréquences et circulation des rames
+ Date : 2012
+ Source: Verkehrsverbund Berlin Brandenburg http://daten.berlin.de/datensaetze/vbb-fahrplan2012
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + Emplacement des stations
+ Date : 2012
+ Source: Verkehrsverbund Berlin-Brandenburg http://datenfragen.de/openvbb/Bahnhoefe_mit_Zugangskoordinaten_GK4_lon-lat_Auswahl.xlsx
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > VELOS LIBRE SERVICE
+ Emplacements des stations
+ Date : 2013
+ Source : Based on OpenStreetMap http://www.openstreetmap.org/
+ Licence: With kind permission from Deutsche Bahn © OpenStreetMap Contributors ODbL Licence http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/berlin_bicycles.csv

+ + > RESEAU
+ > RELAIS INTERNET
+ Date : 2013
+ Source : http://selke.de/hvt-standorte/
+ With kind authorization from Olaf Selke

+ + > BORNES WIFI
+ Date : 20/11/2012
+ Source: Senatsverwaltung für Wirtschaft, Technologie und Forschung http://daten.berlin.de/datensaetze/wlan-standorte-berlin
+ Licence: http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + > MOBILE
+ Localisations des antennes relais
+ Date : 05/2013
+ Source : Open Cell ID Project http://opencellid.de/
+ Licence: CC-BY-SA -http://creativecommons.org/licenses/by-sa/2.0/de/deed.en
+ + > MOBILIER URBAIN
+ > DISTRIBUTEURS AUTOMATIQUES DE BILLETS
+ Date : 2013
+ Source : Openstreetmap http://www.openstreetmap.org/
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté http://wearedata.watchdogs.com/assets/csv/odbl/berlin_atms.csv

+ + > FEUX DE CIRCULATION
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/berlin_signals.csv
+ + > RADARS
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/berlin_radars.csv
TOILETTES PUBLIQUES
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/berlin_toilets.csv
CAMERAS DE VIDEO SURVEILLANCE
+ Date : 2013
+ Source: Openstreetmap http://www.openstreetmap.org
+ Licence : © les contributeurs d’OpenStreetMap http://www.openstreetmap.org/copyright
+ License ODbL : http://opendatacommons.org/licenses/odbl/
+ Télécharger le document adapté : http://wearedata.watchdogs.com/assets/csv/odbl/berlin_cctvs.csv
STATISTIQUES DE QUARTIER
+ > SALAIRE MENSUEL
+ Source : Bundesagentur für Arbeit; Statistik-Service Ost
+ Crédits : With kind authorization from Bundesagentur für Arbeit; Statistik-Service Ost

+ + > TAUX DE CHOMAGE
+ Source : Bundesagentur für Arbeit; Statistik-Service Ost
+ Crédits : With kind authorization from Bundesagentur für Arbeit; Statistik-Service Ost
+ + > TAUX DE CRIMINALITE
+ Date : 2011/2012
+ Sources : http://www.berlin.de/polizei/kriminalitaet/pks.html/a>
+ "Nachdruck und sonstige Vervielfältigungen - auch auszugsweise - nur mit Quellenangabe gestattet" With kind authorization from Der Polizeipräsident in Berlin

+ + > CONSOMMATION ELECTRIQUE
+ Date : 2008
+ Sources : Stromnetz Berlin GmbH Historie ab 2008 - Jahreshöchstlast der Netzlast (Berlin)
+
http://netzdaten-berlin.de/web/guest/suchen/-/details/historie-ab-2008--jahreshochstlast-der-netzlast-berlin
+ Licence : http://creativecommons.org/licenses/by/3.0/de/deed.en

+ + SOCIAL
+ > FOURSQUARE
+ https://developer.foursquare.com/

+ + > FLICKR
+ Licence : creative commons
+ Attribution
+ http://creativecommons.org/licenses/by/2.0/
+ Attribution-ShareAlike
+ http://creativecommons.org/licenses/by-sa/2.0/
+ Attribution-NoDerivs
+ http://creativecommons.org/licenses/by-nd/2.0/

+ + > TWITTER
+ https://dev.twitter.com/terms/display-requirements
+ https://dev.twitter.com/terms/api-terms

+ + > INSTAGRAM
+ http://instagram.com/developer/]]> +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Statistiques du quartier]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/assets/xml/london.xml b/assets/xml/london.xml new file mode 100644 index 0000000..53d2963 --- /dev/null +++ b/assets/xml/london.xml @@ -0,0 +1,89 @@ + + + + + + 10000000 + + + + + 90 + 900 + -1 + -120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/xml/paris.xml b/assets/xml/paris.xml new file mode 100644 index 0000000..9aec439 --- /dev/null +++ b/assets/xml/paris.xml @@ -0,0 +1,94 @@ + + + + + + 30000000 + + + + + 90 + 2000 + -1 + -120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/crossdomain.xml b/crossdomain.xml new file mode 100644 index 0000000..bef4b40 --- /dev/null +++ b/crossdomain.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/db/paris/getMetro/index.txt b/db/paris/getMetro/index.txt new file mode 100644 index 0000000..0226b70 --- /dev/null +++ b/db/paris/getMetro/index.txt @@ -0,0 +1 @@ +{"station":{"1408":{"id":"1408","ref":"2025816120","name":"Porte d'Orl\u00e9ans (G\u00e9n\u00e9ral Leclerc)","lat":"48.822601","lng":"2.324806","passengers":"1008"},"1377":{"id":"1377","ref":"175753322","name":"Vavin","lat":"48.842003","lng":"2.329003","passengers":"235"},"1424":{"id":"1424","ref":"3103087595","name":"Porte d'Italie","lat":"48.818935","lng":"2.359856","passengers":"269"},"1409":{"id":"1409","ref":"3549826816","name":"Bel-Air","lat":"48.841896","lng":"2.401206","passengers":"248"},"1393":{"id":"1393","ref":"3332581557","name":"Ch\u00e2tillon Montrouge","lat":"48.810314","lng":"2.301248","passengers":"687"},"1378":{"id":"1378","ref":"2540754978","name":"Campo-Formio","lat":"48.835777","lng":"2.358153","passengers":"129"},"1432":{"id":"1432","ref":"1322902301","name":"Ecole V\u00e9t\u00e9rinaire de Maisons-Alfort","lat":"48.815151","lng":"2.420756","passengers":"354"},"1425":{"id":"1425","ref":"3345569136","name":"Libert\u00e9","lat":"48.825836","lng":"2.406926","passengers":"273"},"1417":{"id":"1417","ref":"3567429859","name":"Porte Dor\u00e9e","lat":"48.835438","lng":"2.406018","passengers":"281"},"1410":{"id":"1410","ref":"1314938315","name":"Les Gobelins","lat":"48.836613","lng":"2.351642","passengers":"402"},"1401":{"id":"1401","ref":"1726955494","name":"La D\u00e9fense (Grande Arche)","lat":"48.891933","lng":"2.237883","passengers":"1455"},"1394":{"id":"1394","ref":"276344470","name":"Esplanade de la D\u00e9fense","lat":"48.887844","lng":"2.250442","passengers":"916"},"1386":{"id":"1386","ref":"2177031349","name":"Sully-Morland","lat":"48.851032","lng":"2.361867","passengers":"168"},"1379":{"id":"1379","ref":"3494453711","name":"Chevaleret","lat":"48.834408","lng":"2.367165","passengers":"315"},"1440":{"id":"1440","ref":"129206825","name":"Porte de Montreuil","lat":"48.853451","lng":"2.410434","passengers":"506"},"1433":{"id":"1433","ref":"3110610795","name":"Buzenval","lat":"48.851734","lng":"2.401025","passengers":"194"},"1429":{"id":"1429","ref":"737890386","name":"Charenton-Ecoles","lat":"48.821365","lng":"2.414074","passengers":"312"},"1426":{"id":"1426","ref":"714987642","name":"Rue des Boulets","lat":"48.852142","lng":"2.389143","passengers":"280"},"1421":{"id":"1421","ref":"2398034976","name":"Porte de Charenton","lat":"48.832527","lng":"2.399701","passengers":"100"},"1418":{"id":"1418","ref":"4158739832","name":"Voltaire (L\u00e9on Blum)","lat":"48.857876","lng":"2.379884","passengers":"554"},"1414":{"id":"1414","ref":"1736981303","name":"Saint-Ambroise","lat":"48.861214","lng":"2.374098","passengers":"289"},"1411":{"id":"1411","ref":"2196409879","name":"Porte de Versailles","lat":"48.832462","lng":"2.288003","passengers":"659"},"1405":{"id":"1405","ref":"1202011076","name":"Censier-Daubenton","lat":"48.840534","lng":"2.351429","passengers":"395"},"1402":{"id":"1402","ref":"555784063","name":"Gallieni (Parc de Bagnolet)","lat":"48.863335","lng":"2.415683","passengers":"663"},"1398":{"id":"1398","ref":"946374679","name":"Dugommier","lat":"48.838913","lng":"2.388953","passengers":"283"},"1395":{"id":"1395","ref":"3761260163","name":"Avron","lat":"48.850979","lng":"2.397980","passengers":"201"},"1390":{"id":"1390","ref":"1227645826","name":"Alexandre-Dumas","lat":"48.856174","lng":"2.394990","passengers":"412"},"1387":{"id":"1387","ref":"3780921823","name":"Ledru-Rollin","lat":"48.851192","lng":"2.375945","passengers":"402"},"1383":{"id":"1383","ref":"259791766","name":"Les Sablons (Jardin d'acclimatation)","lat":"48.880901","lng":"2.272539","passengers":"570"},"1380":{"id":"1380","ref":"986262698","name":"Pont Marie (Cit\u00e9 des Arts)","lat":"48.853310","lng":"2.357459","passengers":"167"},"1444":{"id":"1444","ref":"1867201487","name":"Croix-de-Chavaux (Jacques Duclos)","lat":"48.857925","lng":"2.436098","passengers":"523"},"1441":{"id":"1441","ref":"673864223","name":"Cr\u00e9teil-L'Echat (H\u00f4pital Henri Mondor)","lat":"48.796463","lng":"2.449062","passengers":"221"},"1437":{"id":"1437","ref":"1360893278","name":"Maraichers","lat":"48.852661","lng":"2.406231","passengers":"313"},"1434":{"id":"1434","ref":"1673135790","name":"Villejuif-Louis Aragon","lat":"48.787003","lng":"2.366975","passengers":"593"},"1431":{"id":"1431","ref":"821130227","name":"Porte d'Ivry","lat":"48.821270","lng":"2.369095","passengers":"200"},"1430":{"id":"1430","ref":"4024543803","name":"Villejuif-Paul Vaillant Couturier (H\u00f4pital Paul Brousse)","lat":"48.795944","lng":"2.367966","passengers":"222"},"1428":{"id":"1428","ref":"486421116","name":"Porte de Choisy","lat":"48.820145","lng":"2.364346","passengers":"327"},"1427":{"id":"1427","ref":"941822868","name":"Villejuif-L\u00e9o Lagrange","lat":"48.804173","lng":"2.363944","passengers":"251"},"1423":{"id":"1423","ref":"188649288","name":"Le Kremlin-Bic\u00eatre","lat":"48.810383","lng":"2.361613","passengers":"471"},"1422":{"id":"1422","ref":"3616461854","name":"Charonne","lat":"48.854767","lng":"2.385271","passengers":"412"},"1420":{"id":"1420","ref":"1826166775","name":"Maison Blanche","lat":"48.822620","lng":"2.358189","passengers":"226"},"1419":{"id":"1419","ref":"87667279","name":"Mairie d'Issy","lat":"48.824814","lng":"2.273504","passengers":"440"},"1416":{"id":"1416","ref":"46216692","name":"Tolbiac","lat":"48.826508","lng":"2.357242","passengers":"379"},"1415":{"id":"1415","ref":"3332683073","name":"Corentin-Celton","lat":"48.827244","lng":"2.279307","passengers":"355"},"1413":{"id":"1413","ref":"3702452106","name":"Michel Bizot","lat":"48.836704","lng":"2.402969","passengers":"221"},"1412":{"id":"1412","ref":"2493371295","name":"Picpus","lat":"48.845261","lng":"2.401255","passengers":"157"},"1407":{"id":"1407","ref":"2050396911","name":"Convention","lat":"48.837471","lng":"2.296900","passengers":"607"},"1406":{"id":"1406","ref":"2346477303","name":"Montgallet","lat":"48.844250","lng":"2.389802","passengers":"188"},"1404":{"id":"1404","ref":"3100228085","name":"Daumesnil (F\u00e9lix Ebou\u00e9)","lat":"48.839363","lng":"2.395846","passengers":"571"},"1403":{"id":"1403","ref":"4261791583","name":"Al\u00e9sia","lat":"48.828400","lng":"2.326746","passengers":"558"},"1400":{"id":"1400","ref":"1526455506","name":"Vaugirard (Adolphe Ch\u00e9rioux)","lat":"48.839569","lng":"2.300983","passengers":"404"},"1399":{"id":"1399","ref":"3989473618","name":"Place Monge (Jardin des Plantes)","lat":"48.843197","lng":"2.352178","passengers":"307"},"1397":{"id":"1397","ref":"515539346","name":"Mouton-Duvernet","lat":"48.831322","lng":"2.329427","passengers":"177"},"1396":{"id":"1396","ref":"3379773416","name":"Porte de Bagnolet","lat":"48.864395","lng":"2.408000","passengers":"499"},"1392":{"id":"1392","ref":"1162874157","name":"Volontaires","lat":"48.841698","lng":"2.308041","passengers":"267"},"1391":{"id":"1391","ref":"3930049404","name":"Faidherbe-Chaligny","lat":"48.850239","lng":"2.384275","passengers":"312"},"1389":{"id":"1389","ref":"3504310849","name":"Pont de Neuilly","lat":"48.884510","lng":"2.259892","passengers":"713"},"1388":{"id":"1388","ref":"3273349984","name":"Malakoff-Rue Etienne Dolet","lat":"48.814667","lng":"2.296999","passengers":"194"},"1385":{"id":"1385","ref":"2706513156","name":"Quai de la Gare","lat":"48.837399","lng":"2.373784","passengers":"324"},"1384":{"id":"1384","ref":"3979953845","name":"Philippe Auguste","lat":"48.858364","lng":"2.389387","passengers":"190"},"1382":{"id":"1382","ref":"642786040","name":"Malakoff-Plateau de Vanves","lat":"48.823132","lng":"2.297015","passengers":"410"},"1381":{"id":"1381","ref":"3475396030","name":"Falgui\u00e8re","lat":"48.844639","lng":"2.317496","passengers":"97"},"1446":{"id":"1446","ref":"1990381110","name":"Mairie de Montreuil","lat":"48.862358","lng":"2.441656","passengers":"661"},"1445":{"id":"1445","ref":"3086704803","name":"Cr\u00e9teil-Pr\u00e9fecture (H\u00f4tel de Ville)","lat":"48.779747","lng":"2.459144","passengers":"511"},"1443":{"id":"1443","ref":"562653801","name":"Cr\u00e9teil-Universit\u00e9","lat":"48.789352","lng":"2.451447","passengers":"327"},"1442":{"id":"1442","ref":"3235782074","name":"Robespierre","lat":"48.855564","lng":"2.423557","passengers":"453"},"1439":{"id":"1439","ref":"3246051268","name":"Maisons-Alfort-Les Juilliottes","lat":"48.803143","lng":"2.444991","passengers":"207"},"1438":{"id":"1438","ref":"3954096031","name":"Mairie d'Ivry","lat":"48.811176","lng":"2.383808","passengers":"312"},"1436":{"id":"1436","ref":"2181002575","name":"Maisons-Alfort-Stade","lat":"48.808418","lng":"2.435582","passengers":"160"},"1435":{"id":"1435","ref":"1338908274","name":"Pierre et Marie Curie","lat":"48.815685","lng":"2.377287","passengers":"148"},"1220":{"id":"1220","ref":"1569477485","name":"Buttes-Chaumont","lat":"48.877777","lng":"2.381129","passengers":"60"},"1221":{"id":"1221","ref":"2893655003","name":"Nation","lat":"48.848465","lng":"2.395906","passengers":"996"},"1222":{"id":"1222","ref":"2120950107","name":"Courcelles","lat":"48.879234","lng":"2.303605","passengers":"282"},"1223":{"id":"1223","ref":"4091065876","name":"P\u00e9reire","lat":"48.884548","lng":"2.297517","passengers":"491"},"1224":{"id":"1224","ref":"1721597436","name":"Barb\u00e8s-Rochechouart","lat":"48.883621","lng":"2.349737","passengers":"979"},"1225":{"id":"1225","ref":"4198988390","name":"Porte de Pantin","lat":"48.888332","lng":"2.391469","passengers":"470"},"1226":{"id":"1226","ref":"2465875946","name":"Passy","lat":"48.857632","lng":"2.285865","passengers":"411"},"1227":{"id":"1227","ref":"635591290","name":"Corentin-Cariou","lat":"48.894905","lng":"2.382446","passengers":"324"},"1228":{"id":"1228","ref":"2688858633","name":"Commerce","lat":"48.844810","lng":"2.293353","passengers":"283"},"1229":{"id":"1229","ref":"3499425610","name":"Exelmans","lat":"48.842426","lng":"2.259737","passengers":"208"},"1230":{"id":"1230","ref":"2932899145","name":"Cluny-La Sorbonne","lat":"48.851040","lng":"2.345222","passengers":"288"},"1231":{"id":"1231","ref":"352028051","name":"Mirabeau","lat":"48.847340","lng":"2.273406","passengers":"145"},"1232":{"id":"1232","ref":"891393435","name":"R\u00e9publique","lat":"48.867485","lng":"2.363670","passengers":"1796"},"1233":{"id":"1233","ref":"3200465306","name":"Lamarck-Caulaincourt","lat":"48.889755","lng":"2.338890","passengers":"320"},"1234":{"id":"1234","ref":"65431437","name":"Brochant","lat":"48.890381","lng":"2.320028","passengers":"357"},"1235":{"id":"1235","ref":"3421576237","name":"Mairie de Saint-Ouen","lat":"48.912064","lng":"2.334163","passengers":"392"},"1236":{"id":"1236","ref":"3891613492","name":"Gare de Lyon","lat":"48.844704","lng":"2.374066","passengers":"3626"},"1237":{"id":"1237","ref":"3591610132","name":"Reuilly-Diderot","lat":"48.847237","lng":"2.386118","passengers":"572"},"1238":{"id":"1238","ref":"48157230","name":"Monceau","lat":"48.880630","lng":"2.308966","passengers":"168"},"1239":{"id":"1239","ref":"469044143","name":"Wagram","lat":"48.883873","lng":"2.304651","passengers":"270"},"1240":{"id":"1240","ref":"2058569149","name":"Gare du Nord","lat":"48.879967","lng":"2.354703","passengers":"5058"},"1241":{"id":"1241","ref":"4065628367","name":"Ourcq","lat":"48.886974","lng":"2.386030","passengers":"408"},"1242":{"id":"1242","ref":"499775835","name":"Bir-Hakeim (Grenelle)","lat":"48.854332","lng":"2.288783","passengers":"822"},"1243":{"id":"1243","ref":"882210155","name":"Crim\u00e9e","lat":"48.890682","lng":"2.376815","passengers":"754"},"1244":{"id":"1244","ref":"2635662580","name":"La Motte-Picquet-Grenelle","lat":"48.849159","lng":"2.297949","passengers":"850"},"1245":{"id":"1245","ref":"3715978556","name":"Od\u00e9on","lat":"48.852249","lng":"2.338558","passengers":"655"},"1246":{"id":"1246","ref":"4025722812","name":"Javel-Andr\u00e9-Citroen","lat":"48.846104","lng":"2.278455","passengers":"259"},"1247":{"id":"1247","ref":"3714063920","name":"Goncourt (H\u00f4pital Saint-Louis)","lat":"48.869678","lng":"2.371273","passengers":"383"},"1248":{"id":"1248","ref":"2075612487","name":"Abbesses","lat":"48.884418","lng":"2.338713","passengers":"267"},"1249":{"id":"1249","ref":"3325830777","name":"La Fourche","lat":"48.887390","lng":"2.326039","passengers":"312"},"1250":{"id":"1250","ref":"3691015742","name":"Garibaldi","lat":"48.906033","lng":"2.331733","passengers":"324"},"1251":{"id":"1251","ref":"1194974051","name":"Bercy","lat":"48.840427","lng":"2.379583","passengers":"584"},"1252":{"id":"1252","ref":"209994619","name":"Place des F\u00eates","lat":"48.876820","lng":"2.393473","passengers":"343"},"1253":{"id":"1253","ref":"1282474756","name":"Villiers","lat":"48.881054","lng":"2.315271","passengers":"650"},"1254":{"id":"1254","ref":"1126076862","name":"Malesherbes","lat":"48.882816","lng":"2.309694","passengers":"267"},"1255":{"id":"1255","ref":"1393958362","name":"Gare de l'Est (Verdun)","lat":"48.876060","lng":"2.357919","passengers":"2066"},"1256":{"id":"1256","ref":"3907763713","name":"Laumi\u00e8re","lat":"48.885040","lng":"2.379596","passengers":"474"},"1257":{"id":"1257","ref":"3129038787","name":"Dupleix","lat":"48.850807","lng":"2.292770","passengers":"405"},"1258":{"id":"1258","ref":"2096931515","name":"Riquet","lat":"48.888123","lng":"2.374487","passengers":"264"},"1259":{"id":"1259","ref":"2496888016","name":"Ecole Militaire","lat":"48.854519","lng":"2.305544","passengers":"462"},"1260":{"id":"1260","ref":"3253812998","name":"Michel-Ange-Auteuil","lat":"48.847740","lng":"2.264297","passengers":"231"},"1261":{"id":"1261","ref":"1098202862","name":"Mabillon","lat":"48.852818","lng":"2.335409","passengers":"201"},"1262":{"id":"1262","ref":"3565805587","name":"Charles Michels","lat":"48.846336","lng":"2.286332","passengers":"408"},"1263":{"id":"1263","ref":"3987776330","name":"Belleville","lat":"48.872044","lng":"2.376806","passengers":"1239"},"1264":{"id":"1264","ref":"3614543683","name":"Pigalle","lat":"48.882496","lng":"2.337623","passengers":"648"},"1265":{"id":"1265","ref":"3265715605","name":"Place de Clichy","lat":"48.883621","lng":"2.327307","passengers":"972"},"1266":{"id":"1266","ref":"1183318172","name":"Porte de Saint-Ouen","lat":"48.897251","lng":"2.328838","passengers":"400"},"1267":{"id":"1267","ref":"2871016604","name":"Cour Saint-Emilion","lat":"48.833485","lng":"2.387613","passengers":"583"},"1268":{"id":"1268","ref":"3398784409","name":"Bastille","lat":"48.852840","lng":"2.369181","passengers":"1315"},"1269":{"id":"1269","ref":"1362116730","name":"Rome","lat":"48.882530","lng":"2.320984","passengers":"288"},"1270":{"id":"1270","ref":"2826028950","name":"Ch\u00e2teau d'Eau","lat":"48.872589","lng":"2.355470","passengers":"508"},"1271":{"id":"1271","ref":"2577613756","name":"Stalingrad","lat":"48.884304","lng":"2.367085","passengers":"725"},"1272":{"id":"1272","ref":"4290789948","name":"La Tour-Maubourg","lat":"48.857384","lng":"2.309599","passengers":"215"},"1273":{"id":"1273","ref":"2673577552","name":"Jasmin","lat":"48.852341","lng":"2.267907","passengers":"216"},"1274":{"id":"1274","ref":"2488289503","name":"S\u00e8vres-Babylone","lat":"48.851204","lng":"2.325873","passengers":"590"},"1275":{"id":"1275","ref":"560256723","name":"Avenue Emile-Zola","lat":"48.846966","lng":"2.294938","passengers":"155"},"1276":{"id":"1276","ref":"637614763","name":"Pyrenees","lat":"48.873890","lng":"2.384890","passengers":"344"},"1277":{"id":"1277","ref":"3838784219","name":"Saint-Georges","lat":"48.878510","lng":"2.337589","passengers":"131"},"1278":{"id":"1278","ref":"618858167","name":"Li\u00e8ge","lat":"48.879562","lng":"2.326517","passengers":"181"},"1279":{"id":"1279","ref":"2974665047","name":"Guy-M\u00f4quet","lat":"48.892467","lng":"2.327227","passengers":"475"},"1280":{"id":"1280","ref":"2535004149","name":"Bibliotheque-Francois Mitterrand","lat":"48.829605","lng":"2.376093","passengers":"1662"},"1281":{"id":"1281","ref":"1877754383","name":"Saint-Paul (Le Marais)","lat":"48.855145","lng":"2.360653","passengers":"658"},"1282":{"id":"1282","ref":"4013515236","name":"Europe","lat":"48.878712","lng":"2.322825","passengers":"161"},"1283":{"id":"1283","ref":"3300801987","name":"Strasbourg-Saint-Denis","lat":"48.869202","lng":"2.354097","passengers":"771"},"1284":{"id":"1284","ref":"3875198686","name":"Cambronne","lat":"48.847458","lng":"2.301808","passengers":"331"},"1285":{"id":"1285","ref":"4225800166","name":"Invalides","lat":"48.861687","lng":"2.314357","passengers":"728"},"1286":{"id":"1286","ref":"3164047331","name":"Ranelagh","lat":"48.855392","lng":"2.269980","passengers":"243"},"1287":{"id":"1287","ref":"4012104432","name":"Vaneau","lat":"48.848873","lng":"2.321934","passengers":"97"},"1288":{"id":"1288","ref":"3468280332","name":"Jourdain","lat":"48.875168","lng":"2.389193","passengers":"359"},"1289":{"id":"1289","ref":"3781035794","name":"Notre-Dame de Lorette","lat":"48.876625","lng":"2.338454","passengers":"299"},"1290":{"id":"1290","ref":"2890651828","name":"Olympiades","lat":"48.826859","lng":"2.367297","passengers":"761"},"1291":{"id":"1291","ref":"3117275467","name":"Blanche","lat":"48.883656","lng":"2.331668","passengers":"446"},"1292":{"id":"1292","ref":"1213432453","name":"R\u00e9aumur-S\u00e9bastopol","lat":"48.866310","lng":"2.352035","passengers":"615"},"1293":{"id":"1293","ref":"2801003483","name":"S\u00e8vres-Lecourbe","lat":"48.845131","lng":"2.310184","passengers":"253"},"1294":{"id":"1294","ref":"2692076464","name":"Ch\u00e2teau Landon","lat":"48.878311","lng":"2.362299","passengers":"168"},"1295":{"id":"1295","ref":"2011584683","name":"Concorde","lat":"48.866184","lng":"2.323300","passengers":"721"},"1296":{"id":"1296","ref":"1390530723","name":"La Muette","lat":"48.857937","lng":"2.274117","passengers":"432"},"1297":{"id":"1297","ref":"2198512348","name":"Duroc","lat":"48.846783","lng":"2.316723","passengers":"338"},"1298":{"id":"1298","ref":"600722887","name":"S\u00e9gur","lat":"48.846752","lng":"2.307820","passengers":"170"},"1299":{"id":"1299","ref":"2009211090","name":"Trinit\u00e9-d'Estienne d'Orves","lat":"48.876511","lng":"2.333058","passengers":"230"},"1300":{"id":"1300","ref":"3524584243","name":"Miromesnil","lat":"48.873707","lng":"2.315199","passengers":"606"},"1301":{"id":"1301","ref":"645341577","name":"Havre-Caumartin","lat":"48.873344","lng":"2.328508","passengers":"876"},"1302":{"id":"1302","ref":"2358884938","name":"Etienne Marcel","lat":"48.863495","lng":"2.348670","passengers":"279"},"1303":{"id":"1303","ref":"1450883263","name":"Pasteur","lat":"48.842937","lng":"2.312656","passengers":"534"},"1304":{"id":"1304","ref":"3217152725","name":"Rue de la Pompe (Avenue Georges Mandel)","lat":"48.864101","lng":"2.277626","passengers":"323"},"1305":{"id":"1305","ref":"595945906","name":"Telegraphe","lat":"48.875393","lng":"2.398590","passengers":"226"},"1306":{"id":"1306","ref":"2669665705","name":"Champs-Elys\u00e9es-Cl\u00e9menceau","lat":"48.867413","lng":"2.313959","passengers":"473"},"1307":{"id":"1307","ref":"3747807733","name":"Louvre-Rivoli","lat":"48.860538","lng":"2.341000","passengers":"271"},"1308":{"id":"1308","ref":"244503826","name":"Anvers","lat":"48.883133","lng":"2.343973","passengers":"700"},"1309":{"id":"1309","ref":"73874293","name":"Op\u00e9ra","lat":"48.870705","lng":"2.331805","passengers":"1301"},"1310":{"id":"1310","ref":"606571514","name":"Les Halles","lat":"48.862194","lng":"2.345836","passengers":"1377"},"1311":{"id":"1311","ref":"1727514119","name":"Jacques-Bonsergent","lat":"48.870975","lng":"2.360538","passengers":"275"},"1312":{"id":"1312","ref":"44881418","name":"Montparnasse-Bienvenue","lat":"48.843044","lng":"2.322635","passengers":"3272"},"1313":{"id":"1313","ref":"1876271269","name":"Poissonni\u00e8re","lat":"48.877338","lng":"2.349606","passengers":"375"},"1314":{"id":"1314","ref":"2924666242","name":"Palais-Royal (Mus\u00e9e du Louvre)","lat":"48.862846","lng":"2.335817","passengers":"1004"},"1315":{"id":"1315","ref":"3649286437","name":"Quatre Septembre","lat":"48.869373","lng":"2.335742","passengers":"184"},"1316":{"id":"1316","ref":"2624477086","name":"Edgar-Quinet","lat":"48.840336","lng":"2.326171","passengers":"233"},"1317":{"id":"1317","ref":"2425224985","name":"Cadet","lat":"48.875477","lng":"2.343059","passengers":"383"},"1318":{"id":"1318","ref":"3211140642","name":"Richelieu-Drouot","lat":"48.872013","lng":"2.339088","passengers":"556"},"1319":{"id":"1319","ref":"4248981646","name":"I\u00e9na","lat":"48.864471","lng":"2.293800","passengers":"222"},"1320":{"id":"1320","ref":"2805226700","name":"Mairie des Lilas","lat":"48.879799","lng":"2.416239","passengers":"483"},"1321":{"id":"1321","ref":"3411985938","name":"Varenne","lat":"48.857517","lng":"2.315530","passengers":"159"},"1322":{"id":"1322","ref":"2247827349","name":"Tuileries","lat":"48.864498","lng":"2.330314","passengers":"259"},"1323":{"id":"1323","ref":"3487389407","name":"La Chapelle","lat":"48.883965","lng":"2.358500","passengers":"725"},"1324":{"id":"1324","ref":"1152988904","name":"Bourse","lat":"48.868797","lng":"2.341233","passengers":"352"},"1325":{"id":"1325","ref":"3711272335","name":"Cit\u00e9","lat":"48.855103","lng":"2.346720","passengers":"248"},"1326":{"id":"1326","ref":"4122770022","name":"Oberkampf","lat":"48.864517","lng":"2.368674","passengers":"441"},"1327":{"id":"1327","ref":"4198886535","name":"Raspail","lat":"48.838963","lng":"2.330583","passengers":"187"},"1328":{"id":"1328","ref":"2696990795","name":"Le Peletier","lat":"48.874935","lng":"2.339803","passengers":"234"},"1329":{"id":"1329","ref":"1561893142","name":"Grands Boulevards","lat":"48.871418","lng":"2.343197","passengers":"717"},"1330":{"id":"1330","ref":"3224579423","name":"Alma-Marceau","lat":"48.864647","lng":"2.300883","passengers":"428"},"1331":{"id":"1331","ref":"2904169401","name":"Assembl\u00e9e Nationale","lat":"48.860901","lng":"2.320632","passengers":"114"},"1332":{"id":"1332","ref":"697925458","name":"Saint-Francois-Xavier","lat":"48.851864","lng":"2.314035","passengers":"194"},"1333":{"id":"1333","ref":"1931254292","name":"Sentier","lat":"48.867413","lng":"2.346614","passengers":"348"},"1334":{"id":"1334","ref":"1760224038","name":"Saint-Michel","lat":"48.853287","lng":"2.343468","passengers":"962"},"1335":{"id":"1335","ref":"1128226880","name":"Richard-Lenoir","lat":"48.860893","lng":"2.372098","passengers":"172"},"1336":{"id":"1336","ref":"3519554763","name":"Denfert-Rochereau","lat":"48.833591","lng":"2.331893","passengers":"455"},"1337":{"id":"1337","ref":"1102200894","name":"Chauss\u00e9e d'Antin (La Fayette)","lat":"48.872898","lng":"2.333501","passengers":"817"},"1338":{"id":"1338","ref":"3653339166","name":"Bonne Nouvelle","lat":"48.870560","lng":"2.348680","passengers":"545"},"1339":{"id":"1339","ref":"2734436604","name":"Franklin-Roosevelt","lat":"48.869305","lng":"2.308309","passengers":"1328"},"1340":{"id":"1340","ref":"3481964895","name":"Solf\u00e9rino","lat":"48.858551","lng":"2.322681","passengers":"257"},"1341":{"id":"1341","ref":"882992124","name":"Br\u00e9guet-Sabin","lat":"48.856518","lng":"2.370937","passengers":"257"},"1342":{"id":"1342","ref":"3616975530","name":"Saint-Jacques","lat":"48.833252","lng":"2.336220","passengers":"203"},"1343":{"id":"1343","ref":"1836707069","name":"Saint-Philippe du Roule","lat":"48.872181","lng":"2.309820","passengers":"295"},"1344":{"id":"1344","ref":"3720819819","name":"Eglise d'Auteuil","lat":"48.847179","lng":"2.268901","passengers":"18"},"1345":{"id":"1345","ref":"2120668118","name":"Rue du Bac","lat":"48.855755","lng":"2.325569","passengers":"269"},"1346":{"id":"1346","ref":"1500021116","name":"Colonel Fabien","lat":"48.877941","lng":"2.370147","passengers":"478"},"1347":{"id":"1347","ref":"977856475","name":"Saint-Germain des Pr\u00e9s","lat":"48.853615","lng":"2.333720","passengers":"477"},"1348":{"id":"1348","ref":"3180795927","name":"Glaci\u00e8re","lat":"48.831364","lng":"2.343939","passengers":"497"},"1349":{"id":"1349","ref":"3789783956","name":"Gait\u00e9","lat":"48.838490","lng":"2.322583","passengers":"338"},"1350":{"id":"1350","ref":"2877706505","name":"George V","lat":"48.871983","lng":"2.300463","passengers":"650"},"1351":{"id":"1351","ref":"3514016666","name":"Temple","lat":"48.866367","lng":"2.361081","passengers":"133"},"1352":{"id":"1352","ref":"590575000","name":"Saint-Sulpice","lat":"48.850803","lng":"2.330868","passengers":"255"},"1353":{"id":"1353","ref":"3179893028","name":"Quai de la Rap\u00e9e","lat":"48.845795","lng":"2.367036","passengers":"126"},"1354":{"id":"1354","ref":"1490149880","name":"Corvisart","lat":"48.829613","lng":"2.349438","passengers":"273"},"1355":{"id":"1355","ref":"1994114096","name":"Filles du Calvaire","lat":"48.863304","lng":"2.366453","passengers":"174"},"1356":{"id":"1356","ref":"4197757394","name":"Saint-Augustin","lat":"48.874676","lng":"2.320431","passengers":"307"},"1357":{"id":"1357","ref":"2702846096","name":"Porte d'Auteuil","lat":"48.848076","lng":"2.258648","passengers":"75"},"1358":{"id":"1358","ref":"695063120","name":"Rennes","lat":"48.848053","lng":"2.328083","passengers":"137"},"1359":{"id":"1359","ref":"2401493758","name":"Pern\u00e9ty","lat":"48.833817","lng":"2.317664","passengers":"344"},"1360":{"id":"1360","ref":"2858233536","name":"Couronnes","lat":"48.868969","lng":"2.379869","passengers":"349"},"1361":{"id":"1361","ref":"604149420","name":"Saint-Placide","lat":"48.846581","lng":"2.326933","passengers":"357"},"1362":{"id":"1362","ref":"224821915","name":"Place d'Italie","lat":"48.831406","lng":"2.355721","passengers":"1278"},"1363":{"id":"1363","ref":"2707323384","name":"Pont Neuf","lat":"48.858402","lng":"2.341949","passengers":"169"},"1364":{"id":"1364","ref":"3566817926","name":"Saint-S\u00e9bastien-Froissart","lat":"48.861282","lng":"2.367024","passengers":"176"},"1365":{"id":"1365","ref":"3683962764","name":"Notre-Dame des Champs","lat":"48.844917","lng":"2.328853","passengers":"213"},"1366":{"id":"1366","ref":"3690575038","name":"Plaisance","lat":"48.831764","lng":"2.314067","passengers":"488"},"1367":{"id":"1367","ref":"3566702934","name":"Argentine","lat":"48.875534","lng":"2.289322","passengers":"296"},"1368":{"id":"1368","ref":"94248676","name":"M\u00e9nilmontant","lat":"48.865948","lng":"2.383394","passengers":"451"},"1369":{"id":"1369","ref":"1742862628","name":"Parmentier","lat":"48.865162","lng":"2.375847","passengers":"352"},"1370":{"id":"1370","ref":"2649549238","name":"Saint-Marcel","lat":"48.839516","lng":"2.361409","passengers":"212"},"1371":{"id":"1371","ref":"1745152818","name":"Nationale","lat":"48.832710","lng":"2.362045","passengers":"275"},"1372":{"id":"1372","ref":"4246083363","name":"Chemin Vert","lat":"48.857563","lng":"2.367935","passengers":"152"},"1373":{"id":"1373","ref":"675269737","name":"Porte de Vanves","lat":"48.827675","lng":"2.305340","passengers":"495"},"1374":{"id":"1374","ref":"3145751766","name":"Porte Maillot","lat":"48.877964","lng":"2.281836","passengers":"930"},"1375":{"id":"1375","ref":"2503048334","name":"P\u00e8re-Lachaise","lat":"48.862614","lng":"2.386722","passengers":"512"},"1376":{"id":"1376","ref":"3830653061","name":"Rue Saint-Maur","lat":"48.863987","lng":"2.380073","passengers":"299"},"1211":{"id":"1211","ref":"482278776","name":"F\u00e9lix Faure","lat":"48.842976","lng":"2.291998","passengers":"203"},"1210":{"id":"1210","ref":"1033620933","name":"Porte de la Villette","lat":"48.897812","lng":"2.385806","passengers":"337"},"1179":{"id":"1179","ref":"3827069729","name":"H\u00f4tel de Ville","lat":"48.856770","lng":"2.351495","passengers":"1340"},"1209":{"id":"1209","ref":"20785767","name":"Trocad\u00e9ro","lat":"48.862972","lng":"2.287020","passengers":"888"},"1208":{"id":"1208","ref":"53962395","name":"Hoche","lat":"48.891315","lng":"2.403197","passengers":"548"},"1178":{"id":"1178","ref":"980642687","name":"Boulogne-Jean-Jaur\u00e8s","lat":"48.842220","lng":"2.238836","passengers":"393"},"1163":{"id":"1163","ref":"3957216179","name":"Saint-Denis-Universite","lat":"48.945625","lng":"2.362359","passengers":"563"},"1207":{"id":"1207","ref":"1293807658","name":"Ch\u00e2teau Rouge","lat":"48.887177","lng":"2.349827","passengers":"714"},"1206":{"id":"1206","ref":"3412286137","name":"Porte de Champerret","lat":"48.885551","lng":"2.292742","passengers":"373"},"1177":{"id":"1177","ref":"3882868379","name":"Jussieu","lat":"48.845837","lng":"2.354692","passengers":"428"},"1205":{"id":"1205","ref":"2334959990","name":"Ternes","lat":"48.878067","lng":"2.298031","passengers":"412"},"1204":{"id":"1204","ref":"1523019830","name":"Porte de Vincennes","lat":"48.847267","lng":"2.408884","passengers":"458"},"1176":{"id":"1176","ref":"351139424","name":"Billancourt","lat":"48.831944","lng":"2.238110","passengers":"277"},"1162":{"id":"1162","ref":"271775302","name":"Les Agnettes","lat":"48.922916","lng":"2.285828","passengers":"248"},"1155":{"id":"1155","ref":"37245713","name":"La Courneuve-8-Mai-1945","lat":"48.920902","lng":"2.410455","passengers":"599"},"1203":{"id":"1203","ref":"1091103895","name":"Botzaris","lat":"48.879337","lng":"2.388734","passengers":"115"},"1202":{"id":"1202","ref":"245371276","name":"Bolivar","lat":"48.880585","lng":"2.373978","passengers":"61"},"1175":{"id":"1175","ref":"4278050457","name":"Lourmel","lat":"48.838490","lng":"2.281759","passengers":"256"},"1201":{"id":"1201","ref":"3877040829","name":"Pelleport","lat":"48.868519","lng":"2.401352","passengers":"38"},"1200":{"id":"1200","ref":"380937225","name":"Pyramides","lat":"48.866947","lng":"2.333665","passengers":"534"},"1174":{"id":"1174","ref":"890688308","name":"Fort d'Aubervilliers","lat":"48.914692","lng":"2.404177","passengers":"363"},"1161":{"id":"1161","ref":"41893941","name":"Porte de la Chapelle","lat":"48.898071","lng":"2.359092","passengers":"360"},"1199":{"id":"1199","ref":"2960704645","name":"Saint-Denis-Porte de Paris","lat":"48.929626","lng":"2.357410","passengers":"369"},"1198":{"id":"1198","ref":"2274972608","name":"Mairie de Clichy","lat":"48.903660","lng":"2.305566","passengers":"724"},"1173":{"id":"1173","ref":"3871409354","name":"Kl\u00e9ber","lat":"48.871094","lng":"2.293079","passengers":"120"},"1197":{"id":"1197","ref":"2046468661","name":"Rambuteau","lat":"48.861401","lng":"2.353505","passengers":"471"},"1196":{"id":"1196","ref":"3427371663","name":"Michel-Ange-Molitor","lat":"48.844868","lng":"2.262048","passengers":"203"},"1172":{"id":"1172","ref":"2277425032","name":"Bobigny-Pantin (Raymond Queneau)","lat":"48.895267","lng":"2.424802","passengers":"236"},"1160":{"id":"1160","ref":"1100607264","name":"Ch\u00e2telet","lat":"48.858521","lng":"2.347119","passengers":"1517"},"1154":{"id":"1154","ref":"598631581","name":"Charles de Gaulle-Etoile","lat":"48.874409","lng":"2.295763","passengers":"943"},"1151":{"id":"1151","ref":"3833855042","name":"Pont de Levallois-B\u00e9con","lat":"48.897118","lng":"2.280489","passengers":"534"},"1195":{"id":"1195","ref":"1771918760","name":"Cardinal-Lemoine","lat":"48.846390","lng":"2.351478","passengers":"174"},"1194":{"id":"1194","ref":"1374784815","name":"Marcel Sembat","lat":"48.833916","lng":"2.244081","passengers":"611"},"1171":{"id":"1171","ref":"1465479446","name":"Simplon","lat":"48.894634","lng":"2.347091","passengers":"314"},"1193":{"id":"1193","ref":"125894007","name":"Boucicaut","lat":"48.841240","lng":"2.287634","passengers":"296"},"1192":{"id":"1192","ref":"3098817292","name":"Aubervilliers Pantin (4 Chemins)","lat":"48.903831","lng":"2.392022","passengers":"772"},"1170":{"id":"1170","ref":"2493342269","name":"Anatole-France","lat":"48.892471","lng":"2.285374","passengers":"389"},"1159":{"id":"1159","ref":"4152748969","name":"Boulogne Pont de Saint-Cloud","lat":"48.840797","lng":"2.228211","passengers":"304"},"1191":{"id":"1191","ref":"1950730894","name":"Boissi\u00e8re","lat":"48.867027","lng":"2.290474","passengers":"225"},"1190":{"id":"1190","ref":"2258265757","name":"Eglise de Pantin","lat":"48.893112","lng":"2.413286","passengers":"381"},"1169":{"id":"1169","ref":"475845330","name":"Victor Hugo","lat":"48.869671","lng":"2.285267","passengers":"416"},"1189":{"id":"1189","ref":"1282210726","name":"Marcadet-Poissonniers","lat":"48.890877","lng":"2.349837","passengers":"637"},"1188":{"id":"1188","ref":"3638581237","name":"Louise Michel","lat":"48.888828","lng":"2.288137","passengers":"340"},"1168":{"id":"1168","ref":"2920343104","name":"B\u00e9rault","lat":"48.845333","lng":"2.429238","passengers":"265"},"1158":{"id":"1158","ref":"1707647480","name":"Gare d'Austerlitz","lat":"48.843105","lng":"2.364313","passengers":"952"},"1153":{"id":"1153","ref":"2085226230","name":"Bobigny-Pablo-Picasso","lat":"48.906971","lng":"2.449621","passengers":"706"},"1187":{"id":"1187","ref":"3095607449","name":"Saint-Mand\u00e9","lat":"48.846298","lng":"2.418673","passengers":"627"},"1186":{"id":"1186","ref":"1463586519","name":"Danube","lat":"48.882023","lng":"2.392702","passengers":"71"},"1167":{"id":"1167","ref":"2610627973","name":"Pr\u00e9-Saint-Gervais","lat":"48.879936","lng":"2.399077","passengers":"47"},"1185":{"id":"1185","ref":"2738613188","name":"Jaur\u00e8s","lat":"48.882545","lng":"2.370232","passengers":"635"},"1184":{"id":"1184","ref":"2609365027","name":"Saint-Fargeau","lat":"48.871952","lng":"2.404858","passengers":"102"},"1166":{"id":"1166","ref":"2014137071","name":"Louis Blanc","lat":"48.881027","lng":"2.365557","passengers":"265"},"1157":{"id":"1157","ref":"3741637293","name":"Pont de S\u00e8vres","lat":"48.829594","lng":"2.230254","passengers":"457"},"1219":{"id":"1219","ref":"2269163997","name":"Gambetta","lat":"48.864834","lng":"2.398462","passengers":"796"},"1218":{"id":"1218","ref":"1840343478","name":"Carrefour-Pleyel","lat":"48.919456","lng":"2.343200","passengers":"289"},"1183":{"id":"1183","ref":"1065328272","name":"Madeleine","lat":"48.870064","lng":"2.325164","passengers":"778"},"1217":{"id":"1217","ref":"2450931568","name":"Porte de Clichy","lat":"48.894360","lng":"2.313738","passengers":"436"},"1216":{"id":"1216","ref":"3991952489","name":"Jules Joffrin","lat":"48.892452","lng":"2.344465","passengers":"460"},"1182":{"id":"1182","ref":"4215555989","name":"Basilique de Saint-Denis","lat":"48.936604","lng":"2.359415","passengers":"568"},"1165":{"id":"1165","ref":"2998612092","name":"Porte des Lilas","lat":"48.877071","lng":"2.406386","passengers":"409"},"1215":{"id":"1215","ref":"1917711411","name":"Arts-et-M\u00e9tiers","lat":"48.865292","lng":"2.356378","passengers":"405"},"1214":{"id":"1214","ref":"896555290","name":"Chardon-Lagache","lat":"48.844715","lng":"2.266542","passengers":"66"},"1181":{"id":"1181","ref":"10090157","name":"Gabriel-P\u00e9ri","lat":"48.916233","lng":"2.294924","passengers":"564"},"1213":{"id":"1213","ref":"3866913670","name":"Maubert-Mutualit\u00e9","lat":"48.849911","lng":"2.348503","passengers":"267"},"1212":{"id":"1212","ref":"729999544","name":"Porte de Saint-Cloud","lat":"48.837887","lng":"2.256803","passengers":"518"},"1180":{"id":"1180","ref":"2402899129","name":"Marx-Dormoy","lat":"48.890301","lng":"2.360206","passengers":"376"},"1164":{"id":"1164","ref":"552165531","name":"Saint-Lazare","lat":"48.875580","lng":"2.326186","passengers":"4915"},"1156":{"id":"1156","ref":"3305905320","name":"Balard","lat":"48.836273","lng":"2.278218","passengers":"447"},"1152":{"id":"1152","ref":"1225648642","name":"Porte de Clignancourt","lat":"48.897285","lng":"2.344779","passengers":"945"},"1150":{"id":"1150","ref":"3873492639","name":"Porte Dauphine (Mar\u00e9chal de Lattre de Tassigny)","lat":"48.871647","lng":"2.276648","passengers":"298"},"1149":{"id":"1149","ref":"2532042518","name":"Ch\u00e2teau de Vincennes","lat":"48.844536","lng":"2.439510","passengers":"510"}},"line":[{"ref":"2","name":"2","way":["3873492639","475845330","598631581","2334959990","2120950107","48157230","1282474756","1362116730","3265715605","3117275467","3614543683","244503826","1721597436","3487389407","2577613756","2738613188","1500021116","3987776330","2858233536","94248676","2503048334","3979953845","1227645826","3761260163","2893655003"],"trainset":8},{"ref":"3","name":"3","way":["3833855042","2493342269","3638581237","3412286137","4091065876","469044143","1126076862","1282474756","4013515236","552165531","645341577","73874293","3649286437","1152988904","1931254292","1213432453","1917711411","3514016666","891393435","1742862628","3830653061","2503048334","2269163997","3379773416","555784063"],"trainset":8},{"ref":"4","name":"4","way":["1225648642","1465479446","1282210726","1293807658","1721597436","2058569149","1393958362","2826028950","3300801987","1213432453","2358884938","606571514","1100607264","3711272335","1760224038","3715978556","977856475","590575000","604149420","44881418","175753322","4198886535","3519554763","515539346","4261791583","2025816120"],"trainset":8},{"ref":"5","name":"5","way":["2085226230","2277425032","2258265757","53962395","4198988390","4065628367","3907763713","2738613188","2577613756","2058569149","1393958362","1727514119","891393435","4122770022","1128226880","882992124","3398784409","3179893028","1707647480","2649549238","2540754978","224821915"],"trainset":8},{"ref":"6","name":"6","way":["598631581","3871409354","1950730894","20785767","2465875946","499775835","3129038787","2635662580","3875198686","2801003483","1450883263","44881418","2624477086","4198886535","3519554763","3616975530","3180795927","1490149880","224821915","1745152818","3494453711","2706513156","1194974051","946374679","3100228085","3549826816","2493371295","2893655003"],"trainset":8},{"ref":"7","name":"7","way":["37245713","890688308","3098817292","1033620933","635591290","882210155","2096931515","2577613756","2014137071","2692076464","1393958362","1876271269","2425224985","2696990795","1102200894","73874293","380937225","2924666242","2707323384","1100607264","986262698","2177031349","3882868379","3989473618","1202011076","1314938315","224821915","46216692","1826166775","188649288","941822868","4024543803","1673135790"],"trainset":8},{"ref":"7_f","name":"7","way":["37245713","890688308","3098817292","1033620933","635591290","882210155","2096931515","2577613756","2014137071","2692076464","1393958362","1876271269","2425224985","2696990795","1102200894","73874293","380937225","2924666242","2707323384","1100607264","986262698","2177031349","3882868379","3989473618","1202011076","1314938315","224821915","46216692","1826166775","3103087595","486421116","821130227","1338908274","3954096031"],"trainset":8},{"ref":"8","name":"8","way":["3305905320","4278050457","125894007","482278776","2688858633","2635662580","2496888016","4290789948","4225800166","2011584683","1065328272","73874293","3211140642","1561893142","3653339166","3300801987","891393435","1994114096","3566817926","4246083363","3398784409","3780921823","3930049404","3591610132","2346477303","3100228085","3702452106","3567429859","2398034976","3345569136","737890386","1322902301","2181002575","3246051268","673864223","562653801","3086704803"],"trainset":8},{"ref":"9","name":"9","way":["3741637293","351139424","1374784815","729999544","3499425610","3427371663","3253812998","2673577552","3164047331","1390530723","3217152725","20785767","4248981646","3224579423","2734436604","1836707069","3524584243","4197757394","645341577","1102200894","3211140642","1561893142","3653339166","3300801987","891393435","4122770022","1736981303","4158739832","3616461854","714987642","2893655003","3110610795","1360893278","129206825","3235782074","1867201487","1990381110"],"trainset":8},{"ref":"10","name":"10","way":["1707647480","3882868379","1771918760","3866913670","2932899145","3715978556","1098202862","2488289503","4012104432","2198512348","600722887","2635662580","560256723","3565805587","4025722812","3720819819","3253812998","2702846096","980642687","4152748969"],"trainset":8},{"ref":"11","name":"11","way":["1100607264","3827069729","2046468661","1917711411","891393435","3714063920","3987776330","637614763","3468280332","209994619","595945906","2998612092","2805226700"],"trainset":8},{"ref":"12","name":"12","way":["41893941","2402899129","1282210726","3991952489","3200465306","2075612487","3614543683","3838784219","3781035794","2009211090","552165531","1065328272","2011584683","2904169401","3481964895","2120668118","2488289503","695063120","3683962764","44881418","3475396030","1450883263","1162874157","1526455506","2050396911","2196409879","3332683073","87667279"],"trainset":8},{"ref":"13","name":"13","way":["271775302","10090157","2274972608","2450931568","65431437","3325830777","3265715605","618858167","552165531","3524584243","2669665705","4225800166","3411985938","697925458","2198512348","44881418","3789783956","2401493758","3690575038","675269737","642786040","3273349984","3332581557"],"trainset":8},{"ref":"13_f","name":"13","way":["3957216179","4215555989","2960704645","1840343478","3421576237","3691015742","1183318172","2974665047","3325830777","3265715605","618858167","552165531","3524584243","2669665705","4225800166","3411985938","697925458","2198512348","44881418","3789783956","2401493758","3690575038","675269737","642786040","3273349984","3332581557"],"trainset":8},{"ref":"14","name":"14","way":["552165531","1065328272","380937225","1100607264","3891613492","1194974051","2871016604","2535004149","2890651828"],"trainset":8},{"ref":"3bis","name":"3B","way":["2998612092","2609365027","3877040829","2269163997"],"trainset":8},{"ref":"7bis","name":"7B","way":["2014137071","2738613188","245371276","1569477485","1091103895","209994619","2610627973"],"trainset":8},{"ref":"1_r","name":"1","way":["1726955494","276344470","3504310849","259791766","3145751766","3566702934","598631581","2877706505","2734436604","2669665705","2011584683","2247827349","2924666242","3747807733","1100607264","3827069729","1877754383","3398784409","3891613492","3591610132","2893655003","1523019830","3095607449","2920343104","2532042518"],"trainset":8},{"ref":"2_r","name":"2","way":["2893655003","3761260163","1227645826","3979953845","2503048334","94248676","2858233536","3987776330","1500021116","2738613188","2577613756","3487389407","1721597436","244503826","3614543683","3117275467","3265715605","1362116730","1282474756","48157230","2120950107","2334959990","598631581","475845330","3873492639"],"trainset":8},{"ref":"3_r","name":"3","way":["555784063","3379773416","2269163997","2503048334","3830653061","1742862628","891393435","3514016666","1917711411","1213432453","1931254292","1152988904","3649286437","73874293","645341577","552165531","4013515236","1282474756","1126076862","469044143","4091065876","3412286137","3638581237","2493342269","3833855042"],"trainset":8},{"ref":"4_r","name":"4","way":["2025816120","4261791583","515539346","3519554763","4198886535","175753322","44881418","604149420","590575000","977856475","3715978556","1760224038","3711272335","1100607264","606571514","2358884938","1213432453","3300801987","2826028950","1393958362","2058569149","1721597436","1293807658","1282210726","1465479446","1225648642"],"trainset":8},{"ref":"5_r","name":"5","way":["224821915","2540754978","2649549238","1707647480","3179893028","3398784409","882992124","1128226880","4122770022","891393435","1727514119","1393958362","2058569149","2577613756","2738613188","3907763713","4065628367","4198988390","53962395","2258265757","2277425032","2085226230"],"trainset":8},{"ref":"6_r","name":"6","way":["2893655003","2493371295","3549826816","3100228085","946374679","1194974051","2706513156","3494453711","1745152818","224821915","1490149880","3180795927","3616975530","3519554763","4198886535","2624477086","44881418","1450883263","2801003483","3875198686","2635662580","3129038787","499775835","2465875946","20785767","1950730894","3871409354","598631581"],"trainset":8},{"ref":"7_r","name":"7","way":["1673135790","4024543803","941822868","188649288","1826166775","46216692","224821915","1314938315","1202011076","3989473618","3882868379","2177031349","986262698","1100607264","2707323384","2924666242","380937225","73874293","1102200894","2696990795","2425224985","1876271269","1393958362","2692076464","2014137071","2577613756","2096931515","882210155","635591290","1033620933","3098817292","890688308","37245713"],"trainset":8},{"ref":"7_f_r","name":"7","way":["3954096031","1338908274","821130227","486421116","3103087595","1826166775","46216692","224821915","1314938315","1202011076","3989473618","3882868379","2177031349","986262698","1100607264","2707323384","2924666242","380937225","73874293","1102200894","2696990795","2425224985","1876271269","1393958362","2692076464","2014137071","2577613756","2096931515","882210155","635591290","1033620933","3098817292","890688308","37245713"],"trainset":8},{"ref":"8_r","name":"8","way":["3086704803","562653801","673864223","3246051268","2181002575","1322902301","737890386","3345569136","2398034976","3567429859","3702452106","3100228085","2346477303","3591610132","3930049404","3780921823","3398784409","4246083363","3566817926","1994114096","891393435","3300801987","3653339166","1561893142","3211140642","73874293","1065328272","2011584683","4225800166","4290789948","2496888016","2635662580","2688858633","482278776","125894007","4278050457","3305905320"],"trainset":8},{"ref":"9_r","name":"9","way":["1990381110","1867201487","3235782074","129206825","1360893278","3110610795","2893655003","714987642","3616461854","4158739832","1736981303","4122770022","891393435","3300801987","3653339166","1561893142","3211140642","1102200894","645341577","4197757394","3524584243","1836707069","2734436604","3224579423","4248981646","20785767","3217152725","1390530723","3164047331","2673577552","3253812998","3427371663","3499425610","729999544","1374784815","351139424","3741637293"],"trainset":8},{"ref":"10_r","name":"10","way":["4152748969","980642687","2702846096","3253812998","3720819819","4025722812","3565805587","560256723","2635662580","600722887","2198512348","4012104432","2488289503","1098202862","3715978556","2932899145","3866913670","1771918760","3882868379","1707647480"],"trainset":8},{"ref":"11_r","name":"11","way":["2805226700","2998612092","595945906","209994619","3468280332","637614763","3987776330","3714063920","891393435","1917711411","2046468661","3827069729","1100607264"],"trainset":8},{"ref":"12_r","name":"12","way":["87667279","3332683073","2196409879","2050396911","1526455506","1162874157","1450883263","3475396030","44881418","3683962764","695063120","2488289503","2120668118","3481964895","2904169401","2011584683","1065328272","552165531","2009211090","3781035794","3838784219","3614543683","2075612487","3200465306","3991952489","1282210726","2402899129","41893941"],"trainset":8},{"ref":"13_r","name":"13","way":["3332581557","3273349984","642786040","675269737","3690575038","2401493758","3789783956","44881418","2198512348","697925458","3411985938","4225800166","2669665705","3524584243","552165531","618858167","3265715605","3325830777","65431437","2450931568","2274972608","10090157","271775302"],"trainset":8},{"ref":"13_f_r","name":"13","way":["3332581557","3273349984","642786040","675269737","3690575038","2401493758","3789783956","44881418","2198512348","697925458","3411985938","4225800166","2669665705","3524584243","552165531","618858167","3265715605","3325830777","2974665047","1183318172","3691015742","3421576237","1840343478","2960704645","4215555989","3957216179"],"trainset":8},{"ref":"14_r","name":"14","way":["2890651828","2535004149","2871016604","1194974051","3891613492","1100607264","380937225","1065328272","552165531"],"trainset":8},{"ref":"3bis_r","name":"3B","way":["2269163997","3877040829","2609365027","2998612092"],"trainset":8},{"ref":"7bis_r","name":"7B","way":["2610627973","209994619","1091103895","1569477485","245371276","2738613188","2014137071"],"trainset":8},{"ref":"1","name":"1","way":["2532042518","2920343104","3095607449","1523019830","2893655003","3591610132","3891613492","3398784409","1877754383","3827069729","1100607264","3747807733","2924666242","2247827349","2011584683","2669665705","2734436604","2877706505","598631581","3566702934","3145751766","259791766","3504310849","276344470","1726955494"],"trainset":8}],"trips":["2635662580|10|15:35:00|60|560256723|8913164320917608|54","3891613492|14|15:34:00|180|1100607264|22013095790912435|59","3211140642|8|15:38:00|60|73874293|18213094960795507|57","2635662580|10|15:36:00|60|560256723|13013164380296022|54","3305905320|8|15:34:00|60|4278050457|11713094950795505|54","3891613492|1|15:38:00|120|3398784409|22113092920912269|56","2503048334|2|15:37:00|120|3979953845|19613093810095484|54","3211140642|8|15:34:00|120|1561893142|17613094960795505|51","4013515236|3|15:36:00|60|1282474756|21013094000095500|59","2635662580|10|15:37:00|120|560256723|10413164400296022|54","380937225|7|15:36:00|60|2924666242|813094650651581|40","3305905320|8|15:35:00|60|4278050457|10113094880795505|54","2258265757|5|15:35:00|120|53962395|10413094320094711|59","3891613492|1|15:34:00|120|3398784409|21913092920912269|56","3549826816|6|15:37:00|60|3100228085|11313094440912370|55","2503048334|2|15:38:00|60|3979953845|14813093790095484|54","3616975530|6|15:38:00|60|3180795927|18213094540295944|57","3211140642|8|15:36:00|120|1561893142|10013094890795505|51","645341577|3|15:36:00|120|552165531|12013093980095500|57","4013515236|3|15:37:00|60|1282474756|20713093930095500|59","3987776330|11|15:35:00|120|3714063920|11813095430912409|57","2635662580|6|15:34:00|60|3875198686|10613094450295944|57","1721597436|4|15:38:00|120|2058569149|11713864000942709|55","380937225|7|15:37:00|60|2924666242|9313094590651562|40","980642687|10|15:37:00|120|3427371663|13713164360917606|52","3305905320|8|15:36:00|60|4278050457|10313094890795505|54","2920343104|1|15:36:00|120|3095607449|22413092920912269|55","2258265757|5|15:35:00|60|2277425032|11513094300912363|57","3991952489|12|15:34:00|60|1282210726|10413647210942699|58","3891613492|1|15:38:00|60|3591610132|21013092920912270|58","941822868|7|15:35:00|120|4024543803|5513094560651562|45","3549826816|6|15:38:00|120|3100228085|10713094450912370|55","3930049404|8|15:38:00|60|3780921823|17513094920795507|55","2503048334|2|15:35:00|120|94248676|11413093880095483|57","2858233536|2|15:36:00|60|3987776330|10813093750095483|58","1836707069|9|15:35:00|60|3524584243|2213095120912389|58","3224579423|9|15:36:00|120|2734436604|713095170912389|59","3211140642|8|15:37:00|60|1561893142|11413094950795505|51","73874293|8|15:36:00|120|1065328272|9513094940795507|58","645341577|3|15:37:00|60|552165531|10613093990095500|57","1213432453|4|15:34:00|120|3300801987|16913864020942711|52","4013515236|3|15:38:00|120|1282474756|13713093970095500|59","2577613756|2|15:37:00|120|2738613188|15113093790095484|58","3987776330|11|15:37:00|60|3714063920|313095530912412|57","1282474756|2|15:35:00|60|1362116730|10313093750095484|57","2635662580|6|15:35:00|60|3875198686|11113094440295944|57","65431437|13|15:34:00|60|2450931568|11613095680912413|49","1721597436|4|15:34:00|120|1293807658|16613864020942711|48","1917711411|11|15:37:00|120|2046468661|11713095420912409|57","380937225|7|15:38:00|60|2924666242|10213094610651562|40","1282210726|12|15:37:00|120|2402899129|14813647350942699|57","980642687|10|15:38:00|180|3427371663|12613164380917610|52","2998612092|3B|15:34:00|60|2609365027|12213094250651521|44","3305905320|8|15:37:00|60|4278050457|10113094940795505|54","1707647480|5|15:38:00|120|2649549238|10813094380094711|58","2610627973|7B|15:35:00|60|1463586519|8513094790651583|25","3827069729|11|15:36:00|0|1100607264|11013095440912409|53","2258265757|5|15:34:00|60|2277425032|10313094380912363|57","1091103895|7B|15:38:00|60|1569477485|8513094790651583|26","1917711411|3|15:38:00|60|1213432453|14013093970095500|56","2465875946|6|15:36:00|60|499775835|9713094430295944|57","3891613492|1|15:35:00|120|3591610132|10413092900095468|58","1360893278|9|15:36:00|120|129206825|17813095220912398|55","941822868|7|15:36:00|60|4024543803|613094670912383|45","4158739832|9|15:37:00|120|3616461854|18013095120912393|57","3549826816|6|15:35:00|60|2493371295|12113094500295944|54","1526455506|12|15:36:00|120|2050396911|17913647340942701|53","3930049404|8|15:36:00|120|3591610132|17213094960795505|55","642786040|13|15:38:00|120|3273349984|8713095630912423|47","2503048334|2|15:37:00|60|94248676|10913093750095483|57","3566702934|1|15:37:00|120|598631581|11013092900095468|59","2858233536|2|15:37:00|120|3987776330|21813093830912330|58","3514016666|3|15:37:00|120|891393435|13013093970912354|58","1836707069|9|15:36:00|120|3524584243|9313095090912393|58","1102200894|7|15:38:00|60|2696990795|6413094570651565|43","3224579423|9|15:37:00|60|2734436604|18613095120912393|59","3711272335|4|15:37:00|60|1100607264|10813864000942711|56","3211140642|8|15:38:00|120|1561893142|18513094970795505|51","44881418|6|15:38:00|120|2624477086|18013094460295944|57","73874293|8|15:37:00|60|1065328272|11313094950795507|58","595945906|11|15:38:00|120|2998612092|11713095420440174|57","645341577|3|15:38:00|120|552165531|18413093960095500|57","1390530723|9|15:35:00|120|3217152725|2313095120912389|58","1213432453|4|15:35:00|120|3300801987|10613864000942711|52","3164047331|9|15:34:00|60|1390530723|2313095120912389|57","4013515236|3|15:34:00|120|552165531|11713093980912354|59","560256723|10|15:36:00|60|2635662580|12213164410917606|54","2577613756|2|15:38:00|120|2738613188|10113093750095484|58","1183318172|13|15:38:00|120|3691015742|11713095680912414|47","3987776330|11|15:38:00|120|3714063920|11213095440912409|57","3129038787|6|15:34:00|60|499775835|18713094520912370|55","1282474756|2|15:36:00|60|1362116730|15513093790095484|57","2075612487|12|15:37:00|60|3200465306|9613647290942704|58","2635662580|6|15:36:00|60|3875198686|11013094510295944|57","469044143|3|15:36:00|60|4091065876|11813093980095500|59","65431437|13|15:35:00|60|2450931568|12713095590912413|49","352028051|10|15:37:00|120|4025722812|8313164370917610|54","1721597436|4|15:36:00|60|1293807658|10413864000942711|48","2893655003|1|15:34:00|120|1523019830|20713092920912270|58","1917711411|11|15:38:00|60|2046468661|11113095440912409|57","20785767|6|15:36:00|60|1950730894|113094460912371|56","3877040829|3B|15:34:00|60|2269163997|14813094290651521|45","1771918760|10|15:36:00|120|3882868379|11913164410917606|53","1282210726|12|15:38:00|120|2402899129|17313647340942699|57","1065328272|8|15:36:00|60|73874293|18513094970795505|56","3827069729|1|15:34:00|120|1877754383|21113092920912270|59","2277425032|5|15:36:00|240|2085226230|11513094300912363|57","2998612092|3B|15:36:00|60|2609365027|14913094260651521|44","1100607264|7|15:34:00|60|2707323384|10513094610651565|43","3305905320|8|15:38:00|60|4278050457|11813094950795505|54","2085226230|5|15:36:00|180|2277425032|19913094340094711|57","1707647480|5|15:34:00|120|2649549238|10713094380094711|58","3957216179|13|15:37:00|120|4215555989|12113095680912417|50","2610627973|7B|15:34:00|60|1463586519|11113094810651583|25","890688308|7|15:36:00|120|3098817292|10013094650651570|40","3827069729|11|15:35:00|60|1100607264|13413095500912409|53","2738613188|2|15:34:00|60|1500021116|14913093790095484|57","1282210726|4|15:37:00|120|1293807658|25513864010942709|54","3427371663|9|15:34:00|60|3253812998|10313095160912398|59","1091103895|7B|15:36:00|120|1569477485|11113094810651583|26","20785767|9|15:37:00|60|3217152725|9813095100912399|55","1917711411|3|15:36:00|60|1213432453|12213093980095500|56","2893655003|6|15:34:00|60|2493371295|17713094460912370|54","2465875946|6|15:34:00|60|499775835|12813094500295944|57","891393435|3|15:36:00|60|1742862628|11413093980912354|59","3891613492|1|15:34:00|60|3591610132|19413092970912277|58","3235782074|9|15:35:00|120|129206825|14513095180912399|55","1360893278|9|15:37:00|60|129206825|17013095150912393|55","1322902301|8|15:36:00|120|2181002575|16713094960795505|52","941822868|7|15:37:00|60|4024543803|9213094650651570|45","3616461854|9|15:37:00|60|714987642|9313095820912393|57","4158739832|9|15:38:00|120|3616461854|2313095190912389|57","3702452106|8|15:38:00|60|3100228085|11813094950795507|59","3549826816|6|15:36:00|60|2493371295|10113094450295944|54","3100228085|8|15:35:00|60|3702452106|17013094960795505|54","1526455506|12|15:37:00|60|2050396911|15113647350942701|53","3379773416|3|15:36:00|60|2269163997|10113093920095500|58","3930049404|8|15:37:00|120|3591610132|11113094950795505|55","3780921823|8|15:37:00|120|3930049404|18013094970795505|54","259791766|1|15:35:00|120|3504310849|21013092920912269|58","2540754978|5|15:37:00|60|2649549238|21913094390912363|57","2503048334|2|15:38:00|60|94248676|14513093860912348|57","1745152818|6|15:37:00|60|224821915|10513094450912370|53","3566702934|1|15:38:00|60|598631581|14113093000912283|59","2707323384|7|15:37:00|120|2924666242|10713094670912373|42","2858233536|2|15:38:00|60|3987776330|11413093880095483|58","1994114096|8|15:37:00|60|3566817926|9713094880795505|53","3514016666|3|15:38:00|60|891393435|10313093990912354|58","977856475|4|15:37:00|120|3715978556|17413864020942711|59","1836707069|9|15:37:00|60|3524584243|18513095120912393|58","2734436604|1|15:38:00|60|2877706505|20113092970912276|57","1102200894|9|15:35:00|60|3211140642|18313095120912393|58","1760224038|4|15:38:00|60|3711272335|23813864010942711|56","3224579423|9|15:38:00|120|2734436604|17813095150912393|59","4198886535|6|15:37:00|60|3519554763|17913094460295944|57","3711272335|4|15:35:00|60|1760224038|11213864000942709|54","3411985938|13|15:36:00|60|697925458|11713095680912416|51","3211140642|9|15:34:00|60|1102200894|12513095170912399|57","3649286437|3|15:35:00|120|73874293|18413093960095500|57","1876271269|7|15:34:00|120|1393958362|5813094560651565|44","44881418|12|15:36:00|60|3475396030|17713647260942701|56","73874293|8|15:38:00|60|1065328272|17113094920795507|58","244503826|2|15:35:00|120|1721597436|15213093790095484|57","2669665705|1|15:34:00|120|2011584683|20413093030912289|58","1450883263|12|15:35:00|60|3475396030|12413647310942699|58","645341577|3|15:34:00|120|73874293|10413093990912354|59","2009211090|12|15:35:00|60|3781035794|10613647210942699|58","1390530723|9|15:37:00|120|3217152725|17913095150912393|58","2011584683|1|15:37:00|120|2247827349|10813092900095468|59","1213432453|4|15:36:00|60|3300801987|23413864010942711|52","3781035794|12|15:36:00|60|2009211090|18113647260942701|58","3164047331|9|15:35:00|120|1390530723|19013095220912398|57","3300801987|9|15:38:00|120|891393435|17413095190912398|57","4013515236|3|15:35:00|120|552165531|13313093970912354|59","618858167|13|15:35:00|120|552165531|6713095550912416|48","560256723|10|15:37:00|60|2635662580|13513164360917606|54","4290789948|8|15:36:00|60|2496888016|16913094920795507|56","2577613756|2|15:34:00|60|3487389407|10613093750095483|58","3398784409|8|15:35:00|60|3780921823|11113094950795505|55","2871016604|14|15:34:00|120|2535004149|23613164430912430|59","3614543683|2|15:35:00|120|3117275467|10513093750095483|56","3987776330|11|15:34:00|60|637614763|11713095420440174|56","3253812998|10|15:37:00|120|2702846096|8913164340917608|54","3129038787|6|15:35:00|120|499775835|13313094550912370|55","1393958362|4|15:38:00|60|2826028950|25213864010942709|52","1282474756|2|15:37:00|60|1362116730|21913093760095484|57","1194974051|14|15:37:00|120|2871016604|18313164420912430|59","2075612487|12|15:38:00|120|3200465306|18713647320942699|58","3715978556|4|15:35:00|60|977856475|24513864010942709|56","2635662580|6|15:37:00|60|3875198686|12813094500295944|57","4065628367|5|15:38:00|60|4198988390|19213094340912363|56","469044143|3|15:37:00|60|4091065876|20913094000095500|59","3591610132|1|15:35:00|120|2893655003|20813092920912270|58","65431437|13|15:36:00|120|2450931568|6513095550912413|49","891393435|8|15:35:00|120|3300801987|17213094920795507|57","352028051|10|15:38:00|60|4025722812|8313164330917606|54","635591290|7|15:38:00|60|1033620933|6713094630912379|42","1721597436|4|15:37:00|60|1293807658|16713864020942711|48","2120950107|2|15:36:00|60|2334959990|10313093750095483|56","2893655003|1|15:35:00|120|1523019830|10313092900095468|58","2450931568|13|15:36:00|120|65431437|7413095620912423|50","1917711411|11|15:34:00|60|891393435|11813095420440174|56","482278776|8|15:34:00|60|2688858633|10013094880795505|57","20785767|6|15:37:00|60|1950730894|113094480912371|56","2334959990|2|15:36:00|60|2120950107|20313093810095484|58","3877040829|3B|15:35:00|60|2269163997|14813094260651521|45","2274972608|13|15:37:00|180|10090157|11613095680912413|49","1771918760|10|15:38:00|60|3882868379|13613164390917606|53","3098817292|7|15:34:00|120|1033620933|7913094660651570|40","1282210726|12|15:34:00|60|3991952489|10813647210942701|56","2738613188|5|15:37:00|120|3907763713|13213094370912363|57","1065328272|8|15:37:00|60|73874293|17813094960795505|56","10090157|13|15:36:00|60|271775302|12613095590912413|47","3827069729|1|15:35:00|120|1877754383|20013093030912289|59","351139424|9|15:37:00|60|3741637293|8813095090912395|58","2277425032|5|15:37:00|180|2085226230|12913094370912363|57","475845330|2|15:38:00|120|598631581|22313093760095484|55","2998612092|3B|15:37:00|60|2609365027|10113094270651521|44","552165531|13|15:38:00|120|618858167|6613095550912413|52","1100607264|7|15:35:00|60|2707323384|10113094650912379|43","1100607264|1|15:37:00|60|3747807733|21713092920912269|57","3741637293|9|15:34:00|60|351139424|18213095150912393|57","598631581|2|15:37:00|60|2334959990|20413093810095484|54","2085226230|5|15:37:00|180|2277425032|11513094380094711|57","3873492639|2|15:35:00|120|475845330|11113093880912351|58","1707647480|5|15:38:00|60|3179893028|12313094300912363|59","1100607264|14|15:38:00|120|380937225|18413164420912435|59","3957216179|13|15:36:00|120|4215555989|7713095580912424|50","552165531|3|15:37:00|60|4013515236|13713093970095500|56","2014137071|7B|15:37:00|60|2738613188|8313094790651584|33","2493342269|3|15:38:00|120|3833855042|18313094020095500|58","890688308|7|15:35:00|120|3098817292|6013094560651562|40","3882868379|10|15:38:00|60|1707647480|11913164410917606|51","3827069729|11|15:37:00|60|2046468661|13913095500440174|58","1065328272|12|15:36:00|120|2011584683|15613647350942701|56","2609365027|3B|15:37:00|60|3877040829|14913094260651521|45","3095607449|1|15:37:00|120|1523019830|21113092970912276|59","1282210726|4|15:36:00|60|1293807658|11713864000942709|54","125894007|8|15:34:00|120|482278776|613094970912387|55","3427371663|9|15:38:00|60|3499425610|19913095220912399|58","380937225|14|15:34:00|60|1065328272|18213164420912435|59","1091103895|7B|15:36:00|60|209994619|8213094790651584|36","1293807658|4|15:36:00|60|1282210726|16613864020942711|49","20785767|9|15:35:00|60|3217152725|20113095220912399|55","729999544|9|15:36:00|120|3499425610|18113095150912393|58","1917711411|3|15:35:00|60|1213432453|18813094020095500|56","2269163997|3|15:37:00|120|3379773416|19213093930912354|59","2893655003|2|15:37:00|120|3761260163|11613093880095483|58","4091065876|3|15:38:00|60|469044143|17713093960912354|58","4198988390|5|15:38:00|120|4065628367|10413094320094711|58","3499425610|9|15:35:00|60|3427371663|18013095150912393|59","891393435|3|15:35:00|60|1742862628|10213093990912354|59","891393435|9|15:37:00|60|3300801987|20513095120912395|55","3421576237|13|15:36:00|120|3691015742|7413095620912424|53","1867201487|9|15:35:00|60|1990381110|16813095150912393|55","3235782074|9|15:36:00|120|129206825|10513095100912399|55","129206825|9|15:36:00|60|1360893278|10013095820912395|56","1360893278|9|15:38:00|60|129206825|8913095090912393|55","1673135790|7|15:37:00|60|4024543803|6213094560651565|43","1322902301|8|15:37:00|120|2181002575|11813094980795505|52","737890386|8|15:36:00|120|3345569136|10013094940795507|59","941822868|7|15:35:00|60|188649288|11113094670912379|47","3345569136|8|15:36:00|60|737890386|16813094960795505|56","3616461854|9|15:38:00|60|714987642|17213095150912393|57","1826166775|7|15:37:00|60|46216692|10013094590651565|44","4158739832|9|15:35:00|60|1736981303|20613095120912395|56","46216692|7|15:38:00|60|1826166775|6613094630912376|41","1736981303|9|15:35:00|60|4158739832|17213095150912393|58","2196409879|12|15:38:00|120|2050396911|17813647260942699|58","3549826816|6|15:37:00|60|2493371295|10513094510295944|54","2346477303|8|15:36:00|60|3100228085|11013094950795505|54","3100228085|8|15:37:00|60|3702452106|11013094950795505|54","4261791583|4|15:37:00|60|515539346|24313864010942711|57","1526455506|12|15:38:00|60|2050396911|18713647280942701|53","946374679|6|15:37:00|60|3100228085|17813094540295944|57","3379773416|3|15:37:00|120|2269163997|12513093980095500|58","276344470|1|15:37:00|120|1726955494|13713093000912282|58","3930049404|8|15:38:00|60|3591610132|17213094910795505|55","3504310849|1|15:38:00|120|259791766|22113092920912270|59","3780921823|8|15:38:00|60|3930049404|12113094980795505|54","2706513156|6|15:36:00|120|1194974051|10613094510295944|56","259791766|1|15:36:00|120|3504310849|1613092970912259|58","3475396030|12|15:35:00|60|44881418|18113647340942699|56","2540754978|5|15:38:00|60|2649549238|14413094420912363|57","3830653061|3|15:38:00|120|2503048334|11413093980912354|58","2503048334|3|15:35:00|120|2269163997|19213093930912354|59","675269737|13|15:38:00|60|642786040|12813095640912423|45","1745152818|6|15:38:00|120|224821915|12713094500912370|53","1742862628|3|15:38:00|60|3830653061|19413093930912354|58","3566702934|1|15:35:00|120|3145751766|21113092920912269|57","3683962764|12|15:38:00|60|44881418|9913647230942707|54","2707323384|7|15:38:00|120|2924666242|10513094610912373|42","224821915|6|15:37:00|60|1745152818|10713094510295944|57","2858233536|2|15:35:00|60|94248676|14813093790095484|58","695063120|12|15:37:00|60|2488289503|10913647210942699|59","1994114096|8|15:38:00|60|3566817926|12213094980795505|53","3179893028|5|15:38:00|120|3398784409|20013094400912363|59","590575000|4|15:35:00|60|604149420|24413864010942709|54","3789783956|13|15:38:00|120|44881418|12013095680912413|55","977856475|4|15:38:00|60|3715978556|23913864010942711|59","2120668118|12|15:38:00|60|2488289503|10513647210942701|57","1836707069|9|15:38:00|60|3524584243|17713095150912393|58","882992124|5|15:35:00|60|1128226880|19713094400912363|58","2734436604|9|15:35:00|120|3224579423|20013095120912395|57","3653339166|9|15:35:00|60|3300801987|2013095150912389|58","1102200894|9|15:36:00|60|3211140642|17513095190912398|58","3519554763|6|15:35:00|60|4198886535|213094460912371|58","1128226880|5|15:35:00|120|4122770022|10813094380912363|58","1931254292|3|15:35:00|60|1213432453|10313093990912354|58","2904169401|12|15:35:00|60|2011584683|17213647260942699|57","1561893142|8|15:37:00|60|3211140642|18213094960795507|57","4198886535|6|15:38:00|60|3519554763|10513094450295944|57","4122770022|9|15:37:00|60|1736981303|17313095150912393|57","3711272335|4|15:36:00|60|1760224038|17813864020942709|54","3487389407|2|15:38:00|60|2577613756|13413093860912349|58","3411985938|13|15:37:00|60|697925458|11813095660912423|51","4248981646|9|15:35:00|60|3224579423|713095170912389|60","3211140642|9|15:35:00|60|1102200894|9613095820912395|57","2624477086|6|15:37:00|60|4198886535|11013094440295944|56","3649286437|3|15:36:00|60|73874293|13813093970095500|57","2924666242|1|15:35:00|120|2247827349|21513092920912269|58","1876271269|7|15:35:00|120|1393958362|10513094670912379|44","44881418|4|15:37:00|60|175753322|17513864020942709|56","44881418|12|15:37:00|60|3475396030|18113647340942701|56","1727514119|5|15:36:00|60|1393958362|10713094380912363|57","73874293|8|15:35:00|60|3211140642|10013094890795505|55","73874293|3|15:36:00|60|645341577|10613093990095500|57","244503826|2|15:36:00|120|1721597436|21513093760095484|57","2669665705|13|15:35:00|120|3524584243|11813095680912413|54","2669665705|1|15:35:00|120|2011584683|21513092920912270|58","3217152725|9|15:37:00|120|1390530723|12213095170912399|57","1450883263|12|15:36:00|120|3475396030|11013647210942699|58","2358884938|4|15:35:00|60|606571514|17913864020942709|54","645341577|3|15:35:00|60|73874293|13213093970912354|59","3524584243|13|15:36:00|60|2669665705|12913095590912416|48","2009211090|12|15:36:00|60|3781035794|18813647320942699|58","2198512348|13|15:34:00|60|44881418|7213095560912416|44","1390530723|9|15:38:00|120|3217152725|18813095120912393|58","2011584683|12|15:38:00|60|2904169401|15613647350942701|56","2011584683|1|15:38:00|60|2247827349|20013092970912277|59","2801003483|6|15:37:00|60|1450883263|10613094450295944|56","1213432453|4|15:37:00|60|3300801987|17013864020942711|52","3117275467|2|15:38:00|60|3265715605|20513093810912330|56","3781035794|12|15:37:00|60|2009211090|10713647210942701|58","4012104432|10|15:36:00|120|2488289503|8113164370917610|55","3164047331|9|15:36:00|60|1390530723|17913095150912393|57","4225800166|13|15:34:00|60|2669665705|11813095680912413|54","3875198686|6|15:34:00|60|2801003483|18413094540295944|57","3300801987|8|15:37:00|60|3653339166|17213094920795507|57","4013515236|3|15:36:00|120|552165531|10513093990912354|59","2535004149|14|15:36:00|120|2871016604|18613164420912435|59","618858167|13|15:36:00|120|552165531|7313095620912423|48","637614763|11|15:38:00|60|3468280332|13713095500440174|55","560256723|10|15:38:00|120|2635662580|9413164340917610|54","2488289503|10|15:34:00|60|4012104432|9013164320917608|51","4290789948|8|15:37:00|60|2496888016|17913094960795507|56","2577613756|7|15:36:00|60|2096931515|10413094670912379|44","2577613756|2|15:35:00|60|3487389407|20713093810912330|58","1362116730|2|15:36:00|60|1282474756|10413093750095483|56","3398784409|8|15:36:00|60|3780921823|18013094970795505|55","3398784409|1|15:35:00|180|3891613492|21013092920912270|58","2871016604|14|15:35:00|60|2535004149|21713095800912430|59","3265715605|2|15:36:00|60|3117275467|15413093790095484|56","3614543683|2|15:36:00|120|3117275467|20513093810912330|56","3614543683|12|15:35:00|60|3838784219|10713647210942701|56","3987776330|11|15:35:00|120|637614763|11213095490440174|56","1098202862|10|15:34:00|60|3715978556|8013164330917606|52","3253812998|10|15:38:00|60|2702846096|14113164360296022|54","2096931515|7|15:36:00|60|2577613756|513094590912377|42","3129038787|6|15:36:00|60|499775835|10613094510912370|55","1393958362|7|15:34:00|60|1876271269|10313094610651562|45","1393958362|5|15:34:00|120|1727514119|813094390912366|58","1126076862|3|15:38:00|60|469044143|10513093990095500|57","1282474756|2|15:38:00|60|1362116730|213093810912326|57","209994619|11|15:34:00|60|3468280332|11813095420912409|55","1194974051|14|15:38:00|120|2871016604|23813164430912430|59","3691015742|13|15:36:00|60|1183318172|13113095590912417|49","3325830777|13|15:34:00|120|3265715605|7413095560912416|46","3714063920|11|15:36:00|60|3987776330|13713095500440174|57","3715978556|4|15:36:00|60|977856475|17713864020942709|56","2635662580|8|15:38:00|120|2496888016|613094970912387|52","2635662580|6|15:38:00|60|3875198686|14213094550295944|57","882210155|7|15:34:00|60|635591290|5713094560651565|44","4065628367|5|15:34:00|120|3907763713|11213094380094711|58","2058569149|4|15:38:00|120|1393958362|18313864020942709|55","469044143|3|15:38:00|60|4091065876|20613093930095500|59","3591610132|8|15:36:00|60|2346477303|9513094940795505|55","3591610132|1|15:36:00|120|2893655003|19713093030912289|58","3891613492|1|15:35:00|120|3398784409|11113092900912257|56","65431437|13|15:38:00|60|2450931568|11813095660912419|49","891393435|9|15:37:00|60|4122770022|17313095190912398|58","891393435|8|15:36:00|120|3300801987|18913094970795507|57","891393435|3|15:35:00|60|3514016666|14013093970095500|56","891393435|11|15:34:00|60|1917711411|11713095430912409|53","3499425610|9|15:34:00|60|729999544|19513095120912395|58","2688858633|8|15:34:00|60|482278776|12313094980795507|55","2465875946|6|15:38:00|60|499775835|11113094510295944|57","1721597436|4|15:38:00|60|1293807658|24213864030942711|48","4091065876|3|15:37:00|60|3412286137|11813093980095500|59","2120950107|2|15:37:00|60|2334959990|13713093860912348|56","2893655003|6|15:36:00|60|2493371295|10713094450912370|54","2893655003|1|15:36:00|60|1523019830|13513093000912283|58","2269163997|3|15:34:00|120|2503048334|18813093960095500|58","2450931568|13|15:37:00|60|65431437|6813095550912416|50","3991952489|12|15:35:00|60|1282210726|11913647310942699|58","1917711411|11|15:35:00|60|891393435|20413095530440174|56","3866913670|10|15:35:00|60|2932899145|9113164320917608|52","482278776|8|15:35:00|60|2688858633|10013094940795505|57","1033620933|7|15:34:00|120|3098817292|6213094570651565|45","20785767|6|15:38:00|60|1950730894|18713094520912370|56","1293807658|4|15:38:00|60|1282210726|16713864020942711|49","2334959990|2|15:37:00|60|2120950107|15713093790095484|58","1523019830|1|15:34:00|120|3095607449|21413093010912285|58","3877040829|3B|15:36:00|60|2269163997|12213094250651521|45","380937225|14|15:36:00|60|1065328272|21913095790912435|59","2274972608|13|15:38:00|180|10090157|12713095590912413|49","3427371663|9|15:35:00|60|3253812998|18213095190912398|59","1771918760|10|15:34:00|60|3866913670|10613164400296022|54","125894007|8|15:35:00|60|482278776|17813094910795505|55","3098817292|7|15:35:00|120|1033620933|10513094610651562|40","2258265757|5|15:36:00|120|2277425032|13413094420912363|57","1282210726|12|15:35:00|120|3991952489|10313647290942700|56","3095607449|1|15:36:00|60|2920343104|21413093010912285|58","2738613188|5|15:38:00|60|3907763713|11813094300912363|57","2738613188|2|15:36:00|60|1500021116|10013093750095484|57","1065328272|8|15:38:00|120|73874293|513094970912387|56","1065328272|12|15:38:00|120|2011584683|10113647290942700|56","10090157|13|15:37:00|120|271775302|12713095640912419|47","3827069729|11|15:38:00|0|1100607264|11713095430912409|53","3827069729|1|15:36:00|60|1877754383|13713093000912283|59","3882868379|7|15:35:00|120|2177031349|6513094570651565|44","351139424|9|15:38:00|60|3741637293|18413095150912395|58","890688308|7|15:37:00|120|3098817292|10613094610651562|40","2277425032|5|15:38:00|180|2085226230|13413094420912363|57","1465479446|4|15:35:00|60|1282210726|11713864000942709|53","475845330|2|15:34:00|120|3873492639|20513093830912330|56","2610627973|7B|15:38:00|60|1463586519|12213094800651583|25","2014137071|7|15:34:00|120|2692076464|9513094590651562|47","552165531|3|15:34:00|60|645341577|13213093970912354|57","552165531|13|15:34:00|120|3524584243|12913095590912416|48","3957216179|13|15:38:00|60|4215555989|7613095560912417|50","1100607264|7|15:36:00|60|2707323384|10713094670912373|43","1100607264|4|15:34:00|60|3711272335|11213864000942709|54","1100607264|1|15:38:00|120|3747807733|11013092900912257|57","1707647480|5|15:35:00|120|2649549238|613094390912366|58","3741637293|9|15:35:00|60|351139424|10513095160912398|57","598631581|6|15:35:00|120|3871409354|18813094540295944|57","598631581|2|15:38:00|60|2334959990|10513093750095484|54","598631581|1|15:35:00|60|3566702934|10613092900912257|57","2085226230|5|15:38:00|180|2277425032|14813094420094711|57","3833855042|3|15:38:00|60|2493342269|12113093980912354|59","3873492639|2|15:36:00|60|475845330|20513093810095484|58","37245713|7|15:37:00|120|890688308|10713094610651563|37","1707647480|5|15:36:00|60|3179893028|13713094370912363|59","1100607264|1|15:36:00|60|3747807733|14213093000912282|57","1100607264|14|15:37:00|120|380937225|22013095790912435|59","1100607264|7|15:37:00|120|986262698|10113094610651562|39","3957216179|13|15:34:00|120|4215555989|12413095660912424|50","552165531|13|15:36:00|60|618858167|11913095660912419|52","552165531|3|15:35:00|60|4013515236|21013094000095500|56","2998612092|11|15:35:00|120|595945906|11913095420912409|57","2014137071|7B|15:36:00|120|2738613188|8313094820651584|33","475845330|2|15:37:00|120|598631581|20513093810095484|55","2493342269|3|15:37:00|120|3833855042|11713093980095500|58","2277425032|5|15:34:00|180|2085226230|12813094370912363|57","890688308|7|15:38:00|120|37245713|6213094570651565|46","351139424|9|15:35:00|60|3741637293|19613095220912399|58","3882868379|10|15:35:00|120|1707647480|9013164340917610|51","980642687|10|15:37:00|60|4152748969|8813164340917608|51","3827069729|11|15:36:00|60|2046468661|20013095460912411|58","10090157|13|15:34:00|60|271775302|12613095640912419|47","1065328272|12|15:34:00|120|2011584683|10013647230942707|56","1065328272|14|15:37:00|60|552165531|21913095790912435|40","2609365027|3B|15:35:00|60|3877040829|12213094250651521|45","2738613188|5|15:37:00|60|2577613756|11213094380094711|59","3095607449|1|15:36:00|60|1523019830|11313092900912257|59","3638581237|3|15:37:00|120|3412286137|10713093990912354|55","1282210726|4|15:37:00|0|1465479446|16613864020942711|51","1950730894|6|15:38:00|120|20785767|13013094500295944|56","125894007|8|15:38:00|60|4278050457|16813094920795507|56","1771918760|10|15:34:00|60|3882868379|9013164340917610|53","3427371663|9|15:36:00|60|3499425610|19613095120912395|58","2274972608|13|15:35:00|120|10090157|8613095650912419|49","2960704645|13|15:37:00|120|1840343478|13313095590912417|49","380937225|7|15:37:00|120|73874293|6913094630912379|42","1091103895|7B|15:35:00|60|209994619|8213094820651584|36","2334959990|2|15:34:00|60|2120950107|213093810912326|58","3412286137|3|15:38:00|60|4091065876|12013093980912354|59","53962395|5|15:36:00|60|4198988390|413094340912366|58","20785767|9|15:34:00|120|3217152725|18713095150912395|55","482278776|8|15:35:00|60|125894007|12313094980795507|55","729999544|9|15:35:00|60|3499425610|14213095180912398|58","896555290|10|15:37:00|60|352028051|8313164330917606|53","1917711411|3|15:37:00|60|3514016666|10313093990912354|57","2450931568|13|15:38:00|120|2274972608|6513095550912413|50","2269163997|3|15:35:00|120|3379773416|1613093960912353|59","1569477485|7B|15:35:00|60|1091103895|8213094790651584|35","2893655003|2|15:36:00|120|3761260163|21313093810912330|58","2893655003|9|15:37:00|60|3110610795|2413095220912389|58","4091065876|3|15:37:00|60|469044143|20413094000912354|58","1721597436|2|15:37:00|60|244503826|10613093750095483|56","4198988390|5|15:35:00|60|4065628367|613094400912366|58","635591290|7|15:34:00|120|1033620933|10313094670912379|42","3499425610|9|15:34:00|60|3427371663|18213095190912398|59","2932899145|10|15:37:00|60|3866913670|9813164400917614|53","891393435|11|15:37:00|120|3714063920|13813095500440174|55","891393435|5|15:35:00|120|4122770022|14013094420094711|58","891393435|9|15:34:00|120|3300801987|20413095120912395|55","3200465306|12|15:34:00|60|2075612487|10213647290942700|58","3421576237|13|15:35:00|120|3691015742|12213095660912424|53","3086704803|8|15:35:00|120|562653801|18213094920795507|57","1867201487|9|15:36:00|60|1990381110|2313095220912389|55","562653801|8|15:36:00|120|3086704803|17113094970795505|52","3235782074|9|15:37:00|120|129206825|19713095150912395|55","673864223|8|15:36:00|120|3246051268|10513094880795507|58","129206825|9|15:37:00|60|1360893278|14513095180912399|56","3246051268|8|15:37:00|120|2181002575|18713094910795507|57","1360893278|9|15:36:00|60|3110610795|10413095100912399|55","2181002575|8|15:37:00|120|3246051268|16813094910795505|55","1338908274|7|15:35:00|120|821130227|11113094670912373|43","3110610795|9|15:38:00|120|2893655003|10013095820912395|55","1322902301|8|15:38:00|120|2181002575|10813094950795505|52","821130227|7|15:35:00|60|1338908274|613094610912380|41","737890386|8|15:37:00|120|3345569136|17913094920795507|59","486421116|7|15:37:00|60|3103087595|10013094590912373|46","941822868|7|15:36:00|120|188649288|10913094610651565|47","714987642|9|15:36:00|60|3616461854|10313095100912399|57","3345569136|8|15:37:00|120|737890386|9213094870795505|56","3103087595|7|15:36:00|60|1826166775|10413094650912373|44","188649288|7|15:35:00|120|941822868|9213094650651570|41","2398034976|8|15:37:00|60|3567429859|10213094890795507|54","1826166775|7|15:38:00|120|46216692|11113094670912379|44","1826166775|7|15:35:00|60|3103087595|9113094590651563|40","4158739832|9|15:37:00|120|1736981303|19413095150912395|56","3567429859|8|15:38:00|60|2398034976|17013094960795505|54","46216692|7|15:35:00|120|224821915|11013094670912379|46","3332683073|12|15:37:00|120|2196409879|15913647350942699|59","1736981303|9|15:36:00|60|4158739832|18013095120912393|58","2493371295|6|15:38:00|60|3549826816|11213094510912370|56","2493371295|6|15:35:00|60|2893655003|10513094440295944|58","1314938315|7|15:37:00|60|1202011076|8013094660912379|47","3549826816|6|15:38:00|60|2493371295|10613094440295944|54","2050396911|12|15:37:00|120|2196409879|19113647320942701|55","2346477303|8|15:37:00|60|3100228085|12013094980795505|54","1202011076|7|15:37:00|120|1314938315|9413094650651570|43","3100228085|8|15:38:00|60|3702452106|12013094980795505|54","3100228085|6|15:35:00|60|946374679|313094460912371|58","4261791583|4|15:38:00|60|515539346|17813864020942711|57","1726955494|1|15:38:00|60|276344470|20713092970912277|59","1526455506|12|15:35:00|60|1162874157|17613647260942699|57","3989473618|7|15:37:00|60|1202011076|6613094630651570|41","946374679|6|15:38:00|60|3100228085|10213094450295944|57","515539346|4|15:37:00|60|4261791583|17313864020942709|53","3379773416|3|15:38:00|120|2269163997|11013093990095500|58","3761260163|2|15:37:00|60|1227645826|11013093750095483|58","276344470|1|15:38:00|60|1726955494|19813092970912276|58","1162874157|12|15:38:00|60|1526455506|9813647230942707|55","1162874157|12|15:35:00|60|1450883263|11013647210942699|58","1227645826|2|15:38:00|60|3761260163|14713093790095484|56","3504310849|1|15:35:00|60|276344470|1513092970912259|58","3273349984|13|15:35:00|60|3332581557|7113095580912424|48","3780921823|8|15:35:00|60|3398784409|18513094960795507|56","2177031349|7|15:38:00|120|3882868379|10113094610651563|45","2706513156|6|15:37:00|60|1194974051|10713094440295944|56","3979953845|2|15:37:00|60|1227645826|14713093790095484|57","259791766|1|15:38:00|120|3504310849|21113092920912269|58","642786040|13|15:35:00|120|675269737|7513095620912419|54","3475396030|12|15:36:00|120|44881418|12413647310942699|56","986262698|7|15:36:00|120|1100607264|10813094670912379|46","3494453711|6|15:35:00|60|1745152818|11113094440912370|54","175753322|4|15:38:00|60|4198886535|17513864020942709|56","175753322|4|15:35:00|60|44881418|11013864000942711|57","3830653061|3|15:35:00|60|1742862628|12313093980095500|58","2503048334|3|15:36:00|120|2269163997|11313093980912354|59","3145751766|1|15:38:00|60|3566702934|20413092970912277|59","675269737|13|15:35:00|60|3690575038|7513095560912413|53","4246083363|8|15:35:00|120|3566817926|17313094920795507|58","1745152818|6|15:35:00|60|3494453711|12313094500295944|56","2649549238|5|15:38:00|60|2540754978|413094400912366|57","1742862628|3|15:35:00|120|891393435|10813093990095500|57","94248676|2|15:35:00|60|2858233536|10813093750095483|58","3566702934|1|15:36:00|120|3145751766|10613092900912257|57","3690575038|13|15:38:00|60|675269737|11613095680912416|47","3683962764|12|15:35:00|60|695063120|18013647340942699|58","3566817926|8|15:35:00|60|1994114096|9913094890795507|58","2707323384|7|15:35:00|60|1100607264|313094660912383|39","224821915|7|15:38:00|60|46216692|5613094560651562|43","224821915|6|15:35:00|60|1490149880|17613094540912370|58","604149420|4|15:37:00|60|590575000|11013864000942711|51","2858233536|2|15:36:00|60|94248676|21013093760095484|58","2401493758|13|15:37:00|60|3690575038|12813095640912424|46","695063120|12|15:38:00|60|2488289503|15513647350942699|59","4197757394|9|15:38:00|60|3524584243|12513095170912399|57","4197757394|9|15:35:00|60|645341577|17513095150912393|58","1490149880|6|15:38:00|120|224821915|10413094450295944|56","1490149880|6|15:35:00|60|3180795927|11013094440912370|59","3179893028|5|15:35:00|60|1707647480|13613094370094711|58","590575000|4|15:36:00|60|604149420|11113864000942709|54","2877706505|1|15:38:00|60|2734436604|22713093010912285|59","2877706505|1|15:35:00|120|598631581|21713844180955497|57","3789783956|13|15:35:00|60|2401493758|11613095680912416|43","3180795927|6|15:35:00|120|3616975530|12513094500912370|54","1500021116|2|15:38:00|120|2738613188|10813093750095483|58","1500021116|2|15:35:00|60|3987776330|14913093790095484|57","2120668118|12|15:35:00|60|3481964895|10813647210942699|56","1836707069|9|15:35:00|60|2734436604|20313095220912399|54","3616975530|6|15:35:00|120|3519554763|19013094520912370|58","882992124|5|15:36:00|60|1128226880|12113094300912363|58","3481964895|12|15:35:00|120|2904169401|15313647350942699|57","2734436604|9|15:36:00|120|3224579423|20313095220912399|57","2734436604|1|15:35:00|120|2669665705|22513093010912285|59","3653339166|9|15:36:00|60|3300801987|18213095120912393|58","3653339166|8|15:36:00|60|3300801987|18313094970795505|54","1102200894|9|15:37:00|120|3211140642|17513095150912393|58","1102200894|7|15:35:00|60|73874293|10213094610651562|42","3519554763|6|15:36:00|60|4198886535|13513094550912370|58","3519554763|4|15:35:00|60|515539346|25313864030942709|53","1128226880|5|15:36:00|120|4122770022|19713094400912363|58","1760224038|4|15:35:00|60|3715978556|17713864020942709|55","1931254292|3|15:36:00|120|1213432453|1813093930912353|58","697925458|13|15:36:00|60|2198512348|12813095590912416|50","2904169401|12|15:36:00|60|2011584683|17813647340942699|57","1561893142|9|15:37:00|120|3211140642|19513095190912399|56","1561893142|8|15:38:00|60|3211140642|11413094950795507|57","2696990795|7|15:38:00|60|1102200894|10313094610651562|48","2696990795|7|15:35:00|120|2425224985|10513094670912373|41","4198886535|4|15:38:00|60|175753322|17713864020942711|57","4122770022|9|15:38:00|60|1736981303|18113095120912393|57","4122770022|5|15:37:00|120|1128226880|12313094300094711|57","3711272335|4|15:37:00|60|1760224038|26013864030942709|54","1152988904|3|15:38:00|60|3649286437|10713093990095500|57","3487389407|2|15:35:00|120|1721597436|10613093750095483|59","2247827349|1|15:35:00|120|2924666242|10713092900095468|60","3411985938|13|15:38:00|120|697925458|7313095560912416|51","3411985938|13|15:34:00|60|4225800166|7413095580912419|55","4248981646|9|15:36:00|120|3224579423|17813095150912393|60","3211140642|9|15:38:00|60|1561893142|9213095090912393|58","3211140642|9|15:36:00|60|1102200894|19113095150912395|57","2425224985|7|15:35:00|60|2696990795|5813094560651562|43","2624477086|6|15:38:00|60|4198886535|10913094510295944|56","2624477086|6|15:34:00|60|44881418|10213094450912370|58","3649286437|3|15:37:00|120|73874293|12113093980095500|57","2924666242|7|15:38:00|60|380937225|9713094590651565|41","2924666242|1|15:36:00|120|2247827349|12013844190955497|58","1876271269|7|15:38:00|60|2425224985|10413094610651563|40","1876271269|7|15:36:00|120|1393958362|6813094630912379|44","44881418|6|15:35:00|60|1450883263|10213094450912370|55","44881418|4|15:38:00|60|175753322|24413864010942709|56","44881418|13|15:35:00|120|3789783956|7213095560912416|47","44881418|12|15:38:00|120|3475396030|10413647210942701|56","44881418|12|15:34:00|120|3683962764|12313647310942699|56","1727514119|5|15:37:00|60|1393958362|13413094370912363|57","606571514|4|15:34:00|60|2358884938|17013864020942711|57","73874293|8|15:36:00|60|3211140642|11413094950795505|55","73874293|7|15:34:00|120|380937225|813094650651581|46","73874293|3|15:37:00|120|645341577|13813093970095500|57","73874293|3|15:34:00|60|3649286437|17413094020912354|58","244503826|2|15:37:00|60|1721597436|20013093810095484|57","3747807733|1|15:38:00|60|1100607264|10713092900095468|59","2669665705|13|15:36:00|60|3524584243|12013095660912419|54","2669665705|1|15:38:00|60|2734436604|10813092900912257|58","2669665705|1|15:36:00|60|2011584683|10813092900095468|58","595945906|11|15:36:00|60|209994619|19913095460912409|55","3217152725|9|15:38:00|120|1390530723|19913095120912395|57","1450883263|6|15:34:00|60|2801003483|413094550912369|58","1450883263|12|15:37:00|60|3475396030|19513647320942699|58","2358884938|4|15:38:00|60|1213432453|17113864020942711|57","2358884938|4|15:36:00|120|606571514|24913864010942709|54","645341577|9|15:38:00|60|4197757394|9613095820912395|55","645341577|3|15:36:00|60|73874293|19713093930912354|59","3524584243|9|15:34:00|120|4197757394|313095820912389|59","3524584243|13|15:37:00|120|2669665705|11813095680912416|48","3524584243|13|15:34:00|120|552165531|11813095680912414|51","2009211090|12|15:37:00|60|3781035794|12113647310942699|58","600722887|10|15:38:00|120|2635662580|9013164320917608|53","2198512348|13|15:35:00|120|44881418|11613095680912417|44","2198512348|10|15:36:00|120|4012104432|12113164410917606|53","2198512348|10|15:34:00|60|600722887|10413164400296022|54","2011584683|8|15:37:00|60|4225800166|17813094910795507|56","2011584683|8|15:34:00|120|1065328272|18513094970795505|53","2011584683|12|15:36:00|120|1065328272|313647310942702|57","2011584683|1|15:34:00|120|2669665705|21313092920912269|57","2692076464|7|15:35:00|60|1393958362|10413094610651563|43","2801003483|6|15:38:00|60|1450883263|18513094540295944|56","2801003483|6|15:35:00|120|3875198686|413094550912369|58","1213432453|4|15:38:00|60|3300801987|10713864000942711|52","1213432453|3|15:37:00|60|1917711411|9413093920912354|57","3117275467|2|15:34:00|60|3614543683|20013093810095484|56","2890651828|14|15:35:00|60|2535004149|18613164420912435|59","3781035794|12|15:38:00|60|2009211090|15813647350942701|58","3468280332|11|15:34:00|60|209994619|13513095500440174|57","4012104432|10|15:37:00|60|2488289503|13313164360917606|55","4012104432|10|15:34:00|120|2198512348|13113164380296022|52","3164047331|9|15:37:00|60|1390530723|18813095120912393|57","4225800166|8|15:37:00|60|2011584683|17913094960795505|57","4225800166|13|15:35:00|120|2669665705|7413095580912419|54","3875198686|6|15:37:00|60|2635662580|413094550912369|57","3875198686|6|15:35:00|120|2801003483|10613094450295944|57","3300801987|9|15:35:00|60|3653339166|19513095190912399|55","3300801987|8|15:38:00|60|3653339166|18913094970795507|57","3300801987|4|15:35:00|60|1213432453|11413864000942709|55","4013515236|3|15:37:00|120|552165531|17513093960912354|59","1877754383|1|15:34:00|180|3398784409|19913093030912289|58","2535004149|14|15:37:00|120|2871016604|23913164430917618|59","2974665047|13|15:36:00|60|1183318172|11813095660912420|45","618858167|13|15:37:00|120|552165531|13013095590912416|48","3838784219|12|15:37:00|120|3781035794|10213647290942700|54","3838784219|12|15:34:00|60|3614543683|14913647350942699|57","637614763|11|15:36:00|60|3987776330|11813095420912409|55","560256723|10|15:34:00|120|3565805587|10313164400296022|54","2488289503|12|15:34:00|60|695063120|15313647350942701|55","2488289503|10|15:35:00|60|4012104432|12913164410296022|51","2673577552|9|15:35:00|60|3164047331|17913095150912393|57","4290789948|8|15:38:00|60|2496888016|11213094950795507|56","4290789948|8|15:34:00|60|4225800166|513094970912387|53","2577613756|7|15:37:00|60|2096931515|9513094590651565|44","2577613756|5|15:34:00|120|2058569149|11113094380094711|58","2577613756|2|15:36:00|60|3487389407|11213093880095483|58","2826028950|4|15:35:00|60|3300801987|25013864010942709|54","1362116730|2|15:37:00|120|1282474756|21313093770912330|56","1362116730|2|15:34:00|120|3265715605|15413093790095484|56","3398784409|8|15:37:00|60|3780921823|12113094980795505|55","3398784409|5|15:38:00|60|3179893028|12213094300094711|57","3398784409|1|15:36:00|180|3891613492|10513092900095468|58","2871016604|14|15:38:00|60|1194974051|18613164420912435|59","2871016604|14|15:36:00|120|2535004149|18213164420912430|59","1183318172|13|15:34:00|60|2974665047|13013095590912417|49","3265715605|2|15:37:00|60|3117275467|13613093860912349|56","3265715605|13|15:34:00|60|3325830777|6513095550912413|49","3614543683|2|15:37:00|60|3117275467|22013093760912330|56","3614543683|12|15:38:00|60|2075612487|12013647310942699|57","3614543683|12|15:36:00|60|3838784219|10213647290942700|56","3987776330|2|15:38:00|60|2858233536|13213093860912349|54","3987776330|11|15:36:00|60|637614763|14513095520440174|56","3565805587|10|15:37:00|120|560256723|9213164320917606|53","1098202862|10|15:35:00|60|3715978556|9813164400917614|52","3253812998|9|15:36:00|60|2673577552|18213095190912398|59","3253812998|9|15:34:00|60|3427371663|18513095150912395|57","2496888016|8|15:34:00|60|4290789948|12413094980795505|56","2096931515|7|15:37:00|60|2577613756|513094610912377|42","2096931515|7|15:34:00|60|882210155|10213094610651565|44","3129038787|6|15:37:00|60|499775835|413094520912371|55","3907763713|5|15:37:00|120|2738613188|613094400912366|59","1393958362|7|15:35:00|120|1876271269|513094590912381|45","1393958362|5|15:37:00|120|2058569149|10713094380912363|54","1393958362|5|15:35:00|60|1727514119|10113094320094711|58","1393958362|4|15:36:00|60|2058569149|10513864000942711|52","1126076862|3|15:34:00|60|1282474756|17513093960912354|57","1282474756|3|15:36:00|120|4013515236|1913093930912353|59","1282474756|3|15:34:00|60|1126076862|18413094020095500|57","209994619|7B|15:37:00|120|2610627973|8213094790651584|37","209994619|11|15:35:00|60|3468280332|11213095440912409|55","1194974051|6|15:37:00|60|946374679|10213094450295944|56","1194974051|6|15:34:00|60|2706513156|10513094450912370|58","1194974051|14|15:35:00|120|3891613492|22113095790912435|59","3691015742|13|15:37:00|120|1183318172|12213095660912424|49","3325830777|13|15:35:00|120|2974665047|11713095680912414|49","3325830777|13|15:35:00|60|3265715605|13013095590912416|46","2075612487|12|15:35:00|60|3614543683|10213647290942700|56","3714063920|11|15:37:00|60|3987776330|11813095420440174|57","4025722812|10|15:34:00|120|3720819819|8913164340917608|54","3715978556|4|15:37:00|60|977856475|11213864000942709|56","3715978556|10|15:37:00|60|1098202862|9113164320917608|53","3715978556|10|15:34:00|60|2932899145|11913164380917610|53","2635662580|8|15:36:00|120|2688858633|18313094970795507|55","2635662580|6|15:34:00|60|3129038787|13313094550912370|56","882210155|7|15:37:00|60|2096931515|9513094590651563|42","882210155|7|15:35:00|60|635591290|10213094610651565|44","499775835|6|15:37:00|60|2465875946|10613094510912370|58","4065628367|5|15:35:00|120|3907763713|10313094320094711|58","2058569149|5|15:36:00|120|1393958362|11113094380094711|58","2058569149|5|15:34:00|120|2577613756|13213094370912363|56","2058569149|4|15:36:00|120|1721597436|24213864030942711|53","469044143|3|15:34:00|60|1126076862|1913093930912353|58","48157230|2|15:34:00|60|1282474756|10313093750095484|57","3591610132|8|15:37:00|120|2346477303|17913094970795505|55","3591610132|8|15:34:00|60|3930049404|10013094890795507|59","3591610132|1|15:37:00|120|2893655003|10413092900095468|58","3891613492|14|15:38:00|180|1100607264|18513164420912435|59","3891613492|1|15:36:00|120|3398784409|22013092920912269|56","3421576237|13|15:37:00|120|3691015742|6813095550912417|53","3421576237|13|15:34:00|120|1840343478|12713095640912420|47","3200465306|12|15:35:00|60|2075612487|10213647230942707|58","891393435|9|15:38:00|120|4122770022|2013095150912389|58","891393435|9|15:35:00|60|3300801987|19213095150912395|55","891393435|8|15:37:00|120|3300801987|10013094880795507|57","891393435|5|15:38:00|120|1727514119|10813094380912363|55","891393435|3|15:36:00|60|3514016666|18913094020095500|56","891393435|11|15:38:00|60|3714063920|11313095490440174|55","891393435|11|15:36:00|120|1917711411|11113095440912409|53","2932899145|10|15:35:00|60|3866913670|11913164380917610|53","3499425610|9|15:35:00|60|729999544|9513095100912399|58","2688858633|8|15:37:00|60|2635662580|613094970912387|56","2688858633|8|15:35:00|60|482278776|11013094950795507|55","635591290|7|15:36:00|120|882210155|10613094610651563|48","2465875946|6|15:34:00|120|20785767|10513094510912370|58","4198988390|5|15:36:00|120|4065628367|14313094370094711|58","4198988390|5|15:34:00|120|53962395|10413094380912363|57","1721597436|2|15:35:00|120|244503826|15913093790912333|56","4091065876|3|15:38:00|120|3412286137|20913094000095500|59","4091065876|3|15:35:00|60|469044143|10613093990912354|58","2120950107|2|15:38:00|60|2334959990|20213093810912330|56","2893655003|9|15:34:00|120|3110610795|17013095150912393|58","2893655003|6|15:37:00|60|2493371295|11213094510912370|54","2893655003|2|15:34:00|60|3761260163|11513093880095483|58","2893655003|1|15:37:00|60|1523019830|20813092920912270|58","2269163997|3B|15:37:00|60|3877040829|10113094270651522|44","2269163997|3|15:35:00|120|2503048334|10913093990095500|58","1840343478|13|15:36:00|120|3421576237|13213095590912417|48","2450931568|13|15:38:00|120|65431437|7513095560912416|50","3991952489|12|15:38:00|120|3200465306|10313647230942707|56","3991952489|12|15:36:00|60|1282210726|14813647350942699|58","1917711411|3|15:38:00|60|3514016666|9413093920912354|57","1917711411|11|15:36:00|120|891393435|11313095490440174|56","896555290|10|15:35:00|60|352028051|12313164410917606|53","3866913670|10|15:38:00|60|2932899145|13413164380296022|52","729999544|9|15:38:00|120|1374784815|18513095150912395|58","482278776|8|15:36:00|60|2688858633|613094970912387|57","1033620933|7|15:37:00|60|635591290|10513094610651562|44","1033620933|7|15:35:00|120|3098817292|9713094650912379|45","20785767|9|15:37:00|120|4248981646|10213095160912398|59","20785767|6|15:34:00|60|2465875946|10713094450295944|57","53962395|5|15:38:00|120|2258265757|9613094320912364|57","1293807658|4|15:34:00|60|1721597436|11613864000942709|55","3412286137|3|15:35:00|60|4091065876|11913093980912354|59","2334959990|2|15:38:00|120|2120950107|20413093810095484|58","1523019830|1|15:38:00|60|2893655003|14713093000912282|55","1523019830|1|15:35:00|120|3095607449|19513093030912289|58","245371276|7B|15:37:00|120|1569477485|11913094800651584|31","3877040829|3B|15:38:00|60|2269163997|14913094260651521|45","380937225|7|15:34:00|120|73874293|10013094650912379|42","380937225|14|15:37:00|60|1065328272|18313164420912435|59","2960704645|13|15:38:00|120|4215555989|12713095640912420|49","2274972608|13|15:35:00|120|2450931568|6813095550912416|47","2046468661|11|15:35:00|60|1917711411|11313095490440174|57","3427371663|9|15:36:00|60|3253812998|18013095150912393|59","3427371663|10|15:38:00|60|896555290|12413164410917606|54","1771918760|10|15:36:00|120|3866913670|14613164360296022|54","1374784815|9|15:34:00|120|351139424|19413095120912395|58","125894007|8|15:36:00|60|482278776|513094920912387|55","3098817292|7|15:38:00|120|890688308|10313094670912379|44","3098817292|7|15:36:00|120|1033620933|9613094590651563|40","1950730894|6|15:35:00|60|3871409354|12013094500912370|56","2258265757|5|15:38:00|60|2277425032|10413094380912363|57","1282210726|4|15:38:00|60|1465479446|10413864000942711|51","1282210726|12|15:36:00|60|3991952489|12313647310942701|56","3638581237|3|15:35:00|60|3412286137|17713093960912354|55","3095607449|1|15:37:00|120|2920343104|20713092920912270|58","3095607449|1|15:34:00|60|1523019830|22213092920912269|59","2738613188|7B|15:35:00|60|2014137071|11013094810651583|30","2738613188|5|15:34:00|120|2577613756|913094390912366|59","2738613188|2|15:37:00|60|1500021116|19813093810095484|57","2609365027|3B|15:38:00|60|2998612092|8913094240651522|42","1065328272|8|15:34:00|60|2011584683|11213094950795507|56","1065328272|14|15:38:00|60|380937225|18613164420912430|39","1065328272|12|15:34:00|120|552165531|12113647310942699|57","4215555989|13|15:36:00|120|2960704645|12413095660912424|52","10090157|13|15:38:00|120|271775302|8713095630912419|47","2402899129|12|15:37:00|60|1282210726|10913647210942701|55","2402899129|12|15:34:00|120|41893941|16713647260942699|57","3827069729|11|15:34:00|60|2046468661|11313095490440174|58","3827069729|1|15:37:00|60|1877754383|10613092900095468|59","980642687|10|15:34:00|60|4152748969|10113164400296022|51","3882868379|7|15:36:00|60|2177031349|6013094560651565|44","3882868379|10|15:37:00|60|1771918760|9213164320917608|53","351139424|9|15:34:00|120|1374784815|19113095120912393|55","4278050457|8|15:35:00|60|125894007|513094920912387|55","890688308|7|15:38:00|120|3098817292|6613094570651562|40","890688308|7|15:34:00|120|37245713|10213094670912379|46","3871409354|6|15:34:00|60|1950730894|11113094510295944|57","2277425032|5|15:34:00|120|2258265757|19713094340094711|59","1465479446|4|15:36:00|60|1282210726|25513864010942709|53","2493342269|3|15:37:00|60|3638581237|18013094020912354|58","475845330|2|15:35:00|60|3873492639|19913093810912330|56","2920343104|1|15:36:00|60|2532042518|10213092900095468|58","2920343104|1|15:34:00|120|3095607449|11313092900912257|55","2014137071|7|15:37:00|120|2577613756|10313094610651565|40","2014137071|7|15:35:00|120|2692076464|10413094610651562|47","2998612092|11|15:37:00|120|2805226700|13513095500440174|56","552165531|3|15:35:00|60|645341577|19713093930912354|57","552165531|14|15:37:00|120|1065328272|24113164430912430|59","552165531|13|15:35:00|120|3524584243|11813095680912416|48","552165531|12|15:36:00|120|1065328272|10113647290942700|56","552165531|12|15:34:00|60|2009211090|10613647210942699|57","271775302|13|15:36:00|120|10090157|13313095590912416|55","1100607264|7|15:37:00|60|2707323384|10513094610912373|43","1100607264|4|15:37:00|60|606571514|24713864030942711|58","1100607264|4|15:35:00|60|3711272335|17813864020942709|54","1100607264|14|15:37:00|240|3891613492|22013095800912430|59","1100607264|11|15:34:00|60|3827069729|11913095420440174|57","1100607264|1|15:34:00|120|3827069729|22013093010912285|58","1707647480|5|15:36:00|60|2649549238|613094420912365|58","1707647480|10|15:38:00|120|3882868379|13213164410296022|51","3741637293|9|15:36:00|60|351139424|9713095090912393|57","37245713|7|15:34:00|120|890688308|10013094650651570|37","598631581|6|15:36:00|120|3871409354|11213094510295944|57","598631581|2|15:37:00|120|475845330|21513093760912330|56","598631581|2|15:34:00|120|475845330|10213093750095483|56","598631581|2|15:34:00|60|2334959990|10413093750095484|54","598631581|1|15:36:00|60|3566702934|22213093010912284|57","598631581|1|15:37:00|60|2877706505|22713093010912285|59","598631581|1|15:34:00|60|2877706505|20113092970912277|59","1225648642|4|15:37:00|60|1465479446|11813864000942709|53","1225648642|4|15:34:00|60|1465479446|11713864000942709|53","3833855042|3|15:35:00|60|2493342269|10713093990912354|59","3873492639|2|15:37:00|120|475845330|15913093790095484|58","2532042518|1|15:37:00|60|2920343104|22513092920912269|58","2532042518|1|15:34:00|60|2920343104|14713093000912282|58","1707647480|10|15:34:00|120|3882868379|9313164340917608|51","1707647480|5|15:35:00|60|3179893028|19713094340912363|59","4152748969|10|15:38:00|120|980642687|12513164410917606|51","1100607264|1|15:35:00|60|3747807733|10913092900912257|57","1100607264|14|15:35:00|240|3891613492|18413164420912430|59","1100607264|14|15:35:00|120|380937225|18313164420912435|59","1100607264|4|15:35:00|60|606571514|10713864000942711|58","1100607264|7|15:35:00|120|986262698|10113094610651563|39","41893941|12|15:35:00|120|2402899129|10913647210942701|55","271775302|13|15:38:00|60|10090157|6913095550912416|55","552165531|12|15:34:00|120|1065328272|15613647350942701|56","552165531|13|15:34:00|60|618858167|11713095680912413|52","552165531|13|15:38:00|120|3524584243|7313095620912423|48","552165531|3|15:34:00|60|4013515236|10513093990095500|56","552165531|3|15:38:00|60|645341577|10513093990912354|57","2998612092|11|15:34:00|60|595945906|13813095500912409|57","2014137071|7|15:37:00|120|2692076464|5913094560651562|47","2014137071|7|15:36:00|120|2577613756|6713094630912373|40","2920343104|1|15:35:00|120|2532042518|21313093010912285|58","475845330|2|15:36:00|120|598631581|10513093750095484|55","2493342269|3|15:35:00|120|3638581237|12013093980912354|58","2493342269|3|15:35:00|60|3833855042|10313093990095500|58","1465479446|4|15:36:00|60|1225648642|10313864000942711|51","2277425032|5|15:37:00|120|2258265757|19813094340094711|59","3871409354|6|15:38:00|60|1950730894|11213094510295944|57","890688308|7|15:37:00|120|37245713|10213094670912373|46","4278050457|8|15:38:00|60|3305905320|11013094950795507|56","4278050457|8|15:38:00|60|125894007|10113094940795505|55","351139424|9|15:37:00|120|1374784815|9713095090912393|55","3882868379|10|15:34:00|120|1707647480|7913164330917606|51","3882868379|7|15:34:00|120|3989473618|9213094590651563|43","980642687|10|15:36:00|120|4152748969|14613164390296022|51","3827069729|1|15:34:00|60|1100607264|10913092900912257|57","3827069729|1|15:38:00|60|1100607264|21813092920912269|57","2402899129|12|15:34:00|60|1282210726|10313647290942700|55","10090157|13|15:35:00|180|2274972608|12313095660912423|49","4215555989|13|15:36:00|120|3957216179|11513095680912414|49","4215555989|13|15:38:00|60|2960704645|7713095580912424|52","1065328272|12|15:37:00|120|552165531|15213647350942699|57","1065328272|14|15:35:00|120|552165531|18213164420912435|40","1065328272|8|15:36:00|60|2011584683|18613094970795507|56","2609365027|3B|15:37:00|60|2998612092|12213094250651522|42","2738613188|2|15:35:00|60|2577613756|11213093880095483|59","2738613188|5|15:36:00|60|2577613756|14313094420094711|59","2738613188|7B|15:34:00|60|245371276|10913094810651584|28","1463586519|7B|15:36:00|120|1091103895|8513094790651583|25","3638581237|3|15:34:00|60|2493342269|10313093990095500|58","3638581237|3|15:38:00|60|2493342269|10413093990095500|58","1282210726|12|15:36:00|120|2402899129|11913647310942699|57","1282210726|4|15:36:00|60|1465479446|23113864010942711|51","1950730894|6|15:34:00|60|3871409354|313094520912371|56","1950730894|6|15:37:00|60|20785767|10813094450295944|56","3098817292|7|15:36:00|120|890688308|6213094570651565|44","125894007|8|15:36:00|60|4278050457|12313094980795507|56","1374784815|9|15:37:00|120|729999544|18213095150912393|54","1374784815|9|15:37:00|120|351139424|19513095120912395|58","3427371663|10|15:34:00|60|896555290|12413164380917610|54","3427371663|9|15:35:00|60|3499425610|18513095150912395|58","2046468661|11|15:37:00|60|3827069729|11713095430912409|53","2046468661|11|15:38:00|60|1917711411|13913095500440174|57","2274972608|13|15:38:00|120|2450931568|12313095660912423|47","2960704645|13|15:35:00|120|1840343478|12013095680912417|49","380937225|14|15:35:00|120|1100607264|22013095800912430|59","380937225|7|15:36:00|120|73874293|5913094560651565|42","3877040829|3B|15:36:00|60|2609365027|12213094250651522|43","245371276|7B|15:35:00|120|1569477485|10913094810651584|31","1523019830|1|15:35:00|120|2893655003|22213092920912269|55","2334959990|2|15:37:00|60|598631581|10313093750095483|56","3412286137|3|15:36:00|60|3638581237|18313094020095500|57","3412286137|3|15:37:00|120|4091065876|17913094020912354|59","1293807658|4|15:38:00|60|1721597436|18413864020942709|55","53962395|5|15:35:00|120|4198988390|11313094380094711|58","20785767|6|15:37:00|60|2465875946|14313094550295944|57","20785767|9|15:36:00|120|4248981646|18713095120912393|59","1033620933|7|15:38:00|60|3098817292|10213094610651565|45","482278776|8|15:34:00|60|125894007|17513094910795507|55","482278776|8|15:38:00|120|2688858633|10113094880795505|57","729999544|9|15:37:00|120|1374784815|19813095220912399|58","3866913670|10|15:35:00|60|1771918760|11913164410917606|53","896555290|10|15:34:00|120|352028051|14113164390917606|53","1917711411|11|15:36:00|60|2046468661|19913095530912409|57","1917711411|3|15:36:00|60|3514016666|13013093970912354|57","3991952489|12|15:36:00|120|3200465306|18313647260942701|56","2450931568|13|15:36:00|120|2274972608|12713095590912413|50","1840343478|13|15:36:00|120|2960704645|12713095640912420|49","2269163997|3|15:34:00|60|3379773416|9113093920912354|59","2269163997|3|15:38:00|120|2503048334|21813094000095500|58","1569477485|7B|15:34:00|60|1091103895|8213094820651584|35","2893655003|1|15:34:00|120|3591610132|20813092970912276|58","2893655003|1|15:38:00|120|3591610132|21013092970912276|58","2893655003|9|15:35:00|120|714987642|9913095820912395|55","2893655003|9|15:36:00|60|3110610795|8913095090912393|58","2120950107|2|15:35:00|60|48157230|213093810912326|58","4091065876|3|15:34:00|60|469044143|8213093890912354|58","1721597436|2|15:35:00|120|3487389407|19913093810095484|58","1721597436|2|15:34:00|60|244503826|20513093810912330|56","1721597436|4|15:36:00|120|2058569149|18313864020942709|55","4198988390|5|15:34:00|60|4065628367|10313094320094711|58","2465875946|6|15:37:00|120|20785767|17113094540912370|58","635591290|7|15:38:00|120|882210155|10513094610651562|48","2688858633|8|15:37:00|60|482278776|17613094910795507|55","2688858633|8|15:36:00|60|2635662580|10013094940795505|56","3499425610|9|15:37:00|60|729999544|19613095120912395|58","2932899145|10|15:34:00|60|3866913670|11913164410917606|53","352028051|10|15:36:00|60|4025722812|12313164410917606|54","891393435|11|15:36:00|120|3714063920|20413095530440174|55","891393435|3|15:38:00|60|3514016666|12313093980095500|56","891393435|5|15:37:00|60|1727514119|12013094300912363|55","891393435|8|15:34:00|120|3300801987|11413094950795507|57","891393435|8|15:38:00|60|1994114096|11313094950795505|52","891393435|9|15:36:00|120|4122770022|18113095120912393|58","3200465306|12|15:38:00|60|3991952489|17413647340942699|58","65431437|13|15:37:00|120|3325830777|13113095590912416|51","3421576237|13|15:37:00|120|1840343478|12713095590912414|47","1990381110|9|15:35:00|120|1867201487|10113095820912395|56","3086704803|8|15:36:00|120|562653801|10213094940795507|57","1867201487|9|15:36:00|60|3235782074|19713095150912395|55","1867201487|9|15:37:00|60|1990381110|9113095820912393|55","562653801|8|15:36:00|60|673864223|10013094870795507|57","562653801|8|15:37:00|120|3086704803|10613094950795505|52","3235782074|9|15:37:00|120|1867201487|2213095190912389|57","3235782074|9|15:38:00|120|129206825|10113095820912395|55","673864223|8|15:36:00|60|562653801|10613094950795505|55","673864223|8|15:37:00|120|3246051268|10013094870795507|58","129206825|9|15:37:00|120|3235782074|9213095100912398|57","129206825|9|15:38:00|120|1360893278|21013095120912395|56","3246051268|8|15:37:00|120|673864223|16613094960795505|58","3246051268|8|15:38:00|120|2181002575|10413094890795507|57","3954096031|7|15:38:00|120|1338908274|10613094650912373|45","1360893278|9|15:37:00|60|3110610795|10013095820912395|55","2181002575|8|15:37:00|60|1322902301|18013094920795507|54","2181002575|8|15:38:00|120|3246051268|16713094960795505|55","1338908274|7|15:37:00|120|3954096031|6513094630912376|45","1338908274|7|15:36:00|120|821130227|10513094650912373|43","3110610795|9|15:38:00|60|1360893278|2413095220912389|57","3110610795|9|15:35:00|60|1360893278|17813095220912398|57","1322902301|8|15:38:00|60|737890386|12013094950795507|59","1322902301|8|15:35:00|120|737890386|17913094920795507|59","821130227|7|15:37:00|60|486421116|11113094670912373|45","821130227|7|15:38:00|120|1338908274|9113094590651563|41","4024543803|7|15:36:00|120|1673135790|6113094570651562|43","737890386|8|15:38:00|120|3345569136|10413094880795507|59","737890386|8|15:37:00|120|1322902301|16813094960795505|52","486421116|7|15:38:00|60|3103087595|11113094670912373|46","486421116|7|15:38:00|120|821130227|5613094560651563|38","941822868|7|15:38:00|120|188649288|7213094630912379|47","714987642|9|15:36:00|60|2893655003|613095100912389|56","714987642|9|15:37:00|60|3616461854|9913095820912395|57","3345569136|8|15:37:00|120|2398034976|11913094950795507|55","3345569136|8|15:38:00|120|737890386|16913094960795505|56","3103087595|7|15:36:00|60|486421116|9113094590651563|40","3103087595|7|15:37:00|60|1826166775|6613094570912373|44","188649288|7|15:37:00|120|1826166775|10513094650912379|44","188649288|7|15:38:00|120|941822868|9813094610651562|41","3616461854|9|15:38:00|60|4158739832|9913095820912395|55","2398034976|8|15:38:00|60|3567429859|17813094920795507|54","2398034976|8|15:38:00|120|3345569136|17013094910795505|55","2398034976|8|15:35:00|120|3345569136|9213094870795505|55","1826166775|7|15:38:00|180|188649288|9113094590651562|40","1826166775|7|15:36:00|120|188649288|9813094610651562|40","87667279|12|15:37:00|60|3332683073|11213647210942699|56","4158739832|9|15:38:00|60|1736981303|20713095120912395|56","3567429859|8|15:38:00|120|3702452106|10213094890795507|57","3567429859|8|15:35:00|60|3702452106|18813094960795507|57","3567429859|8|15:35:00|120|2398034976|16213094920795505|54","46216692|7|15:36:00|120|224821915|6613094570651565|46","3332683073|12|15:38:00|120|87667279|9713647230942707|56","3332683073|12|15:38:00|120|2196409879|11213647210942699|59","1736981303|9|15:36:00|120|4122770022|20613095120912395|56","1736981303|9|15:37:00|60|4158739832|2313095190912389|58","3702452106|8|15:35:00|60|3100228085|10113094890795507|59","3702452106|8|15:35:00|120|3567429859|17013094910795505|52","2493371295|6|15:35:00|60|3549826816|17713094460912370|56","2493371295|6|15:36:00|60|2893655003|12113094500295944|58","2196409879|12|15:35:00|120|2050396911|17713647260942699|58","1314938315|7|15:38:00|120|1202011076|11013094670912379|47","1314938315|7|15:38:00|120|224821915|9213094590651563|43","1314938315|7|15:35:00|120|224821915|6613094630912376|43","2025816120|4|15:38:00|60|4261791583|11313864000942711|53","2050396911|12|15:38:00|120|2196409879|15113647350942701|55","2050396911|12|15:38:00|60|1526455506|12513647310942699|56","2050396911|12|15:35:00|60|1526455506|413647310942702|56","2346477303|8|15:37:00|60|3591610132|10213094880795507|57","1202011076|7|15:38:00|60|1314938315|6613094630651570|43","1202011076|7|15:38:00|60|3989473618|9913094590651565|42","1202011076|7|15:35:00|60|3989473618|10913094670912379|42","3100228085|8|15:35:00|60|2346477303|11713094950795507|55","3100228085|6|15:36:00|60|946374679|11113094510912370|58","3100228085|6|15:36:00|60|3549826816|10513094510295944|55","4261791583|4|15:36:00|60|2025816120|10813864000942709|56","555784063|3|15:38:00|120|3379773416|19313094020095500|59","555784063|3|15:35:00|60|3379773416|8413093890095500|59","1726955494|1|15:35:00|120|276344470|22113092920912270|59","1526455506|12|15:36:00|60|1162874157|413647310942702|57","3989473618|7|15:37:00|60|3882868379|7913094660912373|44","3989473618|7|15:38:00|60|1202011076|713094650651581|41","946374679|6|15:38:00|60|1194974051|13813094550912370|58","946374679|6|15:35:00|120|1194974051|11213094440912370|58","515539346|4|15:38:00|60|3519554763|24313864010942711|57","515539346|4|15:38:00|60|4261791583|10913864000942709|53","3379773416|3|15:38:00|60|555784063|10113093990912354|58","3379773416|3|15:35:00|60|555784063|19313094000912354|58","3761260163|2|15:37:00|60|2893655003|14613093790095484|56","3761260163|2|15:38:00|60|1227645826|21313093810912330|58","276344470|1|15:38:00|120|3504310849|11213092900095468|59","276344470|1|15:35:00|60|3504310849|11113092900095468|59","3332581557|13|15:38:00|60|3273349984|12513095660912419|56","3332581557|13|15:35:00|60|3273349984|13313095590912413|56","1162874157|12|15:35:00|60|1526455506|17913647340942701|55","1162874157|12|15:36:00|120|1450883263|17613647260942699|58","1227645826|2|15:38:00|60|3979953845|11013093750095483|59","1227645826|2|15:35:00|60|3979953845|10913093750095483|59","1227645826|2|15:35:00|120|3761260163|14613093790095484|56","3504310849|1|15:36:00|120|276344470|19813092970912276|58","3504310849|1|15:35:00|60|259791766|22913093010912285|59","3273349984|13|15:36:00|120|3332581557|11513095680912416|48","3273349984|13|15:36:00|120|642786040|13313095590912413|54","3780921823|8|15:36:00|60|3398784409|10113094880795507|56","2177031349|7|15:38:00|60|986262698|9813094590651565|44","2177031349|7|15:35:00|60|986262698|10813094670912379|44","2177031349|7|15:35:00|120|3882868379|713094650651581|45","2706513156|6|15:35:00|60|3494453711|10513094450912370|56","3979953845|2|15:37:00|120|2503048334|22013093830912330|58","3979953845|2|15:38:00|60|1227645826|20913093760095484|57","259791766|1|15:38:00|60|3145751766|11113092900095468|58","259791766|1|15:35:00|60|3145751766|14113093000912283|58","642786040|13|15:35:00|60|3273349984|11513095680912416|47","642786040|13|15:36:00|120|675269737|12113095680912413|54","3475396030|12|15:36:00|60|1450883263|11713647310942701|55","3475396030|12|15:37:00|60|44881418|15613647350942699|56","986262698|7|15:36:00|60|2177031349|9513094650651570|39","986262698|7|15:37:00|120|1100607264|10613094610651565|46","3494453711|6|15:36:00|60|2706513156|12313094500295944|56","3494453711|6|15:36:00|60|1745152818|10513094450912370|54","2540754978|5|15:38:00|120|224821915|613094420912365|57","2540754978|5|15:35:00|120|224821915|13713094420094711|57","175753322|4|15:35:00|120|4198886535|17413864020942709|56","175753322|4|15:36:00|60|44881418|25213864030942711|57","3830653061|3|15:35:00|60|2503048334|11313093980912354|58","3830653061|3|15:36:00|60|1742862628|10013093920095500|58","2503048334|3|15:36:00|60|3830653061|18813093960095500|58","2503048334|3|15:37:00|120|2269163997|17113094020912354|59","3145751766|1|15:38:00|60|259791766|10613092900912257|59","3145751766|1|15:35:00|60|259791766|1613092970912259|59","3145751766|1|15:35:00|60|3566702934|21813092920912270|59","675269737|13|15:36:00|60|3690575038|13213095590912413|53","675269737|13|15:35:00|60|642786040|7213095580912423|45","4246083363|8|15:36:00|60|3566817926|9713094940795507|58","4246083363|8|15:36:00|60|3398784409|9613094940795505|55","1745152818|6|15:37:00|60|3494453711|10313094450295944|56","2649549238|5|15:38:00|120|1707647480|21913094390912363|58","2649549238|5|15:35:00|120|1707647480|20013094400912363|58","2649549238|5|15:35:00|60|2540754978|13513094370094711|57","1742862628|3|15:36:00|120|891393435|12313093980095500|57","1742862628|3|15:35:00|60|3830653061|19313093930912354|58","94248676|2|15:36:00|60|2858233536|21813093830912330|58","94248676|2|15:36:00|120|2503048334|14813093790095484|56","3566702934|1|15:37:00|60|3145751766|22213093010912284|57","3690575038|13|15:38:00|60|2401493758|7513095620912419|53","3690575038|13|15:35:00|60|2401493758|12013095680912413|53","3690575038|13|15:35:00|120|675269737|8713095630912423|47","3683962764|12|15:36:00|60|695063120|10913647210942699|58","3683962764|12|15:35:00|60|44881418|17713647260942701|54","3566817926|8|15:36:00|60|1994114096|11513094950795507|58","3566817926|8|15:36:00|120|4246083363|11213094950795505|51","2707323384|7|15:36:00|60|1100607264|10113094610651562|39","224821915|7|15:38:00|120|1314938315|6113094560651565|44","224821915|7|15:35:00|60|1314938315|9913094590651565|44","224821915|7|15:35:00|120|46216692|7413094660651570|43","224821915|6|15:36:00|120|1490149880|12613094500912370|58","224821915|5|15:37:00|120|2540754978|11113094380912363|59","604149420|4|15:38:00|60|590575000|24013864010942711|51","604149420|4|15:37:00|120|44881418|11113864000942709|52","2858233536|2|15:38:00|60|94248676|14913093790095484|58","2401493758|13|15:37:00|120|3789783956|7513095560912413|55","2401493758|13|15:38:00|60|3690575038|7213095560912416|46","695063120|12|15:38:00|60|3683962764|15413647350942701|56","695063120|12|15:35:00|60|3683962764|15313647350942701|56","2702846096|10|15:38:00|120|980642687|413164330917609|53","2702846096|10|15:35:00|180|980642687|12713164380296022|53","4197757394|9|15:35:00|120|3524584243|9213095090912395|57","4197757394|9|15:36:00|60|645341577|313095820912389|58","1994114096|8|15:38:00|60|891393435|17313094920795507|58","1994114096|8|15:35:00|120|891393435|10013094880795507|58","1490149880|6|15:35:00|120|224821915|10813094440295944|56","1490149880|6|15:36:00|60|3180795927|10413094450912370|59","3179893028|5|15:35:00|120|3398784409|10913094380912363|59","3179893028|5|15:36:00|120|1707647480|12113094300094711|58","590575000|4|15:36:00|60|977856475|17413864020942711|53","590575000|4|15:37:00|120|604149420|24513864010942709|54","3514016666|3|15:38:00|60|1917711411|10813093990095500|56","3514016666|3|15:35:00|60|1917711411|12213093980095500|56","2877706505|1|15:35:00|120|2734436604|20113092970912277|59","2877706505|1|15:36:00|60|598631581|21213092920912269|57","3789783956|13|15:35:00|120|44881418|12213095660912419|55","3789783956|13|15:36:00|60|2401493758|12813095640912424|43","3180795927|6|15:36:00|60|1490149880|19713094520295944|57","3180795927|6|15:36:00|60|3616975530|213094480912371|54","977856475|4|15:38:00|60|590575000|11213864000942709|56","977856475|4|15:35:00|60|590575000|11113864000942709|56","1500021116|2|15:35:00|60|2738613188|10713093750095483|58","1500021116|2|15:36:00|120|3987776330|13213093860912349|57","2120668118|12|15:35:00|60|2488289503|11813647310942701|57","2120668118|12|15:36:00|60|3481964895|12213647310942699|56","3720819819|10|15:35:00|60|3253812998|8813164320917608|52","1836707069|9|15:36:00|60|2734436604|18913095150912395|54","3616975530|6|15:35:00|120|3180795927|18113094540295944|57","3616975530|6|15:36:00|60|3519554763|17513094540912370|58","882992124|5|15:36:00|120|3398784409|12213094300094711|59","882992124|5|15:37:00|60|1128226880|13613094370912363|58","3481964895|12|15:35:00|120|2120668118|18313647340942701|55","3481964895|12|15:36:00|60|2904169401|10813647210942699|57","2734436604|9|15:36:00|60|1836707069|18513095120912393|57","2734436604|9|15:37:00|120|3224579423|18913095150912395|57","2734436604|1|15:35:00|60|2877706505|13913093000912282|57","2734436604|1|15:36:00|60|2669665705|21613092920912270|59","3653339166|9|15:36:00|60|1561893142|19513095190912399|55","3653339166|9|15:37:00|120|3300801987|9513095820912393|58","3653339166|8|15:36:00|60|1561893142|18213094960795507|57","3653339166|8|15:37:00|60|3300801987|17613094960795505|54","1102200894|9|15:37:00|120|645341577|19113095150912395|54","1102200894|9|15:38:00|120|3211140642|313095820912389|58","1102200894|7|15:35:00|120|2696990795|10413094610651565|43","1102200894|7|15:36:00|120|73874293|413094590912381|42","3519554763|6|15:36:00|60|3616975530|10813094510295944|55","3519554763|6|15:37:00|60|4198886535|17513094540912370|58","3519554763|4|15:35:00|60|4198886535|11113864000942711|54","3519554763|4|15:36:00|60|515539346|17313864020942709|53","1128226880|5|15:36:00|120|882992124|10913094380094711|57","1128226880|5|15:37:00|60|4122770022|12113094300912363|58","1760224038|4|15:35:00|60|3711272335|17213864020942711|56","1760224038|4|15:36:00|60|3715978556|11213864000942709|55","1931254292|3|15:36:00|60|1152988904|18513093960095500|57","1931254292|3|15:37:00|60|1213432453|13113093970912354|58","697925458|13|15:36:00|60|3411985938|13013095590912413|55","697925458|13|15:37:00|60|2198512348|11713095680912416|50","2904169401|12|15:37:00|60|3481964895|10013647230942707|56","2904169401|12|15:37:00|120|2011584683|10813647210942699|57","3224579423|9|15:37:00|60|4248981646|20013095120912395|56","1561893142|9|15:38:00|60|3211140642|20413095120912395|56","1561893142|9|15:38:00|60|3653339166|17513095190912398|58","1561893142|9|15:35:00|60|3653339166|18213095120912393|58","1561893142|8|15:38:00|60|3653339166|10013094890795505|52","1561893142|8|15:35:00|60|3653339166|18313094970795505|52","2696990795|7|15:35:00|60|1102200894|413094590912381|48","2696990795|7|15:36:00|60|2425224985|9613094590651565|41","4198886535|6|15:38:00|120|2624477086|17513094540912370|58","4198886535|6|15:35:00|120|2624477086|513094520912371|58","4198886535|4|15:38:00|120|3519554763|11013864000942709|54","4198886535|4|15:35:00|120|3519554763|10913864000942709|54","4122770022|9|15:38:00|60|891393435|20613095120912395|54","4122770022|5|15:38:00|120|1128226880|13913094370094711|57","4122770022|5|15:37:00|60|891393435|10813094380912363|57","3711272335|4|15:38:00|60|1760224038|11313864000942709|54","1152988904|3|15:38:00|60|1931254292|10413093990912354|59","1152988904|3|15:35:00|60|1931254292|1813093930912353|59","1152988904|3|15:35:00|60|3649286437|13813093970095500|57","3487389407|2|15:36:00|120|1721597436|20713093810912330|59","3487389407|2|15:35:00|120|2577613756|21313093760095484|58","2247827349|1|15:36:00|60|2924666242|21413092920912270|60","2247827349|1|15:37:00|60|2011584683|21513092920912269|58","2247827349|1|15:34:00|120|2011584683|20813093030912288|58","3411985938|13|15:38:00|60|4225800166|11913095680912413|55","3411985938|13|15:35:00|60|4225800166|8813095650912419|55","2805226700|11|15:35:00|120|2998612092|13913095500912409|56","4248981646|9|15:37:00|120|3224579423|9413095090912393|60","4248981646|9|15:37:00|60|20785767|9113095090912395|58","4248981646|9|15:34:00|120|20785767|12213095170912399|58","3211140642|9|15:35:00|60|1561893142|9513095820912393|58","3211140642|9|15:37:00|60|1102200894|9313095090912395|57","3211140642|8|15:35:00|120|73874293|11313094950795507|57","2425224985|7|15:36:00|60|2696990795|613094650912383|43","2425224985|7|15:37:00|60|1876271269|9613094590651565|42","2425224985|7|15:34:00|60|1876271269|10513094670912379|42","2624477086|6|15:34:00|60|4198886535|10813094510295944|56","2624477086|6|15:35:00|60|44881418|13413094550912370|58","3649286437|3|15:36:00|60|1152988904|11613093980912354|59","3649286437|3|15:38:00|120|73874293|18513093960095500|57","2924666242|7|15:37:00|120|2707323384|813094650651581|41","2924666242|7|15:34:00|120|2707323384|10113094610651562|41","2924666242|7|15:35:00|60|380937225|5913094560651565|41","2924666242|1|15:37:00|60|2247827349|10913092900912257|58","2924666242|1|15:37:00|60|3747807733|10713092900095468|59","2924666242|1|15:34:00|60|3747807733|14313844200955499|59","1876271269|7|15:35:00|60|2425224985|613094650912383|40","1876271269|7|15:37:00|120|1393958362|6313094570912373|44","44881418|6|15:35:00|60|2624477086|10513094450295944|57","44881418|6|15:36:00|60|1450883263|13413094550912370|55","44881418|4|15:37:00|60|604149420|25213864030942711|55","44881418|4|15:34:00|60|604149420|17413864020942711|55","44881418|4|15:34:00|60|175753322|17413864020942709|56","44881418|13|15:36:00|60|3789783956|12913095640912423|47","44881418|13|15:37:00|60|2198512348|12213095660912419|56","44881418|13|15:34:00|60|2198512348|11913095680912413|56","44881418|12|15:38:00|60|3683962764|12413647310942699|56","44881418|12|15:35:00|60|3683962764|10913647210942699|56","1727514119|5|15:36:00|60|891393435|813094390912366|58","1727514119|5|15:38:00|120|1393958362|12013094300912363|57","606571514|4|15:38:00|60|2358884938|23613864010942711|57","606571514|4|15:35:00|60|2358884938|23513864010942711|57","606571514|4|15:35:00|120|1100607264|11313864000942709|54","73874293|8|15:37:00|60|3211140642|18513094970795505|55","73874293|7|15:38:00|60|380937225|413094590912381|46","73874293|7|15:35:00|120|380937225|9313094590651562|46","73874293|7|15:36:00|60|1102200894|10013094650912379|41","73874293|3|15:38:00|60|645341577|18713094020095500|57","73874293|3|15:38:00|60|3649286437|11713093980912354|58","73874293|3|15:35:00|60|3649286437|11613093980912354|58","244503826|2|15:36:00|60|3614543683|14013093860912348|58","244503826|2|15:38:00|60|1721597436|10213093750095484|57","3747807733|1|15:37:00|60|2924666242|14213093000912282|57","3747807733|1|15:34:00|60|2924666242|21513092920912269|57","3747807733|1|15:35:00|60|1100607264|22113093010912285|59","2669665705|13|15:37:00|60|3524584243|7413095580912419|54","2669665705|13|15:37:00|120|4225800166|12913095590912416|49","2669665705|13|15:34:00|120|4225800166|11813095660912423|49","2669665705|1|15:35:00|120|2734436604|20713093030912288|58","2669665705|1|15:37:00|120|2011584683|21613092920912270|58","595945906|11|15:35:00|60|2998612092|11113095490440174|57","595945906|11|15:37:00|60|209994619|11913095420912409|55","3217152725|9|15:37:00|120|20785767|2313095120912389|58","3217152725|9|15:34:00|120|20785767|9413095090912393|58","3217152725|9|15:34:00|120|1390530723|9013095090912395|57","1450883263|6|15:35:00|60|2801003483|9413094430912370|58","1450883263|6|15:36:00|120|44881418|20013094520295944|57","1450883263|12|15:38:00|120|3475396030|413647310942702|58","1450883263|12|15:37:00|60|1162874157|9813647230942707|55","1450883263|12|15:34:00|60|1162874157|17913647340942701|55","2358884938|4|15:35:00|120|1213432453|17013864020942711|57","2358884938|4|15:37:00|60|606571514|11413864000942709|54","645341577|9|15:37:00|60|1102200894|313095820912389|58","645341577|9|15:34:00|60|1102200894|18313095120912393|58","645341577|9|15:35:00|60|4197757394|313095100912401|55","645341577|3|15:37:00|60|73874293|11713093980912354|59","3524584243|9|15:38:00|120|4197757394|18513095120912393|59","3524584243|9|15:35:00|120|4197757394|18513095220912398|59","3524584243|9|15:36:00|60|1836707069|9513095820912395|55","3524584243|13|15:38:00|120|2669665705|13213095640912423|48","3524584243|13|15:38:00|120|552165531|7313095620912419|51","3524584243|13|15:35:00|120|552165531|7313095560912413|51","2009211090|12|15:36:00|60|552165531|10113647230942707|58","2009211090|12|15:38:00|60|3781035794|18913647320942699|58","600722887|10|15:37:00|120|2198512348|13413164360917606|54","600722887|10|15:34:00|60|2198512348|13313164360917606|54","600722887|10|15:34:00|120|2635662580|13013164380296022|53","2198512348|13|15:36:00|60|44881418|11713095660912423|44","2198512348|13|15:36:00|60|697925458|12213095660912420|54","2198512348|10|15:38:00|60|4012104432|9113164320917606|53","2198512348|10|15:38:00|120|600722887|10513164400296022|54","2198512348|10|15:35:00|120|600722887|8213164330296022|54","1390530723|9|15:37:00|60|3164047331|19813095120912395|56","1390530723|9|15:34:00|60|3164047331|18613095150912395|56","2011584683|8|15:34:00|120|4225800166|17913094960795507|56","2011584683|8|15:36:00|60|1065328272|17813094960795505|53","2011584683|12|15:35:00|60|2904169401|10013647290942700|56","2011584683|12|15:37:00|120|1065328272|17813647340942699|57","2011584683|1|15:38:00|120|2669665705|21513092920912269|57","2011584683|1|15:35:00|60|2669665705|20113092970912276|57","2011584683|1|15:34:00|60|2247827349|10713092900095468|59","2692076464|7|15:36:00|60|1393958362|9513094590651562|43","2692076464|7|15:37:00|120|2014137071|5813094560651565|44","2692076464|7|15:34:00|60|2014137071|9513094590651565|44","2801003483|6|15:34:00|60|1450883263|10913094510295944|56","2801003483|6|15:36:00|60|3875198686|18813094520912370|58","1213432453|4|15:37:00|60|2358884938|25013864010942709|53","1213432453|4|15:34:00|60|2358884938|17913864020942709|53","1213432453|3|15:36:00|60|1931254292|18813094020095500|56","1213432453|3|15:38:00|60|1917711411|1813093930912353|57","1213432453|3|15:34:00|60|1917711411|19713094000912354|57","3117275467|2|15:35:00|60|3614543683|10213093750095484|56","3117275467|2|15:34:00|60|3265715605|21013093830912330|56","2890651828|14|15:36:00|120|2535004149|22313095790912435|59","3781035794|12|15:37:00|60|3838784219|18813647320942699|58","3781035794|12|15:34:00|120|3838784219|18713647320942699|58","3468280332|11|15:38:00|60|209994619|11213095490440174|57","3468280332|11|15:35:00|60|209994619|19713095460912411|57","3468280332|11|15:36:00|60|637614763|11213095440912409|55","4012104432|10|15:38:00|60|2488289503|12113164410917606|55","4012104432|10|15:38:00|60|2198512348|13213164380296022|52","4012104432|10|15:35:00|120|2198512348|9013164320917608|52","3164047331|9|15:36:00|60|2673577552|12113095170912399|58","3164047331|9|15:38:00|120|1390530723|18213095190912398|57","4225800166|8|15:36:00|60|4290789948|17913094960795507|57","4225800166|8|15:38:00|120|2011584683|16913094920795505|57","4225800166|8|15:34:00|120|2011584683|17813094960795505|57","4225800166|13|15:36:00|120|2669665705|8813095650912419|54","4225800166|13|15:36:00|60|3411985938|11813095660912423|48","3875198686|6|15:38:00|60|2635662580|10713094510912370|57","3875198686|6|15:34:00|60|2635662580|413094520912371|57","3875198686|6|15:36:00|60|2801003483|11113094440295944|57","3300801987|9|15:35:00|120|891393435|17313095190912398|57","3300801987|9|15:36:00|120|3653339166|19213095150912395|55","3300801987|8|15:37:00|120|891393435|18313094970795505|53","3300801987|8|15:34:00|120|891393435|18213094970795505|53","3300801987|8|15:34:00|60|3653339166|12613094980795507|57","3300801987|4|15:36:00|60|1213432453|25013864010942709|55","3300801987|4|15:37:00|60|2826028950|10613864000942711|54","4013515236|3|15:38:00|120|552165531|1913093930912353|59","1877754383|1|15:38:00|120|3398784409|10613092900095468|58","1877754383|1|15:35:00|60|3398784409|10513092900095468|58","1877754383|1|15:36:00|60|3827069729|11013092900912257|57","2535004149|14|15:38:00|60|2871016604|22313095790912435|59","2535004149|14|15:38:00|60|2890651828|18213164420912430|39","2974665047|13|15:37:00|60|1183318172|11713095680912414|45","2974665047|13|15:36:00|120|3325830777|7413095560912417|51","618858167|13|15:38:00|120|552165531|13313095640912423|48","618858167|13|15:37:00|120|3265715605|11913095660912419|49","3838784219|12|15:38:00|60|3781035794|18213647260942701|54","3838784219|12|15:34:00|60|3781035794|10113647230942707|54","3838784219|12|15:36:00|120|3614543683|12013647310942699|57","637614763|11|15:35:00|60|3468280332|11713095420440174|55","637614763|11|15:37:00|60|3987776330|11213095440912409|55","560256723|10|15:38:00|60|3565805587|12813164410296022|54","560256723|10|15:35:00|60|3565805587|14913164390296022|54","2488289503|12|15:38:00|60|695063120|18313647340942701|55","2488289503|12|15:35:00|60|695063120|9913647230942707|55","2488289503|12|15:36:00|60|2120668118|15413647350942699|57","2488289503|10|15:36:00|60|4012104432|10513164400296022|51","2488289503|10|15:35:00|60|1098202862|12013164410917606|51","2673577552|9|15:36:00|60|3164047331|18813095120912393|57","2673577552|9|15:37:00|120|3253812998|12113095170912399|59","2673577552|9|15:34:00|120|3253812998|9213095820912395|59","4290789948|8|15:38:00|120|4225800166|11613094950795505|53","4290789948|8|15:35:00|60|4225800166|12413094980795505|53","2577613756|7|15:36:00|60|2014137071|5913094560651562|41","2577613756|7|15:38:00|120|2096931515|6313094570651565|44","2577613756|5|15:38:00|120|2058569149|11213094380094711|58","2577613756|5|15:35:00|120|2058569149|10213094320094711|58","2577613756|5|15:36:00|60|2738613188|13213094370912363|58","2577613756|2|15:37:00|120|3487389407|10713093750095483|58","2577613756|2|15:34:00|120|2738613188|20413093830912345|58","2826028950|4|15:36:00|60|3300801987|18113864020942709|54","2826028950|4|15:37:00|60|1393958362|16913864020942711|54","1362116730|2|15:38:00|120|1282474756|20413093810912330|56","1362116730|2|15:38:00|120|3265715605|21913093760095484|56","1362116730|2|15:35:00|120|3265715605|13613093860912349|56","3398784409|8|15:36:00|60|4246083363|18513094960795507|58","3398784409|8|15:38:00|60|3780921823|16513094920795505|55","3398784409|5|15:37:00|60|882992124|10913094380912363|58","3398784409|5|15:34:00|120|882992124|12113094300912363|58","3398784409|5|15:35:00|120|3179893028|10813094380094711|57","3398784409|1|15:37:00|120|3891613492|19613092970912277|58","3398784409|1|15:37:00|120|1877754383|11113092900912257|55","3398784409|1|15:34:00|120|1877754383|11013092900912257|55","2871016604|14|15:35:00|60|1194974051|18513164420912435|59","2871016604|14|15:37:00|120|2535004149|23713164430912430|59","1183318172|13|15:34:00|120|3691015742|6513095550912414|47","1183318172|13|15:35:00|60|2974665047|7413095560912417|49","3265715605|2|15:36:00|60|1362116730|21313093770912330|56","3265715605|2|15:38:00|60|3117275467|10313093750095484|56","3265715605|13|15:38:00|60|3325830777|8913095630912420|49","3265715605|13|15:35:00|60|3325830777|11813095660912419|49","3265715605|13|15:36:00|60|618858167|13013095590912416|50","3614543683|2|15:38:00|60|3117275467|11113093880095483|56","3614543683|2|15:37:00|60|244503826|21613093760095484|56","3614543683|2|15:34:00|60|244503826|15213093790095484|56","3614543683|12|15:35:00|60|2075612487|213647310942702|57","3614543683|12|15:37:00|120|3838784219|10213647230942707|56","3987776330|2|15:37:00|60|1500021116|10813093750095483|57","3987776330|2|15:34:00|60|1500021116|21713093770912330|57","3987776330|2|15:35:00|60|2858233536|21013093760095484|54","3987776330|11|15:37:00|60|637614763|13713095500440174|56","3565805587|10|15:37:00|120|4025722812|8913164320917608|52","3565805587|10|15:38:00|120|560256723|10013164400917614|53","3565805587|10|15:34:00|120|560256723|12213164410917606|53","1098202862|10|15:36:00|60|3715978556|12013164410917606|52","1098202862|10|15:35:00|60|2488289503|13213164380296022|53","3253812998|9|15:37:00|60|2673577552|18013095150912393|59","3253812998|9|15:38:00|60|3427371663|18613095150912395|57","3253812998|9|15:35:00|60|3427371663|19613095120912395|57","2496888016|8|15:38:00|60|4290789948|10013094880795505|56","2496888016|8|15:35:00|60|4290789948|18613094970795505|56","2496888016|8|15:36:00|60|2635662580|12413094980795507|55","2096931515|7|15:38:00|60|2577613756|9513094590651563|42","2096931515|7|15:38:00|60|882210155|9513094590651565|44","2096931515|7|15:35:00|60|882210155|6713094630912379|44","3129038787|6|15:36:00|60|2635662580|12813094500295944|57","3129038787|6|15:38:00|120|499775835|17213094460912370|55","3907763713|5|15:36:00|60|4065628367|10513094380912363|58","3907763713|5|15:38:00|60|2738613188|19613094340094711|59","3907763713|5|15:34:00|120|2738613188|14313094420094711|59","1393958362|7|15:36:00|120|1876271269|10413094610651563|45","1393958362|7|15:36:00|60|2692076464|5813094560651565|44","1393958362|5|15:38:00|120|2058569149|13413094370912363|54","1393958362|5|15:34:00|120|2058569149|20913094390912363|54","1393958362|5|15:36:00|120|1727514119|513094400912366|58","1393958362|4|15:35:00|60|2826028950|18113864020942709|52","1393958362|4|15:37:00|60|2058569149|24313864030942711|52","1126076862|3|15:38:00|60|1282474756|10613093990912354|57","1126076862|3|15:35:00|60|1282474756|1913093930912353|57","1126076862|3|15:35:00|60|469044143|11813093980095500|57","1282474756|3|15:37:00|120|4013515236|13413093970912354|59","1282474756|3|15:38:00|120|1126076862|20713093930095500|57","1282474756|3|15:35:00|60|1126076862|20913094000095500|57","1282474756|2|15:37:00|60|48157230|10413093750095483|56","1282474756|2|15:34:00|60|48157230|20813093830912330|56","209994619|7B|15:34:00|120|2610627973|10813094810651584|37","209994619|11|15:36:00|60|3468280332|11913095430912409|55","209994619|11|15:36:00|60|595945906|19713095460912411|57","1194974051|6|15:38:00|60|946374679|10613094510295944|56","1194974051|6|15:38:00|60|2706513156|10613094450912370|58","1194974051|6|15:35:00|60|2706513156|12713094500912370|58","1194974051|14|15:34:00|120|2871016604|18213164420912430|59","1194974051|14|15:36:00|120|3891613492|18513164420912435|59","3691015742|13|15:36:00|60|3421576237|6513095550912414|47","3691015742|13|15:38:00|120|1183318172|7413095620912424|49","3325830777|13|15:38:00|60|65431437|11713095680912413|49","3325830777|13|15:36:00|120|65431437|11813095660912419|49","3325830777|13|15:34:00|120|65431437|7213095560912413|49","3325830777|13|15:36:00|120|3265715605|11913095680912416|46","2075612487|12|15:34:00|60|3200465306|17313647340942699|58","2075612487|12|15:36:00|60|3614543683|10213647230942707|56","3714063920|11|15:37:00|60|891393435|11813095430912409|53","3714063920|11|15:38:00|60|3987776330|20413095530440174|57","4025722812|10|15:38:00|60|3720819819|14913164390296022|54","4025722812|10|15:35:00|60|3720819819|14113164360296022|54","4025722812|10|15:36:00|60|3565805587|9213164320917606|53","3715978556|4|15:38:00|60|977856475|17813864020942709|56","3715978556|4|15:37:00|120|1760224038|10913864000942711|57","3715978556|4|15:34:00|120|1760224038|10813864000942711|57","3715978556|10|15:38:00|60|2932899145|13713164390917606|53","3715978556|10|15:35:00|60|2932899145|13613164390917606|53","2635662580|8|15:35:00|120|2496888016|11613094950795505|52","2635662580|8|15:37:00|120|2688858633|11113094950795507|55","2635662580|6|15:38:00|60|3129038787|413094550912369|56","2635662580|6|15:35:00|120|3129038787|413094520912371|56","2635662580|10|15:37:00|120|600722887|12213164410917606|56","882210155|7|15:38:00|60|2096931515|10613094610651563|42","882210155|7|15:34:00|60|2096931515|5913094560651562|42","882210155|7|15:36:00|120|635591290|6713094630912379|44","499775835|6|15:36:00|60|3129038787|10713094450295944|57","499775835|6|15:38:00|60|2465875946|413094520912371|58","499775835|6|15:34:00|60|2465875946|113094460912371|58","4065628367|5|15:36:00|60|3907763713|613094400912366|58","4065628367|5|15:35:00|120|4198988390|9613094320912364|56","2058569149|5|15:37:00|120|1393958362|10213094320094711|58","2058569149|5|15:38:00|120|2577613756|11913094300912363|56","2058569149|5|15:35:00|120|2577613756|10613094380912363|56","2058569149|4|15:35:00|60|1393958362|26413864030942709|55","2058569149|4|15:37:00|120|1721597436|10513864000942711|53","469044143|3|15:38:00|120|1126076862|20413094000912354|58","469044143|3|15:35:00|60|1126076862|8213093890912354|58","48157230|2|15:38:00|60|1282474756|21313093770095484|57","48157230|2|15:35:00|60|1282474756|20213093810095484|57","48157230|2|15:36:00|60|2120950107|13713093860912348|56","3591610132|8|15:38:00|60|2346477303|16413094920795505|55","3591610132|8|15:38:00|60|3930049404|10213094880795507|59","3591610132|8|15:35:00|60|3930049404|18613094960795507|59","3591610132|1|15:36:00|120|3891613492|20813092970912276|58","3591610132|1|15:38:00|120|2893655003|19513092970912277|58","3891613492|14|15:37:00|60|1194974051|23813164430912430|59","3891613492|14|15:34:00|60|1194974051|23713164430912430|59","3891613492|14|15:35:00|180|1100607264|18413164420912435|59","3891613492|1|15:37:00|120|3398784409|14513093000912282|56","3891613492|1|15:37:00|60|3591610132|19513092970912277|58","3421576237|13|15:38:00|60|3691015742|13213095590912417|53","3421576237|13|15:34:00|120|3691015742|13113095590912417|53","3421576237|13|15:35:00|120|1840343478|7213095580912420|47","65431437|13|15:35:00|60|3325830777|11913095680912416|51","3200465306|12|15:36:00|60|2075612487|15913647350942701|58","3200465306|12|15:37:00|60|3991952489|213647310942702|58","3200465306|12|15:34:00|60|3991952489|11913647310942699|58","891393435|9|15:34:00|120|4122770022|2313095190912389|58","891393435|9|15:36:00|120|3300801987|12713095170912399|55","891393435|8|15:37:00|60|1994114096|12213094980795505|52","891393435|8|15:38:00|120|3300801987|11513094950795507|57","891393435|5|15:37:00|120|4122770022|813094390912366|58","891393435|5|15:34:00|60|4122770022|713094390912366|58","891393435|5|15:35:00|120|1727514119|13413094370912363|55","891393435|3|15:37:00|60|3514016666|10813093990095500|56","891393435|3|15:37:00|120|1742862628|19713094000912354|59","891393435|3|15:34:00|60|1742862628|19313093930912354|59","891393435|11|15:35:00|120|3714063920|11813095420440174|55","891393435|11|15:37:00|60|1917711411|13613095500912409|53","352028051|10|15:34:00|120|4025722812|9213164320917606|54","2932899145|10|15:36:00|60|3866913670|13613164390917606|53","2932899145|10|15:35:00|60|3715978556|9213164340917608|52","3499425610|9|15:36:00|120|729999544|18513095150912395|58","3499425610|9|15:36:00|60|3427371663|9913095820912393|59","2688858633|8|15:38:00|120|2635662580|513094920912387|56","2688858633|8|15:34:00|60|2635662580|11613094950795505|56","2688858633|8|15:36:00|60|482278776|16813094920795507|55","635591290|7|15:35:00|120|1033620933|5713094560651565|42","635591290|7|15:37:00|120|882210155|613094590912377|48","2465875946|6|15:38:00|120|20785767|10613094510912370|58","2465875946|6|15:35:00|60|20785767|113094460912371|58","2465875946|6|15:35:00|60|499775835|10713094450295944|57","4198988390|5|15:37:00|120|4065628367|413094340912366|58","4198988390|5|15:38:00|120|53962395|10513094380912363|57","4198988390|5|15:35:00|60|53962395|11613094300912363|57","1721597436|4|15:34:00|120|2058569149|18213864020942709|55","1721597436|2|15:36:00|60|244503826|11113093880095483|56","1721597436|2|15:37:00|120|3487389407|15213093790095484|58","1721597436|2|15:34:00|120|3487389407|15113093790095484|58","4091065876|3|15:34:00|120|3412286137|18313094020095500|59","4091065876|3|15:36:00|60|469044143|11913093980912354|58","2120950107|2|15:37:00|120|48157230|20313093810095484|58","2120950107|2|15:34:00|60|48157230|20213093810095484|58","2893655003|9|15:38:00|120|3110610795|17913095120912393|58","2893655003|9|15:35:00|60|3110610795|17813095120912393|58","2893655003|9|15:36:00|60|714987642|14413095180912399|55","2893655003|6|15:38:00|120|2493371295|11413094440912370|54","2893655003|2|15:38:00|120|3761260163|21413093810912330|58","2893655003|2|15:35:00|120|3761260163|11013093750095483|58","2893655003|1|15:36:00|120|3591610132|20913092970912276|58","2893655003|1|15:38:00|120|1523019830|19713093030912289|58","1569477485|7B|15:37:00|60|1091103895|10913094810651584|35","2269163997|3B|15:38:00|60|3877040829|14913094260651522|44","2269163997|3B|15:34:00|60|3877040829|14813094260651522|44","2269163997|3|15:36:00|120|2503048334|14213093970095500|58","2269163997|3|15:36:00|120|3379773416|10113093990912354|59","1840343478|13|15:37:00|120|3421576237|12013095680912417|48","1840343478|13|15:37:00|120|2960704645|1013095590912415|49","1840343478|13|15:34:00|120|2960704645|8613095650912420|49","2450931568|13|15:37:00|120|2274972608|7213095560912413|50","2450931568|13|15:34:00|120|2274972608|7113095620912419|50","3991952489|12|15:35:00|120|3200465306|10813647210942701|56","3991952489|12|15:37:00|60|1282210726|17313647340942699|58","1917711411|3|15:37:00|60|1213432453|18613093960095500|56","1917711411|3|15:34:00|60|1213432453|10713093990095500|56","1917711411|3|15:35:00|60|3514016666|19713094000912354|57","1917711411|11|15:37:00|120|891393435|20513095530440174|56","1917711411|11|15:34:00|60|2046468661|19813095530912409|57","896555290|10|15:36:00|60|352028051|8313164370917610|53","3866913670|10|15:37:00|60|1771918760|13613164390917606|53","3866913670|10|15:34:00|60|1771918760|13513164390917606|53","729999544|9|15:37:00|120|3499425610|2413095190912389|58","729999544|9|15:34:00|120|3499425610|9913095820912393|58","729999544|9|15:35:00|120|1374784815|19513095120912395|58","482278776|8|15:37:00|60|2688858633|513094920912387|57","482278776|8|15:36:00|60|125894007|11013094950795507|55","1033620933|7|15:38:00|60|635591290|9613094590651563|44","1033620933|7|15:34:00|60|635591290|9513094590651563|44","1033620933|7|15:36:00|120|3098817292|10313094670912379|45","20785767|9|15:36:00|120|3217152725|19913095120912395|55","20785767|9|15:38:00|60|4248981646|2113095150912389|59","20785767|9|15:34:00|60|4248981646|18613095120912393|59","20785767|6|15:36:00|120|2465875946|11113094510295944|57","53962395|5|15:37:00|60|4198988390|10413094320094711|58","53962395|5|15:34:00|120|4198988390|21413094390094711|58","53962395|5|15:34:00|120|2258265757|13413094420912363|57","1293807658|4|15:35:00|60|1721597436|18313864020942709|55","1293807658|4|15:34:00|60|1282210726|10313864000942711|49","3412286137|3|15:36:00|120|4091065876|17713093960912354|59","3412286137|3|15:37:00|60|3638581237|10413093990095500|57","3412286137|3|15:34:00|60|3638581237|18013093960095500|57","2334959990|2|15:38:00|60|598631581|13713093860912348|56","2334959990|2|15:34:00|120|598631581|20013093810912330|56","1523019830|1|15:34:00|60|2893655003|11213092900912257|55","1523019830|1|15:36:00|60|3095607449|20713092920912270|58","1091103895|7B|15:38:00|120|209994619|10913094810651584|36","1091103895|7B|15:34:00|60|209994619|11813094800651584|36","3877040829|3B|15:38:00|60|2609365027|10113094270651522|43","3877040829|3B|15:35:00|60|2609365027|14813094260651522|43","380937225|7|15:38:00|120|73874293|10513094610651565|42","380937225|7|15:35:00|120|73874293|6413094570651565|42","380937225|14|15:36:00|120|1100607264|18513164420912430|59","380937225|14|15:38:00|120|1065328272|23613164430917618|59","2960704645|13|15:38:00|180|1840343478|12413095660912424|49","2960704645|13|15:34:00|180|1840343478|7513095560912417|49","2960704645|13|15:34:00|120|4215555989|11513095680912414|49","2274972608|13|15:36:00|120|2450931568|7513095560912416|47","2274972608|13|15:34:00|180|10090157|12713095640912419|49","2046468661|11|15:36:00|120|1917711411|11913095420440174|57","2046468661|11|15:35:00|60|3827069729|11013095440912409|53","3427371663|9|15:37:00|60|3253812998|9913095820912393|59","3427371663|9|15:37:00|60|3499425610|9213095820912395|58","3427371663|9|15:34:00|60|3499425610|9513095100912399|58","3427371663|10|15:35:00|60|896555290|8313164370917610|54","1771918760|10|15:37:00|120|3866913670|9313164340917608|54","1374784815|9|15:38:00|120|351139424|9513095100912399|58","1374784815|9|15:35:00|120|351139424|8813095090912395|58","1374784815|9|15:36:00|120|729999544|19113095120912393|54","125894007|8|15:37:00|60|482278776|10113094880795505|55","125894007|8|15:37:00|60|4278050457|11013094950795507|56","125894007|8|15:34:00|60|4278050457|16713094920795507|56","3098817292|7|15:35:00|120|890688308|10213094670912373|44","3098817292|7|15:37:00|120|1033620933|6013094560651562|40","1950730894|6|15:35:00|60|20785767|11113094510295944|56","1950730894|6|15:37:00|60|3871409354|113094460912371|56","2258265757|5|15:37:00|120|53962395|12813094300094711|59","2258265757|5|15:34:00|120|53962395|413094340912366|59","1282210726|4|15:38:00|60|1293807658|26813864030942709|54","1282210726|4|15:34:00|60|1293807658|18313864020942709|54","1282210726|4|15:35:00|60|1465479446|10313864000942711|51","1282210726|12|15:37:00|60|3991952489|10313647230942707|56","1282210726|12|15:34:00|120|2402899129|14713647350942699|57","3638581237|3|15:36:00|60|3412286137|17913094020912354|55","3638581237|3|15:36:00|60|2493342269|11713093980095500|58","3095607449|1|15:38:00|60|2920343104|10313092900095468|58","3095607449|1|15:38:00|60|1523019830|22413092920912269|59","3095607449|1|15:35:00|120|1523019830|21013092970912276|59","2738613188|7B|15:38:00|60|245371276|8313094790651584|28","2738613188|7B|15:36:00|60|2014137071|12013094800651583|30","2738613188|5|15:38:00|60|2577613756|10313094320094711|59","2738613188|5|15:35:00|60|2577613756|19713094400094711|59","2738613188|2|15:36:00|60|2577613756|10713093750095483|59","2738613188|2|15:38:00|60|1500021116|21313093760095484|57","2609365027|3B|15:38:00|60|3877040829|10113094270651521|45","2609365027|3B|15:34:00|60|3877040829|14813094260651521|45","2609365027|3B|15:34:00|60|2998612092|10013094270651522|42","1065328272|8|15:35:00|60|2011584683|12513094980795507|56","1065328272|14|15:38:00|120|552165531|18313164420912435|40","1065328272|14|15:34:00|60|552165531|21813095790912435|40","1065328272|12|15:38:00|120|552165531|313647310942702|57","1065328272|12|15:35:00|60|552165531|17113647260942699|57","1065328272|12|15:35:00|120|2011584683|19713647320942701|56","4215555989|13|15:37:00|120|2960704645|7513095620912424|52","4215555989|13|15:37:00|120|3957216179|12613095590912414|49","4215555989|13|15:34:00|120|3957216179|713095680912415|49","10090157|13|15:38:00|180|2274972608|13313095590912416|49","2402899129|12|15:38:00|60|1282210726|12413647310942701|55","2402899129|12|15:38:00|120|41893941|11913647310942699|57","2402899129|12|15:35:00|60|41893941|11813647310942699|57","3827069729|11|15:34:00|0|1100607264|11613095430912409|53","3827069729|11|15:35:00|60|2046468661|11913095420440174|58","3827069729|1|15:36:00|60|1100607264|21713092920912269|57","3827069729|1|15:38:00|60|1877754383|22113093010912285|59","980642687|10|15:38:00|60|4152748969|12713164380296022|51","980642687|10|15:35:00|120|4152748969|713164340917612|51","3882868379|7|15:35:00|120|3989473618|6613094630651570|43","3882868379|7|15:37:00|120|2177031349|10613094610912373|44","3882868379|10|15:36:00|120|1707647480|13513164390917606|51","3882868379|10|15:38:00|60|1771918760|14713164360296022|53","351139424|9|15:38:00|120|1374784815|10013095820912393|55","351139424|9|15:35:00|120|1374784815|18213095150912393|55","351139424|9|15:34:00|60|3741637293|18313095150912395|58","4278050457|8|15:36:00|60|125894007|10113094880795505|55","4278050457|8|15:37:00|60|3305905320|12313094980795507|56","4278050457|8|15:34:00|60|3305905320|10913094950795507|56","890688308|7|15:34:00|180|3098817292|7013094630651570|40","890688308|7|15:36:00|60|37245713|10113094610651565|46","3871409354|6|15:35:00|120|598631581|313094520912371|55","3871409354|6|15:36:00|60|1950730894|10813094450295944|57","2277425032|5|15:38:00|120|2258265757|10513094320094711|59","2277425032|5|15:35:00|120|2258265757|12813094300094711|59","1465479446|4|15:35:00|60|1225648642|16513864020942711|51","1465479446|4|15:37:00|60|1282210726|26813864030942709|53","2493342269|3|15:36:00|60|3833855042|20313093930095500|58","2493342269|3|15:38:00|120|3638581237|20613094000912354|58","2493342269|3|15:34:00|60|3638581237|17713093960912354|58","475845330|2|15:36:00|120|3873492639|10213093750095483|56","475845330|2|15:35:00|120|598631581|20413093810095484|55","2920343104|1|15:37:00|120|2532042518|21413093010912285|58","2920343104|1|15:38:00|60|3095607449|11413092900912257|55","2920343104|1|15:35:00|60|3095607449|14713093000912282|55","2014137071|7B|15:38:00|120|2738613188|11013094810651584|33","2014137071|7B|15:35:00|60|2738613188|11913094800651584|33","2014137071|7|15:34:00|120|2577613756|10413094670912379|40","2014137071|7|15:36:00|60|2692076464|10513094670651570|47","2998612092|11|15:36:00|120|595945906|14613095520912409|57","2998612092|11|15:38:00|60|2805226700|20113095530440174|56","2998612092|11|15:34:00|120|2805226700|13413095500440174|56","552165531|3|15:36:00|60|645341577|11713093980912354|57","552165531|3|15:36:00|60|4013515236|20713093930095500|56","552165531|14|15:38:00|60|1065328272|22213095800912430|59","552165531|14|15:34:00|120|1065328272|24013164430912430|59","552165531|13|15:36:00|120|3524584243|13213095640912423|48","552165531|13|15:35:00|60|618858167|6613095550912414|52","552165531|12|15:37:00|120|1065328272|10113647230942707|56","552165531|12|15:38:00|60|2009211090|10713647210942699|57","552165531|12|15:35:00|60|2009211090|18813647320942699|57","3957216179|13|15:35:00|120|4215555989|7513095620912424|50","271775302|13|15:37:00|120|10090157|12413095660912423|55","41893941|12|15:36:00|120|2402899129|12413647310942701|55","1100607264|7|15:38:00|60|2707323384|10813094670912379|43","1100607264|7|15:36:00|120|986262698|313094660912383|39","1100607264|4|15:38:00|60|606571514|10813864000942711|58","1100607264|4|15:34:00|60|606571514|23513864010942711|58","1100607264|4|15:36:00|60|3711272335|26013864030942709|54","1100607264|14|15:36:00|120|380937225|23613164430917618|59","1100607264|14|15:38:00|240|3891613492|18513164420912430|59","1100607264|14|15:34:00|240|3891613492|21913095800912430|59","1100607264|11|15:35:00|120|3827069729|13913095500440174|57","1100607264|1|15:34:00|120|3747807733|21013093030912288|57","1100607264|1|15:35:00|120|3827069729|21213092920912270|58","4152748969|10|15:36:00|120|980642687|12613164380917610|51","1707647480|5|15:37:00|120|2649549238|20613094390094711|58","1707647480|5|15:37:00|120|3179893028|11013094380912363|59","1707647480|5|15:34:00|120|3179893028|12213094300912363|59","1707647480|10|15:35:00|120|3882868379|9213164320917608|51","3741637293|9|15:37:00|60|351139424|10013095820912393|57","37245713|7|15:36:00|120|890688308|6613094570651562|37","37245713|7|15:35:00|120|890688308|10613094610651562|37","598631581|6|15:38:00|120|3871409354|10913094450295944|57","598631581|6|15:37:00|120|3871409354|18913094540295944|57","598631581|6|15:34:00|120|3871409354|10813094450295944|57","598631581|2|15:38:00|120|475845330|10313093750095483|56","598631581|2|15:36:00|60|475845330|20013093810912330|56","598631581|2|15:35:00|120|475845330|513093760912327|56","598631581|2|15:36:00|60|2334959990|15713093790095484|54","598631581|2|15:35:00|60|2334959990|20313093810095484|54","598631581|1|15:38:00|60|3566702934|13913093000912282|57","598631581|1|15:37:00|60|3566702934|21213092920912269|57","598631581|1|15:34:00|60|3566702934|21113092920912269|57","598631581|1|15:38:00|60|2877706505|21813092920912270|59","598631581|1|15:36:00|60|2877706505|20213092970912277|59","598631581|1|15:35:00|120|2877706505|10913092900095468|59","2085226230|5|15:35:00|240|2277425032|12913094300094711|57","2085226230|5|15:34:00|240|2277425032|10513094320094711|57","1225648642|4|15:36:00|60|1465479446|26813864030942709|53","1225648642|4|15:35:00|60|1465479446|25513864010942709|53","3833855042|3|15:37:00|120|2493342269|13713093970912354|59","3833855042|3|15:36:00|60|2493342269|18013094020912354|59","3833855042|3|15:34:00|60|2493342269|12013093980912354|59","3873492639|2|15:38:00|120|475845330|10613093750095484|58","3873492639|2|15:34:00|120|475845330|10513093750095484|58","2532042518|1|15:38:00|120|2920343104|15013844200955497|58","2532042518|1|15:36:00|120|2920343104|11413092900912257|58","2532042518|1|15:35:00|60|2920343104|22413092920912269|58","37245713|7|15:38:00|120|890688308|10113094650651570|37","3741637293|9|15:38:00|60|351139424|19213095120912393|57","1707647480|10|15:36:00|120|3882868379|14713164360296022|51","1707647480|10|15:37:00|120|3882868379|13513164380296022|51","4152748969|10|15:35:00|120|980642687|13713164360917606|51","4152748969|10|15:37:00|120|980642687|8413164330917606|51","1100607264|1|15:36:00|60|3827069729|10613092900095468|58","1100607264|1|15:38:00|60|3827069729|21313092920912270|58","1100607264|11|15:36:00|60|3827069729|20613095530440174|57","1100607264|11|15:38:00|60|3827069729|11413095490440174|57","1100607264|14|15:36:00|240|3891613492|23913164430912430|59","1100607264|14|15:34:00|120|380937225|21913095790912435|59","1100607264|4|15:37:00|60|3711272335|11313864000942709|54","1100607264|4|15:38:00|60|3711272335|26113864030942709|54","1100607264|4|15:36:00|120|606571514|23613864010942711|58","1100607264|7|15:34:00|60|986262698|9213094590651562|39","1100607264|7|15:38:00|60|986262698|10213094670651570|39","41893941|12|15:34:00|120|2402899129|10313647230942707|55","41893941|12|15:37:00|120|2402899129|10413647290942700|55","271775302|13|15:34:00|60|10090157|12313095660912423|55","552165531|12|15:36:00|60|2009211090|12113647310942699|57","552165531|12|15:37:00|60|2009211090|18913647320942699|57","552165531|12|15:35:00|120|1065328272|10613647210942701|56","552165531|12|15:38:00|120|1065328272|18113647260942701|56","552165531|13|15:37:00|60|618858167|7313095560912413|52","552165531|13|15:37:00|120|3524584243|6713095550912416|48","552165531|14|15:35:00|60|1065328272|22113095800912430|59","552165531|14|15:36:00|120|1065328272|18613164420912430|59","552165531|3|15:38:00|60|4013515236|10613093990095500|56","552165531|3|15:37:00|60|645341577|13313093970912354|57","2998612092|11|15:35:00|60|2805226700|20013095530440174|56","2998612092|11|15:36:00|120|2805226700|11113095490440174|56","2998612092|11|15:37:00|60|595945906|11313095440912409|57","2998612092|11|15:38:00|60|595945906|20313095530912409|57","2014137071|7|15:38:00|120|2692076464|513094590912377|47","2014137071|7|15:35:00|120|2577613756|9513094590651565|40","2920343104|1|15:37:00|60|3095607449|12513844190955497|55","2920343104|1|15:34:00|60|2532042518|20513092920912270|58","2920343104|1|15:38:00|60|2532042518|19513093030912289|58","475845330|2|15:34:00|120|598631581|15713093790095484|55","475845330|2|15:37:00|60|3873492639|513093760912327|56","475845330|2|15:38:00|120|3873492639|20713093830912330|56","2493342269|3|15:36:00|60|3638581237|10713093990912354|58","2493342269|3|15:34:00|60|3833855042|313093970912352|58","1465479446|4|15:38:00|60|1282210726|11813864000942709|53","1465479446|4|15:34:00|60|1225648642|23813864030942711|51","1465479446|4|15:37:00|60|1225648642|16613864020942711|51","2277425032|5|15:36:00|120|2258265757|11413094380094711|59","2277425032|5|15:35:00|240|2085226230|10313094380912363|57","3871409354|6|15:37:00|0|1950730894|18813094540295944|57","3871409354|6|15:36:00|120|598631581|12013094500912370|55","3871409354|6|15:38:00|120|598631581|113094460912371|55","4278050457|8|15:35:00|120|3305905320|16713094920795507|56","4278050457|8|15:36:00|60|3305905320|17513094910795507|56","4278050457|8|15:34:00|60|125894007|17813094910795505|55","4278050457|8|15:37:00|60|125894007|10313094890795505|55","351139424|9|15:36:00|60|3741637293|19413095120912395|58","351139424|9|15:36:00|120|1374784815|10513095160912398|55","3882868379|10|15:35:00|60|1771918760|14613164360296022|53","3882868379|10|15:36:00|60|1771918760|9313164340917608|53","3882868379|7|15:34:00|120|2177031349|10613094610651565|44","3882868379|7|15:38:00|120|2177031349|10913094670912379|44","3882868379|7|15:37:00|60|3989473618|713094650651581|43","3882868379|7|15:38:00|120|3989473618|9213094590651562|43","980642687|10|15:34:00|120|3427371663|13613164360917606|52","980642687|10|15:35:00|180|3427371663|12413164410917606|52","3827069729|1|15:35:00|120|1100607264|20413092970912276|57","3827069729|1|15:37:00|60|1100607264|11013092900912257|57","2402899129|12|15:36:00|120|41893941|14713647350942699|57","2402899129|12|15:37:00|60|41893941|10413647210942699|57","2402899129|12|15:36:00|60|1282210726|10313647230942707|55","10090157|13|15:34:00|180|2274972608|12013095680912416|49","10090157|13|15:35:00|60|271775302|11513095680912413|47","4215555989|13|15:35:00|120|3957216179|6413095550912414|49","4215555989|13|15:38:00|120|3957216179|8613095650912420|49","4215555989|13|15:35:00|120|2960704645|13313095590912417|52","1065328272|12|15:37:00|120|2011584683|10613647210942701|56","1065328272|12|15:36:00|120|552165531|10713647210942699|57","1065328272|14|15:35:00|60|380937225|18513164420912430|39","1065328272|14|15:36:00|120|380937225|22113095800912430|39","1065328272|8|15:34:00|60|73874293|10013094890795505|56","1065328272|8|15:35:00|60|73874293|11413094950795505|56","1065328272|8|15:38:00|60|2011584683|11313094950795507|56","2609365027|3B|15:36:00|60|2998612092|14813094260651522|42","2738613188|2|15:35:00|60|1500021116|13213093860912349|57","2738613188|2|15:34:00|60|2577613756|21613093770912330|59","2738613188|2|15:37:00|120|2577613756|21613093830912330|59","2738613188|2|15:38:00|60|2577613756|313093810912327|59","2738613188|5|15:34:00|120|3907763713|11713094300912363|57","2738613188|5|15:35:00|60|3907763713|10513094380912363|57","2738613188|7B|15:36:00|60|245371276|11913094800651584|28","1463586519|7B|15:35:00|60|1091103895|11113094810651583|25","3095607449|1|15:34:00|120|2920343104|19213092970912277|58","3095607449|1|15:35:00|60|2920343104|10213092900095468|58","3638581237|3|15:35:00|120|2493342269|18013093960095500|58","3638581237|3|15:37:00|60|2493342269|18313094020095500|58","3638581237|3|15:38:00|120|3412286137|18013094020912354|55","1282210726|12|15:35:00|120|2402899129|10413647210942699|57","1282210726|12|15:38:00|60|3991952489|10913647210942701|56","1282210726|4|15:34:00|60|1465479446|16513864020942711|51","2258265757|5|15:36:00|120|53962395|14413094370094711|59","2258265757|5|15:38:00|60|53962395|11413094380094711|59","1950730894|6|15:38:00|60|3871409354|113094480912371|56","1950730894|6|15:34:00|120|20785767|20313094520295944|56","3098817292|7|15:38:00|120|1033620933|10013094650651570|40","3098817292|7|15:34:00|120|890688308|6613094630912379|44","3098817292|7|15:37:00|120|890688308|9713094650912379|44","125894007|8|15:35:00|60|4278050457|17513094910795507|56","125894007|8|15:38:00|60|482278776|10313094890795505|55","1374784815|9|15:34:00|120|729999544|18113095150912393|54","1374784815|9|15:38:00|120|729999544|10513095160912398|54","1374784815|9|15:36:00|120|351139424|18413095150912395|58","1771918760|10|15:35:00|60|3882868379|13513164390917606|53","1771918760|10|15:38:00|120|3866913670|9213164320917608|54","3427371663|10|15:36:00|120|896555290|13613164360917606|54","3427371663|10|15:37:00|60|896555290|9313164320917606|54","3427371663|9|15:38:00|60|3253812998|19013095120912393|59","2046468661|11|15:34:00|60|3827069729|13413095500912409|53","2046468661|11|15:34:00|60|1917711411|20413095530440174|57","2046468661|11|15:37:00|60|1917711411|20013095460912411|57","2274972608|13|15:36:00|180|10090157|7113095620912419|49","2274972608|13|15:37:00|120|2450931568|12013095680912416|47","2960704645|13|15:36:00|60|4215555989|12613095590912414|49","2960704645|13|15:37:00|120|4215555989|11613095660912420|49","380937225|14|15:35:00|120|1065328272|23513164430917618|59","380937225|14|15:34:00|120|1100607264|23913164430912430|59","380937225|14|15:37:00|120|1100607264|24013164430912430|59","380937225|14|15:38:00|120|1100607264|22113095800912430|59","380937225|7|15:34:00|60|2924666242|6713094630651570|40","380937225|7|15:35:00|120|2924666242|10213094610651563|40","3877040829|3B|15:37:00|60|2609365027|8913094240651522|43","245371276|7B|15:34:00|60|2738613188|11013094810651583|27","1523019830|1|15:37:00|60|3095607449|10313092900095468|58","1523019830|1|15:38:00|120|3095607449|20813092920912270|58","1523019830|1|15:37:00|120|2893655003|11313092900912257|55","2334959990|2|15:35:00|60|598631581|20713093830912330|56","2334959990|2|15:35:00|60|2120950107|10413093750095484|58","3412286137|3|15:35:00|60|3638581237|11713093980095500|57","3412286137|3|15:38:00|120|3638581237|11813093980095500|57","3412286137|3|15:34:00|60|4091065876|10613093990912354|59","1293807658|4|15:37:00|60|1282210726|10413864000942711|49","1293807658|4|15:37:00|60|1721597436|11713864000942709|55","53962395|5|15:36:00|120|2258265757|10413094380912363|57","53962395|5|15:37:00|60|2258265757|13013094370912363|57","53962395|5|15:38:00|120|4198988390|14413094370094711|58","20785767|6|15:34:00|60|1950730894|12013094500912370|56","20785767|6|15:38:00|60|2465875946|10813094450295944|57","20785767|9|15:35:00|60|4248981646|17813095150912393|59","20785767|9|15:38:00|60|3217152725|18813095150912395|55","1033620933|7|15:37:00|120|3098817292|5713094560651565|45","1033620933|7|15:35:00|60|635591290|10613094610651563|44","1033620933|7|15:36:00|60|635591290|613094590912377|44","482278776|8|15:37:00|60|125894007|16813094920795507|55","482278776|8|15:38:00|60|125894007|17613094910795507|55","729999544|9|15:34:00|120|1374784815|18413095150912395|58","729999544|9|15:36:00|120|1374784815|9513095100912399|58","729999544|9|15:38:00|120|3499425610|413095820912389|58","3866913670|10|15:34:00|60|2932899145|9213164340917608|52","3866913670|10|15:36:00|120|1771918760|11913164380917610|53","3866913670|10|15:38:00|60|1771918760|9813164400917614|53","896555290|10|15:38:00|60|352028051|13613164360917606|53","1917711411|11|15:35:00|120|2046468661|11713095430912409|57","1917711411|11|15:38:00|60|891393435|11913095420440174|56","1917711411|3|15:34:00|60|3514016666|19413093930912354|57","3991952489|12|15:38:00|120|1282210726|213647310942702|58","3991952489|12|15:34:00|60|3200465306|12213647310942701|56","3991952489|12|15:37:00|60|3200465306|10313647290942700|56","2450931568|13|15:35:00|120|2274972608|11613095680912413|50","2450931568|13|15:35:00|120|65431437|13113095590912416|50","1840343478|13|15:35:00|120|2960704645|11613095660912420|49","1840343478|13|15:38:00|120|2960704645|11613095680912414|49","1840343478|13|15:35:00|120|3421576237|6813095550912417|48","2269163997|3|15:38:00|120|3379773416|11313093980912354|59","2269163997|3|15:37:00|120|2503048334|10113093920095500|58","2269163997|3B|15:35:00|60|3877040829|12213094250651522|44","2269163997|3B|15:36:00|60|3877040829|8913094240651522|44","1569477485|7B|15:37:00|120|245371276|11113094840651583|29","1569477485|7B|15:38:00|60|245371276|11113094810651583|29","2893655003|1|15:35:00|120|3591610132|11213092900912257|58","2893655003|1|15:37:00|120|3591610132|22213092920912269|58","2893655003|6|15:35:00|60|2493371295|11313094440912370|54","2893655003|9|15:34:00|60|714987642|19413095150912395|55","2893655003|9|15:37:00|60|714987642|19513095150912395|55","2893655003|9|15:38:00|60|714987642|10413095100912399|55","2120950107|2|15:34:00|60|2334959990|20713093830912330|56","2120950107|2|15:35:00|120|2334959990|10813093880095483|56","2120950107|2|15:36:00|60|48157230|10413093750095484|58","2120950107|2|15:38:00|60|48157230|15713093790095484|58","4091065876|3|15:35:00|120|3412286137|10413093990095500|59","4091065876|3|15:36:00|120|3412286137|18113093960095500|59","1721597436|2|15:36:00|60|3487389407|10113093750095484|58","1721597436|2|15:38:00|120|3487389407|20013093810095484|58","1721597436|2|15:38:00|60|244503826|20713093810912330|56","1721597436|4|15:35:00|120|2058569149|11613864000942709|55","4198988390|5|15:36:00|60|53962395|13513094420912363|57","4198988390|5|15:37:00|120|53962395|20613094390912363|57","2465875946|6|15:37:00|60|499775835|19913094480295944|57","2465875946|6|15:36:00|60|20785767|12113094500912370|58","635591290|7|15:34:00|120|882210155|513094610912377|48","635591290|7|15:35:00|60|882210155|10613094670651570|48","635591290|7|15:36:00|120|1033620933|10213094610651565|42","635591290|7|15:37:00|60|1033620933|10313094670912373|42","2688858633|8|15:38:00|60|482278776|18313094970795507|55","2688858633|8|15:35:00|60|2635662580|10013094880795505|56","3499425610|9|15:37:00|60|3427371663|19013095120912393|59","3499425610|9|15:38:00|60|3427371663|18113095150912393|59","3499425610|9|15:38:00|60|729999544|9213095820912395|58","2932899145|10|15:36:00|60|3715978556|9113164320917608|52","2932899145|10|15:38:00|60|3866913670|12013164410917606|53","352028051|10|15:35:00|120|4025722812|10013164400917614|54","891393435|11|15:38:00|60|1917711411|11813095430912409|53","891393435|11|15:34:00|60|3714063920|20313095530440174|55","891393435|3|15:38:00|120|1742862628|17113093960912354|59","891393435|3|15:34:00|60|3514016666|12213093980095500|56","891393435|5|15:34:00|120|1727514119|10713094380912363|55","891393435|5|15:36:00|120|1727514119|21213094390912363|55","891393435|5|15:36:00|60|4122770022|12313094300094711|58","891393435|5|15:38:00|60|4122770022|10113094320094711|58","891393435|8|15:34:00|60|1994114096|11213094950795505|52","891393435|8|15:36:00|120|1994114096|18213094970795505|52","891393435|9|15:38:00|120|3300801987|19313095150912395|55","891393435|9|15:35:00|120|4122770022|17313095150912393|58","3200465306|12|15:35:00|120|3991952489|17313647340942699|58","3200465306|12|15:36:00|120|3991952489|9613647230942704|58","3200465306|12|15:37:00|60|2075612487|10813647210942701|58","3200465306|12|15:38:00|120|2075612487|10313647290942700|58","65431437|13|15:38:00|120|3325830777|6813095550912416|51","3421576237|13|15:36:00|120|1840343478|11613095680912414|47","1990381110|9|15:37:00|120|1867201487|19813095150912395|56","1990381110|9|15:36:00|120|1867201487|21113095120912395|56","3086704803|8|15:38:00|120|562653801|10513094890795507|57","3086704803|8|15:37:00|120|562653801|10613094880795507|57","1867201487|9|15:38:00|60|3235782074|21113095120912395|55","1867201487|9|15:37:00|60|3235782074|10113095820912395|55","1867201487|9|15:35:00|120|3235782074|21013095120912395|55","1867201487|9|15:38:00|120|1990381110|16913095150912393|55","562653801|8|15:38:00|60|673864223|10213094940795507|57","562653801|8|15:37:00|120|673864223|18213094920795507|57","562653801|8|15:35:00|120|673864223|10413094890795507|57","562653801|8|15:38:00|120|3086704803|16513094960795505|52","562653801|8|15:35:00|120|3086704803|16413094960795505|52","3235782074|9|15:38:00|60|1867201487|11713095170912398|57","3235782074|9|15:36:00|120|1867201487|8813095090912393|57","3235782074|9|15:35:00|120|1867201487|9113095820912393|57","673864223|8|15:38:00|60|562653801|11713094980795505|55","673864223|8|15:37:00|120|562653801|16713094910795505|55","673864223|8|15:35:00|60|562653801|17113094970795505|55","673864223|8|15:38:00|60|3246051268|20013094970795507|58","673864223|8|15:35:00|120|3246051268|19913094970795507|58","129206825|9|15:38:00|120|3235782074|17013095150912393|57","129206825|9|15:36:00|120|3235782074|11713095170912398|57","129206825|9|15:35:00|120|3235782074|2213095190912389|57","129206825|9|15:35:00|120|1360893278|20013095190912399|56","3246051268|8|15:38:00|120|673864223|10713094950795505|58","3246051268|8|15:36:00|120|673864223|11713094980795505|58","3246051268|8|15:35:00|60|673864223|16513094960795505|58","3246051268|8|15:36:00|120|2181002575|10113094940795507|57","3246051268|8|15:35:00|120|2181002575|18013094920795507|57","3954096031|7|15:37:00|120|1338908274|10113094590912373|45","1360893278|9|15:38:00|60|3110610795|14513095180912399|55","1360893278|9|15:35:00|60|129206825|9513095160912398|55","2181002575|8|15:38:00|60|1322902301|10113094940795507|54","2181002575|8|15:36:00|120|1322902301|12013094950795507|54","2181002575|8|15:35:00|120|1322902301|10313094890795507|54","2181002575|8|15:36:00|120|3246051268|10713094950795505|55","2181002575|8|15:35:00|120|3246051268|16613094960795505|55","1338908274|7|15:36:00|120|3954096031|613094610912380|45","1338908274|7|15:35:00|120|3954096031|9713094670912376|45","1673135790|7|15:36:00|120|4024543803|11013094610651565|43","1673135790|7|15:35:00|120|4024543803|10113094590651565|43","3110610795|9|15:37:00|60|1360893278|8913095090912393|57","3110610795|9|15:36:00|60|1360893278|17013095150912393|57","3110610795|9|15:37:00|60|2893655003|10413095100912399|55","3110610795|9|15:35:00|120|2893655003|19513095150912395|55","1322902301|8|15:37:00|120|737890386|10313094890795507|59","1322902301|8|15:36:00|120|737890386|10413094880795507|59","1322902301|8|15:35:00|120|2181002575|9113094870795505|52","821130227|7|15:38:00|60|486421116|10513094650912373|45","821130227|7|15:36:00|60|486421116|10013094590912373|45","821130227|7|15:35:00|60|486421116|6613094570912373|45","4024543803|7|15:38:00|120|1673135790|9213094650651570|43","4024543803|7|15:37:00|120|1673135790|613094670912383|43","4024543803|7|15:38:00|120|941822868|11013094610651565|48","4024543803|7|15:37:00|120|941822868|10113094590651565|48","737890386|8|15:35:00|120|3345569136|11913094950795507|59","737890386|8|15:38:00|120|1322902301|16913094910795505|52","737890386|8|15:36:00|120|1322902301|10813094950795505|52","737890386|8|15:35:00|120|1322902301|11813094980795505|52","486421116|7|15:36:00|60|3103087595|6613094570912373|46","486421116|7|15:35:00|60|3103087595|10413094650912373|46","486421116|7|15:37:00|60|821130227|9113094590651563|38","486421116|7|15:36:00|120|821130227|9813094610651563|38","714987642|9|15:38:00|60|2893655003|9313095820912393|56","714987642|9|15:37:00|60|2893655003|17913095120912393|56","714987642|9|15:35:00|120|2893655003|2413095220912389|56","714987642|9|15:38:00|60|3616461854|19513095150912395|57","714987642|9|15:35:00|60|3616461854|19413095150912395|57","3345569136|8|15:38:00|120|2398034976|10013094940795507|55","3345569136|8|15:36:00|120|2398034976|17813094920795507|55","3345569136|8|15:35:00|120|2398034976|10213094890795507|55","3345569136|8|15:35:00|60|737890386|10813094950795505|56","3103087595|7|15:37:00|60|486421116|5613094560651563|40","3103087595|7|15:35:00|60|486421116|9813094610651563|40","3103087595|7|15:38:00|120|1826166775|10013094590912373|44","3103087595|7|15:35:00|60|1826166775|11013094670912373|44","188649288|7|15:38:00|120|1826166775|10913094610651565|44","188649288|7|15:36:00|120|1826166775|11113094670912379|44","188649288|7|15:35:00|120|1826166775|10013094590651565|44","3616461854|9|15:36:00|60|714987642|11913095170912398|57","3616461854|9|15:35:00|60|714987642|17113095150912393|57","3616461854|9|15:37:00|60|4158739832|20713095120912395|55","3616461854|9|15:36:00|60|4158739832|19413095150912395|55","2398034976|8|15:36:00|120|3567429859|10313094880795507|54","2398034976|8|15:35:00|60|3567429859|11813094950795507|54","2398034976|8|15:37:00|120|3345569136|10913094950795505|55","2398034976|8|15:36:00|120|3345569136|16913094960795505|55","1826166775|7|15:36:00|60|46216692|10813094610651565|44","1826166775|7|15:35:00|120|46216692|6113094560651565|44","1826166775|7|15:37:00|120|188649288|9913094670651570|40","1826166775|7|15:36:00|60|3103087595|5613094560651563|40","1826166775|7|15:35:00|180|188649288|6513094630651570|40","87667279|12|15:38:00|60|3332683073|17913647260942699|56","87667279|12|15:36:00|60|3332683073|15913647350942699|56","87667279|12|15:35:00|60|3332683073|17813647260942699|56","4158739832|9|15:36:00|120|3616461854|17213095150912393|57","4158739832|9|15:35:00|120|3616461854|9313095820912393|57","3567429859|8|15:37:00|60|3702452106|17713094920795507|57","3567429859|8|15:36:00|120|3702452106|11813094950795507|57","3567429859|8|15:37:00|60|2398034976|17013094910795505|54","3567429859|8|15:36:00|60|2398034976|10913094950795505|54","46216692|7|15:38:00|120|224821915|10013094590651565|46","46216692|7|15:37:00|120|224821915|10813094610651565|46","46216692|7|15:37:00|60|1826166775|9113094590651562|41","46216692|7|15:35:00|60|1826166775|9813094610651562|41","3332683073|12|15:36:00|60|87667279|14913647350942701|56","3332683073|12|15:35:00|60|87667279|10113647210942701|56","3332683073|12|15:36:00|120|2196409879|17813647260942699|59","3332683073|12|15:35:00|120|2196409879|12513647310942699|59","1736981303|9|15:35:00|120|4122770022|19313095150912395|56","1736981303|9|15:38:00|60|4158739832|17313095150912393|58","3702452106|8|15:37:00|120|3100228085|9913094940795507|59","3702452106|8|15:36:00|60|3100228085|18813094960795507|59","3702452106|8|15:38:00|120|3567429859|11013094950795505|52","3702452106|8|15:36:00|120|3567429859|17013094960795505|52","2493371295|6|15:37:00|60|3549826816|10713094450912370|56","2493371295|6|15:36:00|60|3549826816|11313094440912370|56","2493371295|6|15:38:00|60|2893655003|10513094510295944|58","2493371295|6|15:37:00|120|2893655003|10113094450295944|58","2196409879|12|15:37:00|60|2050396911|12513647310942699|58","2196409879|12|15:36:00|60|2050396911|11113647210942699|58","2196409879|12|15:38:00|60|3332683073|11613647310942701|54","2196409879|12|15:37:00|60|3332683073|9713647230942707|54","1314938315|7|15:36:00|120|1202011076|9913094590651565|47","1314938315|7|15:35:00|120|1202011076|10713094610651565|47","1314938315|7|15:37:00|60|224821915|9913094610651562|43","1314938315|7|15:36:00|120|224821915|5613094560651562|43","3549826816|6|15:36:00|120|3100228085|17713094460912370|55","3549826816|6|15:35:00|60|3100228085|11113094510912370|55","2025816120|4|15:36:00|120|4261791583|17813864020942711|53","2025816120|4|15:35:00|60|4261791583|11213864000942711|53","2050396911|12|15:36:00|60|2196409879|10213647210942701|55","2050396911|12|15:35:00|120|2196409879|9713647230942707|55","2050396911|12|15:37:00|60|1526455506|11113647210942699|56","2050396911|12|15:36:00|60|1526455506|19613647320942699|56","2346477303|8|15:35:00|120|3100228085|16313094920795505|54","2346477303|8|15:38:00|60|3591610132|10113094890795507|57","2346477303|8|15:36:00|60|3591610132|11713094950795507|57","2346477303|8|15:35:00|60|3591610132|17513094920795507|57","1202011076|7|15:36:00|60|1314938315|10013094670651570|43","1202011076|7|15:35:00|60|1314938315|5613094560651562|43","1202011076|7|15:37:00|60|3989473618|10713094610651565|42","1202011076|7|15:36:00|60|3989473618|9813094590912373|42","3100228085|8|15:37:00|60|2346477303|17613094920795507|55","3100228085|8|15:36:00|120|2346477303|10113094890795507|55","3100228085|6|15:38:00|60|946374679|11313094440912370|58","3100228085|6|15:37:00|60|946374679|13813094550912370|58","3100228085|6|15:38:00|60|3549826816|17813094540295944|55","3100228085|6|15:37:00|60|3549826816|10613094440295944|55","3100228085|6|15:35:00|60|3549826816|10113094450295944|55","4261791583|4|15:38:00|60|2025816120|17313864020942709|56","4261791583|4|15:36:00|60|515539346|11213864000942711|57","4261791583|4|15:35:00|60|515539346|17713864020942711|57","555784063|3|15:37:00|60|3379773416|11013093990095500|59","555784063|3|15:36:00|60|3379773416|12513093980095500|59","1726955494|1|15:37:00|60|276344470|11213092900095468|59","1726955494|1|15:36:00|60|276344470|20613092970912277|59","1526455506|12|15:38:00|120|1162874157|11113647210942699|57","1526455506|12|15:37:00|60|1162874157|19613647320942699|57","1526455506|12|15:35:00|60|2050396911|11613647310942701|53","3989473618|7|15:38:00|120|3882868379|10713094610651565|44","3989473618|7|15:36:00|120|3882868379|10913094670912379|44","3989473618|7|15:35:00|120|3882868379|10613094610912373|44","3989473618|7|15:36:00|60|1202011076|9413094650651570|41","3989473618|7|15:35:00|60|1202011076|10013094670651570|41","946374679|6|15:37:00|60|1194974051|11113094510912370|58","946374679|6|15:36:00|60|1194974051|313094460912371|58","946374679|6|15:36:00|60|3100228085|12213094500295944|57","946374679|6|15:35:00|60|3100228085|10513094510295944|57","515539346|4|15:37:00|60|3519554763|11213864000942711|57","515539346|4|15:36:00|60|3519554763|17713864020942711|57","515539346|4|15:36:00|120|4261791583|25313864030942709|53","515539346|4|15:35:00|60|4261791583|10813864000942709|53","3379773416|3|15:37:00|60|555784063|1613093960912353|58","3379773416|3|15:36:00|60|555784063|11213093980912354|58","3379773416|3|15:35:00|120|2269163997|18913093960095500|58","3761260163|2|15:38:00|120|2893655003|19513093810095484|56","3761260163|2|15:36:00|120|2893655003|20713093760095484|56","3761260163|2|15:35:00|120|2893655003|19413093810095484|56","3761260163|2|15:36:00|60|1227645826|21213093810912330|58","3761260163|2|15:35:00|60|1227645826|11513093880095483|58","276344470|1|15:37:00|60|3504310849|22113092920912270|59","276344470|1|15:36:00|60|3504310849|22613844180955499|59","276344470|1|15:36:00|120|1726955494|1513092970912259|58","276344470|1|15:35:00|60|1726955494|11513844190955497|58","3332581557|13|15:37:00|60|3273349984|12213095680912413|56","3332581557|13|15:36:00|60|3273349984|13613095640912419|56","1162874157|12|15:37:00|60|1526455506|19213647320942701|55","1162874157|12|15:36:00|60|1526455506|15113647350942701|55","1162874157|12|15:38:00|60|1450883263|18313647340942699|58","1162874157|12|15:37:00|60|1450883263|413647310942702|58","3930049404|8|15:36:00|60|3780921823|18613094960795507|55","3930049404|8|15:35:00|120|3780921823|10013094890795507|55","1227645826|2|15:37:00|60|3979953845|21213093810912330|59","1227645826|2|15:36:00|120|3979953845|11513093880095483|59","1227645826|2|15:37:00|60|3761260163|19513093810095484|56","1227645826|2|15:36:00|60|3761260163|12913093860912349|56","3504310849|1|15:38:00|60|276344470|1613092970912259|58","3504310849|1|15:37:00|120|276344470|10513092900912257|58","3504310849|1|15:37:00|60|259791766|20513092970912277|59","3504310849|1|15:36:00|120|259791766|11113092900095468|59","3273349984|13|15:38:00|60|3332581557|12713095640912423|48","3273349984|13|15:37:00|60|3332581557|7113095560912416|48","3273349984|13|15:38:00|120|642786040|12213095680912413|54","3273349984|13|15:37:00|120|642786040|13613095640912419|54","3273349984|13|15:35:00|120|642786040|12413095660912419|54","3780921823|8|15:37:00|60|3398784409|10013094890795507|56","3780921823|8|15:36:00|60|3930049404|11113094950795505|54","3780921823|8|15:35:00|60|3930049404|17213094960795505|54","2177031349|7|15:37:00|120|986262698|6013094560651565|44","2177031349|7|15:36:00|60|986262698|10613094610651565|44","2177031349|7|15:37:00|120|3882868379|9513094650651570|45","2177031349|7|15:36:00|60|3882868379|10013094610651562|45","2706513156|6|15:38:00|60|3494453711|313094460912371|56","2706513156|6|15:36:00|60|3494453711|12713094500912370|56","2706513156|6|15:35:00|120|1194974051|10213094450295944|56","3979953845|2|15:38:00|60|2503048334|11513093880095483|58","3979953845|2|15:36:00|60|2503048334|10913093750095483|58","3979953845|2|15:35:00|120|2503048334|21913093830912330|58","3979953845|2|15:36:00|60|1227645826|19513093810095484|57","3979953845|2|15:35:00|60|1227645826|12913093860912349|57","259791766|1|15:37:00|120|3145751766|12413844190955499|58","259791766|1|15:36:00|60|3145751766|21913092920912270|58","642786040|13|15:37:00|120|3273349984|12613095590912417|47","642786040|13|15:36:00|120|3273349984|12713095640912423|47","642786040|13|15:38:00|120|675269737|13313095590912413|54","642786040|13|15:37:00|120|675269737|12413095660912419|54","3475396030|12|15:38:00|60|1450883263|18113647340942701|55","3475396030|12|15:37:00|120|1450883263|17713647260942701|55","3475396030|12|15:35:00|120|1450883263|9813647230942707|55","3475396030|12|15:38:00|60|44881418|11013647210942699|56","986262698|7|15:38:00|60|2177031349|313094660912383|39","986262698|7|15:37:00|60|2177031349|10113094610651563|39","986262698|7|15:35:00|60|2177031349|9213094590651562|39","986262698|7|15:38:00|120|1100607264|6513094570651565|46","986262698|7|15:35:00|120|1100607264|10513094610912373|46","3494453711|6|15:38:00|60|2706513156|10313094450295944|56","3494453711|6|15:35:00|60|2706513156|10613094510295944|56","3494453711|6|15:37:00|60|1745152818|12713094500912370|54","2540754978|5|15:36:00|60|2649549238|13813094370912363|57","2540754978|5|15:35:00|60|2649549238|11013094380912363|57","2540754978|5|15:37:00|120|224821915|10713094380094711|57","2540754978|5|15:36:00|120|224821915|13513094370094711|57","175753322|4|15:37:00|60|4198886535|11013864000942709|56","175753322|4|15:36:00|60|4198886535|25513864030942709|56","175753322|4|15:38:00|60|44881418|11113864000942711|57","175753322|4|15:37:00|60|44881418|17613864020942711|57","3830653061|3|15:37:00|120|2503048334|10213093990912354|58","3830653061|3|15:36:00|120|2503048334|19313093930912354|58","3830653061|3|15:38:00|60|1742862628|9813093900095500|58","3830653061|3|15:37:00|60|1742862628|18813093960095500|58","2503048334|3|15:38:00|60|3830653061|14213093970095500|58","2503048334|3|15:37:00|120|3830653061|10913093990095500|58","2503048334|3|15:35:00|60|3830653061|10013093920095500|58","2503048334|3|15:38:00|120|2269163997|19313093930912354|59","2503048334|2|15:36:00|120|3979953845|20113093830912345|54","2503048334|2|15:35:00|120|3979953845|14713093790095484|54","3145751766|1|15:37:00|60|259791766|21113092920912269|59","3145751766|1|15:36:00|120|259791766|19913092970912276|59","3145751766|1|15:37:00|120|3566702934|21913092920912270|59","3145751766|1|15:36:00|60|3566702934|11013092900095468|59","675269737|13|15:38:00|60|3690575038|12113095680912413|53","675269737|13|15:37:00|120|3690575038|13513095640912419|53","675269737|13|15:37:00|120|642786040|6513095550912416|45","675269737|13|15:36:00|120|642786040|11513095680912417|45","4246083363|8|15:38:00|60|3566817926|10113094880795507|58","4246083363|8|15:37:00|60|3566817926|18513094960795507|58","4246083363|8|15:38:00|60|3398784409|11213094950795505|55","4246083363|8|15:37:00|60|3398784409|16513094920795505|55","4246083363|8|15:35:00|120|3398784409|12113094980795505|55","1745152818|6|15:38:00|60|3494453711|10713094510295944|56","1745152818|6|15:36:00|60|224821915|11113094440912370|53","1745152818|6|15:35:00|60|224821915|12613094500912370|53","2649549238|5|15:37:00|120|1707647480|13813094370912363|58","2649549238|5|15:36:00|60|1707647480|11013094380912363|58","2649549238|5|15:37:00|60|2540754978|613094420912365|57","2649549238|5|15:36:00|60|2540754978|10713094380094711|57","1742862628|3|15:38:00|120|891393435|18813093960095500|57","1742862628|3|15:37:00|120|891393435|10013093920095500|57","1742862628|3|15:37:00|60|3830653061|11413093980912354|58","1742862628|3|15:36:00|60|3830653061|10213093990912354|58","94248676|2|15:38:00|120|2858233536|10913093750095483|58","94248676|2|15:37:00|60|2858233536|11413093880095483|58","94248676|2|15:38:00|60|2503048334|9913093750095484|56","94248676|2|15:37:00|120|2503048334|21013093760095484|56","94248676|2|15:35:00|120|2503048334|20913093760095484|56","3566702934|1|15:38:00|120|3145751766|21213092920912269|57","3566702934|1|15:36:00|120|598631581|21813092920912270|59","3566702934|1|15:35:00|60|598631581|20213092970912277|59","3690575038|13|15:37:00|60|2401493758|13213095590912413|53","3690575038|13|15:36:00|60|2401493758|7513095560912413|53","3690575038|13|15:37:00|120|675269737|12713095590912416|47","3690575038|13|15:36:00|60|675269737|6513095550912416|47","3683962764|12|15:38:00|60|695063120|18113647340942699|58","3683962764|12|15:37:00|60|695063120|15513647350942699|58","3683962764|12|15:37:00|120|44881418|9913647290942700|54","3683962764|12|15:36:00|120|44881418|15313647350942701|54","3566817926|8|15:38:00|60|1994114096|18513094960795507|58","3566817926|8|15:37:00|60|1994114096|17313094920795507|58","3566817926|8|15:38:00|60|4246083363|9713094880795505|51","3566817926|8|15:37:00|60|4246083363|17313094910795505|51","2707323384|7|15:38:00|120|1100607264|10213094610651563|39","2707323384|7|15:37:00|60|1100607264|6713094630651570|39","2707323384|7|15:36:00|120|2924666242|9713094590651565|42","2707323384|7|15:35:00|120|2924666242|10513094610651565|42","224821915|7|15:37:00|60|1314938315|11013094670912379|44","224821915|7|15:36:00|120|1314938315|10313094650912373|44","224821915|7|15:37:00|60|46216692|6613094630912376|43","224821915|7|15:36:00|60|46216692|9113094590651562|43","224821915|6|15:38:00|120|1490149880|10513094450912370|58","224821915|6|15:37:00|120|1490149880|11113094440912370|58","224821915|6|15:36:00|60|1745152818|10313094450295944|57","224821915|5|15:38:00|60|2540754978|13913094370912363|59","224821915|5|15:36:00|120|2540754978|14413094420912363|59","224821915|5|15:35:00|60|2540754978|13813094370912363|59","604149420|4|15:36:00|120|590575000|25113864030942711|51","604149420|4|15:35:00|60|590575000|17413864020942711|51","604149420|4|15:36:00|120|44881418|24413864010942709|52","604149420|4|15:35:00|60|44881418|11013864000942709|52","2858233536|2|15:35:00|120|3987776330|21713093830912330|58","2401493758|13|15:38:00|120|3789783956|13213095590912413|55","2401493758|13|15:36:00|120|3789783956|12013095680912413|55","2401493758|13|15:35:00|120|3789783956|8913095650912419|55","2401493758|13|15:36:00|120|3690575038|11613095680912416|46","2401493758|13|15:35:00|60|3690575038|6513095550912416|46","695063120|12|15:37:00|60|3683962764|11813647310942701|56","695063120|12|15:36:00|120|3683962764|9913647230942707|56","695063120|12|15:36:00|60|2488289503|18013647340942699|59","695063120|12|15:35:00|60|2488289503|15413647350942699|59","2702846096|10|15:37:00|120|980642687|12613164410296022|53","2702846096|10|15:36:00|180|980642687|10213164400296022|53","4197757394|9|15:37:00|60|3524584243|20213095120912395|57","4197757394|9|15:36:00|120|3524584243|313095100912401|57","4197757394|9|15:38:00|60|645341577|17613095150912393|58","4197757394|9|15:37:00|120|645341577|2213095120912389|58","1994114096|8|15:36:00|60|3566817926|17313094910795505|53","1994114096|8|15:35:00|60|3566817926|11213094950795505|53","1994114096|8|15:37:00|60|891393435|11513094950795507|58","1994114096|8|15:36:00|120|891393435|9913094890795507|58","1490149880|6|15:37:00|120|224821915|19713094520295944|56","1490149880|6|15:36:00|60|224821915|10713094510295944|56","1490149880|6|15:38:00|60|3180795927|12613094500912370|59","1490149880|6|15:37:00|60|3180795927|17513094460912370|59","3179893028|5|15:37:00|120|3398784409|13713094370912363|59","3179893028|5|15:36:00|120|3398784409|12213094300912363|59","3179893028|5|15:38:00|60|1707647480|13713094370094711|58","3179893028|5|15:37:00|60|1707647480|10813094380094711|58","590575000|4|15:38:00|60|977856475|11013864000942711|53","590575000|4|15:37:00|60|977856475|23913864010942711|53","590575000|4|15:35:00|60|977856475|10913864000942711|53","590575000|4|15:38:00|120|604149420|17713864020942709|54","3514016666|3|15:36:00|60|891393435|19713094000912354|58","3514016666|3|15:35:00|60|891393435|19413093930912354|58","3514016666|3|15:37:00|60|1917711411|18913094020095500|56","3514016666|3|15:36:00|120|1917711411|14013093970095500|56","2877706505|1|15:37:00|60|2734436604|10913092900095468|59","2877706505|1|15:36:00|120|2734436604|14013093000912283|59","2877706505|1|15:38:00|120|598631581|21313092920912269|57","2877706505|1|15:37:00|120|598631581|10713092900912257|57","3789783956|13|15:37:00|60|44881418|8913095650912419|55","3789783956|13|15:36:00|120|44881418|13113095590912413|55","3789783956|13|15:38:00|60|2401493758|11613095680912417|43","3789783956|13|15:37:00|60|2401493758|7213095560912416|43","3180795927|6|15:38:00|60|1490149880|10913094440295944|57","3180795927|6|15:37:00|60|1490149880|10413094450295944|57","3180795927|6|15:38:00|120|3616975530|17513094460912370|54","3180795927|6|15:37:00|60|3616975530|10413094450912370|54","977856475|4|15:36:00|60|3715978556|10913864000942711|59","977856475|4|15:35:00|60|3715978556|17313864020942711|59","977856475|4|15:37:00|60|590575000|17713864020942709|56","977856475|4|15:36:00|60|590575000|24513864010942709|56","1500021116|2|15:37:00|60|2738613188|11313093880095483|58","1500021116|2|15:36:00|120|2738613188|313093810912327|58","1500021116|2|15:38:00|60|3987776330|15013093790095484|57","1500021116|2|15:37:00|120|3987776330|10013093750095484|57","2120668118|12|15:37:00|60|2488289503|18313647340942701|57","2120668118|12|15:36:00|60|2488289503|15413647350942701|57","2120668118|12|15:38:00|120|3481964895|18013647340942699|56","2120668118|12|15:37:00|60|3481964895|15413647350942699|56","3720819819|10|15:38:00|60|3253812998|12713164410296022|52","3720819819|10|15:36:00|60|3253812998|8913164340917608|52","1836707069|9|15:38:00|60|2734436604|9213095090912395|54","1836707069|9|15:37:00|60|2734436604|20113095120912395|54","3616975530|6|15:37:00|120|3180795927|10813094510295944|57","3616975530|6|15:36:00|60|3180795927|10413094450295944|57","3616975530|6|15:38:00|60|3519554763|10413094450912370|58","3616975530|6|15:37:00|60|3519554763|213094480912371|58","882992124|5|15:38:00|60|3398784409|713094390912366|59","882992124|5|15:37:00|60|3398784409|13913094420094711|59","882992124|5|15:35:00|60|3398784409|13713094370094711|59","882992124|5|15:38:00|60|1128226880|10913094380912363|58","3481964895|12|15:38:00|60|2120668118|10013647230942707|55","3481964895|12|15:37:00|120|2120668118|10013647290942700|55","3481964895|12|15:38:00|60|2904169401|15413647350942699|57","3481964895|12|15:37:00|60|2904169401|12213647310942699|57","2734436604|9|15:38:00|60|1836707069|713095170912389|57","2734436604|9|15:37:00|60|1836707069|17713095150912393|57","2734436604|9|15:35:00|60|1836707069|9313095090912393|57","2734436604|9|15:38:00|120|3224579423|20113095120912395|57","2734436604|1|15:37:00|60|2877706505|21313092920912269|57","2734436604|1|15:36:00|60|2877706505|10713092900912257|57","2734436604|1|15:38:00|60|2669665705|10913092900095468|59","2734436604|1|15:37:00|60|2669665705|20113092970912277|59","3653339166|9|15:38:00|60|1561893142|19213095150912395|55","3653339166|9|15:37:00|60|1561893142|20413095120912395|55","3653339166|9|15:35:00|60|1561893142|12613095170912399|55","3653339166|9|15:38:00|60|3300801987|17413095150912393|58","3653339166|8|15:38:00|60|1561893142|17213094920795507|57","3653339166|8|15:37:00|60|1561893142|11413094950795507|57","3653339166|8|15:35:00|60|1561893142|12613094980795507|57","3653339166|8|15:38:00|60|3300801987|18413094970795505|54","3653339166|8|15:35:00|60|3300801987|11313094950795505|54","1102200894|9|15:38:00|60|645341577|9313095090912395|54","1102200894|9|15:36:00|120|645341577|9613095820912395|54","1102200894|9|15:35:00|120|645341577|12513095170912399|54","1102200894|7|15:37:00|60|2696990795|10013094650912379|43","1102200894|7|15:36:00|120|2696990795|7713094660912379|43","1102200894|7|15:38:00|120|73874293|9413094590651562|42","1102200894|7|15:37:00|120|73874293|213094660651581|42","3519554763|6|15:38:00|60|3616975530|13913094550295944|55","3519554763|6|15:37:00|60|3616975530|18213094540295944|55","3519554763|6|15:35:00|60|3616975530|10413094450295944|55","3519554763|6|15:38:00|60|4198886535|213094480912371|58","3519554763|4|15:38:00|60|4198886535|11213864000942711|54","3519554763|4|15:37:00|60|4198886535|17713864020942711|54","3519554763|4|15:38:00|60|515539346|17413864020942709|53","3519554763|4|15:37:00|60|515539346|10913864000942709|53","1128226880|5|15:38:00|120|882992124|14013094420094711|57","1128226880|5|15:37:00|60|882992124|713094390912366|57","1128226880|5|15:35:00|60|882992124|12213094300094711|57","1128226880|5|15:38:00|120|4122770022|13613094370912363|58","1760224038|4|15:37:00|120|3711272335|17313864020942711|56","1760224038|4|15:36:00|60|3711272335|10813864000942711|56","1760224038|4|15:38:00|60|3715978556|24713864010942709|55","1760224038|4|15:37:00|60|3715978556|17813864020942709|55","1931254292|3|15:38:00|60|1152988904|8213093890095500|57","1931254292|3|15:37:00|60|1152988904|10713093990095500|57","1931254292|3|15:35:00|60|1152988904|12113093980095500|57","1931254292|3|15:38:00|60|1213432453|11613093980912354|58","697925458|13|15:38:00|60|3411985938|6713095550912413|55","697925458|13|15:37:00|60|3411985938|11913095680912413|55","697925458|13|15:35:00|120|3411985938|12113095660912419|55","697925458|13|15:38:00|60|2198512348|11813095660912423|50","697925458|13|15:35:00|60|2198512348|8813095630912423|50","2904169401|12|15:38:00|60|3481964895|19713647320942701|56","2904169401|12|15:36:00|60|3481964895|10013647290942700|56","2904169401|12|15:38:00|60|2011584683|12213647310942699|57","3224579423|9|15:35:00|120|2734436604|17713095150912393|59","3224579423|9|15:38:00|60|4248981646|20313095220912399|56","3224579423|9|15:36:00|60|4248981646|9113095090912395|56","3224579423|9|15:35:00|60|4248981646|18813095150912395|56","1561893142|9|15:36:00|60|3211140642|9313095090912395|56","1561893142|9|15:35:00|60|3211140642|19113095150912395|56","1561893142|9|15:37:00|60|3653339166|17413095150912393|58","1561893142|9|15:36:00|60|3653339166|9513095820912393|58","1561893142|8|15:36:00|60|3211140642|12613094980795507|57","1561893142|8|15:35:00|60|3211140642|17113094920795507|57","1561893142|8|15:37:00|60|3653339166|18413094970795505|52","1561893142|8|15:36:00|60|3653339166|17613094960795505|52","2696990795|7|15:37:00|120|1102200894|613094650912383|48","2696990795|7|15:36:00|60|1102200894|213094660651581|48","2696990795|7|15:38:00|60|2425224985|10013094650912379|41","2696990795|7|15:37:00|60|2425224985|10413094610651565|41","4198886535|6|15:36:00|120|3519554763|13913094550295944|57","4198886535|6|15:35:00|60|3519554763|10813094510295944|57","4198886535|6|15:37:00|60|2624477086|13513094550912370|58","4198886535|6|15:36:00|60|2624477086|213094460912371|58","4198886535|4|15:36:00|120|175753322|11113864000942711|57","4198886535|4|15:35:00|60|175753322|25213864030942711|57","4198886535|4|15:37:00|60|3519554763|17413864020942709|54","4198886535|4|15:36:00|120|3519554763|24213864010942709|54","4122770022|9|15:36:00|60|1736981303|2313095190912389|57","4122770022|9|15:35:00|60|1736981303|18013095120912393|57","4122770022|9|15:37:00|60|891393435|19313095150912395|54","4122770022|9|15:35:00|120|891393435|20513095120912395|54","4122770022|5|15:35:00|120|1128226880|713094390912366|57","4122770022|5|15:38:00|120|891393435|12113094300912363|57","4122770022|5|15:36:00|120|891393435|14013094420912363|57","4122770022|5|15:35:00|120|891393435|12013094300912363|57","3711272335|4|15:36:00|120|1100607264|17213864020942711|56","3711272335|4|15:35:00|60|1100607264|23613864010942711|56","1152988904|3|15:37:00|60|1931254292|11613093980912354|59","1152988904|3|15:36:00|60|1931254292|13113093970912354|59","1152988904|3|15:37:00|60|3649286437|18513093960095500|57","1152988904|3|15:36:00|60|3649286437|12113093980095500|57","3487389407|2|15:38:00|120|1721597436|20813093810912330|59","3487389407|2|15:37:00|120|1721597436|11213093880095483|59","3487389407|2|15:37:00|60|2577613756|10113093750095484|58","3487389407|2|15:36:00|60|2577613756|15113093790095484|58","2247827349|1|15:38:00|60|2924666242|21513092920912270|60","2247827349|1|15:37:00|60|2924666242|20413093030912289|60","2247827349|1|15:34:00|60|2924666242|19813092970912277|60","2247827349|1|15:38:00|120|2011584683|10913092900912257|58","2247827349|1|15:36:00|120|2011584683|20213092970912276|58","2247827349|1|15:35:00|60|2011584683|10813092900912257|58","3411985938|13|15:35:00|60|697925458|12813095590912416|51","3411985938|13|15:34:00|60|697925458|12913095640912424|51","3411985938|13|15:37:00|120|4225800166|13013095590912413|55","3411985938|13|15:36:00|60|4225800166|13213095640912419|55","2805226700|11|15:38:00|60|2998612092|12013095420912409|56","2805226700|11|15:36:00|60|2998612092|11313095440912409|56","2805226700|11|15:34:00|60|2998612092|11913095420912409|56","4248981646|9|15:38:00|60|3224579423|18713095120912393|60","4248981646|9|15:34:00|120|3224579423|10113095160912398|60","4248981646|9|15:38:00|60|20785767|20013095120912395|58","4248981646|9|15:36:00|120|20785767|18813095150912395|58","4248981646|9|15:35:00|60|20785767|19913095120912395|58","3211140642|9|15:37:00|60|1561893142|17513095190912398|58","3211140642|9|15:36:00|60|1561893142|17413095150912393|58","3211140642|9|15:34:00|60|1561893142|18213095120912393|58","3211140642|9|15:38:00|60|1102200894|12613095170912399|57","3211140642|8|15:37:00|120|73874293|12613094980795507|57","3211140642|8|15:36:00|120|73874293|17113094920795507|57","2425224985|7|15:38:00|60|2696990795|513094590912381|43","2425224985|7|15:37:00|60|2696990795|10313094610651562|43","2425224985|7|15:34:00|120|2696990795|213094660651581|43","2425224985|7|15:38:00|60|1876271269|10413094610651565|42","2425224985|7|15:36:00|60|1876271269|6313094570912373|42","2425224985|7|15:35:00|60|1876271269|6813094630912379|42","2624477086|6|15:36:00|120|4198886535|10513094450295944|56","2624477086|6|15:35:00|60|4198886535|13913094550295944|56","2624477086|6|15:38:00|60|44881418|10313094450912370|58","2624477086|6|15:37:00|60|44881418|213094460912371|58","3649286437|3|15:38:00|60|1152988904|13213093970912354|59","3649286437|3|15:37:00|60|1152988904|10413093990912354|59","3649286437|3|15:35:00|60|1152988904|17413094020912354|59","3649286437|3|15:34:00|60|1152988904|1813093930912353|59","3649286437|3|15:34:00|120|73874293|10613093990095500|57","2924666242|7|15:38:00|120|2707323384|9313094590651562|41","2924666242|7|15:36:00|60|2707323384|7713094660912376|41","2924666242|7|15:35:00|60|2707323384|10213094670651570|41","2924666242|7|15:37:00|60|380937225|10513094610651565|41","2924666242|7|15:36:00|60|380937225|6913094630912379|41","2924666242|7|15:34:00|60|380937225|6413094570651565|41","2924666242|1|15:38:00|60|2247827349|14213093000912282|58","2924666242|1|15:34:00|60|2247827349|10813092900912257|58","2924666242|1|15:38:00|60|3747807733|19913092970912277|59","2924666242|1|15:36:00|60|3747807733|13813093000912283|59","2924666242|1|15:35:00|60|3747807733|21313092920912270|59","1876271269|7|15:37:00|60|2425224985|513094590912381|40","1876271269|7|15:36:00|60|2425224985|10413094670651570|40","1876271269|7|15:34:00|60|2425224985|5813094560651562|40","1876271269|7|15:38:00|120|1393958362|9613094590651565|44","44881418|6|15:37:00|60|2624477086|10913094510295944|57","44881418|6|15:36:00|60|2624477086|11013094440295944|57","44881418|6|15:34:00|60|2624477086|13913094550295944|57","44881418|6|15:38:00|120|1450883263|213094460912371|55","44881418|6|15:34:00|120|1450883263|10713094510912370|55","44881418|4|15:38:00|120|604149420|17613864020942711|55","44881418|4|15:36:00|60|604149420|11013864000942711|55","44881418|4|15:35:00|60|604149420|25113864030942711|55","44881418|4|15:36:00|60|175753322|11013864000942709|56","44881418|4|15:35:00|60|175753322|25513864030942709|56","44881418|13|15:38:00|60|3789783956|12913095640912424|47","44881418|13|15:37:00|120|3789783956|11713095660912423|47","44881418|13|15:34:00|60|3789783956|11613095680912416|47","44881418|13|15:38:00|60|2198512348|13113095590912413|56","44881418|13|15:36:00|60|2198512348|6713095550912413|56","44881418|13|15:35:00|60|2198512348|12213095660912420|56","44881418|12|15:35:00|60|3475396030|11713647310942701|56","44881418|12|15:34:00|60|3475396030|9813647230942707|56","44881418|12|15:37:00|120|3683962764|17513647260942699|56","44881418|12|15:36:00|120|3683962764|18113647340942699|56","1727514119|5|15:38:00|60|891393435|513094400912366|58","1727514119|5|15:37:00|60|891393435|14113094420094711|58","1727514119|5|15:35:00|120|891393435|13913094370094711|58","1727514119|5|15:34:00|120|891393435|12313094300094711|58","1727514119|5|15:35:00|120|1393958362|19413094340912363|57","1727514119|5|15:34:00|120|1393958362|11913094300912363|57","606571514|4|15:37:00|60|2358884938|17113864020942711|57","606571514|4|15:36:00|60|2358884938|10713864000942711|57","606571514|4|15:38:00|120|1100607264|11413864000942709|54","606571514|4|15:36:00|60|1100607264|17913864020942709|54","606571514|4|15:34:00|60|1100607264|17813864020942709|54","73874293|8|15:38:00|120|3211140642|17813094960795505|55","73874293|8|15:35:00|60|1065328272|18613094970795507|58","73874293|8|15:34:00|60|1065328272|12513094980795507|58","73874293|7|15:37:00|60|380937225|10313094670651570|46","73874293|7|15:36:00|120|380937225|10213094610651562|46","73874293|7|15:38:00|60|1102200894|5913094560651565|41","73874293|7|15:37:00|60|1102200894|6413094570651565|41","73874293|7|15:35:00|120|1102200894|10613094670912379|41","73874293|7|15:34:00|60|1102200894|10413094610651565|41","73874293|3|15:35:00|60|645341577|12013093980095500|57","73874293|3|15:34:00|60|645341577|13713093970095500|57","73874293|3|15:37:00|60|3649286437|17513094020912354|58","73874293|3|15:36:00|60|3649286437|10413093990912354|58","244503826|2|15:38:00|60|3614543683|10613093750095483|58","244503826|2|15:37:00|60|3614543683|11113093880095483|58","244503826|2|15:35:00|60|3614543683|20513093810912330|58","244503826|2|15:34:00|60|3614543683|10513093750095483|58","244503826|2|15:34:00|120|1721597436|10113093750095484|57","3747807733|1|15:38:00|60|2924666242|21713092920912269|57","3747807733|1|15:36:00|60|2924666242|10913092900912257|57","3747807733|1|15:35:00|60|2924666242|12013844190955497|57","3747807733|1|15:37:00|120|1100607264|13813093000912283|59","3747807733|1|15:36:00|120|1100607264|21313092920912270|59","3747807733|1|15:34:00|120|1100607264|10613092900095468|59","2669665705|13|15:38:00|60|3524584243|8813095650912419|54","2669665705|13|15:34:00|120|3524584243|8913095630912419|54","2669665705|13|15:38:00|120|4225800166|13113095640912424|49","2669665705|13|15:36:00|60|4225800166|7313095560912416|49","2669665705|13|15:35:00|120|4225800166|7213095620912423|49","2669665705|1|15:37:00|60|2734436604|20813093030912288|58","2669665705|1|15:36:00|60|2734436604|21313092920912269|58","2669665705|1|15:34:00|120|2734436604|10713092900912257|58","2669665705|1|15:38:00|120|2011584683|20113092970912277|58","595945906|11|15:37:00|120|2998612092|19713095460912411|57","595945906|11|15:36:00|60|2998612092|13513095500440174|57","595945906|11|15:34:00|120|2998612092|11613095420440174|57","595945906|11|15:38:00|60|209994619|11313095440912409|55","595945906|11|15:35:00|60|209994619|11913095430912409|55","595945906|11|15:34:00|60|209994619|11213095440912409|55","3217152725|9|15:36:00|120|20785767|2113095150912389|58","3217152725|9|15:35:00|60|20785767|18713095120912393|58","3217152725|9|15:36:00|120|1390530723|18713095150912395|57","3217152725|9|15:35:00|120|1390530723|19813095120912395|57","1450883263|6|15:37:00|120|2801003483|13413094550912370|58","1450883263|6|15:36:00|120|2801003483|10213094450912370|58","1450883263|6|15:38:00|60|44881418|10613094450295944|57","1450883263|6|15:37:00|120|44881418|12713094500295944|57","1450883263|6|15:35:00|120|44881418|10913094510295944|57","1450883263|6|15:34:00|60|44881418|10513094450295944|57","1450883263|12|15:34:00|60|3475396030|18113647340942699|58","1450883263|12|15:38:00|60|1162874157|15213647350942701|55","1450883263|12|15:36:00|60|1162874157|19213647320942701|55","1450883263|12|15:35:00|60|1162874157|15113647350942701|55","2358884938|4|15:37:00|60|1213432453|10713864000942711|57","2358884938|4|15:36:00|120|1213432453|23513864010942711|57","2358884938|4|15:34:00|60|1213432453|10613864000942711|57","2358884938|4|15:38:00|120|606571514|25013864010942709|54","2358884938|4|15:34:00|60|606571514|11313864000942709|54","645341577|9|15:38:00|60|1102200894|18513095220912398|58","645341577|9|15:36:00|60|1102200894|17513095150912393|58","645341577|9|15:35:00|120|1102200894|9213095090912393|58","645341577|9|15:37:00|60|4197757394|12513095170912399|55","645341577|9|15:36:00|60|4197757394|20213095120912395|55","645341577|9|15:34:00|60|4197757394|9213095090912395|55","645341577|3|15:38:00|120|73874293|13313093970912354|59","645341577|3|15:35:00|120|552165531|13713093970095500|57","645341577|3|15:34:00|120|552165531|20713093930095500|57","3524584243|9|15:37:00|120|4197757394|12413095170912398|59","3524584243|9|15:36:00|60|4197757394|2213095120912389|59","3524584243|9|15:38:00|60|1836707069|313095100912401|55","3524584243|9|15:37:00|60|1836707069|9213095090912395|55","3524584243|9|15:35:00|120|1836707069|20113095120912395|55","3524584243|9|15:34:00|120|1836707069|18913095150912395|55","3524584243|13|15:35:00|120|2669665705|8913095630912423|48","3524584243|13|15:34:00|120|2669665705|7313095560912416|48","3524584243|13|15:37:00|120|552165531|11813095680912413|51","3524584243|13|15:36:00|120|552165531|6613095550912413|51","2009211090|12|15:38:00|120|552165531|10713647210942701|58","2009211090|12|15:37:00|60|552165531|18113647260942701|58","2009211090|12|15:35:00|60|552165531|10113647290942700|58","2009211090|12|15:34:00|60|552165531|10613647210942701|58","2009211090|12|15:34:00|60|3781035794|12013647310942699|58","600722887|10|15:38:00|120|2198512348|9913164400917614|54","600722887|10|15:36:00|120|2198512348|9113164320917606|54","600722887|10|15:35:00|60|2198512348|12113164410917606|54","600722887|10|15:37:00|120|2635662580|13113164380296022|53","600722887|10|15:35:00|120|2635662580|10413164400296022|53","2198512348|13|15:38:00|120|44881418|11713095680912416|44","2198512348|13|15:37:00|120|44881418|12813095590912416|44","2198512348|13|15:38:00|60|697925458|12213095660912419|54","2198512348|13|15:37:00|60|697925458|6713095550912413|54","2198512348|13|15:35:00|120|697925458|11913095680912413|54","2198512348|13|15:34:00|60|697925458|12113095660912419|54","2198512348|10|15:35:00|120|4012104432|13313164360917606|53","2198512348|10|15:34:00|60|4012104432|9213164340917610|53","2198512348|10|15:37:00|60|600722887|9013164320917608|54","2198512348|10|15:36:00|60|600722887|13113164380296022|54","1390530723|9|15:34:00|120|3217152725|2113095150912389|58","1390530723|9|15:38:00|60|3164047331|18713095150912395|56","1390530723|9|15:36:00|120|3164047331|9013095090912395|56","1390530723|9|15:35:00|60|3164047331|12113095170912399|56","2011584683|8|15:36:00|120|4225800166|12513094980795507|56","2011584683|8|15:35:00|120|4225800166|11213094950795507|56","2011584683|8|15:38:00|60|1065328272|10113094890795505|53","2011584683|8|15:37:00|60|1065328272|513094970912387|53","2011584683|12|15:37:00|60|2904169401|19713647320942701|56","2011584683|12|15:36:00|60|2904169401|10013647230942707|56","2011584683|12|15:34:00|120|2904169401|10513647210942701|56","2011584683|12|15:38:00|120|1065328272|15313647350942699|57","2011584683|12|15:35:00|120|1065328272|15213647350942699|57","2011584683|12|15:34:00|120|1065328272|10713647210942699|57","2011584683|1|15:37:00|120|2669665705|20913093030912288|57","2011584683|1|15:36:00|120|2669665705|10813092900912257|57","2011584683|1|15:36:00|60|2247827349|20413093030912289|59","2011584683|1|15:35:00|60|2247827349|19913092970912277|59","2692076464|7|15:38:00|120|1393958362|7813094660651570|43","2692076464|7|15:37:00|60|1393958362|10413094610651562|43","2692076464|7|15:34:00|60|1393958362|513094590912381|43","2692076464|7|15:38:00|60|2014137071|9913094650912379|44","2692076464|7|15:36:00|60|2014137071|10313094610651565|44","2692076464|7|15:35:00|60|2014137071|6713094630912373|44","2801003483|6|15:36:00|60|1450883263|12713094500295944|56","2801003483|6|15:35:00|120|1450883263|18413094540295944|56","2801003483|6|15:38:00|60|3875198686|10213094450912370|58","2801003483|6|15:37:00|60|3875198686|10713094510912370|58","2801003483|6|15:34:00|60|3875198686|10713094440912370|58","1213432453|4|15:38:00|60|2358884938|18113864020942709|53","1213432453|4|15:36:00|60|2358884938|11413864000942709|53","1213432453|4|15:35:00|60|2358884938|24913864010942709|53","1213432453|3|15:38:00|60|1931254292|18613093960095500|56","1213432453|3|15:37:00|120|1931254292|12213093980095500|56","1213432453|3|15:35:00|120|1931254292|10713093990095500|56","1213432453|3|15:34:00|60|1931254292|12113093980095500|56","1213432453|3|15:36:00|60|1917711411|10313093990912354|57","1213432453|3|15:35:00|60|1917711411|13013093970912354|57","3117275467|2|15:38:00|60|3614543683|13613093860912349|56","3117275467|2|15:37:00|120|3614543683|15413093790095484|56","3117275467|2|15:37:00|60|3265715605|10513093750095483|56","3117275467|2|15:36:00|60|3265715605|11013093880095483|56","2890651828|14|15:38:00|60|2535004149|18713164420912435|59","2890651828|14|15:37:00|120|2535004149|22413095800912435|59","2890651828|14|15:34:00|120|2535004149|22313095800912435|59","3781035794|12|15:38:00|120|3838784219|12113647310942699|58","3781035794|12|15:36:00|60|3838784219|10613647210942699|58","3781035794|12|15:35:00|60|3838784219|12013647310942699|58","3781035794|12|15:35:00|60|2009211090|10113647230942707|58","3781035794|12|15:34:00|60|2009211090|10113647290942700|58","3468280332|11|15:37:00|0|209994619|13613095500440174|57","3468280332|11|15:36:00|60|209994619|11713095420440174|57","3468280332|11|15:38:00|60|637614763|19913095460912409|55","3468280332|11|15:37:00|60|637614763|11913095430912409|55","3468280332|11|15:35:00|60|637614763|11813095420912409|55","3468280332|11|15:34:00|60|637614763|313095530912412|55","4012104432|10|15:35:00|120|2488289503|9213164340917610|55","4012104432|10|15:34:00|60|2488289503|13713164390917606|55","4012104432|10|15:37:00|60|2198512348|10513164400296022|52","4012104432|10|15:36:00|60|2198512348|9113164340917608|52","3164047331|9|15:38:00|60|2673577552|19813095120912395|58","3164047331|9|15:37:00|60|2673577552|20013095220912399|58","3164047331|9|15:35:00|60|2673577552|18613095150912395|58","3164047331|9|15:34:00|60|2673577552|19913095220912399|58","4225800166|8|15:38:00|60|4290789948|12513094980795507|57","4225800166|8|15:37:00|60|4290789948|11213094950795507|57","4225800166|8|15:35:00|60|4290789948|17713094910795507|57","4225800166|8|15:34:00|120|4290789948|16913094920795507|57","4225800166|8|15:36:00|120|2011584683|10113094890795505|57","4225800166|8|15:35:00|120|2011584683|513094970912387|57","4225800166|13|15:38:00|120|2669665705|12113095660912419|54","4225800166|13|15:37:00|120|2669665705|13213095640912419|54","4225800166|13|15:38:00|60|3411985938|13113095640912423|48","4225800166|13|15:37:00|60|3411985938|7313095560912416|48","4225800166|13|15:35:00|60|3411985938|8713095650912423|48","4225800166|13|15:34:00|120|3411985938|11713095680912416|48","3875198686|6|15:36:00|60|2635662580|17213094460912370|57","3875198686|6|15:35:00|60|2635662580|10113094450912370|57","3875198686|6|15:38:00|60|2801003483|12813094500295944|57","3875198686|6|15:37:00|120|2801003483|11013094510295944|57","3300801987|9|15:37:00|120|891393435|18213095120912393|57","3300801987|9|15:36:00|120|891393435|2013095150912389|57","3300801987|9|15:34:00|120|891393435|18113095120912393|57","3300801987|9|15:38:00|120|3653339166|20513095120912395|55","3300801987|9|15:34:00|60|3653339166|12613095170912399|55","3300801987|8|15:38:00|120|891393435|17613094960795505|53","3300801987|8|15:36:00|120|891393435|11313094950795505|53","3300801987|8|15:35:00|120|891393435|12213094980795505|53","3300801987|8|15:36:00|60|3653339166|11413094950795507|57","3300801987|8|15:35:00|60|3653339166|18213094960795507|57","3300801987|4|15:38:00|60|1213432453|11513864000942709|55","3300801987|4|15:37:00|60|1213432453|18113864020942709|55","3300801987|4|15:34:00|60|1213432453|24913864010942709|55","3300801987|4|15:38:00|60|2826028950|17013864020942711|54","3300801987|4|15:36:00|60|2826028950|16913864020942711|54","3300801987|4|15:34:00|60|2826028950|10513864000942711|54","4013515236|3|15:35:00|60|1282474756|10513093990095500|59","4013515236|3|15:34:00|120|1282474756|20613093930095500|59","1877754383|1|15:37:00|180|3398784409|13713093000912283|58","1877754383|1|15:36:00|120|3398784409|21113092920912270|58","1877754383|1|15:38:00|120|3827069729|21913092920912269|57","1877754383|1|15:37:00|60|3827069729|21313093030912288|57","1877754383|1|15:35:00|120|3827069729|21213093030912288|57","1877754383|1|15:34:00|120|3827069729|21713092920912269|57","2535004149|14|15:35:00|60|2871016604|22213095790912435|59","2535004149|14|15:34:00|120|2871016604|23813164430917618|59","2535004149|14|15:36:00|120|2890651828|21713095800912430|39","2535004149|14|15:35:00|60|2890651828|18113164420912430|39","2974665047|13|15:35:00|60|1183318172|8713095650912420|45","2974665047|13|15:38:00|60|3325830777|11913095680912417|51","2974665047|13|15:35:00|120|3325830777|13013095590912417|51","2974665047|13|15:34:00|120|3325830777|6713095550912417|51","618858167|13|15:34:00|120|552165531|13213095640912423|48","618858167|13|15:38:00|120|3265715605|7313095560912413|49","618858167|13|15:36:00|60|3265715605|6613095550912414|49","618858167|13|15:35:00|60|3265715605|11713095680912413|49","3838784219|12|15:36:00|60|3781035794|10713647210942701|54","3838784219|12|15:35:00|60|3781035794|18113647260942701|54","3838784219|12|15:38:00|120|3614543683|18813647320942699|57","3838784219|12|15:37:00|120|3614543683|10613647210942699|57","637614763|11|15:37:00|60|3468280332|11213095490440174|55","637614763|11|15:36:00|60|3468280332|13613095500440174|55","637614763|11|15:34:00|60|3468280332|19713095460912411|55","637614763|11|15:38:00|60|3987776330|11913095430912409|55","637614763|11|15:35:00|120|3987776330|313095530912412|55","637614763|11|15:34:00|60|3987776330|11813095430912409|55","560256723|10|15:37:00|60|3565805587|9013164340917608|54","560256723|10|15:36:00|60|3565805587|8913164320917608|54","560256723|10|15:35:00|60|2635662580|9913164400917614|54","560256723|10|15:34:00|60|2635662580|13413164360917606|54","2488289503|12|15:37:00|60|695063120|15413647350942701|55","2488289503|12|15:36:00|60|695063120|11813647310942701|55","2488289503|12|15:38:00|60|2120668118|10913647210942699|57","2488289503|12|15:37:00|60|2120668118|18013647340942699|57","2488289503|12|15:35:00|60|2120668118|12213647310942699|57","2488289503|12|15:34:00|60|2120668118|10813647210942699|57","2488289503|10|15:38:00|60|1098202862|13313164360917606|51","2488289503|10|15:37:00|60|1098202862|9213164340917610|51","2673577552|9|15:38:00|60|3164047331|18013095150912393|57","2673577552|9|15:37:00|60|3164047331|18213095190912398|57","2673577552|9|15:34:00|60|3164047331|19013095220912398|57","2673577552|9|15:38:00|60|3253812998|20013095220912399|59","2673577552|9|15:36:00|120|3253812998|18613095150912395|59","2673577552|9|15:35:00|120|3253812998|19913095220912399|59","4290789948|8|15:35:00|60|2496888016|9613094890795507|56","4290789948|8|15:34:00|60|2496888016|11113094950795507|56","4290789948|8|15:37:00|60|4225800166|16913094920795505|53","4290789948|8|15:36:00|120|4225800166|18613094970795505|53","2577613756|7|15:38:00|60|2014137071|513094610912377|41","2577613756|7|15:37:00|60|2014137071|513094590912377|41","2577613756|7|15:35:00|60|2014137071|9413094590651563|41","2577613756|7|15:34:00|60|2014137071|10413094610651562|41","2577613756|7|15:35:00|60|2096931515|9813094650912379|44","2577613756|7|15:34:00|60|2096931515|6713094630912379|44","2577613756|5|15:37:00|120|2058569149|14313094420094711|58","2577613756|5|15:36:00|120|2058569149|913094390912366|58","2577613756|5|15:38:00|60|2738613188|20913094390912363|58","2577613756|5|15:37:00|120|2738613188|10613094380912363|58","2577613756|5|15:34:00|60|2738613188|13613094420912363|58","2577613756|2|15:38:00|60|3487389407|21713093770912330|58","2577613756|2|15:36:00|120|2738613188|20513093830912345|58","2577613756|2|15:35:00|60|2738613188|10013093750095484|58","2826028950|4|15:38:00|120|3300801987|18213864020942709|54","2826028950|4|15:37:00|60|3300801987|11513864000942709|54","2826028950|4|15:34:00|60|3300801987|11413864000942709|54","2826028950|4|15:38:00|60|1393958362|10613864000942711|54","2826028950|4|15:35:00|60|1393958362|10513864000942711|54","2826028950|4|15:34:00|120|1393958362|16813864020942711|54","1362116730|2|15:35:00|120|1282474756|10913093880095483|56","1362116730|2|15:34:00|60|1282474756|20213093810912330|56","1362116730|2|15:37:00|120|3265715605|15513093790095484|56","1362116730|2|15:36:00|120|3265715605|10313093750095484|56","3398784409|8|15:38:00|60|4246083363|10013094890795507|58","3398784409|8|15:37:00|60|4246083363|10113094880795507|58","3398784409|8|15:35:00|60|4246083363|9713094940795507|58","3398784409|8|15:34:00|60|4246083363|17313094920795507|58","3398784409|8|15:34:00|120|3780921823|16413094920795505|55","3398784409|5|15:38:00|60|882992124|12213094300912363|58","3398784409|5|15:36:00|60|882992124|13613094370912363|58","3398784409|5|15:35:00|60|882992124|14113094420912363|58","3398784409|5|15:37:00|120|3179893028|19213094400094711|57","3398784409|5|15:36:00|120|3179893028|13713094370094711|57","3398784409|5|15:34:00|120|3179893028|12113094300094711|57","3398784409|1|15:38:00|120|3891613492|21113092920912270|58","3398784409|1|15:34:00|180|3891613492|19513092970912277|58","3398784409|1|15:38:00|120|1877754383|22013092920912269|55","3398784409|1|15:36:00|120|1877754383|21913092920912269|55","3398784409|1|15:35:00|120|1877754383|21313093030912288|55","2871016604|14|15:37:00|120|1194974051|22313095800912435|59","2871016604|14|15:36:00|120|1194974051|22213095790912435|59","2871016604|14|15:34:00|120|1194974051|22213095800912435|59","2871016604|14|15:38:00|60|2535004149|21813095800912430|59","1183318172|13|15:37:00|120|3691015742|11813095660912420|47","1183318172|13|15:36:00|120|3691015742|8713095650912420|47","1183318172|13|15:37:00|120|2974665047|13113095590912417|49","1183318172|13|15:36:00|120|2974665047|11913095680912417|49","3265715605|2|15:38:00|60|1362116730|10513093750095483|56","3265715605|2|15:37:00|120|1362116730|11013093880095483|56","3265715605|2|15:35:00|60|1362116730|20313093810912330|56","3265715605|2|15:34:00|120|1362116730|10413093750095483|56","3265715605|2|15:35:00|120|3117275467|10813093880912351|56","3265715605|2|15:34:00|60|3117275467|10213093750095484|56","3265715605|13|15:37:00|60|3325830777|12813095590912413|49","3265715605|13|15:36:00|120|3325830777|11713095680912413|49","3265715605|13|15:38:00|60|618858167|11913095680912416|50","3265715605|13|15:37:00|60|618858167|6713095550912417|50","3265715605|13|15:35:00|60|618858167|7513095580912423|50","3265715605|13|15:34:00|60|618858167|12013095660912423|50","3614543683|2|15:34:00|120|3117275467|20413093810912330|56","3614543683|2|15:38:00|120|244503826|20113093810095484|56","3614543683|2|15:36:00|120|244503826|10213093750095484|56","3614543683|2|15:35:00|120|244503826|20013093810095484|56","3614543683|12|15:37:00|60|2075612487|18713647320942699|57","3614543683|12|15:36:00|60|2075612487|9613647290942704|57","3614543683|12|15:34:00|60|2075612487|10513647210942699|57","3614543683|12|15:38:00|60|3838784219|12213647310942701|56","3614543683|12|15:34:00|120|3838784219|12113647310942701|56","3987776330|2|15:38:00|60|1500021116|16313093790912333|57","3987776330|2|15:36:00|60|1500021116|11313093880095483|57","3987776330|2|15:35:00|60|1500021116|313093810912327|57","3987776330|2|15:37:00|60|2858233536|21113093760095484|54","3987776330|2|15:36:00|120|2858233536|14913093790095484|54","3987776330|2|15:34:00|60|2858233536|14813093790095484|54","3987776330|11|15:38:00|60|637614763|11813095420440174|56","3987776330|11|15:34:00|60|3714063920|11113095440912409|57","3565805587|10|15:38:00|60|4025722812|9013164340917608|52","3565805587|10|15:36:00|60|4025722812|10313164400296022|52","3565805587|10|15:35:00|60|4025722812|12713164410296022|52","3565805587|10|15:36:00|60|560256723|12313164380917610|53","3565805587|10|15:35:00|120|560256723|13513164360917606|53","1098202862|10|15:38:00|60|3715978556|9213164340917610|52","1098202862|10|15:37:00|60|3715978556|9013164320917606|52","1098202862|10|15:38:00|60|2488289503|9113164320917608|53","1098202862|10|15:37:00|120|2488289503|9213164340917608|53","1098202862|10|15:34:00|120|2488289503|10513164400296022|53","3253812998|9|15:38:00|60|2673577552|9913095820912393|59","3253812998|9|15:35:00|60|2673577552|10313095160912398|59","3253812998|9|15:34:00|60|2673577552|17913095150912393|59","3253812998|9|15:37:00|60|3427371663|19913095220912399|57","3253812998|9|15:36:00|60|3427371663|9213095820912395|57","3253812998|10|15:36:00|120|2702846096|8813164320917608|54","3253812998|10|15:35:00|60|2702846096|10213164400296022|54","2496888016|8|15:37:00|60|4290789948|11613094950795505|56","2496888016|8|15:36:00|60|4290789948|16913094920795505|56","2496888016|8|15:38:00|120|2635662580|17913094960795507|55","2496888016|8|15:37:00|120|2635662580|16913094920795507|55","2496888016|8|15:35:00|120|2635662580|11113094950795507|55","2496888016|8|15:34:00|120|2635662580|18313094970795507|55","2096931515|7|15:35:00|60|2577613756|5913094560651562|42","2096931515|7|15:34:00|120|2577613756|7813094660651570|42","2096931515|7|15:37:00|60|882210155|10413094670912379|44","2096931515|7|15:36:00|60|882210155|9813094650912379|44","3129038787|6|15:38:00|60|2635662580|11213094440295944|57","3129038787|6|15:37:00|120|2635662580|10713094450295944|57","3129038787|6|15:35:00|60|2635662580|11013094510295944|57","3129038787|6|15:34:00|60|2635662580|11113094440295944|57","3907763713|5|15:38:00|120|4065628367|20513094330912363|58","3907763713|5|15:37:00|60|4065628367|19213094400912363|58","3907763713|5|15:35:00|120|4065628367|20413094330912363|58","3907763713|5|15:34:00|120|4065628367|20613094390912363|58","3907763713|5|15:36:00|60|2738613188|11213094380094711|59","3907763713|5|15:35:00|120|2738613188|19513094340094711|59","1393958362|7|15:38:00|120|1876271269|10413094610651562|45","1393958362|7|15:37:00|120|1876271269|9513094590651562|45","1393958362|7|15:38:00|60|2692076464|6813094630912379|44","1393958362|7|15:37:00|120|2692076464|10513094670912379|44","1393958362|7|15:35:00|60|2692076464|10313094610651565|44","1393958362|7|15:34:00|120|2692076464|6313094570651565|44","1393958362|5|15:36:00|120|2058569149|11913094300912363|54","1393958362|5|15:35:00|120|2058569149|13313094370912363|54","1393958362|5|15:38:00|120|1727514119|11113094380094711|58","1393958362|5|15:37:00|60|1727514119|14013094370094711|58","1393958362|4|15:37:00|60|2826028950|18213864020942709|52","1393958362|4|15:36:00|60|2826028950|11513864000942709|52","1393958362|4|15:34:00|60|2826028950|25013864010942709|52","1393958362|4|15:38:00|120|2058569149|16913864020942711|52","1393958362|4|15:35:00|60|2058569149|24213864030942711|52","1393958362|4|15:34:00|60|2058569149|23213864010942711|52","1126076862|3|15:37:00|60|1282474756|17613093960912354|57","1126076862|3|15:36:00|60|1282474756|17713094020912354|57","1126076862|3|15:37:00|120|469044143|18213093960095500|57","1126076862|3|15:36:00|60|469044143|20913094000095500|57","1126076862|3|15:34:00|120|469044143|13513093970095500|57","1282474756|3|15:38:00|120|4013515236|17613093960912354|59","1282474756|3|15:35:00|60|4013515236|10513093990912354|59","1282474756|3|15:34:00|60|4013515236|13313093970912354|59","1282474756|3|15:37:00|60|1126076862|11913093980095500|57","1282474756|3|15:36:00|120|1126076862|10513093990095500|57","1282474756|2|15:34:00|60|1362116730|13613093860912349|57","1282474756|2|15:38:00|60|48157230|20313093810912330|56","1282474756|2|15:36:00|60|48157230|20913093830912330|56","1282474756|2|15:35:00|120|48157230|20213093810912330|56","209994619|7B|15:36:00|120|2610627973|8213094820651584|37","209994619|7B|15:35:00|120|2610627973|11813094800651584|37","209994619|11|15:38:00|60|3468280332|11913095420912409|55","209994619|11|15:37:00|60|3468280332|19913095460912409|55","209994619|11|15:38:00|120|595945906|21813095470912411|57","209994619|11|15:37:00|60|595945906|11713095420440174|57","209994619|11|15:35:00|60|595945906|13513095500440174|57","209994619|11|15:34:00|60|595945906|11113095490440174|57","1194974051|6|15:35:00|60|946374679|12213094500295944|56","1194974051|6|15:34:00|60|946374679|10613094440295944|56","1194974051|6|15:37:00|60|2706513156|313094460912371|58","1194974051|6|15:36:00|120|2706513156|19413094520912370|58","1194974051|14|15:36:00|120|2871016604|21813095800912430|59","1194974051|14|15:35:00|120|2871016604|23713164430912430|59","1194974051|14|15:38:00|120|3891613492|22213095790912435|59","1194974051|14|15:37:00|120|3891613492|23813164430917618|59","1194974051|14|15:34:00|120|3891613492|23713164430917618|59","3691015742|13|15:38:00|120|3421576237|8713095650912420|47","3691015742|13|15:35:00|120|3421576237|12713095590912414|47","3691015742|13|15:34:00|120|3421576237|11613095680912414|47","3691015742|13|15:35:00|60|1183318172|11913095680912417|49","3325830777|13|15:38:00|120|2974665047|6613095550912414|49","3325830777|13|15:37:00|120|2974665047|7313095560912414|49","3325830777|13|15:37:00|120|65431437|7213095620912419|49","3325830777|13|15:35:00|60|65431437|6513095550912413|49","3325830777|13|15:34:00|120|2974665047|11813095660912420|49","3325830777|13|15:38:00|60|3265715605|7413095560912417|46","3325830777|13|15:37:00|60|3265715605|13013095590912417|46","2075612487|12|15:36:00|60|3200465306|213647310942702|58","2075612487|12|15:35:00|120|3200465306|10513647210942699|58","2075612487|12|15:38:00|60|3614543683|10813647210942701|56","2075612487|12|15:37:00|60|3614543683|12213647310942701|56","2075612487|12|15:34:00|60|3614543683|10713647210942701|56","3714063920|11|15:38:00|60|891393435|313095530912412|53","3714063920|11|15:36:00|60|891393435|19713095460912409|53","3714063920|11|15:35:00|60|891393435|11113095440912409|53","3714063920|11|15:35:00|60|3987776330|14513095520440174|57","3714063920|11|15:34:00|60|3987776330|11213095490440174|57","4025722812|10|15:37:00|120|3720819819|10313164400296022|54","4025722812|10|15:36:00|120|3720819819|12713164410296022|54","4025722812|10|15:38:00|60|3565805587|12413164380917610|53","4025722812|10|15:37:00|120|3565805587|12313164410917606|53","4025722812|10|15:35:00|60|3565805587|12313164380917610|53","4025722812|10|15:34:00|60|3565805587|13513164360917606|53","3715978556|4|15:34:00|60|977856475|11113864000942709|56","3715978556|4|15:38:00|60|1760224038|25013864030942711|57","3715978556|4|15:36:00|60|1760224038|17313864020942711|57","3715978556|4|15:35:00|60|1760224038|23713864010942711|57","3715978556|10|15:36:00|60|1098202862|9213164340917608|53","3715978556|10|15:34:00|60|1098202862|13213164380296022|53","3715978556|10|15:37:00|60|2932899145|12013164410917606|53","3715978556|10|15:36:00|60|2932899145|9813164400917614|53","2635662580|8|15:37:00|120|2496888016|10013094940795505|52","2635662580|8|15:36:00|120|2496888016|10013094880795505|52","2635662580|8|15:34:00|120|2496888016|16913094920795505|52","2635662580|8|15:38:00|120|2688858633|9613094890795507|55","2635662580|8|15:35:00|60|2688858633|16813094920795507|55","2635662580|8|15:34:00|60|2688858633|18213094970795507|55","2635662580|6|15:37:00|60|3129038787|17213094460912370|56","2635662580|6|15:36:00|60|3129038787|10113094450912370|56","2635662580|10|15:34:00|60|560256723|14913164390296022|54","2635662580|10|15:38:00|120|600722887|13513164360917606|56","2635662580|10|15:36:00|60|600722887|12213164380917610|56","2635662580|10|15:35:00|120|600722887|13413164360917606|56","882210155|7|15:36:00|60|2096931515|513094610912377|42","882210155|7|15:35:00|60|2096931515|513094590912377|42","882210155|7|15:38:00|120|635591290|10413094670912379|44","882210155|7|15:37:00|120|635591290|9813094650912379|44","499775835|6|15:38:00|120|3129038787|19913094480295944|57","499775835|6|15:37:00|60|3129038787|9713094430295944|57","499775835|6|15:35:00|60|3129038787|12813094500295944|57","499775835|6|15:34:00|60|3129038787|11013094510295944|57","499775835|6|15:36:00|60|2465875946|17113094540912370|58","499775835|6|15:35:00|60|2465875946|12113094500912370|58","4065628367|5|15:38:00|120|3907763713|11313094380094711|58","4065628367|5|15:37:00|120|3907763713|21413094390094711|58","4065628367|5|15:37:00|60|4198988390|10513094380912363|56","4065628367|5|15:36:00|60|4198988390|20613094390912363|56","4065628367|5|15:34:00|60|4198988390|11613094300912363|56","2058569149|5|15:38:00|120|1393958362|913094390912366|58","2058569149|5|15:35:00|120|1393958362|14013094370094711|58","2058569149|5|15:34:00|120|1393958362|513094400912366|58","2058569149|5|15:37:00|120|2577613756|13313094370912363|56","2058569149|5|15:36:00|120|2577613756|20913094390912363|56","2058569149|4|15:37:00|120|1393958362|11613864000942709|55","2058569149|4|15:36:00|60|1393958362|18213864020942709|55","2058569149|4|15:34:00|120|1393958362|11513864000942709|55","2058569149|4|15:38:00|60|1721597436|23313864010942711|53","2058569149|4|15:35:00|120|1721597436|16713864020942711|53","2058569149|4|15:34:00|120|1721597436|10413864000942711|53","469044143|3|15:37:00|60|1126076862|11913093980912354|58","469044143|3|15:36:00|120|1126076862|10613093990912354|58","469044143|3|15:35:00|60|4091065876|18113093960095500|59","469044143|3|15:34:00|60|4091065876|10413093990095500|59","48157230|2|15:37:00|120|1282474756|10413093750095484|57","48157230|2|15:36:00|120|1282474756|213093810912326|57","48157230|2|15:38:00|60|2120950107|10413093750095483|56","48157230|2|15:37:00|60|2120950107|20213093810912330|56","48157230|2|15:35:00|60|2120950107|10313093750095483|56","48157230|2|15:34:00|60|2120950107|10813093880095483|56","3591610132|8|15:35:00|60|2346477303|11013094950795505|55","3591610132|8|15:34:00|60|2346477303|16313094920795505|55","3591610132|8|15:37:00|120|3930049404|11713094950795507|59","3591610132|8|15:36:00|120|3930049404|17513094920795507|59","3591610132|1|15:38:00|120|3891613492|20913092970912276|58","3591610132|1|15:37:00|120|3891613492|11213092900912257|58","3591610132|1|15:35:00|60|3891613492|22013092920912269|58","3591610132|1|15:34:00|60|3891613492|11113092900912257|58","3591610132|1|15:34:00|120|2893655003|13513093000912283|58","3891613492|14|15:38:00|60|1194974051|21913095800912430|59","3891613492|14|15:36:00|60|1194974051|18313164420912430|59","3891613492|14|15:35:00|60|1194974051|21813095800912430|59","3891613492|14|15:37:00|180|1100607264|22113095790912435|59","3891613492|14|15:36:00|180|1100607264|23713164430917618|59","1876271269|7|15:31:00|60|2425224985|10213094610651562|39","1876271269|7|15:30:00|60|2425224985|9313094590651562|39","469044143|3|15:30:00|60|1126076862|11713093980912354|58","1876271269|7|15:29:00|60|2425224985|813094650651581|39","1876271269|7|15:33:00|120|1393958362|10313094610651565|43","469044143|3|15:29:00|60|1126076862|19713093930912354|58","3427371663|10|15:32:00|60|896555290|9213164320917606|55","1876271269|7|15:32:00|180|1393958362|10413094670912373|43","1876271269|7|15:31:00|120|1393958362|9513094590651565|43","469044143|3|15:33:00|60|4091065876|18313094020095500|58","1876271269|7|15:30:00|120|1393958362|10413094670912379|43","1876271269|7|15:29:00|120|1393958362|9813094650912379|43","469044143|3|15:32:00|60|4091065876|11713093980095500|58","3427371663|10|15:31:00|60|896555290|12313164380917610|55","890688308|7|15:29:00|120|37245713|10013094610651565|43","44881418|6|15:33:00|60|2624477086|10813094510295944|57","44881418|6|15:32:00|60|2624477086|10913094440295944|57","469044143|3|15:31:00|60|4091065876|20313093930095500|58","44881418|6|15:31:00|60|2624477086|10413094450295944|57","44881418|6|15:30:00|120|2624477086|13813094550295944|57","469044143|3|15:30:00|60|4091065876|10313093990095500|58","3427371663|10|15:30:00|60|896555290|13513164360917606|55","44881418|6|15:33:00|60|1450883263|413094550912369|54","44881418|6|15:32:00|120|1450883263|17213094460912370|54","469044143|3|15:29:00|60|4091065876|313093970912352|58","44881418|6|15:31:00|60|1450883263|413094520912371|54","44881418|6|15:30:00|60|1450883263|10613094510912370|54","48157230|2|15:33:00|120|1282474756|21013093830912345|56","3427371663|10|15:29:00|60|896555290|12213164410917606|55","3871409354|6|15:33:00|120|598631581|10413094510912370|53","41893941|12|15:33:00|60|2402899129|12313647310942701|55","44881418|6|15:29:00|120|1450883263|13313094550912370|54","44881418|4|15:33:00|60|604149420|10913864000942711|54","48157230|2|15:32:00|60|1282474756|15413093790095484|56","44881418|4|15:32:00|60|604149420|23813864010942711|54","44881418|4|15:31:00|120|604149420|17313864020942711|54","48157230|2|15:31:00|120|1282474756|21713093760095484|56","1771918760|10|15:33:00|120|3866913670|9113164320917608|53","44881418|4|15:30:00|60|604149420|10813864000942711|54","44881418|4|15:29:00|60|604149420|17213864020942711|54","48157230|2|15:30:00|60|1282474756|10213093750095484|56","44881418|4|15:33:00|60|175753322|10913864000942709|55","44881418|4|15:32:00|60|175753322|17313864020942709|55","48157230|2|15:29:00|60|1282474756|15313093790095484|56","1771918760|10|15:30:00|60|3866913670|13213164380296022|53","3871409354|6|15:32:00|120|598631581|11913094500912370|53","44881418|4|15:30:00|60|175753322|10813864000942709|55","44881418|13|15:33:00|120|3789783956|12713095590912416|46","48157230|2|15:33:00|60|2120950107|20713093830912330|55","44881418|13|15:32:00|60|3789783956|6513095550912416|46","44881418|13|15:31:00|120|3789783956|8713095630912423|46","48157230|2|15:32:00|60|2120950107|20013093810912330|55","1771918760|10|15:29:00|120|3866913670|10513164400296022|53","44881418|13|15:30:00|120|3789783956|12613095590912417|46","44881418|13|15:29:00|60|3789783956|12713095640912423|46","48157230|2|15:31:00|60|2120950107|513093760912327|55","44881418|13|15:33:00|60|2198512348|12113095660912419|52","44881418|13|15:32:00|120|2198512348|13213095640912419|52","48157230|2|15:30:00|60|2120950107|13513093860912348|55","1771918760|10|15:33:00|60|3882868379|7913164330917606|53","3871409354|6|15:31:00|120|598631581|313094550912369|53","41893941|12|15:32:00|120|2402899129|10313647290942700|55","1707647480|10|15:33:00|180|3882868379|13413164380296022|53","44881418|13|15:31:00|60|2198512348|8813095650912419|52","44881418|13|15:30:00|60|2198512348|7413095580912419|52","48157230|2|15:29:00|60|2120950107|19913093810912330|55","44881418|13|15:29:00|60|2198512348|11813095680912413|52","44881418|12|15:33:00|60|3475396030|17613647260942701|54","3591610132|8|15:32:00|60|2346477303|17013094910795505|55","1771918760|10|15:32:00|60|3882868379|11813164410917606|53","44881418|12|15:32:00|60|3475396030|15113647350942701|54","44881418|12|15:31:00|120|3475396030|17913647340942701|54","3591610132|8|15:31:00|60|2346477303|10913094950795505|55","44881418|12|15:30:00|60|3475396030|10213647210942701|54","44881418|12|15:29:00|60|3475396030|9713647230942707|54","3591610132|8|15:30:00|60|2346477303|16213094920795505|55","1771918760|10|15:31:00|60|3882868379|8813164320917606|53","3871409354|6|15:30:00|120|598631581|9813094450912370|53","44881418|12|15:33:00|120|3683962764|18613647280942699|57","44881418|12|15:32:00|120|3683962764|15413647350942699|57","3591610132|8|15:29:00|60|2346477303|9213094870795505|55","44881418|12|15:31:00|60|3683962764|12213647310942699|57","44881418|12|15:30:00|120|3683962764|10813647210942699|57","3591610132|8|15:33:00|60|3930049404|10113094880795507|57","1771918760|10|15:30:00|120|3882868379|9613164400917614|53","44881418|12|15:29:00|120|3683962764|15313647350942699|57","1727514119|5|15:33:00|120|891393435|19113094340094711|57","3591610132|8|15:32:00|60|3930049404|18513094960795507|57","1727514119|5|15:32:00|120|891393435|713094390912366|57","1727514119|5|15:31:00|60|891393435|12213094300094711|57","3591610132|8|15:31:00|120|3930049404|9713094940795507|57","1771918760|10|15:29:00|60|3882868379|13313164390917606|53","3871409354|6|15:29:00|120|598631581|10313094510912370|53","41893941|12|15:31:00|60|2402899129|10813647210942701|55","1727514119|5|15:30:00|60|891393435|19213094400094711|57","1727514119|5|15:29:00|120|891393435|13713094370094711|57","3591610132|8|15:30:00|120|3930049404|17313094920795507|57","1727514119|5|15:33:00|120|1393958362|13813094420912363|57","1727514119|5|15:32:00|60|1393958362|10613094380912363|57","3591610132|8|15:29:00|120|3930049404|11513094950795507|57","1374784815|9|15:33:00|60|351139424|18313095150912395|57","1727514119|5|15:31:00|120|1393958362|11813094300912363|57","1727514119|5|15:30:00|120|1393958362|13213094370912363|57","3591610132|1|15:33:00|60|3891613492|21913092920912269|57","606571514|4|15:33:00|60|2358884938|10613864000942711|57","606571514|4|15:32:00|60|2358884938|16913864020942711|57","3591610132|1|15:32:00|120|3891613492|20613092970912276|57","1374784815|9|15:32:00|120|351139424|13513095180912399|57","3871409354|6|15:33:00|60|1950730894|20313094520295944|57","606571514|4|15:31:00|60|2358884938|23313864010942711|57","606571514|4|15:30:00|60|2358884938|10513864000942711|57","3591610132|1|15:31:00|60|3891613492|21813092920912269|57","606571514|4|15:29:00|60|2358884938|24213864030942711|57","606571514|4|15:33:00|60|1100607264|11213864000942709|50","3591610132|1|15:30:00|120|3891613492|11013092900912257|57","1374784815|9|15:31:00|120|351139424|19313095120912395|57","606571514|4|15:32:00|60|1100607264|24613864010942709|50","606571514|4|15:31:00|120|1100607264|17713864020942709|50","3591610132|1|15:29:00|60|3891613492|21713092920912269|57","606571514|4|15:30:00|60|1100607264|11113864000942709|50","606571514|4|15:29:00|60|1100607264|17613864020942709|50","3591610132|1|15:33:00|120|2893655003|10313092900095468|59","1374784815|9|15:30:00|60|351139424|8713095090912395|57","3871409354|6|15:32:00|60|1950730894|10713094450295944|57","41893941|12|15:30:00|60|2402899129|15913647350942701|55","1707647480|10|15:31:00|120|3882868379|10613164400296022|53","598631581|1|15:31:00|60|3566702934|21013092920912269|56","73874293|8|15:33:00|60|3211140642|17613094960795505|52","73874293|8|15:32:00|60|3211140642|11313094950795505|52","3591610132|1|15:32:00|120|2893655003|20713092920912270|59","73874293|8|15:31:00|60|3211140642|12213094980795505|52","73874293|8|15:30:00|120|3211140642|17513094960795505|52","3591610132|1|15:31:00|120|2893655003|21413093010912285|59","1374784815|9|15:29:00|60|351139424|18213095150912395|57","73874293|8|15:33:00|60|1065328272|11213094950795507|57","73874293|8|15:32:00|120|1065328272|18513094970795507|57","3591610132|1|15:30:00|120|2893655003|10213092900095468|59","73874293|8|15:31:00|60|1065328272|17913094960795507|57","73874293|8|15:30:00|60|1065328272|16913094920795507|57","3591610132|1|15:29:00|120|2893655003|19213092970912277|59","1374784815|9|15:33:00|180|729999544|19013095120912393|56","3871409354|6|15:31:00|0|1950730894|12813094500295944|57","73874293|8|15:29:00|60|1065328272|11113094950795507|57","73874293|7|15:33:00|60|380937225|7713094660912376|42","3891613492|14|15:33:00|60|1194974051|18213164420912430|59","73874293|7|15:32:00|60|380937225|10113094610651562|42","73874293|7|15:31:00|60|380937225|6313094570651562|42","3891613492|14|15:32:00|60|1194974051|21713095800912430|59","1374784815|9|15:32:00|120|729999544|9913095820912393|56","73874293|7|15:30:00|120|380937225|313094660912383|42","73874293|7|15:29:00|120|380937225|10113094610651563|42","3891613492|14|15:31:00|60|1194974051|23613164430912430|59","73874293|7|15:33:00|60|1102200894|9913094650912373|41","73874293|7|15:32:00|120|1102200894|10513094670912373|41","3891613492|14|15:30:00|60|1194974051|18113164420912430|59","1374784815|9|15:31:00|120|729999544|18013095150912393|56","3871409354|6|15:30:00|60|1950730894|11013094510295944|57","41893941|12|15:29:00|120|2402899129|10213647230942707|55","73874293|7|15:31:00|60|1102200894|6813094630912379|41","73874293|7|15:30:00|60|1102200894|10513094670912379|41","3891613492|14|15:29:00|60|1194974051|21613095800912430|59","73874293|7|15:29:00|120|1102200894|5813094560651565|41","73874293|3|15:33:00|60|645341577|20713093930095500|57","3891613492|14|15:33:00|180|1100607264|23613164430917618|59","1374784815|9|15:30:00|120|729999544|18213095190912398|56","73874293|3|15:32:00|60|645341577|11913093980095500|57","73874293|3|15:31:00|60|645341577|10513093990095500|57","3891613492|14|15:32:00|180|1100607264|18313164420912435|59","73874293|3|15:30:00|120|645341577|20613093930095500|57","73874293|3|15:29:00|60|645341577|18413094020095500|57","3891613492|14|15:31:00|180|1100607264|21913095790912435|59","1374784815|9|15:29:00|120|729999544|10313095160912398|56","3871409354|6|15:29:00|60|1950730894|18513094540295944|57","73874293|3|15:33:00|60|3649286437|13113093970912354|58","73874293|3|15:32:00|120|3649286437|1813093930912353|58","3891613492|14|15:30:00|180|1100607264|23513164430917618|59","73874293|3|15:31:00|60|3649286437|10313093990912354|58","73874293|3|15:30:00|60|3649286437|13013093970912354|58","3891613492|14|15:29:00|180|1100607264|18213164420912435|59","125894007|8|15:33:00|60|482278776|10013094880795505|55","73874293|3|15:29:00|120|3649286437|17113093960912354|58","244503826|2|15:33:00|120|3614543683|11013093880095483|57","3891613492|1|15:33:00|120|3398784409|21313093030912288|57","244503826|2|15:32:00|60|3614543683|21313093770912330|57","244503826|2|15:31:00|60|3614543683|20313093810912330|57","3891613492|1|15:32:00|120|3398784409|11013092900912257|57","125894007|8|15:32:00|60|482278776|11613094950795505|55","2277425032|5|15:33:00|180|2085226230|11413094300912363|56","1100607264|7|15:33:00|120|2707323384|10713094670912379|42","1707647480|10|15:30:00|120|3882868379|9113164320917608|53","244503826|2|15:30:00|120|3614543683|10413093750095483|57","244503826|2|15:29:00|60|3614543683|20213093810912330|57","3891613492|1|15:31:00|120|3398784409|21213093030912288|57","244503826|2|15:33:00|60|1721597436|15113093790095484|57","244503826|2|15:32:00|120|1721597436|21313093760095484|57","3891613492|1|15:30:00|120|3398784409|21713092920912269|57","125894007|8|15:31:00|60|482278776|17713094910795505|55","244503826|2|15:31:00|60|1721597436|19813093810095484|57","244503826|2|15:30:00|120|1721597436|10013093750095484|57","3891613492|1|15:29:00|120|3398784409|14213093000912282|57","244503826|2|15:29:00|120|1721597436|13213093860912349|57","3747807733|1|15:33:00|60|2924666242|10813092900912257|56","3891613492|1|15:33:00|120|3591610132|20813092920912270|57","125894007|8|15:30:00|60|482278776|16913094920795505|55","2277425032|5|15:32:00|180|2085226230|13213094420912363|56","3747807733|1|15:32:00|60|2924666242|21413092920912269|56","3747807733|1|15:31:00|60|2924666242|20113092970912276|56","3891613492|1|15:32:00|60|3591610132|10313092900095468|57","3747807733|1|15:30:00|60|2924666242|21313092920912269|56","3747807733|1|15:29:00|60|2924666242|10713092900912257|56","3891613492|1|15:31:00|60|3591610132|20713092920912270|57","125894007|8|15:29:00|120|482278776|18613094970795505|55","3747807733|1|15:33:00|120|1100607264|13713093000912283|58","3747807733|1|15:32:00|120|1100607264|20013093030912289|58","3891613492|1|15:30:00|120|3591610132|19513093030912289|57","3747807733|1|15:31:00|60|1100607264|10513092900095468|58","3747807733|1|15:30:00|120|1100607264|19913093030912289|58","3891613492|1|15:29:00|120|3591610132|21413093010912285|57","125894007|8|15:33:00|60|4278050457|10913094950795507|56","2277425032|5|15:31:00|240|2085226230|10213094380912363|56","1100607264|7|15:32:00|60|2707323384|5913094560651565|42","3747807733|1|15:29:00|120|1100607264|21013092920912270|58","2669665705|13|15:33:00|120|3524584243|7313095560912413|50","3421576237|13|15:33:00|120|3691015742|11913095680912417|50","2669665705|13|15:32:00|60|3524584243|11913095660912419|50","2669665705|13|15:31:00|60|3524584243|6613095550912414|50","3421576237|13|15:31:00|120|3691015742|7413095560912417|50","125894007|8|15:32:00|60|4278050457|18013094970795507|56","2669665705|13|15:30:00|120|3524584243|11713095680912413|50","2669665705|13|15:33:00|60|4225800166|11713095680912416|48","3421576237|13|15:30:00|120|3691015742|13013095590912417|50","2669665705|13|15:32:00|120|4225800166|12813095590912416|48","2669665705|13|15:31:00|60|4225800166|8813095630912423|48","3421576237|13|15:29:00|120|3691015742|6713095550912417|50","125894007|8|15:31:00|60|4278050457|12213094980795507|56","2277425032|5|15:30:00|180|2085226230|11313094300912363|56","2669665705|13|15:30:00|120|4225800166|11713095660912423|48","2669665705|13|15:29:00|60|4225800166|7213095560912416|48","3421576237|13|15:33:00|120|1840343478|11613095660912420|47","2669665705|1|15:33:00|60|2734436604|21213092920912269|57","2669665705|1|15:32:00|60|2734436604|22213093010912284|57","3421576237|13|15:32:00|120|1840343478|8613095650912420|47","125894007|8|15:30:00|120|4278050457|16613094920795507|56","2669665705|1|15:31:00|60|2734436604|10613092900912257|57","2669665705|1|15:30:00|120|2734436604|21113092920912269|57","3421576237|13|15:31:00|120|1840343478|12613095590912414|47","2669665705|1|15:29:00|120|2734436604|20413093030912288|57","2669665705|1|15:33:00|60|2011584683|21413092920912270|59","3421576237|13|15:30:00|120|1840343478|11513095680912414|47","125894007|8|15:29:00|60|4278050457|10813094950795507|56","2277425032|5|15:29:00|180|2085226230|13113094420912363|56","1100607264|7|15:31:00|60|2707323384|6413094570651565|42","3741637293|9|15:33:00|60|351139424|19113095120912393|57","598631581|1|15:30:00|120|3566702934|19813092970912276|56","3833855042|3|15:33:00|120|2493342269|17913094020912354|58","2669665705|1|15:32:00|120|2011584683|10713092900095468|59","2669665705|1|15:31:00|60|2011584683|19813092970912277|59","3421576237|13|15:29:00|120|1840343478|11513095660912420|47","2669665705|1|15:30:00|120|2011584683|21313092920912270|59","2669665705|1|15:29:00|120|2011584683|10613092900095468|59","65431437|13|15:33:00|120|2450931568|7213095580912419|47","3098817292|7|15:33:00|180|890688308|10113094610651565|44","595945906|11|15:33:00|60|2998612092|13413095500440174|57","595945906|11|15:32:00|60|2998612092|22113095540440174|57","65431437|13|15:32:00|120|2450931568|7113095620912419|47","595945906|11|15:31:00|120|2998612092|14313095520440174|57","595945906|11|15:30:00|60|2998612092|11013095490440174|57","65431437|13|15:31:00|60|2450931568|12713095640912419|47","3098817292|7|15:32:00|120|890688308|10213094670912379|44","2277425032|5|15:33:00|120|2258265757|10413094320094711|59","595945906|11|15:29:00|120|2998612092|22013095540440174|57","595945906|11|15:33:00|60|209994619|11813095420912409|54","65431437|13|15:30:00|60|2450931568|11613095660912419|47","595945906|11|15:32:00|60|209994619|313095530912412|54","595945906|11|15:31:00|60|209994619|11813095430912409|54","65431437|13|15:29:00|120|2450931568|12613095590912413|47","3098817292|7|15:31:00|120|890688308|9613094650912379|44","595945906|11|15:30:00|60|209994619|13613095500912409|54","595945906|11|15:29:00|60|209994619|11113095440912409|54","65431437|13|15:33:00|120|3325830777|13013095590912416|48","3217152725|9|15:33:00|120|20785767|17813095150912393|57","3217152725|9|15:32:00|60|20785767|713095170912389|57","65431437|13|15:32:00|120|3325830777|7513095580912423|48","3098817292|7|15:30:00|120|890688308|5613094560651565|44","2277425032|5|15:32:00|120|2258265757|413094340912366|59","1100607264|7|15:30:00|60|2707323384|10013094650912379|42","3217152725|9|15:31:00|120|20785767|10113095160912398|57","3217152725|9|15:30:00|120|20785767|17713095150912393|57","65431437|13|15:31:00|120|3325830777|12013095660912423|48","3217152725|9|15:29:00|60|20785767|9313095090912393|57","3217152725|9|15:33:00|120|1390530723|12113095170912399|58","65431437|13|15:30:00|120|3325830777|6713095550912416|48","3098817292|7|15:29:00|120|890688308|9313094590651565|44","3217152725|9|15:32:00|120|1390530723|18613095150912395|58","3217152725|9|15:31:00|120|1390530723|19913095220912399|58","65431437|13|15:29:00|60|3325830777|11813095680912416|48","3217152725|9|15:30:00|120|1390530723|9213095820912395|58","3217152725|9|15:29:00|120|1390530723|19613095120912395|58","3200465306|12|15:33:00|60|2075612487|15813647350942701|58","3098817292|7|15:33:00|120|1033620933|10613094610651563|39","2277425032|5|15:31:00|120|2258265757|14313094370094711|59","1450883263|6|15:33:00|120|2801003483|17213094540912370|57","1450883263|6|15:32:00|60|2801003483|413094520912371|57","3200465306|12|15:32:00|120|2075612487|10713647210942701|58","1450883263|6|15:31:00|120|2801003483|10613094510912370|57","1450883263|6|15:30:00|120|2801003483|17113094540912370|57","3200465306|12|15:31:00|60|2075612487|18113647260942701|58","3098817292|7|15:32:00|120|1033620933|9513094590651563|39","1450883263|6|15:29:00|60|2801003483|12113094500912370|57","1450883263|6|15:33:00|120|44881418|17913094460295944|57","3200465306|12|15:30:00|60|2075612487|10113647230942707|58","1450883263|6|15:32:00|120|44881418|13913094550295944|57","1450883263|6|15:31:00|120|44881418|10813094510295944|57","3200465306|12|15:29:00|60|2075612487|10113647290942700|58","3098817292|7|15:31:00|120|1033620933|6513094570651562|39","2277425032|5|15:30:00|120|2258265757|19613094340094711|59","1100607264|7|15:29:00|60|2707323384|10613094670912379|42","3741637293|9|15:32:00|60|351139424|12813095170912398|57","1450883263|6|15:30:00|60|44881418|10413094450295944|57","1450883263|6|15:29:00|60|44881418|13813094550295944|57","3200465306|12|15:33:00|120|3991952489|16813647260942699|56","1450883263|12|15:33:00|60|3475396030|15513647350942699|58","1450883263|12|15:32:00|60|3475396030|10913647210942699|58","3200465306|12|15:32:00|120|3991952489|10413647210942699|56","3098817292|7|15:29:00|120|1033620933|5913094560651562|39","1450883263|12|15:31:00|60|3475396030|18013647340942699|58","1450883263|12|15:30:00|60|3475396030|15413647350942699|58","3200465306|12|15:31:00|120|3991952489|9513647230942704|56","1450883263|12|15:29:00|120|3475396030|19213647320942699|58","1450883263|12|15:33:00|60|1162874157|11613647310942701|54","3200465306|12|15:30:00|120|3991952489|11813647310942699|56","1950730894|6|15:33:00|60|20785767|10713094450295944|55","2277425032|5|15:29:00|120|2258265757|613094400912366|59","1450883263|12|15:32:00|60|1162874157|9713647230942707|54","1450883263|12|15:31:00|60|1162874157|17813647340942701|54","3200465306|12|15:29:00|60|3991952489|14613647350942699|56","1450883263|12|15:29:00|60|1162874157|14913647350942701|54","2358884938|4|15:33:00|60|1213432453|16913864020942711|57","891393435|9|15:33:00|120|4122770022|18013095120912393|58","1950730894|6|15:32:00|60|20785767|14213094550295944|55","2358884938|4|15:32:00|60|1213432453|23313864010942711|57","2358884938|4|15:31:00|60|1213432453|10513864000942711|57","891393435|9|15:32:00|120|4122770022|17213095150912393|58","2358884938|4|15:30:00|60|1213432453|24213864030942711|57","2358884938|4|15:29:00|60|1213432453|23213864010942711|57","891393435|9|15:31:00|120|4122770022|9313095820912393|58","1950730894|6|15:31:00|60|20785767|11013094510295944|55","1465479446|4|15:33:00|60|1225648642|10213864000942711|49","1100607264|7|15:33:00|60|986262698|10013094610651562|41","2358884938|4|15:33:00|60|606571514|24713864010942709|55","2358884938|4|15:32:00|120|606571514|17813864020942709|55","891393435|9|15:30:00|60|4122770022|17913095120912393|58","2358884938|4|15:31:00|120|606571514|11213864000942709|55","2358884938|4|15:30:00|60|606571514|17713864020942709|55","891393435|9|15:29:00|60|4122770022|613095100912389|58","1950730894|6|15:30:00|60|20785767|18513094540295944|55","2358884938|4|15:29:00|60|606571514|24513864010942709|55","645341577|9|15:33:00|60|1102200894|17413095150912393|57","891393435|9|15:33:00|120|3300801987|19513095190912399|57","645341577|9|15:32:00|120|1102200894|13713095180912398|57","645341577|9|15:31:00|60|1102200894|18213095120912393|57","891393435|9|15:32:00|120|3300801987|12613095170912399|57","1950730894|6|15:29:00|60|20785767|10613094450295944|55","1465479446|4|15:32:00|60|1225648642|23713864030942711|49","645341577|9|15:30:00|60|1102200894|2013095150912389|57","645341577|9|15:29:00|60|1102200894|17313095190912398|57","891393435|9|15:31:00|120|3300801987|19113095150912395|57","645341577|9|15:33:00|60|4197757394|20113095120912395|57","645341577|9|15:32:00|60|4197757394|18913095150912395|57","891393435|9|15:30:00|120|3300801987|9613095820912395|57","1950730894|6|15:33:00|120|3871409354|9913094450912370|55","645341577|9|15:31:00|60|4197757394|20313095220912399|57","645341577|9|15:30:00|60|4197757394|20013095120912395|57","891393435|9|15:29:00|120|3300801987|12513095170912399|57","645341577|9|15:29:00|60|4197757394|9113095090912395|57","645341577|3|15:33:00|120|73874293|11613093980912354|59","891393435|8|15:32:00|60|1994114096|12113094980795505|50","1950730894|6|15:32:00|60|3871409354|10413094510912370|55","1465479446|4|15:30:00|60|1225648642|10113864000942711|49","1100607264|7|15:32:00|120|986262698|713094650651581|41","3741637293|9|15:31:00|60|351139424|18113095150912393|57","598631581|1|15:29:00|60|3566702934|13713844200955497|56","645341577|3|15:32:00|60|73874293|13113093970912354|59","645341577|3|15:31:00|60|73874293|1813093930912353|59","891393435|8|15:31:00|60|1994114096|17213094910795505|50","645341577|3|15:30:00|60|73874293|10313093990912354|59","645341577|3|15:29:00|60|73874293|13013093970912354|59","891393435|8|15:30:00|60|1994114096|11113094950795505|50","1950730894|6|15:31:00|60|3871409354|11913094500912370|55","645341577|3|15:33:00|60|552165531|11913093980095500|55","645341577|3|15:32:00|120|552165531|10513093990095500|55","891393435|8|15:29:00|60|1994114096|17213094960795505|50","645341577|3|15:31:00|60|552165531|20913094000095500|55","645341577|3|15:30:00|60|552165531|18413094020095500|55","891393435|8|15:33:00|120|3300801987|18213094960795507|55","1950730894|6|15:30:00|60|3871409354|313094550912369|55","1465479446|4|15:33:00|60|1282210726|18313864020942709|52","645341577|3|15:29:00|120|552165531|11813093980095500|55","3524584243|9|15:33:00|120|4197757394|17513095150912393|57","891393435|8|15:32:00|120|3300801987|12613094980795507|55","3524584243|9|15:32:00|120|4197757394|9213095090912393|57","3524584243|9|15:31:00|60|4197757394|18313095120912393|57","891393435|8|15:31:00|120|3300801987|17113094920795507|55","1950730894|6|15:29:00|60|3871409354|9813094450912370|55","3524584243|9|15:30:00|120|4197757394|17413095150912393|57","3524584243|9|15:29:00|120|4197757394|13713095180912398|57","891393435|8|15:30:00|120|3300801987|11313094950795507|55","3524584243|9|15:33:00|120|1836707069|20313095220912399|57","3524584243|9|15:32:00|120|1836707069|20013095120912395|57","891393435|5|15:33:00|120|4122770022|10913094380094711|59","2258265757|5|15:33:00|120|53962395|14313094370094711|59","1465479446|4|15:32:00|60|1282210726|11613864000942709|52","1100607264|7|15:31:00|60|986262698|6613094630651570|41","3524584243|9|15:31:00|60|1836707069|18813095150912395|57","3524584243|9|15:30:00|60|1836707069|9813095100912399|57","891393435|5|15:32:00|120|4122770022|12213094300094711|59","3524584243|9|15:29:00|120|1836707069|19913095120912395|57","3524584243|13|15:33:00|120|2669665705|7213095620912423|46","891393435|5|15:31:00|60|4122770022|13713094370094711|59","2258265757|5|15:32:00|60|53962395|19613094340094711|59","3524584243|13|15:32:00|120|2669665705|11813095660912423|46","3524584243|13|15:31:00|120|2669665705|11713095680912416|46","891393435|5|15:30:00|60|4122770022|18913094340094711|59","3524584243|13|15:30:00|120|2669665705|12813095590912416|46","3524584243|13|15:29:00|120|2669665705|8813095630912423|46","891393435|5|15:29:00|120|4122770022|10813094380094711|59","2258265757|5|15:31:00|120|53962395|613094400912366|59","1465479446|4|15:31:00|60|1282210726|18213864020942709|52","3524584243|13|15:33:00|180|552165531|11913095660912419|49","3524584243|13|15:32:00|120|552165531|11713095680912413|49","891393435|5|15:33:00|60|1727514119|11913094300912363|56","3524584243|13|15:31:00|120|552165531|7213095620912419|49","3524584243|13|15:30:00|120|552165531|12913095640912419|49","891393435|5|15:32:00|120|1727514119|13313094370912363|56","2258265757|5|15:30:00|60|53962395|11213094380094711|59","3524584243|13|15:29:00|120|552165531|6513095550912413|49","2009211090|12|15:33:00|60|552165531|15613647350942701|57","891393435|5|15:30:00|120|1727514119|10613094380912363|56","2009211090|12|15:32:00|60|552165531|19713647320942701|57","2009211090|12|15:31:00|60|552165531|10013647230942707|57","891393435|5|15:29:00|60|1727514119|13213094370912363|56","2258265757|5|15:29:00|120|53962395|19813094400094711|59","1465479446|4|15:29:00|60|1282210726|11513864000942709|52","1100607264|7|15:30:00|120|986262698|9413094650651570|41","3741637293|9|15:30:00|60|351139424|14213095180912398|57","2009211090|12|15:30:00|120|552165531|10013647290942700|57","2009211090|12|15:29:00|120|552165531|19613647320942701|57","891393435|3|15:33:00|60|3514016666|18813094020095500|56","2009211090|12|15:33:00|60|3781035794|18713647320942699|57","2009211090|12|15:32:00|60|3781035794|17413647340942699|57","891393435|3|15:32:00|60|3514016666|10713093990095500|56","2258265757|5|15:33:00|120|2277425032|13313094420912363|56","2009211090|12|15:31:00|60|3781035794|213647310942702|57","2009211090|12|15:30:00|60|3781035794|10513647210942699|57","891393435|3|15:31:00|60|3514016666|12113093980095500|56","2009211090|12|15:29:00|60|3781035794|17313647340942699|57","600722887|10|15:33:00|120|2198512348|8113164370917610|56","891393435|3|15:30:00|60|3514016666|18713094020095500|56","2258265757|5|15:32:00|120|2277425032|12813094370912363|56","2493342269|3|15:33:00|60|3833855042|17913093960095500|58","600722887|10|15:32:00|120|2198512348|9213164340917610|56","600722887|10|15:31:00|60|2198512348|13713164390917606|56","891393435|3|15:29:00|60|3514016666|13813093970095500|56","600722887|10|15:30:00|120|2198512348|12013164410917606|56","600722887|10|15:29:00|120|2198512348|9813164400917614|56","891393435|3|15:33:00|60|1742862628|17113094020912354|59","2258265757|5|15:31:00|120|2277425032|11413094300912363|56","600722887|10|15:33:00|120|2635662580|8913164320917608|53","600722887|10|15:32:00|120|2635662580|8113164370296022|53","891393435|3|15:32:00|120|1742862628|11313093980912354|59","600722887|10|15:31:00|120|2635662580|10313164400296022|53","600722887|10|15:30:00|120|2635662580|12713164410296022|53","891393435|3|15:31:00|120|1742862628|19213093930912354|59","2258265757|5|15:30:00|60|2277425032|10213094380912363|56","2493342269|3|15:32:00|120|3833855042|18113094020095500|58","1100607264|4|15:33:00|60|606571514|17013864020942711|57","600722887|10|15:29:00|120|2635662580|14113164360296022|53","2198512348|13|15:33:00|60|44881418|8713095630912424|47","891393435|3|15:30:00|120|1742862628|10113093990912354|59","2198512348|13|15:32:00|120|44881418|11613095680912416|47","2198512348|13|15:31:00|60|44881418|12813095640912423|47","891393435|3|15:29:00|120|1742862628|1613093960912353|59","2258265757|5|15:29:00|120|2277425032|12713094370912363|56","2198512348|13|15:30:00|120|44881418|6513095550912416|47","2198512348|13|15:29:00|120|44881418|11513095680912417|47","891393435|11|15:33:00|60|3714063920|11213095490440174|56","2198512348|13|15:33:00|60|697925458|11913095680912414|50","2198512348|13|15:32:00|120|697925458|8813095650912419|50","891393435|11|15:32:00|60|3714063920|13613095500440174|56","1282210726|4|15:33:00|60|1293807658|11613864000942709|52","2493342269|3|15:31:00|60|3833855042|13313093970095500|58","2198512348|13|15:31:00|60|697925458|7313095620912419|50","2198512348|13|15:30:00|60|697925458|11813095680912413|50","891393435|11|15:31:00|120|3714063920|11713095420440174|56","2198512348|13|15:29:00|60|697925458|6613095550912413|50","2198512348|10|15:33:00|60|4012104432|9013164320917606|53","891393435|11|15:30:00|120|3714063920|19713095460912411|56","1282210726|4|15:32:00|60|1293807658|18213864020942709|52","2198512348|10|15:32:00|60|4012104432|12013164410917606|53","2198512348|10|15:31:00|60|4012104432|9813164400917614|53","891393435|11|15:29:00|60|3714063920|13513095500440174|56","2198512348|10|15:30:00|60|4012104432|8013164330917606|53","1990381110|9|15:34:00|120|1867201487|19713095150912395|56","1990381110|9|15:33:00|120|1867201487|10513095100912399|56","2198512348|10|15:29:00|120|4012104432|13613164390917606|53","891393435|11|15:32:00|60|1917711411|11013095440912409|52","1282210726|4|15:31:00|60|1293807658|26413864030942709|52","2493342269|3|15:30:00|120|3833855042|10213093990095500|58","1100607264|4|15:32:00|60|606571514|10613864000942711|57","3741637293|9|15:29:00|60|351139424|9913095820912393|57","598631581|1|15:33:00|60|2877706505|21613092920912270|59","3833855042|3|15:32:00|120|2493342269|17713093960912354|58","3873492639|2|15:30:00|120|475845330|22013093760095484|57","1990381110|9|15:32:00|60|1867201487|14513095180912399|56","1990381110|9|15:31:00|120|1867201487|10013095820912395|56","2198512348|10|15:33:00|120|600722887|12813164410296022|54","1990381110|9|15:30:00|60|1867201487|13013095170912399|56","1990381110|9|15:29:00|120|1867201487|10413095100912399|56","2198512348|10|15:32:00|60|600722887|9013164340917608|54","891393435|11|15:31:00|60|1917711411|13413095500912409|52","3086704803|8|15:34:00|120|562653801|10013094870795507|56","3086704803|8|15:33:00|120|562653801|10413094890795507|56","2198512348|10|15:31:00|120|600722887|8913164320917608|54","3086704803|8|15:32:00|120|562653801|18113094920795507|56","3086704803|8|15:31:00|120|562653801|10113094940795507|56","2198512348|10|15:30:00|60|600722887|14913164390296022|54","891393435|11|15:30:00|60|1917711411|11613095430912409|52","1282210726|4|15:30:00|60|1293807658|11513864000942709|52","3086704803|8|15:30:00|120|562653801|18013094920795507|56","3086704803|8|15:29:00|120|562653801|12013094950795507|56","2198512348|10|15:29:00|120|600722887|10313164400296022|54","1867201487|9|15:33:00|60|3235782074|10013095820912395|55","1867201487|9|15:32:00|120|3235782074|20913095120912395|55","1390530723|9|15:33:00|120|3217152725|18713095120912393|57","352028051|10|15:33:00|60|4025722812|13513164360917606|53","1867201487|9|15:31:00|120|3235782074|10413095100912399|55","1867201487|9|15:30:00|60|3235782074|19513095150912395|55","1390530723|9|15:32:00|120|3217152725|9413095090912393|57","1867201487|9|15:29:00|60|3235782074|14413095180912399|55","1867201487|9|15:33:00|60|1990381110|513095100912389|55","1390530723|9|15:31:00|120|3217152725|17813095150912393|57","352028051|10|15:32:00|60|4025722812|12213164410917606|53","1282210726|4|15:29:00|120|1293807658|18113864020942709|52","2493342269|3|15:29:00|120|3833855042|18013094020095500|58","1867201487|9|15:32:00|120|1990381110|17513095120912393|55","1867201487|9|15:31:00|60|1990381110|513095160912389|55","1390530723|9|15:30:00|120|3217152725|713095170912389|57","1867201487|9|15:30:00|120|1990381110|16713095190912398|55","1867201487|9|15:29:00|60|1990381110|17413095120912393|55","1390530723|9|15:29:00|120|3217152725|10113095160912398|57","352028051|10|15:31:00|60|4025722812|9913164400917614|53","562653801|8|15:34:00|120|673864223|18113094920795507|56","562653801|8|15:33:00|60|673864223|10113094940795507|56","1390530723|9|15:33:00|60|3164047331|19913095220912399|58","562653801|8|15:32:00|60|673864223|18013094920795507|56","562653801|8|15:31:00|120|673864223|12013094950795507|56","1390530723|9|15:32:00|60|3164047331|9213095820912395|58","352028051|10|15:30:00|60|4025722812|12213164380917610|53","1282210726|4|15:33:00|60|1465479446|23813864030942711|49","562653801|8|15:30:00|120|673864223|10313094890795507|56","562653801|8|15:29:00|60|673864223|17913094920795507|56","1390530723|9|15:31:00|60|3164047331|19613095120912395|58","562653801|8|15:34:00|120|3086704803|11613094980795505|52","562653801|8|15:33:00|120|3086704803|10513094950795505|52","1390530723|9|15:30:00|120|3164047331|18513095150912395|58","352028051|10|15:29:00|120|4025722812|13413164360917606|53","562653801|8|15:31:00|120|3086704803|16513094910795505|52","562653801|8|15:30:00|120|3086704803|16213094960795505|52","1390530723|9|15:29:00|60|3164047331|9513095100912399|58","562653801|8|15:29:00|120|3086704803|10413094950795505|52","3235782074|9|15:34:00|120|1867201487|2313095220912389|56","2011584683|8|15:33:00|120|4225800166|17713094910795507|55","2932899145|10|15:33:00|60|3866913670|13513164390917606|54","1282210726|4|15:32:00|60|1465479446|10213864000942711|49","2493342269|3|15:33:00|120|3638581237|20413094000912354|58","1100607264|4|15:31:00|60|606571514|16913864020942711|57","3235782074|9|15:33:00|120|1867201487|16813095150912393|56","3235782074|9|15:32:00|60|1867201487|16813095190912398|56","2011584683|8|15:32:00|120|4225800166|16913094920795507|55","3235782074|9|15:31:00|120|1867201487|513095100912389|56","3235782074|9|15:30:00|60|1867201487|16713095150912393|56","2011584683|8|15:31:00|120|4225800166|11113094950795507|55","2932899145|10|15:31:00|60|3866913670|7913164330917606|54","3235782074|9|15:29:00|120|1867201487|513095160912389|56","3235782074|9|15:34:00|120|129206825|10013095820912395|54","2011584683|8|15:30:00|120|4225800166|18313094970795507|55","3235782074|9|15:33:00|60|129206825|10413095100912399|54","3235782074|9|15:31:00|120|129206825|19513095150912395|54","2011584683|8|15:29:00|60|4225800166|16813094920795507|55","2932899145|10|15:30:00|60|3866913670|11813164410917606|54","1282210726|4|15:31:00|60|1465479446|23713864030942711|49","3235782074|9|15:30:00|60|129206825|9913095820912395|54","3235782074|9|15:29:00|60|129206825|9513095090912395|54","2011584683|8|15:33:00|60|1065328272|10013094890795505|52","673864223|8|15:34:00|60|562653801|16413094960795505|53","673864223|8|15:33:00|60|562653801|11613094980795505|53","2011584683|8|15:32:00|60|1065328272|18413094970795505|52","2932899145|10|15:29:00|60|3866913670|13113164360917606|54","673864223|8|15:32:00|60|562653801|10513094950795505|53","673864223|8|15:31:00|120|562653801|16313094960795505|53","2011584683|8|15:30:00|120|1065328272|17613094960795505|52","673864223|8|15:30:00|60|562653801|16513094910795505|53","673864223|8|15:34:00|120|3246051268|10113094940795507|59","2011584683|8|15:29:00|120|1065328272|11313094950795505|52","2932899145|10|15:33:00|60|3715978556|14413164360296022|51","1282210726|4|15:30:00|0|1465479446|16313864020942711|49","2493342269|3|15:32:00|60|3638581237|11913093980912354|58","673864223|8|15:33:00|60|3246051268|12013094950795507|59","673864223|8|15:32:00|60|3246051268|10313094890795507|59","2011584683|12|15:33:00|60|2904169401|18313647340942701|55","673864223|8|15:31:00|120|3246051268|10413094880795507|59","673864223|8|15:30:00|120|3246051268|17913094920795507|59","2011584683|12|15:32:00|60|2904169401|15413647350942701|55","2932899145|10|15:32:00|60|3715978556|10513164400296022|51","673864223|8|15:29:00|120|3246051268|10013094940795507|59","129206825|9|15:34:00|120|3235782074|8813095090912393|56","2011584683|12|15:31:00|60|2904169401|9913647230942707|55","129206825|9|15:33:00|120|3235782074|9113095820912393|56","129206825|9|15:32:00|120|3235782074|2313095220912389|56","2011584683|12|15:30:00|120|2904169401|9913647290942700|55","2932899145|10|15:31:00|60|3715978556|9113164340917608|51","1282210726|4|15:29:00|60|1465479446|10113864000942711|49","129206825|9|15:31:00|120|3235782074|16813095150912393|56","129206825|9|15:30:00|120|3235782074|16813095190912398|56","2011584683|12|15:29:00|60|2904169401|15313647350942701|55","129206825|9|15:29:00|120|3235782074|513095100912389|56","129206825|9|15:34:00|120|1360893278|10413095100912399|56","2011584683|12|15:33:00|60|1065328272|12113647310942699|57","2932899145|10|15:30:00|60|3715978556|9013164320917608|51","129206825|9|15:33:00|60|1360893278|19513095150912395|56","129206825|9|15:32:00|60|1360893278|14413095180912399|56","2011584683|12|15:32:00|120|1065328272|15113647350942699|57","129206825|9|15:31:00|120|1360893278|9913095820912395|56","129206825|9|15:30:00|60|1360893278|19413095150912395|56","2011584683|12|15:31:00|120|1065328272|18813647320942699|57","2932899145|10|15:29:00|60|3715978556|13113164380296022|51","1282210726|12|15:33:00|60|3991952489|15913647350942701|56","2493342269|3|15:31:00|120|3638581237|10613093990912354|58","1100607264|4|15:30:00|60|606571514|23313864010942711|57","3305905320|8|15:33:00|60|4278050457|17813094910795505|55","3246051268|8|15:34:00|120|673864223|10613094950795505|59","3246051268|8|15:33:00|120|673864223|17113094970795505|59","2011584683|12|15:30:00|120|1065328272|10613647210942699|57","3246051268|8|15:32:00|120|673864223|16413094960795505|59","3246051268|8|15:31:00|120|673864223|11613094980795505|59","2011584683|12|15:29:00|120|1065328272|12013647310942699|57","3499425610|9|15:33:00|60|729999544|18413095150912395|58","3246051268|8|15:30:00|120|673864223|10513094950795505|59","3246051268|8|15:29:00|120|673864223|16313094960795505|59","2011584683|1|15:33:00|60|2669665705|10713092900912257|57","3246051268|8|15:34:00|120|2181002575|12013094950795507|57","3246051268|8|15:33:00|120|2181002575|10313094890795507|57","2011584683|1|15:32:00|120|2669665705|13913093000912282|57","3499425610|9|15:32:00|60|729999544|8813095090912395|58","1282210726|12|15:32:00|60|3991952489|10213647230942707|56","3246051268|8|15:32:00|120|2181002575|17913094920795507|57","3246051268|8|15:31:00|120|2181002575|10013094940795507|57","2011584683|1|15:31:00|120|2669665705|21213092920912269|57","3246051268|8|15:30:00|120|2181002575|11913094950795507|57","3246051268|8|15:29:00|60|2181002575|10213094890795507|57","2011584683|1|15:30:00|120|2669665705|22213093010912284|57","3499425610|9|15:31:00|60|729999544|19413095120912395|58","3954096031|7|15:34:00|120|1338908274|10513094650912373|44","3954096031|7|15:33:00|120|1338908274|11113094670912373|44","2011584683|1|15:29:00|120|2669665705|10613092900912257|57","3954096031|7|15:32:00|120|1338908274|10013094590912373|44","3954096031|7|15:31:00|120|1338908274|6613094570912373|44","2011584683|1|15:33:00|60|2247827349|13813093000912283|59","3499425610|9|15:30:00|60|729999544|11813095170912399|58","1282210726|12|15:31:00|60|3991952489|10213647290942700|56","2493342269|3|15:30:00|60|3638581237|8213093890912354|58","3954096031|7|15:30:00|120|1338908274|10413094650912373|44","3954096031|7|15:29:00|120|1338908274|11013094670912373|44","2011584683|1|15:32:00|60|2247827349|21313092920912270|59","1360893278|9|15:34:00|60|3110610795|19513095150912395|54","1360893278|9|15:33:00|60|3110610795|9913095820912395|54","2011584683|1|15:31:00|60|2247827349|10613092900095468|59","3499425610|9|15:29:00|120|729999544|18313095150912395|58","1360893278|9|15:32:00|60|3110610795|9513095090912395|54","1360893278|9|15:31:00|60|3110610795|19413095150912395|54","2011584683|1|15:30:00|60|2247827349|21213092920912270|59","1360893278|9|15:29:00|60|3110610795|20613095120912395|54","1360893278|9|15:34:00|60|129206825|2213095190912389|53","2011584683|1|15:29:00|60|2247827349|13713093000912283|59","3499425610|9|15:33:00|60|3427371663|10313095160912398|58","1282210726|12|15:30:00|60|3991952489|15813647350942701|56","1360893278|9|15:33:00|60|129206825|8813095090912393|53","1360893278|9|15:32:00|60|129206825|9113095820912393|53","2692076464|7|15:33:00|60|1393958362|10413094670651570|39","1360893278|9|15:31:00|60|129206825|2313095220912389|53","1360893278|9|15:30:00|60|129206825|16813095150912393|53","2692076464|7|15:32:00|60|1393958362|613094650912383|39","3499425610|9|15:32:00|60|3427371663|17913095150912393|58","2181002575|8|15:34:00|120|1322902301|10413094880795507|55","2181002575|8|15:33:00|60|1322902301|10013094940795507|55","2692076464|7|15:30:00|60|1393958362|213094660651581|39","2181002575|8|15:32:00|120|1322902301|11913094950795507|55","2181002575|8|15:31:00|120|1322902301|17813094920795507|55","2692076464|7|15:29:00|120|1393958362|413094590912381|39","3499425610|9|15:31:00|60|3427371663|9813095820912393|58","1282210726|12|15:29:00|120|3991952489|10713647210942701|56","2493342269|3|15:29:00|60|3638581237|13413093970912354|58","1100607264|4|15:29:00|60|606571514|10513864000942711|57","2181002575|8|15:30:00|120|1322902301|10213094890795507|55","2181002575|8|15:29:00|120|1322902301|18913094960795507|55","2692076464|7|15:33:00|60|2014137071|10413094670912379|44","2181002575|8|15:34:00|120|3246051268|11713094980795505|56","2181002575|8|15:33:00|120|3246051268|16513094960795505|56","2692076464|7|15:32:00|120|2014137071|9813094650912379|44","3499425610|9|15:30:00|60|3427371663|2313095120912389|58","2181002575|8|15:32:00|120|3246051268|10613094950795505|56","2181002575|8|15:31:00|120|3246051268|17113094970795505|56","2692076464|7|15:31:00|120|2014137071|6713094630912379|44","2181002575|8|15:30:00|120|3246051268|16413094960795505|56","2181002575|8|15:29:00|120|3246051268|11613094980795505|56","2692076464|7|15:30:00|60|2014137071|10213094610651565|44","3499425610|9|15:29:00|60|3427371663|2113095150912389|58","1282210726|12|15:33:00|120|2402899129|11813647310942699|55","1338908274|7|15:34:00|120|3954096031|613094650912382|44","1338908274|7|15:33:00|120|3954096031|513094670912382|44","2692076464|7|15:29:00|60|2014137071|5713094560651565|44","1338908274|7|15:32:00|120|3954096031|6113094570651563|44","1338908274|7|15:31:00|120|3954096031|9013094650912376|44","2801003483|6|15:33:00|60|1450883263|11013094440295944|56","2688858633|8|15:33:00|60|2635662580|16913094920795505|56","1338908274|7|15:30:00|120|3954096031|513094610912380|44","1338908274|7|15:29:00|120|3954096031|6413094630912376|44","2801003483|6|15:32:00|120|1450883263|10513094450295944|56","1338908274|7|15:34:00|120|821130227|10013094590912373|45","1338908274|7|15:33:00|120|821130227|6613094570912373|45","2801003483|6|15:31:00|60|1450883263|13913094550295944|56","2688858633|8|15:32:00|60|2635662580|18613094970795505|56","1282210726|12|15:32:00|120|2402899129|16713647260942699|55","475845330|2|15:33:00|60|3873492639|10113093750095483|55","1338908274|7|15:32:00|120|821130227|10413094650912373|45","1338908274|7|15:31:00|60|821130227|11013094670912373|45","2801003483|6|15:30:00|60|1450883263|10813094510295944|56","1338908274|7|15:30:00|60|821130227|8013094660912373|45","1338908274|7|15:29:00|120|821130227|9913094590912373|45","2801003483|6|15:29:00|60|1450883263|10913094440295944|56","2688858633|8|15:31:00|60|2635662580|12413094980795505|56","1673135790|7|15:32:00|120|4024543803|10913094610651565|42","1673135790|7|15:31:00|120|4024543803|11113094670912379|42","2801003483|6|15:33:00|60|3875198686|413094520912371|57","1673135790|7|15:30:00|120|4024543803|10013094590651565|42","3110610795|9|15:34:00|60|1360893278|9513095160912398|55","2801003483|6|15:32:00|60|3875198686|13313094550912370|57","2688858633|8|15:30:00|120|2635662580|10113094890795505|56","1282210726|12|15:31:00|60|2402899129|10313647210942699|55","3110610795|9|15:33:00|60|1360893278|2213095190912389|55","3110610795|9|15:32:00|60|1360893278|8813095090912393|55","2801003483|6|15:31:00|60|3875198686|18713094520912370|57","3110610795|9|15:31:00|60|1360893278|9113095820912393|55","3110610795|9|15:30:00|60|1360893278|2313095220912389|55","2801003483|6|15:30:00|60|3875198686|10613094440912370|57","2688858633|8|15:29:00|120|2635662580|513094970912387|56","3110610795|9|15:29:00|60|1360893278|16813095150912393|55","3110610795|9|15:34:00|60|2893655003|9913095820912395|54","2801003483|6|15:29:00|60|3875198686|113094460912371|57","3110610795|9|15:33:00|60|2893655003|20713095120912395|54","3110610795|9|15:32:00|120|2893655003|19413095150912395|54","1213432453|4|15:33:00|60|2358884938|11313864000942709|55","2688858633|8|15:33:00|60|482278776|17513094910795507|55","1282210726|12|15:30:00|60|2402899129|11713647310942699|55","475845330|2|15:32:00|60|3873492639|19813093810912330|55","1100607264|4|15:33:00|60|3711272335|17713864020942709|54","3305905320|8|15:32:00|60|4278050457|10013094940795505|55","598631581|1|15:32:00|60|2877706505|10813092900095468|59","3110610795|9|15:30:00|60|2893655003|20613095120912395|54","3110610795|9|15:29:00|60|2893655003|19313095150912395|54","1213432453|4|15:32:00|60|2358884938|24713864010942709|55","1322902301|8|15:34:00|120|737890386|10013094940795507|59","1322902301|8|15:33:00|120|737890386|17813094920795507|59","1213432453|4|15:31:00|60|2358884938|17813864020942709|55","2688858633|8|15:32:00|60|482278776|16713094920795507|55","1322902301|8|15:32:00|120|737890386|10213094890795507|59","1322902301|8|15:31:00|120|737890386|10313094880795507|59","1213432453|4|15:30:00|60|2358884938|11213864000942709|55","1322902301|8|15:30:00|60|737890386|11813094950795507|59","1322902301|8|15:29:00|120|737890386|9913094940795507|59","1213432453|4|15:29:00|60|2358884938|17713864020942709|55","2688858633|8|15:31:00|60|482278776|10913094950795507|55","1282210726|12|15:29:00|120|2402899129|16613647260942699|55","1322902301|8|15:34:00|120|2181002575|10713094950795505|52","1322902301|8|15:32:00|120|2181002575|11713094980795505|52","1213432453|4|15:33:00|60|3300801987|23313864010942711|53","1322902301|8|15:31:00|120|2181002575|16513094960795505|52","1322902301|8|15:30:00|120|2181002575|10613094950795505|52","1213432453|4|15:32:00|120|3300801987|10513864000942711|53","2688858633|8|15:30:00|60|482278776|18013094970795507|55","1322902301|8|15:29:00|120|2181002575|17113094970795505|52","821130227|7|15:34:00|60|486421116|10413094650912373|45","1213432453|4|15:31:00|60|3300801987|24213864030942711|53","821130227|7|15:32:00|120|486421116|11013094670912373|45","821130227|7|15:31:00|120|486421116|8013094660912373|45","1213432453|4|15:30:00|60|3300801987|10413864000942711|53","2688858633|8|15:29:00|60|482278776|12213094980795507|55","3638581237|3|15:33:00|60|3412286137|10613093990912354|53","475845330|2|15:30:00|120|3873492639|413093760912327|55","821130227|7|15:30:00|60|486421116|10313094650912373|45","821130227|7|15:34:00|120|1338908274|613094650651581|43","1213432453|4|15:29:00|60|3300801987|24113864030942711|53","821130227|7|15:33:00|120|1338908274|9713094670912376|43","821130227|7|15:32:00|120|1338908274|613094650912382|43","1213432453|3|15:33:00|60|1931254292|18713094020095500|56","635591290|7|15:33:00|60|1033620933|6213094570651565|43","821130227|7|15:31:00|120|1338908274|513094670912382|43","821130227|7|15:30:00|120|1338908274|6113094570651563|43","1213432453|3|15:32:00|60|1931254292|13813093970095500|56","821130227|7|15:29:00|60|1338908274|513094610912380|43","4024543803|7|15:33:00|120|1673135790|6413094630651570|43","1213432453|3|15:31:00|60|1931254292|10613093990095500|56","635591290|7|15:31:00|120|1033620933|10213094670912373|43","3638581237|3|15:32:00|60|3412286137|17613093960912354|53","4024543803|7|15:32:00|120|1673135790|9813094670651570|43","4024543803|7|15:29:00|60|1673135790|8913094590651562|43","1213432453|3|15:30:00|120|1931254292|12013093980095500|56","4024543803|7|15:34:00|120|941822868|10913094610651565|44","4024543803|7|15:33:00|120|941822868|11113094670912379|44","1213432453|3|15:29:00|60|1931254292|13713093970095500|56","635591290|7|15:30:00|120|1033620933|10113094610651565|43","4024543803|7|15:32:00|120|941822868|10013094590651565|44","4024543803|7|15:30:00|120|941822868|10813094610651565|44","1213432453|3|15:33:00|60|1917711411|19413093930912354|56","4024543803|7|15:29:00|120|941822868|6613094570651565|44","737890386|8|15:34:00|60|3345569136|10213094890795507|58","1213432453|3|15:32:00|60|1917711411|11413093980912354|56","635591290|7|15:29:00|60|1033620933|10213094670912379|43","3638581237|3|15:31:00|60|3412286137|17713094020912354|53","475845330|2|15:29:00|60|3873492639|10013093750095483|55","1100607264|4|15:32:00|60|3711272335|24513864010942709|54","737890386|8|15:33:00|120|3345569136|10313094880795507|58","737890386|8|15:32:00|60|3345569136|17713094920795507|58","1213432453|3|15:31:00|60|1917711411|10213093990912354|56","737890386|8|15:31:00|120|3345569136|11813094950795507|58","737890386|8|15:30:00|60|3345569136|18813094960795507|58","1213432453|3|15:30:00|60|1917711411|19313093930912354|56","635591290|7|15:33:00|120|882210155|513094590912377|46","737890386|8|15:29:00|60|3345569136|10113094890795507|58","737890386|8|15:34:00|120|1322902301|16813094910795505|52","1213432453|3|15:29:00|60|1917711411|11313093980912354|56","737890386|8|15:33:00|60|1322902301|17313094970795505|52","737890386|8|15:32:00|120|1322902301|10713094950795505|52","3117275467|2|15:33:00|120|3614543683|21513093760095484|56","635591290|7|15:32:00|120|882210155|5913094560651562|46","3638581237|3|15:30:00|60|3412286137|11813093980912354|53","737890386|8|15:31:00|60|1322902301|11713094980795505|52","737890386|8|15:30:00|120|1322902301|16713094910795505|52","3117275467|2|15:32:00|120|3614543683|15213093790095484|56","737890386|8|15:29:00|120|1322902301|16513094960795505|52","486421116|7|15:34:00|60|3103087595|11013094670912373|46","3117275467|2|15:31:00|120|3614543683|10113093750095484|56","635591290|7|15:31:00|60|882210155|10513094670651570|46","486421116|7|15:33:00|60|3103087595|8013094660912373|46","486421116|7|15:32:00|60|3103087595|9913094590912373|46","3117275467|2|15:30:00|60|3614543683|15113093790095484|56","486421116|7|15:31:00|60|3103087595|10313094650912373|46","486421116|7|15:29:00|60|3103087595|10913094670912373|46","3117275467|2|15:29:00|60|3614543683|21313093760095484|56","635591290|7|15:30:00|120|882210155|10413094610651562|46","3638581237|3|15:29:00|60|3412286137|17513093960912354|53","475845330|2|15:33:00|120|598631581|20313093810095484|54","486421116|7|15:34:00|60|821130227|6513094630912376|41","486421116|7|15:33:00|60|821130227|613094650651581|41","3117275467|2|15:33:00|60|3265715605|10413093750095483|55","486421116|7|15:32:00|60|821130227|9713094670912376|41","486421116|7|15:30:00|60|821130227|5513094560651563|41","3117275467|2|15:32:00|120|3265715605|10913093880095483|55","635591290|7|15:29:00|120|882210155|9513094590651562|46","486421116|7|15:29:00|60|821130227|6113094570651563|41","941822868|7|15:34:00|60|188649288|10013094590651565|42","3117275467|2|15:31:00|120|3265715605|20213093810912330|55","941822868|7|15:32:00|120|188649288|10813094610651565|42","941822868|7|15:31:00|60|188649288|6613094570651565|42","3117275467|2|15:30:00|60|3265715605|21613093760912330|55","2465875946|6|15:33:00|60|20785767|9213094430912370|58","3638581237|3|15:33:00|60|2493342269|313093970912352|57","941822868|7|15:30:00|120|188649288|11013094670912379|42","941822868|7|15:29:00|60|188649288|9913094590651565|42","3117275467|2|15:29:00|60|3265715605|10313093750095483|55","941822868|7|15:34:00|120|4024543803|9013094590651562|40","941822868|7|15:32:00|60|4024543803|9113094650651570|40","2890651828|14|15:33:00|120|2535004149|22213095790912435|59","2465875946|6|15:32:00|60|20785767|313094520912371|58","941822868|7|15:31:00|120|4024543803|6413094630651570|40","714987642|9|15:34:00|120|2893655003|8913095090912393|53","2890651828|14|15:32:00|60|2535004149|18513164420912435|59","714987642|9|15:33:00|60|2893655003|17013095150912393|53","714987642|9|15:32:00|120|2893655003|17813095220912398|53","2890651828|14|15:31:00|120|2535004149|22213095800912435|59","2465875946|6|15:31:00|120|20785767|513094540912371|58","3638581237|3|15:32:00|60|2493342269|17913093960095500|57","475845330|2|15:32:00|120|598631581|10413093750095484|54","1100607264|4|15:31:00|60|3711272335|11113864000942709|54","3305905320|8|15:31:00|60|4278050457|10213094890795505|55","714987642|9|15:31:00|60|2893655003|9513095160912398|53","714987642|9|15:30:00|60|2893655003|2213095190912389|53","2890651828|14|15:30:00|120|2535004149|22113095790912435|59","714987642|9|15:29:00|60|2893655003|8813095090912393|53","714987642|9|15:33:00|60|3616461854|20613095120912395|57","2890651828|14|15:29:00|60|2535004149|18413164420912435|59","2465875946|6|15:30:00|60|20785767|10413094510912370|58","714987642|9|15:32:00|60|3616461854|9813095820912395|57","714987642|9|15:31:00|120|3616461854|19313095150912395|57","3781035794|12|15:33:00|60|3838784219|17413647340942699|57","714987642|9|15:30:00|60|3616461854|20513095120912395|57","714987642|9|15:29:00|60|3616461854|12713095170912399|57","3781035794|12|15:32:00|60|3838784219|213647310942702|57","2465875946|6|15:29:00|60|20785767|11913094500912370|58","3638581237|3|15:31:00|60|2493342269|18113094020095500|57","3345569136|8|15:34:00|120|2398034976|18913094960795507|56","3345569136|8|15:33:00|120|2398034976|11813094950795507|56","3781035794|12|15:31:00|120|3838784219|10513647210942699|57","3345569136|8|15:31:00|120|2398034976|17613094920795507|56","3345569136|8|15:30:00|120|2398034976|10113094890795507|56","3781035794|12|15:30:00|60|3838784219|17313647340942699|57","2465875946|6|15:33:00|60|499775835|11013094510295944|57","3345569136|8|15:29:00|120|2398034976|11713094950795507|56","3345569136|8|15:34:00|60|737890386|11813094980795505|56","3781035794|12|15:29:00|120|3838784219|14813647350942699|57","3345569136|8|15:33:00|120|737890386|16713094960795505|56","3345569136|8|15:32:00|120|737890386|16813094910795505|56","3781035794|12|15:33:00|60|2009211090|10613647210942701|57","2465875946|6|15:32:00|60|499775835|11113094440295944|57","3638581237|3|15:30:00|60|2493342269|13313093970095500|57","475845330|2|15:31:00|120|598631581|213093810912326|54","3345569136|8|15:31:00|60|737890386|10713094950795505|56","3345569136|8|15:30:00|120|737890386|16613094960795505|56","3781035794|12|15:32:00|60|2009211090|15613647350942701|57","3345569136|8|15:29:00|120|737890386|11713094980795505|56","3103087595|7|15:33:00|60|486421116|6513094630912376|42","3781035794|12|15:31:00|60|2009211090|19713647320942701|57","2465875946|6|15:31:00|60|499775835|10613094450295944|57","3103087595|7|15:32:00|60|486421116|613094650651581|42","3103087595|7|15:31:00|60|486421116|9713094670912376|42","3781035794|12|15:30:00|60|2009211090|10013647230942707|57","3103087595|7|15:29:00|60|486421116|5513094560651563|42","3103087595|7|15:34:00|60|1826166775|8013094660912373|45","3781035794|12|15:29:00|60|2009211090|10013647290942700|57","2465875946|6|15:30:00|60|499775835|18013094460295944|57","3638581237|3|15:29:00|60|2493342269|10213093990095500|57","3103087595|7|15:33:00|120|1826166775|9913094590912373|45","3103087595|7|15:32:00|60|1826166775|10313094650912373|45","3468280332|11|15:33:00|60|209994619|11113095490440174|57","3103087595|7|15:30:00|120|1826166775|10913094670912373|45","3103087595|7|15:29:00|60|1826166775|9813094590912373|45","3468280332|11|15:32:00|60|209994619|11613095420440174|57","2465875946|6|15:29:00|60|499775835|10913094510295944|57","188649288|7|15:34:00|120|1826166775|10813094610651565|43","188649288|7|15:33:00|120|1826166775|6113094560651565|43","3468280332|11|15:31:00|60|209994619|13413095500440174|57","188649288|7|15:32:00|180|1826166775|6613094570651565|43","188649288|7|15:30:00|120|1826166775|9913094590651565|43","3468280332|11|15:30:00|60|209994619|11613095430912411|57","4198988390|5|15:33:00|60|4065628367|11213094380094711|59","3095607449|1|15:33:00|60|2920343104|20513092920912270|57","475845330|2|15:30:00|120|598631581|21213093770095484|54","1100607264|4|15:30:00|60|3711272335|17613864020942709|54","188649288|7|15:29:00|120|1826166775|10713094610651565|43","188649288|7|15:34:00|120|941822868|613094670912383|43","3468280332|11|15:29:00|60|209994619|14313095520440174|57","188649288|7|15:33:00|120|941822868|6113094570651562|43","188649288|7|15:30:00|60|941822868|6413094630651570|43","3468280332|11|15:33:00|60|637614763|11813095430912409|54","4198988390|5|15:32:00|60|4065628367|14313094420094711|59","188649288|7|15:29:00|120|941822868|9813094670651570|43","3616461854|9|15:34:00|60|714987642|2413095220912389|55","3468280332|11|15:32:00|60|637614763|13613095500912409|54","3616461854|9|15:33:00|60|714987642|8913095090912393|55","3616461854|9|15:32:00|60|714987642|17013095150912393|55","3468280332|11|15:31:00|60|637614763|11113095440912409|54","4198988390|5|15:31:00|60|4065628367|19713094400094711|59","3095607449|1|15:32:00|60|2920343104|21213093010912285|57","3616461854|9|15:31:00|120|714987642|17013095190912398|55","3616461854|9|15:30:00|120|714987642|9213095100912398|55","3468280332|11|15:30:00|60|637614763|19913095530912409|54","3616461854|9|15:29:00|60|714987642|2213095190912389|55","3616461854|9|15:34:00|60|4158739832|20613095120912395|55","3468280332|11|15:29:00|60|637614763|11713095430912409|54","4198988390|5|15:30:00|120|4065628367|913094390912366|59","3616461854|9|15:33:00|60|4158739832|19313095150912395|55","3616461854|9|15:31:00|60|4158739832|20513095120912395|55","4012104432|10|15:33:00|120|2488289503|12013164410917606|56","3616461854|9|15:30:00|120|4158739832|12713095170912399|55","3616461854|9|15:29:00|60|4158739832|19213095150912395|55","4012104432|10|15:32:00|60|2488289503|9813164400917614|56","4198988390|5|15:29:00|60|4065628367|11113094380094711|59","3095607449|1|15:31:00|120|2920343104|10113092900095468|57","475845330|2|15:29:00|120|598631581|20213093810095484|54","2398034976|8|15:33:00|60|3567429859|17613094920795507|55","2398034976|8|15:32:00|120|3567429859|10113094890795507|55","4012104432|10|15:31:00|60|2488289503|13613164390917606|56","2398034976|8|15:31:00|120|3567429859|10213094880795507|55","2398034976|8|15:30:00|60|3567429859|17513094920795507|55","4012104432|10|15:30:00|60|2488289503|11913164380917610|56","4198988390|5|15:33:00|60|53962395|13413094420912363|56","2398034976|8|15:34:00|120|3345569136|16813094960795505|55","2398034976|8|15:33:00|120|3345569136|10813094950795505|55","4012104432|10|15:29:00|60|2488289503|11913164410917606|56","2398034976|8|15:32:00|120|3345569136|11813094980795505|55","2398034976|8|15:31:00|120|3345569136|16713094960795505|55","4012104432|10|15:32:00|120|2198512348|10413164400296022|51","4198988390|5|15:32:00|60|53962395|12913094370912363|56","3095607449|1|15:30:00|120|2920343104|20413092920912270|57","2398034976|8|15:30:00|120|3345569136|16813094910795505|55","2398034976|8|15:29:00|120|3345569136|10713094950795505|55","4012104432|10|15:31:00|60|2198512348|9013164340917608|51","1826166775|7|15:34:00|60|46216692|11013094670912379|43","1826166775|7|15:33:00|120|46216692|10313094650912373|43","4012104432|10|15:30:00|60|2198512348|8913164320917608|51","4198988390|5|15:31:00|120|53962395|11513094300912363|56","1826166775|7|15:32:00|60|46216692|9913094590651565|43","1826166775|7|15:31:00|120|46216692|10713094610651565|43","4012104432|10|15:29:00|60|2198512348|8113164370296022|51","1826166775|7|15:30:00|60|46216692|7913094660912373|43","1826166775|7|15:29:00|120|46216692|10913094670912379|43","3164047331|9|15:33:00|60|2673577552|9213095820912395|58","4198988390|5|15:30:00|120|53962395|10313094380912363|56","3095607449|1|15:29:00|60|2920343104|19213093030912289|57","2920343104|1|15:33:00|60|2532042518|10113092900095468|58","1100607264|4|15:29:00|120|3711272335|24413864010942709|54","3305905320|8|15:30:00|60|4278050457|10013094880795505|55","598631581|1|15:31:00|60|2877706505|21513092920912270|59","3833855042|3|15:31:00|60|2493342269|11913093980912354|58","1826166775|7|15:34:00|60|3103087595|9813094610651563|41","1826166775|7|15:33:00|120|188649288|9213094650651570|41","3164047331|9|15:32:00|60|2673577552|18513095150912395|58","1826166775|7|15:32:00|60|3103087595|6513094630912376|41","1826166775|7|15:32:00|120|188649288|613094670912383|41","3164047331|9|15:31:00|60|2673577552|19813095220912399|58","4198988390|5|15:29:00|60|53962395|12813094370912363|56","1826166775|7|15:31:00|120|188649288|6113094570651562|41","1826166775|7|15:31:00|60|3103087595|613094650651581|41","3164047331|9|15:30:00|60|2673577552|9513095100912399|58","1826166775|7|15:29:00|120|3103087595|9713094670912376|41","87667279|12|15:33:00|120|3332683073|12513647310942699|56","3164047331|9|15:29:00|60|2673577552|19513095120912395|58","1721597436|4|15:33:00|60|1293807658|10313864000942711|49","3095607449|1|15:33:00|120|1523019830|20913092970912276|58","87667279|12|15:32:00|120|3332683073|11113647210942699|56","87667279|12|15:31:00|60|3332683073|19613647320942699|56","3164047331|9|15:33:00|60|1390530723|2113095150912389|58","87667279|12|15:30:00|60|3332683073|15713647350942699|56","87667279|12|15:29:00|60|3332683073|17613647260942699|56","3164047331|9|15:32:00|60|1390530723|18713095120912393|58","1721597436|4|15:32:00|60|1293807658|16513864020942711|49","4158739832|9|15:34:00|60|1736981303|19313095150912395|56","4158739832|9|15:33:00|60|1736981303|9413095090912395|56","3164047331|9|15:31:00|60|1390530723|9413095090912393|58","4158739832|9|15:32:00|120|1736981303|20513095120912395|56","4158739832|9|15:30:00|120|1736981303|19213095150912395|56","3164047331|9|15:30:00|60|1390530723|17813095150912393|58","1721597436|4|15:31:00|60|1293807658|23813864030942711|49","3095607449|1|15:32:00|120|1523019830|11213092900912257|58","2920343104|1|15:32:00|60|2532042518|20413092920912270|58","4158739832|9|15:29:00|60|1736981303|19513095190912399|56","4158739832|9|15:34:00|60|3616461854|17913095120912393|57","3164047331|9|15:29:00|60|1390530723|713095170912389|58","4158739832|9|15:33:00|60|3616461854|2413095220912389|57","4158739832|9|15:32:00|60|3616461854|8913095090912393|57","4225800166|8|15:33:00|60|4290789948|11113094950795507|56","1721597436|4|15:30:00|60|1293807658|10213864000942711|49","4158739832|9|15:31:00|60|3616461854|17813095120912393|57","4158739832|9|15:30:00|120|3616461854|17013095150912393|57","4225800166|8|15:32:00|60|4290789948|18313094970795507|56","4158739832|9|15:29:00|60|3616461854|9213095100912398|57","3567429859|8|15:34:00|60|3702452106|10113094890795507|57","4225800166|8|15:31:00|60|4290789948|17613094910795507|56","1721597436|4|15:29:00|60|1293807658|23713864030942711|49","3095607449|1|15:31:00|120|1523019830|20813092970912276|58","3567429859|8|15:33:00|60|3702452106|10213094880795507|57","3567429859|8|15:32:00|120|3702452106|11713094950795507|57","4225800166|8|15:30:00|120|4290789948|16813094920795507|56","3567429859|8|15:31:00|120|3702452106|17513094920795507|57","3567429859|8|15:29:00|60|3702452106|10013094890795507|57","4225800166|8|15:29:00|60|4290789948|11013094950795507|56","1721597436|4|15:33:00|60|2058569149|11513864000942709|54","3567429859|8|15:34:00|60|2398034976|9213094870795505|55","3567429859|8|15:33:00|60|2398034976|16913094910795505|55","4225800166|8|15:33:00|60|2011584683|18513094970795505|56","3567429859|8|15:32:00|60|2398034976|10813094950795505|55","3567429859|8|15:31:00|60|2398034976|11813094980795505|55","4225800166|8|15:32:00|60|2011584683|11413094950795505|56","1721597436|4|15:32:00|120|2058569149|18113864020942709|54","3095607449|1|15:30:00|60|1523019830|22013092920912269|58","2920343104|1|15:31:00|60|2532042518|13313093000912283|58","1100607264|14|15:33:00|120|380937225|23513164430917618|59","3567429859|8|15:30:00|60|2398034976|16713094960795505|55","3567429859|8|15:29:00|60|2398034976|16813094910795505|55","4225800166|8|15:31:00|120|2011584683|10013094890795505|56","46216692|7|15:34:00|60|224821915|8013094660912379|45","46216692|7|15:33:00|60|224821915|10713094610651565|45","4225800166|8|15:30:00|120|2011584683|18413094970795505|56","1721597436|4|15:31:00|60|2058569149|25013864010942709|54","46216692|7|15:32:00|120|224821915|6513094570912373|45","46216692|7|15:31:00|60|224821915|10913094670912379|45","4225800166|8|15:29:00|60|2011584683|17613094960795505|56","46216692|7|15:30:00|60|224821915|10613094610912373|45","46216692|7|15:29:00|60|224821915|9813094590651565|45","4225800166|13|15:33:00|120|2669665705|6613095550912413|50","1721597436|4|15:30:00|60|2058569149|11413864000942709|54","3095607449|1|15:29:00|60|1523019830|11113092900912257|58","46216692|7|15:34:00|60|1826166775|6513094630651570|43","46216692|7|15:33:00|120|1826166775|9113094590651563|43","4225800166|13|15:32:00|60|2669665705|7313095560912413|50","46216692|7|15:32:00|60|1826166775|9213094650651570|43","46216692|7|15:31:00|60|1826166775|613094670912383|43","4225800166|13|15:31:00|120|2669665705|11813095680912414|50","1721597436|4|15:29:00|120|2058569149|18013864020942709|54","46216692|7|15:30:00|60|1826166775|6113094570651562|43","46216692|7|15:29:00|120|1826166775|613094650651581|43","4225800166|13|15:30:00|120|2669665705|11913095660912419|50","3332683073|12|15:34:00|60|87667279|9613647290942700|53","3332683073|12|15:33:00|120|87667279|9613647230942707|53","4225800166|13|15:29:00|60|2669665705|12813095590912413|50","1721597436|2|15:33:00|60|244503826|10513093750095483|57","1463586519|7B|15:30:00|60|1091103895|11013094810651583|24","2920343104|1|15:30:00|60|2532042518|19013092970912277|58","3332683073|12|15:32:00|60|87667279|14813647350942701|53","3332683073|12|15:31:00|120|87667279|17313647260942701|53","4225800166|13|15:33:00|60|3411985938|7113095620912424|45","3332683073|12|15:30:00|120|87667279|10013647210942701|53","3332683073|12|15:29:00|120|87667279|9513647290942700|53","4225800166|13|15:32:00|60|3411985938|11713095660912423|45","1721597436|2|15:32:00|60|244503826|11013093880095483|57","3332683073|12|15:34:00|120|2196409879|11113647210942699|58","3332683073|12|15:33:00|120|2196409879|17713647260942699|58","4225800166|13|15:31:00|60|3411985938|12913095640912423|45","3332683073|12|15:32:00|60|2196409879|18313647340942699|58","3332683073|12|15:31:00|120|2196409879|15713647350942699|58","4225800166|13|15:30:00|60|3411985938|7213095560912416|45","1721597436|2|15:31:00|60|244503826|21313093770912330|57","2738613188|7B|15:32:00|60|245371276|8213094790651584|28","3332683073|12|15:30:00|120|2196409879|17613647260942699|58","3332683073|12|15:29:00|120|2196409879|11013647210942699|58","4225800166|13|15:29:00|60|3411985938|12813095640912424|45","1736981303|9|15:34:00|60|4122770022|20513095120912395|57","1736981303|9|15:33:00|60|4122770022|12713095170912399|57","3875198686|6|15:33:00|60|2635662580|13313094550912370|56","1721597436|2|15:30:00|60|244503826|21013093830912330|57","1736981303|9|15:32:00|60|4122770022|19213095150912395|57","1736981303|9|15:31:00|60|4122770022|20413095120912395|57","3875198686|6|15:32:00|60|2635662580|18713094520912370|56","1736981303|9|15:30:00|120|4122770022|19513095190912399|57","1736981303|9|15:29:00|60|4122770022|9313095090912395|57","3875198686|6|15:31:00|60|2635662580|113094480912371|56","1721597436|2|15:29:00|60|244503826|10413093750095483|57","2738613188|7B|15:30:00|60|245371276|11813094800651584|28","2920343104|1|15:29:00|120|2532042518|10013092900095468|58","1100607264|14|15:32:00|120|380937225|18213164420912435|59","3305905320|8|15:29:00|60|4278050457|17713094910795505|55","1736981303|9|15:34:00|60|4158739832|9313095820912393|57","1736981303|9|15:33:00|60|4158739832|17913095120912393|57","3875198686|6|15:30:00|60|2635662580|113094460912371|56","1736981303|9|15:32:00|60|4158739832|613095100912389|57","1736981303|9|15:31:00|120|4158739832|2413095220912389|57","3875198686|6|15:33:00|60|2801003483|10913094510295944|57","1721597436|2|15:33:00|120|3487389407|20513093830912345|57","1736981303|9|15:30:00|60|4158739832|17813095120912393|57","1736981303|9|15:29:00|60|4158739832|17013095150912393|57","3875198686|6|15:32:00|60|2801003483|11013094440295944|57","3702452106|8|15:34:00|120|3100228085|10213094880795507|59","3702452106|8|15:33:00|60|3100228085|17513094920795507|59","3875198686|6|15:31:00|60|2801003483|10513094450295944|57","1721597436|2|15:32:00|60|3487389407|10013093750095484|57","2738613188|7B|15:29:00|60|245371276|10813094810651584|28","3702452106|8|15:32:00|120|3100228085|9813094940795507|59","3702452106|8|15:31:00|60|3100228085|18613094960795507|59","3875198686|6|15:30:00|120|2801003483|9513094430295944|57","3702452106|8|15:30:00|60|3100228085|10013094890795507|59","3702452106|8|15:29:00|120|3100228085|10113094880795507|59","3875198686|6|15:29:00|60|2801003483|10813094510295944|57","1721597436|2|15:31:00|120|3487389407|20413093830912345|57","3702452106|8|15:34:00|120|3567429859|10913094950795505|51","3702452106|8|15:33:00|60|3567429859|9213094870795505|51","3300801987|9|15:33:00|120|891393435|17313095150912393|58","3702452106|8|15:32:00|60|3567429859|16913094910795505|51","3702452106|8|15:31:00|60|3567429859|16813094960795505|51","3300801987|9|15:32:00|120|891393435|2313095190912389|58","1721597436|2|15:30:00|120|3487389407|10513093880912351|57","2738613188|7B|15:30:00|60|2014137071|10913094810651583|27","2920343104|1|15:33:00|60|3095607449|21713093030912288|55","3702452106|8|15:30:00|120|3567429859|10813094950795505|51","3702452106|8|15:29:00|120|3567429859|11813094980795505|51","3300801987|9|15:31:00|120|891393435|18013095120912393|58","2493371295|6|15:34:00|60|3549826816|11113094510912370|56","2493371295|6|15:33:00|60|3549826816|10613094450912370|56","3300801987|9|15:30:00|120|891393435|17213095150912393|58","1721597436|2|15:29:00|120|3487389407|14913093790095484|57","2493371295|6|15:32:00|60|3549826816|313094460912371|56","2493371295|6|15:31:00|120|3549826816|19413094520912370|56","3300801987|9|15:29:00|120|891393435|9313095820912393|58","2493371295|6|15:30:00|60|3549826816|12713094500912370|56","2493371295|6|15:29:00|60|3549826816|10513094450912370|56","3300801987|9|15:33:00|60|3653339166|19113095150912395|55","4091065876|3|15:33:00|120|3412286137|11713093980095500|58","2738613188|7B|15:29:00|120|2014137071|10913094840651583|27","2493371295|6|15:34:00|60|2893655003|10413094510295944|56","2493371295|6|15:33:00|120|2893655003|10013094450295944|56","3300801987|9|15:32:00|60|3653339166|9613095820912395|55","2493371295|6|15:32:00|120|2893655003|19013094480295944|56","2493371295|6|15:31:00|120|2893655003|10413094440295944|56","3300801987|9|15:31:00|60|3653339166|12513095170912399|55","4091065876|3|15:32:00|60|3412286137|20313093930095500|58","2493371295|6|15:30:00|60|2893655003|17313094460295944|56","2493371295|6|15:29:00|120|2893655003|10313094510295944|56","3300801987|9|15:30:00|60|3653339166|20213095120912395|55","2196409879|12|15:34:00|120|2050396911|19613647320942699|58","2196409879|12|15:33:00|120|2050396911|413647310942702|58","3300801987|9|15:29:00|60|3653339166|313095100912401|55","4091065876|3|15:31:00|60|3412286137|10313093990095500|58","2738613188|5|15:33:00|60|3907763713|20613094390912363|56","2920343104|1|15:32:00|120|3095607449|22213092920912269|55","1100607264|14|15:31:00|120|380937225|21813095790912435|59","2196409879|12|15:32:00|120|2050396911|17613647260942699|58","2196409879|12|15:31:00|120|2050396911|11013647210942699|58","3300801987|8|15:33:00|60|891393435|17313094910795505|53","2196409879|12|15:30:00|120|2050396911|12413647310942699|58","2196409879|12|15:29:00|120|2050396911|17513647260942699|58","3300801987|8|15:32:00|120|891393435|11213094950795505|53","4091065876|3|15:30:00|120|3412286137|313093970912352|58","2196409879|12|15:34:00|120|3332683073|14913647350942701|52","2196409879|12|15:33:00|120|3332683073|10113647210942701|52","3300801987|8|15:30:00|120|891393435|12113094980795505|53","2196409879|12|15:32:00|60|3332683073|9613647230942707|52","2196409879|12|15:30:00|120|3332683073|14813647350942701|52","3300801987|8|15:29:00|120|891393435|17213094910795505|53","4091065876|3|15:29:00|120|3412286137|17913093960095500|58","2738613188|5|15:32:00|60|3907763713|13513094420912363|56","2196409879|12|15:29:00|60|3332683073|10013647210942701|52","1314938315|7|15:34:00|60|1202011076|10913094670912379|47","3300801987|8|15:33:00|60|3653339166|17113094920795507|55","1314938315|7|15:33:00|60|1202011076|10613094610912373|47","1314938315|7|15:32:00|60|1202011076|9813094590651565|47","3300801987|8|15:32:00|60|3653339166|11313094950795507|55","4091065876|3|15:33:00|60|469044143|1913093930912353|58","1314938315|7|15:31:00|120|1202011076|6013094560651565|47","1314938315|7|15:30:00|120|1202011076|10613094610651565|47","3300801987|8|15:30:00|60|3653339166|18613094970795507|55","1314938315|7|15:29:00|120|1202011076|10813094670912379|47","1314938315|7|15:34:00|120|224821915|9113094590651562|40","3300801987|8|15:29:00|60|3653339166|12513094980795507|55","4091065876|3|15:32:00|60|469044143|11813093980912354|58","2738613188|5|15:31:00|60|3907763713|10413094380912363|56","2920343104|1|15:31:00|60|3095607449|11213092900912257|55","1314938315|7|15:32:00|120|224821915|9813094610651562|40","1314938315|7|15:31:00|120|224821915|6513094630651570|40","3300801987|4|15:33:00|60|1213432453|17913864020942709|56","1314938315|7|15:30:00|120|224821915|9813094670912376|40","1314938315|7|15:29:00|120|224821915|9213094650651570|40","3300801987|4|15:32:00|60|1213432453|11313864000942709|56","4091065876|3|15:31:00|60|469044143|10513093990912354|58","3549826816|6|15:34:00|60|2493371295|10513094440295944|55","3549826816|6|15:33:00|60|2493371295|10413094510295944|55","3300801987|4|15:31:00|60|1213432453|24713864010942709|56","3549826816|6|15:32:00|60|2493371295|10013094450295944|55","3549826816|6|15:31:00|120|2493371295|12013094500295944|55","3300801987|4|15:30:00|60|1213432453|17813864020942709|56","4091065876|3|15:30:00|60|469044143|13313093970912354|58","2738613188|5|15:29:00|60|3907763713|13413094420912363|56","3549826816|6|15:30:00|60|2493371295|10413094440295944|55","3549826816|6|15:29:00|120|2493371295|13313094550295944|55","3300801987|4|15:29:00|60|1213432453|11213864000942709|56","3549826816|6|15:34:00|60|3100228085|10613094450912370|55","3549826816|6|15:33:00|120|3100228085|313094460912371|55","3300801987|4|15:33:00|60|2826028950|16813864020942711|54","4091065876|3|15:29:00|60|469044143|11713093980912354|58","3549826816|6|15:31:00|120|3100228085|12713094500912370|55","3549826816|6|15:30:00|60|3100228085|10513094450912370|55","3300801987|4|15:32:00|60|2826028950|23213864010942711|54","3549826816|6|15:29:00|60|3100228085|11113094440912370|55","2025816120|4|15:34:00|60|4261791583|17713864020942711|51","3300801987|4|15:31:00|60|2826028950|10413864000942711|54","2120950107|2|15:33:00|60|48157230|10313093750095484|56","2738613188|5|15:33:00|60|2577613756|11113094380094711|59","2920343104|1|15:30:00|120|3095607449|22113092920912269|55","1100607264|14|15:30:00|120|380937225|23413164430917618|59","37245713|7|15:33:00|120|890688308|6013094560651562|40","598631581|1|15:30:00|60|2877706505|20413093030912289|59","2025816120|4|15:32:00|60|4261791583|11113864000942711|51","2025816120|4|15:30:00|60|4261791583|24013864010942711|51","3300801987|4|15:30:00|60|2826028950|24113864030942711|54","2025816120|4|15:29:00|120|4261791583|11013864000942711|51","2050396911|12|15:32:00|120|2196409879|14913647350942701|54","3300801987|4|15:29:00|60|2826028950|16613864020942711|54","2120950107|2|15:32:00|120|48157230|21813093760095484|56","2050396911|12|15:31:00|60|2196409879|9613647290942700|54","2050396911|12|15:30:00|120|2196409879|9613647230942707|54","4013515236|3|15:33:00|60|552165531|17513094020912354|58","2050396911|12|15:34:00|60|1526455506|17613647260942699|57","2050396911|12|15:33:00|60|1526455506|11013647210942699|57","4013515236|3|15:32:00|60|552165531|10413093990912354|58","2120950107|2|15:31:00|60|48157230|20113093810095484|56","2738613188|5|15:32:00|60|2577613756|20813094330094711|59","2050396911|12|15:32:00|60|1526455506|12413647310942699|57","2050396911|12|15:31:00|60|1526455506|17513647260942699|57","4013515236|3|15:31:00|60|552165531|11613093980912354|58","2050396911|12|15:30:00|60|1526455506|18113647340942699|57","2050396911|12|15:29:00|60|1526455506|10913647210942699|57","4013515236|3|15:30:00|60|552165531|17413094020912354|58","2120950107|2|15:30:00|120|48157230|15413093790095484|56","2346477303|8|15:34:00|60|3100228085|17013094960795505|55","2346477303|8|15:33:00|60|3100228085|17013094910795505|55","4013515236|3|15:29:00|60|552165531|13113093970912354|58","2346477303|8|15:32:00|60|3100228085|10913094950795505|55","2346477303|8|15:31:00|120|3100228085|16213094920795505|55","4013515236|3|15:33:00|120|1282474756|20913094000095500|58","2120950107|2|15:29:00|60|48157230|10213093750095484|56","2738613188|5|15:31:00|60|2577613756|513094400912366|59","2920343104|1|15:29:00|120|3095607449|14513093000912282|55","2346477303|8|15:30:00|120|3100228085|9213094870795505|55","2346477303|8|15:29:00|60|3100228085|16913094910795505|55","4013515236|3|15:32:00|60|1282474756|11813093980095500|58","2346477303|8|15:33:00|60|3591610132|10013094890795507|57","2346477303|8|15:32:00|60|3591610132|10113094880795507|57","4013515236|3|15:31:00|120|1282474756|18113093960095500|58","2120950107|2|15:33:00|60|2334959990|20013093810912330|57","2346477303|8|15:31:00|60|3591610132|18513094960795507|57","2346477303|8|15:30:00|60|3591610132|9713094940795507|57","4013515236|3|15:30:00|120|1282474756|10413093990095500|58","2346477303|8|15:29:00|60|3591610132|17313094920795507|57","1202011076|7|15:34:00|60|1314938315|6613094630912376|43","4013515236|3|15:29:00|120|1282474756|18313094020095500|58","2120950107|2|15:32:00|60|2334959990|513093760912327|57","2738613188|5|15:30:00|120|2577613756|12413094300094711|59","1202011076|7|15:33:00|60|1314938315|9113094590651562|43","1202011076|7|15:32:00|120|1314938315|7413094660651570|43","1877754383|1|15:33:00|120|3398784409|21013092920912270|58","1202011076|7|15:31:00|60|1314938315|9913094670651570|43","1202011076|7|15:30:00|120|1314938315|9813094610651562|43","1877754383|1|15:32:00|120|3398784409|19513092970912277|58","2120950107|2|15:31:00|60|2334959990|13513093860912348|57","1202011076|7|15:29:00|120|1314938315|9113094590651563|43","1202011076|7|15:34:00|60|3989473618|10613094610912373|42","1877754383|1|15:31:00|120|3398784409|10413092900095468|58","1202011076|7|15:33:00|60|3989473618|6013094560651565|42","1202011076|7|15:32:00|60|3989473618|10613094610651565|42","1877754383|1|15:30:00|120|3398784409|19713093030912289|58","2120950107|2|15:30:00|120|2334959990|19913093810912330|57","2738613188|5|15:29:00|60|2577613756|813094390912366|59","2610627973|7B|15:29:00|60|1463586519|11013094810651583|26","1100607264|14|15:29:00|120|380937225|18113164420912435|59","1202011076|7|15:31:00|60|3989473618|10813094670912379|42","1202011076|7|15:30:00|60|3989473618|10513094610912373|42","1877754383|1|15:29:00|120|3398784409|20813092920912270|58","1202011076|7|15:29:00|60|3989473618|5913094560912373|42","3100228085|8|15:34:00|60|3702452106|17013094910795505|53","1877754383|1|15:33:00|60|3827069729|14213093000912282|57","2893655003|9|15:33:00|120|3110610795|9213095100912398|57","3100228085|8|15:33:00|60|3702452106|10913094950795505|53","3100228085|8|15:32:00|120|3702452106|16913094960795505|53","1877754383|1|15:32:00|120|3827069729|10913092900912257|57","3100228085|8|15:30:00|60|3702452106|16813094960795505|53","3100228085|8|15:29:00|60|3702452106|10813094950795505|53","1877754383|1|15:30:00|120|3827069729|21513092920912269|57","2893655003|9|15:32:00|60|3110610795|17713095120912393|57","2738613188|2|15:33:00|120|2577613756|20713093810912330|59","3100228085|8|15:34:00|60|2346477303|17513094920795507|56","3100228085|8|15:32:00|60|2346477303|18613094960795507|56","1877754383|1|15:29:00|60|3827069729|10813092900912257|57","3100228085|8|15:31:00|120|2346477303|10013094890795507|56","3100228085|8|15:30:00|60|2346477303|19113094970795507|56","2535004149|14|15:33:00|120|2871016604|18513164420912435|59","2893655003|9|15:31:00|120|3110610795|2213095190912389|57","3100228085|8|15:29:00|120|2346477303|18513094960795507|56","3100228085|6|15:34:00|60|946374679|11213094440912370|58","2535004149|14|15:32:00|60|2871016604|22113095790912435|59","3100228085|6|15:33:00|60|946374679|12713094500912370|58","3100228085|6|15:32:00|60|946374679|11013094510912370|58","2535004149|14|15:31:00|120|2871016604|23713164430917618|59","2893655003|9|15:30:00|120|3110610795|8813095090912393|57","2738613188|2|15:32:00|120|2577613756|10613093750095483|59","2014137071|7B|15:33:00|60|2738613188|10913094810651584|35","3100228085|6|15:31:00|60|946374679|10513094450912370|58","3100228085|6|15:30:00|60|946374679|11113094440912370|58","2535004149|14|15:30:00|120|2871016604|18413164420912435|59","3100228085|6|15:29:00|60|946374679|12613094500912370|58","3100228085|6|15:34:00|60|3549826816|12113094500295944|56","2535004149|14|15:29:00|60|2871016604|22013095790912435|59","2893655003|9|15:29:00|120|3110610795|9113095820912393|57","3100228085|6|15:33:00|60|3549826816|10513094440295944|56","3100228085|6|15:32:00|60|3549826816|13413094550295944|56","2535004149|14|15:33:00|120|2890651828|21613095800912430|39","3100228085|6|15:31:00|60|3549826816|10013094450295944|56","3100228085|6|15:30:00|60|3549826816|12013094500295944|56","2535004149|14|15:32:00|60|2890651828|18013164420912430|39","2893655003|9|15:31:00|120|714987642|20613095120912395|55","2738613188|2|15:31:00|120|2577613756|11113093880095483|59","3100228085|6|15:29:00|60|3549826816|10413094440295944|56","4261791583|4|15:34:00|60|2025816120|23913864010942709|57","2535004149|14|15:30:00|120|2890651828|21513095800912430|39","4261791583|4|15:33:00|60|2025816120|10713864000942709|57","4261791583|4|15:32:00|60|2025816120|25013864030942709|57","2535004149|14|15:29:00|60|2890651828|17913164420912430|39","2893655003|9|15:30:00|60|714987642|19313095150912395|55","4261791583|4|15:31:00|60|2025816120|17013864020942709|57","4261791583|4|15:30:00|60|2025816120|10613864000942709|57","2974665047|13|15:33:00|60|1183318172|6513095550912414|44","4261791583|4|15:29:00|60|2025816120|16913864020942709|57","4261791583|4|15:33:00|60|515539346|11113864000942711|55","2974665047|13|15:32:00|60|1183318172|12713095590912414|44","2893655003|9|15:29:00|60|714987642|20513095120912395|55","2738613188|2|15:30:00|120|2577613756|14013093860912348|59","2014137071|7B|15:31:00|60|2738613188|8213094790651584|35","1100607264|14|15:33:00|240|3891613492|23813164430912430|59","37245713|7|15:32:00|60|890688308|6613094570651563|40","4261791583|4|15:32:00|60|515539346|25213864030942711|55","4261791583|4|15:31:00|60|515539346|11013864000942711|55","2974665047|13|15:31:00|60|1183318172|11613095680912414|44","4261791583|4|15:30:00|60|515539346|25113864030942711|55","4261791583|4|15:29:00|60|515539346|23913864010942711|55","2974665047|13|15:30:00|60|1183318172|7213095580912420|44","2893655003|6|15:33:00|60|2493371295|12813094500912370|56","555784063|3|15:34:00|120|3379773416|10113093920095500|58","555784063|3|15:33:00|60|3379773416|10913093990095500|58","2974665047|13|15:29:00|60|1183318172|12713095640912420|44","555784063|3|15:32:00|60|3379773416|9813093900095500|58","555784063|3|15:31:00|60|3379773416|18813093960095500|58","2974665047|13|15:33:00|60|3325830777|12013095660912424|49","2893655003|6|15:32:00|60|2493371295|10613094450912370|56","2738613188|2|15:29:00|120|2577613756|20513093810912330|59","555784063|3|15:30:00|120|3379773416|10013093920095500|58","555784063|3|15:29:00|60|3379773416|12313093980095500|58","2974665047|13|15:32:00|60|3325830777|11813095680912417|49","1726955494|1|15:34:00|60|276344470|20513092970912277|59","1726955494|1|15:33:00|120|276344470|11113092900095468|59","2974665047|13|15:30:00|120|3325830777|12913095590912417|49","2893655003|6|15:31:00|60|2493371295|11213094440912370|56","1726955494|1|15:32:00|60|276344470|22913093010912285|59","1726955494|1|15:31:00|60|276344470|21913092920912270|59","2974665047|13|15:29:00|120|3325830777|7313095560912417|49","1726955494|1|15:30:00|120|276344470|11013092900095468|59","1726955494|1|15:29:00|60|276344470|21813092920912270|59","618858167|13|15:33:00|120|552165531|11813095680912416|47","2893655003|6|15:30:00|120|2493371295|17913094540912370|56","2738613188|2|15:32:00|60|1500021116|21013093760095484|57","2014137071|7B|15:30:00|120|2738613188|8213094820651584|35","1526455506|12|15:34:00|60|1162874157|11013647210942699|57","1526455506|12|15:33:00|60|1162874157|12413647310942699|57","618858167|13|15:32:00|120|552165531|12913095590912416|47","1526455506|12|15:32:00|60|1162874157|17513647260942699|57","1526455506|12|15:31:00|60|1162874157|18113647340942699|57","618858167|13|15:31:00|120|552165531|8913095630912423|47","2893655003|6|15:29:00|60|2493371295|12713094500912370|56","1526455506|12|15:30:00|60|1162874157|10913647210942699|57","1526455506|12|15:29:00|120|1162874157|12313647310942699|57","618858167|13|15:30:00|120|552165531|7313095560912416|47","1526455506|12|15:34:00|60|2050396911|9713647230942707|53","1526455506|12|15:31:00|60|2050396911|14913647350942701|53","618858167|13|15:29:00|120|552165531|7213095620912423|47","2893655003|2|15:33:00|120|3761260163|22013093830912330|56","2738613188|2|15:31:00|60|1500021116|14813093790095484|57","1526455506|12|15:30:00|60|2050396911|10113647210942701|53","1526455506|12|15:29:00|60|2050396911|9613647230942707|53","618858167|13|15:33:00|120|3265715605|11813095660912419|48","3989473618|7|15:34:00|120|3882868379|6013094560651565|48","3989473618|7|15:33:00|60|3882868379|10613094610651565|48","618858167|13|15:32:00|120|3265715605|6513095550912413|48","2893655003|2|15:32:00|60|3761260163|10913093750095483|56","3989473618|7|15:32:00|60|3882868379|10813094670912379|48","3989473618|7|15:31:00|60|3882868379|10513094610912373|48","618858167|13|15:31:00|120|3265715605|7213095560912413|48","3989473618|7|15:30:00|60|3882868379|10713094670912373|48","3989473618|7|15:29:00|60|3882868379|10113094650912379|48","618858167|13|15:30:00|120|3265715605|12713095590912413|48","2893655003|2|15:31:00|120|3761260163|21913093830912330|56","2738613188|2|15:30:00|60|1500021116|20913093760095484|57","2014137071|7B|15:29:00|60|2738613188|11813094800651584|35","1100607264|14|15:32:00|240|3891613492|18313164420912430|59","3989473618|7|15:34:00|60|1202011076|5613094560651562|42","3989473618|7|15:33:00|60|1202011076|6613094630912376|42","618858167|13|15:29:00|120|3265715605|11613095680912413|48","3989473618|7|15:32:00|60|1202011076|9113094590651562|42","3989473618|7|15:31:00|60|1202011076|7413094660651570|42","3838784219|12|15:33:00|60|3781035794|10113647290942700|55","2893655003|2|15:30:00|120|3761260163|11413093880095483|56","3989473618|7|15:30:00|60|1202011076|9913094670651570|42","3989473618|7|15:29:00|60|1202011076|9813094610651562|42","3838784219|12|15:32:00|60|3781035794|10613647210942701|55","946374679|6|15:34:00|60|1194974051|12713094500912370|58","946374679|6|15:33:00|60|1194974051|11013094510912370|58","3838784219|12|15:31:00|60|3781035794|15613647350942701|55","2893655003|2|15:29:00|120|3761260163|21813093830912330|56","2738613188|2|15:29:00|60|1500021116|9813093750095484|57","946374679|6|15:32:00|120|1194974051|10513094450912370|58","946374679|6|15:31:00|120|1194974051|11113094440912370|58","3838784219|12|15:29:00|60|3781035794|10013647230942707|55","946374679|6|15:30:00|60|1194974051|12613094500912370|58","946374679|6|15:29:00|60|1194974051|17613094540912370|58","3838784219|12|15:33:00|120|3614543683|213647310942702|57","2893655003|1|15:33:00|120|3591610132|22013092920912269|58","946374679|6|15:34:00|60|3100228085|10113094450295944|56","946374679|6|15:33:00|60|3100228085|12113094500295944|56","3838784219|12|15:32:00|120|3614543683|9613647230942704|57","946374679|6|15:32:00|60|3100228085|10513094440295944|56","946374679|6|15:31:00|60|3100228085|13413094550295944|56","3838784219|12|15:31:00|60|3614543683|14813647350942699|57","2893655003|1|15:32:00|120|3591610132|11113092900912257|58","2609365027|3B|15:33:00|60|3877040829|14813094290651521|46","2014137071|7|15:33:00|60|2577613756|6713094630912379|42","946374679|6|15:30:00|60|3100228085|10013094450295944|56","946374679|6|15:29:00|60|3100228085|12013094500295944|56","3838784219|12|15:30:00|60|3614543683|11913647310942699|57","515539346|4|15:34:00|60|3519554763|11113864000942711|55","515539346|4|15:33:00|0|3519554763|25213864030942711|55","3838784219|12|15:29:00|120|3614543683|16813647260942699|57","2893655003|1|15:31:00|120|3591610132|21913092920912269|58","515539346|4|15:32:00|0|3519554763|11013864000942711|55","515539346|4|15:31:00|60|3519554763|25113864030942711|55","637614763|11|15:33:00|60|3468280332|13513095500440174|57","515539346|4|15:30:00|60|3519554763|23913864010942711|55","515539346|4|15:29:00|0|3519554763|10913864000942711|55","637614763|11|15:32:00|60|3468280332|11113095490440174|57","2893655003|1|15:30:00|120|3591610132|20613092970912276|58","2609365027|3B|15:32:00|60|3877040829|10013094270651521|46","515539346|4|15:34:00|120|4261791583|17213864020942709|55","515539346|4|15:33:00|60|4261791583|25113864030942709|55","637614763|11|15:31:00|60|3468280332|11613095420440174|57","515539346|4|15:32:00|60|4261791583|10713864000942709|55","515539346|4|15:31:00|60|4261791583|25013864030942709|55","637614763|11|15:30:00|60|3468280332|13413095500440174|57","2893655003|1|15:29:00|120|3591610132|21813092920912269|58","515539346|4|15:30:00|60|4261791583|17013864020942709|55","515539346|4|15:29:00|60|4261791583|10613864000942709|55","637614763|11|15:29:00|60|3468280332|11613095430912411|57","3379773416|3|15:34:00|60|555784063|16813093960912354|57","3379773416|3|15:33:00|120|555784063|913093970912353|57","637614763|11|15:33:00|60|3987776330|13613095500912409|54","2893655003|1|15:33:00|60|1523019830|21413093010912285|57","2609365027|3B|15:30:00|60|3877040829|12113094250651521|46","2014137071|7|15:32:00|60|2577613756|10313094670912373|42","1100607264|14|15:31:00|240|3891613492|21813095800912430|59","37245713|7|15:31:00|120|890688308|10513094610651562|40","598631581|1|15:29:00|60|2877706505|19913092970912277|59","3833855042|3|15:30:00|60|2493342269|10613093990912354|58","3873492639|2|15:29:00|120|475845330|15613093790095484|57","2532042518|1|15:31:00|60|2920343104|22213092920912269|58","3379773416|3|15:32:00|60|555784063|19213094000912354|57","3379773416|3|15:31:00|120|555784063|1713093930912353|57","637614763|11|15:32:00|120|3987776330|11113095440912409|54","3379773416|3|15:30:00|60|555784063|12613093970912354|57","3379773416|3|15:29:00|60|555784063|11013093980912354|57","637614763|11|15:31:00|60|3987776330|19913095530912409|54","2893655003|1|15:32:00|60|1523019830|10213092900095468|57","3379773416|3|15:34:00|60|2269163997|10913093990095500|58","3379773416|3|15:33:00|120|2269163997|9813093900095500|58","637614763|11|15:30:00|60|3987776330|11713095430912409|54","3379773416|3|15:32:00|60|2269163997|10013093920095500|58","3379773416|3|15:31:00|120|2269163997|14113093970095500|58","560256723|10|15:32:00|60|3565805587|8913164340917608|53","2893655003|1|15:31:00|120|1523019830|19213092970912277|57","2609365027|3B|15:33:00|60|2998612092|14713094260651522|42","3379773416|3|15:30:00|120|2269163997|12313093980095500|58","3379773416|3|15:29:00|120|2269163997|10813093990095500|58","560256723|10|15:31:00|60|3565805587|8813164320917608|53","3761260163|2|15:34:00|120|2893655003|14513093790095484|56","3761260163|2|15:32:00|120|2893655003|19313093810095484|56","560256723|10|15:30:00|60|3565805587|8013164370296022|53","2893655003|1|15:30:00|60|1523019830|20513092920912270|57","3761260163|2|15:31:00|120|2893655003|14413093790095484|56","3761260163|2|15:30:00|120|2893655003|20413093760095484|56","560256723|10|15:29:00|60|3565805587|10213164400296022|53","3761260163|2|15:29:00|120|2893655003|14313093790095484|56","3761260163|2|15:34:00|60|1227645826|21113093810912330|58","560256723|10|15:33:00|120|2635662580|9113164320917606|54","2893655003|1|15:29:00|60|1523019830|21213093010912285|57","2609365027|3B|15:32:00|60|2998612092|12113094250651522|42","2014137071|7|15:31:00|120|2577613756|10213094610651565|42","3761260163|2|15:33:00|120|1227645826|10913093750095483|58","3761260163|2|15:32:00|60|1227645826|11413093880095483|58","560256723|10|15:32:00|60|2635662580|12113164410917606|54","3761260163|2|15:31:00|120|1227645826|21013093810912330|58","3761260163|2|15:30:00|60|1227645826|10813093750095483|58","560256723|10|15:31:00|60|2635662580|13813164390917606|54","1569477485|7B|15:33:00|60|245371276|12013094800651583|28","3761260163|2|15:29:00|120|1227645826|20913093810912330|58","276344470|1|15:34:00|120|3504310849|12413844190955499|59","560256723|10|15:30:00|120|2635662580|13313164360917606|54","276344470|1|15:33:00|60|3504310849|20413092970912277|59","276344470|1|15:32:00|60|3504310849|11013092900095468|59","560256723|10|15:29:00|120|2635662580|9213164340917610|54","1569477485|7B|15:32:00|120|245371276|11013094810651583|28","2609365027|3B|15:29:00|60|2998612092|14613094260651522|42","276344470|1|15:31:00|60|3504310849|20313092970912277|59","276344470|1|15:30:00|120|3504310849|21813092920912270|59","2488289503|12|15:33:00|60|695063120|18113647340942701|55","276344470|1|15:29:00|60|3504310849|20213092970912277|59","276344470|1|15:34:00|120|1726955494|19713092970912276|58","2488289503|12|15:32:00|60|695063120|17713647260942701|55","1569477485|7B|15:33:00|60|1091103895|11813094800651584|39","276344470|1|15:33:00|60|1726955494|13613093000912282|58","276344470|1|15:32:00|120|1726955494|10313092900912257|58","2488289503|12|15:31:00|60|695063120|11713647310942701|55","276344470|1|15:31:00|60|1726955494|1913092920912259|58","276344470|1|15:30:00|60|1726955494|21513093010912284|58","2488289503|12|15:30:00|60|695063120|9813647230942707|55","1569477485|7B|15:32:00|60|1091103895|10813094810651584|39","1065328272|8|15:33:00|60|2011584683|9313094870795507|56","2014137071|7|15:30:00|120|2577613756|5713094560651565|42","1100607264|14|15:30:00|240|3891613492|23713164430912430|59","276344470|1|15:29:00|120|1726955494|1413092970912259|58","3332581557|13|15:34:00|60|3273349984|12413095660912419|55","2488289503|12|15:29:00|60|695063120|17613647260942701|55","3332581557|13|15:33:00|60|3273349984|12113095680912413|55","3332581557|13|15:32:00|120|3273349984|13513095640912419|55","2488289503|12|15:33:00|60|2120668118|15313647350942699|58","1569477485|7B|15:31:00|60|1091103895|10813094840651584|39","3332581557|13|15:31:00|60|3273349984|13213095590912413|55","3332581557|13|15:30:00|60|3273349984|7513095560912413|55","2488289503|12|15:32:00|60|2120668118|17213647260942699|58","3332581557|13|15:29:00|60|3273349984|12013095680912413|55","1162874157|12|15:34:00|60|1526455506|11613647310942701|54","2488289503|12|15:31:00|60|2120668118|313647310942702|58","1569477485|7B|15:29:00|60|1091103895|8113094790651584|39","1065328272|8|15:32:00|120|2011584683|17913094960795507|56","1162874157|12|15:33:00|60|1526455506|9713647230942707|54","1162874157|12|15:32:00|120|1526455506|17813647340942701|54","2488289503|12|15:30:00|60|2120668118|10713647210942699|58","1162874157|12|15:30:00|60|1526455506|14913647350942701|54","1162874157|12|15:29:00|60|1526455506|10113647210942701|54","2488289503|12|15:29:00|60|2120668118|18913647320942699|58","2269163997|3B|15:32:00|60|3877040829|10013094270651522|41","1162874157|12|15:34:00|60|1450883263|12413647310942699|58","1162874157|12|15:33:00|120|1450883263|17513647260942699|58","2488289503|10|15:33:00|60|4012104432|13113164380296022|50","1162874157|12|15:32:00|60|1450883263|15513647350942699|58","1162874157|12|15:31:00|60|1450883263|10913647210942699|58","2488289503|10|15:31:00|60|4012104432|10413164400296022|50","2269163997|3B|15:31:00|60|3877040829|14713094260651522|41","1065328272|8|15:31:00|60|2011584683|16913094920795507|56","2014137071|7|15:29:00|120|2577613756|10313094670912379|42","1162874157|12|15:30:00|120|1450883263|17413647260942699|58","1162874157|12|15:29:00|60|1450883263|15413647350942699|58","2488289503|10|15:30:00|60|4012104432|13013164380296022|50","3930049404|8|15:34:00|60|3591610132|12013094980795505|53","3930049404|8|15:33:00|120|3591610132|11013094950795505|53","2488289503|10|15:29:00|60|4012104432|8913164320917608|50","2269163997|3B|15:30:00|60|3877040829|12113094250651522|41","3930049404|8|15:31:00|60|3591610132|17013094960795505|53","3930049404|8|15:30:00|120|3591610132|17013094910795505|53","2488289503|10|15:33:00|60|1098202862|8013164330917606|51","3930049404|8|15:29:00|120|3591610132|10913094950795505|53","3930049404|8|15:34:00|120|3780921823|10113094880795507|55","2488289503|10|15:32:00|60|1098202862|13613164390917606|51","2269163997|3|15:33:00|120|2503048334|10013093920095500|56","1065328272|8|15:30:00|60|2011584683|11113094950795507|56","3930049404|8|15:33:00|120|3780921823|18513094960795507|55","3930049404|8|15:32:00|60|3780921823|17313094920795507|55","2488289503|10|15:31:00|120|1098202862|11913164380917610|51","3930049404|8|15:31:00|60|3780921823|11513094950795507|55","3930049404|8|15:30:00|60|3780921823|10013094880795507|55","2488289503|10|15:30:00|120|1098202862|11913164410917606|51","2269163997|3|15:32:00|120|2503048334|12313093980095500|56","3930049404|8|15:29:00|60|3780921823|9513094870795507|55","1227645826|2|15:34:00|60|3979953845|21913093830912330|58","2488289503|10|15:29:00|60|1098202862|13513164390917606|51","1227645826|2|15:33:00|60|3979953845|11413093880095483|58","1227645826|2|15:32:00|60|3979953845|21813093830912330|58","2673577552|9|15:33:00|60|3164047331|2313095120912389|58","2269163997|3|15:31:00|120|2503048334|10813093990095500|56","1065328272|8|15:29:00|60|2011584683|18313094970795507|56","2014137071|7|15:33:00|120|2692076464|10413094610651563|46","1100607264|14|15:29:00|240|3891613492|18213164420912430|59","37245713|7|15:30:00|120|890688308|7913094660651570|40","1227645826|2|15:31:00|60|3979953845|10813093750095483|58","1227645826|2|15:30:00|60|3979953845|21713093830912330|58","2673577552|9|15:32:00|60|3164047331|2113095150912389|58","1227645826|2|15:29:00|120|3979953845|11313093880095483|58","1227645826|2|15:34:00|60|3761260163|19413093810095484|56","2673577552|9|15:31:00|60|3164047331|18713095120912393|58","2269163997|3|15:30:00|60|2503048334|14013093970095500|56","1227645826|2|15:33:00|60|3761260163|14513093790095484|56","1227645826|2|15:31:00|60|3761260163|19313093810095484|56","2673577552|9|15:30:00|60|3164047331|9413095090912393|58","1227645826|2|15:30:00|60|3761260163|14413093790095484|56","1227645826|2|15:29:00|60|3761260163|20413093760095484|56","2673577552|9|15:29:00|60|3164047331|17813095150912393|58","2269163997|3|15:29:00|60|2503048334|18613093960095500|56","1065328272|8|15:33:00|120|73874293|18413094970795505|56","3504310849|1|15:34:00|120|276344470|10413092900912257|58","3504310849|1|15:33:00|60|276344470|19713092970912276|58","2673577552|9|15:33:00|60|3253812998|18513095150912395|58","3504310849|1|15:32:00|120|276344470|21713093010912284|58","3504310849|1|15:31:00|60|276344470|10313092900912257|58","2673577552|9|15:32:00|120|3253812998|19813095220912399|58","2269163997|3|15:33:00|60|3379773416|16913094020912354|59","3504310849|1|15:30:00|60|276344470|19613092970912276|58","3504310849|1|15:29:00|120|276344470|1913092920912259|58","2673577552|9|15:31:00|120|3253812998|9513095100912399|58","3504310849|1|15:34:00|120|259791766|21913092920912270|59","3504310849|1|15:33:00|60|259791766|11013092900095468|59","2673577552|9|15:30:00|120|3253812998|19513095120912395|58","2269163997|3|15:32:00|60|3379773416|913093970912353|59","1065328272|8|15:32:00|60|73874293|17613094960795505|56","2014137071|7|15:32:00|120|2692076464|513094590912381|46","3504310849|1|15:32:00|60|259791766|21813092920912270|59","3504310849|1|15:31:00|60|259791766|22713093010912285|59","2673577552|9|15:29:00|120|3253812998|18413095150912395|58","3504310849|1|15:30:00|60|259791766|10913092900095468|59","3504310849|1|15:29:00|120|259791766|21713092920912270|59","4290789948|8|15:33:00|60|2496888016|18313094970795507|55","2269163997|3|15:31:00|120|3379773416|11113093980912354|59","3273349984|13|15:34:00|60|3332581557|12613095640912423|45","3273349984|13|15:33:00|60|3332581557|6413095550912416|45","4290789948|8|15:32:00|60|2496888016|16813094920795507|55","3273349984|13|15:32:00|60|3332581557|7113095580912423|45","3273349984|13|15:31:00|60|3332581557|12513095590912416|45","4290789948|8|15:31:00|60|2496888016|18213094970795507|55","2269163997|3|15:30:00|60|3379773416|1713093930912353|59","1065328272|8|15:31:00|60|73874293|11313094950795505|56","3273349984|13|15:30:00|120|3332581557|11413095680912416|45","3273349984|13|15:29:00|60|3332581557|6313095550912417|45","4290789948|8|15:30:00|60|2496888016|11013094950795507|55","3273349984|13|15:34:00|120|642786040|12113095680912413|54","3273349984|13|15:33:00|120|642786040|7513095620912419|54","4290789948|8|15:29:00|60|2496888016|17513094910795507|55","2269163997|3|15:29:00|120|3379773416|16713093960912354|59","3273349984|13|15:32:00|120|642786040|13213095590912413|54","3273349984|13|15:31:00|120|642786040|7513095560912413|54","4290789948|8|15:33:00|120|4225800166|16813094920795505|52","3273349984|13|15:30:00|120|642786040|12013095680912413|54","3273349984|13|15:29:00|120|642786040|8913095650912419|54","4290789948|8|15:32:00|120|4225800166|17813094960795505|52","1840343478|13|15:33:00|120|3421576237|12213095660912424|48","1065328272|8|15:30:00|60|73874293|16613094920795505|56","2014137071|7|15:31:00|60|2692076464|10313094610651562|46","1100607264|11|15:33:00|60|3827069729|11313095490440174|57","3780921823|8|15:34:00|60|3398784409|9713094940795507|56","3780921823|8|15:33:00|60|3398784409|17313094920795507|56","4290789948|8|15:31:00|120|4225800166|18513094970795505|52","3780921823|8|15:32:00|60|3398784409|11513094950795507|56","3780921823|8|15:31:00|60|3398784409|10013094880795507|56","4290789948|8|15:30:00|60|4225800166|10013094890795505|52","1840343478|13|15:32:00|120|3421576237|13113095590912417|48","3780921823|8|15:30:00|60|3398784409|18913094970795507|56","3780921823|8|15:29:00|60|3398784409|17213094920795507|56","4290789948|8|15:29:00|60|4225800166|18413094970795505|52","3780921823|8|15:33:00|60|3930049404|12013094980795505|52","3780921823|8|15:32:00|60|3930049404|11013094950795505|52","2577613756|7|15:33:00|60|2014137071|9513094590651562|40","1840343478|13|15:31:00|120|3421576237|11913095680912417|48","1065328272|8|15:29:00|120|73874293|12213094980795505|56","3780921823|8|15:30:00|60|3930049404|17013094960795505|52","3780921823|8|15:29:00|60|3930049404|17013094910795505|52","2577613756|7|15:32:00|60|2014137071|10413094610651563|40","2177031349|7|15:34:00|60|986262698|10513094610912373|45","2177031349|7|15:33:00|60|986262698|10713094670912373|45","2577613756|7|15:31:00|60|2014137071|513094590912381|40","1840343478|13|15:30:00|60|3421576237|7413095560912417|48","2177031349|7|15:32:00|60|986262698|9713094590651565|45","2177031349|7|15:31:00|60|986262698|10513094610651565|45","2577613756|7|15:30:00|60|2014137071|10413094670651570|40","2177031349|7|15:30:00|60|986262698|6913094630912379|45","2177031349|7|15:29:00|60|986262698|5913094560651565|45","2577613756|7|15:29:00|60|2014137071|613094650912383|40","1840343478|13|15:29:00|120|3421576237|7513095580912424|48","1065328272|14|15:32:00|120|552165531|18113164420912435|40","2014137071|7|15:30:00|120|2692076464|613094650912383|46","2177031349|7|15:34:00|60|3882868379|10013094670912376|45","2177031349|7|15:33:00|120|3882868379|6613094630651570|45","2577613756|7|15:33:00|60|2096931515|10213094610651565|47","2177031349|7|15:31:00|60|3882868379|5613094560651562|45","2177031349|7|15:30:00|60|3882868379|6613094630912376|45","2577613756|7|15:32:00|60|2096931515|5713094560651565|47","1840343478|13|15:33:00|180|2960704645|12613095590912414|48","2177031349|7|15:29:00|120|3882868379|9113094590651562|45","2706513156|6|15:34:00|60|3494453711|11113094440912370|56","2577613756|7|15:31:00|60|2096931515|10313094670912379|47","2706513156|6|15:33:00|60|3494453711|12613094500912370|56","2706513156|6|15:32:00|60|3494453711|17513094460912370|56","2577613756|7|15:30:00|60|2096931515|9713094650912379|47","1840343478|13|15:32:00|120|2960704645|11513095680912414|48","1065328272|14|15:31:00|60|552165531|21713095790912435|40","2706513156|6|15:31:00|60|3494453711|10413094450912370|56","2706513156|6|15:30:00|60|3494453711|213094480912371|56","2577613756|7|15:29:00|120|2096931515|6213094570651565|47","2706513156|6|15:29:00|60|3494453711|12513094500912370|56","2706513156|6|15:34:00|60|1194974051|17813094540295944|55","2577613756|5|15:33:00|120|2058569149|19313094340094711|58","1840343478|13|15:31:00|180|2960704645|6413095550912414|48","2706513156|6|15:33:00|60|1194974051|10613094440295944|55","2706513156|6|15:32:00|60|1194974051|10513094510295944|55","2577613756|5|15:32:00|120|2058569149|513094400912366|58","2706513156|6|15:31:00|120|1194974051|10113094450295944|55","2706513156|6|15:30:00|60|1194974051|12113094500295944|55","2577613756|5|15:31:00|120|2058569149|14113094420094711|58","1840343478|13|15:30:00|180|2960704645|713095680912415|48","1065328272|14|15:29:00|120|552165531|18013164420912435|40","2014137071|7|15:29:00|60|2692076464|213094660651581|46","1100607264|11|15:32:00|60|3827069729|20413095530440174|57","37245713|7|15:29:00|120|890688308|10613094610651563|40","2085226230|5|15:33:00|180|2277425032|11413094380094711|57","2706513156|6|15:29:00|60|1194974051|10513094440295944|55","3979953845|2|15:34:00|60|2503048334|11413093880095483|56","2577613756|5|15:30:00|120|2058569149|813094390912366|58","3979953845|2|15:33:00|120|2503048334|21813093830912330|56","3979953845|2|15:32:00|60|2503048334|10813093750095483|56","2577613756|5|15:29:00|180|2058569149|13913094370094711|58","1840343478|13|15:29:00|180|2960704645|7013095620912420|48","3979953845|2|15:31:00|60|2503048334|11313093880095483|56","3979953845|2|15:30:00|120|2503048334|16213093790912333|56","2577613756|5|15:33:00|120|2738613188|10513094380912363|57","3979953845|2|15:29:00|120|2503048334|313093810912327|56","3979953845|2|15:34:00|60|1227645826|14613093790095484|58","2577613756|5|15:32:00|60|2738613188|20613094390912363|57","2450931568|13|15:33:00|120|65431437|11913095680912416|49","1065328272|14|15:33:00|120|380937225|22013095800912430|39","3979953845|2|15:33:00|60|1227645826|19413093810095484|58","3979953845|2|15:32:00|60|1227645826|14513093790095484|58","2577613756|5|15:31:00|60|2738613188|13513094420912363|57","3979953845|2|15:31:00|120|1227645826|19813093830912345|58","3979953845|2|15:30:00|60|1227645826|19313093810095484|58","2577613756|5|15:30:00|60|2738613188|11613094300912363|57","2450931568|13|15:32:00|60|65431437|13313095640912423|49","3979953845|2|15:29:00|60|1227645826|14413093790095484|58","259791766|1|15:34:00|120|3145751766|11013092900095468|59","2577613756|5|15:29:00|120|2738613188|10413094380912363|57","259791766|1|15:33:00|120|3145751766|21813092920912270|59","259791766|1|15:32:00|60|3145751766|20213092970912277|59","2577613756|2|15:33:00|60|3487389407|11113093880095483|57","2450931568|13|15:31:00|120|65431437|13013095590912416|49","1065328272|14|15:32:00|60|380937225|18413164420912430|39","2998612092|3B|15:33:00|60|2609365027|14813094260651521|46","259791766|1|15:31:00|120|3145751766|10913092900095468|59","259791766|1|15:30:00|60|3145751766|20113092970912277|59","2577613756|2|15:32:00|60|3487389407|15913093790912333|57","259791766|1|15:29:00|60|3145751766|21613092920912270|59","259791766|1|15:34:00|120|3504310849|13713093000912282|58","2577613756|2|15:31:00|60|3487389407|20513093810912330|57","2450931568|13|15:30:00|60|65431437|7313095620912423|49","259791766|1|15:33:00|120|3504310849|1513092970912259|58","259791766|1|15:32:00|120|3504310849|10413092900912257|58","2577613756|2|15:30:00|60|3487389407|10513093750095483|57","259791766|1|15:31:00|120|3504310849|19713092970912276|58","259791766|1|15:30:00|60|3504310849|13613093000912282|58","2577613756|2|15:29:00|60|3487389407|11013093880095483|57","2450931568|13|15:29:00|60|65431437|6713095550912416|49","1065328272|14|15:30:00|120|380937225|21913095800912430|39","259791766|1|15:29:00|120|3504310849|10313092900912257|58","642786040|13|15:34:00|120|3273349984|12613095640912424|43","2577613756|2|15:33:00|120|2738613188|10513093880912351|56","642786040|13|15:33:00|120|3273349984|7113095580912424|43","642786040|13|15:32:00|120|3273349984|12613095640912423|43","2577613756|2|15:32:00|120|2738613188|14913093790095484|56","2450931568|13|15:33:00|120|2274972608|8613095650912419|49","642786040|13|15:31:00|120|3273349984|6413095550912416|43","642786040|13|15:30:00|120|3273349984|7113095580912423|43","2577613756|2|15:31:00|60|2738613188|9913093750095484|56","642786040|13|15:29:00|60|3273349984|11413095680912416|43","642786040|13|15:34:00|120|675269737|13213095590912413|54","2577613756|2|15:30:00|60|2738613188|14813093790095484|56","2450931568|13|15:32:00|120|2274972608|12713095640912419|49","1065328272|14|15:29:00|60|380937225|18313164420912430|39","2998612092|3B|15:32:00|60|2609365027|14813094290651521|46","1100607264|11|15:31:00|60|3827069729|22613095540440174|57","642786040|13|15:33:00|120|675269737|7513095560912413|54","642786040|13|15:32:00|120|675269737|12013095680912413|54","2577613756|2|15:29:00|120|2738613188|19613093810095484|56","642786040|13|15:31:00|60|675269737|8913095650912419|54","642786040|13|15:30:00|120|675269737|13113095590912413|54","2826028950|4|15:33:00|60|3300801987|24913864010942709|56","2450931568|13|15:31:00|120|2274972608|12613095590912413|49","642786040|13|15:29:00|120|675269737|12213095660912419|54","3475396030|12|15:34:00|60|1450883263|17613647260942701|53","2826028950|4|15:32:00|60|3300801987|26113864030942709|56","3475396030|12|15:33:00|120|1450883263|15113647350942701|53","3475396030|12|15:32:00|120|1450883263|19113647320942701|53","2826028950|4|15:31:00|60|3300801987|11313864000942709|56","2450931568|13|15:30:00|120|2274972608|11513095680912413|49","1065328272|12|15:33:00|120|552165531|18813647320942699|56","3475396030|12|15:31:00|60|1450883263|9713647290942700|53","3475396030|12|15:30:00|120|1450883263|9713647230942707|53","2826028950|4|15:30:00|60|3300801987|26013864030942709|56","3475396030|12|15:34:00|60|44881418|15513647350942699|57","3475396030|12|15:33:00|120|44881418|10913647210942699|57","2826028950|4|15:29:00|60|3300801987|17813864020942709|56","2450931568|13|15:29:00|120|2274972608|12613095640912419|49","3475396030|12|15:32:00|120|44881418|18013647340942699|57","3475396030|12|15:31:00|60|44881418|15413647350942699|57","2826028950|4|15:33:00|60|1393958362|23213864010942711|53","3475396030|12|15:30:00|60|44881418|12213647310942699|57","3475396030|12|15:29:00|60|44881418|10813647210942699|57","2826028950|4|15:32:00|60|1393958362|10413864000942711|53","3991952489|12|15:33:00|120|3200465306|10213647230942707|56","1065328272|12|15:32:00|120|552165531|10613647210942699|56","2998612092|3B|15:31:00|60|2609365027|10013094270651521|46","986262698|7|15:34:00|60|2177031349|713094650651581|38","986262698|7|15:32:00|60|2177031349|6613094630651570|38","2826028950|4|15:31:00|120|1393958362|24113864030942711|53","986262698|7|15:31:00|120|2177031349|9213094590651563|38","986262698|7|15:30:00|60|2177031349|9913094610651562|38","2826028950|4|15:30:00|60|1393958362|16613864020942711|53","3991952489|12|15:32:00|120|3200465306|10213647290942700|56","986262698|7|15:29:00|120|2177031349|5613094560651562|38","986262698|7|15:34:00|120|1100607264|10713094670912373|44","2826028950|4|15:29:00|60|1393958362|10313864000942711|53","986262698|7|15:33:00|60|1100607264|9713094590651565|44","986262698|7|15:32:00|120|1100607264|10513094610651565|44","1362116730|2|15:33:00|60|1282474756|13713093860912348|57","3991952489|12|15:31:00|60|3200465306|10713647210942701|56","1065328272|12|15:31:00|120|552165531|12013647310942699|56","986262698|7|15:31:00|120|1100607264|6913094630912379|44","986262698|7|15:30:00|120|1100607264|5913094560651565|44","1362116730|2|15:32:00|60|1282474756|10313093750095483|57","986262698|7|15:29:00|120|1100607264|6413094570651565|44","3494453711|6|15:34:00|60|2706513156|10213094450295944|56","1362116730|2|15:30:00|60|1282474756|20713093830912330|57","3991952489|12|15:30:00|120|3200465306|12113647310942701|56","3494453711|6|15:33:00|60|2706513156|17813094540295944|56","3494453711|6|15:32:00|60|2706513156|10613094440295944|56","1362116730|2|15:29:00|120|1282474756|20013093810912330|57","3494453711|6|15:31:00|60|2706513156|10513094510295944|56","3494453711|6|15:30:00|60|2706513156|10113094450295944|56","1362116730|2|15:33:00|60|3265715605|13513093860912349|56","3991952489|12|15:29:00|120|3200465306|18113647260942701|56","1065328272|12|15:30:00|120|552165531|18713647320942699|56","2998612092|3B|15:29:00|60|2609365027|12113094250651521|46","1100607264|11|15:30:00|60|3827069729|11813095420440174|57","598631581|6|15:32:00|120|3871409354|11113094510295944|57","3494453711|6|15:29:00|60|2706513156|12113094500295944|56","3494453711|6|15:34:00|60|1745152818|12613094500912370|55","1362116730|2|15:32:00|120|3265715605|10213093750095484|56","3494453711|6|15:33:00|60|1745152818|17513094460912370|55","3494453711|6|15:32:00|60|1745152818|10413094450912370|55","1362116730|2|15:31:00|120|3265715605|20013093810095484|56","3991952489|12|15:33:00|60|1282210726|14713647350942699|57","3494453711|6|15:31:00|60|1745152818|213094480912371|55","3494453711|6|15:30:00|60|1745152818|12513094500912370|55","1362116730|2|15:30:00|120|3265715605|21513093760095484|56","3494453711|6|15:29:00|60|1745152818|19013094520912370|55","2540754978|5|15:34:00|60|2649549238|20013094400912363|58","1362116730|2|15:29:00|60|3265715605|10113093750095484|56","3991952489|12|15:32:00|60|1282210726|11813647310942699|57","1065328272|12|15:29:00|60|552165531|17413647340942699|56","2540754978|5|15:33:00|60|2649549238|13713094370912363|58","2540754978|5|15:32:00|60|2649549238|12213094300912363|58","3398784409|8|15:33:00|60|4246083363|11513094950795507|56","2540754978|5|15:31:00|60|2649549238|10913094380912363|58","2540754978|5|15:30:00|60|2649549238|13613094370912363|58","3398784409|8|15:32:00|60|4246083363|10013094880795507|56","3991952489|12|15:31:00|60|1282210726|16713647260942699|57","2540754978|5|15:29:00|60|2649549238|14113094420912363|58","2540754978|5|15:34:00|120|224821915|18913094400094711|54","3398784409|8|15:31:00|60|4246083363|18313094960795507|56","2540754978|5|15:33:00|120|224821915|10613094380094711|54","2540754978|5|15:32:00|120|224821915|513094390912366|54","3398784409|8|15:30:00|60|4246083363|17213094920795507|56","3991952489|12|15:30:00|60|1282210726|14613647350942699|57","1065328272|12|15:33:00|120|2011584683|10013647290942700|56","2998612092|11|15:33:00|120|595945906|11913095430912409|57","2540754978|5|15:30:00|120|224821915|11813094300094711|54","2540754978|5|15:29:00|120|224821915|513094420912365|54","3398784409|8|15:29:00|60|4246083363|11413094950795507|56","175753322|4|15:34:00|60|4198886535|10913864000942709|56","175753322|4|15:33:00|60|4198886535|17313864020942709|56","3398784409|8|15:32:00|60|3780921823|12013094980795505|55","3991952489|12|15:29:00|120|1282210726|10313647210942699|57","175753322|4|15:31:00|60|4198886535|10813864000942709|56","175753322|4|15:29:00|60|4198886535|23913864010942709|56","3398784409|8|15:31:00|60|3780921823|11013094950795505|55","175753322|4|15:34:00|60|44881418|25113864030942711|56","175753322|4|15:33:00|60|44881418|23913864010942711|56","3398784409|8|15:30:00|120|3780921823|16313094920795505|55","1917711411|3|15:33:00|60|1213432453|12113093980095500|56","1065328272|12|15:31:00|120|2011584683|18313647340942701|56","175753322|4|15:32:00|60|44881418|10913864000942711|56","175753322|4|15:31:00|60|44881418|23813864010942711|56","3398784409|8|15:29:00|60|3780921823|17013094960795505|55","175753322|4|15:30:00|60|44881418|17313864020942711|56","175753322|4|15:29:00|60|44881418|10813864000942711|56","3398784409|5|15:33:00|60|882992124|10813094380912363|57","1917711411|3|15:32:00|60|1213432453|18713094020095500|56","3830653061|3|15:34:00|60|2503048334|19213093930912354|56","3830653061|3|15:33:00|60|2503048334|10113093990912354|56","3398784409|5|15:32:00|60|882992124|14013094420912363|57","3830653061|3|15:32:00|60|2503048334|1613093960912353|56","3830653061|3|15:31:00|120|2503048334|11213093980912354|56","3398784409|5|15:31:00|60|882992124|12013094300912363|57","1917711411|3|15:31:00|60|1213432453|13813093970095500|56","1065328272|12|15:30:00|60|2011584683|11813647310942701|56","2998612092|11|15:32:00|120|595945906|11213095440912409|57","1100607264|11|15:29:00|60|3827069729|14513095520440174|57","3830653061|3|15:30:00|60|2503048334|19313094000912354|56","3830653061|3|15:29:00|60|2503048334|16813093960912354|56","3398784409|5|15:30:00|60|882992124|13413094370912363|57","3830653061|3|15:34:00|60|1742862628|10813093990095500|58","3830653061|3|15:33:00|60|1742862628|14013093970095500|58","3398784409|5|15:29:00|60|882992124|10713094380912363|57","1917711411|3|15:30:00|60|1213432453|10613093990095500|56","3830653061|3|15:32:00|60|1742862628|12213093980095500|58","3830653061|3|15:31:00|60|1742862628|8213093890095500|58","3398784409|5|15:33:00|120|3179893028|13613094370094711|54","3830653061|3|15:30:00|60|1742862628|10713093990095500|58","3830653061|3|15:29:00|120|1742862628|13913093970095500|58","3398784409|5|15:32:00|120|3179893028|613094420912365|54","1917711411|3|15:29:00|60|1213432453|12013093980095500|56","1065328272|12|15:29:00|120|2011584683|9913647230942707|56","2503048334|3|15:34:00|60|3830653061|12313093980095500|56","2503048334|3|15:33:00|60|3830653061|10813093990095500|56","3398784409|5|15:31:00|120|3179893028|613094390912366|54","2503048334|3|15:32:00|60|3830653061|18913094020095500|56","2503048334|3|15:31:00|120|3830653061|14013093970095500|56","3398784409|5|15:30:00|120|3179893028|13513094370094711|54","1917711411|3|15:33:00|60|3514016666|11413093980912354|56","2503048334|3|15:30:00|120|3830653061|12213093980095500|56","2503048334|3|15:29:00|60|3830653061|18813094020095500|56","3398784409|5|15:29:00|120|3179893028|13713094420094711|54","2503048334|3|15:34:00|120|2269163997|10113093990912354|59","2503048334|3|15:33:00|120|2269163997|1613093960912353|59","3398784409|1|15:33:00|120|3891613492|10413092900095468|57","1917711411|3|15:32:00|60|3514016666|10213093990912354|56","4215555989|13|15:33:00|120|2960704645|12013095680912417|52","2998612092|11|15:31:00|60|595945906|313095530912412|57","2503048334|3|15:32:00|120|2269163997|9113093920912354|59","2503048334|3|15:31:00|120|2269163997|16913094020912354|59","3398784409|1|15:32:00|120|3891613492|19713093030912289|57","2503048334|3|15:30:00|120|2269163997|913093970912353|59","2503048334|3|15:29:00|120|2269163997|11113093980912354|59","3398784409|1|15:31:00|120|3891613492|20813092920912270|57","1917711411|3|15:31:00|60|3514016666|19313093930912354|56","2503048334|2|15:34:00|60|94248676|16313093790912333|57","2503048334|2|15:33:00|120|94248676|10813093750095483|57","3398784409|1|15:30:00|120|3891613492|10313092900095468|57","2503048334|2|15:32:00|60|94248676|11313093880095483|57","2503048334|2|15:31:00|60|94248676|313093810912327|57","3398784409|1|15:29:00|120|3891613492|21513093010912285|57","1917711411|3|15:30:00|60|3514016666|11313093980912354|56","4215555989|13|15:32:00|120|2960704645|7513095560912417|52","2503048334|2|15:30:00|60|94248676|10713093750095483|57","2503048334|2|15:29:00|60|94248676|20813093810912330|57","3398784409|1|15:33:00|120|1877754383|21213093030912288|57","2503048334|2|15:34:00|120|3979953845|19513093810095484|54","2503048334|2|15:33:00|60|3979953845|14613093790095484|54","3398784409|1|15:32:00|120|1877754383|21713092920912269|57","1917711411|3|15:29:00|60|3514016666|19213093930912354|56","2503048334|2|15:32:00|120|3979953845|19913093830912345|54","2503048334|2|15:31:00|120|3979953845|19413093810095484|54","3398784409|1|15:31:00|120|1877754383|14213093000912282|57","2503048334|2|15:30:00|120|3979953845|14513093790095484|54","3145751766|1|15:34:00|120|259791766|10513092900912257|59","3398784409|1|15:30:00|120|1877754383|10913092900912257|57","1917711411|11|15:33:00|120|891393435|13713095500440174|55","4215555989|13|15:31:00|120|2960704645|13213095590912417|52","2998612092|11|15:29:00|120|595945906|11813095430912409|57","1100607264|1|15:33:00|60|3747807733|21513092920912269|56","598631581|6|15:31:00|120|3871409354|20313094520295944|57","2085226230|5|15:32:00|180|2277425032|12813094300094711|57","3833855042|3|15:29:00|120|2493342269|17613093960912354|58","3145751766|1|15:33:00|120|259791766|19813092970912276|59","3145751766|1|15:32:00|120|259791766|13713093000912282|59","2871016604|14|15:33:00|120|1194974051|22113095790912435|59","3145751766|1|15:31:00|120|259791766|1513092970912259|59","3145751766|1|15:30:00|60|259791766|19713092970912276|59","2871016604|14|15:32:00|60|1194974051|18413164420912435|59","1917711411|11|15:32:00|60|891393435|14513095520440174|55","3145751766|1|15:29:00|60|259791766|20013093030912288|59","3145751766|1|15:34:00|60|3566702934|22713093010912285|59","2871016604|14|15:31:00|120|1194974051|22113095800912435|59","3145751766|1|15:33:00|60|3566702934|10913092900095468|59","3145751766|1|15:32:00|120|3566702934|21713092920912270|59","2871016604|14|15:30:00|120|1194974051|22013095790912435|59","1917711411|11|15:31:00|120|891393435|11213095490440174|55","4215555989|13|15:30:00|120|2960704645|7413095620912424|52","3145751766|1|15:31:00|120|3566702934|20113092970912277|59","3145751766|1|15:30:00|120|3566702934|21613092920912270|59","2871016604|14|15:29:00|60|1194974051|18313164420912435|59","3145751766|1|15:29:00|120|3566702934|10813092900095468|59","675269737|13|15:34:00|60|3690575038|12013095680912413|49","2871016604|14|15:33:00|120|2535004149|18113164420912430|59","1917711411|11|15:30:00|60|891393435|11713095420440174|55","675269737|13|15:33:00|60|3690575038|12313095660912420|49","675269737|13|15:32:00|60|3690575038|13113095590912413|49","2871016604|14|15:32:00|60|2535004149|21613095800912430|59","675269737|13|15:31:00|60|3690575038|12213095660912419|49","675269737|13|15:30:00|60|3690575038|6713095550912413|49","2871016604|14|15:31:00|120|2535004149|23513164430912430|59","1917711411|11|15:29:00|60|891393435|19713095460912411|55","4215555989|13|15:29:00|120|2960704645|12213095660912424|52","2998612092|11|15:33:00|60|2805226700|14313095520440174|56","675269737|13|15:29:00|60|3690575038|12213095660912420|49","675269737|13|15:34:00|60|642786040|7113095560912416|44","2871016604|14|15:30:00|120|2535004149|18013164420912430|59","675269737|13|15:33:00|120|642786040|11513095680912416|44","675269737|13|15:32:00|120|642786040|12613095640912424|44","2871016604|14|15:29:00|60|2535004149|21513095800912430|59","1917711411|11|15:33:00|120|2046468661|11013095440912409|57","675269737|13|15:31:00|60|642786040|12613095640912423|44","675269737|13|15:30:00|60|642786040|6413095550912416|44","1183318172|13|15:33:00|120|3691015742|12713095590912414|44","675269737|13|15:29:00|60|642786040|12513095640912424|44","4246083363|8|15:34:00|120|3566817926|11513094950795507|56","1183318172|13|15:32:00|120|3691015742|11613095680912414|44","1917711411|11|15:32:00|120|2046468661|13413095500912409|57","4215555989|13|15:33:00|120|3957216179|7013095620912420|48","4246083363|8|15:33:00|60|3566817926|10013094880795507|56","4246083363|8|15:32:00|60|3566817926|18313094960795507|56","1183318172|13|15:31:00|120|3691015742|7213095580912420|44","4246083363|8|15:31:00|120|3566817926|17213094920795507|56","4246083363|8|15:30:00|120|3566817926|11413094950795507|56","1183318172|13|15:30:00|120|3691015742|12713095640912420|44","1917711411|11|15:31:00|120|2046468661|11613095430912409|57","4246083363|8|15:29:00|60|3566817926|18213094960795507|56","4246083363|8|15:34:00|60|3398784409|11113094950795505|55","1183318172|13|15:29:00|120|3691015742|11613095660912420|44","4246083363|8|15:33:00|60|3398784409|16413094920795505|55","4246083363|8|15:32:00|120|3398784409|17913094970795505|55","1183318172|13|15:33:00|60|2974665047|6713095550912417|47","1917711411|11|15:30:00|60|2046468661|13313095500912409|57","4215555989|13|15:32:00|120|3957216179|12513095590912414|48","2998612092|11|15:32:00|60|2805226700|11513095420440174|56","1100607264|1|15:32:00|60|3747807733|10813092900912257|56","4246083363|8|15:31:00|60|3398784409|9513094940795505|55","4246083363|8|15:30:00|60|3398784409|11013094950795505|55","1183318172|13|15:31:00|120|2974665047|12013095660912424|47","4246083363|8|15:29:00|60|3398784409|16313094920795505|55","1745152818|6|15:34:00|60|3494453711|10613094510295944|57","1183318172|13|15:30:00|120|2974665047|11813095680912417|47","1917711411|11|15:29:00|60|2046468661|10913095440912409|57","1745152818|6|15:33:00|60|3494453711|10213094450295944|57","1745152818|6|15:32:00|60|3494453711|17813094540295944|57","1183318172|13|15:29:00|60|2974665047|12913095590912417|47","1745152818|6|15:31:00|60|3494453711|10613094440295944|57","1745152818|6|15:30:00|60|3494453711|10513094510295944|57","3265715605|2|15:33:00|60|1362116730|20213093810912330|55","896555290|10|15:33:00|60|352028051|9213164320917606|52","4215555989|13|15:30:00|120|3957216179|913095590912415|48","1745152818|6|15:29:00|60|3494453711|10113094450295944|57","1745152818|6|15:34:00|120|224821915|17513094460912370|54","3265715605|2|15:31:00|60|1362116730|20813093830912330|55","1745152818|6|15:33:00|60|224821915|10413094450912370|54","1745152818|6|15:32:00|60|224821915|213094480912371|54","3265715605|2|15:30:00|120|1362116730|10313093750095483|55","896555290|10|15:32:00|60|352028051|12313164380917610|52","1745152818|6|15:31:00|120|224821915|12513094500912370|54","1745152818|6|15:30:00|60|224821915|19013094520912370|54","3265715605|2|15:29:00|60|1362116730|20713093830912330|55","1745152818|6|15:29:00|60|224821915|10313094450912370|54","2649549238|5|15:34:00|120|1707647480|13713094370912363|58","3265715605|2|15:33:00|60|3117275467|20013093810095484|56","896555290|10|15:31:00|120|352028051|13513164360917606|52","4215555989|13|15:29:00|120|3957216179|7013095560912414|48","2998612092|11|15:31:00|120|2805226700|11013095490440174|56","2649549238|5|15:33:00|60|1707647480|12213094300912363|58","2649549238|5|15:32:00|60|1707647480|10913094380912363|58","3265715605|2|15:32:00|60|3117275467|21513093760095484|56","2649549238|5|15:31:00|120|1707647480|13613094370912363|58","2649549238|5|15:30:00|60|1707647480|14113094420912363|58","3265715605|2|15:31:00|60|3117275467|15213093790095484|56","896555290|10|15:30:00|120|352028051|12213164410917606|52","2649549238|5|15:29:00|120|1707647480|12113094300912363|58","2649549238|5|15:34:00|60|2540754978|13713094420094711|54","3265715605|2|15:30:00|60|3117275467|10113093750095484|56","2649549238|5|15:33:00|60|2540754978|18913094400094711|54","2649549238|5|15:32:00|60|2540754978|10613094380094711|54","3265715605|2|15:29:00|120|3117275467|20613093830912345|56","896555290|10|15:29:00|60|352028051|12213164380917610|52","10090157|13|15:33:00|120|271775302|7113095580912419|45","2649549238|5|15:31:00|60|2540754978|513094390912366|54","2649549238|5|15:29:00|60|2540754978|11813094300094711|54","3265715605|13|15:33:00|60|3325830777|7213095560912413|47","1742862628|3|15:34:00|60|891393435|14013093970095500|57","1742862628|3|15:33:00|60|891393435|12213093980095500|57","3265715605|13|15:32:00|60|3325830777|12713095590912413|47","3866913670|10|15:32:00|60|1771918760|7913164330917606|54","1742862628|3|15:32:00|120|891393435|8213093890095500|57","1742862628|3|15:31:00|60|891393435|10713093990095500|57","3265715605|13|15:31:00|60|3325830777|11613095680912413|47","1742862628|3|15:30:00|60|891393435|18513093960095500|57","1742862628|3|15:29:00|120|891393435|12113093980095500|57","3265715605|13|15:30:00|60|3325830777|7113095620912419|47","3866913670|10|15:31:00|60|1771918760|11813164410917606|54","10090157|13|15:32:00|120|271775302|11513095660912419|45","2998612092|11|15:30:00|60|2805226700|19813095530440174|56","1100607264|1|15:31:00|60|3747807733|21413092920912269|56","598631581|6|15:30:00|120|3871409354|10713094450295944|57","1742862628|3|15:34:00|60|3830653061|11313093980912354|57","1742862628|3|15:33:00|60|3830653061|19213093930912354|57","3265715605|13|15:29:00|60|3325830777|8713095630912419|47","1742862628|3|15:32:00|60|3830653061|10113093990912354|57","1742862628|3|15:31:00|60|3830653061|1613093960912353|57","3265715605|13|15:33:00|120|618858167|6713095550912416|47","3866913670|10|15:30:00|120|1771918760|13113164360917606|54","1742862628|3|15:30:00|60|3830653061|11213093980912354|57","1742862628|3|15:29:00|60|3830653061|19313094000912354|57","3265715605|13|15:32:00|60|618858167|11813095680912416|47","94248676|2|15:34:00|120|2858233536|20913093810912330|58","94248676|2|15:33:00|60|2858233536|11313093880095483|58","3265715605|13|15:31:00|60|618858167|13113095640912424|47","3866913670|10|15:29:00|60|1771918760|9613164400917614|54","10090157|13|15:30:00|120|271775302|12513095590912413|45","94248676|2|15:32:00|120|2858233536|313093810912327|58","94248676|2|15:31:00|60|2858233536|10713093750095483|58","3265715605|13|15:30:00|120|618858167|12913095590912416|47","94248676|2|15:30:00|60|2858233536|11213093880095483|58","94248676|2|15:29:00|60|2858233536|21613093770912330|58","3265715605|13|15:29:00|60|618858167|7313095560912416|47","3866913670|10|15:31:00|60|2932899145|10513164400296022|50","94248676|2|15:34:00|60|2503048334|14713093790095484|56","94248676|2|15:33:00|60|2503048334|19513093810095484|56","3614543683|2|15:33:00|60|3117275467|21313093770912330|56","94248676|2|15:32:00|60|2503048334|12913093860912349|56","94248676|2|15:31:00|120|2503048334|14613093790095484|56","3614543683|2|15:32:00|60|3117275467|10413093750095483|56","3866913670|10|15:30:00|60|2932899145|9113164340917608|50","10090157|13|15:29:00|60|271775302|11413095680912413|45","2998612092|11|15:29:00|60|2805226700|13213095500440174|56","94248676|2|15:30:00|60|2503048334|19413093810095484|56","94248676|2|15:29:00|60|2503048334|14513093790095484|56","3614543683|2|15:31:00|60|3117275467|10913093880095483|56","3566702934|1|15:33:00|60|3145751766|10513092900912257|56","3566702934|1|15:32:00|120|3145751766|21013092920912269|56","3614543683|2|15:30:00|60|3117275467|20213093810912330|56","3866913670|10|15:29:00|60|2932899145|9013164320917608|50","3566702934|1|15:31:00|60|3145751766|13713093000912282|56","3566702934|1|15:30:00|120|3145751766|13713844200955497|56","3614543683|2|15:29:00|60|3117275467|13713093860912348|56","3566702934|1|15:29:00|120|3145751766|10413092900912257|56","3566702934|1|15:34:00|60|598631581|10913092900095468|59","3614543683|2|15:33:00|60|244503826|10113093750095484|55","729999544|9|15:33:00|120|3499425610|18013095150912393|59","10090157|13|15:33:00|180|2274972608|7513095560912416|46","3566702934|1|15:33:00|60|598631581|20113092970912277|59","3566702934|1|15:32:00|60|598631581|21613092920912270|59","3614543683|2|15:32:00|120|244503826|19913093810095484|55","3566702934|1|15:31:00|60|598631581|10813092900095468|59","3566702934|1|15:30:00|120|598631581|20013092970912277|59","3614543683|2|15:31:00|120|244503826|15113093790095484|55","729999544|9|15:32:00|120|3499425610|18213095190912398|59","3566702934|1|15:29:00|120|598631581|21513092920912270|59","3690575038|13|15:34:00|60|2401493758|8913095650912419|52","3614543683|2|15:30:00|120|244503826|21313093760095484|55","3690575038|13|15:33:00|60|2401493758|13113095590912413|52","3690575038|13|15:32:00|120|2401493758|12213095660912419|52","3614543683|2|15:29:00|60|244503826|10013093750095484|55","729999544|9|15:31:00|60|3499425610|18813095120912393|59","10090157|13|15:32:00|180|2274972608|6813095550912416|46","552165531|3|15:33:00|60|645341577|10413093990912354|57","1100607264|1|15:30:00|60|3747807733|20113092970912276|56","3690575038|13|15:31:00|60|2401493758|6713095550912413|52","3690575038|13|15:30:00|60|2401493758|11913095680912413|52","3614543683|12|15:33:00|60|2075612487|17313647340942699|57","3690575038|13|15:29:00|60|2401493758|13013095590912413|52","3690575038|13|15:34:00|120|675269737|12613095590912417|44","3614543683|12|15:32:00|60|2075612487|14813647350942699|57","729999544|9|15:30:00|120|3499425610|17913095150912393|59","3690575038|13|15:33:00|60|675269737|12713095640912423|44","3690575038|13|15:32:00|60|675269737|11513095680912416|44","3614543683|12|15:31:00|60|2075612487|11913647310942699|57","3690575038|13|15:31:00|60|675269737|12613095640912424|44","3690575038|13|15:30:00|120|675269737|7113095580912424|44","3614543683|12|15:30:00|60|2075612487|10413647210942699|57","729999544|9|15:29:00|120|3499425610|19013095220912398|59","10090157|13|15:31:00|120|2274972608|13113095590912416|46","3690575038|13|15:29:00|120|675269737|12613095640912423|44","3683962764|12|15:34:00|60|695063120|15413647350942699|58","3614543683|12|15:29:00|60|2075612487|14713647350942699|57","3683962764|12|15:33:00|120|695063120|19213647320942699|58","3683962764|12|15:32:00|60|695063120|10813647210942699|58","3614543683|12|15:33:00|120|3838784219|18113647260942701|57","729999544|9|15:33:00|120|1374784815|8813095090912395|57","3683962764|12|15:31:00|60|695063120|15313647350942699|58","3683962764|12|15:30:00|60|695063120|17813647340942699|58","3614543683|12|15:32:00|120|3838784219|10113647230942707|57","3683962764|12|15:29:00|60|695063120|313647310942702|58","3683962764|12|15:34:00|120|44881418|19313647320942701|54","3614543683|12|15:31:00|120|3838784219|10113647290942700|57","729999544|9|15:32:00|120|1374784815|19413095120912395|57","2402899129|12|15:33:00|120|1282210726|18913647340942701|54","552165531|3|15:32:00|60|645341577|11613093980912354|57","3683962764|12|15:33:00|60|44881418|9813647230942707|54","3683962764|12|15:32:00|120|44881418|18013647340942701|54","3614543683|12|15:30:00|120|3838784219|10613647210942701|57","3683962764|12|15:31:00|120|44881418|17613647260942701|54","3683962764|12|15:30:00|120|44881418|15113647350942701|54","3614543683|12|15:29:00|120|3838784219|15613647350942701|57","729999544|9|15:31:00|120|1374784815|18313095150912395|57","3683962764|12|15:29:00|60|44881418|11613647310942701|54","3566817926|8|15:34:00|60|1994114096|10013094880795507|57","3987776330|2|15:33:00|120|1500021116|10713093750095483|57","3566817926|8|15:33:00|60|1994114096|17213094920795507|57","3566817926|8|15:32:00|60|1994114096|11413094950795507|57","3987776330|2|15:32:00|60|1500021116|11213093880095483|57","729999544|9|15:30:00|120|1374784815|13513095180912399|57","2402899129|12|15:32:00|120|1282210726|10813647210942701|54","3566817926|8|15:31:00|60|1994114096|18813094970795507|57","3566817926|8|15:30:00|60|1994114096|12613094980795507|57","3987776330|2|15:31:00|60|1500021116|20713093810912330|57","3566817926|8|15:29:00|60|1994114096|17113094920795507|57","3566817926|8|15:34:00|60|4246083363|12113094980795505|52","3987776330|2|15:30:00|60|1500021116|10613093750095483|57","729999544|9|15:29:00|120|1374784815|19313095120912395|57","3566817926|8|15:33:00|60|4246083363|17213094910795505|52","3566817926|8|15:32:00|120|4246083363|11113094950795505|52","3987776330|2|15:29:00|60|1500021116|11113093880095483|57","3566817926|8|15:31:00|60|4246083363|17913094970795505|52","3566817926|8|15:29:00|60|4246083363|12013094980795505|52","3987776330|2|15:33:00|120|2858233536|19613093810095484|53","482278776|8|15:33:00|60|2688858633|11613094950795505|58","2402899129|12|15:31:00|60|1282210726|10213647230942707|54","552165531|3|15:31:00|60|645341577|17413094020912354|57","1100607264|1|15:29:00|60|3747807733|21313092920912269|56","598631581|6|15:29:00|120|3871409354|12813094500295944|57","2085226230|5|15:31:00|240|2277425032|14413094370094711|57","2707323384|7|15:34:00|60|1100607264|10113094610651563|44","2707323384|7|15:33:00|60|1100607264|9513094650651570|44","3987776330|2|15:32:00|120|2858233536|20113093830912345|53","2707323384|7|15:32:00|120|1100607264|9213094590651562|44","2707323384|7|15:31:00|60|1100607264|713094650651581|44","3987776330|2|15:31:00|120|2858233536|14713093790095484|53","482278776|8|15:32:00|60|2688858633|17713094910795505|58","2707323384|7|15:29:00|120|1100607264|6613094630651570|44","2707323384|7|15:34:00|120|2924666242|6913094630912379|41","3987776330|2|15:30:00|120|2858233536|19513093810095484|53","2707323384|7|15:33:00|120|2924666242|5913094560651565|41","2707323384|7|15:32:00|120|2924666242|6413094570651565|41","3987776330|2|15:29:00|60|2858233536|14613093790095484|53","482278776|8|15:31:00|120|2688858633|16913094920795505|58","2402899129|12|15:30:00|120|1282210726|18213647260942701|54","2707323384|7|15:31:00|120|2924666242|10013094650912379|41","2707323384|7|15:30:00|120|2924666242|10613094670912379|41","3987776330|11|15:33:00|60|637614763|19713095460912411|56","2707323384|7|15:29:00|120|2924666242|10413094610651565|41","224821915|7|15:34:00|60|1314938315|10713094610651565|44","3987776330|11|15:32:00|60|637614763|20113095530440174|56","482278776|8|15:30:00|60|2688858633|17913094960795505|58","224821915|7|15:33:00|60|1314938315|7913094660912373|44","224821915|7|15:32:00|120|1314938315|10913094670912379|44","3987776330|11|15:31:00|120|637614763|13513095500440174|56","224821915|7|15:31:00|120|1314938315|10613094610912373|44","224821915|7|15:30:00|60|1314938315|6013094560651565|44","3987776330|11|15:30:00|120|637614763|11113095490440174|56","482278776|8|15:29:00|60|2688858633|10113094890795505|58","2402899129|12|15:29:00|120|1282210726|10213647290942700|54","552165531|3|15:30:00|60|645341577|1813093930912353|57","224821915|7|15:29:00|60|1314938315|10613094610651565|44","224821915|7|15:34:00|60|46216692|9813094610651562|42","3987776330|11|15:29:00|60|637614763|20013095530440174|56","224821915|7|15:33:00|60|46216692|6513094630651570|42","224821915|7|15:32:00|60|46216692|9113094590651563|42","3987776330|11|15:33:00|120|3714063920|11713095420912409|56","482278776|8|15:33:00|60|125894007|16713094920795507|55","224821915|7|15:31:00|60|46216692|9213094650651570|42","224821915|7|15:29:00|120|46216692|613094670912383|42","3987776330|11|15:32:00|60|3714063920|19913095530912409|56","224821915|6|15:34:00|120|1490149880|10413094450912370|58","224821915|6|15:33:00|60|1490149880|213094480912371|58","3987776330|11|15:31:00|120|3714063920|11713095430912409|56","482278776|8|15:32:00|60|125894007|10913094950795507|55","2402899129|12|15:33:00|120|41893941|14613647350942699|55","224821915|6|15:32:00|120|1490149880|17513094540912370|58","224821915|6|15:31:00|120|1490149880|19013094520912370|58","3987776330|11|15:30:00|60|3714063920|19813095530912409|56","224821915|6|15:30:00|60|1490149880|213094460912371|58","224821915|6|15:29:00|60|1490149880|513094520912371|58","3987776330|11|15:29:00|120|3714063920|11013095440912409|56","482278776|8|15:31:00|60|125894007|18013094970795507|55","224821915|6|15:34:00|60|1745152818|12313094500295944|57","224821915|6|15:33:00|60|1745152818|10613094510295944|57","3565805587|10|15:33:00|60|4025722812|8913164340917608|52","224821915|6|15:32:00|60|1745152818|10213094450295944|57","224821915|6|15:31:00|60|1745152818|17813094540295944|57","3565805587|10|15:32:00|60|4025722812|8813164320917608|52","482278776|8|15:30:00|60|125894007|12213094980795507|55","2402899129|12|15:32:00|120|41893941|10313647210942699|55","552165531|3|15:29:00|60|645341577|10313093990912354|57","1100607264|1|15:33:00|60|3827069729|21113092920912270|58","224821915|6|15:30:00|60|1745152818|12213094500295944|57","224821915|6|15:29:00|60|1745152818|10513094510295944|57","3565805587|10|15:31:00|60|4025722812|12613164410296022|52","224821915|5|15:34:00|60|2540754978|12313094300912363|57","224821915|5|15:33:00|120|2540754978|11013094380912363|57","3565805587|10|15:30:00|60|4025722812|10213164400296022|52","482278776|8|15:29:00|60|125894007|16613094920795507|55","224821915|5|15:32:00|120|2540754978|20013094400912363|57","224821915|5|15:31:00|120|2540754978|13713094370912363|57","3565805587|10|15:29:00|60|4025722812|12713164380296022|52","224821915|5|15:30:00|120|2540754978|12213094300912363|57","224821915|5|15:29:00|120|2540754978|10913094380912363|57","3565805587|10|15:33:00|60|560256723|12213164380917610|53","1033620933|7|15:33:00|60|635591290|513094610912377|41","2402899129|12|15:31:00|120|41893941|11713647310942699|55","604149420|4|15:34:00|60|590575000|10913864000942711|51","604149420|4|15:33:00|60|590575000|17313864020942711|51","3565805587|10|15:32:00|120|560256723|13413164360917606|53","604149420|4|15:31:00|60|590575000|10813864000942711|51","604149420|4|15:30:00|60|590575000|17213864020942711|51","3565805587|10|15:30:00|120|560256723|12113164410917606|53","1033620933|7|15:32:00|60|635591290|513094590912377|41","604149420|4|15:29:00|60|590575000|23613864010942711|51","604149420|4|15:34:00|120|44881418|24313864010942709|50","3565805587|10|15:29:00|60|560256723|13313164360917606|53","604149420|4|15:33:00|60|44881418|17413864020942709|50","604149420|4|15:32:00|60|44881418|10913864000942709|50","1098202862|10|15:33:00|120|3715978556|13613164390917606|52","1033620933|7|15:31:00|60|635591290|5913094560651562|41","2402899129|12|15:30:00|120|41893941|14513647350942699|55","552165531|3|15:33:00|120|4013515236|18213093960095500|55","604149420|4|15:30:00|120|44881418|17313864020942709|50","604149420|4|15:29:00|60|44881418|10813864000942709|50","1098202862|10|15:32:00|60|3715978556|11913164410917606|52","2858233536|2|15:34:00|60|94248676|20913093760095484|58","2858233536|2|15:33:00|60|94248676|14713093790095484|58","1098202862|10|15:30:00|120|3715978556|13513164390917606|52","1033620933|7|15:30:00|120|635591290|7813094660651570|41","2858233536|2|15:32:00|60|94248676|19513093810095484|58","2858233536|2|15:31:00|60|94248676|12913093860912349|58","1098202862|10|15:29:00|60|3715978556|9013164340917610|52","2858233536|2|15:30:00|60|94248676|14613093790095484|58","2858233536|2|15:29:00|60|94248676|19413093810095484|58","1098202862|10|15:33:00|60|2488289503|9013164320917608|51","1033620933|7|15:29:00|60|635591290|10413094610651562|41","2402899129|12|15:29:00|120|41893941|16913647340942699|55","2858233536|2|15:34:00|60|3987776330|313093810912327|58","2858233536|2|15:33:00|120|3987776330|21613093830912330|58","1098202862|10|15:32:00|60|2488289503|15113164390296022|51","2858233536|2|15:32:00|60|3987776330|10713093750095483|58","2858233536|2|15:31:00|60|3987776330|11213093880095483|58","1098202862|10|15:31:00|120|2488289503|13113164380296022|51","1033620933|7|15:33:00|120|3098817292|10213094670912373|46","2858233536|2|15:30:00|60|3987776330|21613093770912330|58","2858233536|2|15:29:00|120|3987776330|20713093810912330|58","1098202862|10|15:29:00|120|2488289503|10413164400296022|51","2401493758|13|15:34:00|120|3789783956|13113095590912413|51","2401493758|13|15:33:00|60|3789783956|13313095640912419|51","3253812998|9|15:33:00|120|2673577552|9813095820912393|58","1033620933|7|15:32:00|60|3098817292|10113094610651565|46","3827069729|11|15:32:00|0|1100607264|11513095420912409|53","552165531|3|15:32:00|60|4013515236|20913094000095500|55","1100607264|1|15:32:00|60|3827069729|10513092900095468|58","598631581|2|15:33:00|120|475845330|19913093810912330|55","2401493758|13|15:32:00|120|3789783956|6713095550912413|51","2401493758|13|15:31:00|60|3789783956|11913095680912413|51","3253812998|9|15:32:00|60|2673577552|2313095120912389|58","2401493758|13|15:30:00|120|3789783956|13013095590912413|51","2401493758|13|15:29:00|60|3789783956|13213095640912419|51","3253812998|9|15:31:00|60|2673577552|2113095150912389|58","1033620933|7|15:30:00|120|3098817292|10213094670912379|46","2401493758|13|15:34:00|60|3690575038|8713095630912423|44","2401493758|13|15:33:00|120|3690575038|11513095680912417|44","3253812998|9|15:30:00|120|2673577552|10213095160912398|58","2401493758|13|15:32:00|60|3690575038|12713095640912423|44","2401493758|13|15:31:00|60|3690575038|12613095590912416|44","3253812998|9|15:29:00|120|2673577552|18713095120912393|58","1033620933|7|15:29:00|120|3098817292|9613094650912379|46","3827069729|11|15:31:00|60|1100607264|10913095440912409|53","2401493758|13|15:30:00|120|3690575038|11513095680912416|44","2401493758|13|15:29:00|60|3690575038|7113095580912424|44","3253812998|9|15:33:00|60|3427371663|9513095100912399|58","695063120|12|15:34:00|60|3683962764|18113647340942701|56","695063120|12|15:33:00|120|3683962764|17713647260942701|56","3253812998|9|15:32:00|60|3427371663|19513095120912395|58","20785767|9|15:33:00|120|3217152725|19813095120912395|57","695063120|12|15:32:00|60|3683962764|11713647310942701|56","695063120|12|15:31:00|120|3683962764|9813647230942707|56","3253812998|9|15:31:00|60|3427371663|18413095150912395|58","695063120|12|15:30:00|60|3683962764|17613647260942701|56","695063120|12|15:29:00|60|3683962764|15113647350942701|56","3253812998|9|15:30:00|60|3427371663|8813095090912395|58","20785767|9|15:32:00|60|3217152725|12113095170912399|57","3827069729|11|15:30:00|0|1100607264|11513095430912409|53","552165531|3|15:31:00|60|4013515236|11813093980095500|55","695063120|12|15:34:00|60|2488289503|17313647260942699|59","695063120|12|15:33:00|60|2488289503|10813647210942699|59","3253812998|9|15:29:00|60|3427371663|19413095120912395|58","695063120|12|15:32:00|60|2488289503|15313647350942699|59","695063120|12|15:31:00|60|2488289503|17813647340942699|59","3253812998|10|15:33:00|120|2702846096|12713164380296022|53","20785767|9|15:31:00|60|3217152725|18613095150912395|57","695063120|12|15:30:00|60|2488289503|313647310942702|59","695063120|12|15:29:00|60|2488289503|15213647350942699|59","3253812998|10|15:32:00|120|2702846096|8813164340917608|53","2702846096|10|15:34:00|180|980642687|8813164340917608|53","2702846096|10|15:33:00|120|980642687|8713164320917608|53","3253812998|10|15:31:00|120|2702846096|8713164320917608|53","20785767|9|15:30:00|120|3217152725|19713095120912395|57","3827069729|11|15:29:00|60|1100607264|13213095500912409|53","2702846096|10|15:32:00|180|980642687|713164340917612|53","2702846096|10|15:31:00|180|980642687|10113164400296022|53","3253812998|10|15:30:00|120|2702846096|12613164380296022|53","2702846096|10|15:30:00|180|980642687|13913164360296022|53","2702846096|10|15:29:00|180|980642687|8713164340917608|53","3253812998|10|15:29:00|120|2702846096|10113164400296022|53","20785767|9|15:29:00|60|3217152725|13713095180912399|57","4197757394|9|15:34:00|60|3524584243|20113095120912395|59","4197757394|9|15:33:00|60|3524584243|18913095150912395|59","2496888016|8|15:33:00|60|4290789948|10113094890795505|54","4197757394|9|15:32:00|60|3524584243|20313095220912399|59","4197757394|9|15:31:00|60|3524584243|20013095120912395|59","2496888016|8|15:32:00|120|4290789948|513094970912387|54","20785767|9|15:33:00|120|4248981646|713095170912389|58","3827069729|11|15:33:00|60|2046468661|20413095530440174|58","552165531|3|15:30:00|120|4013515236|13513093970095500|55","1100607264|1|15:31:00|60|3827069729|21013092920912270|58","4197757394|9|15:30:00|60|3524584243|9113095090912395|59","4197757394|9|15:29:00|120|3524584243|18813095150912395|59","2496888016|8|15:31:00|60|4290789948|17813094960795505|54","4197757394|9|15:34:00|60|645341577|9213095090912393|57","4197757394|9|15:33:00|60|645341577|17513095190912398|57","2496888016|8|15:30:00|60|4290789948|18513094970795505|54","20785767|9|15:32:00|60|4248981646|17713095150912393|58","4197757394|9|15:32:00|60|645341577|17413095150912393|57","4197757394|9|15:31:00|120|645341577|9513095820912393|57","2496888016|8|15:29:00|60|4290789948|11413094950795505|54","4197757394|9|15:30:00|60|645341577|18213095120912393|57","4197757394|9|15:29:00|60|645341577|2013095150912389|57","2496888016|8|15:33:00|120|2635662580|16813094920795507|54","20785767|9|15:31:00|60|4248981646|18513095120912393|58","3827069729|11|15:32:00|60|2046468661|22613095540440174|58","1994114096|8|15:33:00|60|3566817926|12113094980795505|53","1994114096|8|15:32:00|60|3566817926|17213094910795505|53","2496888016|8|15:32:00|120|2635662580|18213094970795507|54","1994114096|8|15:31:00|60|3566817926|11113094950795505|53","1994114096|8|15:30:00|120|3566817926|17213094960795505|53","2496888016|8|15:31:00|120|2635662580|11013094950795507|54","20785767|9|15:30:00|120|4248981646|9313095090912393|58","1994114096|8|15:34:00|60|891393435|17213094920795507|56","1994114096|8|15:33:00|60|891393435|11413094950795507|56","2496888016|8|15:30:00|60|2635662580|17513094910795507|54","1994114096|8|15:32:00|60|891393435|18813094970795507|56","1994114096|8|15:31:00|60|891393435|12613094980795507|56","2496888016|8|15:29:00|120|2635662580|16713094920795507|54","20785767|9|15:29:00|60|4248981646|17613095150912393|58","3827069729|11|15:31:00|60|2046468661|11813095420440174|58","552165531|3|15:29:00|60|4013515236|10413093990095500|55","1994114096|8|15:30:00|60|891393435|17113094920795507|56","1994114096|8|15:29:00|60|891393435|11313094950795507|56","2096931515|7|15:33:00|60|2577613756|10413094610651562|41","1490149880|6|15:34:00|120|224821915|10313094450295944|56","1490149880|6|15:32:00|60|224821915|10713094440295944|56","2096931515|7|15:32:00|60|2577613756|9513094590651562|41","20785767|6|15:33:00|60|2465875946|12813094500295944|57","1490149880|6|15:31:00|120|224821915|10613094510295944|56","1490149880|6|15:30:00|120|224821915|10213094450295944|56","2096931515|7|15:31:00|60|2577613756|5913094560651563|41","1490149880|6|15:29:00|120|224821915|17813094540295944|56","1490149880|6|15:34:00|120|3180795927|213094480912371|58","2096931515|7|15:30:00|60|2577613756|513094590912381|41","20785767|6|15:32:00|60|2465875946|11013094510295944|57","3827069729|11|15:30:00|60|2046468661|14513095520440174|58","1490149880|6|15:33:00|60|3180795927|19013094520912370|58","1490149880|6|15:32:00|60|3180795927|10313094450912370|58","2096931515|7|15:29:00|60|2577613756|10413094670651570|41","1490149880|6|15:31:00|60|3180795927|213094460912371|58","1490149880|6|15:30:00|120|3180795927|513094520912371|58","2096931515|7|15:33:00|60|882210155|5713094560651565|43","20785767|6|15:31:00|120|2465875946|18513094540295944|57","1490149880|6|15:29:00|60|3180795927|13413094550912370|58","3179893028|5|15:34:00|120|3398784409|13613094370912363|59","2096931515|7|15:32:00|60|882210155|10313094670912379|43","3179893028|5|15:33:00|60|3398784409|12113094300912363|59","3179893028|5|15:32:00|120|3398784409|19713094400912363|59","2096931515|7|15:31:00|60|882210155|6213094570651565|43","20785767|6|15:30:00|60|2465875946|10613094450295944|57","3827069729|11|15:29:00|60|2046468661|11213095490440174|58","552165531|14|15:33:00|120|1065328272|18513164420912430|59","1100607264|1|15:30:00|60|3827069729|19513092970912277|58","598631581|2|15:32:00|120|475845330|20513093830912330|55","2085226230|5|15:30:00|180|2277425032|10413094320094711|57","3873492639|2|15:33:00|120|475845330|20413093810095484|57","2532042518|1|15:33:00|60|2920343104|11313092900912257|58","3179893028|5|15:31:00|120|3398784409|10813094380912363|59","3179893028|5|15:30:00|120|3398784409|14013094420912363|59","2096931515|7|15:30:00|60|882210155|9413094590651565|43","3179893028|5|15:29:00|120|3398784409|12013094300912363|59","3179893028|5|15:34:00|120|1707647480|613094420912365|55","2096931515|7|15:29:00|60|882210155|10213094670912373|43","20785767|6|15:29:00|120|2465875946|12713094500295944|57","3179893028|5|15:33:00|120|1707647480|613094390912366|55","3179893028|5|15:32:00|60|1707647480|13513094370094711|55","3129038787|6|15:33:00|60|2635662580|10613094450295944|57","3179893028|5|15:31:00|120|1707647480|13713094420094711|55","3179893028|5|15:30:00|120|1707647480|18913094400094711|55","3129038787|6|15:32:00|60|2635662580|18413094540295944|57","20785767|6|15:33:00|60|1950730894|313094520912371|54","3827069729|1|15:33:00|120|1100607264|20313092970912276|56","3179893028|5|15:29:00|60|1707647480|10613094380094711|55","590575000|4|15:34:00|60|977856475|17313864020942711|52","3129038787|6|15:31:00|60|2635662580|10913094510295944|57","590575000|4|15:32:00|60|977856475|10813864000942711|52","590575000|4|15:31:00|120|977856475|17213864020942711|52","3129038787|6|15:30:00|60|2635662580|11013094440295944|57","20785767|6|15:32:00|60|1950730894|9913094450912370|54","590575000|4|15:30:00|60|977856475|23613864010942711|52","590575000|4|15:29:00|60|977856475|10713864000942711|52","3129038787|6|15:29:00|60|2635662580|10513094450295944|57","590575000|4|15:34:00|60|604149420|17513864020942709|51","590575000|4|15:33:00|120|604149420|11013864000942709|51","3129038787|6|15:33:00|60|499775835|113094480912371|52","20785767|6|15:31:00|60|1950730894|10413094510912370|54","3827069729|1|15:32:00|60|1100607264|21513092920912269|56","552165531|14|15:32:00|60|1065328272|22013095800912430|59","590575000|4|15:32:00|120|604149420|25513864030942709|51","590575000|4|15:31:00|120|604149420|17413864020942709|51","3129038787|6|15:32:00|120|499775835|113094460912371|52","590575000|4|15:30:00|120|604149420|10913864000942709|51","590575000|4|15:29:00|60|604149420|17313864020942709|51","3129038787|6|15:30:00|60|499775835|12013094500912370|52","20785767|6|15:30:00|60|1950730894|11913094500912370|54","3514016666|3|15:34:00|120|891393435|11413093980912354|56","3514016666|3|15:33:00|120|891393435|10213093990912354|56","3129038787|6|15:29:00|60|499775835|313094520912371|52","3514016666|3|15:32:00|120|891393435|19313093930912354|56","3514016666|3|15:31:00|60|891393435|11313093980912354|56","3907763713|5|15:33:00|60|4065628367|13513094420912363|57","20785767|6|15:29:00|60|1950730894|313094550912369|54","3827069729|1|15:31:00|120|1100607264|20213092970912276|56","3514016666|3|15:30:00|60|891393435|19213093930912354|56","3514016666|3|15:29:00|60|891393435|10113093990912354|56","3907763713|5|15:32:00|60|4065628367|10413094380912363|57","3514016666|3|15:34:00|60|1917711411|18813094020095500|56","3514016666|3|15:33:00|60|1917711411|10713093990095500|56","3907763713|5|15:30:00|60|4065628367|13413094420912363|57","53962395|5|15:33:00|120|4198988390|613094400912366|58","3514016666|3|15:32:00|60|1917711411|12113093980095500|56","3514016666|3|15:31:00|60|1917711411|18713094020095500|56","3907763713|5|15:29:00|60|4065628367|11513094300912363|57","3514016666|3|15:30:00|60|1917711411|13813093970095500|56","3514016666|3|15:29:00|60|1917711411|10613093990095500|56","3907763713|5|15:33:00|60|2738613188|913094390912366|59","53962395|5|15:32:00|120|4198988390|10313094320094711|58","3827069729|1|15:30:00|120|1100607264|10813092900912257|56","552165531|14|15:31:00|120|1065328272|23913164430912430|59","1100607264|1|15:29:00|60|3827069729|10413092900095468|58","2877706505|1|15:34:00|120|2734436604|21613092920912270|59","2877706505|1|15:33:00|60|2734436604|10813092900095468|59","3907763713|5|15:32:00|120|2738613188|10213094320094711|59","2877706505|1|15:32:00|60|2734436604|21513092920912270|59","2877706505|1|15:31:00|60|2734436604|20413093030912289|59","3907763713|5|15:31:00|120|2738613188|14213094420094711|59","53962395|5|15:31:00|120|4198988390|11213094380094711|58","2877706505|1|15:30:00|60|2734436604|10713092900095468|59","2877706505|1|15:29:00|120|2734436604|20313093030912289|59","3907763713|5|15:30:00|60|2738613188|14013094370094711|59","2877706505|1|15:34:00|60|598631581|10613092900912257|57","2877706505|1|15:33:00|60|598631581|21113092920912269|57","3907763713|5|15:29:00|120|2738613188|513094400912366|59","53962395|5|15:30:00|120|4198988390|14313094420094711|58","3827069729|1|15:29:00|60|1100607264|20113092970912276|56","2877706505|1|15:32:00|120|598631581|19913092970912276|57","2877706505|1|15:30:00|120|598631581|10513092900912257|57","1393958362|7|15:33:00|120|1876271269|613094650912383|46","2877706505|1|15:29:00|60|598631581|19813092970912276|57","3789783956|13|15:34:00|120|44881418|6713095550912413|52","1393958362|7|15:32:00|120|1876271269|5813094560651562|46","53962395|5|15:29:00|60|4198988390|913094390912366|58","3789783956|13|15:33:00|120|44881418|12213095660912420|52","3789783956|13|15:32:00|120|44881418|11913095680912413|52","1393958362|7|15:31:00|120|1876271269|213094660651581|46","3789783956|13|15:31:00|120|44881418|12113095660912419|52","3789783956|13|15:30:00|120|44881418|13213095640912419|52","1393958362|7|15:29:00|120|1876271269|10213094610651562|46","53962395|5|15:33:00|120|2258265757|11513094300912363|57","3827069729|1|15:33:00|120|1877754383|10513092900095468|59","552165531|14|15:30:00|120|1065328272|18413164420912430|59","3789783956|13|15:29:00|120|44881418|8813095650912419|52","3789783956|13|15:34:00|60|2401493758|12813095640912423|48","1393958362|7|15:33:00|60|2692076464|9513094590651565|45","3789783956|13|15:33:00|120|2401493758|6513095550912416|48","3789783956|13|15:32:00|60|2401493758|11513095680912417|48","1393958362|7|15:32:00|60|2692076464|10413094670912379|45","53962395|5|15:32:00|120|2258265757|10313094380912363|57","3789783956|13|15:31:00|60|2401493758|7213095580912423|48","3789783956|13|15:30:00|60|2401493758|7113095560912416|48","1393958362|7|15:31:00|60|2692076464|9813094650912379|45","3789783956|13|15:29:00|60|2401493758|11513095680912416|48","3180795927|6|15:34:00|120|1490149880|10713094510295944|57","1393958362|7|15:30:00|60|2692076464|6713094630912379|45","53962395|5|15:31:00|120|2258265757|13313094420912363|57","3827069729|1|15:32:00|60|1877754383|21013092920912270|59","3180795927|6|15:33:00|60|1490149880|10313094450295944|57","3180795927|6|15:31:00|60|1490149880|12313094500295944|57","1393958362|7|15:29:00|60|2692076464|10213094610651565|45","3180795927|6|15:30:00|60|1490149880|10613094510295944|57","3180795927|6|15:29:00|60|1490149880|10213094450295944|57","1393958362|5|15:33:00|120|2058569149|10613094380912363|53","53962395|5|15:30:00|60|2258265757|11413094300912363|57","3180795927|6|15:34:00|60|3616975530|19013094520912370|54","3180795927|6|15:33:00|60|3616975530|10313094450912370|54","1393958362|5|15:32:00|120|2058569149|13213094370912363|53","3180795927|6|15:32:00|120|3616975530|213094460912371|54","3180795927|6|15:30:00|60|3616975530|13413094550912370|54","1393958362|5|15:30:00|120|2058569149|19213094340912363|53","53962395|5|15:29:00|120|2258265757|9413094320912364|57","3827069729|1|15:31:00|60|1877754383|19513092970912277|59","552165531|14|15:29:00|60|1065328272|21913095800912430|59","4152748969|10|15:33:00|120|980642687|12413164410917606|51","598631581|2|15:31:00|120|475845330|10113093750095483|55","3180795927|6|15:29:00|60|3616975530|10213094450912370|54","977856475|4|15:34:00|60|3715978556|23713864010942711|57","1393958362|5|15:29:00|120|2058569149|10513094380912363|53","977856475|4|15:33:00|60|3715978556|10813864000942711|57","977856475|4|15:32:00|60|3715978556|24713864030942711|57","1393958362|5|15:33:00|60|1727514119|20613094330094711|57","1293807658|4|15:33:00|60|1721597436|18213864020942709|53","977856475|4|15:31:00|120|3715978556|23613864010942711|57","977856475|4|15:30:00|60|3715978556|10713864000942711|57","1393958362|5|15:32:00|120|1727514119|12313094300094711|57","977856475|4|15:29:00|60|3715978556|23513864010942711|57","977856475|4|15:34:00|60|590575000|24413864010942709|57","1393958362|5|15:31:00|60|1727514119|20513094330094711|57","1293807658|4|15:32:00|60|1721597436|26413864030942709|53","3827069729|1|15:30:00|60|1877754383|10413092900095468|59","977856475|4|15:33:00|60|590575000|25613864030942709|57","977856475|4|15:32:00|60|590575000|11013864000942709|57","1393958362|5|15:30:00|120|1727514119|713094390912366|57","977856475|4|15:31:00|60|590575000|25513864030942709|57","977856475|4|15:30:00|60|590575000|17413864020942709|57","1393958362|5|15:29:00|120|1727514119|12213094300094711|57","1293807658|4|15:31:00|120|1721597436|11513864000942709|53","977856475|4|15:29:00|60|590575000|10913864000942709|57","1500021116|2|15:34:00|120|2738613188|20813093810912330|57","1393958362|4|15:33:00|60|2826028950|11413864000942709|54","1500021116|2|15:33:00|120|2738613188|11213093880095483|57","1500021116|2|15:32:00|60|2738613188|20713093810912330|57","1393958362|4|15:32:00|60|2826028950|24913864010942709|54","1293807658|4|15:30:00|60|1721597436|26313864030942709|53","3827069729|1|15:29:00|60|1877754383|19713093030912289|59","552165531|13|15:33:00|120|3524584243|8913095630912423|47","1500021116|2|15:31:00|60|2738613188|10613093750095483|57","1500021116|2|15:30:00|60|2738613188|11113093880095483|57","1393958362|4|15:31:00|60|2826028950|26113864030942709|54","1500021116|2|15:29:00|120|2738613188|15913093790912333|57","1500021116|2|15:34:00|60|3987776330|9913093750095484|56","1393958362|4|15:30:00|60|2826028950|11313864000942709|54","1293807658|4|15:29:00|60|1721597436|11413864000942709|53","1500021116|2|15:33:00|120|3987776330|21013093760095484|56","1500021116|2|15:32:00|120|3987776330|14813093790095484|56","1393958362|4|15:29:00|60|2826028950|26013864030942709|54","1500021116|2|15:31:00|120|3987776330|20913093760095484|56","1500021116|2|15:30:00|60|3987776330|14713093790095484|56","1393958362|4|15:33:00|60|2058569149|10413864000942711|50","1293807658|4|15:33:00|60|1282210726|16513864020942711|49","980642687|10|15:33:00|180|3427371663|8313164330917606|50","1500021116|2|15:29:00|60|3987776330|19513093810095484|56","2120668118|12|15:34:00|60|2488289503|9913647230942707|58","1393958362|4|15:31:00|120|2058569149|16613864020942711|50","2120668118|12|15:33:00|60|2488289503|15313647350942701|58","2120668118|12|15:32:00|60|2488289503|18813647280942701|58","1393958362|4|15:30:00|60|2058569149|10313864000942711|50","1293807658|4|15:32:00|60|1282210726|23813864030942711|49","2120668118|12|15:31:00|60|2488289503|17713647260942701|58","2120668118|12|15:30:00|60|2488289503|11713647310942701|58","1393958362|4|15:29:00|60|2058569149|16513864020942711|50","2120668118|12|15:29:00|60|2488289503|9813647230942707|58","2120668118|12|15:34:00|60|3481964895|15313647350942699|57","1126076862|3|15:33:00|120|1282474756|10513093990912354|56","1293807658|4|15:31:00|60|1282210726|10213864000942711|49","980642687|10|15:32:00|120|3427371663|12413164380917610|50","552165531|13|15:32:00|120|3524584243|7313095560912416|47","4152748969|10|15:32:00|120|980642687|13613164360917606|51","2120668118|12|15:33:00|60|3481964895|17213647260942699|57","2120668118|12|15:32:00|60|3481964895|313647310942702|57","1126076862|3|15:32:00|120|1282474756|13313093970912354|56","2120668118|12|15:31:00|60|3481964895|10713647210942699|57","2120668118|12|15:30:00|60|3481964895|18913647320942699|57","1126076862|3|15:31:00|120|1282474756|11713093980912354|56","1293807658|4|15:30:00|60|1282210726|23713864030942711|49","2120668118|12|15:29:00|60|3481964895|12113647310942699|57","3720819819|10|15:34:00|60|3253812998|12613164410296022|53","1126076862|3|15:30:00|60|1282474756|17513094020912354|56","3720819819|10|15:33:00|120|3253812998|10213164400296022|53","3720819819|10|15:32:00|60|3253812998|12713164380296022|53","1126076862|3|15:29:00|60|1282474756|10413093990912354|56","1293807658|4|15:29:00|60|1282210726|16313864020942711|49","980642687|10|15:31:00|120|3427371663|12313164410917606|50","3720819819|10|15:31:00|60|3253812998|8813164340917608|53","3720819819|10|15:30:00|60|3253812998|8713164320917608|53","1126076862|3|15:33:00|60|469044143|10413093990095500|56","3720819819|10|15:29:00|60|3253812998|12613164380296022|53","1836707069|9|15:34:00|60|2734436604|20013095120912395|57","1126076862|3|15:32:00|60|469044143|18313094020095500|56","3412286137|3|15:33:00|120|4091065876|17613093960912354|58","1836707069|9|15:33:00|60|2734436604|9113095090912395|57","1836707069|9|15:32:00|60|2734436604|18813095150912395|57","1126076862|3|15:31:00|60|469044143|11713093980095500|56","1836707069|9|15:31:00|60|2734436604|19913095120912395|57","1836707069|9|15:30:00|60|2734436604|12213095170912399|57","1126076862|3|15:30:00|60|469044143|20313093930095500|56","3412286137|3|15:32:00|60|4091065876|13413093970912354|58","980642687|10|15:30:00|120|3427371663|9213164320917606|50","552165531|13|15:31:00|120|3524584243|7213095620912423|47","1836707069|9|15:29:00|60|2734436604|20113095220912399|57","1836707069|9|15:34:00|120|3524584243|10013095160912398|58","1126076862|3|15:29:00|60|469044143|10313093990095500|56","1836707069|9|15:33:00|60|3524584243|313095820912389|58","1836707069|9|15:32:00|60|3524584243|17513095150912393|58","1282474756|3|15:33:00|60|4013515236|11713093980912354|57","3412286137|3|15:31:00|120|4091065876|1913093930912353|58","1836707069|9|15:31:00|60|3524584243|9213095090912393|58","1836707069|9|15:30:00|60|3524584243|17513095190912398|58","1282474756|3|15:32:00|120|4013515236|17413093960912354|57","1836707069|9|15:29:00|60|3524584243|17413095150912393|58","3616975530|6|15:34:00|120|3180795927|19713094520295944|57","1282474756|3|15:31:00|120|4013515236|17513094020912354|57","3412286137|3|15:30:00|60|4091065876|10513093990912354|58","980642687|10|15:33:00|120|4152748969|13913164360296022|52","3616975530|6|15:33:00|60|3180795927|10713094510295944|57","3616975530|6|15:32:00|60|3180795927|10313094450295944|57","1282474756|3|15:30:00|120|4013515236|10413093990912354|57","3616975530|6|15:30:00|60|3180795927|9313094430295944|57","3616975530|6|15:29:00|60|3180795927|10613094510295944|57","1282474756|3|15:29:00|120|4013515236|11613093980912354|57","3412286137|3|15:29:00|60|4091065876|17613094020912354|58","3616975530|6|15:34:00|60|3519554763|213094460912371|58","3616975530|6|15:33:00|60|3519554763|513094520912371|58","1282474756|3|15:33:00|120|1126076862|11813093980095500|55","3616975530|6|15:31:00|60|3519554763|13413094550912370|58","3616975530|6|15:30:00|60|3519554763|10213094450912370|58","1282474756|3|15:32:00|60|1126076862|10413093990095500|55","3412286137|3|15:33:00|60|3638581237|18213094020095500|54","980642687|10|15:32:00|60|4152748969|8713164340917608|52","552165531|13|15:30:00|120|3524584243|11813095660912423|47","4152748969|10|15:31:00|120|980642687|8313164330917606|51","598631581|2|15:30:00|120|475845330|19813093810912330|55","2085226230|5|15:29:00|180|2277425032|11313094380094711|57","3616975530|6|15:29:00|60|3519554763|9413094430912370|58","882992124|5|15:34:00|60|3398784409|10813094380094711|57","1282474756|3|15:31:00|60|1126076862|18313094020095500|55","882992124|5|15:33:00|60|3398784409|12113094300094711|57","882992124|5|15:32:00|60|3398784409|13613094370094711|57","1282474756|3|15:30:00|60|1126076862|11713093980095500|55","3412286137|3|15:32:00|60|3638581237|313093970912352|54","882992124|5|15:31:00|60|3398784409|613094420912365|57","882992124|5|15:30:00|60|3398784409|613094390912366|57","1282474756|3|15:29:00|120|1126076862|18013093960095500|55","882992124|5|15:29:00|60|3398784409|13513094370094711|57","882992124|5|15:34:00|60|1128226880|10813094380912363|58","1282474756|2|15:33:00|60|1362116730|15413093790095484|56","3412286137|3|15:31:00|120|3638581237|11613093980095500|54","980642687|10|15:31:00|120|4152748969|12413164410296022|52","882992124|5|15:33:00|60|1128226880|14013094420912363|58","882992124|5|15:32:00|60|1128226880|12013094300912363|58","1282474756|2|15:31:00|60|1362116730|10213093750095484|56","882992124|5|15:31:00|60|1128226880|13413094370912363|58","882992124|5|15:30:00|60|1128226880|10713094380912363|58","1282474756|2|15:30:00|120|1362116730|15313093790095484|56","3412286137|3|15:30:00|60|3638581237|18113094020095500|54","882992124|5|15:29:00|60|1128226880|11913094300912363|58","3481964895|12|15:34:00|120|2120668118|15413647350942701|56","1282474756|2|15:29:00|60|1362116730|21513093760095484|56","3481964895|12|15:33:00|60|2120668118|9913647230942707|56","3481964895|12|15:32:00|120|2120668118|10413647210942701|56","1282474756|2|15:33:00|120|48157230|10313093750095483|56","2334959990|2|15:33:00|60|2120950107|21213093770095484|58","980642687|10|15:30:00|60|4152748969|8613164320917608|52","552165531|13|15:29:00|120|3524584243|11713095680912416|47","3481964895|12|15:30:00|60|2120668118|17713647260942701|56","3481964895|12|15:29:00|60|2120668118|11713647310942701|56","1282474756|2|15:32:00|60|48157230|21513093760912330|56","3481964895|12|15:34:00|60|2904169401|17213647260942699|58","3481964895|12|15:33:00|60|2904169401|313647310942702|58","1282474756|2|15:31:00|60|48157230|20013093810912330|56","2334959990|2|15:32:00|60|2120950107|15513093790095484|58","3481964895|12|15:32:00|60|2904169401|10713647210942699|58","3481964895|12|15:31:00|60|2904169401|18913647320942699|58","1282474756|2|15:30:00|60|48157230|513093760912327|56","3481964895|12|15:30:00|60|2904169401|12113647310942699|58","3481964895|12|15:29:00|60|2904169401|17613647340942699|58","1282474756|2|15:29:00|120|48157230|20613093830912330|56","2334959990|2|15:31:00|120|2120950107|10313093750095484|58","980642687|10|15:29:00|60|4152748969|7813164370296022|52","2734436604|9|15:34:00|60|1836707069|17613095150912393|57","2734436604|9|15:33:00|120|1836707069|2213095120912389|57","209994619|7B|15:31:00|120|2610627973|8113094790651584|41","2734436604|9|15:32:00|60|1836707069|313095820912389|57","2734436604|9|15:31:00|60|1836707069|17513095150912393|57","209994619|7B|15:30:00|120|2610627973|11713094800651584|41","2334959990|2|15:30:00|60|2120950107|20113093810095484|58","2734436604|9|15:30:00|60|1836707069|9213095090912393|57","2734436604|9|15:29:00|60|1836707069|17513095190912398|57","209994619|7B|15:29:00|120|2610627973|10713094810651584|41","2734436604|9|15:34:00|120|3224579423|9113095090912395|59","2734436604|9|15:33:00|120|3224579423|18813095150912395|59","209994619|11|15:33:00|60|3468280332|313095530912412|54","2334959990|2|15:29:00|60|2120950107|15413093790095484|58","3882868379|7|15:33:00|60|3989473618|9913094610651562|39","552165531|13|15:33:00|120|618858167|7213095620912419|48","4152748969|10|15:30:00|120|980642687|12413164380917610|51","2734436604|9|15:32:00|120|3224579423|19913095120912395|59","2734436604|9|15:31:00|120|3224579423|12213095170912399|59","209994619|11|15:32:00|60|3468280332|11813095430912409|54","2734436604|9|15:30:00|60|3224579423|18713095150912395|59","2734436604|9|15:29:00|120|3224579423|19813095120912395|59","209994619|11|15:31:00|60|3468280332|13613095500912409|54","2334959990|2|15:33:00|120|598631581|513093760912327|56","2734436604|1|15:34:00|120|2877706505|21213092920912269|57","2734436604|1|15:33:00|60|2877706505|22213093010912284|57","209994619|11|15:30:00|60|3468280332|11113095440912409|54","2734436604|1|15:32:00|120|2877706505|10613092900912257|57","2734436604|1|15:31:00|60|2877706505|19913092970912276|57","209994619|11|15:29:00|60|3468280332|19913095530912409|54","2334959990|2|15:32:00|60|598631581|19913093810912330|56","3882868379|7|15:32:00|120|3989473618|5613094560651562|39","2734436604|1|15:29:00|60|2877706505|10513092900912257|57","2734436604|1|15:34:00|120|2669665705|10813092900095468|59","209994619|11|15:33:00|60|595945906|11613095420440174|58","2734436604|1|15:33:00|120|2669665705|21513092920912270|59","2734436604|1|15:32:00|60|2669665705|19913092970912277|59","209994619|11|15:32:00|60|595945906|13413095500440174|58","2334959990|2|15:31:00|60|598631581|20513093830912330|56","2734436604|1|15:31:00|60|2669665705|10713092900095468|59","2734436604|1|15:30:00|60|2669665705|13813093000912283|59","209994619|11|15:31:00|60|595945906|11613095430912411|58","2734436604|1|15:29:00|60|2669665705|21313092920912270|59","3653339166|9|15:34:00|60|1561893142|19113095150912395|57","209994619|11|15:30:00|60|595945906|14313095520440174|58","2334959990|2|15:30:00|60|598631581|10613093880095483|56","3882868379|7|15:31:00|60|3989473618|9113094590651562|39","552165531|13|15:32:00|60|618858167|11813095660912419|48","3653339166|9|15:33:00|60|1561893142|9613095820912395|57","3653339166|9|15:32:00|60|1561893142|12513095170912399|57","209994619|11|15:29:00|60|595945906|11013095490440174|58","3653339166|9|15:31:00|60|1561893142|20213095120912395|57","3653339166|9|15:30:00|60|1561893142|313095100912401|57","1194974051|6|15:33:00|60|946374679|10113094450295944|55","2334959990|2|15:29:00|120|598631581|10113093750095483|56","3653339166|9|15:29:00|60|1561893142|9213095090912395|57","3653339166|9|15:34:00|120|3300801987|12113095170912398|55","1194974051|6|15:32:00|120|946374679|17713094540295944|55","3653339166|9|15:33:00|60|3300801987|18113095120912393|55","3653339166|9|15:32:00|60|3300801987|17313095150912393|55","1194974051|6|15:31:00|120|946374679|12113094500295944|55","1523019830|1|15:33:00|120|2893655003|22113092920912269|55","3882868379|7|15:30:00|60|3989473618|7413094660651570|39","3653339166|9|15:31:00|60|3300801987|2313095190912389|55","3653339166|9|15:30:00|60|3300801987|18013095120912393|55","1194974051|6|15:30:00|120|946374679|10513094440295944|55","3653339166|9|15:29:00|60|3300801987|17213095150912393|55","3653339166|8|15:34:00|60|1561893142|17113094920795507|55","1194974051|6|15:29:00|60|946374679|10413094510295944|55","1523019830|1|15:32:00|120|2893655003|14513093000912282|55","3653339166|8|15:33:00|60|1561893142|11313094950795507|55","3653339166|8|15:31:00|60|1561893142|18613094970795507|55","1194974051|6|15:33:00|60|2706513156|11113094440912370|58","3653339166|8|15:30:00|60|1561893142|12513094980795507|55","3653339166|8|15:29:00|60|1561893142|11213094950795507|55","1194974051|6|15:32:00|120|2706513156|13713094550912370|58","1523019830|1|15:31:00|120|2893655003|22013092920912269|55","3882868379|7|15:33:00|120|2177031349|10813094670912379|46","552165531|13|15:31:00|60|618858167|6513095550912413|48","4152748969|10|15:29:00|120|980642687|12313164410917606|51","598631581|2|15:33:00|60|2334959990|213093810912326|54","3653339166|8|15:34:00|60|3300801987|12213094980795505|53","3653339166|8|15:33:00|60|3300801987|18213094970795505|53","1194974051|6|15:31:00|120|2706513156|12613094500912370|58","3653339166|8|15:32:00|60|3300801987|17313094910795505|53","3653339166|8|15:31:00|60|3300801987|11213094950795505|53","1194974051|6|15:30:00|60|2706513156|10413094450912370|58","1523019830|1|15:30:00|120|2893655003|11113092900912257|55","3653339166|8|15:29:00|60|3300801987|12113094980795505|53","1102200894|9|15:34:00|60|645341577|19013095150912395|55","1194974051|6|15:29:00|60|2706513156|11013094440912370|58","1102200894|9|15:33:00|120|645341577|313095100912401|55","1102200894|9|15:32:00|60|645341577|9513095820912395|55","1194974051|14|15:33:00|120|2871016604|21713095800912430|59","1523019830|1|15:29:00|120|2893655003|21913092920912269|55","3882868379|7|15:32:00|120|2177031349|10513094610912373|46","1102200894|9|15:31:00|120|645341577|20113095120912395|55","1102200894|9|15:30:00|120|645341577|18913095150912395|55","1194974051|14|15:32:00|120|2871016604|23613164430912430|59","1102200894|9|15:29:00|120|645341577|20313095220912399|55","1102200894|9|15:34:00|120|3211140642|17413095150912393|58","1194974051|14|15:31:00|120|2871016604|18113164420912430|59","1523019830|1|15:33:00|120|3095607449|10213092900095468|57","1102200894|9|15:33:00|60|3211140642|17413095190912398|58","1102200894|9|15:32:00|120|3211140642|18213095120912393|58","1194974051|14|15:30:00|120|2871016604|21613095800912430|59","1102200894|9|15:31:00|120|3211140642|2013095150912389|58","1102200894|9|15:30:00|60|3211140642|17313095190912398|58","1194974051|14|15:29:00|120|2871016604|23513164430912430|59","1523019830|1|15:32:00|120|3095607449|21313093010912285|57","3882868379|7|15:31:00|120|2177031349|10713094670912373|46","552165531|13|15:30:00|60|618858167|7213095560912413|48","1102200894|9|15:29:00|120|3211140642|18113095120912393|58","1102200894|7|15:34:00|60|2696990795|10513094670912373|40","1194974051|14|15:33:00|120|3891613492|18413164420912435|59","1102200894|7|15:33:00|120|2696990795|7613094660912373|40","1102200894|7|15:32:00|120|2696990795|6813094630912379|40","1194974051|14|15:32:00|120|3891613492|22013095790912435|59","1523019830|1|15:31:00|120|3095607449|20513092920912270|57","1102200894|7|15:31:00|60|2696990795|5813094560651565|40","1102200894|7|15:30:00|60|2696990795|7613094660912379|40","1194974051|14|15:31:00|120|3891613492|23613164430917618|59","1102200894|7|15:29:00|120|2696990795|10313094610651565|40","1102200894|7|15:34:00|60|73874293|9313094590651562|46","1194974051|14|15:30:00|120|3891613492|18313164420912435|59","1523019830|1|15:30:00|60|3095607449|10113092900095468|57","3882868379|7|15:30:00|120|2177031349|9713094590651565|46","1102200894|7|15:33:00|60|73874293|813094650651581|46","1102200894|7|15:32:00|120|73874293|10213094610651563|46","1194974051|14|15:29:00|120|3891613492|21913095790912435|59","1102200894|7|15:31:00|60|73874293|6713094630651570|46","1102200894|7|15:30:00|120|73874293|10113094610651562|46","3691015742|13|15:33:00|120|3421576237|7213095580912420|44","1523019830|1|15:29:00|60|3095607449|20413092920912270|57","1102200894|7|15:29:00|60|73874293|313094660912383|46","3519554763|6|15:34:00|120|3616975530|13813094550295944|55","3691015742|13|15:32:00|120|3421576237|12713095640912420|44","3519554763|6|15:33:00|60|3616975530|19713094520295944|55","3519554763|6|15:32:00|60|3616975530|10713094510295944|55","3691015742|13|15:31:00|120|3421576237|11613095660912420|44","1091103895|7B|15:32:00|60|1569477485|12013094800651583|26","3882868379|7|15:29:00|120|2177031349|10513094610651565|46","552165531|13|15:29:00|60|618858167|12713095590912413|48","1707647480|5|15:33:00|120|2649549238|13513094370094711|55","3519554763|6|15:31:00|60|3616975530|10313094450295944|55","3519554763|6|15:29:00|60|3616975530|9313094430295944|55","3691015742|13|15:30:00|60|3421576237|12613095590912414|44","3519554763|6|15:34:00|60|4198886535|513094520912371|57","3519554763|6|15:32:00|60|4198886535|13413094550912370|57","3691015742|13|15:29:00|60|3421576237|11513095680912414|44","1091103895|7B|15:31:00|60|1569477485|11013094810651583|26","3519554763|6|15:31:00|60|4198886535|10213094450912370|57","3519554763|6|15:30:00|60|4198886535|9413094430912370|57","3691015742|13|15:33:00|120|1183318172|7413095560912417|47","3519554763|6|15:29:00|60|4198886535|413094550912369|57","3519554763|4|15:33:00|60|4198886535|24013864010942711|51","3691015742|13|15:32:00|120|1183318172|13013095590912417|47","1091103895|7B|15:33:00|60|209994619|10813094810651584|39","3882868379|10|15:33:00|120|1707647480|11813164410917606|50","3519554763|4|15:32:00|60|4198886535|11013864000942711|51","3519554763|4|15:31:00|60|4198886535|23913864010942711|51","3691015742|13|15:31:00|120|1183318172|6713095550912417|47","3519554763|4|15:30:00|60|4198886535|17413864020942711|51","3519554763|4|15:29:00|120|4198886535|10913864000942711|51","3691015742|13|15:30:00|60|1183318172|12013095660912424|47","1091103895|7B|15:32:00|120|209994619|10813094840651584|39","3519554763|4|15:34:00|60|515539346|10813864000942709|55","3519554763|4|15:33:00|60|515539346|17213864020942709|55","3691015742|13|15:29:00|60|1183318172|11813095680912417|47","3519554763|4|15:32:00|60|515539346|25113864030942709|55","3519554763|4|15:31:00|60|515539346|10713864000942709|55","3325830777|13|15:33:00|120|2974665047|8713095650912420|46","1091103895|7B|15:30:00|60|209994619|8113094790651584|39","3882868379|10|15:32:00|120|1707647480|8813164320917606|50","552165531|12|15:33:00|120|1065328272|19713647320942701|57","3519554763|4|15:30:00|60|515539346|25013864030942709|55","3519554763|4|15:29:00|60|515539346|17013864020942709|55","3325830777|13|15:33:00|120|65431437|12713095590912413|46","1128226880|5|15:34:00|60|882992124|19213094400094711|58","1128226880|5|15:33:00|120|882992124|13713094370094711|58","3325830777|13|15:32:00|120|65431437|11613095680912413|46","1091103895|7B|15:29:00|60|209994619|11713094800651584|39","1128226880|5|15:32:00|120|882992124|10813094380094711|58","1128226880|5|15:31:00|60|882992124|20613094390094711|58","3325830777|13|15:31:00|120|2974665047|6513095550912414|46","1128226880|5|15:30:00|60|882992124|413094400912366|58","1128226880|5|15:29:00|120|882992124|613094420912365|58","3325830777|13|15:31:00|60|65431437|7113095620912419|46","245371276|7B|15:33:00|120|1569477485|8213094790651584|32","3882868379|10|15:30:00|120|1707647480|13313164390917606|50","1128226880|5|15:34:00|120|4122770022|14013094420912363|56","1128226880|5|15:33:00|120|4122770022|12013094300912363|56","3325830777|13|15:30:00|120|2974665047|12713095590912414|46","1128226880|5|15:32:00|120|4122770022|13413094370912363|56","1128226880|5|15:31:00|120|4122770022|10713094380912363|56","3325830777|13|15:30:00|120|65431437|8713095630912419|46","245371276|7B|15:31:00|120|1569477485|11813094800651584|32","1128226880|5|15:30:00|60|4122770022|11913094300912363|56","1128226880|5|15:29:00|120|4122770022|13313094370912363|56","3325830777|13|15:29:00|120|2974665047|11613095680912414|46","1760224038|4|15:34:00|60|3711272335|23613864010942711|55","1760224038|4|15:33:00|60|3711272335|10713864000942711|55","3325830777|13|15:29:00|120|65431437|12713095640912419|46","245371276|7B|15:30:00|120|1569477485|10813094810651584|32","3882868379|10|15:29:00|120|1707647480|7813164330917606|50","552165531|12|15:32:00|120|1065328272|10013647230942707|57","1707647480|5|15:32:00|60|2649549238|18913094400094711|55","598631581|2|15:32:00|60|2334959990|21213093770095484|54","1225648642|4|15:32:00|60|1465479446|18313864020942709|51","3873492639|2|15:32:00|120|475845330|15713093790095484|57","1760224038|4|15:32:00|60|3711272335|23513864010942711|55","1760224038|4|15:30:00|60|3711272335|10613864000942711|55","3325830777|13|15:33:00|60|3265715605|12013095660912423|47","1760224038|4|15:29:00|120|3711272335|23413864010942711|55","1760224038|4|15:34:00|60|3715978556|24513864010942709|57","3325830777|13|15:32:00|60|3265715605|6713095550912416|47","245371276|7B|15:29:00|60|2738613188|10913094810651583|24","1760224038|4|15:33:00|60|3715978556|11113864000942709|57","1760224038|4|15:32:00|60|3715978556|24413864010942709|57","3325830777|13|15:31:00|120|3265715605|13213095640912423|47","1760224038|4|15:31:00|60|3715978556|25613864030942709|57","1760224038|4|15:30:00|60|3715978556|11013864000942709|57","3325830777|13|15:30:00|120|3265715605|11813095680912416|47","3877040829|3B|15:33:00|60|2609365027|10013094270651522|42","3882868379|10|15:33:00|60|1771918760|10613164400296022|54","1760224038|4|15:29:00|60|3715978556|25513864030942709|57","1931254292|3|15:34:00|60|1152988904|18713094020095500|57","3325830777|13|15:29:00|60|3265715605|12913095590912416|47","1931254292|3|15:33:00|120|1152988904|13813093970095500|57","1931254292|3|15:32:00|60|1152988904|10613093990095500|57","2075612487|12|15:33:00|60|3200465306|14813647350942699|56","3877040829|3B|15:32:00|60|2609365027|14713094260651522|42","1931254292|3|15:31:00|60|1152988904|18613094020095500|57","1931254292|3|15:30:00|60|1152988904|13713093970095500|57","2075612487|12|15:32:00|120|3200465306|11913647310942699|56","1931254292|3|15:29:00|60|1152988904|20713093930095500|57","1931254292|3|15:34:00|60|1213432453|13013093970912354|58","2075612487|12|15:31:00|60|3200465306|10413647210942699|56","3877040829|3B|15:31:00|60|2609365027|12113094250651522|42","3882868379|10|15:32:00|60|1771918760|9113164320917608|54","552165531|12|15:31:00|120|1065328272|10513647210942701|57","1931254292|3|15:33:00|120|1213432453|17113093960912354|58","1931254292|3|15:31:00|60|1213432453|11413093980912354|58","2075612487|12|15:30:00|120|3200465306|14713647350942699|56","1931254292|3|15:30:00|60|1213432453|10213093990912354|58","1931254292|3|15:29:00|60|1213432453|19313093930912354|58","2075612487|12|15:29:00|60|3200465306|11813647310942699|56","3877040829|3B|15:33:00|60|2269163997|10013094270651521|45","697925458|13|15:34:00|60|3411985938|8813095650912419|51","697925458|13|15:33:00|60|3411985938|7413095580912419|51","2075612487|12|15:33:00|60|3614543683|12113647310942701|57","697925458|13|15:32:00|60|3411985938|7313095620912419|51","697925458|13|15:31:00|60|3411985938|11813095680912413|51","2075612487|12|15:32:00|60|3614543683|18113647260942701|57","3877040829|3B|15:31:00|60|2269163997|12113094250651521|45","3882868379|10|15:29:00|60|1771918760|13213164380296022|54","697925458|13|15:30:00|120|3411985938|6613095550912413|51","697925458|13|15:29:00|60|3411985938|7313095560912413|51","2075612487|12|15:31:00|60|3614543683|10113647230942707|57","697925458|13|15:34:00|120|2198512348|11713095660912423|50","697925458|13|15:33:00|60|2198512348|7213095560912416|50","2075612487|12|15:30:00|60|3614543683|10113647290942700|57","380937225|7|15:33:00|60|2924666242|10113094610651562|37","697925458|13|15:32:00|120|2198512348|7113095620912423|50","697925458|13|15:31:00|60|2198512348|11613095680912416|50","2075612487|12|15:29:00|60|3614543683|10613647210942701|57","697925458|13|15:30:00|120|2198512348|12713095590912416|50","697925458|13|15:29:00|60|2198512348|6513095550912416|50","3714063920|11|15:33:00|60|891393435|11713095430912409|52","380937225|7|15:32:00|60|2924666242|313094660912383|37","351139424|9|15:33:00|60|1374784815|12813095170912398|57","552165531|12|15:29:00|120|1065328272|18313647340942701|57","1707647480|5|15:31:00|60|2649549238|11913094300094711|55","2904169401|12|15:34:00|60|3481964895|18313647340942701|57","2904169401|12|15:33:00|60|3481964895|15413647350942701|57","3714063920|11|15:31:00|60|891393435|11013095440912409|52","2904169401|12|15:32:00|60|3481964895|9913647230942707|57","2904169401|12|15:31:00|60|3481964895|10413647210942701|57","3714063920|11|15:30:00|60|891393435|13413095500912409|52","380937225|7|15:31:00|60|2924666242|10113094610651563|37","2904169401|12|15:30:00|120|3481964895|15313647350942701|57","2904169401|12|15:29:00|60|3481964895|17713647260942701|57","3714063920|11|15:29:00|60|891393435|11613095430912409|52","2904169401|12|15:34:00|120|2011584683|313647310942702|58","2904169401|12|15:33:00|60|2011584683|10713647210942699|58","3714063920|11|15:33:00|60|3987776330|11713095420440174|57","380937225|7|15:30:00|60|2924666242|9513094650651570|37","351139424|9|15:32:00|120|1374784815|18113095150912393|57","2904169401|12|15:32:00|120|2011584683|18913647320942699|58","2904169401|12|15:31:00|120|2011584683|12113647310942699|58","3714063920|11|15:32:00|60|3987776330|19713095460912411|57","2904169401|12|15:30:00|120|2011584683|17613647340942699|58","2904169401|12|15:29:00|120|2011584683|18813647320942699|58","3714063920|11|15:31:00|60|3987776330|11713095430912411|57","380937225|7|15:29:00|60|2924666242|9213094590651562|37","3224579423|9|15:34:00|120|2734436604|18513095120912393|58","3224579423|9|15:33:00|120|2734436604|9313095090912393|58","3714063920|11|15:30:00|60|3987776330|13513095500440174|57","3224579423|9|15:32:00|120|2734436604|17613095150912393|58","3224579423|9|15:31:00|120|2734436604|2213095120912389|58","3714063920|11|15:29:00|60|3987776330|11113095490440174|57","380937225|7|15:33:00|120|73874293|10613094670912379|43","351139424|9|15:31:00|60|1374784815|10113095100912398|57","552165531|12|15:33:00|60|2009211090|12013647310942699|56","3224579423|9|15:30:00|120|2734436604|313095820912389|58","3224579423|9|15:29:00|120|2734436604|17513095150912393|58","4025722812|10|15:33:00|120|3720819819|8813164320917608|55","3224579423|9|15:34:00|60|4248981646|19913095120912395|58","3224579423|9|15:33:00|60|4248981646|12213095170912399|58","4025722812|10|15:32:00|120|3720819819|12613164410296022|55","380937225|7|15:32:00|120|73874293|10413094610651565|43","3224579423|9|15:32:00|60|4248981646|20113095220912399|58","3224579423|9|15:31:00|120|4248981646|18713095150912395|58","4025722812|10|15:31:00|120|3720819819|10213164400296022|55","3224579423|9|15:30:00|60|4248981646|9013095090912395|58","3224579423|9|15:29:00|60|4248981646|12113095170912399|58","4025722812|10|15:30:00|120|3720819819|12713164380296022|55","380937225|7|15:31:00|60|73874293|10513094670912373|43","351139424|9|15:30:00|120|1374784815|9913095820912393|57","1561893142|9|15:34:00|60|3211140642|9613095820912395|57","1561893142|9|15:33:00|60|3211140642|12513095170912399|57","4025722812|10|15:29:00|120|3720819819|8813164340917608|55","1561893142|9|15:32:00|60|3211140642|20213095120912395|57","1561893142|9|15:31:00|60|3211140642|313095100912401|57","4025722812|10|15:33:00|60|3565805587|12213164410917606|52","380937225|7|15:30:00|60|73874293|6813094630912379|43","1561893142|9|15:30:00|60|3211140642|9213095090912395|57","1561893142|9|15:29:00|60|3211140642|20113095120912395|57","4025722812|10|15:32:00|120|3565805587|9913164400917614|52","1561893142|9|15:34:00|60|3653339166|2013095150912389|57","1561893142|9|15:33:00|60|3653339166|12113095170912398|57","4025722812|10|15:31:00|60|3565805587|13413164360917606|52","380937225|7|15:29:00|60|73874293|9913094650912379|43","351139424|9|15:29:00|120|1374784815|18013095150912393|57","552165531|12|15:32:00|60|2009211090|18713647320942699|56","1707647480|5|15:30:00|120|2649549238|10613094380094711|55","598631581|2|15:31:00|60|2334959990|20213093810095484|54","1561893142|9|15:32:00|60|3653339166|18113095120912393|57","1561893142|9|15:31:00|60|3653339166|17313095150912393|57","4025722812|10|15:29:00|60|3565805587|12113164410917606|52","1561893142|9|15:30:00|60|3653339166|2313095190912389|57","1561893142|9|15:29:00|60|3653339166|18013095120912393|57","3715978556|4|15:33:00|60|977856475|24413864010942709|57","380937225|14|15:33:00|120|1100607264|18413164420912430|59","1561893142|8|15:32:00|60|3211140642|18613094970795507|56","1561893142|8|15:31:00|60|3211140642|12513094980795507|56","3715978556|4|15:32:00|60|977856475|25613864030942709|57","1561893142|8|15:30:00|60|3211140642|11213094950795507|56","1561893142|8|15:29:00|60|3211140642|17913094960795507|56","3715978556|4|15:31:00|60|977856475|11013864000942709|57","380937225|14|15:32:00|120|1100607264|21913095800912430|59","351139424|9|15:33:00|60|3741637293|19313095120912395|58","1561893142|8|15:33:00|60|3653339166|12213094980795505|53","1561893142|8|15:32:00|60|3653339166|18213094970795505|53","3715978556|4|15:30:00|60|977856475|25513864030942709|57","1561893142|8|15:30:00|60|3653339166|11213094950795505|53","2696990795|7|15:33:00|120|1102200894|10213094610651562|42","3715978556|4|15:29:00|60|977856475|17413864020942709|57","380937225|14|15:31:00|120|1100607264|23813164430912430|59","2696990795|7|15:32:00|120|1102200894|9313094590651562|42","2696990795|7|15:31:00|120|1102200894|813094650651581|42","3715978556|4|15:33:00|60|1760224038|23613864010942711|57","2696990795|7|15:30:00|60|1102200894|7713094660912376|42","2696990795|7|15:29:00|60|1102200894|10113094610651562|42","3715978556|4|15:32:00|60|1760224038|17113864020942711|57","380937225|14|15:30:00|120|1100607264|18313164420912430|59","351139424|9|15:32:00|60|3741637293|9313095100912399|58","552165531|12|15:31:00|60|2009211090|9613647290942704|56","2696990795|7|15:33:00|60|2425224985|10513094670912379|43","2696990795|7|15:32:00|60|2425224985|5813094560651565|43","3715978556|4|15:31:00|120|1760224038|10713864000942711|57","2696990795|7|15:31:00|60|2425224985|10313094610651565|43","2696990795|7|15:30:00|120|2425224985|6313094570651565|43","3715978556|4|15:30:00|120|1760224038|23513864010942711|57","380937225|14|15:29:00|120|1100607264|21813095800912430|59","2696990795|7|15:29:00|60|2425224985|9513094590651565|43","4198886535|6|15:33:00|60|3519554763|13813094550295944|58","3715978556|4|15:29:00|60|1760224038|10613864000942711|57","4198886535|6|15:32:00|60|3519554763|19713094520295944|58","4198886535|6|15:31:00|60|3519554763|10713094510295944|58","3715978556|10|15:33:00|60|1098202862|10513164400296022|51","380937225|14|15:33:00|60|1065328272|21813095790912435|59","351139424|9|15:31:00|60|3741637293|8713095090912395|58","4198886535|6|15:30:00|60|3519554763|10313094450295944|58","4198886535|6|15:29:00|120|3519554763|19613094520295944|58","3715978556|10|15:32:00|60|1098202862|9113164340917608|51","4198886535|6|15:33:00|120|2624477086|13413094550912370|58","4198886535|6|15:32:00|120|2624477086|10213094450912370|58","3715978556|10|15:31:00|120|1098202862|9013164320917608|51","380937225|14|15:32:00|120|1065328272|23413164430917618|59","4198886535|6|15:31:00|60|2624477086|9413094430912370|58","4198886535|6|15:30:00|60|2624477086|413094550912369|58","3715978556|10|15:30:00|60|1098202862|13113164380296022|51","4198886535|6|15:29:00|120|2624477086|17213094540912370|58","4198886535|4|15:33:00|120|175753322|11013864000942711|56","3715978556|10|15:33:00|60|2932899145|11913164410917606|54","380937225|14|15:31:00|60|1065328272|18113164420912435|59","351139424|9|15:30:00|120|3741637293|18213095150912395|58","552165531|12|15:30:00|60|2009211090|213647310942702|56","1707647480|5|15:29:00|120|2649549238|513094390912366|55","4198886535|4|15:32:00|60|175753322|23913864010942711|56","4198886535|4|15:31:00|60|175753322|10913864000942711|56","3715978556|10|15:32:00|60|2932899145|13513164390917606|54","4198886535|4|15:30:00|60|175753322|23813864010942711|56","4198886535|4|15:29:00|60|175753322|17313864020942711|56","3715978556|10|15:30:00|60|2932899145|7913164330917606|54","380937225|14|15:30:00|60|1065328272|21713095790912435|59","4198886535|4|15:32:00|120|3519554763|10813864000942709|55","4198886535|4|15:30:00|60|3519554763|17113864020942709|55","3715978556|10|15:29:00|60|2932899145|11813164410917606|54","4198886535|4|15:29:00|120|3519554763|10713864000942709|55","4122770022|9|15:33:00|60|1736981303|9313095820912393|56","2635662580|8|15:33:00|120|2496888016|18613094970795505|51","380937225|14|15:29:00|120|1065328272|23313164430917618|59","351139424|9|15:29:00|60|3741637293|13413095180912399|58","4122770022|9|15:32:00|120|1736981303|11913095170912398|56","4122770022|9|15:31:00|60|1736981303|17113095150912393|56","2635662580|8|15:32:00|60|2496888016|10113094890795505|51","4122770022|9|15:30:00|60|1736981303|2413095220912389|56","4122770022|9|15:29:00|60|1736981303|8913095090912393|56","2635662580|8|15:31:00|60|2496888016|513094970912387|51","2960704645|13|15:33:00|180|1840343478|13213095590912417|47","4122770022|9|15:33:00|120|891393435|19213095150912395|56","4122770022|9|15:32:00|120|891393435|20413095120912395|56","2635662580|8|15:30:00|60|2496888016|17813094960795505|51","4122770022|9|15:31:00|60|891393435|12613095170912399|56","4122770022|9|15:30:00|60|891393435|19113095150912395|56","2635662580|8|15:33:00|120|2688858633|11013094950795507|52","2960704645|13|15:32:00|180|1840343478|7413095620912424|47","4278050457|8|15:33:00|60|125894007|613094970912387|55","552165531|12|15:29:00|60|2009211090|10513647210942699|56","4122770022|9|15:29:00|120|891393435|20313095120912395|56","4122770022|5|15:33:00|60|1128226880|19213094400094711|56","2635662580|8|15:32:00|120|2688858633|12313094980795507|52","4122770022|5|15:32:00|60|1128226880|13713094370094711|56","4122770022|5|15:31:00|60|1128226880|10813094380094711|56","2635662580|8|15:31:00|60|2688858633|16713094920795507|52","2960704645|13|15:31:00|120|1840343478|12213095660912424|47","4122770022|5|15:30:00|120|1128226880|12113094300094711|56","4122770022|5|15:29:00|60|1128226880|13613094370094711|56","2635662580|8|15:30:00|60|2688858633|9113094870795507|52","4122770022|5|15:33:00|60|891393435|10713094380912363|57","4122770022|5|15:32:00|120|891393435|19413094340912363|57","2635662580|8|15:29:00|120|2688858633|10913094950795507|52","2960704645|13|15:29:00|120|1840343478|11913095680912417|47","4278050457|8|15:32:00|60|125894007|10213094890795505|55","4122770022|5|15:31:00|120|891393435|11913094300912363|57","4122770022|5|15:30:00|120|891393435|13813094420912363|57","2635662580|6|15:33:00|60|3129038787|18713094520912370|54","4122770022|5|15:29:00|60|891393435|10613094380912363|57","3711272335|4|15:33:00|60|1760224038|24513864010942709|57","2635662580|6|15:32:00|60|3129038787|113094480912371|54","2960704645|13|15:33:00|60|4215555989|713095680912415|46","3711272335|4|15:32:00|60|1760224038|11113864000942709|57","3711272335|4|15:31:00|120|1760224038|17613864020942709|57","2635662580|6|15:31:00|60|3129038787|113094460912371|54","3711272335|4|15:30:00|60|1760224038|25613864030942709|57","3711272335|4|15:29:00|60|1760224038|11013864000942709|57","2635662580|6|15:29:00|60|3129038787|12013094500912370|54","2960704645|13|15:32:00|60|4215555989|7013095620912420|46","4278050457|8|15:31:00|120|125894007|10013094880795505|55","3957216179|13|15:33:00|120|4215555989|13313095590912417|49","1707647480|5|15:33:00|120|3179893028|10913094380912363|59","598631581|2|15:30:00|60|2334959990|10313093750095484|54","1225648642|4|15:31:00|60|1465479446|11613864000942709|51","3711272335|4|15:33:00|60|1100607264|23513864010942711|56","3711272335|4|15:32:00|60|1100607264|17013864020942711|56","2635662580|6|15:33:00|60|3875198686|18413094540295944|57","3711272335|4|15:31:00|60|1100607264|10613864000942711|56","3711272335|4|15:30:00|60|1100607264|24413864030942711|56","2635662580|6|15:32:00|60|3875198686|10913094510295944|57","2960704645|13|15:31:00|60|4215555989|12513095640912420|46","3711272335|4|15:29:00|120|1100607264|16913864020942711|56","1152988904|3|15:33:00|120|1931254292|10313093990912354|59","2635662580|6|15:31:00|60|3875198686|11013094440295944|57","1152988904|3|15:32:00|120|1931254292|13013093970912354|59","1152988904|3|15:31:00|120|1931254292|19713094000912354|59","2635662580|6|15:30:00|60|3875198686|10513094450295944|57","2960704645|13|15:30:00|120|4215555989|12513095590912414|46","4278050457|8|15:30:00|60|125894007|17713094910795505|55","1152988904|3|15:30:00|60|1931254292|11413093980912354|59","1152988904|3|15:29:00|60|1931254292|10213093990912354|59","2635662580|6|15:29:00|60|3875198686|9513094430295944|57","1152988904|3|15:33:00|60|3649286437|10613093990095500|55","1152988904|3|15:32:00|60|3649286437|18613094020095500|55","2635662580|10|15:33:00|60|560256723|10313164400296022|55","2960704645|13|15:29:00|60|4215555989|11413095660912420|46","1152988904|3|15:31:00|120|3649286437|13713093970095500|55","1152988904|3|15:30:00|60|3649286437|20713093930095500|55","2635662580|10|15:32:00|120|560256723|12713164410296022|55","1152988904|3|15:29:00|60|3649286437|10513093990095500|55","3487389407|2|15:33:00|120|1721597436|15913093790912333|57","2635662580|10|15:31:00|60|560256723|14113164360296022|55","2274972608|13|15:33:00|120|2450931568|13113095590912416|47","4278050457|8|15:29:00|60|125894007|16913094920795505|55","3957216179|13|15:31:00|120|4215555989|12013095680912417|49","3487389407|2|15:32:00|120|1721597436|20513093810912330|57","3487389407|2|15:31:00|120|1721597436|10513093750095483|57","2635662580|10|15:30:00|120|560256723|8913164340917608|55","3487389407|2|15:30:00|120|1721597436|11013093880095483|57","3487389407|2|15:29:00|120|1721597436|21313093770912330|57","2635662580|10|15:29:00|120|560256723|8813164320917608|55","2274972608|13|15:31:00|120|2450931568|11913095680912416|47","3487389407|2|15:33:00|120|2577613756|10013093750095484|57","3487389407|2|15:32:00|60|2577613756|10513093880912351|57","2635662580|10|15:33:00|120|600722887|12113164410917606|55","3487389407|2|15:31:00|60|2577613756|14913093790095484|57","3487389407|2|15:30:00|60|2577613756|9913093750095484|57","2635662580|10|15:32:00|120|600722887|13313164360917606|55","2274972608|13|15:30:00|60|2450931568|13013095590912416|47","4278050457|8|15:33:00|60|3305905320|18013094970795507|57","3487389407|2|15:29:00|60|2577613756|21013093760095484|57","2247827349|1|15:33:00|120|2924666242|21313092920912270|59","2635662580|10|15:31:00|60|600722887|9213164340917610|55","2247827349|1|15:32:00|60|2924666242|10613092900095468|59","2247827349|1|15:31:00|60|2924666242|21213092920912270|59","2635662580|10|15:30:00|60|600722887|9013164320917606|55","2274972608|13|15:29:00|120|2450931568|7413095560912416|47","2247827349|1|15:30:00|120|2924666242|13713093000912283|59","2247827349|1|15:29:00|60|2924666242|21113092920912270|59","2635662580|10|15:29:00|60|600722887|12013164410917606|55","2247827349|1|15:33:00|60|2011584683|21313092920912269|56","2247827349|1|15:32:00|60|2011584683|10713092900912257|56","882210155|7|15:33:00|60|2096931515|7813094660651570|41","2274972608|13|15:33:00|180|10090157|12613095590912413|47","4278050457|8|15:32:00|60|3305905320|12213094980795507|57","3957216179|13|15:30:00|60|4215555989|13213095590912417|49","1707647480|5|15:32:00|120|3179893028|19813094400912363|59","2247827349|1|15:31:00|60|2011584683|13913093000912282|56","2247827349|1|15:30:00|60|2011584683|21213092920912269|56","882210155|7|15:32:00|60|2096931515|10413094610651562|41","2247827349|1|15:29:00|60|2011584683|22213093010912284|56","3411985938|13|15:33:00|60|697925458|11713095660912423|46","882210155|7|15:31:00|60|2096931515|9513094590651562|41","2274972608|13|15:32:00|180|10090157|11513095680912413|47","3411985938|13|15:32:00|60|697925458|12913095640912423|46","3411985938|13|15:31:00|120|697925458|7213095560912416|46","882210155|7|15:30:00|60|2096931515|10413094670912376|41","3411985938|13|15:30:00|60|697925458|11613095680912416|46","3411985938|13|15:29:00|60|697925458|12713095590912416|46","882210155|7|15:29:00|60|2096931515|513094590912381|41","2274972608|13|15:31:00|180|10090157|12613095640912419|47","4278050457|8|15:31:00|60|3305905320|17413094960795507|57","3411985938|13|15:33:00|60|4225800166|12013095660912419|50","3411985938|13|15:32:00|120|4225800166|11813095680912413|50","882210155|7|15:33:00|60|635591290|10313094670912379|45","3411985938|13|15:31:00|120|4225800166|8913095630912419|50","3411985938|13|15:30:00|120|4225800166|7313095560912413|50","882210155|7|15:32:00|60|635591290|6213094570651565|45","2274972608|13|15:30:00|180|10090157|7113095580912419|47","3411985938|13|15:29:00|60|4225800166|11913095660912419|50","2805226700|11|15:33:00|60|2998612092|13813095500912409|55","882210155|7|15:31:00|120|635591290|9413094590651565|45","2805226700|11|15:32:00|60|2998612092|11913095430912409|55","2805226700|11|15:31:00|60|2998612092|11213095440912409|55","882210155|7|15:30:00|60|635591290|10213094670912373|45","2274972608|13|15:29:00|180|10090157|11513095660912419|47","4278050457|8|15:30:00|60|3305905320|10813094950795507|57","3957216179|13|15:29:00|120|4215555989|6813095550912417|49","2805226700|11|15:30:00|60|2998612092|11813095420912409|55","2805226700|11|15:29:00|120|2998612092|22313095540912409|55","882210155|7|15:29:00|60|635591290|10113094610651565|45","4248981646|9|15:33:00|120|3224579423|17713095150912393|58","4248981646|9|15:32:00|120|3224579423|18513095120912393|58","499775835|6|15:33:00|60|3129038787|11113094440295944|57","2046468661|11|15:33:00|60|1917711411|22613095540440174|58","4248981646|9|15:31:00|120|3224579423|12413095170912398|58","4248981646|9|15:30:00|60|3224579423|2213095120912389|58","499775835|6|15:32:00|60|3129038787|10613094450295944|57","4248981646|9|15:29:00|120|3224579423|18513095220912398|58","4248981646|9|15:33:00|60|20785767|18713095150912395|58","499775835|6|15:31:00|120|3129038787|18013094460295944|57","2046468661|11|15:32:00|120|1917711411|11813095420440174|58","4278050457|8|15:29:00|60|3305905320|17313094910795507|57","4248981646|9|15:32:00|60|20785767|19813095120912395|58","4248981646|9|15:31:00|120|20785767|9013095090912395|58","499775835|6|15:30:00|60|3129038787|10913094510295944|57","4248981646|9|15:30:00|120|20785767|12113095170912399|58","4248981646|9|15:29:00|120|20785767|18613095150912395|58","499775835|6|15:29:00|60|3129038787|11013094440295944|57","2046468661|11|15:31:00|60|1917711411|14513095520440174|58","3211140642|9|15:33:00|60|1561893142|2013095150912389|56","3211140642|9|15:32:00|60|1561893142|12113095170912398|56","499775835|6|15:33:00|60|2465875946|10513094510912370|58","3211140642|9|15:31:00|60|1561893142|18113095120912393|56","3211140642|9|15:30:00|60|1561893142|17313095150912393|56","499775835|6|15:32:00|60|2465875946|9213094430912370|58","2046468661|11|15:30:00|60|1917711411|11213095490440174|58","890688308|7|15:33:00|120|3098817292|10513094610651562|41","271775302|13|15:33:00|60|10090157|12013095680912416|52","1707647480|5|15:31:00|120|3179893028|12113094300912363|59","598631581|2|15:29:00|60|2334959990|21113093770095484|54","3211140642|9|15:29:00|60|1561893142|2313095190912389|56","3211140642|9|15:33:00|60|1102200894|19013095150912395|58","499775835|6|15:31:00|60|2465875946|12013094500912370|58","3211140642|9|15:32:00|60|1102200894|313095100912401|58","3211140642|9|15:31:00|120|1102200894|9213095090912395|58","499775835|6|15:30:00|120|2465875946|313094520912371|58","2046468661|11|15:29:00|60|1917711411|13613095500440174|58","3211140642|9|15:30:00|60|1102200894|20113095120912395|58","3211140642|9|15:29:00|60|1102200894|18913095150912395|58","499775835|6|15:29:00|60|2465875946|10413094510912370|58","3211140642|8|15:33:00|60|1561893142|11313094950795505|48","3211140642|8|15:32:00|60|1561893142|12213094980795505|48","4065628367|5|15:33:00|60|3907763713|14313094420094711|58","2046468661|11|15:33:00|60|3827069729|11613095430912409|53","890688308|7|15:32:00|120|3098817292|7913094660651570|41","3211140642|8|15:31:00|60|1561893142|18213094970795505|48","3211140642|8|15:29:00|60|1561893142|11213094950795505|48","4065628367|5|15:32:00|60|3907763713|913094390912366|58","3211140642|8|15:33:00|60|73874293|17813094910795507|56","3211140642|8|15:32:00|120|73874293|12513094980795507|56","4065628367|5|15:31:00|60|3907763713|10213094320094711|58","2046468661|11|15:31:00|60|3827069729|11513095420912409|53","3211140642|8|15:31:00|120|73874293|11213094950795507|56","3211140642|8|15:30:00|60|73874293|17913094960795507|56","4065628367|5|15:30:00|120|3907763713|11113094380094711|58","3211140642|8|15:29:00|60|73874293|17713094910795507|56","2425224985|7|15:32:00|60|2696990795|10213094610651562|39","4065628367|5|15:29:00|60|3907763713|14013094370094711|58","2046468661|11|15:30:00|60|3827069729|10913095440912409|53","890688308|7|15:31:00|120|3098817292|10613094610651563|41","271775302|13|15:32:00|120|10090157|13213095590912416|52","2425224985|7|15:31:00|60|2696990795|9313094590651562|39","2425224985|7|15:30:00|60|2696990795|813094650651581|39","4065628367|5|15:33:00|60|4198988390|10413094380912363|55","2425224985|7|15:29:00|60|2696990795|7713094660912376|39","2425224985|7|15:33:00|60|1876271269|5813094560651565|40","4065628367|5|15:31:00|60|4198988390|12913094370912363|55","2046468661|11|15:29:00|60|3827069729|11513095430912409|53","2425224985|7|15:32:00|60|1876271269|10313094610651565|40","2425224985|7|15:31:00|60|1876271269|10413094670912373|40","4065628367|5|15:30:00|60|4198988390|11513094300912363|55","2425224985|7|15:30:00|60|1876271269|9513094590651565|40","2425224985|7|15:29:00|60|1876271269|10213094610912373|40","4065628367|5|15:29:00|60|4198988390|10313094380912363|55","3427371663|9|15:33:00|60|3253812998|17913095150912393|58","890688308|7|15:30:00|120|3098817292|9513094590651563|41","2624477086|6|15:33:00|60|4198886535|10913094440295944|55","2624477086|6|15:32:00|120|4198886535|10413094450295944|55","2058569149|5|15:33:00|120|1393958362|10113094320094711|58","2624477086|6|15:31:00|60|4198886535|19713094520295944|55","2624477086|6|15:29:00|120|4198886535|10713094510295944|55","2058569149|5|15:32:00|120|1393958362|813094390912366|58","3427371663|9|15:32:00|60|3253812998|9813095820912393|58","2624477086|6|15:33:00|60|44881418|10713094510912370|57","2624477086|6|15:32:00|60|44881418|18813094520912370|57","2058569149|5|15:31:00|120|1393958362|20613094330094711|58","2624477086|6|15:31:00|120|44881418|413094550912369|57","2624477086|6|15:30:00|60|44881418|10113094450912370|57","2058569149|5|15:30:00|120|1393958362|12313094300094711|58","3427371663|9|15:31:00|60|3253812998|2313095120912389|58","890688308|7|15:29:00|120|3098817292|6513094570651562|41","271775302|13|15:31:00|60|10090157|7613095580912423|52","1707647480|5|15:30:00|120|3179893028|19713094400912363|59","2624477086|6|15:29:00|120|44881418|413094520912371|57","3649286437|3|15:33:00|60|1152988904|19813094000912354|59","2058569149|5|15:29:00|120|1393958362|20513094330094711|58","3649286437|3|15:32:00|60|1152988904|10313093990912354|59","3649286437|3|15:31:00|60|1152988904|13013093970912354|59","2058569149|5|15:32:00|120|2577613756|19213094340912363|55","3427371663|9|15:30:00|60|3253812998|2113095150912389|58","3649286437|3|15:30:00|60|1152988904|19713094000912354|59","3649286437|3|15:29:00|60|1152988904|11413093980912354|59","2058569149|5|15:31:00|120|2577613756|10513094380912363|55","3649286437|3|15:33:00|60|73874293|13713093970095500|55","3649286437|3|15:32:00|120|73874293|18313093960095500|55","2058569149|5|15:30:00|120|2577613756|20613094390912363|55","3427371663|9|15:29:00|60|3253812998|10213095160912398|58","890688308|7|15:33:00|120|37245713|9613094650912379|43","3649286437|3|15:31:00|120|73874293|20713093930095500|55","3649286437|3|15:30:00|60|73874293|10513093990095500|55","2058569149|5|15:29:00|180|2577613756|9613094320912364|55","3649286437|3|15:29:00|120|73874293|13613093970095500|55","2924666242|7|15:33:00|120|2707323384|313094660912383|44","2058569149|4|15:33:00|60|1393958362|26313864030942709|52","3427371663|9|15:33:00|60|3499425610|19513095120912395|58","2924666242|7|15:32:00|120|2707323384|10113094610651563|44","2924666242|7|15:31:00|120|2707323384|9513094650651570|44","2058569149|4|15:32:00|120|1393958362|25013864010942709|52","2924666242|7|15:30:00|60|2707323384|10013094610651562|44","2924666242|7|15:29:00|120|2707323384|713094650651581|44","2058569149|4|15:31:00|120|1393958362|11413864000942709|52","3427371663|9|15:32:00|60|3499425610|18413095150912395|58","890688308|7|15:32:00|120|37245713|5613094560651565|43","271775302|13|15:30:00|120|10090157|6813095550912416|52","2924666242|7|15:33:00|60|380937225|10013094650912379|40","2924666242|7|15:32:00|60|380937225|10613094670912379|40","2058569149|4|15:29:00|60|1393958362|11313864000942709|52","2924666242|7|15:31:00|60|380937225|10413094610651565|40","2924666242|7|15:30:00|60|380937225|6313094570912373|40","2058569149|4|15:33:00|60|1721597436|16613864020942711|50","3427371663|9|15:31:00|60|3499425610|8813095090912395|58","2924666242|7|15:29:00|120|380937225|10513094670912373|40","2924666242|1|15:33:00|120|2247827349|21413092920912269|57","2058569149|4|15:31:00|120|1721597436|10313864000942711|50","2924666242|1|15:32:00|60|2247827349|20113092970912276|57","2924666242|1|15:31:00|120|2247827349|21313092920912269|57","2058569149|4|15:30:00|120|1721597436|16513864020942711|50","3427371663|9|15:30:00|60|3499425610|19413095120912395|58","890688308|7|15:31:00|60|37245713|9313094590651565|43","2924666242|1|15:30:00|120|2247827349|10713092900912257|57","2924666242|1|15:29:00|60|2247827349|21213092920912269|57","2058569149|4|15:29:00|60|1721597436|10213864000942711|50","2924666242|1|15:33:00|60|3747807733|10613092900095468|59","2924666242|1|15:32:00|120|3747807733|21213092920912270|59","469044143|3|15:33:00|120|1126076862|11813093980912354|58","3427371663|9|15:29:00|60|3499425610|11813095170912399|58","2924666242|1|15:31:00|120|3747807733|22013093010912285|59","2924666242|1|15:30:00|60|3747807733|10513092900095468|59","469044143|3|15:32:00|60|1126076862|10513093990912354|58","2924666242|1|15:29:00|120|3747807733|21913093010912285|59","1876271269|7|15:33:00|60|2425224985|213094660651581|39","469044143|3|15:31:00|60|1126076862|13313093970912354|58","3427371663|10|15:33:00|120|896555290|12313164410917606|55","890688308|7|15:30:00|120|37245713|9513094650912373|43","271775302|13|15:29:00|120|10090157|13113095590912416|52","1707647480|5|15:29:00|120|3179893028|10813094380912363|59","598631581|1|15:32:00|60|3566702934|10513092900912257|56","1225648642|4|15:30:00|60|1465479446|18213864020942709|51","3873492639|2|15:31:00|60|475845330|10413093750095484|57","2532042518|1|15:32:00|120|2920343104|12413844190955497|58","2532042518|1|15:30:00|60|2920343104|11213092900912257|58","2532042518|1|15:29:00|60|2920343104|22113092920912269|58"],"timespent":"0.35 sec","time":"15:38:47"} \ No newline at end of file diff --git a/db/paris/getVeloStations/index.txt b/db/paris/getVeloStations/index.txt new file mode 100644 index 0000000..48a3da9 --- /dev/null +++ b/db/paris/getVeloStations/index.txt @@ -0,0 +1 @@ +{"bicycles":[{"id":"26933","lat":"48.856503","lng":"2.293179","tags":{"name":"SUFFREN TOUR EIFFEL","ref":"7025","address":"2 AVENUE OCTAVE CREARD - 75007 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":0,"free":32}},{"id":"26931","lat":"48.860897","lng":"2.295600","tags":{"name":"BOURDONNAIS TOUR EIFFEL","ref":"7023","address":"QUAI BRANLY - 75007 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":0,"free":60}},{"id":"27398","lat":"48.854851","lng":"2.295008","tags":{"name":"CHAMP DE MARS COTE 16EME","ref":"15071","address":"36 RUE DE SUFFREN - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":0,"free":18}},{"id":"26932","lat":"48.858170","lng":"2.300528","tags":{"name":"AVENUE RAPP","ref":"7024","address":"43 AVENUE RAPP - 75007 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":14,"free":15}},{"id":"27356","lat":"48.853844","lng":"2.289705","tags":{"name":"BIR HAKEIM","ref":"15026","address":"FACE 6 BOULEVARD DE GRENELLE - 75015 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":1,"free":31}},{"id":"27394","lat":"48.852806","lng":"2.293077","tags":{"name":"DESAIX","ref":"15067","address":"23 RUE DESAIX - 75015 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":1,"free":11}},{"id":"26936","lat":"48.856060","lng":"2.302239","tags":{"name":"BELGRADE","ref":"7103","address":"2 RUE DE BELGRADE - 75007 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598438,"updated":"30\/06\/2013 | 15 h 20 m 38 s","available":5,"free":14}},{"id":"27402","lat":"48.852768","lng":"2.297876","tags":{"name":"SUFFREN F\u2026D\u2026RATION","ref":"15105","address":"84 RUE DE LA FEDERATION - 75015 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598522,"updated":"30\/06\/2013 | 15 h 22 m 02 s","available":3,"free":11}},{"id":"26929","lat":"48.858650","lng":"2.303717","tags":{"name":"BOSQUET SAINT DOMINIQUE","ref":"7021","address":"37 AVENUE BOSQUET - 75007 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":22,"free":26}},{"id":"26930","lat":"48.861641","lng":"2.302250","tags":{"name":"PONT DE L'ALMA","ref":"7022","address":"3 AVENUE BOSQUET - 75007 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":42,"free":23}},{"id":"27441","lat":"48.858379","lng":"2.284129","tags":{"name":"RUE DE PASSY","ref":"16023","address":"1 RUE DE PASSY - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s","available":27,"free":2}},{"id":"27425","lat":"48.864910","lng":"2.292519","tags":{"name":"LONGCHAMP","ref":"16007","address":"4 RUE DE LONGCHAMP - 75016 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":29,"free":8}},{"id":"27355","lat":"48.851456","lng":"2.296710","tags":{"name":"AMETTE","ref":"15025","address":"26 RUE DUPLEIX - 75015 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":1,"free":46}},{"id":"27358","lat":"48.851398","lng":"2.291889","tags":{"name":"DUPLEIX","ref":"15028","address":"54 BOULEVARD DE GRENELLE - 75015 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":0,"free":68}},{"id":"27432","lat":"48.863544","lng":"2.286394","tags":{"name":"AVENUE D EYLAU","ref":"16014","address":"4 AVENUE D'EYLAU - 75016 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":13,"free":10}},{"id":"26973","lat":"48.865192","lng":"2.300250","tags":{"name":"ALMA MARCEAU","ref":"8046","address":"2 Avenue MARCEAU - 75008 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":24,"free":6}},{"id":"26744","lat":"48.852135","lng":"2.301961","tags":{"name":"PLACE JOFFRE \/ ECOLE MILITAIRE","ref":"904","address":"ECOLE MILITAIRE-AVENUE DE LA MOTTE PICQUET - 75007 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598402,"updated":"30\/06\/2013 | 15 h 20 m 02 s","available":8,"free":22}},{"id":"27472","lat":"48.856987","lng":"2.282173","tags":{"name":"CHERNOVITZ","ref":"16112","address":"1-3 RUE CHERNOVITZ - 75016 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":36,"free":0}},{"id":"26927","lat":"48.854950","lng":"2.305479","tags":{"name":"ECOLE MILITAIRE","ref":"7019","address":"85 AVENUE BOSQUET - 75007 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":9,"free":38}},{"id":"26928","lat":"48.856640","lng":"2.306599","tags":{"name":"CLER","ref":"7020","address":"FACE 3 RUE DU CHAMP DE MARS - 75007 PARIS","bonus":"0","open":"1","total":"57","timestamp":1372598437,"updated":"30\/06\/2013 | 15 h 20 m 37 s","available":43,"free":12}},{"id":"27403","lat":"48.849922","lng":"2.294661","tags":{"name":"GRENELLE VIOLET (PROP3)","ref":"15106","address":"BOULEVARD DE GRENELLE - 75015 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598522,"updated":"30\/06\/2013 | 15 h 22 m 02 s","available":8,"free":55}},{"id":"26972","lat":"48.864922","lng":"2.302549","tags":{"name":"ALMA","ref":"8045","address":"FACE 3 AVENUE MONTAIGNE - 75008 PARIS","bonus":"0","open":"1","total":"57","timestamp":1372598444,"updated":"30\/06\/2013 | 15 h 20 m 44 s","available":49,"free":8}},{"id":"27354","lat":"48.850914","lng":"2.301293","tags":{"name":"LAOS","ref":"15024","address":"88 AVENUE DE SUFFREN - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":16,"free":3}},{"id":"27359","lat":"48.850616","lng":"2.287250","tags":{"name":"EMERIAU","ref":"15029","address":"27 RUE EMERIAU - 75015 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":5,"free":48}},{"id":"27434","lat":"48.860115","lng":"2.280840","tags":{"name":"PAUL DOUMER \/ LA TOUR","ref":"16016","address":"53 AVENUE PAUL DOUMER - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598528,"updated":"30\/06\/2013 | 15 h 22 m 08 s","available":33,"free":0}},{"id":"27440","lat":"48.857567","lng":"2.280027","tags":{"name":"RUE JEAN BOLOGNE","ref":"16022","address":"16 RUE JEAN BOLOGNE - 75016 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s","available":16,"free":1}},{"id":"27426","lat":"48.867413","lng":"2.290781","tags":{"name":"GALILEE KLEBER","ref":"16008","address":"1 RUE GALILEE - 75016 PARIS","bonus":"1","open":"1","total":"32","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":30,"free":2}},{"id":"27399","lat":"48.851166","lng":"2.284608","tags":{"name":"SQUARE BELA BARTOK","ref":"15102","address":"QUAI DE GRENELLE - 75015 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598522,"updated":"30\/06\/2013 | 15 h 22 m 02 s","available":7,"free":16}},{"id":"27469","lat":"48.863876","lng":"2.281891","tags":{"name":"SABLONS","ref":"16108","address":"40 RUE DES SABLONS - 75016 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":35,"free":0}},{"id":"27427","lat":"48.866440","lng":"2.285746","tags":{"name":"SAINT DIDIER","ref":"16009","address":"32 RUE SAINT DIDIER - 75016 PARIS","bonus":"1","open":"1","total":"16","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":16,"free":0}},{"id":"27433","lat":"48.868145","lng":"2.296150","tags":{"name":"RUE DE BASSANO","ref":"16015","address":"1 RUE DE BASSANO - 75016 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598528,"updated":"30\/06\/2013 | 15 h 22 m 08 s","available":10,"free":5}},{"id":"27353","lat":"48.848656","lng":"2.299244","tags":{"name":"LA MOTTE PIQUET","ref":"15023","address":"146 BOULEVARD GRENELLE - 75015 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":5,"free":26}},{"id":"27416","lat":"48.847992","lng":"2.296682","tags":{"name":"RUE DU COMMERCE","ref":"15123","address":"20 RUE DU COMMERCE - 75015 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598525,"updated":"30\/06\/2013 | 15 h 22 m 05 s","available":3,"free":37}},{"id":"26924","lat":"48.861275","lng":"2.309454","tags":{"name":"TOUR MAUBOURG UNIVERSITE","ref":"7016","address":"13 RUE SURCOUF - 75007 PARIS","bonus":"0","open":"1","total":"58","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":41,"free":14}},{"id":"27361","lat":"48.848171","lng":"2.289907","tags":{"name":"THEATRE","ref":"15031","address":"60 RUE DU THEATRE - 75015 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":22,"free":30}},{"id":"27442","lat":"48.852932","lng":"2.280440","tags":{"name":"KENNEDY RANELAGH","ref":"16024","address":"4 RUE RANELAGH DEVANT RER - 75016 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s","available":2,"free":15}},{"id":"26925","lat":"48.857277","lng":"2.310258","tags":{"name":"LA TOUR MAUBOURG","ref":"7017","address":"1 AVENUE DE LA MOTTE PICQUET - 75007 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":32,"free":5}},{"id":"27428","lat":"48.865856","lng":"2.282860","tags":{"name":"BELLES FEUILLES","ref":"16010","address":"4 RUE DES BELLES FEUILLES - 75016 PARIS","bonus":"1","open":"1","total":"23","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":22,"free":1}},{"id":"26974","lat":"48.868168","lng":"2.301275","tags":{"name":"GEORGE V","ref":"8047","address":"28 AVENUE GEORGE V - 75008 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":31,"free":1}},{"id":"26975","lat":"48.868851","lng":"2.298514","tags":{"name":"MARCEAU","ref":"8048","address":"45 AVENUE MARCEAU - 75008 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":17,"free":3}},{"id":"27461","lat":"48.857803","lng":"2.277501","tags":{"name":"PLACE DE PASSY","ref":"16043","address":"2 PLACE DE PASSY - 75016 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598535,"updated":"30\/06\/2013 | 15 h 22 m 15 s","available":15,"free":0}},{"id":"27352","lat":"48.847099","lng":"2.296238","tags":{"name":"ZOLA","ref":"15022","address":"143 AVENUE EMILE ZOLA - 75015 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598513,"updated":"30\/06\/2013 | 15 h 21 m 53 s","available":4,"free":34}},{"id":"27424","lat":"48.869259","lng":"2.289919","tags":{"name":"RUE LAURISTON","ref":"16006","address":"60 RUE LAURISTON - 75016 PARIS","bonus":"1","open":"1","total":"17","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":17,"free":0}},{"id":"27471","lat":"48.859402","lng":"2.276522","tags":{"name":"HELIE","ref":"16111","address":"4,6 rue Faustin Helie - 75016 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":26,"free":3}},{"id":"26967","lat":"48.866886","lng":"2.306676","tags":{"name":"FRANCOIS 1 ER","ref":"8038","address":"22 RUE FRANCOIS 1ER - 75008 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":25,"free":0}},{"id":"27341","lat":"48.847576","lng":"2.302863","tags":{"name":"CAMBRONNE","ref":"15010","address":"FACE 3 BD GARIBALDI - 75015 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":20,"free":38}},{"id":"27360","lat":"48.848045","lng":"2.284381","tags":{"name":"LINOIS","ref":"15030","address":"66 RUE EMERIAU - 75015 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":28,"free":5}},{"id":"26926","lat":"48.851295","lng":"2.309748","tags":{"name":"SEGUR ESTREES","ref":"7018","address":"23 AVENUE DE SEGUR - 75007 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":15,"free":3}},{"id":"26989","lat":"48.869518","lng":"2.302426","tags":{"name":"FRANCOIS 1ER LINCOLN","ref":"8105","address":"56 RUE FRANCOIS 1ER - 75008 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s","available":31,"free":0}},{"id":"26959","lat":"48.867294","lng":"2.307692","tags":{"name":"MONTAIGNE","ref":"8030","address":"25 RUE BAYARD - 75008 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":33,"free":2}},{"id":"26958","lat":"48.865345","lng":"2.310194","tags":{"name":"PLACE DU CANADA","ref":"8029","address":"1 AVENUE FRANKLIN ROOSEVELT - 75008 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":0,"free":35}},{"id":"27449","lat":"48.856152","lng":"2.275188","tags":{"name":"BOULAINVILLIERS","ref":"16031","address":"51 RUE DES VIGNES - 75016 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":18,"free":5}},{"id":"27431","lat":"48.864079","lng":"2.276882","tags":{"name":"AVENUE HENRI MARTIN","ref":"16013","address":"71 AVENUE HENRI MARTIN - 75016 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":32,"free":2}},{"id":"26976","lat":"48.870438","lng":"2.300830","tags":{"name":"DUNANT","ref":"8049","address":"42 AVENUE GEORGE V - 75008 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":21,"free":1}},{"id":"27447","lat":"48.851360","lng":"2.277697","tags":{"name":"MAISON DE RADIO FRANCE","ref":"16029","address":"1 RUE GROS - 75016 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":0,"free":0}},{"id":"27435","lat":"48.861721","lng":"2.275347","tags":{"name":"RUE DE SIAM","ref":"16017","address":"1 BIS RUE DE SIAM - 75016 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598528,"updated":"30\/06\/2013 | 15 h 22 m 08 s","available":16,"free":0}},{"id":"27429","lat":"48.868111","lng":"2.281478","tags":{"name":"VICTOR HUGO RUE DE LA POMPE","ref":"16011","address":"118 AVENUE VICTOR HUGO - 75016 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":39,"free":0}},{"id":"26994","lat":"48.870407","lng":"2.301123","tags":{"name":"PLACE DUNANT","ref":"8549","address":"39 AVENUE GEORGE V - 75008 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":17,"free":7}},{"id":"27419","lat":"48.871216","lng":"2.293692","tags":{"name":"AVENUE DES PORTUGAIS","ref":"16001","address":"2 AVENUE DES PORTUGAIS - 75016 PARIS","bonus":"1","open":"1","total":"26","timestamp":1372598525,"updated":"30\/06\/2013 | 15 h 22 m 05 s","available":25,"free":0}},{"id":"27439","lat":"48.858429","lng":"2.274309","tags":{"name":"RUE FRANCOIS PONSARD","ref":"16021","address":"1 RUE FRANCOIS PONSARD - 75016 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s","available":20,"free":3}},{"id":"27342","lat":"48.845833","lng":"2.301753","tags":{"name":"THEBAUD RUE DE CAMBRONNE","ref":"15011","address":"32 RUE CAMBRONNE - 75015 PARIS","bonus":"0","open":"1","total":"62","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":13,"free":49}},{"id":"27423","lat":"48.870304","lng":"2.285075","tags":{"name":"POINCARE VICTOR HUGO","ref":"16005","address":"89 AVENUE RAYMOND POINCARE - 75016 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":22,"free":3}},{"id":"27443","lat":"48.852787","lng":"2.275581","tags":{"name":"FONTAINE RAYNOUARD","ref":"16025","address":"4 RUE JEAN DE LA FONTAINE - 75016 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s","available":35,"free":32}},{"id":"26969","lat":"48.870071","lng":"2.304315","tags":{"name":"CHAMPS ELYSEES CHARRON","ref":"8040","address":"65 RUE PIERRE CHARRON - 75008 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598444,"updated":"30\/06\/2013 | 15 h 20 m 44 s","available":30,"free":2}},{"id":"27466","lat":"48.871361","lng":"2.288866","tags":{"name":"PAUL VAL\u2026RY","ref":"16104","address":"26-32 RUE PAUL VALERY - 75016 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":33,"free":0}},{"id":"26993","lat":"48.871346","lng":"2.300187","tags":{"name":"BASSANO","ref":"8115","address":"10 RUE VERNET - 75008 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":19,"free":2}},{"id":"27351","lat":"48.844807","lng":"2.297572","tags":{"name":"CROIX NIVERT","ref":"15021","address":"DEV 2 RUE JOSEPH LOUVILLE - 75015 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598513,"updated":"30\/06\/2013 | 15 h 21 m 53 s","available":9,"free":48}},{"id":"27363","lat":"48.844791","lng":"2.290542","tags":{"name":"VIOLET","ref":"15033","address":"5 PLACE VIOLET - 75015 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":14,"free":33}},{"id":"26938","lat":"48.871704","lng":"2.298528","tags":{"name":"GALILLE","ref":"8003","address":"63 RUE GALILEE - 75008 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598438,"updated":"30\/06\/2013 | 15 h 20 m 38 s","available":17,"free":0}},{"id":"26970","lat":"48.870689","lng":"2.303222","tags":{"name":"CHAMPS ELYSEES LINCOLN","ref":"8041","address":"16 RUE DE LINCOLN - 75008 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598444,"updated":"30\/06\/2013 | 15 h 20 m 44 s","available":28,"free":9}},{"id":"26918","lat":"48.860771","lng":"2.314838","tags":{"name":"INVALIDES","ref":"7010","address":"FACE 3 RUE DE CONSTANTINE - 75007 PARIS","bonus":"0","open":"1","total":"65","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":44,"free":21}},{"id":"27364","lat":"48.844425","lng":"2.294041","tags":{"name":"COMMERCE","ref":"15034","address":"2 RUE LAKANAL - 75015 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":2,"free":51}},{"id":"26923","lat":"48.857288","lng":"2.315310","tags":{"name":"VARENNE","ref":"7015","address":"9 BOULEVARD DES INVALIDES - 75007 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":24,"free":22}},{"id":"27340","lat":"48.847176","lng":"2.307052","tags":{"name":"SUFFREN","ref":"15009","address":"140 AVENUE DE SUFFREN - 75015 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":5,"free":33}},{"id":"26947","lat":"48.869617","lng":"2.306621","tags":{"name":"MARIGNAN","ref":"8013","address":"24 RUE DE MARIGNAN - 75008 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":32,"free":1}},{"id":"27470","lat":"48.860996","lng":"2.273129","tags":{"name":"OCTAVE FEUILLET","ref":"16110","address":"4, 6 RUE OCTAVE FEUILLET - 75016 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":19,"free":2}},{"id":"27405","lat":"48.844730","lng":"2.287141","tags":{"name":"MUS\u2026E DES T\u2026L\u2026COMMUNICATIONS","ref":"15108","address":"88 - 90 RUE DE LOURMEL - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":5,"free":17}},{"id":"27468","lat":"48.865982","lng":"2.275726","tags":{"name":"GODARD","ref":"16107","address":"2 RUE BENJAMIN GODARD - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":30,"free":3}},{"id":"27465","lat":"48.872799","lng":"2.291508","tags":{"name":"TRAKTIR","ref":"16103","address":"3 RUE TRAKTIR - 75016 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598535,"updated":"30\/06\/2013 | 15 h 22 m 15 s","available":20,"free":1}},{"id":"26922","lat":"48.851677","lng":"2.314634","tags":{"name":"SAINT FRANCOIS XAVIER","ref":"7014","address":"35 BOULEVARD DES INVALIDES - 75007 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598436,"updated":"30\/06\/2013 | 15 h 20 m 36 s","available":18,"free":20}},{"id":"26968","lat":"48.870483","lng":"2.307663","tags":{"name":"COLISEE","ref":"8039","address":"6 RUE DU COLISEE - 75008 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598444,"updated":"30\/06\/2013 | 15 h 20 m 44 s","available":14,"free":10}},{"id":"26979","lat":"48.872883","lng":"2.299973","tags":{"name":"WASHINGTON","ref":"8052","address":"2 RUE BALZAC - 75008 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598446,"updated":"30\/06\/2013 | 15 h 20 m 46 s","available":30,"free":0}},{"id":"27393","lat":"48.846382","lng":"2.280008","tags":{"name":"HUMBERT","ref":"15065","address":"23 RUE EMILE ZOLA - 75015 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":9,"free":43}},{"id":"27467","lat":"48.870808","lng":"2.281149","tags":{"name":"CREVAUX","ref":"16105","address":"1 RUE CREVAUX - 75016 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598536,"updated":"30\/06\/2013 | 15 h 22 m 16 s","available":30,"free":0}},{"id":"27366","lat":"48.843075","lng":"2.295141","tags":{"name":"LAMBERT","ref":"15036","address":"102 RUE DE LA CROIX NIVERT - 75015 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598516,"updated":"30\/06\/2013 | 15 h 21 m 56 s","available":1,"free":45}},{"id":"26957","lat":"48.873432","lng":"2.297707","tags":{"name":"HOUSSAYE","ref":"8028","address":"1 RUE ARSENE HOUSSAYE - 75008 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":25,"free":3}},{"id":"27436","lat":"48.864410","lng":"2.272449","tags":{"name":"FLANDRIN","ref":"16018","address":"2 BOULEVARD FLANDRIN - 75016 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598528,"updated":"30\/06\/2013 | 15 h 22 m 08 s","available":16,"free":0}},{"id":"26960","lat":"48.869709","lng":"2.310715","tags":{"name":"ROND POINT DES CHAMPS ELYSEES","ref":"8031","address":"2 RUE JEAN MERMOZ - 75008 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":12,"free":20}},{"id":"26977","lat":"48.871513","lng":"2.307488","tags":{"name":"BOETIE PONTHIEU","ref":"8050","address":"116 RUE DE LA BOETIE - 75008 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":34,"free":11}},{"id":"27365","lat":"48.842461","lng":"2.292174","tags":{"name":"PLACE ETIENNE PERNET","ref":"15035","address":"2 RUE DES FRERES MORANE - 75015 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598516,"updated":"30\/06\/2013 | 15 h 21 m 56 s","available":4,"free":38}},{"id":"27392","lat":"48.846294","lng":"2.278414","tags":{"name":"JAVEL","ref":"15064","address":"DEV 5 AVENUE EMILE ZOLA - 75015 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":10,"free":34}},{"id":"27343","lat":"48.843277","lng":"2.302308","tags":{"name":"MADEMOISELLE","ref":"15012","address":"76 RUE CAMBRONNE - 75015 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":22,"free":41}},{"id":"27444","lat":"48.855484","lng":"2.270409","tags":{"name":"RANELAGH","ref":"16026","address":"91 RUE DU RANELAGH - 75016 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":23,"free":0}},{"id":"26919","lat":"48.859070","lng":"2.318624","tags":{"name":"ST DOMINIQUE","ref":"7011","address":"30 BIS RUE LAS CASES - 75007 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":19,"free":3}},{"id":"27446","lat":"48.851006","lng":"2.272469","tags":{"name":"MILLET - JEAN DE LA FONTAINE","ref":"16028","address":"12 RUE FRANCOIS MILLET - 75016 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":8,"free":58}},{"id":"26988","lat":"48.874016","lng":"2.299916","tags":{"name":"FRIEDLAND CHATEAUBRIAND","ref":"8104","address":"27\/31 RUE DE CHATEAUBRIAND - 75008 PARIS","bonus":"1","open":"1","total":"31","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s","available":31,"free":0}},{"id":"26921","lat":"48.847504","lng":"2.312688","tags":{"name":"PLACE DE BRETEUIL","ref":"7013","address":"17 RUE DUROC - 75007 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":0,"free":54}},{"id":"26935","lat":"48.857830","lng":"2.319149","tags":{"name":"SAINTE CLOTHILDE","ref":"7102","address":"FACE 19 RUE CASIMIR PERIER - 75007 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598438,"updated":"30\/06\/2013 | 15 h 20 m 38 s","available":30,"free":11}},{"id":"26986","lat":"48.873554","lng":"2.303289","tags":{"name":"LAMENAIS WASHINGTON","ref":"8102","address":"1 RUE LAMENNAIS - 75008 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s","available":26,"free":0}},{"id":"26937","lat":"48.866844","lng":"2.315780","tags":{"name":"PETIT PALAIS","ref":"8001","address":"AV. DUTUIT - 75008 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598438,"updated":"30\/06\/2013 | 15 h 20 m 38 s","available":31,"free":9}},{"id":"27391","lat":"48.843296","lng":"2.283209","tags":{"name":"SAINT CHARLES - CONVENTION","ref":"15063","address":"59 RUE DE LA CONVENTION - 75015 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":15,"free":3}},{"id":"27430","lat":"48.868778","lng":"2.274355","tags":{"name":"BOULEVARD FLANDRIN","ref":"16012","address":"68 BOULEVARD FLANDRIN - 75016 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598527,"updated":"30\/06\/2013 | 15 h 22 m 07 s","available":41,"free":1}},{"id":"26984","lat":"48.874947","lng":"2.297439","tags":{"name":"HOCHE","ref":"8057","address":"62 AVENUE HOCHE - 75008 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s"}},{"id":"27350","lat":"48.841709","lng":"2.298549","tags":{"name":"MAIRIE DU 15EME","ref":"15020","address":"4 RUE LEON SECHE - 75015 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598513,"updated":"30\/06\/2013 | 15 h 21 m 53 s","available":7,"free":24}},{"id":"27344","lat":"48.843544","lng":"2.306559","tags":{"name":"LECOURBE VOLONTAIRE","ref":"15013","address":"DEV 1 RUE DES VOLONTAIRES - 75015 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":25,"free":25}},{"id":"27390","lat":"48.842144","lng":"2.285863","tags":{"name":"BOUCICAUT","ref":"15062","address":"87 RUE DE LA CONVENTION - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":7,"free":28}},{"id":"26920","lat":"48.854267","lng":"2.319454","tags":{"name":"CITE VANEAU","ref":"7012","address":"7 CITE VANEAU - 75007 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":30,"free":3}},{"id":"26983","lat":"48.875378","lng":"2.296555","tags":{"name":"WAGRAM","ref":"8056","address":"21 RUE BEAUJON - 75008 PARIS","bonus":"0","open":"1","total":"11","timestamp":1372598446,"updated":"30\/06\/2013 | 15 h 20 m 46 s","available":10,"free":1}},{"id":"26980","lat":"48.874748","lng":"2.301771","tags":{"name":"FRIEDLAND","ref":"8053","address":"PLACE GEORGES GUILLAUMIN - 75008 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598446,"updated":"30\/06\/2013 | 15 h 20 m 46 s","available":36,"free":2}},{"id":"27514","lat":"48.875538","lng":"2.293732","tags":{"name":"CARNOT","ref":"17033","address":"8 AVENUE CARNOT - 75017 PARIS","bonus":"1","open":"1","total":"32","timestamp":1372598544,"updated":"30\/06\/2013 | 15 h 22 m 24 s","available":31,"free":1}},{"id":"27448","lat":"48.847668","lng":"2.273556","tags":{"name":"MIRABEAU","ref":"16030","address":"4 PLACE DE BARCELONE - 75016 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":22,"free":32}},{"id":"26917","lat":"48.861374","lng":"2.320131","tags":{"name":"ASSEMBLEE NATIONALE","ref":"7009","address":"FACE 119 RUE DE LILLE - 75007 PARIS","bonus":"0","open":"1","total":"62","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":26,"free":34}},{"id":"27437","lat":"48.863026","lng":"2.268807","tags":{"name":"HENRI MARTIN","ref":"16019","address":"FACE 98 AV. HENRI MARTIN - 75016 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598528,"updated":"30\/06\/2013 | 15 h 22 m 08 s","available":5,"free":31}},{"id":"27339","lat":"48.844837","lng":"2.311086","tags":{"name":"SEVRES LECOURBE","ref":"15008","address":"FACE 4 BOULEVARD PASTEUR - 75015 PARIS","bonus":"0","open":"1","total":"62","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":14,"free":42}},{"id":"26987","lat":"48.873795","lng":"2.306300","tags":{"name":"D'ARTOIS BERRY","ref":"8103","address":"31 RUE D'ARTOIS - 75008 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s","available":23,"free":0}},{"id":"27464","lat":"48.873569","lng":"2.281513","tags":{"name":"PERGOL\u00bbSE\/ MARBEAU","ref":"16102","address":"52-54 RUE PERGOL\u00bbSE - 75016 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598535,"updated":"30\/06\/2013 | 15 h 22 m 15 s","available":27,"free":0}},{"id":"27396","lat":"48.841248","lng":"2.288387","tags":{"name":"BOUCICAUT FAURE","ref":"15069","address":"41 AVENUE FELIX FAURE - 75015 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":8,"free":38}},{"id":"26962","lat":"48.872787","lng":"2.309723","tags":{"name":"SAINT PHILIPPE DU ROULE","ref":"8033","address":"1 RUE DU CDT RIVIERE - 75008 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":21,"free":5}},{"id":"27445","lat":"48.852859","lng":"2.268484","tags":{"name":"JASMIN","ref":"16027","address":"79 AV MOZART- 75016 PARIS","bonus":"0","open":"1","total":"61","timestamp":1372598532,"updated":"30\/06\/2013 | 15 h 22 m 12 s","available":55,"free":6}},{"id":"27481","lat":"48.870754","lng":"2.274877","tags":{"name":"STADE WILMILLE","ref":"16135","address":"ROND POINT DU MARECHAL DELATRE DE TASSIGNY - 75016 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598538,"updated":"30\/06\/2013 | 15 h 22 m 18 s","available":23,"free":1}},{"id":"27422","lat":"48.870754","lng":"2.274875","tags":{"name":"BOULEVARD LANNES","ref":"16004","address":"FACE 2 BOULEVARD LANNES - 75016 PARIS","bonus":"0","open":"1","total":"70","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":65,"free":5}},{"id":"26909","lat":"48.847771","lng":"2.316184","tags":{"name":"DUROC","ref":"7001","address":"63 BOULEVARD DES INVALIDES - 75007 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":14,"free":31}},{"id":"27388","lat":"48.844292","lng":"2.277346","tags":{"name":"MONDRIAN","ref":"15060","address":"9 PLACE DE LA MONTAGNE DU GOULET - 75015 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":1,"free":20}},{"id":"27367","lat":"48.840416","lng":"2.295465","tags":{"name":"GROULT","ref":"15037","address":"202 RUE LECOURBE - 75015 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598516,"updated":"30\/06\/2013 | 15 h 21 m 56 s","available":7,"free":39}},{"id":"27406","lat":"48.842442","lng":"2.281071","tags":{"name":"CEVENNES","ref":"15109","address":"65 - 67 RUE DES CEVENNES - 75015 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":6,"free":22}},{"id":"27420","lat":"48.875183","lng":"2.284219","tags":{"name":"PERGOLESE","ref":"16002","address":"FACE 25 RUE PERGOLESE - 75016 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598525,"updated":"30\/06\/2013 | 15 h 22 m 05 s","available":38,"free":0}},{"id":"27517","lat":"48.876175","lng":"2.288247","tags":{"name":"ARGENTINE","ref":"17038","address":"42 AVENUE DE LA GRANDE ARMEE - 75017 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":55,"free":0}},{"id":"27480","lat":"48.863758","lng":"2.267505","tags":{"name":"BOIS DE BOULOGNE \/ PORTE DE LA MUETTE 2","ref":"16130","address":"AVENUE LOUIS BARTHOU \/ PLACE DE LA COLOMBIE - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598538,"updated":"30\/06\/2013 | 15 h 22 m 18 s","available":11,"free":22}},{"id":"26981","lat":"48.876141","lng":"2.301303","tags":{"name":"HOCHE ALBRECHT","ref":"8054","address":"10 AVENUE BERTHIER ALBRECHT - 75008 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598446,"updated":"30\/06\/2013 | 15 h 20 m 46 s","available":32,"free":0}},{"id":"26961","lat":"48.871475","lng":"2.313885","tags":{"name":"MATIGNON","ref":"8032","address":"27 AVENUE MATIGNON - 75008 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":62,"free":4}},{"id":"26963","lat":"48.874809","lng":"2.308314","tags":{"name":"HAUSSMANN COURCELLES","ref":"8034","address":"49 RUE DE BERRI - 75008 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":33,"free":1}},{"id":"27474","lat":"48.849869","lng":"2.268257","tags":{"name":"GEORGES SAND","ref":"16116","address":"23 rue Georges Sand - 75016 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":26,"free":3}},{"id":"27368","lat":"48.839634","lng":"2.300654","tags":{"name":"PLACE ADOLPHE CHERIOUX","ref":"15038","address":"18 PLACE ADOLPHE CHERIOUX - 75015 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598516,"updated":"30\/06\/2013 | 15 h 21 m 56 s","available":28,"free":36}},{"id":"27382","lat":"48.839222","lng":"2.291541","tags":{"name":"LECOURBE","ref":"15053","address":"250 RUE LECOURBE - 75015 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598519,"updated":"30\/06\/2013 | 15 h 21 m 59 s","available":13,"free":31}},{"id":"27345","lat":"48.841320","lng":"2.308089","tags":{"name":"VOLONTAIRES","ref":"15014","address":"25 RUE DES VOLONTAIRES - 75015 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":29,"free":1}},{"id":"27525","lat":"48.877533","lng":"2.294513","tags":{"name":"MAC MAHON","ref":"17046","address":"18 AVENUE MARC MAHON - 75017 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":23,"free":2}},{"id":"27349","lat":"48.840057","lng":"2.304507","tags":{"name":"VAUGIRARD CAMBRONNE","ref":"15019","address":"3 RUE PAUL BARRUEL - 75015 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598513,"updated":"30\/06\/2013 | 15 h 21 m 53 s","available":19,"free":3}},{"id":"26916","lat":"48.858318","lng":"2.323838","tags":{"name":"SOLFERINO","ref":"7008","address":"10 RUE DE VILLERSEXEL - 75007 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598435,"updated":"30\/06\/2013 | 15 h 20 m 35 s","available":12,"free":2}},{"id":"27400","lat":"48.843418","lng":"2.275108","tags":{"name":"SQUARE DES C\u2026VENNES","ref":"15103","address":"01 RUE CAUCHY - 75015 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598522,"updated":"30\/06\/2013 | 15 h 22 m 02 s","available":1,"free":48}},{"id":"27463","lat":"48.876694","lng":"2.283458","tags":{"name":"MALAKOFF","ref":"16101","address":"161 AVENUE MALAKOFF - 75016 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598535,"updated":"30\/06\/2013 | 15 h 22 m 15 s","available":33,"free":1}},{"id":"27438","lat":"48.857384","lng":"2.264277","tags":{"name":"PORTE DE PASSY","ref":"16020","address":"1 PLACE DE LA PORTE DE PASSY - 75016 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598531,"updated":"30\/06\/2013 | 15 h 22 m 11 s"}},{"id":"26910","lat":"48.848579","lng":"2.320417","tags":{"name":"VANEAU","ref":"7002","address":"86 RUE VANEAU - 75007 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":31,"free":3}},{"id":"27337","lat":"48.842651","lng":"2.312727","tags":{"name":"PLACE TREFOUEL","ref":"15005","address":"FACE 24 BOULEVARD PASTEUR - 75015 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":35,"free":4}},{"id":"27450","lat":"48.847500","lng":"2.268484","tags":{"name":"EGLISE D AUTEUIL","ref":"16032","address":"PLACE DE L'EGLISE D'AUTEUIL - 75016 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598533,"updated":"30\/06\/2013 | 15 h 22 m 13 s","available":16,"free":3}},{"id":"26982","lat":"48.878189","lng":"2.299296","tags":{"name":"TERNES COURCELLES","ref":"8055","address":"87 BD COURCELLES - 75008 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598446,"updated":"30\/06\/2013 | 15 h 20 m 46 s","available":28,"free":0}},{"id":"27518","lat":"48.878155","lng":"2.288518","tags":{"name":"PLACE SAINT FERDINAND","ref":"17039","address":"26 RUE SAINT FERDINAND - 75017 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":37,"free":0}},{"id":"27524","lat":"48.878410","lng":"2.297831","tags":{"name":"PLACE DES TERNES - 5","ref":"17045","address":"5 PLACE DES TERNES - 75017 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":41,"free":1}},{"id":"27521","lat":"48.877750","lng":"2.284444","tags":{"name":"PORTE MAILLOT","ref":"17042","address":"FACE 279 BOULEVARD PEREIRE - 75017 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":33,"free":4}},{"id":"27387","lat":"48.840714","lng":"2.278019","tags":{"name":"CITROEN","ref":"15059","address":"RUE BALARD - 75015 PARIS","bonus":"0","open":"1","total":"64","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":1,"free":63}},{"id":"27381","lat":"48.837677","lng":"2.295587","tags":{"name":"CONVENTION","ref":"15052","address":"183 RUE DE LA CONVENTION - 75015 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":19,"free":29}},{"id":"27338","lat":"48.844578","lng":"2.317757","tags":{"name":"CHERCHE MIDI","ref":"15006","address":"FACE AU 138 RUE DU CHERCHE MIDI - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":22,"free":14}},{"id":"27383","lat":"48.837971","lng":"2.287582","tags":{"name":"CHANDON","ref":"15054","address":"293 RUE LECOURBE - 75015 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598519,"updated":"30\/06\/2013 | 15 h 21 m 59 s","available":6,"free":12}},{"id":"26915","lat":"48.859711","lng":"2.325809","tags":{"name":"MUS\u2026E D'ORSAY","ref":"7007","address":"62 RUE DE LILLE - 75007 PARIS","bonus":"0","open":"1","total":"65","timestamp":1372598434,"updated":"30\/06\/2013 | 15 h 20 m 34 s","available":0,"free":62}},{"id":"26913","lat":"48.855461","lng":"2.325682","tags":{"name":"BAC","ref":"7005","address":"FACE 2 BOULEVARD RASPAIL - 75007 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598434,"updated":"30\/06\/2013 | 15 h 20 m 34 s","available":47,"free":4}},{"id":"26954","lat":"48.873760","lng":"2.315876","tags":{"name":"MIROMESNIL","ref":"8025","address":"39 RUE DE MIROMESNIL - 75008 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598441,"updated":"30\/06\/2013 | 15 h 20 m 41 s","available":28,"free":5}},{"id":"26908","lat":"48.847031","lng":"2.321289","tags":{"name":"SAINT ROMAIN CHERCHE MIDI","ref":"6108","address":"20 RUE SAINT ROMAIN - 75006 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":16,"free":0}},{"id":"27362","lat":"48.838734","lng":"2.281756","tags":{"name":"LOURMEL","ref":"15032","address":"112 AVE FELIX FAURE - 75015 PARIS","bonus":"0","open":"1","total":"57","timestamp":1372598515,"updated":"30\/06\/2013 | 15 h 21 m 55 s","available":1,"free":55}},{"id":"27515","lat":"48.879494","lng":"2.291498","tags":{"name":"AVENUE DE TERNES","ref":"17036","address":"2-4 PLACE TRISTAN BERNARD - 75017 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598544,"updated":"30\/06\/2013 | 15 h 22 m 24 s","available":21,"free":4}},{"id":"26971","lat":"48.878361","lng":"2.305254","tags":{"name":"VAN DYCK","ref":"8044","address":"2 RUE ALFRED DE VIGNY - 75008 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598444,"updated":"30\/06\/2013 | 15 h 20 m 44 s","available":31,"free":1}},{"id":"27473","lat":"48.852619","lng":"2.262930","tags":{"name":"RAFFET","ref":"16115","address":"52 RUE RAFFET - 75016 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":36,"free":5}},{"id":"26911","lat":"48.851231","lng":"2.325070","tags":{"name":"BON MARCHE","ref":"7003","address":"RUE VELPEAU - 75007 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598434,"updated":"30\/06\/2013 | 15 h 20 m 34 s","available":54,"free":4}},{"id":"27451","lat":"48.848427","lng":"2.265254","tags":{"name":"MICHEL ANGE AUTEUIL","ref":"16033","address":"85 RUE JEAN DE LA FONTAINE - 75016 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598533,"updated":"30\/06\/2013 | 15 h 22 m 13 s","available":29,"free":2}},{"id":"26912","lat":"48.853264","lng":"2.326320","tags":{"name":"RASPAIL VARENNE","ref":"7004","address":"FACE 28 BOULEVARD RASPAIL - 75007 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598434,"updated":"30\/06\/2013 | 15 h 20 m 34 s","available":12,"free":23}},{"id":"26965","lat":"48.877457","lng":"2.309694","tags":{"name":"RIO","ref":"8036","address":"39 RUE DE LISBONNE - 75008 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":39,"free":0}},{"id":"27479","lat":"48.862083","lng":"2.261746","tags":{"name":"BOIS DE BOULOGNE \/ PORTE DE LA MUETTE 1","ref":"16129","address":"CHEMIN DE LA CEINTURE DU LAC INTERIEUR \/ AVENUE DE SAINT CLOUD - 75016 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598538,"updated":"30\/06\/2013 | 15 h 22 m 18 s","available":0,"free":34}},{"id":"27410","lat":"48.840401","lng":"2.313118","tags":{"name":"FALGUIERE ARSONVAL","ref":"15113","address":"2 RUE D'ARSONVAL - 75015 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":21,"free":3}},{"id":"26768","lat":"48.866283","lng":"2.325249","tags":{"name":"RIVOLI CONCORDE","ref":"1020","address":"2 RUE CAMBON - 75001 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":0,"free":39}},{"id":"27519","lat":"48.879814","lng":"2.287956","tags":{"name":"TERNES PEREIRE","ref":"17040","address":"227 BOULEVARD PEREIRE SUR TPC - 75017 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":43,"free":2}},{"id":"27506","lat":"48.879429","lng":"2.303467","tags":{"name":"COURCELLES","ref":"17025","address":"2 RUE DE CHAZELLES - 75017 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":31,"free":1}},{"id":"27346","lat":"48.838310","lng":"2.308532","tags":{"name":"DUTOT","ref":"15016","address":"59 RUE DUTOT - 75015 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":47,"free":11}},{"id":"27421","lat":"48.877930","lng":"2.278960","tags":{"name":"ANDRE MAUROIS","ref":"16003","address":"2 BIS BOULEVARD ANDRE MAUROIS - 75016 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598526,"updated":"30\/06\/2013 | 15 h 22 m 06 s","available":25,"free":3}},{"id":"26934","lat":"48.852242","lng":"2.326606","tags":{"name":"SEVRES BABYLONE","ref":"7101","address":"BOULEVARD RASPAIL - 75007 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598438,"updated":"30\/06\/2013 | 15 h 20 m 38 s","available":44,"free":8}},{"id":"26955","lat":"48.875458","lng":"2.315465","tags":{"name":"MESSINE","ref":"8026","address":"2 AVENUE MESSINE - 75008 PARIS","bonus":"0","open":"1","total":"13","timestamp":1372598441,"updated":"30\/06\/2013 | 15 h 20 m 41 s","available":10,"free":2}},{"id":"26964","lat":"48.876598","lng":"2.313165","tags":{"name":"NARVICK","ref":"8035","address":"54 RUE DE LA BIENFAISANCE - 75008 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":45,"free":0}},{"id":"27397","lat":"48.838634","lng":"2.278274","tags":{"name":"BLANC","ref":"15070","address":"88 RUE BALARD - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":0,"free":0}},{"id":"26898","lat":"48.849140","lng":"2.325175","tags":{"name":"SAINT PLACIDE CHERCHE MIDI","ref":"6026","address":"28 RUE SAINT PLACIDE - 75006 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":54,"free":5}},{"id":"27380","lat":"48.835979","lng":"2.293467","tags":{"name":"ROLLET","ref":"15051","address":"1 PLACE HENRI ROLLET - 75015 PARIS","bonus":"0","open":"1","total":"8","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":3,"free":5}},{"id":"27409","lat":"48.838760","lng":"2.310936","tags":{"name":"FALGUI\u00bbRE LEBRUN","ref":"15112","address":"19 RUE VIGEE LEBRUN - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":22,"free":0}},{"id":"27336","lat":"48.840595","lng":"2.315363","tags":{"name":"VAUGIRARD PASTEUR","ref":"15004","address":"DEV 71 BOULEVARD DE VAUGIRARD - 75015 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598511,"updated":"30\/06\/2013 | 15 h 21 m 51 s","available":20,"free":0}},{"id":"26940","lat":"48.869091","lng":"2.324430","tags":{"name":"MADELEINE","ref":"8005","address":"04 PLACE DE LA MADELEINE - 75008 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":18,"free":19}},{"id":"26939","lat":"48.870422","lng":"2.323289","tags":{"name":"MALESHERBES PASQUIER","ref":"8004","address":"FACE 4 BD MALESHERBES - 75008 PARIS","bonus":"0","open":"1","total":"64","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":50,"free":14}},{"id":"27384","lat":"48.836708","lng":"2.283692","tags":{"name":"VASCO DE GAMA","ref":"15055","address":"44 RUE VASCO DE GAMA - 75015 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598519,"updated":"30\/06\/2013 | 15 h 21 m 59 s","available":2,"free":49}},{"id":"27522","lat":"48.880234","lng":"2.285381","tags":{"name":"PLACE GENERAL KOENIG","ref":"17043","address":"10 RUE BELIDOR - 75017 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":36,"free":2}},{"id":"27369","lat":"48.836060","lng":"2.301866","tags":{"name":"CHARLES VALLIN","ref":"15039","address":"133 RUE DE L'ABBE GROULT - 75015 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598516,"updated":"30\/06\/2013 | 15 h 21 m 56 s","available":8,"free":4}},{"id":"27334","lat":"48.843086","lng":"2.320264","tags":{"name":"BOURDELLE","ref":"15002","address":"26 AVENUE DU MAINE - 75015 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598510,"updated":"30\/06\/2013 | 15 h 21 m 50 s","available":6,"free":11}},{"id":"26948","lat":"48.873486","lng":"2.320281","tags":{"name":"ROQUEPINE","ref":"8015","address":"4 RUE ROQUEPINE - 75008 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":44,"free":0}},{"id":"27456","lat":"48.845097","lng":"2.265724","tags":{"name":"RUE MOLITOR","ref":"16038","address":"RUE MOLITOR - 75016 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":25,"free":5}},{"id":"27510","lat":"48.881413","lng":"2.294828","tags":{"name":"PLACE AIM\u2026E MAILLART","ref":"17029","address":"29 RUE PIERRE DEMOURS - 75017 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":35,"free":1}},{"id":"26899","lat":"48.846130","lng":"2.324241","tags":{"name":"VAUGIRARD DESGOFFE","ref":"6027","address":"2 RUE BLAISE DESGOFFE - 75006 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":27,"free":1}},{"id":"27412","lat":"48.841324","lng":"2.318292","tags":{"name":"VAUGIRARD","ref":"15115","address":"25-31 BOULEVARD DE VAUGIRARD - 75015 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":43,"free":5}},{"id":"27348","lat":"48.836575","lng":"2.306875","tags":{"name":"ALLERAY","ref":"15018","address":"85 RUE DUTOT - 75015 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598513,"updated":"30\/06\/2013 | 15 h 21 m 53 s","available":34,"free":21}},{"id":"26907","lat":"48.850243","lng":"2.327552","tags":{"name":"CHERCHE MIDI","ref":"6107","address":"29 RUE DU CHERCHE MIDI - 75006 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":20,"free":2}},{"id":"27335","lat":"48.841808","lng":"2.319510","tags":{"name":"GARE DE MONTPARNASSE","ref":"15003","address":"TP DU 1-13 BOULEVARD DE VAUGIRARD - 75015 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598510,"updated":"30\/06\/2013 | 15 h 21 m 50 s","available":59,"free":5}},{"id":"27415","lat":"48.835526","lng":"2.302622","tags":{"name":"PLACE CHARLES VALLIN","ref":"15122","address":"PLACE CHARLES VALLIN - 75015 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":4,"free":9}},{"id":"26992","lat":"48.874924","lng":"2.319395","tags":{"name":"PLACE ST AUGUSTIN","ref":"8113","address":"5 PLACE SAINT AUGUSTIN - 75008 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":19,"free":1}},{"id":"27386","lat":"48.840096","lng":"2.271590","tags":{"name":"GEORGES POMPIDOU","ref":"15058","address":"4 PLACE DU MOULIN DE JAVEL - 75015 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598519,"updated":"30\/06\/2013 | 15 h 21 m 59 s","available":22,"free":14}},{"id":"27812","lat":"48.879440","lng":"2.278536","tags":{"name":"MONTROSIER (NEUILLY)","ref":"22011","address":"7 RUE MONTROSIER - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27333","lat":"48.843750","lng":"2.322452","tags":{"name":"ARRIVEE","ref":"15001","address":"8 RUE DE L'ARRIVEE - 75015 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598510,"updated":"30\/06\/2013 | 15 h 21 m 50 s","available":31,"free":12}},{"id":"27516","lat":"48.881832","lng":"2.292141","tags":{"name":"BAYERN PEREIRE","ref":"17037","address":"40 RUE BAYEN - 75017 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598544,"updated":"30\/06\/2013 | 15 h 22 m 24 s","available":17,"free":4}},{"id":"27408","lat":"48.834660","lng":"2.295789","tags":{"name":"SERRES","ref":"15111","address":"48 RUE OLIVIER DE SERRES - 75015 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":20,"free":4}},{"id":"27407","lat":"48.836208","lng":"2.281039","tags":{"name":"PLACE ROBERT GUILLEMARD","ref":"15110","address":"PLACE ROBERT GUILLEMARD - 75015 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":3,"free":14}},{"id":"27413","lat":"48.843201","lng":"2.322257","tags":{"name":"PLACE BIENVENUE","ref":"15118","address":"11 RUE DE L'ARRIVEE - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":18,"free":4}},{"id":"26767","lat":"48.866699","lng":"2.328288","tags":{"name":"SAINT HONORE VENDOME","ref":"1019","address":"237 RUE SAINT HONORE - 75001 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":0,"free":10}},{"id":"27401","lat":"48.837681","lng":"2.275731","tags":{"name":"H\u2018PITAL GEORGES POMPIDOU (PROP 2)","ref":"15104","address":"FACE 66 - 70 RUE LEBLANC - 75015 PARIS","bonus":"0","open":"1","total":"65","timestamp":1372598522,"updated":"30\/06\/2013 | 15 h 22 m 02 s","available":0,"free":65}},{"id":"27507","lat":"48.881859","lng":"2.301138","tags":{"name":"WAGRAM COURCELLES","ref":"17026","address":"105 RUE JOUFFROY D'ABBANS - 75017 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":36,"free":1}},{"id":"26896","lat":"48.853943","lng":"2.330154","tags":{"name":"SAINT GERMAIN DES PRES","ref":"6024","address":"55 RUE DES SAINTS PERES - 75006 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":11,"free":13}},{"id":"27385","lat":"48.836536","lng":"2.278718","tags":{"name":"BALARD","ref":"15056","address":"13 PLACE BALARD - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598519,"updated":"30\/06\/2013 | 15 h 21 m 59 s","available":0,"free":22}},{"id":"26766","lat":"48.864796","lng":"2.329431","tags":{"name":"RIVOLI TUILERIE","ref":"1018","address":"2 RUE D'ALGER - 75001 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":1,"free":20}},{"id":"26879","lat":"48.847519","lng":"2.326973","tags":{"name":"REGARD","ref":"6004","address":"19 RUE DU REGARD - 75006 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598428,"updated":"30\/06\/2013 | 15 h 20 m 28 s","available":13,"free":30}},{"id":"27411","lat":"48.838936","lng":"2.316168","tags":{"name":"PASTEUR COTENTIN","ref":"15114","address":"FACE 1 RUE DU COTENTIN - 75015 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":33,"free":0}},{"id":"27028","lat":"48.869957","lng":"2.326600","tags":{"name":"GODOT DE MAUROY","ref":"9034","address":"2 RUE GODOT DE MAUROY - 75009 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":19,"free":3}},{"id":"26897","lat":"48.849209","lng":"2.328515","tags":{"name":"RENNES - ASSAS","ref":"6025","address":"16 RUE D'ASSAS - 75006 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":26,"free":6}},{"id":"27452","lat":"48.847950","lng":"2.260660","tags":{"name":"PORTE D'AUTEUIL","ref":"16034","address":"76 RUE D'AUTEUIL - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598533,"updated":"30\/06\/2013 | 15 h 22 m 13 s","available":31,"free":2}},{"id":"27347","lat":"48.836334","lng":"2.310466","tags":{"name":"PROCESSION","ref":"15017","address":"7 PLACE FALGUIERE - 75015 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598512,"updated":"30\/06\/2013 | 15 h 21 m 52 s","available":21,"free":0}},{"id":"26949","lat":"48.873203","lng":"2.323659","tags":{"name":"SQUARE LOUIS XVI","ref":"8016","address":"DEV 32 RUE PASQUIER - 75008 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":38,"free":0}},{"id":"27389","lat":"48.834766","lng":"2.284142","tags":{"name":"DESNOUETTES","ref":"15061","address":"12 SQUARE DESNOUETTES - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598520,"updated":"30\/06\/2013 | 15 h 22 m 00 s","available":15,"free":7}},{"id":"27532","lat":"48.881725","lng":"2.283683","tags":{"name":"GENERAL KOENIG","ref":"17104","address":"2 BOULEVARD AURELLE DE PALADINES - 75017 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":17,"free":4}},{"id":"26914","lat":"48.858944","lng":"2.331418","tags":{"name":"QUAI VOLTAIRE","ref":"7006","address":"QUAI VOLTAIRE - 75007 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598434,"updated":"30\/06\/2013 | 15 h 20 m 34 s","available":0,"free":31}},{"id":"26951","lat":"48.876202","lng":"2.319794","tags":{"name":"SAINT AUGUSTIN","ref":"8018","address":"18 PLACE HENRI BERGSON - 75008 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598441,"updated":"30\/06\/2013 | 15 h 20 m 41 s","available":20,"free":1}},{"id":"26902","lat":"48.848469","lng":"2.328997","tags":{"name":"ASSAS-VAUGIRARD","ref":"6030","address":"22 RUE D'ASSAS - 75006 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598432,"updated":"30\/06\/2013 | 15 h 20 m 32 s","available":29,"free":3}},{"id":"27455","lat":"48.845181","lng":"2.262113","tags":{"name":"MOLITOR - MICHEL ANGE","ref":"16037","address":"35 RUE MOLITOR - 75016 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":47,"free":4}},{"id":"27357","lat":"48.836567","lng":"2.312707","tags":{"name":"GIDE","ref":"15027","address":"4 RUE ANDRE GIDE - 75015 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598514,"updated":"30\/06\/2013 | 15 h 21 m 54 s","available":19,"free":1}},{"id":"26878","lat":"48.851646","lng":"2.330817","tags":{"name":"SAINT SULPICE","ref":"6003","address":"15 RUE DU VIEUX COLOMBIER - 75006 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598428,"updated":"30\/06\/2013 | 15 h 20 m 28 s","available":2,"free":18}},{"id":"26765","lat":"48.865570","lng":"2.330567","tags":{"name":"SAINT HONORE","ref":"1017","address":"215 RUE SAINT HONORE - 75001 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":1,"free":18}},{"id":"27520","lat":"48.882877","lng":"2.287667","tags":{"name":"PORTE DE VILLIERS","ref":"17041","address":"51 RUE GUERSANT - 75017 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598545,"updated":"30\/06\/2013 | 15 h 22 m 25 s","available":17,"free":22}},{"id":"27499","lat":"48.881161","lng":"2.309512","tags":{"name":"MONCEAU","ref":"17018","address":"4 RUE DE THANN - 75017 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":14,"free":1}},{"id":"26905","lat":"48.850296","lng":"2.330447","tags":{"name":"MEZIERES RENNES","ref":"6103","address":"16 RUE DE MEZIERES - 75006 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":14,"free":40}},{"id":"27332","lat":"48.842842","lng":"2.324442","tags":{"name":"ODESSA","ref":"14127","address":"5-7 RUE D'ODESSA - 75014 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598510,"updated":"30\/06\/2013 | 15 h 21 m 50 s","available":29,"free":11}},{"id":"26966","lat":"48.879604","lng":"2.314554","tags":{"name":"MALSHERBES MONCEAU","ref":"8037","address":"75 RUE DE MONCEAU - 75008 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598443,"updated":"30\/06\/2013 | 15 h 20 m 43 s","available":29,"free":7}},{"id":"26904","lat":"48.852558","lng":"2.331648","tags":{"name":"RENNES SABOT","ref":"6032","address":"7 RUE DU SABOT - 75006 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598432,"updated":"30\/06\/2013 | 15 h 20 m 32 s","available":14,"free":11}},{"id":"26956","lat":"48.877983","lng":"2.318405","tags":{"name":"MAIRIE DU 8 \u00bbME","ref":"8027","address":"28 RUE DE MADRID - 75008 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598442,"updated":"30\/06\/2013 | 15 h 20 m 42 s","available":9,"free":3}},{"id":"27377","lat":"48.833179","lng":"2.299283","tags":{"name":"DANTZIG","ref":"15047","address":"FACE AU 37 RUE MORILLONS - 75015 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":8,"free":44}},{"id":"27511","lat":"48.883640","lng":"2.295152","tags":{"name":"RENNEQUIN PEREIRE","ref":"17030","address":"143 BOULEVARD DE PEREIRE - 75017 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":21,"free":0}},{"id":"27404","lat":"48.833572","lng":"2.285480","tags":{"name":" PALAIS DES SPORTS","ref":"15107","address":"42 BOULEVARD VICTOR - 75015 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598523,"updated":"30\/06\/2013 | 15 h 22 m 03 s","available":6,"free":35}},{"id":"27314","lat":"48.841503","lng":"2.323278","tags":{"name":"PLACE FERNAND MOURLOT","ref":"14101","address":"33 BD EDGAR QUINET - 75014 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598507,"updated":"30\/06\/2013 | 15 h 21 m 47 s","available":29,"free":3}},{"id":"26942","lat":"48.875355","lng":"2.322884","tags":{"name":"ROME SAINT LAZARE","ref":"8008","address":"1 RUE JOSEPH SANSBOEUF - 75008 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":15,"free":3}},{"id":"27395","lat":"48.838169","lng":"2.270338","tags":{"name":"BOULEVARD VICTOR","ref":"15068","address":"FACE 5 BOULEVARD MARTIAL VALIN - 75015 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598521,"updated":"30\/06\/2013 | 15 h 22 m 01 s","available":15,"free":3}},{"id":"27526","lat":"48.883770","lng":"2.298585","tags":{"name":"COURCELLES - DEMOURES","ref":"17047","address":"172 RUE DE COURCELLES - 75017 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":25,"free":1}},{"id":"27476","lat":"48.878719","lng":"2.270568","tags":{"name":"SABLONS MAILLOT","ref":"16121","address":"ROUTE PORTE DES SABLONS \/ PORTE MAILLOT - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":16,"free":14}},{"id":"26769","lat":"48.868217","lng":"2.330494","tags":{"name":"RUE DE LA PAIX","ref":"1022","address":"37 RUE CASANOVA - 75001 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":28,"free":8}},{"id":"26950","lat":"48.876080","lng":"2.322732","tags":{"name":"ROCHER","ref":"8017","address":"14 RUE ROCHER - 75008 PARIS","bonus":"0","open":"1","total":"64","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":63,"free":1}},{"id":"27327","lat":"48.839325","lng":"2.320954","tags":{"name":"MOUCHOTTE","ref":"14117","address":"5 RUE DU COMMANDANT RENE MOUCHOTTE - 75014 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":37,"free":1}},{"id":"27453","lat":"48.848892","lng":"2.257652","tags":{"name":"HYPPODROME D AUTEUIL","ref":"16035","address":"ALLEE DES FORTIFICATIONS - 75016 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598533,"updated":"30\/06\/2013 | 15 h 22 m 13 s","available":40,"free":16}},{"id":"26877","lat":"48.855499","lng":"2.333445","tags":{"name":"SAINT P\u00bbRES","ref":"6002","address":"1 RUE SAINT BENOIT - 75006 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598428,"updated":"30\/06\/2013 | 15 h 20 m 28 s","available":16,"free":6}},{"id":"27324","lat":"48.837292","lng":"2.317483","tags":{"name":"PLACE DE CATALOGNE","ref":"14114","address":"4 RUE ALAIN - 75014 PARIS","bonus":"1","open":"1","total":"43","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":42,"free":1}},{"id":"26880","lat":"48.843296","lng":"2.326541","tags":{"name":"MONTPARNASSE","ref":"6005","address":"40 RUE DU MONTPARNASSE - 75006 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598428,"updated":"30\/06\/2013 | 15 h 20 m 28 s","available":26,"free":21}},{"id":"27370","lat":"48.834118","lng":"2.308850","tags":{"name":"MONCLAR","ref":"15040","address":"33 BIS RUE SAINT AMAND - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":31,"free":5}},{"id":"26941","lat":"48.874229","lng":"2.325570","tags":{"name":"HAUSSMANN ROME","ref":"8007","address":"1 RUE DE ROME - 75008 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":27,"free":2}},{"id":"27457","lat":"48.840961","lng":"2.264394","tags":{"name":"VERSAILLES EXELMANS","ref":"16039","address":"27 BOULEVARD EXELMANS - 75016 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":40,"free":6}},{"id":"27500","lat":"48.882610","lng":"2.309026","tags":{"name":"MALESHERBES","ref":"17019","address":"20 RUE DE PHALSBOURG - 75017 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":18,"free":2}},{"id":"27278","lat":"48.841156","lng":"2.324449","tags":{"name":"EDGAR QUINET","ref":"14001","address":"13 BOULEVARD EDGAR QUINET - 75014 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":21,"free":6}},{"id":"26990","lat":"48.874825","lng":"2.325296","tags":{"name":"L'ISLY","ref":"8108","address":"10-12 RUE DE L'ISLY - 75008 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":50,"free":4}},{"id":"27530","lat":"48.884342","lng":"2.288274","tags":{"name":"ALEXANDRE CHARPENTIER","ref":"17101","address":"FACE 3 RUE ALEXANDRE CHARPENTIER - 75017 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":19,"free":4}},{"id":"26991","lat":"48.877113","lng":"2.322329","tags":{"name":"STOCKOLM ROME","ref":"8110","address":"6 RUE DE STOCKOLM - 75008 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":30,"free":2}},{"id":"27533","lat":"48.883499","lng":"2.282016","tags":{"name":"PALADINES","ref":"17105","address":"18 BOULEVARD D'AURELLE DE PALADINES - 75017 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":39,"free":1}},{"id":"27379","lat":"48.832180","lng":"2.287122","tags":{"name":"PORTE DE VERSAILLES","ref":"15049","address":"2 AVENUE ERNEST RENAN - 75015 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":6,"free":16}},{"id":"27376","lat":"48.832207","lng":"2.302329","tags":{"name":"GEORGES BRASSENS","ref":"15046","address":"42 RUE DES MORILLONS - 75015 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":11,"free":17}},{"id":"27027","lat":"48.872795","lng":"2.328316","tags":{"name":"HAVRE CAUMARTIN","ref":"9033","address":"FACE 45 RUE CAUMARTIN - 75009 PARIS","bonus":"0","open":"1","total":"51","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":34,"free":17}},{"id":"26881","lat":"48.844799","lng":"2.329338","tags":{"name":"NOTRE DAME DES CHAMPS","ref":"6006","address":"41 RUE NOTRE DAME DES CHAMPS - 75006 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598428,"updated":"30\/06\/2013 | 15 h 20 m 28 s","available":14,"free":5}},{"id":"26762","lat":"48.863670","lng":"2.334058","tags":{"name":"RIVOLI MUSEE DU LOUVRE","ref":"1014","address":"5 RUE DE L'ECHELLE - 75001 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598407,"updated":"30\/06\/2013 | 15 h 20 m 07 s","available":0,"free":25}},{"id":"26894","lat":"48.856438","lng":"2.334798","tags":{"name":"BONAPARTE BEAUX ARTS","ref":"6021","address":"17 RUE DES BEAUX ARTS - 75006 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":14,"free":5}},{"id":"27371","lat":"48.832855","lng":"2.306898","tags":{"name":"LABROUSTE","ref":"15041","address":"13 RUE FRANQUET - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":35,"free":1}},{"id":"27813","lat":"48.882751","lng":"2.277406","tags":{"name":"ICHELIS (NEUILLY)","ref":"22012","address":"32 RUE DE MADELEINE MICHELIS - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"26943","lat":"48.874809","lng":"2.326481","tags":{"name":"SAINT LAZARE RER","ref":"8009","address":"1 RUE DE L'ISLY - 75008 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":24,"free":4}},{"id":"26886","lat":"48.853306","lng":"2.334465","tags":{"name":"SAINT GERMAIN COPEAU","ref":"6012","address":"141 BD SAINT GERMAIN - 75006 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":0,"free":17}},{"id":"27459","lat":"48.840218","lng":"2.263834","tags":{"name":"VERSAILLES","ref":"16041","address":"164 AVENUE DE VERSAILLES - 75016 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":37,"free":2}},{"id":"27036","lat":"48.872189","lng":"2.329423","tags":{"name":"AUBER","ref":"9106","address":"3 RUE BOUDREAU - 75009 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598458,"updated":"30\/06\/2013 | 15 h 20 m 58 s","available":12,"free":3}},{"id":"27502","lat":"48.884289","lng":"2.305497","tags":{"name":"WAGRAM (17EME ARR.)","ref":"17021","address":"RUE JOUFFROY D'ABBANS - 75017 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598542,"updated":"30\/06\/2013 | 15 h 22 m 22 s","available":33,"free":2}},{"id":"27508","lat":"48.885262","lng":"2.298286","tags":{"name":"PEREIRE LEVALLOIS","ref":"17027","address":"121 BOULEVARD PEREIRE - 75017 PARIS","bonus":"0","open":"1","total":"51","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":46,"free":5}},{"id":"27306","lat":"48.834259","lng":"2.313392","tags":{"name":"GERGOVIE VERCINGETORIX","ref":"14029","address":"112 RUE VERCINGETORIX - 75014 PARIS","bonus":"1","open":"1","total":"67","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":67,"free":0}},{"id":"27810","lat":"48.880939","lng":"2.271541","tags":{"name":"DE GAULLE 2 (NEUILLY)","ref":"22009","address":"101 AVENUE CHARLES DE GAULLE - 92200 NEUILLY SUR SEINE","bonus":"0","open":"0"}},{"id":"27505","lat":"48.881207","lng":"2.316450","tags":{"name":"VILLIERS","ref":"17024","address":"1\/3 PLACE PROSPER GOUBAUX - 75017 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598542,"updated":"30\/06\/2013 | 15 h 22 m 22 s","available":8,"free":3}},{"id":"27035","lat":"48.874180","lng":"2.327779","tags":{"name":"AUMARTIN PROVENCE","ref":"9104","address":"115 rue de provence - 75009 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":25,"free":4}},{"id":"26770","lat":"48.863499","lng":"2.334846","tags":{"name":"ANDRE MALRAUX MUSEE DU LOUVRE","ref":"1023","address":"165 RUE SAINT HONORE - 75001 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":1,"free":21}},{"id":"27458","lat":"48.843105","lng":"2.259821","tags":{"name":"EXELMANS","ref":"16040","address":"73 BIS BOULEVARD EXELMANS - 75016 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":31,"free":2}},{"id":"26793","lat":"48.867622","lng":"2.333269","tags":{"name":"OPERA CASANOVA","ref":"2020","address":"02 RUE DANIEL CASANOVA - 75002 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598413,"updated":"30\/06\/2013 | 15 h 20 m 13 s","available":19,"free":1}},{"id":"26876","lat":"48.857616","lng":"2.335831","tags":{"name":"INSTITUT","ref":"6001","address":"5 QUAI MALAQUAIS - 75006 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":0,"free":16}},{"id":"27527","lat":"48.882401","lng":"2.314000","tags":{"name":"TOCQUEVILLE","ref":"17048","address":"12 RUE DE TOCQUEVILLE - 75017 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":14,"free":1}},{"id":"26790","lat":"48.869114","lng":"2.332515","tags":{"name":"SAINT AUGUSTIN","ref":"2014","address":"1, 3 RUE DAUNOU - 75002 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":14,"free":2}},{"id":"27026","lat":"48.872971","lng":"2.329466","tags":{"name":"MATHURINS","ref":"9032","address":"12 RUE DES MATHURINS - 75009 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":37,"free":3}},{"id":"27512","lat":"48.885616","lng":"2.290781","tags":{"name":"PORTE DE CHAMPERET","ref":"17031","address":"PLACE DE LA PORTE DE CHAMPERET - 75017 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598544,"updated":"30\/06\/2013 | 15 h 22 m 24 s","available":22,"free":2}},{"id":"27310","lat":"48.836174","lng":"2.319392","tags":{"name":"RUE DE L OUEST CHATEAU","ref":"14034","address":"48 RUE DE L'OUEST - 75014 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":24,"free":0}},{"id":"27417","lat":"48.833221","lng":"2.276630","tags":{"name":"AQUABOULEVARD","ref":"15125","address":"2 AVENUE DE LA PORTE DE SEVRES \/ AQUABOULEVARD - 75015 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598525,"updated":"30\/06\/2013 | 15 h 22 m 05 s","available":0,"free":45}},{"id":"27311","lat":"48.837883","lng":"2.322552","tags":{"name":"MAINE GAITE","ref":"14035","address":"90 AVENUE DU MAINE - 75014 PARIS","bonus":"1","open":"1","total":"48","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":47,"free":1}},{"id":"26884","lat":"48.846722","lng":"2.332395","tags":{"name":"GUYNEMER LUXEMBOURG","ref":"6009","address":"26 RUE GUYNEMER - 75006 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":0,"free":33}},{"id":"27535","lat":"48.885914","lng":"2.293234","tags":{"name":"BERTHIER STUART MERRIL","ref":"17107","address":"182 BOULEVARD BERTHIER - 75017 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598548,"updated":"30\/06\/2013 | 15 h 22 m 28 s","available":35,"free":1}},{"id":"26764","lat":"48.866486","lng":"2.334433","tags":{"name":"OPERA PYRAMIDES","ref":"1016","address":"27 RUE THERESE - 75001 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":2,"free":23}},{"id":"26776","lat":"48.866810","lng":"2.334388","tags":{"name":"OP\u2026RA PYRAMIDES","ref":"1116","address":"4 RUE DE VENTADOUR - 75001 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598410,"updated":"30\/06\/2013 | 15 h 20 m 10 s","available":11,"free":16}},{"id":"27378","lat":"48.830547","lng":"2.292046","tags":{"name":"OLIVIER DE SERRE","ref":"15048","address":"PLACE AMEDEE GIORDANI - 75015 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598518,"updated":"30\/06\/2013 | 15 h 21 m 58 s","available":10,"free":12}},{"id":"26763","lat":"48.863979","lng":"2.335600","tags":{"name":"PLACE ANDRE MALRAUX","ref":"1015","address":"2 PLACE ANDRE MALRAUX - 75001 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598408,"updated":"30\/06\/2013 | 15 h 20 m 08 s","available":1,"free":19}},{"id":"27418","lat":"48.831100","lng":"2.285388","tags":{"name":"RENAN","ref":"15126","address":"RUE ERNEST RENAN \/ PARC DES EXPOSITIONS - 75015 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598525,"updated":"30\/06\/2013 | 15 h 22 m 05 s","available":8,"free":42}},{"id":"27454","lat":"48.845245","lng":"2.256940","tags":{"name":"PORTE MOLITOR","ref":"16036","address":"PLACE DE LA PORTE MOLITOR - 75016 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598533,"updated":"30\/06\/2013 | 15 h 22 m 13 s","available":54,"free":3}},{"id":"27811","lat":"48.881676","lng":"2.271177","tags":{"name":"DE GAULLE 4 (NEUILLY)","ref":"22010","address":"72, AVENUE CHARLES DE GAULLE - 92200 NEUILLY SUR SEINE","bonus":"0","open":"0"}},{"id":"26895","lat":"48.851662","lng":"2.335505","tags":{"name":"MARCHE SAINT GERMAIN - MABILLON","ref":"6022","address":"17 RUE LOBINEAU - 75006 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598431,"updated":"30\/06\/2013 | 15 h 20 m 31 s","available":14,"free":7}},{"id":"27374","lat":"48.830269","lng":"2.296008","tags":{"name":"J DUPRE","ref":"15044","address":"65 RUE DANTZIG - 75015 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":15,"free":18}},{"id":"26952","lat":"48.879955","lng":"2.321360","tags":{"name":"EUROPE","ref":"8019","address":"03 RUE DE NAPLES - 75008 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598441,"updated":"30\/06\/2013 | 15 h 20 m 41 s","available":0,"free":0}},{"id":"26882","lat":"48.842739","lng":"2.329794","tags":{"name":"VAVIN","ref":"6007","address":"18 RUE BREA - 75006 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":15,"free":6}},{"id":"27501","lat":"48.885071","lng":"2.307083","tags":{"name":"NICARAGUA","ref":"17020","address":"49 RUE JOUFFROY D'ABBANS - 75017 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598542,"updated":"30\/06\/2013 | 15 h 22 m 22 s","available":21,"free":1}},{"id":"27496","lat":"48.883690","lng":"2.313284","tags":{"name":"PLACE DE LEVIS","ref":"17015","address":"19BIS\/21 RUE LEGENDRE - 75017 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":44,"free":3}},{"id":"27307","lat":"48.834255","lng":"2.317609","tags":{"name":"LOSSERAND - PERNETY","ref":"14030","address":"61 RUE PERNETY - 75014 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":30,"free":3}},{"id":"27316","lat":"48.834251","lng":"2.317615","tags":{"name":"LOSSERAND BOYER-BARRET","ref":"14104","address":"4 RUE BOYER BARRET - 75014 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598507,"updated":"30\/06\/2013 | 15 h 21 m 47 s","available":18,"free":3}},{"id":"27513","lat":"48.886570","lng":"2.288612","tags":{"name":"ESPACE CHAMPERRET","ref":"17032","address":"12 RUE JEAN OESTREICHER - 75017 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598544,"updated":"30\/06\/2013 | 15 h 22 m 24 s","available":31,"free":3}},{"id":"26887","lat":"48.855255","lng":"2.337539","tags":{"name":"JACQUES CALLOT","ref":"6013","address":"1 RUE JACQUES CALLOT - 75006 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":7,"free":20}},{"id":"27372","lat":"48.833733","lng":"2.271396","tags":{"name":"FARMAN","ref":"15042","address":"61 RUE HENRY FARMAN - 75015 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":1,"free":20}},{"id":"27543","lat":"48.884926","lng":"2.310909","tags":{"name":"TOQUEVILLE","ref":"17119","address":"64 RUE DE TOQUEVILLE - 75017 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":29,"free":1}},{"id":"26791","lat":"48.870510","lng":"2.334054","tags":{"name":"OPERA - CAPUCINES","ref":"2015","address":"25 RUE LOUIS LE GRAND - 75002 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":30,"free":1}},{"id":"26985","lat":"48.878033","lng":"2.326484","tags":{"name":"LONDRES AMSTERDAM","ref":"8101","address":"42 RUE DE LONDRES - 75008 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598449,"updated":"30\/06\/2013 | 15 h 20 m 49 s","available":19,"free":3}},{"id":"27834","lat":"48.886681","lng":"2.284024","tags":{"name":"BINEAU (LEVALLOIS)","ref":"23011","address":"16 BOULEVARD BINEAU - 92300 LEVALLOIS-PERRET","bonus":"0","open":"0"}},{"id":"27029","lat":"48.877754","lng":"2.327339","tags":{"name":"PLACE DE BUDAPEST","ref":"9035","address":"38 RUE DE LONDRES - 75009 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":44,"free":0}},{"id":"26978","lat":"48.882149","lng":"2.319859","tags":{"name":"CHAPTAL","ref":"8051","address":"45 BD BATIGNOLLES - 75008 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598445,"updated":"30\/06\/2013 | 15 h 20 m 45 s","available":13,"free":1}},{"id":"26953","lat":"48.882149","lng":"2.319860","tags":{"name":"METRO ROME","ref":"8020","address":"74 BOULEVARD DES BATIGNOLLES - 75008 PARIS","bonus":"1","open":"1","total":"44","timestamp":1372598441,"updated":"30\/06\/2013 | 15 h 20 m 41 s","available":40,"free":3}},{"id":"26783","lat":"48.867123","lng":"2.336687","tags":{"name":"CHABANAIS","ref":"2007","address":"1 RUE CHABANAIS - 75002 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":24,"free":4}},{"id":"26761","lat":"48.862431","lng":"2.338520","tags":{"name":"SAINT HONORE","ref":"1013","address":"186 RUE SAINT HONORE - 75001 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598407,"updated":"30\/06\/2013 | 15 h 20 m 07 s","available":9,"free":54}},{"id":"27475","lat":"48.840611","lng":"2.258374","tags":{"name":"MICHEL ANGE","ref":"16118","address":"91 RUE MICHEL ANGE - 75016 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":24,"free":2}},{"id":"27503","lat":"48.887070","lng":"2.304111","tags":{"name":"PLACE DE WAGRAM","ref":"17022","address":"67 BOULEVARD PEREIRE - 75017 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598542,"updated":"30\/06\/2013 | 15 h 22 m 22 s","available":41,"free":4}},{"id":"26885","lat":"48.841740","lng":"2.331552","tags":{"name":"MONTPARNASSE CHEVREUSE","ref":"6010","address":"5 RUE DE CHEVREUSE - 75006 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":9,"free":4}},{"id":"26883","lat":"48.843735","lng":"2.333428","tags":{"name":"ASSAS LUXEMBOURG","ref":"6008","address":"90 RUE D'ASSAS - 75006 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598429,"updated":"30\/06\/2013 | 15 h 20 m 29 s","available":7,"free":26}},{"id":"27373","lat":"48.829056","lng":"2.301417","tags":{"name":"BRANCION","ref":"15043","address":"122 RUE BRANCION - 75015 PARIS","bonus":"0","open":"1","total":"11","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":5,"free":6}},{"id":"26900","lat":"48.851749","lng":"2.338162","tags":{"name":"ODEON QUATRE VENTS","ref":"6028","address":"6 RUE DES QUATRE VENTS - 75006 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598432,"updated":"30\/06\/2013 | 15 h 20 m 32 s","available":2,"free":34}},{"id":"27531","lat":"48.887848","lng":"2.300034","tags":{"name":"ALFRED ROLL","ref":"17102","address":"14 RUE ALFRED ROLL - 75017 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":24,"free":9}},{"id":"26889","lat":"48.853752","lng":"2.339114","tags":{"name":"MAZET SAINT ANDRE DES ARTS","ref":"6015","address":"10 RUE ANDRE MAZET - 75006 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":48,"free":6}},{"id":"26788","lat":"48.869968","lng":"2.336039","tags":{"name":"QUATRE SEPTEMBRE","ref":"2012","address":"10 RUE DE CHOISEUL - 75002 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":41,"free":1}},{"id":"26891","lat":"48.849579","lng":"2.337848","tags":{"name":"SENAT CONDE","ref":"6017","address":"34 RUE CONDE - 75006 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":4,"free":30}},{"id":"27305","lat":"48.831638","lng":"2.315159","tags":{"name":"PLAISANCE ALESIA","ref":"14028","address":"164 RUE ALESIA - 75014 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":45,"free":1}},{"id":"26944","lat":"48.879581","lng":"2.326427","tags":{"name":"LIEGE","ref":"8010","address":"22 RUE DE LIEGE - 75008 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598439,"updated":"30\/06\/2013 | 15 h 20 m 39 s","available":17,"free":0}},{"id":"27024","lat":"48.875187","lng":"2.332036","tags":{"name":"VICTOIR CHAUSSEE D ANTIN","ref":"9030","address":"79 RUE DE LA VICTOIRE - 75009 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":42,"free":2}},{"id":"27279","lat":"48.839199","lng":"2.329555","tags":{"name":"RASPAIL QUINET","ref":"14002","address":"FACE 4 BD EDGAR QUINET - 75014 PARIS","bonus":"1","open":"1","total":"44","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":39,"free":2}},{"id":"27025","lat":"48.874283","lng":"2.332977","tags":{"name":"PROVENCE","ref":"9031","address":"69 RUE DE PROVENCE - 75009 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598456,"updated":"30\/06\/2013 | 15 h 20 m 56 s","available":24,"free":1}},{"id":"27375","lat":"48.828175","lng":"2.292588","tags":{"name":"PLAINE","ref":"15045","address":"AVENUE DE LA PORTE DE LA PLAINE - 75015 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598517,"updated":"30\/06\/2013 | 15 h 21 m 57 s","available":29,"free":7}},{"id":"27034","lat":"48.876732","lng":"2.330484","tags":{"name":"PLACE D'ESTIENNE D'ORVES","ref":"9102","address":"2 RUE DE LONDRES - 75009 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":22,"free":2}},{"id":"26945","lat":"48.880936","lng":"2.324517","tags":{"name":"DUBLIN","ref":"8011","address":"1 RUE CLAPEYRON - 75008 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":14,"free":2}},{"id":"26888","lat":"48.855297","lng":"2.339947","tags":{"name":"PONT DE LODI DAUPHINE","ref":"6014","address":"7 RUE DU PONT DE LODI - 75006 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":20,"free":6}},{"id":"27315","lat":"48.835064","lng":"2.323731","tags":{"name":"MAINE LIANCOURT","ref":"14103","address":"132 \/ 136 AVENUE DU MAINE - 75014 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598507,"updated":"30\/06\/2013 | 15 h 21 m 47 s","available":27,"free":0}},{"id":"26772","lat":"48.861389","lng":"2.340055","tags":{"name":"TEMPLE DE L'ORATOIRE","ref":"1025","address":"2 RUE DE L'ORATOIRE - 75001 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":0,"free":18}},{"id":"26787","lat":"48.868301","lng":"2.338090","tags":{"name":"BIBLIOTHEQUE NATIONALE","ref":"2011","address":"71 RUE DE RICHELIEU - 75002 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":25,"free":1}},{"id":"27030","lat":"48.878113","lng":"2.329560","tags":{"name":"ATHENES CLICHY","ref":"9036","address":"4 RUE D'ATHENES - 75009 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":18,"free":1}},{"id":"27509","lat":"48.888802","lng":"2.296320","tags":{"name":"PORTE DE COURCELLE","ref":"17028","address":"34 BOULEVARD DE REIMS - 75017 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598543,"updated":"30\/06\/2013 | 15 h 22 m 23 s","available":11,"free":24}},{"id":"27808","lat":"48.875359","lng":"2.255699","tags":{"name":"CHARCOT (NEUILLY)","ref":"22007","address":"35-37 BOULEVARD DU COMMANDANT CHARCOT - 92200 NEUILLY SUR SEINE","bonus":"0","open":"0"}},{"id":"26773","lat":"48.863430","lng":"2.340170","tags":{"name":"COLONEL DRIANT","ref":"1026","address":"PLACE DU LIEUTENANT HENRI KARCHER - 75001 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":27,"free":4}},{"id":"27832","lat":"48.888763","lng":"2.288136","tags":{"name":"FRANCE (LEVALLOIS)","ref":"23009","address":"18 RUE ANATOLE FRANCE - 92300 LEVALLOIS-PERRET","bonus":"0","open":"0"}},{"id":"27494","lat":"48.885437","lng":"2.316474","tags":{"name":"LEGENDRE","ref":"17013","address":"62 RUE LEGENDRE - 75017 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":19,"free":3}},{"id":"27018","lat":"48.873386","lng":"2.335297","tags":{"name":"LAFAYETTE TAITBOUT","ref":"9024","address":"27 RUE TAITBOUT - 75009 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":45,"free":8}},{"id":"26892","lat":"48.842541","lng":"2.335068","tags":{"name":"MICHELET ASSAS","ref":"6018","address":"13 RUE MICHELET - 75006 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":15,"free":1}},{"id":"27414","lat":"48.829685","lng":"2.275343","tags":{"name":"AVIA","ref":"15120","address":"26 RUE DU COLONEL PIERRE AVIA - 75015 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598524,"updated":"30\/06\/2013 | 15 h 22 m 04 s","available":1,"free":28}},{"id":"27301","lat":"48.827988","lng":"2.305672","tags":{"name":"RAYMOND LAUSSERAND","ref":"14024","address":"RUE VERCINGETORIX - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598504,"updated":"30\/06\/2013 | 15 h 21 m 44 s","available":23,"free":1}},{"id":"27809","lat":"48.882954","lng":"2.265135","tags":{"name":"DE GAULLE (NEUILLY)","ref":"22008","address":"153 BIS AVENUE CHARLES DE GAULLE - 92200 NEUILLY SUR SEINE","bonus":"0","open":"0"}},{"id":"26749","lat":"48.857094","lng":"2.341748","tags":{"name":"ILE DE LA CITE PONT NEUF","ref":"1001","address":"41 QUAI DE L'HORLOGE - 75001 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598405,"updated":"30\/06\/2013 | 15 h 20 m 05 s","available":0,"free":15}},{"id":"27017","lat":"48.871815","lng":"2.337202","tags":{"name":"ITALIENS LAFFITE","ref":"9023","address":"1 RUE LAFFITE - 75009 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":32,"free":1}},{"id":"27815","lat":"48.887802","lng":"2.278072","tags":{"name":"HUGO (NEUILLY)","ref":"22014","address":"35 BOULEVARD VICTOR HUGO - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27023","lat":"48.876858","lng":"2.332762","tags":{"name":"TRINITE","ref":"9029","address":"62 RUE SAINT LAZARE - 75009 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598455,"updated":"30\/06\/2013 | 15 h 20 m 55 s","available":39,"free":0}},{"id":"26760","lat":"48.862999","lng":"2.341555","tags":{"name":"BOURSE DU COMMERCE","ref":"1012","address":"FACE 29 RUE JEAN JACQUES ROUSSEAU - 75001 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598407,"updated":"30\/06\/2013 | 15 h 20 m 07 s","available":16,"free":5}},{"id":"27529","lat":"48.883102","lng":"2.323835","tags":{"name":"BATIGNOLLES","ref":"17050","address":"1 RUE DES BATIGNOLLES - 75017 PARIS","bonus":"1","open":"1","total":"17","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":16,"free":1}},{"id":"26890","lat":"48.852394","lng":"2.341443","tags":{"name":"DANTON","ref":"6016","address":"11 RUE DANTON - 75006 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":20,"free":1}},{"id":"27460","lat":"48.837555","lng":"2.257973","tags":{"name":"PORTE DE SAINT CLOUD","ref":"16042","address":"120 BOULEVARD MURAT - 75016 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598534,"updated":"30\/06\/2013 | 15 h 22 m 14 s","available":41,"free":3}},{"id":"26774","lat":"48.862240","lng":"2.341961","tags":{"name":"BERGER","ref":"1027","address":"49 RUE BERGER - 75001 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":0,"free":20}},{"id":"26759","lat":"48.860249","lng":"2.342303","tags":{"name":"RIVOLI MAIRIE DU 1ER","ref":"1011","address":"36 RUE DE L'ARBRE SEC - 75001 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598407,"updated":"30\/06\/2013 | 15 h 20 m 07 s","available":5,"free":15}},{"id":"27542","lat":"48.888187","lng":"2.310121","tags":{"name":"PEREIRE SAUSSURE","ref":"17117","address":"2 BIS BOULEVARD PEREIRE - 75017 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":27,"free":1}},{"id":"27493","lat":"48.884102","lng":"2.322206","tags":{"name":"MAIRIE DU 17EME","ref":"17012","address":"FACE 16 RUE DES BATIGNOLLES - 75017 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":21,"free":0}},{"id":"26785","lat":"48.868851","lng":"2.339731","tags":{"name":"BOURSE","ref":"2009","address":"1 RUE DES FILLES SAINT THOMAS - 75002 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":54,"free":4}},{"id":"26784","lat":"48.867294","lng":"2.340564","tags":{"name":"MAIRIE DU 2EME","ref":"2008","address":"11 RUE DE LA BANQUE - 75002 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":27,"free":2}},{"id":"27498","lat":"48.887138","lng":"2.314522","tags":{"name":"PONT CARDINET","ref":"17017","address":"167 RUE DE ROME - 75017 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":26,"free":1}},{"id":"27528","lat":"48.888199","lng":"2.310623","tags":{"name":"SAUSSURE","ref":"17049","address":"116 BIS RUE DE SAUSSURE - 75017 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":11,"free":7}},{"id":"26789","lat":"48.871445","lng":"2.338290","tags":{"name":"RICHELIEU DROUOT","ref":"2013","address":"20 RUE FAVART - 75002 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":14,"free":3}},{"id":"27309","lat":"48.835678","lng":"2.328291","tags":{"name":"DAGUERRE GASSENDI","ref":"14033","address":"31 RUE FRODEVAUX - 75014 PARIS","bonus":"1","open":"1","total":"38","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":36,"free":2}},{"id":"27304","lat":"48.830887","lng":"2.318882","tags":{"name":"ALESIA GERGOVIE","ref":"14027","address":"FACE 83 RUE DE GERGOVIE - 75014 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":35,"free":1}},{"id":"27814","lat":"48.885139","lng":"2.267800","tags":{"name":"SAINTE FOY (NEUILLY)","ref":"22013","address":"2 rue de Ch\u00c8zy - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27477","lat":"48.880081","lng":"2.258577","tags":{"name":"MUETTE NEUILLY","ref":"16122","address":"ROUTE DE LA MUETTE A NEUILLY - 75016 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598537,"updated":"30\/06\/2013 | 15 h 22 m 17 s","available":30,"free":19}},{"id":"27031","lat":"48.881268","lng":"2.328197","tags":{"name":"CLICHY PARME","ref":"9037","address":"01 RUE DE PARME - 75009 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":23,"free":0}},{"id":"27830","lat":"48.890381","lng":"2.292160","tags":{"name":"WILSON (LEVALLOIS)","ref":"23007","address":"22 RUE DU PRESIDENT WILSON - 92300 LEVALLOIS-PERRET","bonus":"0","open":"0"}},{"id":"26901","lat":"48.848923","lng":"2.341041","tags":{"name":"VAUGIRARD PRINCE","ref":"6029","address":"FACE 1 RUE DE VAUGIRARD - 75006 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598432,"updated":"30\/06\/2013 | 15 h 20 m 32 s","available":5,"free":17}},{"id":"26756","lat":"48.863583","lng":"2.342609","tags":{"name":"LOUVRE \/ COQUILLERE","ref":"1008","address":"9 rue COQUILLIERE 75001 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":22,"free":0}},{"id":"26893","lat":"48.852928","lng":"2.342657","tags":{"name":"SAINT MICHEL DANTON","ref":"6020","address":"2 RUE DANTON - 75006 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598430,"updated":"30\/06\/2013 | 15 h 20 m 30 s","available":9,"free":25}},{"id":"26782","lat":"48.866001","lng":"2.341920","tags":{"name":"PLACE DES VICTOIRES","ref":"2006","address":"2 RUE D'ABOUKIR - 75002 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":24,"free":0}},{"id":"26906","lat":"48.843365","lng":"2.337803","tags":{"name":"HERSCHEL","ref":"6104","address":"7 RUE HERSCHEL - 75006 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598433,"updated":"30\/06\/2013 | 15 h 20 m 33 s","available":35,"free":1}},{"id":"26771","lat":"48.863773","lng":"2.342708","tags":{"name":"LOUVRE COQ HERON","ref":"1024","address":"20 RUE COQUILLIERE - 75001 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598409,"updated":"30\/06\/2013 | 15 h 20 m 09 s","available":14,"free":5}},{"id":"26903","lat":"48.850834","lng":"2.342198","tags":{"name":"SAINT MICHEL SARRAZIN","ref":"6031","address":"5 RUE PIERRE SARAZIN - 75006 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598432,"updated":"30\/06\/2013 | 15 h 20 m 32 s","available":0,"free":34}},{"id":"27280","lat":"48.836849","lng":"2.331304","tags":{"name":"RASPAIL SCHOELCHER","ref":"14003","address":"2 RUE VICTOR SCHOELCHER - 75014 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598501,"updated":"30\/06\/2013 | 15 h 21 m 41 s","available":40,"free":7}},{"id":"27016","lat":"48.873344","lng":"2.337981","tags":{"name":"LAFITTE ROSSINI","ref":"9022","address":"19 RUE ROSSINI - 75009 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":32,"free":1}},{"id":"27791","lat":"48.827469","lng":"2.278550","tags":{"name":"GAMBETTA (ISSY LES MOULINEAUX)","ref":"21311","address":"FACE AU 40 BOULEVARD GAMBETTA - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27019","lat":"48.876385","lng":"2.335357","tags":{"name":"TAITBOUT CH\u00acTEAUDUN","ref":"9025","address":"77 RUE TAITBOUT - 75009 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598455,"updated":"30\/06\/2013 | 15 h 20 m 55 s","available":34,"free":3}},{"id":"27829","lat":"48.890862","lng":"2.295000","tags":{"name":"GUESDE (LEVALLOIS)","ref":"23006","address":"8 RUE JULES GUESDE - 92300 LEVALLOIS-PERRET","bonus":"0","open":"0"}},{"id":"27022","lat":"48.880154","lng":"2.331075","tags":{"name":"MONCEY BLANCHE","ref":"9028","address":"4 RUE MONCEY - 75009 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598455,"updated":"30\/06\/2013 | 15 h 20 m 55 s","available":16,"free":2}},{"id":"26946","lat":"48.883320","lng":"2.326207","tags":{"name":"CLICHY","ref":"8012","address":"10 BOULEVARD DES BATIGNOLLES SUR TPC - 75008 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598440,"updated":"30\/06\/2013 | 15 h 20 m 40 s","available":45,"free":2}},{"id":"27302","lat":"48.829571","lng":"2.318353","tags":{"name":"JACQUIER","ref":"14025","address":"10 RUE JACQUIER - 75014 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":36,"free":0}},{"id":"27504","lat":"48.890587","lng":"2.303457","tags":{"name":"AVENUE DE LA PORTE D'ASNI\u00bbRES","ref":"17023","address":"22 AVENUE DE LA PORTE D'ASNIERES - 75017 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598542,"updated":"30\/06\/2013 | 15 h 22 m 22 s","available":19,"free":17}},{"id":"26873","lat":"48.848190","lng":"2.341832","tags":{"name":"CUJAS","ref":"5106","address":"22 RUE CUJAS - 75005 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":13,"free":5}},{"id":"27308","lat":"48.832500","lng":"2.325401","tags":{"name":"MOUTON DUVERNET - MAIRIE DU 14EME","ref":"14032","address":"26 RUE MOUTON DUVERNET - 75014 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":27,"free":1}},{"id":"26758","lat":"48.859463","lng":"2.344366","tags":{"name":"PONT NEUF","ref":"1010","address":"10 RUE BOUCHER - 75001 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598407,"updated":"30\/06\/2013 | 15 h 20 m 07 s","available":0,"free":25}},{"id":"26757","lat":"48.860245","lng":"2.344334","tags":{"name":"PONT NEUF - 14","ref":"1009","address":"14 RUE DU PONT NEUF - 75001 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":3,"free":20}},{"id":"26847","lat":"48.843758","lng":"2.339307","tags":{"name":"SAINT MICHEL HENRI BARBUSSE","ref":"5010","address":"1 RUE HENRI BARBUSSE - 75005 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":15,"free":0}},{"id":"27801","lat":"48.825100","lng":"2.292500","tags":{"name":"PASTEUR (VANVES)","ref":"21707","address":"9 AVENUE PASTEUR ANGLE CARREFOUR ALBERT LEGRIS - 92170 Vanves","bonus":"0","open":"0"}},{"id":"27312","lat":"48.834393","lng":"2.329304","tags":{"name":"BOULARD DAGUERRE","ref":"14036","address":"14 RUE BOULARD - 75014 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":41,"free":2}},{"id":"26838","lat":"48.851582","lng":"2.343705","tags":{"name":"SAINT GERMAIN HARPE","ref":"5001","address":"32 RUE DE LA HARPE - 75005 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598421,"updated":"30\/06\/2013 | 15 h 20 m 21 s","available":14,"free":29}},{"id":"26840","lat":"48.846237","lng":"2.341325","tags":{"name":"GAY LUSSAC LE GOFF","ref":"5003","address":"9 RUE LE GOFF - 75005 PARIS","bonus":"1","open":"1","total":"35","timestamp":1372598421,"updated":"30\/06\/2013 | 15 h 20 m 21 s","available":5,"free":30}},{"id":"27328","lat":"48.826504","lng":"2.309275","tags":{"name":"BRUNE","ref":"14122","address":"1 RUE DU COLONEL MONTEIL - 75014 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":18,"free":1}},{"id":"26868","lat":"48.852707","lng":"2.344138","tags":{"name":"SAINT SEVERIN","ref":"5033","address":"42 RUE SAINT SEVERIN - 75005 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":13,"free":14}},{"id":"27497","lat":"48.888187","lng":"2.316861","tags":{"name":"BROCHANT","ref":"17016","address":"3 RUE BROCHANT - 75017 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":18,"free":1}},{"id":"27038","lat":"48.875145","lng":"2.338119","tags":{"name":"LA FAYETTE PROVENCE","ref":"9111","address":"28 RUE DE LA VICTOIRE - 75009 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598458,"updated":"30\/06\/2013 | 15 h 20 m 58 s","available":17,"free":0}},{"id":"27807","lat":"48.883026","lng":"2.260097","tags":{"name":"PIERRET (NEUILLY)","ref":"22006","address":"33 RUE PIERRET - 92200 NEUILLY SUR SEINE","bonus":"0","open":"0"}},{"id":"27020","lat":"48.879398","lng":"2.333709","tags":{"name":"BRUYERE PIGALLE","ref":"9026","address":"28 RUE J.B.PIGALLE - 75009 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598455,"updated":"30\/06\/2013 | 15 h 20 m 55 s","available":17,"free":0}},{"id":"26865","lat":"48.849770","lng":"2.343574","tags":{"name":"SORBONNE","ref":"5030","address":"5 RUE DE LA SORBONNE - 75005 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":23,"free":26}},{"id":"26797","lat":"48.870316","lng":"2.341879","tags":{"name":"SAINT MARC","ref":"2102","address":"8 RUE SAINT MARC - 75002 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":36,"free":1}},{"id":"26799","lat":"48.871243","lng":"2.341395","tags":{"name":"VIVIENNE","ref":"2108","address":"42 RUE VIVIENNE - 75002 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":36,"free":2}},{"id":"26864","lat":"48.840111","lng":"2.337297","tags":{"name":"PORT ROYAL","ref":"5029","address":"FACE 41 AVENUE GEORGES BERNANOS - 75005 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":28,"free":1}},{"id":"27541","lat":"48.891834","lng":"2.300145","tags":{"name":"REIMS","ref":"17116","address":"6 BOULEVARD DE REIMS - 75017 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":12,"free":21}},{"id":"27462","lat":"48.838715","lng":"2.252191","tags":{"name":"STADE FRANCAIS","ref":"16044","address":"24 AVENUE DE LA PORTE DE SAINT CLOUD - 75016 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598535,"updated":"30\/06\/2013 | 15 h 22 m 15 s","available":28,"free":0}},{"id":"27806","lat":"48.884300","lng":"2.260992","tags":{"name":"E GAULLE 3 (NEUILLY)","ref":"22005","address":"195 AVENUE CHARLES DE GAULLE - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27303","lat":"48.830147","lng":"2.323313","tags":{"name":"PLANTES MOULIN VERT","ref":"14026","address":"23 RUE DES PLANTES - 75014 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598505,"updated":"30\/06\/2013 | 15 h 21 m 45 s","available":43,"free":1}},{"id":"27007","lat":"48.873268","lng":"2.340753","tags":{"name":"MAIRIE DU 9EME","ref":"9013","address":"20 RUE DE LA GRANGE BATELIERE - 75009 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":24,"free":1}},{"id":"27478","lat":"48.875095","lng":"2.249217","tags":{"name":"S\u00bbVRES NEUILLY","ref":"16124","address":"Route de S\u00cbvres \u2021 Neuilly - 75016 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598538,"updated":"30\/06\/2013 | 15 h 22 m 18 s","available":14,"free":51}},{"id":"27805","lat":"48.884708","lng":"2.261531","tags":{"name":"CHARLES DE GAULLE (NEUILLY)","ref":"22004","address":"162 AVENUE CHARLES DE GAULLE - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27299","lat":"48.826569","lng":"2.313277","tags":{"name":"BRUNE DIDOT","ref":"14022","address":"108 RUE DIDOT - 75014 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598504,"updated":"30\/06\/2013 | 15 h 21 m 44 s","available":32,"free":0}},{"id":"26781","lat":"48.865021","lng":"2.345068","tags":{"name":"MONTORGUEIL RUE MONTMARTRE VERSION 2","ref":"2005","address":"46 RUE DE MONTMARTRE - 75002 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":14,"free":1}},{"id":"27538","lat":"48.887772","lng":"2.320368","tags":{"name":"LEGENDRE","ref":"17110","address":"83 RUE LEGENDRE - 75017 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598548,"updated":"30\/06\/2013 | 15 h 22 m 28 s","available":27,"free":0}},{"id":"26842","lat":"48.844730","lng":"2.341924","tags":{"name":"SAINT JACQUES GAY LUSSAC","ref":"5005","address":"27 RUE GAY LUSSAC - 75005 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":17,"free":6}},{"id":"26843","lat":"48.846516","lng":"2.343124","tags":{"name":"SAINT JACQUES SOUFFLOT","ref":"5006","address":"174 RUE SAINT JACQUES - 75005 PARIS","bonus":"1","open":"1","total":"13","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":1,"free":12}},{"id":"27833","lat":"48.891960","lng":"2.284205","tags":{"name":"VOLTAIRE (LEVALLOIS)","ref":"23010","address":"47 RUE VOLTAIRE - 92300 LEVALLOIS-PERRET","bonus":"0","open":"0"}},{"id":"26794","lat":"48.867466","lng":"2.344527","tags":{"name":"CLERY","ref":"2021","address":"4 RUE DE CLERY - 75002 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598413,"updated":"30\/06\/2013 | 15 h 20 m 13 s","available":41,"free":0}},{"id":"26839","lat":"48.850311","lng":"2.345016","tags":{"name":"SAINT JACQUES","ref":"5002","address":"20 RUE SOMMERARD - 75005 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598421,"updated":"30\/06\/2013 | 15 h 20 m 21 s","available":2,"free":33}},{"id":"27321","lat":"48.837547","lng":"2.335983","tags":{"name":"DENFERT-ROCHEREAU CASSINI","ref":"14111","address":"18 RUE CASSINI - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":23,"free":1}},{"id":"27587","lat":"48.884129","lng":"2.328807","tags":{"name":"CLICHY","ref":"18044","address":"132 BOULEVARD DE CLICHY - 75018 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598557,"updated":"30\/06\/2013 | 15 h 22 m 37 s","available":30,"free":0}},{"id":"27015","lat":"48.877872","lng":"2.337447","tags":{"name":"SAINT GEORGES","ref":"9021","address":"56 RUE SAINT GEORGES - 75009 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":22,"free":0}},{"id":"26786","lat":"48.870777","lng":"2.343163","tags":{"name":"BOULEVARD MONTMARTRE","ref":"2010","address":"21 RUE D'UZES - 75002 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598412,"updated":"30\/06\/2013 | 15 h 20 m 12 s","available":28,"free":2}},{"id":"27790","lat":"48.826931","lng":"2.272250","tags":{"name":"KLEBER (ISSY LES MOULINEAUX)","ref":"21310","address":"4 RUE KLEBER - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"26796","lat":"48.866066","lng":"2.345464","tags":{"name":"BACHAUMONT","ref":"2101","address":"14 RUE BACHAUMONT - 75002 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598413,"updated":"30\/06\/2013 | 15 h 20 m 13 s","available":22,"free":0}},{"id":"26752","lat":"48.859898","lng":"2.346757","tags":{"name":"MARGUERITE DE NAVARRE","ref":"1004","address":"12 RUE DES HALLES - 75001 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":12,"free":22}},{"id":"27032","lat":"48.883209","lng":"2.330850","tags":{"name":"SQUARE BERLIOZ","ref":"9038","address":"50 BIS RUE DOUAI - 75009 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":26,"free":1}},{"id":"27317","lat":"48.825325","lng":"2.310671","tags":{"name":"STADE DIDOT","ref":"14106","address":"FACE 58 AVENUE MARC SANGNIER - 75014 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598507,"updated":"30\/06\/2013 | 15 h 21 m 47 s","available":21,"free":0}},{"id":"26750","lat":"48.857941","lng":"2.347010","tags":{"name":"PLACE DU CHATELET","ref":"1002","address":"14 AVENUE VICTORIA - 75001 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598405,"updated":"30\/06\/2013 | 15 h 20 m 05 s","available":1,"free":18}},{"id":"26778","lat":"48.864582","lng":"2.346282","tags":{"name":"MONTORGUEIL ETIENNE MARCEL","ref":"2002","address":"32 RUE ETIENNE MARCEL - 75002 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598410,"updated":"30\/06\/2013 | 15 h 20 m 10 s","available":26,"free":2}},{"id":"27799","lat":"48.823601","lng":"2.288820","tags":{"name":"HUGO (VANVES)","ref":"21705","address":"11 AVENUE VICTOR HUGO - 92170 VANVES","bonus":"0","open":"0"}},{"id":"27786","lat":"48.829742","lng":"2.263816","tags":{"name":"LAFAYETTE (ISSY LES MOULINEAUX)","ref":"21306","address":"PLACE LAFAYETTE - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"26845","lat":"48.850979","lng":"2.346077","tags":{"name":"ST GERMAIN-DANTE","ref":"5008","address":"9 RUE DE DANTE - 75005 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":10,"free":9}},{"id":"26841","lat":"48.841866","lng":"2.341202","tags":{"name":"SAINT JACQUES VAL DE GRACE","ref":"5004","address":"272 RUE SAINT JACQUES - 75005 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598421,"updated":"30\/06\/2013 | 15 h 20 m 21 s","available":18,"free":1}},{"id":"27800","lat":"48.823303","lng":"2.296506","tags":{"name":"BLEUZEN (VANVES)","ref":"21706","address":"74 RUE JEAN BLEUZEN - 92170 VANVES","bonus":"0","open":"0"}},{"id":"27008","lat":"48.875332","lng":"2.340773","tags":{"name":"FAUBOURG MONTMARTRE","ref":"9014","address":"55 RUE DU FAUBOURG MONTMARTRE - 75009 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":31,"free":1}},{"id":"27737","lat":"48.843178","lng":"2.246214","tags":{"name":"DENFERT ROCHEREAU (BOULOGNE-BILLANCOURT)","ref":"21002","address":"PLACE DENFERT ROCHEREAU - 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"26815","lat":"48.855251","lng":"2.347356","tags":{"name":"MARCHE AUX FLEURS","ref":"4002","address":"PLACE LOUIS LEPINE - 75004 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":10,"free":14}},{"id":"27756","lat":"48.833176","lng":"2.257006","tags":{"name":"PARADIS (BOULOGNE-BILLANCOURT)","ref":"21021","address":"FACE AU 128 RUE DES ENFANTS DU PARADIS - 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"27831","lat":"48.893196","lng":"2.288914","tags":{"name":"REPUBLIQUE (LEVALLOIS)","ref":"23008","address":"PLACE DE LA REPUBLIQUE - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"26751","lat":"48.859150","lng":"2.347620","tags":{"name":"RIVOLI SAINT DENIS","ref":"1003","address":"7 RUE SAINT DENIS - 75001 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598405,"updated":"30\/06\/2013 | 15 h 20 m 05 s","available":4,"free":44}},{"id":"27009","lat":"48.876621","lng":"2.339800","tags":{"name":"LAMARTINE","ref":"9015","address":"43 RUE LAMARTINE - 75009 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":25,"free":3}},{"id":"27320","lat":"48.827747","lng":"2.320714","tags":{"name":"ABBE CARTON","ref":"14110","address":"89 RUE DE L'ABBE CARTON - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":24,"free":0}},{"id":"27021","lat":"48.882355","lng":"2.333263","tags":{"name":"FONTAINE DOUAI","ref":"9027","address":"24 RUE DE DOUAI - 75009 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598455,"updated":"30\/06\/2013 | 15 h 20 m 55 s","available":25,"free":0}},{"id":"27539","lat":"48.890018","lng":"2.317591","tags":{"name":"LEMERCIER","ref":"17111","address":"109 RUE LEMERCIER - 75017 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598548,"updated":"30\/06\/2013 | 15 h 22 m 28 s","available":22,"free":1}},{"id":"27588","lat":"48.886627","lng":"2.326294","tags":{"name":"GANNERON","ref":"18045","address":"2 RUE PIERRE GINIER - 75018 PARIS","bonus":"1","open":"1","total":"16","timestamp":1372598557,"updated":"30\/06\/2013 | 15 h 22 m 37 s","available":16,"free":0}},{"id":"27014","lat":"48.879505","lng":"2.337191","tags":{"name":"TOUDOUZE CLAUZEL","ref":"9020","address":"FACE 27 RUE CLAUZEL - 75009 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":21,"free":0}},{"id":"27285","lat":"48.831509","lng":"2.329319","tags":{"name":"MOUTON DUVERNET","ref":"14008","address":"5 RUE MOUTON DUVERNET - 75014 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":36,"free":1}},{"id":"26755","lat":"48.863567","lng":"2.347702","tags":{"name":"ETIENNE MARCEL","ref":"1007","address":"2 RUE DE TURBIGO - 75001 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":20,"free":0}},{"id":"26775","lat":"48.864063","lng":"2.347598","tags":{"name":"FRANCAISE","ref":"1102","address":"6 RUE FRANCAISE - 75001 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598410,"updated":"30\/06\/2013 | 15 h 20 m 10 s","available":17,"free":0}},{"id":"26846","lat":"48.851650","lng":"2.347463","tags":{"name":"SQUARE VIVIANI","ref":"5009","address":"6 RUE DU FOUARRE - 75005 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":3,"free":13}},{"id":"27483","lat":"48.887901","lng":"2.324400","tags":{"name":"LA FOURCHE RUE DE LA CONDAMINE","ref":"17002","address":"4 RUE DE LA CONDAMINE - 75017 PARIS","bonus":"1","open":"1","total":"37","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":37,"free":0}},{"id":"27282","lat":"48.833141","lng":"2.332672","tags":{"name":"DENFERT ROCHEREAU","ref":"14005","address":"2 AVENUE RENE COTY - 75014 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598501,"updated":"30\/06\/2013 | 15 h 21 m 41 s","available":35,"free":1}},{"id":"27010","lat":"48.877769","lng":"2.339785","tags":{"name":"MARTYRS CHORON","ref":"9016","address":"24 RUE DE CHORON - 75009 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":17,"free":0}},{"id":"27300","lat":"48.823654","lng":"2.307767","tags":{"name":"MALAKOFF PINARD","ref":"14023","address":"76-78 BOULEVARD ADOLPHE PINARD - 75014 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598504,"updated":"30\/06\/2013 | 15 h 21 m 44 s","available":46,"free":3}},{"id":"27804","lat":"48.886703","lng":"2.261264","tags":{"name":"BEFFROY (NEUILLY)","ref":"22003","address":"3 RUE BEFFROY - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"27817","lat":"48.822529","lng":"2.298632","tags":{"name":"DE GAULLE (MALAKOFF)","ref":"22401","address":"BOULEVARD CHARLES DE GAULLE (STATION DE METRO) - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"27485","lat":"48.888962","lng":"2.322529","tags":{"name":"LEGENDRE AVENUE DE CLICHY","ref":"17004","address":"130 RUE LEGENDRE - 75017 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":22,"free":0}},{"id":"27802","lat":"48.890511","lng":"2.270167","tags":{"name":"CHATEAU (NEUILLY)","ref":"22001","address":"26 BOULEVARD DU CHATEAU - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"26844","lat":"48.848919","lng":"2.347201","tags":{"name":"ECOLES CARMES","ref":"5007","address":"39 RUE DES ECOLES - 75005 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598422,"updated":"30\/06\/2013 | 15 h 20 m 22 s","available":14,"free":23}},{"id":"27013","lat":"48.881149","lng":"2.336681","tags":{"name":"VICTOR MASSE","ref":"9019","address":"38 RUE VICTOR MASSE - 75009 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598454,"updated":"30\/06\/2013 | 15 h 20 m 54 s","available":18,"free":0}},{"id":"27586","lat":"48.883564","lng":"2.333419","tags":{"name":"BLANCHE","ref":"18043","address":"55 BOULEVARD DE CLICHY - 75018 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598557,"updated":"30\/06\/2013 | 15 h 22 m 37 s","available":18,"free":1}},{"id":"26848","lat":"48.845142","lng":"2.345413","tags":{"name":"ULM - LHOMOND","ref":"5012","address":"20 RUE DE L'ESTRAPADE - 75005 PARIS","bonus":"1","open":"1","total":"15","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":13,"free":2}},{"id":"27486","lat":"48.890331","lng":"2.319731","tags":{"name":"BROCHANT","ref":"17005","address":"43 RUE BROCHANT - 75017 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":32,"free":0}},{"id":"26867","lat":"48.846989","lng":"2.346500","tags":{"name":"PANTHEON CARMES","ref":"5032","address":"2 RUE VALETTE - 75005 PARIS","bonus":"1","open":"1","total":"37","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":33,"free":4}},{"id":"26795","lat":"48.870785","lng":"2.345906","tags":{"name":"BONNE NOUVELLE SAINT FIACRE","ref":"2022","address":"20 RUE SAINT FIACRE - 75002 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598413,"updated":"30\/06\/2013 | 15 h 20 m 13 s","available":35,"free":1}},{"id":"27589","lat":"48.887939","lng":"2.326124","tags":{"name":"FOURCHE","ref":"18046","address":"12 RUE ETIENNE JOGELLE - 75018 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598557,"updated":"30\/06\/2013 | 15 h 22 m 37 s","available":26,"free":1}},{"id":"27803","lat":"48.888649","lng":"2.263905","tags":{"name":"ARGENSON (NEUILLY)","ref":"22002","address":"44 BOULEVARD D'ARGENSON - 92200 NEUILLY","bonus":"0","open":"0"}},{"id":"26753","lat":"48.861263","lng":"2.349400","tags":{"name":"LES HALLES - SEBASTOPOL","ref":"1005","address":"3 RUE DE LA COSSONNERIE - 75001 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":22,"free":11}},{"id":"27006","lat":"48.871544","lng":"2.345836","tags":{"name":"ROUGEMONT","ref":"9012","address":"3-5 RUE ROUGEMONT - 75009 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":30,"free":0}},{"id":"27322","lat":"48.835869","lng":"2.337980","tags":{"name":"FAUBOURG SAINT JACQUES CASSINI","ref":"14112","address":"24 RUE MECHAIN - 75014 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":15,"free":1}},{"id":"27281","lat":"48.838432","lng":"2.340795","tags":{"name":"PORT ROYAL COCHIN","ref":"14004","address":"111 BD PORT ROYAL - 75014 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598501,"updated":"30\/06\/2013 | 15 h 21 m 41 s","available":21,"free":1}},{"id":"27005","lat":"48.873783","lng":"2.344514","tags":{"name":"FOLIES BERGERES","ref":"9011","address":"14 RUE GEOFFROY MARIE - 75009 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":18,"free":2}},{"id":"26814","lat":"48.853985","lng":"2.349380","tags":{"name":"NOTRE DAME","ref":"4001","address":"10 RUE D'ARCOLE - 75004 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":1,"free":28}},{"id":"27012","lat":"48.882069","lng":"2.336680","tags":{"name":"PLACE PIGALLE","ref":"9018","address":"05 RUE DUPERRE - 75009 PARIS","bonus":"1","open":"1","total":"34","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":32,"free":1}},{"id":"26849","lat":"48.842548","lng":"2.344597","tags":{"name":"ULM ERASME","ref":"5013","address":"13 RUE ERASME - 75005 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":11,"free":9}},{"id":"26754","lat":"48.862633","lng":"2.349732","tags":{"name":"GRANDE TRUANDERIE","ref":"1006","address":"2-4 rue DE LA GRANDE TRUANDERIE 75001 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598406,"updated":"30\/06\/2013 | 15 h 20 m 06 s","available":24,"free":6}},{"id":"27033","lat":"48.875641","lng":"2.343524","tags":{"name":"CADET LA FAYETTE","ref":"9101","address":"24-26 RUE CADET - 75009 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598457,"updated":"30\/06\/2013 | 15 h 20 m 57 s","available":18,"free":1}},{"id":"26780","lat":"48.866974","lng":"2.348632","tags":{"name":"REAUMUR MONTORGUEIL","ref":"2004","address":"83 ALLEE PIERRE LAZAREF - 75002 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598411,"updated":"30\/06\/2013 | 15 h 20 m 11 s","available":16,"free":1}},{"id":"26831","lat":"48.860088","lng":"2.350148","tags":{"name":"BEAUBOURG PLACE MICHELET","ref":"4020","address":"FACE 27 RUE QUINCAMPOIX - 75004 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":1,"free":27}},{"id":"26829","lat":"48.858002","lng":"2.350217","tags":{"name":"RIVOLI SEBASTOPOL","ref":"4018","address":"1 RUE SAINT BON - 75004 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598419,"updated":"30\/06\/2013 | 15 h 20 m 19 s","available":1,"free":18}},{"id":"27585","lat":"48.882729","lng":"2.336263","tags":{"name":"PIGALLE GERMAIN PILLON","ref":"18042","address":"FACE 36 BOULEVARD DE CLICHY - 75018 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":20,"free":0}},{"id":"27824","lat":"48.893616","lng":"2.277619","tags":{"name":"COUTURIER 1 (LEVALLOIS)","ref":"23001","address":"2 RUE PAUL VAILLANT COUTURIER - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"26835","lat":"48.861881","lng":"2.350221","tags":{"name":"SEBASTOPOL RAMBUTEAU","ref":"4104","address":"FACE 40 BOULEVARD SEBASTOPOL - 75004 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":7,"free":8}},{"id":"27798","lat":"48.821705","lng":"2.285396","tags":{"name":"REPUBLIQUE (VANVES)","ref":"21704","address":"2 RUE DE LA REPUBLIQUE - 92170 VANVES","bonus":"0","open":"0"}},{"id":"27287","lat":"48.827427","lng":"2.325760","tags":{"name":"JEAN MOULIN ALESIA","ref":"14010","address":"12 AVENUE JEAN MOULIN - 75014 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":37,"free":2}},{"id":"27818","lat":"48.821461","lng":"2.302899","tags":{"name":"JAURES (MALAKOFF)","ref":"22402","address":"10 AVENUE JEAN JAURES - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"27797","lat":"48.821049","lng":"2.291301","tags":{"name":"MARTINIE (VANVES)","ref":"21703","address":"5-7 AVENUE MARCEL MARTINIE - 92170 VANVES","bonus":"0","open":"0"}},{"id":"27313","lat":"48.825710","lng":"2.321850","tags":{"name":"JEAN MOULIN","ref":"14037","address":"56 AVENUE JEAN MOULIN - 75014 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598506,"updated":"30\/06\/2013 | 15 h 21 m 46 s","available":30,"free":3}},{"id":"27298","lat":"48.824490","lng":"2.318447","tags":{"name":"PLACE DE LA PORTE DE CHATILLON","ref":"14021","address":"BOULEVARD BRUNE PORTE DE CHATILLON - 75014 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598504,"updated":"30\/06\/2013 | 15 h 21 m 44 s","available":50,"free":8}},{"id":"27325","lat":"48.823921","lng":"2.316573","tags":{"name":"CIT\u2026 UNIVERSITAIRE","ref":"14115","address":"AVENUE MAURICE D'OCAGNE - 75014 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":33,"free":0}},{"id":"27755","lat":"48.832001","lng":"2.253720","tags":{"name":"REPUBLIQUE 2 (BOULOGNE-BILLANCOURT)","ref":"21020","address":"28 Bd de la R\u00c8publique 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"27789","lat":"48.823719","lng":"2.272254","tags":{"name":"CRESSON 2 (ISSY LES MOULINEAUX)","ref":"21309","address":"1 BIS AVENUE VICTOR CRESSON - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"26828","lat":"48.857128","lng":"2.351195","tags":{"name":"PLACE DE L'HOTEL DE VILLE","ref":"4017","address":"7 PLACE DE L'HOTEL DE VILLE - 75004 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598419,"updated":"30\/06\/2013 | 15 h 20 m 19 s","available":0,"free":12}},{"id":"27490","lat":"48.892635","lng":"2.317313","tags":{"name":"BODIN AVENUE DE CLICHY","ref":"17009","address":"2 RUE PAUL BODIN - 75017 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":9,"free":23}},{"id":"27283","lat":"48.833191","lng":"2.336933","tags":{"name":"SAINT JACQUES TOMBE ISSOIRE","ref":"14006","address":"46 BOULEVARD SAINT JACQUES - 75014 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598501,"updated":"30\/06\/2013 | 15 h 21 m 41 s","available":20,"free":2}},{"id":"27743","lat":"48.837921","lng":"2.246064","tags":{"name":"HUGO (BOULOGNE-BILLANCOURT)","ref":"21008","address":"74 AVENUE VICTOR HUGO - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27004","lat":"48.876720","lng":"2.344393","tags":{"name":"CADET","ref":"9010","address":"1\/3 RUE DE ROCHECHOUART - 75009 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":18,"free":3}},{"id":"27828","lat":"48.896049","lng":"2.296836","tags":{"name":"BRIAND (LEVALLOIS)","ref":"23005","address":"152 RUE ARISTIDE BRIAND - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"27605","lat":"48.885258","lng":"2.334618","tags":{"name":"LEPIC VERON","ref":"18114","address":"35 RUE VERON - 75018 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598560,"updated":"30\/06\/2013 | 15 h 22 m 40 s","available":21,"free":0}},{"id":"26798","lat":"48.870003","lng":"2.348996","tags":{"name":"THOREL","ref":"2107","address":"11 RUE THOREL - 75002 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":15,"free":0}},{"id":"26853","lat":"48.846603","lng":"2.349015","tags":{"name":"DESCARTES","ref":"5017","address":"17 RUE DESCARTES - 75005 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":28,"free":2}},{"id":"26830","lat":"48.858829","lng":"2.351891","tags":{"name":"BEAUBOURG SAINT MERRY","ref":"4019","address":"4 RUE DU CLOITRE SAINT MERRI - 75004 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598419,"updated":"30\/06\/2013 | 15 h 20 m 19 s","available":15,"free":16}},{"id":"27546","lat":"48.886456","lng":"2.332898","tags":{"name":"JOSEPH DE MAISTRE LEPIC","ref":"18003","address":"2 RUE JOSEPH DE MAISTRE - 75018 PARIS","bonus":"1","open":"1","total":"43","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":43,"free":0}},{"id":"27286","lat":"48.830555","lng":"2.333783","tags":{"name":"COTY TOMBE D'ISSOIRE","ref":"14009","address":"49 RUE DE LA TOMBE D'ISSOIRE - 75014 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":35,"free":1}},{"id":"27534","lat":"48.894344","lng":"2.312594","tags":{"name":"BERTHIER PORTE DE CLICHY","ref":"17106","address":"4 BOULEVARD BERTHIER - 75017 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598547,"updated":"30\/06\/2013 | 15 h 22 m 27 s","available":3,"free":17}},{"id":"26779","lat":"48.866146","lng":"2.350845","tags":{"name":"ALLEE PIERRE LAZAEFF","ref":"2003","address":"189 RUE SAINT DENIS - 75002 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598410,"updated":"30\/06\/2013 | 15 h 20 m 10 s","available":31,"free":0}},{"id":"26854","lat":"48.848385","lng":"2.350170","tags":{"name":"MUTUALITE","ref":"5018","address":"20 RUE MONGE - 75005 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598424,"updated":"30\/06\/2013 | 15 h 20 m 24 s","available":2,"free":34}},{"id":"27011","lat":"48.881031","lng":"2.340774","tags":{"name":"TRUDAINE MARTYRS","ref":"9017","address":"01 RUE LALLIER - 75009 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598453,"updated":"30\/06\/2013 | 15 h 20 m 53 s","available":29,"free":0}},{"id":"26792","lat":"48.868660","lng":"2.350186","tags":{"name":"ABOUKIR","ref":"2016","address":"108 RUE D'ABOUKIR - 75002 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598413,"updated":"30\/06\/2013 | 15 h 20 m 13 s","available":19,"free":1}},{"id":"27492","lat":"48.894150","lng":"2.314678","tags":{"name":"PORTE DE CLICHY FRAGONARD","ref":"17011","address":"4 RUE FRAGONARD - 75017 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":6,"free":48}},{"id":"27080","lat":"48.872421","lng":"2.348395","tags":{"name":"POISSONNI\u00bbRE - ENGHIEN","ref":"10042","address":"52 RUE D'ENGHIEN \/ ANGLE RUE DU FAUBOURG POISSONIERE - 75010 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598465,"updated":"30\/06\/2013 | 15 h 21 m 05 s","available":29,"free":2}},{"id":"26777","lat":"48.865242","lng":"2.351670","tags":{"name":"SEBASTOPOL-GRENATA","ref":"2001","address":"12 RUE GRENETA - 75002 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598410,"updated":"30\/06\/2013 | 15 h 20 m 10 s","available":32,"free":2}},{"id":"26816","lat":"48.852943","lng":"2.352089","tags":{"name":"PONT SAINT LOUIS","ref":"4003","address":"1 QUAI AUX FLEURS - 75004 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":0,"free":21}},{"id":"27544","lat":"48.887276","lng":"2.332648","tags":{"name":"DAMREMONT CAULAINCOURT","ref":"18001","address":"6 RUE DAMREMONT - 75018 PARIS","bonus":"1","open":"1","total":"18","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":17,"free":0}},{"id":"27754","lat":"48.834862","lng":"2.247863","tags":{"name":"VAILLANT (BOULOGNE-BILLANCOURT)","ref":"21019","address":"71 AVENUE EDOUARD VAILLANT - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"26832","lat":"48.861420","lng":"2.352581","tags":{"name":"BEAUBOURG RAMBUTEAU","ref":"4021","address":"49 RUE RAMBUTEAU - 75004 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":24,"free":2}},{"id":"27042","lat":"48.870773","lng":"2.349650","tags":{"name":"HAUTEVILLE","ref":"10003","address":"1 RUE D'HAUTEVILLE - 75010 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":17,"free":0}},{"id":"27003","lat":"48.876602","lng":"2.345786","tags":{"name":"SQUARE MONTHOLON","ref":"9009","address":"26 RUE MONTHOLON - 75009 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":21,"free":0}},{"id":"27819","lat":"48.821835","lng":"2.313459","tags":{"name":"BROSSOLETTE (MALAKOFF)","ref":"22403","address":"FACE 35 AVENUE PIERRE BROSSOLETTE - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"27037","lat":"48.877892","lng":"2.344786","tags":{"name":"ROCHECHOUART MAUBEUGE","ref":"9108","address":"25 RUE DE ROCHECHOUART - 75009 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598458,"updated":"30\/06\/2013 | 15 h 20 m 58 s","available":33,"free":0}},{"id":"27736","lat":"48.848301","lng":"2.237570","tags":{"name":"TRANSVAL (BOULOGNE-BILLANCOURT)","ref":"21001","address":"11 RUE DU TRANSVAL - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27002","lat":"48.879162","lng":"2.343698","tags":{"name":"TOUR D'AUVERGNE","ref":"9008","address":"24 RUE D'AUVERGNE - 75009 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":16,"free":1}},{"id":"26852","lat":"48.845062","lng":"2.349498","tags":{"name":"CONTRESCARPE-THOUIN","ref":"5016","address":"1 RUE THOUIN - 75005 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":14,"free":1}},{"id":"27584","lat":"48.882195","lng":"2.340652","tags":{"name":"MARTYRS 2","ref":"18041","address":"FACE 112 BOULEVARD DE ROCHECHOUART - 75018 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":19,"free":1}},{"id":"27323","lat":"48.835129","lng":"2.341579","tags":{"name":"ARAGO 2","ref":"14113","address":"36 RUE DE LA SANTE - 75014 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":27,"free":10}},{"id":"27487","lat":"48.892063","lng":"2.323291","tags":{"name":"GUY MOCQUET DAVY","ref":"17006","address":"34 RUE GUY MOCQUET - 75017 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":22,"free":0}},{"id":"26812","lat":"48.863064","lng":"2.352839","tags":{"name":"GRENIER SAINT LAZARE","ref":"3014","address":"FACE 34 RUE GRENIER SAINT LAZARE - 75003 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598416,"updated":"30\/06\/2013 | 15 h 20 m 16 s","available":15,"free":14}},{"id":"26827","lat":"48.856247","lng":"2.353281","tags":{"name":"LOBAU","ref":"4016","address":"3 RUE LOBAU - 75004 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598419,"updated":"30\/06\/2013 | 15 h 20 m 19 s","available":29,"free":29}},{"id":"27044","lat":"48.873974","lng":"2.348389","tags":{"name":"CONSERVATOIRE","ref":"10005","address":"59 RUE DES PETITES ECURIES - 75010 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":13,"free":4}},{"id":"27330","lat":"48.830723","lng":"2.336147","tags":{"name":"DAREAU","ref":"14125","address":"34 RUE DAREAU - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":14,"free":9}},{"id":"27207","lat":"48.837727","lng":"2.344664","tags":{"name":"PORT ROYAL","ref":"13001","address":"51 BOULEVARD PORT ROYAL - 75013 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":13,"free":4}},{"id":"27039","lat":"48.875820","lng":"2.347303","tags":{"name":"BLEUE","ref":"9113","address":"5 RUE BLEUE - 75009 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598458,"updated":"30\/06\/2013 | 15 h 20 m 58 s","available":27,"free":0}},{"id":"26874","lat":"48.850456","lng":"2.352454","tags":{"name":"PONTOISE","ref":"5107","address":"1 RUE DE PONTOISE - 75005 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":14,"free":8}},{"id":"27590","lat":"48.891083","lng":"2.326736","tags":{"name":"ST OUEN LAMARCK","ref":"18047","address":"53 AVENUE DE SAINT OUEN - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598557,"updated":"30\/06\/2013 | 15 h 22 m 37 s","available":29,"free":1}},{"id":"27821","lat":"48.819340","lng":"2.300477","tags":{"name":"NORD (MALAKOFF)","ref":"22405","address":"ANGLE PASSAGE DU NORD \/ GABRIEL PERI - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"26834","lat":"48.857204","lng":"2.353976","tags":{"name":"HOTEL DE VILLE","ref":"4103","address":"1 RUE DES ARCHIVES - 75004 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":11,"free":14}},{"id":"27547","lat":"48.884483","lng":"2.338812","tags":{"name":"ABBESSES","ref":"18004","address":"2 RUE DE LA VIEUVILLE - 75018 PARIS","bonus":"1","open":"1","total":"13","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":12,"free":1}},{"id":"27796","lat":"48.818939","lng":"2.291960","tags":{"name":"BASCH (VANVES)","ref":"21702","address":"6 AVENUE VICTOR BASCH - 92170 VANVES","bonus":"1","open":"0"}},{"id":"27081","lat":"48.870277","lng":"2.351282","tags":{"name":"BONNE NOUVELLE PROP2","ref":"10105","address":"2 RUE DE MAZAGRAN - 75010 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":24,"free":0}},{"id":"27787","lat":"48.822678","lng":"2.268631","tags":{"name":"CRESSON 1 (ISSY LES MOULINEAUX)","ref":"21307","address":"FACE 36 AVENUE VICTOR CRESSON - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27604","lat":"48.887573","lng":"2.334327","tags":{"name":"LEPIC","ref":"18113","address":"70, 72 RUE LEPIC - 75018 PARIS","bonus":"1","open":"1","total":"22","timestamp":1372598560,"updated":"30\/06\/2013 | 15 h 22 m 40 s","available":22,"free":0}},{"id":"27296","lat":"48.825031","lng":"2.326413","tags":{"name":"SARETTE GENERAL LECLERC","ref":"14019","address":"58 RUE SARRETTE - 75014 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":16,"free":6}},{"id":"26850","lat":"48.841633","lng":"2.348552","tags":{"name":"CALVIN","ref":"5014","address":"8 RUE JEAN CALVIN - 75005 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":25,"free":1}},{"id":"27288","lat":"48.827526","lng":"2.331729","tags":{"name":"ALESIA SARRETTE","ref":"14011","address":"6 RUE SARRETTE - 75014 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":20,"free":3}},{"id":"27788","lat":"48.821293","lng":"2.273314","tags":{"name":"LASSERRE (ISSY LES MOULINEAUX)","ref":"21308","address":"FACE AU 27 RUE LASSERRE - 92130 ISSY LES MOULINEAUX","bonus":"1","open":"0"}},{"id":"26855","lat":"48.849689","lng":"2.352970","tags":{"name":"POISSY","ref":"5019","address":"8-10 RUE DE POISSY - 75005 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598424,"updated":"30\/06\/2013 | 15 h 20 m 24 s","available":8,"free":16}},{"id":"27318","lat":"48.823418","lng":"2.322937","tags":{"name":"PORTE DE MONTROUGE 2","ref":"14107","address":"2 AVENUE DE LA PORTE DE MONTROUGE - 75014 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598507,"updated":"30\/06\/2013 | 15 h 21 m 47 s","available":33,"free":0}},{"id":"26808","lat":"48.862465","lng":"2.354237","tags":{"name":"BEAUBOURG","ref":"3010","address":"46 RUE BEAUBOURG - 75003 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":13,"free":5}},{"id":"27738","lat":"48.845638","lng":"2.237011","tags":{"name":"AURES 1 (BOULOGNE-BILLANCOURT)","ref":"21003","address":"2 BOULEVARD JEAN JAURES - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27827","lat":"48.898197","lng":"2.293848","tags":{"name":"COUTURIER 2 (LEVALLOIS)","ref":"23004","address":"109 RUE PAUL VAILLANT COUTURIER - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"27491","lat":"48.894768","lng":"2.318885","tags":{"name":"JONCQUIERE","ref":"17010","address":"90 RUE DE LA JONQUIERE - 75017 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":22,"free":12}},{"id":"27001","lat":"48.879829","lng":"2.345396","tags":{"name":"CONDORCET","ref":"9007","address":"34 RUE CONDORCET - 75009 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598452,"updated":"30\/06\/2013 | 15 h 20 m 52 s","available":20,"free":0}},{"id":"26858","lat":"48.846294","lng":"2.352223","tags":{"name":"CARDINAL LEMOINE","ref":"5022","address":"40 RUE BOU LANGERS - 75005 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598424,"updated":"30\/06\/2013 | 15 h 20 m 24 s","available":14,"free":3}},{"id":"27495","lat":"48.896786","lng":"2.310714","tags":{"name":"PORTE DE CLICHY - AVENUE DE CLICHY","ref":"17014","address":"12 AVENUE DE LA PORTE DE CLICHY - 75017 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598541,"updated":"30\/06\/2013 | 15 h 22 m 21 s","available":0,"free":34}},{"id":"27835","lat":"48.878708","lng":"2.241975","tags":{"name":"WALLACE (PUTEAUX)","ref":"28001","address":"FACE AU 4 BOULEVARD RICHARD WALLACE - 92800 PUTEAUX","bonus":"0","open":"0"}},{"id":"26810","lat":"48.867496","lng":"2.353661","tags":{"name":"GAITE LYRIQUE","ref":"3012","address":"FACE 8 RUE SALOMON DE CAUS - 75003 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598416,"updated":"30\/06\/2013 | 15 h 20 m 16 s","available":24,"free":0}},{"id":"27758","lat":"48.897110","lng":"2.309900","tags":{"name":"NATIONS UNIES (CLICHY)","ref":"21102","address":"PLACE DES NATIONS UNIES - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27739","lat":"48.840023","lng":"2.239819","tags":{"name":"JAURES 2 (BOULOGNE-BILLANCOURT)","ref":"21004","address":"55 BOULEVARD JEAN JAURES - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27836","lat":"48.884686","lng":"2.248125","tags":{"name":"SOLJENITSYNE (PUTEAUX)","ref":"28002","address":"BOULEVARD ALEXANDRE SOLJENITSYNE - 92800 PUTEAUX","bonus":"0","open":"0"}},{"id":"26851","lat":"48.841507","lng":"2.349983","tags":{"name":"MOUFFETARD EPEE DE BOIS","ref":"5015","address":"12 RUE DE L'EPEE DE BOIS - 75005 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598423,"updated":"30\/06\/2013 | 15 h 20 m 23 s","available":52,"free":4}},{"id":"27561","lat":"48.890747","lng":"2.330820","tags":{"name":"CARPEAUX","ref":"18018","address":"13 RUE CARPEAUX - 75018 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":17,"free":2}},{"id":"27602","lat":"48.889496","lng":"2.333394","tags":{"name":"FELIZ ZIEM","ref":"18111","address":"2 RUE FELIX ZIEM - 75018 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":23,"free":1}},{"id":"26857","lat":"48.847183","lng":"2.353398","tags":{"name":"JUSSIEU","ref":"5021","address":"41 RUE JUSSIEU - 75005 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598424,"updated":"30\/06\/2013 | 15 h 20 m 24 s","available":22,"free":14}},{"id":"27826","lat":"48.898338","lng":"2.285090","tags":{"name":"WILSON (LEVALLOIS)","ref":"23003","address":"132 RUE DU PRESIDENT WILSON - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"27208","lat":"48.834866","lng":"2.344575","tags":{"name":"ARAGO","ref":"13002","address":"55 BD ARAGO - 75013 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":16,"free":6}},{"id":"26995","lat":"48.877502","lng":"2.348569","tags":{"name":"POISSONNIERE","ref":"9001","address":"5 RUE DE BELLEFOND - 75009 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598450,"updated":"30\/06\/2013 | 15 h 20 m 50 s","available":14,"free":3}},{"id":"27744","lat":"48.837997","lng":"2.240847","tags":{"name":"LECORBUSIER (BOULOGNE-BILLANCOURT)","ref":"21009","address":"FACE AU 1 RUE LECORBUSIER - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"26875","lat":"48.843861","lng":"2.351902","tags":{"name":"LACEPEDE","ref":"5110","address":"27 RUE LACEPEDE - 75005 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":14,"free":9}},{"id":"26825","lat":"48.859402","lng":"2.355927","tags":{"name":"ARCHIVES BLANCS MANTEAUX","ref":"4014","address":"29 RUE DES BLANCS MANTEAUX - 75004 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":20,"free":13}},{"id":"27548","lat":"48.884163","lng":"2.341880","tags":{"name":"TARDIEU","ref":"18005","address":"8 RUE TARDIEU - 75018 PARIS","bonus":"1","open":"1","total":"17","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":14,"free":3}},{"id":"27482","lat":"48.892822","lng":"2.326803","tags":{"name":"GUY MOCQUET","ref":"17001","address":"RUE GUY MOCQUET - 75017 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598538,"updated":"30\/06\/2013 | 15 h 22 m 18 s","available":41,"free":2}},{"id":"27785","lat":"48.824127","lng":"2.260646","tags":{"name":"MADAULE (ISSY LES MOULINEAUX)","ref":"21305","address":"PLACE MADAULE - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27284","lat":"48.831367","lng":"2.340812","tags":{"name":"SAINT JACQUES FERRUS","ref":"14007","address":"1 RUE FERRUS - 75014 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598501,"updated":"30\/06\/2013 | 15 h 21 m 41 s","available":11,"free":23}},{"id":"27295","lat":"48.822857","lng":"2.325043","tags":{"name":"PORTE D'ORLEANS","ref":"14018","address":"6 PLACE DU 25 AOUT 1944 - 75014 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":39,"free":8}},{"id":"26826","lat":"48.855965","lng":"2.356381","tags":{"name":"MAIRIE DU 4 EME","ref":"4015","address":"25 RUE DU PONT LOUIS PHILIPPE - 75004 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598419,"updated":"30\/06\/2013 | 15 h 20 m 19 s","available":0,"free":16}},{"id":"27043","lat":"48.870892","lng":"2.353522","tags":{"name":"METZ","ref":"10004","address":"7 RUE DE METZ - 75010 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":56,"free":5}},{"id":"27536","lat":"48.896179","lng":"2.318021","tags":{"name":"BESSIERES","ref":"17108","address":"102 BOULEVARD BESSIERES - 75017 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598548,"updated":"30\/06\/2013 | 15 h 22 m 28 s","available":9,"free":44}},{"id":"27297","lat":"48.821217","lng":"2.321174","tags":{"name":"PORTE DE MONTROUGE","ref":"14020","address":"AV. DE LA PORTE DE MONTROUGE - 75014 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598504,"updated":"30\/06\/2013 | 15 h 21 m 44 s","available":42,"free":9}},{"id":"27769","lat":"48.899349","lng":"2.296626","tags":{"name":"PETIT (CLICHY)","ref":"21113","address":"2, RUE PETIT - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27041","lat":"48.869678","lng":"2.354328","tags":{"name":"STRASBOURG","ref":"10002","address":"3 BD STRASBOURG - 75010 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":17,"free":0}},{"id":"26807","lat":"48.861580","lng":"2.356609","tags":{"name":"TEMPLE 113","ref":"3009","address":"76 RUE DU TEMPLE - 75003 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":18,"free":0}},{"id":"26999","lat":"48.882633","lng":"2.344884","tags":{"name":"SQUARE D'ANVERS","ref":"9005","address":"95 RUE DE DUNKERQUE - 75009 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598451,"updated":"30\/06\/2013 | 15 h 20 m 51 s","available":32,"free":1}},{"id":"27825","lat":"48.898350","lng":"2.279179","tags":{"name":"RANCE (LEVALLOIS)","ref":"23002","address":"157 ANATOLE FRANCE - 92300 LEVALLOIS","bonus":"0","open":"0"}},{"id":"26860","lat":"48.842735","lng":"2.352472","tags":{"name":"PLACE MONGE","ref":"5024","address":"4 RUE DOLOMIEU - 75005 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":4,"free":17}},{"id":"27752","lat":"48.833473","lng":"2.243901","tags":{"name":"REPUBLIQUE 1 (BOULOGNE-BILLANCOURT)","ref":"21017","address":"91 BOULEVARD DE LA REPUBLIPQUE - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"26861","lat":"48.838993","lng":"2.349932","tags":{"name":"MOUFFETARD SAINT MEDARD","ref":"5026","address":"3 RUE PASCAL - 75005 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":2,"free":46}},{"id":"26809","lat":"48.865585","lng":"2.356278","tags":{"name":"TURBIGO","ref":"3011","address":"55 RUE TURBIGO - 75003 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598416,"updated":"30\/06\/2013 | 15 h 20 m 16 s","available":27,"free":4}},{"id":"27753","lat":"48.828243","lng":"2.250658","tags":{"name":"SEINE (BOULOGNE-BILLANCOURT)","ref":"21018","address":"FACE AU 13 RUE DE LA SEINE - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27763","lat":"48.899361","lng":"2.304041","tags":{"name":"SINCHOLLE (CLICHY)","ref":"21107","address":"RUE BERTRAND SINCHOLLE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"26822","lat":"48.853813","lng":"2.357093","tags":{"name":"PLACE DU BATAILLON FRANCAIS DE L'ONU","ref":"4011","address":"FACE 18 RUE DE L'HOTEL DE VILLE - 75004 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":4,"free":29}},{"id":"27058","lat":"48.875034","lng":"2.352185","tags":{"name":"PARADIS","ref":"10019","address":"23 RUE PARADIS - 75010 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":25,"free":3}},{"id":"27820","lat":"48.817558","lng":"2.307486","tags":{"name":"BROSSOLETTE 2 (MALAKOFF)","ref":"22404","address":"102 AVENUE PIERRE BROSSOLETTE - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"26813","lat":"48.868637","lng":"2.355592","tags":{"name":"PORTE SAINT MARTIN","ref":"3101","address":"62 RUE MESLAY - 75003 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598416,"updated":"30\/06\/2013 | 15 h 20 m 16 s","available":34,"free":0}},{"id":"27000","lat":"48.882107","lng":"2.346262","tags":{"name":"TRUDAINRE ROCHECHOUART","ref":"9006","address":"81 RUE DUNKERQUE - 75009 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598451,"updated":"30\/06\/2013 | 15 h 20 m 51 s","available":16,"free":0}},{"id":"27740","lat":"48.834953","lng":"2.241688","tags":{"name":"MORIZET (BOULOGNE-BILLANCOURT)","ref":"21005","address":"20 AVENUE ANDRE MORIZET - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"26856","lat":"48.849159","lng":"2.356140","tags":{"name":"PONT DE SULLY RIVE GAUCHE","ref":"5020","address":"03 RUE DES FOSSES SAINT BERNARD - 75005 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598424,"updated":"30\/06\/2013 | 15 h 20 m 24 s","available":1,"free":20}},{"id":"26996","lat":"48.879223","lng":"2.349147","tags":{"name":"MAUBEUGE CONDORCET","ref":"9002","address":"19 RUE D'ABBEVILLE - 75009 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598451,"updated":"30\/06\/2013 | 15 h 20 m 51 s","available":15,"free":0}},{"id":"27059","lat":"48.877102","lng":"2.351222","tags":{"name":"CHABROL","ref":"10020","address":"59 RUE CHABROL - 75010 PARIS","bonus":"0","open":"1","total":"11","timestamp":1372598462,"updated":"30\/06\/2013 | 15 h 21 m 02 s","available":8,"free":0}},{"id":"26823","lat":"48.855797","lng":"2.357908","tags":{"name":"ECOUFFES RIVOLI","ref":"4012","address":"2 RUE TIRON - 75004 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":1,"free":27}},{"id":"27045","lat":"48.872940","lng":"2.354034","tags":{"name":"PETITES ECURIES","ref":"10006","address":"5 RUE DES PETITES ECURIES - 75010 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":25,"free":2}},{"id":"27488","lat":"48.895912","lng":"2.322727","tags":{"name":"NAVIER","ref":"17007","address":"FACE 57 RUE NAVIER - 75017 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":18,"free":13}},{"id":"27549","lat":"48.884693","lng":"2.344139","tags":{"name":"MARCHE ST-PIERRE","ref":"18006","address":"PLACE SAINT PIERRE - 75018 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":31,"free":0}},{"id":"26998","lat":"48.882912","lng":"2.346319","tags":{"name":"ROCHECHOUART GERANDO","ref":"9004","address":"19 RUE GUERANDO - 75009 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598451,"updated":"30\/06\/2013 | 15 h 20 m 51 s","available":20,"free":1}},{"id":"27319","lat":"48.822342","lng":"2.327862","tags":{"name":"JOURDAN LE BRIX ET MESNIN","ref":"14108","address":"RUE LE BRIX ET MESNIN - 75014 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598508,"updated":"30\/06\/2013 | 15 h 21 m 48 s","available":20,"free":1}},{"id":"27795","lat":"48.816940","lng":"2.280989","tags":{"name":"LARMEROUX (VANVES)","ref":"21701","address":"FACE 5 BIS RUE LARMEROUX - 92170 VANVES","bonus":"1","open":"0"}},{"id":"26866","lat":"48.843674","lng":"2.354616","tags":{"name":"LACEPEDE","ref":"5031","address":"2 RUE LACEPEDE - 75005 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":9,"free":43}},{"id":"26824","lat":"48.858513","lng":"2.358634","tags":{"name":"FRANCS BOURGEOIS","ref":"4013","address":"50 RUE VIEILLE DU TEMPLE - 75004 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":1,"free":26}},{"id":"26859","lat":"48.845615","lng":"2.355745","tags":{"name":"PLACE JUSSIEU","ref":"5023","address":"13 RUE JUSSIEU - 75005 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":6,"free":17}},{"id":"27210","lat":"48.835480","lng":"2.348572","tags":{"name":"ARAGO CORDELIERE - VERSION 2","ref":"13005","address":"2 RUE DES CORDELIERES - 75013 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":12,"free":33}},{"id":"27326","lat":"48.820324","lng":"2.323003","tags":{"name":"ROMAIN ROLLAND","ref":"14116","address":"49-51 BD ROMAIN ROLLAND - 75014 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":12,"free":0}},{"id":"27560","lat":"48.889679","lng":"2.338179","tags":{"name":"PECQUEUR","ref":"18017","address":"93 RUE COULAINCOURT - 75018 PARIS","bonus":"1","open":"1","total":"38","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":38,"free":0}},{"id":"27046","lat":"48.872429","lng":"2.355489","tags":{"name":"CHATEAU D'EAU","ref":"10007","address":"57 RUE DU CHATEAU D'EAU - 75010 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598459,"updated":"30\/06\/2013 | 15 h 20 m 59 s","available":16,"free":3}},{"id":"27294","lat":"48.822781","lng":"2.330538","tags":{"name":"JOURDAN TOMBE ISSOIRE","ref":"14017","address":"160 RUE TOMBE ISSOIRE - 75014 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":40,"free":3}},{"id":"26869","lat":"48.840508","lng":"2.353714","tags":{"name":"CENSIER","ref":"5034","address":"21 RUE CENSIER - 75005 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":1,"free":68}},{"id":"27289","lat":"48.826702","lng":"2.338636","tags":{"name":"SIBELLE ALESIA","ref":"14012","address":"FACE 2 AVENUE DE LA SIBELLE - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":8,"free":15}},{"id":"27263","lat":"48.828838","lng":"2.341967","tags":{"name":"MARCHAND SANTE","ref":"13107","address":"12 PASSAGE VICTOR MARCHAND - 75013 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":10,"free":33}},{"id":"26805","lat":"48.862400","lng":"2.359447","tags":{"name":"ARCHIVES PASTOURELLE","ref":"3007","address":"67 RUE DES ARCHIVES - 75003 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":26,"free":2}},{"id":"27822","lat":"48.815250","lng":"2.298000","tags":{"name":"MOQUET (MALAKOFF)","ref":"22406","address":"81 RUE GUY MOQUET - 92240 MALAKOFF","bonus":"0","open":"0"}},{"id":"27562","lat":"48.891876","lng":"2.335447","tags":{"name":"MONTCALM","ref":"18019","address":"2 RUE MONTCALM - 75018 PARIS","bonus":"1","open":"1","total":"49","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":47,"free":2}},{"id":"26862","lat":"48.837128","lng":"2.351433","tags":{"name":"GOBELINS","ref":"5027","address":"22 AVENUE DES GOBELINS - 75005 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":5,"free":32}},{"id":"27741","lat":"48.841599","lng":"2.233497","tags":{"name":"PARIS (BOULOGNE-BILLANCOURT)","ref":"21006","address":"162 RUE DE PARIS - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27293","lat":"48.824768","lng":"2.336000","tags":{"name":"REILLE MONTSOURIS","ref":"14016","address":"61 AVENUE RENE COTY - 75014 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":23,"free":30}},{"id":"27784","lat":"48.820953","lng":"2.260736","tags":{"name":"BLUM (ISSY LES MOULINEAUX)","ref":"21304","address":"FACE 2 PLACE LEON BLUM - 92100 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27751","lat":"48.828754","lng":"2.245911","tags":{"name":"POINT DU JOUR (BOULOGNE-BILLANCOURT)","ref":"21016","address":"118 RUE DU POINT DU JOUR - 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"27762","lat":"48.900661","lng":"2.308570","tags":{"name":"MORICE 2 (CLICHY)","ref":"21106","address":"2-4 RUE MORICE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27770","lat":"48.816292","lng":"2.311280","tags":{"name":"JAURES (MONTROUGE)","ref":"21201","address":"6 PLACE JEAN JAURES \/ RUE MAURICE ARNOUX ET RUE CAMILLE PELLETIN - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27837","lat":"48.880470","lng":"2.237362","tags":{"name":"JAURES (PUTEAUX)","ref":"28003","address":"152 RUE JEAN JAURES - 92800 PUTEAUX","bonus":"0","open":"0"}},{"id":"27484","lat":"48.895809","lng":"2.327897","tags":{"name":"JACQUES KELLNER","ref":"17003","address":"4-6 RUE JACQUES KELLNER - 75017 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598539,"updated":"30\/06\/2013 | 15 h 22 m 19 s","available":30,"free":15}},{"id":"27209","lat":"48.830624","lng":"2.345429","tags":{"name":"GLACIERE","ref":"13004","address":"88 BOULEVARD AUGUSTE BLANQUI (SUR TPC) - 75013 PARIS","bonus":"0","open":"1","total":"68","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":10,"free":52}},{"id":"27571","lat":"48.894058","lng":"2.332199","tags":{"name":"VAUVENARGUES","ref":"18028","address":"195 RUE CHAMPIONNET - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598554,"updated":"30\/06\/2013 | 15 h 22 m 34 s","available":33,"free":0}},{"id":"27775","lat":"48.818233","lng":"2.320885","tags":{"name":"ERI (MONTROUGE)","ref":"21206","address":"35\/37 RUE GABRIEL PERI - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"26803","lat":"48.866138","lng":"2.359661","tags":{"name":"TURBIGO SAINTE ELISABETH","ref":"3005","address":"7 RUE SAINTE ELISABETH - 75003 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":29,"free":3}},{"id":"26863","lat":"48.841080","lng":"2.355431","tags":{"name":"CENSIER BUFFON","ref":"5028","address":"6 RUE CENSIER - 75005 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598425,"updated":"30\/06\/2013 | 15 h 20 m 25 s","available":0,"free":52}},{"id":"27068","lat":"48.880726","lng":"2.351464","tags":{"name":"PLACE DE ROUBAIX","ref":"10029","address":"39 RUE DE DUNKERQUE - 75010 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":23,"free":0}},{"id":"27823","lat":"48.814678","lng":"2.287400","tags":{"name":"BARBUSSE (MALAKOFF)","ref":"22407","address":"ROND POINT HENRI BARBUSSE - 92240 MALAKOFF","bonus":"1","open":"0"}},{"id":"27048","lat":"48.872086","lng":"2.357664","tags":{"name":"HITTORFF","ref":"10009","address":"FACE 14 RUE HITTORFF - 75010 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":13,"free":4}},{"id":"26806","lat":"48.859848","lng":"2.361050","tags":{"name":"PERLE","ref":"3008","address":"22 RUE DE LA PERLE - 75003 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":2,"free":14}},{"id":"27060","lat":"48.877357","lng":"2.354511","tags":{"name":"MARCHE ST QUENTIN","ref":"10021","address":"4 RUE DES PETITS HOTELS - 75010 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598462,"updated":"30\/06\/2013 | 15 h 21 m 02 s","available":14,"free":1}},{"id":"27749","lat":"48.831429","lng":"2.241205","tags":{"name":"HAMEAU FLEURI (BOULOGNE-BILLANCOURT)","ref":"21014","address":"FACE AU 12 RUE DU HAMEAU FLEURIE - 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"26997","lat":"48.883652","lng":"2.349041","tags":{"name":"PLACE BARB\u00bbS","ref":"9003","address":"PLACE BARBES - 75009 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598451,"updated":"30\/06\/2013 | 15 h 20 m 51 s","available":24,"free":0}},{"id":"27545","lat":"48.885303","lng":"2.347211","tags":{"name":"CLIGNANCOURT","ref":"18002","address":"25 RUE DE CLIGNANCOURT - 75018 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":22,"free":1}},{"id":"27748","lat":"48.825848","lng":"2.248821","tags":{"name":"GRENIER (BOULOGNE-BILLANCOURT)","ref":"21013","address":"4 AVENUE PIERRE GRENIER - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27057","lat":"48.875385","lng":"2.356094","tags":{"name":"ALBAN SATRAGNE","ref":"10018","address":"110-112 RUE FAUBOURG SAINT DENIS - 75010 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":26,"free":3}},{"id":"26821","lat":"48.855022","lng":"2.361204","tags":{"name":"SAINT PAUL PAV\u2026E","ref":"4010","address":"105-109 TERRE PLEIN SAINT PAUL - 75004 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":0,"free":23}},{"id":"26820","lat":"48.852726","lng":"2.360878","tags":{"name":"VILLAGE SAINT PAUL","ref":"4009","address":"6 RUE SAINT PAUL - 75004 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598418,"updated":"30\/06\/2013 | 15 h 20 m 18 s","available":1,"free":25}},{"id":"27047","lat":"48.870766","lng":"2.358724","tags":{"name":"CITE RIVERIN","ref":"10008","address":"12, RUE CITE RIVERIN \/ ANGLE RUE DU CHATEAU D'EAU - 75010 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":11,"free":6}},{"id":"27056","lat":"48.874577","lng":"2.356797","tags":{"name":"GARE DE L'EST SAINT LAURENT","ref":"10017","address":"1 RUE DE LA FIDELITE - 75010 PARIS","bonus":"0","open":"1","total":"13","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":13,"free":0}},{"id":"27757","lat":"48.902493","lng":"2.297840","tags":{"name":"VALITON (CLICHY)","ref":"21101","address":"4 RUE DE VALITON - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27794","lat":"48.870918","lng":"2.229589","tags":{"name":"LEDRU ROLLIN (SURESNES)","ref":"21503","address":"13\/15 RUE LEDRU ROLLIN - 92150 SURESNES","bonus":"0","open":"0"}},{"id":"27067","lat":"48.880371","lng":"2.352820","tags":{"name":"GARE DU NORD DENAN","ref":"10028","address":"24 RUE DE DUNKERQUE - 75010 PARIS","bonus":"1","open":"1","total":"29","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":26,"free":2}},{"id":"27040","lat":"48.868500","lng":"2.359970","tags":{"name":"JOHANN STRAUSS","ref":"10001","address":"FACE 50 RUE RENE BOULANGER - 75010 PARIS","bonus":"0","open":"1","total":"62","timestamp":1372598458,"updated":"30\/06\/2013 | 15 h 20 m 58 s","available":59,"free":3}},{"id":"27071","lat":"48.880955","lng":"2.352431","tags":{"name":"LARIBOISIERE","ref":"10033","address":"15 RUE SAINT VINCENT DE PAUL - 75010 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":24,"free":0}},{"id":"27563","lat":"48.891041","lng":"2.340015","tags":{"name":"RUISSEAU","ref":"18020","address":"31 RUE FRANCOEUR - 75018 PARIS","bonus":"1","open":"1","total":"18","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":16,"free":2}},{"id":"27089","lat":"48.879047","lng":"2.354159","tags":{"name":"GARE DU NORD 2","ref":"10152","address":"3 BOULEVARD DE DENAIN - 75010 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":23,"free":0}},{"id":"27489","lat":"48.898773","lng":"2.322478","tags":{"name":"PORCHE POUCHET","ref":"17008","address":"7 PLACE ARNAUD TZANCK - 75017 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598540,"updated":"30\/06\/2013 | 15 h 22 m 20 s","available":26,"free":10}},{"id":"27537","lat":"48.899536","lng":"2.320134","tags":{"name":"BOIS LE PR\u00a0TRE","ref":"17109","address":"22 BD DE BOIS LE PRETRE - 75017 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598548,"updated":"30\/06\/2013 | 15 h 22 m 28 s","available":14,"free":16}},{"id":"27259","lat":"48.831123","lng":"2.348109","tags":{"name":"CROULEBARBE RECULETTES","ref":"13101","address":"67-69 RUE DE CROULEBARBE - 75013 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":20,"free":13}},{"id":"27570","lat":"48.893398","lng":"2.336267","tags":{"name":"DAMREMONT ORDENER","ref":"18027","address":"102 RUE DAMREMONT - 75018 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598554,"updated":"30\/06\/2013 | 15 h 22 m 34 s","available":27,"free":0}},{"id":"26804","lat":"48.864532","lng":"2.361580","tags":{"name":"MAIRIE DU 3EME","ref":"3006","address":"10 RUE PERREE - 75003 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598415,"updated":"30\/06\/2013 | 15 h 20 m 15 s","available":33,"free":1}},{"id":"27061","lat":"48.876865","lng":"2.356119","tags":{"name":"CHABROL SAINT QUENTIN","ref":"10022","address":"FACE 124 RUE DU FAUBOURG SAINT DENIS - 75010 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598462,"updated":"30\/06\/2013 | 15 h 21 m 02 s","available":41,"free":1}},{"id":"27559","lat":"48.890022","lng":"2.342450","tags":{"name":"FRANCOEUR CAULAINCOURT","ref":"18016","address":"1 RUE FRANCOEUR - 75018 PARIS","bonus":"1","open":"1","total":"32","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":31,"free":1}},{"id":"27082","lat":"48.881950","lng":"2.352340","tags":{"name":"MAGENTA PARE","ref":"10107","address":"9 RUE AMBROISE PARE - 75010 PARIS","bonus":"1","open":"1","total":"47","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":46,"free":1}},{"id":"27779","lat":"48.817818","lng":"2.324031","tags":{"name":"PERI 2 (MONTROUGE)","ref":"21210","address":"8 RUE GABRIEL PERI - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27090","lat":"48.879578","lng":"2.354463","tags":{"name":"GARE DU NORD 3","ref":"10153","address":"7 BOULEVARD DE DENAIN - 75010 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":18,"free":1}},{"id":"27225","lat":"48.826035","lng":"2.342177","tags":{"name":"BOUSSINGAULT - TOLBIAC","ref":"13021","address":"55 RUE BOUSSINGAULT - 75013 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598491,"updated":"30\/06\/2013 | 15 h 21 m 31 s","available":5,"free":37}},{"id":"26811","lat":"48.856953","lng":"2.362897","tags":{"name":"RUE DE SEVIGNE","ref":"3013","address":"36 RUE DE SEVIGNE - 75003 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598416,"updated":"30\/06\/2013 | 15 h 20 m 16 s","available":1,"free":13}},{"id":"27774","lat":"48.813862","lng":"2.306944","tags":{"name":"JAURES 2 (MONTROUGE)","ref":"21205","address":"AVENUE JEAN JAURES \/ RUE ROGER SALENGERO - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27776","lat":"48.815529","lng":"2.317030","tags":{"name":"VERDIER (MONTROUGE)","ref":"21207","address":"AVENUE VERDIER ANGLE AVENUE DE LA REPUBLIQUE - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27212","lat":"48.835094","lng":"2.353468","tags":{"name":"LE BRUN GOBELINS","ref":"13007","address":"42 RUE LE BRUN - 75013 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":30,"free":16}},{"id":"27051","lat":"48.873268","lng":"2.359324","tags":{"name":"VINAIGRIERS","ref":"10012","address":"58 RUE DES VINAIGRIERS - 75010 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":18,"free":5}},{"id":"27329","lat":"48.821114","lng":"2.333785","tags":{"name":"PORTE D'ARCUEIL","ref":"14124","address":"AVENUE DAVID WEIL - 75014 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598509,"updated":"30\/06\/2013 | 15 h 21 m 49 s","available":9,"free":15}},{"id":"26817","lat":"48.851273","lng":"2.362430","tags":{"name":"SULLY MORLAND","ref":"4005","address":"2 QUAI DES CELESTINS - 75004 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":3,"free":10}},{"id":"27550","lat":"48.885197","lng":"2.349942","tags":{"name":"GOUTTE D' OR","ref":"18007","address":"65 RUE DE LA GOUTTE D'OR - 75018 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":18,"free":0}},{"id":"26872","lat":"48.839077","lng":"2.356877","tags":{"name":"GEOFFROY SAINT HILAIRE","ref":"5105","address":"8 RUE GEOFFROY SAINT HILAIRE - 75005 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":11,"free":6}},{"id":"27783","lat":"48.823452","lng":"2.249665","tags":{"name":"ILES (ISSY LES MOULINEAUX)","ref":"21303","address":"ANGLE AVENUE JEAN MONNET ET BOULEVARD DES ILES - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"26871","lat":"48.841915","lng":"2.358913","tags":{"name":"BUFFON","ref":"5104","address":"47 RUE BUFFON - 75005 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598427,"updated":"30\/06\/2013 | 15 h 20 m 27 s","available":0,"free":55}},{"id":"27523","lat":"48.897923","lng":"2.328515","tags":{"name":"PORTE DE SAINT OUEN","ref":"17044","address":"1 AVENUE DE LA PORTE DE SAINT OUEN - 75017 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598546,"updated":"30\/06\/2013 | 15 h 22 m 26 s","available":40,"free":1}},{"id":"27759","lat":"48.901459","lng":"2.317130","tags":{"name":"HUGO (CLICHY)","ref":"21103","address":"94-98 BOULEVARD VICTOR HUGO - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27793","lat":"48.871002","lng":"2.227477","tags":{"name":"VERDUN (SURESNES)","ref":"21502","address":"18 BIS RUE DE VERDUN \/ COUR MADELAINE - 92150 SURESNES","bonus":"0","open":"0"}},{"id":"27252","lat":"48.826492","lng":"2.344302","tags":{"name":"TOLBIAC WURTZ","ref":"13048","address":"20 RUE WURTZ - 75013 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598496,"updated":"30\/06\/2013 | 15 h 21 m 36 s","available":17,"free":10}},{"id":"27049","lat":"48.870998","lng":"2.361141","tags":{"name":"JACQUES BONSERGENT","ref":"10010","address":"FACE 8 PLACE JACQUES BONSERGENT - 75010 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":31,"free":1}},{"id":"27792","lat":"48.867565","lng":"2.225998","tags":{"name":"SELLIER (SURESNES)","ref":"21501","address":"RUE DE SAINT CLOUD \/ BOULEVARD HENRI SELLIER - 92150 SURESNES","bonus":"0","open":"0"}},{"id":"27569","lat":"48.892895","lng":"2.340120","tags":{"name":"RUISSEAU ORDENER","ref":"18026","address":"37 RUE DU RUISSEAU - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598554,"updated":"30\/06\/2013 | 15 h 22 m 34 s","available":32,"free":0}},{"id":"27577","lat":"48.896328","lng":"2.333390","tags":{"name":"LEIBNITZ","ref":"18034","address":"50 RUE LEIBNITZ - 75018 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":40,"free":1}},{"id":"27211","lat":"48.838154","lng":"2.357108","tags":{"name":"SAINT MARCEL JEANNE D'ARC","ref":"13006","address":"02 RUE DUMERIL - 75013 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":13,"free":27}},{"id":"27764","lat":"48.903622","lng":"2.306229","tags":{"name":"VILLENEUVE 2 (CLICHY)","ref":"21108","address":"6-8 RUE VILLENEUVE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27050","lat":"48.869091","lng":"2.362262","tags":{"name":"BOURSE DU TRAVAIL","ref":"10011","address":"3 RUE DU CHATEAU D'EAU - 75010 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":17,"free":0}},{"id":"26746","lat":"48.876419","lng":"2.358630","tags":{"name":"GARE DE L'EST","ref":"906","address":"GARDE DE L'EST-PARVIS GARE DE L'EST - 75010 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598402,"updated":"30\/06\/2013 | 15 h 20 m 02 s","available":20,"free":0}},{"id":"27761","lat":"48.902615","lng":"2.313321","tags":{"name":"MORICE (CLICHY)","ref":"21105","address":"35-37 RUE MORICE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27558","lat":"48.888618","lng":"2.347011","tags":{"name":"CUSTINE","ref":"18015","address":"23 RUE CUSTINE - 75018 PARIS","bonus":"1","open":"1","total":"41","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":40,"free":1}},{"id":"26836","lat":"48.849960","lng":"2.363240","tags":{"name":"MORLAND","ref":"4105","address":"17 BOULEVARD DU MORLAND - 75004 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":13,"free":23}},{"id":"27750","lat":"48.827599","lng":"2.241835","tags":{"name":"NATIONALE (BOULOGNE-BILLANCOURT)","ref":"21015","address":"39 RUE NATIONALE - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27055","lat":"48.875034","lng":"2.359801","tags":{"name":"VILLEMIN","ref":"10016","address":"29 RUE DES RECOLLETS - 75010 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":14,"free":1}},{"id":"27091","lat":"48.875671","lng":"2.359510","tags":{"name":"GARE DE L'EST","ref":"10161","address":"FACE 129 RUE DU FBG SAINT MARTIN - 75010 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":30,"free":4}},{"id":"27773","lat":"48.815388","lng":"2.320887","tags":{"name":"D'ORVES (MONTROUGE)","ref":"21204","address":"FACE 44 RUE D'ESTIENNES D'ORVES \/ PISCINE - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"26801","lat":"48.858158","lng":"2.364715","tags":{"name":"SAINT GILLES","ref":"3002","address":"26 RUE SAINT GILLES - 75003 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":8,"free":9}},{"id":"27088","lat":"48.879639","lng":"2.356905","tags":{"name":"GARE DU NORD 1","ref":"10151","address":"8-10 RUE DE DUNKERQUE - 75010 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":25,"free":0}},{"id":"27771","lat":"48.817245","lng":"2.327506","tags":{"name":"ARBES (MONTROUGE)","ref":"21202","address":"16 RUE BARBES - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27214","lat":"48.829983","lng":"2.350404","tags":{"name":"BLANQUI CORVISART","ref":"13009","address":"46 BOULEVARD AUGUSTE BLANQUI - 75013 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":25,"free":0}},{"id":"27745","lat":"48.835503","lng":"2.232531","tags":{"name":"SILLY (BOULOGNE-BILLANCOURT)","ref":"21010","address":"93 RUE DE SILLY - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"27540","lat":"48.898762","lng":"2.329559","tags":{"name":"PORTE DE SAINT OUEN","ref":"17115","address":"22 AVENUE DE LA PORTE DE SAINT OUEN - 75017 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598549,"updated":"30\/06\/2013 | 15 h 22 m 29 s","available":20,"free":7}},{"id":"26802","lat":"48.862133","lng":"2.364951","tags":{"name":"TURENNE BRETAGNE","ref":"3003","address":"4 RUE DES FILLES DU CALVAIRE - 75003 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":20,"free":11}},{"id":"27564","lat":"48.890923","lng":"2.344986","tags":{"name":"MARCADET - RAMEY","ref":"18021","address":"98 RUE MARCADET - 75018 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":19,"free":0}},{"id":"27782","lat":"48.821030","lng":"2.251020","tags":{"name":"BRIAND (ISSY LES MOULINEAUX)","ref":"21302","address":"PLACE DE LA RESISTANCE ANGLE RUE ARISTIDE BRIAND - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27780","lat":"48.811749","lng":"2.303170","tags":{"name":"MARNE (MONTROUGE)","ref":"21211","address":"100 AVENUE DE LA MARNE - 92120 MONTROUGE","bonus":"1","open":"0"}},{"id":"27781","lat":"48.819489","lng":"2.253869","tags":{"name":"SAINT VINCENT (ISSY LES MOULINEAUX)","ref":"21301","address":"21 RUE SAINT VINCENT - 92130 ISSY LES MOULINEAUX","bonus":"0","open":"0"}},{"id":"27742","lat":"48.840649","lng":"2.227979","tags":{"name":"RHIN DANUBE (BOULOGNE BILLANCOURT)","ref":"21007","address":"15 ROND POINT RHIN DANUBE - 92100 BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"27884","lat":"48.900890","lng":"2.324820","tags":{"name":"FRUCTIDOR (SAINT OUEN)","ref":"34001","address":"FACE 10 RUE FRUCTIDOR \/ FACE BAT 2 LE COLYSEE - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27598","lat":"48.884708","lng":"2.353580","tags":{"name":"CHARTRES","ref":"18107","address":"22-24 RUE DE CHARTRES - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":33,"free":0}},{"id":"27066","lat":"48.879356","lng":"2.358379","tags":{"name":"DUNKERQUE","ref":"10027","address":"4 RUE DE DUNKERQUE - 75010 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":18,"free":1}},{"id":"27765","lat":"48.905136","lng":"2.302503","tags":{"name":"GUICHET (CLICHY)","ref":"21109","address":"12BIS RUE DU GUICHET - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27556","lat":"48.887783","lng":"2.350518","tags":{"name":"CHATEAU ROUGE","ref":"18013","address":"28 RUE POULET - 75018 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598551,"updated":"30\/06\/2013 | 15 h 22 m 31 s","available":15,"free":1}},{"id":"27126","lat":"48.865746","lng":"2.365313","tags":{"name":"TEMPLE REPUBLIQUE","ref":"11038","address":"44 BD DU TEMPLE - 75011 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":39,"free":4}},{"id":"27062","lat":"48.876156","lng":"2.360915","tags":{"name":"VERDUN","ref":"10023","address":"1 AVENUE DE VERDUN - 75010 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598462,"updated":"30\/06\/2013 | 15 h 21 m 02 s","available":13,"free":1}},{"id":"27226","lat":"48.827564","lng":"2.349064","tags":{"name":"BUTTE AUX CAILLES","ref":"13022","address":"27 ET 36 RUE DE LA BUTTE AUX CAILLES - 75013 PARIS","bonus":"1","open":"1","total":"36","timestamp":1372598491,"updated":"30\/06\/2013 | 15 h 21 m 31 s","available":29,"free":1}},{"id":"27746","lat":"48.832275","lng":"2.234016","tags":{"name":"SILLY (BOULOGNE BILLANCOURT)","ref":"21011","address":"153 RUE DE SILLY - BOULOGNE BILLANCOURT","bonus":"0","open":"0"}},{"id":"27603","lat":"48.898014","lng":"2.333653","tags":{"name":"H\u2018PITAL BICHAT","ref":"18112","address":"2 RUE ARTHUR RANC - 75018 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598560,"updated":"30\/06\/2013 | 15 h 22 m 40 s","available":23,"free":1}},{"id":"27054","lat":"48.874111","lng":"2.362499","tags":{"name":"RECOLLETS","ref":"10015","address":"46 RUE LUCIE SAMPAIX - 75010 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":36,"free":10}},{"id":"27128","lat":"48.864422","lng":"2.366136","tags":{"name":"TEMPLE JEAN PIERRE TIMBAUD","ref":"11040","address":"18 BD DU TEMPLE - 75011 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":30,"free":6}},{"id":"27213","lat":"48.831997","lng":"2.354809","tags":{"name":"ITALIE ROSALIE","ref":"13008","address":"FACE 2 PLACE D'ITALIE - 75013 PARIS","bonus":"1","open":"1","total":"53","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":53,"free":0}},{"id":"27053","lat":"48.871662","lng":"2.363933","tags":{"name":"BEAUREPAIRE","ref":"10014","address":"14 RUE DE MARSEILLE - 75010 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598461,"updated":"30\/06\/2013 | 15 h 21 m 01 s","available":20,"free":34}},{"id":"27217","lat":"48.839504","lng":"2.360989","tags":{"name":"SAINT MARCEL","ref":"13013","address":"3 BD SAINT MARCEL - 75013 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":12,"free":8}},{"id":"27572","lat":"48.894531","lng":"2.341541","tags":{"name":"POTEAU","ref":"18029","address":"1 RUE EMILE BLEMONT - 75018 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598554,"updated":"30\/06\/2013 | 15 h 22 m 34 s","available":37,"free":1}},{"id":"26748","lat":"48.868008","lng":"2.365494","tags":{"name":"MALTE - FAUBOURG DU TEMPLE","ref":"908","address":"65 RUE DE MALTE - 75011 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598405,"updated":"30\/06\/2013 | 15 h 20 m 05 s","available":7,"free":11}},{"id":"27568","lat":"48.892925","lng":"2.344518","tags":{"name":"MAIRIE DU 18 EME","ref":"18025","address":"81 RUE MONT-CENIS - 75018 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":37,"free":2}},{"id":"27216","lat":"48.835407","lng":"2.358218","tags":{"name":"COMPO FORMIO","ref":"13011","address":"112 BD DE L'HOPITAL - 75013 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":11,"free":4}},{"id":"27576","lat":"48.896690","lng":"2.338023","tags":{"name":"MOSKOWA","ref":"18033","address":"111 RUE BELLIARD - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":30,"free":1}},{"id":"27551","lat":"48.886665","lng":"2.353213","tags":{"name":"SQUARE LEON","ref":"18008","address":"FACE 36 RUE CAVE - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598550,"updated":"30\/06\/2013 | 15 h 22 m 30 s","available":30,"free":1}},{"id":"27131","lat":"48.862652","lng":"2.367053","tags":{"name":"CIRQUE D HIVER","ref":"11043","address":"PLACE PASDELOUP - 75011 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":19,"free":1}},{"id":"27747","lat":"48.830585","lng":"2.234491","tags":{"name":"LECLERC (BOULOGNE-BILLANCOURT)","ref":"21012","address":"745 AVENUE DU GENERAL LECLERC - 92100 BOULOGNE-BILLANCOURT","bonus":"0","open":"0"}},{"id":"26870","lat":"48.843159","lng":"2.363748","tags":{"name":"BUFFON AUSTERLITZ","ref":"5035","address":"1 RUE BUFFON - 75005 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598426,"updated":"30\/06\/2013 | 15 h 20 m 26 s","available":1,"free":23}},{"id":"27260","lat":"48.837727","lng":"2.360460","tags":{"name":"SAINT MARCEL","ref":"13103","address":"89 BOULEVARD DE L'HOPITAL - 75013 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":46,"free":4}},{"id":"27133","lat":"48.861206","lng":"2.367352","tags":{"name":"SAINT SEBASTIEN FROISSARD","ref":"11045","address":"12 BD DES FILLES DU CALVAIRE - 75011 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598475,"updated":"30\/06\/2013 | 15 h 21 m 15 s","available":38,"free":2}},{"id":"27079","lat":"48.884140","lng":"2.356109","tags":{"name":"CHARTRES (18 ARR.)","ref":"10041","address":"FACE 39 BOULEVARD DE LA CHAPELLE - 75010 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598465,"updated":"30\/06\/2013 | 15 h 21 m 05 s","available":14,"free":0}},{"id":"27777","lat":"48.813080","lng":"2.319788","tags":{"name":"CARVES (MONTROUGE)","ref":"21208","address":"67 RUE CARVES ANGLE AVENUE HENRI GINOUX - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27760","lat":"48.903679","lng":"2.319177","tags":{"name":"SANZILLON (CLICHY)","ref":"21104","address":"64 RUE DE MADAME DE SANZILLON - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27565","lat":"48.890450","lng":"2.349057","tags":{"name":"BARBES MARCADET","ref":"18022","address":"57 RUE MARCADET - 75018 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":44,"free":2}},{"id":"26818","lat":"48.847725","lng":"2.365939","tags":{"name":"BASSIN DE L'ARSENAL","ref":"4006","address":"FACE 1 BOULEVARD BOURBON - 75004 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":6,"free":44}},{"id":"27084","lat":"48.873463","lng":"2.364035","tags":{"name":"BOURSE DU TRAVAIL","ref":"10111","address":"100 QUAI DE JEMMAPES - 75010 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":1,"free":20}},{"id":"27331","lat":"48.816982","lng":"2.332610","tags":{"name":"VAILLANT COUTURIER","ref":"14126","address":"155 AVENUE PAUL VAILLANT COUTURIER - 75014 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598510,"updated":"30\/06\/2013 | 15 h 21 m 50 s","available":41,"free":1}},{"id":"26800","lat":"48.858044","lng":"2.367833","tags":{"name":"CHEMIN VERT BEAUMARCHAIS","ref":"3001","address":"69 BOULEVARD BEAUMARCHAIS - 75003 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598414,"updated":"30\/06\/2013 | 15 h 20 m 14 s","available":7,"free":44}},{"id":"27277","lat":"48.841835","lng":"2.363469","tags":{"name":"GARE D'AUSTERLITZ 2","ref":"13514","address":"9 BOULEVARD DE L'HOPITAL - 75013 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":5,"free":14}},{"id":"27766","lat":"48.905502","lng":"2.310820","tags":{"name":"VILLENEUVE (CLICHY)","ref":"21110","address":"FACE 51 RUE VILLENEUVE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27218","lat":"48.842525","lng":"2.364045","tags":{"name":"GARE D'AUSTERLITZ","ref":"13014","address":"5 BIS BOULEVARD DE L'HOPITAL - 75013 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":3,"free":10}},{"id":"27292","lat":"48.820148","lng":"2.339926","tags":{"name":"CITE UNIVERSITAIRE","ref":"14015","address":"FACE 15 BOULEVARD JOURDAN - 75014 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":8,"free":10}},{"id":"27290","lat":"48.821228","lng":"2.342104","tags":{"name":"LIART AMIRAL MOUCHEZ","ref":"14013","address":"1 RUE LIARD - 75014 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598502,"updated":"30\/06\/2013 | 15 h 21 m 42 s","available":5,"free":9}},{"id":"27262","lat":"48.829876","lng":"2.354247","tags":{"name":"BOBILLOT MERY","ref":"13106","address":"17 RUE BOBILLOT - 75013 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":15,"free":8}},{"id":"27227","lat":"48.828602","lng":"2.353035","tags":{"name":"BOBILLOT VERLAINE","ref":"13023","address":"30 RUE BOBILLOT - 75013 PARIS","bonus":"1","open":"1","total":"26","timestamp":1372598491,"updated":"30\/06\/2013 | 15 h 21 m 31 s","available":19,"free":6}},{"id":"27567","lat":"48.891457","lng":"2.348636","tags":{"name":"CLIGNANCOURT MARCADET","ref":"18024","address":"105 RUE DE CLIGNANCOURT - 75018 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":39,"free":0}},{"id":"26837","lat":"48.855499","lng":"2.368429","tags":{"name":"BEAUMARCHAIS","ref":"4107","address":"27 BOULEVARD BEAUMARCHAIS - 75004 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598421,"updated":"30\/06\/2013 | 15 h 20 m 21 s","available":16,"free":2}},{"id":"26833","lat":"48.853798","lng":"2.368401","tags":{"name":"BASTILLE","ref":"4101","address":"11 RUE DE LA BASTILLE - 75004 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598420,"updated":"30\/06\/2013 | 15 h 20 m 20 s","available":13,"free":1}},{"id":"27215","lat":"48.831581","lng":"2.356708","tags":{"name":"PLACE D ITALIE AURIOL","ref":"13010","address":"FACE 11 PLACE D'ITALIE - 75013 PARIS","bonus":"1","open":"1","total":"40","timestamp":1372598489,"updated":"30\/06\/2013 | 15 h 21 m 29 s","available":31,"free":4}},{"id":"26819","lat":"48.852558","lng":"2.368241","tags":{"name":"BOURDON","ref":"4007","address":"BOULEVARD BOURBON - 75004 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598417,"updated":"30\/06\/2013 | 15 h 20 m 17 s","available":1,"free":33}},{"id":"27778","lat":"48.811104","lng":"2.314630","tags":{"name":"GEORGES MESSIER (MONTROUGE)","ref":"21209","address":"35 RUE MOLIERE - 92120 MONTROUGE","bonus":"1","open":"0"}},{"id":"27052","lat":"48.871140","lng":"2.366280","tags":{"name":"SAINT LOUIS","ref":"10013","address":"2 RUE ALIBERT - 75010 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598460,"updated":"30\/06\/2013 | 15 h 21 m 00 s","available":9,"free":49}},{"id":"27261","lat":"48.843788","lng":"2.365586","tags":{"name":"GARE D'AUSTERLITZ","ref":"13104","address":"FACE 109 QUAI D'AUSTERLITZ - 75013 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":0,"free":26}},{"id":"27557","lat":"48.888325","lng":"2.353573","tags":{"name":"DOUDEAUVILLE LEON","ref":"18014","address":"26 RUE LEON - 75018 PARIS","bonus":"0","open":"1","total":"7","timestamp":1372598552,"updated":"30\/06\/2013 | 15 h 22 m 32 s","available":6,"free":0}},{"id":"27228","lat":"48.825527","lng":"2.350205","tags":{"name":"BOBILLOT TOLBIAC","ref":"13024","address":"81 RUE BOBILLOT - 75013 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598491,"updated":"30\/06\/2013 | 15 h 21 m 31 s","available":26,"free":6}},{"id":"27147","lat":"48.845886","lng":"2.366897","tags":{"name":"QUAI DE LA RAPEE","ref":"12003","address":"FACE 98 QUAI DE LA RAPEE - 75012 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":4,"free":62}},{"id":"27125","lat":"48.868408","lng":"2.367841","tags":{"name":"JULES FERRY FAUBOURG DU TEMPLE","ref":"11036","address":"FACE 28 RUE JULES FERRY - 75011 PARIS","bonus":"0","open":"1","total":"58","timestamp":1372598473,"updated":"30\/06\/2013 | 15 h 21 m 13 s","available":54,"free":4}},{"id":"27578","lat":"48.899136","lng":"2.336893","tags":{"name":"PORTE MONTMARTRE","ref":"18035","address":"FACE 66 RUE RENE BINET - 75018 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":8,"free":10}},{"id":"27552","lat":"48.886116","lng":"2.356856","tags":{"name":"LEPINE","ref":"18009","address":"12 RUE JEAN FRANCOIS LEPINE - 75018 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598551,"updated":"30\/06\/2013 | 15 h 22 m 31 s","available":19,"free":0}},{"id":"27130","lat":"48.864651","lng":"2.369261","tags":{"name":"OBERKAMPF","ref":"11042","address":"1 RUE DU GRAND PRIEURE - 75011 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":41,"free":6}},{"id":"27816","lat":"48.843124","lng":"2.222189","tags":{"name":"GARE ROUTIERE ( SAINT CLOUD)","ref":"22101","address":"GARE ROUTIERE - ARRET TRAM - 92210 SAINT CLOUD","bonus":"0","open":"0"}},{"id":"27145","lat":"48.851311","lng":"2.369250","tags":{"name":"BASTILLE","ref":"12001","address":"48 BOULEVARD DE LA BASTILLE - 75012 PARIS","bonus":"0","open":"1","total":"64","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":33,"free":29}},{"id":"27092","lat":"48.853848","lng":"2.369701","tags":{"name":"BASTILLE RICHARD LENOIR","ref":"11001","address":"2 BOULEVARD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":36,"free":1}},{"id":"27573","lat":"48.893734","lng":"2.347518","tags":{"name":"SIMPLON","ref":"18030","address":"1 RUE JOSEPH DIJON - 75018 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598554,"updated":"30\/06\/2013 | 15 h 22 m 34 s","available":37,"free":1}},{"id":"27566","lat":"48.891212","lng":"2.351289","tags":{"name":"POISSONNIERS ORDENER","ref":"18023","address":"57 RUE ORDENER - 75018 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598553,"updated":"30\/06\/2013 | 15 h 22 m 33 s","available":33,"free":1}},{"id":"27127","lat":"48.865803","lng":"2.369337","tags":{"name":"JULES FERRY REPUBLIQUE","ref":"11039","address":"FACE 121 BOULEVARD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":30,"free":5}},{"id":"27229","lat":"48.822456","lng":"2.347383","tags":{"name":"PLACE DE RUNGIS","ref":"13025","address":"FACE 35 RUE DE LA FONTAINE A MULARD - 75013 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":4,"free":22}},{"id":"27144","lat":"48.866516","lng":"2.369323","tags":{"name":"REPUBLIQUE FERRY","ref":"11113","address":"FACE 140 BOULEVARD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":54,"free":0}},{"id":"27233","lat":"48.829033","lng":"2.356183","tags":{"name":"ITALIE","ref":"13029","address":"30 AVENUE D'ITALIE - 75013 PARIS","bonus":"1","open":"1","total":"40","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":33,"free":6}},{"id":"27122","lat":"48.856869","lng":"2.370555","tags":{"name":"BREGUET SABIN","ref":"11033","address":"FACE 23 BD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598473,"updated":"30\/06\/2013 | 15 h 21 m 13 s","available":0,"free":0}},{"id":"27772","lat":"48.812511","lng":"2.325681","tags":{"name":"BRIAND (MONTROUGE)","ref":"21203","address":"PLACE JULES FERRY \/ AVENUE ARISTIDE BRIAND - 92120 MONTROUGE","bonus":"0","open":"0"}},{"id":"27072","lat":"48.883850","lng":"2.360053","tags":{"name":"CHAPELLE LOUIS BLANC","ref":"10034","address":"68 RUE LOUIS BLANC - 75010 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":19,"free":0}},{"id":"27065","lat":"48.883881","lng":"2.360080","tags":{"name":"CHATEAU LANDON","ref":"10026","address":"2 RUE DE CHATEAU LANDON - 75010 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":59,"free":0}},{"id":"27885","lat":"48.902592","lng":"2.330514","tags":{"name":"PERI (SAINT OUEN)","ref":"34002","address":"128 AVENUE GABRIEL PERI \/ AVENUE DU CAPITAINE GLAMER - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27086","lat":"48.874794","lng":"2.366669","tags":{"name":"HOPITAL SAINT LOUIS","ref":"10114","address":"12 BIS RUE DE LA GRANGE AUX BELLES - 75010 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":30,"free":27}},{"id":"27892","lat":"48.905270","lng":"2.322171","tags":{"name":"MAAR (SAINT OUEN)","ref":"34009","address":"RUE DORA MAAR \/ GARE RER - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27574","lat":"48.895798","lng":"2.345586","tags":{"name":"ALBERT KAHN","ref":"18031","address":"67 RUE CHAMPIONNET - 75018 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":46,"free":0}},{"id":"27276","lat":"48.840576","lng":"2.366124","tags":{"name":"GARE D'AUSTERLITZ","ref":"13151","address":"GARE D'AUSTERLITZ - 75013 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":6,"free":49}},{"id":"27136","lat":"48.860039","lng":"2.370984","tags":{"name":"RICHARD LENOIR","ref":"11103","address":"21 RUE PELEE - 75011 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598475,"updated":"30\/06\/2013 | 15 h 21 m 15 s","available":43,"free":4}},{"id":"27291","lat":"48.819401","lng":"2.343377","tags":{"name":"STADE CHARLETY","ref":"14014","address":"5 BOULEVARD JOURDAN - 75014 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598503,"updated":"30\/06\/2013 | 15 h 21 m 43 s","available":1,"free":59}},{"id":"27767","lat":"48.908112","lng":"2.307520","tags":{"name":"LERICHE (CLICHY)","ref":"21111","address":"14 RUE DU PROFESSEUR RENE LERICHE - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27583","lat":"48.884571","lng":"2.360216","tags":{"name":"CHAPELLE MARX DORMOY","ref":"18040","address":"29 BOULEVARD DE LA CHAPELLE - 75018 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":19,"free":1}},{"id":"27886","lat":"48.901325","lng":"2.335301","tags":{"name":"CURIE (SAINT OUEN)","ref":"34003","address":"2 RUE NEUVE PIERRE CURIE - 93401 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27555","lat":"48.888866","lng":"2.355967","tags":{"name":"DOUDEAUVILLE STEPHENSON","ref":"18012","address":"51 RUE STEPHENSON - 75018 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598551,"updated":"30\/06\/2013 | 15 h 22 m 31 s","available":34,"free":2}},{"id":"27132","lat":"48.863434","lng":"2.371209","tags":{"name":"RICHARD LENOIR VOLTAIRE NORD","ref":"11044","address":"FACE 104 BOULEVARD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598475,"updated":"30\/06\/2013 | 15 h 21 m 15 s","available":22,"free":1}},{"id":"27064","lat":"48.877419","lng":"2.366011","tags":{"name":"ECLUSES SAINT MARTIN","ref":"10025","address":"148 QUAI DE JEMMAPES - 75010 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":3,"free":12}},{"id":"27146","lat":"48.849216","lng":"2.370503","tags":{"name":"LACUEE","ref":"12002","address":"17 RUE LACUEE - 75012 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":10,"free":6}},{"id":"27575","lat":"48.897488","lng":"2.343996","tags":{"name":"PORTE DE CLIGNANCOURT","ref":"18032","address":"FACE 59 RUE BELLIARD - 75018 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":32,"free":0}},{"id":"27140","lat":"48.866329","lng":"2.371097","tags":{"name":"REPUBLIQUE PIERRE LEVEE","ref":"11109","address":"1 RUE DE LA PIERRE LEVEE - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":19,"free":2}},{"id":"27069","lat":"48.881996","lng":"2.363625","tags":{"name":"AQUEDUC","ref":"10031","address":"48 RUE LOUIS BLANC - 75010 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598463,"updated":"30\/06\/2013 | 15 h 21 m 03 s","available":37,"free":1}},{"id":"27085","lat":"48.871380","lng":"2.369896","tags":{"name":"PARMENTIER LOUVEL-TESSIER","ref":"10113","address":"151 AVENUE PARMENTIER - 75010 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":23,"free":20}},{"id":"27946","lat":"48.813156","lng":"2.332055","tags":{"name":"LENINE (GENTILLY)","ref":"42503","address":"FACE 71 AVENUE LENINE - 94250 GENTILLY","bonus":"0","open":"0"}},{"id":"27187","lat":"48.846188","lng":"2.370406","tags":{"name":"DIDEROT BERCY","ref":"12102","address":"224 RUE DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":10,"free":20}},{"id":"27264","lat":"48.822205","lng":"2.350422","tags":{"name":"BRILLAT SAVARIN","ref":"13109","address":"16 RUE BRILLAT SAVARIN - 75013 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":3,"free":18}},{"id":"27221","lat":"48.832527","lng":"2.362354","tags":{"name":"NATIONALE","ref":"13017","address":"167 RUE NATIONALE - 75013 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":31,"free":1}},{"id":"27101","lat":"48.861805","lng":"2.372651","tags":{"name":"RICHARD LENOIR","ref":"11011","address":"FACE 86 BOULEVARD RICHARD LENOIR - 75011 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":24,"free":0}},{"id":"27087","lat":"48.876137","lng":"2.368084","tags":{"name":"DODU","ref":"10115","address":"1, 3 RUE DES ECLUSES SAINT MARTIN - 75010 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598467,"updated":"30\/06\/2013 | 15 h 21 m 07 s","available":26,"free":1}},{"id":"27114","lat":"48.857040","lng":"2.372895","tags":{"name":"FROMENT BREGUET","ref":"11025","address":"9 RUE FROMENT - 75011 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":39,"free":7}},{"id":"27274","lat":"48.828156","lng":"2.358514","tags":{"name":"PARC DE CHOISY","ref":"13122","address":"FACE 153 AVENUE DE CHOISY - 75013 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":1,"free":24}},{"id":"27070","lat":"48.872860","lng":"2.370072","tags":{"name":"DODU","ref":"10032","address":"N\u221e 12-14 RUE CLAUDE VELLEFAUX- 75010 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":29,"free":2}},{"id":"27606","lat":"48.899269","lng":"2.342963","tags":{"name":"BINET","ref":"18122","address":"5 RUE BINET - 75018 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598560,"updated":"30\/06\/2013 | 15 h 22 m 40 s","available":27,"free":1}},{"id":"27124","lat":"48.869469","lng":"2.371537","tags":{"name":"GONCOURT","ref":"11035","address":"140 AVENUE PARMENTIER - 75011 PARIS","bonus":"0","open":"1","total":"53","timestamp":1372598473,"updated":"30\/06\/2013 | 15 h 21 m 13 s","available":52,"free":0}},{"id":"27593","lat":"48.895470","lng":"2.349865","tags":{"name":"CHAMPIONNET","ref":"18101","address":"32 RUE CHAMPIONNET - 75018 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":18,"free":0}},{"id":"27093","lat":"48.855106","lng":"2.373425","tags":{"name":"ROQUETTE THIERE","ref":"11002","address":"37 RUE DE LA ROQUETTE - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598468,"updated":"30\/06\/2013 | 15 h 21 m 08 s","available":11,"free":12}},{"id":"27120","lat":"48.864555","lng":"2.373072","tags":{"name":"PARMENTIER","ref":"11031","address":"1 RUE JACQUARD - 75011 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":35,"free":3}},{"id":"27911","lat":"48.810425","lng":"2.326970","tags":{"name":"BRIAND (ARCUEIL)","ref":"41103","address":"AVENUE ARISTIDE BRIAND (CARREFOUR VACHE NOIRE) - 94110 ARCUEIL","bonus":"0","open":"0"}},{"id":"27123","lat":"48.867878","lng":"2.372706","tags":{"name":"PARMENTIER FONTAINE AU ROI","ref":"11034","address":"124 AVENUE PARMENTIER - 75011 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598473,"updated":"30\/06\/2013 | 15 h 21 m 13 s","available":44,"free":1}},{"id":"27601","lat":"48.886665","lng":"2.361519","tags":{"name":"DEPARTEMENT","ref":"18110","address":"FACE 53 RUE DU DEPARTEMENT - 75018 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":15,"free":1}},{"id":"27234","lat":"48.825840","lng":"2.357215","tags":{"name":"ITALIE TOLBIAC","ref":"13030","address":"88 AVENUE D'ITALIE - 75013 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":36,"free":2}},{"id":"27580","lat":"48.894543","lng":"2.352295","tags":{"name":"AMIRAUX","ref":"18037","address":"48 RUE BOINOD - 75018 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":14,"free":4}},{"id":"27230","lat":"48.823315","lng":"2.354337","tags":{"name":"PLACE HENOCQUE VERSION 2","ref":"13026","address":"21 RUE DU DR LERAY ET LANDOUZY - 75013 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":25,"free":9}},{"id":"27238","lat":"48.829025","lng":"2.361069","tags":{"name":"EDISON","ref":"13034","address":"54 AVENUE EDISON - 75013 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598493,"updated":"30\/06\/2013 | 15 h 21 m 33 s","available":17,"free":1}},{"id":"27095","lat":"48.852257","lng":"2.374027","tags":{"name":"CHARONNE SAINT ANTOINE","ref":"11004","address":"3 RUE DE CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598468,"updated":"30\/06\/2013 | 15 h 21 m 08 s","available":17,"free":14}},{"id":"27073","lat":"48.884350","lng":"2.364163","tags":{"name":"AUBERVILLIERS","ref":"10035","address":"1 BOULEVARD DE LA CHAPELLE - 75010 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":22,"free":2}},{"id":"27150","lat":"48.844193","lng":"2.371692","tags":{"name":"GARE DE LYON VAN GOGH","ref":"12006","address":"15 RUE VAN GOGH - 75012 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598478,"updated":"30\/06\/2013 | 15 h 21 m 18 s","available":0,"free":57}},{"id":"27063","lat":"48.871826","lng":"2.372203","tags":{"name":"BUISSON SAINT LOUIS","ref":"10024","address":"2 RUE DU BUISSON SAINT LOUIS - 75010 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598462,"updated":"30\/06\/2013 | 15 h 21 m 02 s","available":17,"free":1}},{"id":"27206","lat":"48.845516","lng":"2.372650","tags":{"name":"GARE DE LYON","ref":"12151","address":"GARE DE LYON","bonus":"0","open":"1","total":"60","timestamp":1372598488,"updated":"30\/06\/2013 | 15 h 21 m 28 s","available":1,"free":58}},{"id":"27222","lat":"48.834846","lng":"2.366827","tags":{"name":"AURIOL CHEVALERET","ref":"13018","address":"1 RUE BRUANT - 75013 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":12,"free":13}},{"id":"27083","lat":"48.879333","lng":"2.368629","tags":{"name":"LOUIS BLANC (PROP 2)","ref":"10110","address":"10 RUE LOUIS BLANC - 75010 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598466,"updated":"30\/06\/2013 | 15 h 21 m 06 s","available":30,"free":1}},{"id":"27076","lat":"48.877522","lng":"2.369791","tags":{"name":"COLONEL FABIEN","ref":"10038","address":"69 RUE DE LA GRANGE AUX BELLES - 75010 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598465,"updated":"30\/06\/2013 | 15 h 21 m 05 s","available":26,"free":0}},{"id":"27231","lat":"48.816257","lng":"2.344182","tags":{"name":"MAZAGRAND COUBERTIN","ref":"13027","address":"AVENUE DE LA PORTE DE GENTILLY - 75013 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":3,"free":11}},{"id":"27579","lat":"48.899410","lng":"2.345920","tags":{"name":"FRANCIS DE CROISSET","ref":"18036","address":"7 RUE FRANCIS DE CROISSET - 75018 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598555,"updated":"30\/06\/2013 | 15 h 22 m 35 s","available":32,"free":21}},{"id":"27094","lat":"48.855515","lng":"2.375240","tags":{"name":"ROQUETTE DALLERY","ref":"11003","address":"29 RUE KELLER - 75011 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598468,"updated":"30\/06\/2013 | 15 h 21 m 08 s","available":21,"free":10}},{"id":"27891","lat":"48.905735","lng":"2.331497","tags":{"name":"ARIBALDI (SAINT OUEN)","ref":"34008","address":"FACE AU 4 AVENUE GARIBALDI \/ AVENUE GABRIEL PERI - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27768","lat":"48.910427","lng":"2.311768","tags":{"name":"DEBUSSY (CLICHY)","ref":"21112","address":"31\/35 AVENUE CLAUDE DEBUSSY - 92110 CLICHY","bonus":"0","open":"0"}},{"id":"27246","lat":"48.830956","lng":"2.364107","tags":{"name":"NATIONALE BACH","ref":"13042","address":"150 RUE NATIONALE - 75013 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":34,"free":2}},{"id":"27947","lat":"48.814442","lng":"2.341071","tags":{"name":"MALON (GENTILLY)","ref":"42504","address":"FACE 59 RUE BENOIT MALON - 94250 GENTILLY","bonus":"0","open":"0"}},{"id":"27129","lat":"48.860821","lng":"2.375637","tags":{"name":"SAINT AMBROISE","ref":"11041","address":"2 RUE LACHARRIERE - 75011 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598474,"updated":"30\/06\/2013 | 15 h 21 m 14 s","available":33,"free":3}},{"id":"27138","lat":"48.864540","lng":"2.375195","tags":{"name":"REPUBLIQUE PARMENTIER","ref":"11105","address":"82 AVENUE PARMENTIER - 75011 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":49,"free":1}},{"id":"27224","lat":"48.839085","lng":"2.370532","tags":{"name":"MENDES FRANCE","ref":"13020","address":"FACE 15 RUE PAUL KLEE - 75013 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598491,"updated":"30\/06\/2013 | 15 h 21 m 31 s","available":15,"free":30}},{"id":"27075","lat":"48.881268","lng":"2.368118","tags":{"name":"VERSION 2 JAURES","ref":"10037","address":"EGLISE SAINT JOSEPH ARTISAN - 75010 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":22,"free":2}},{"id":"27553","lat":"48.890133","lng":"2.360504","tags":{"name":"MARX DORMOY","ref":"18010","address":"81 RUE RIQUET - 75018 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598551,"updated":"30\/06\/2013 | 15 h 22 m 31 s","available":43,"free":2}},{"id":"27151","lat":"48.845688","lng":"2.374204","tags":{"name":"GARE DE LYON CHALON","ref":"12007","address":"FACE 54 RUE DE CHALON - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598478,"updated":"30\/06\/2013 | 15 h 21 m 18 s","available":11,"free":39}},{"id":"27239","lat":"48.825970","lng":"2.360232","tags":{"name":"IVRY TOLBIAC","ref":"13035","address":"116 AVENUE DE CHOISY - 75013 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598493,"updated":"30\/06\/2013 | 15 h 21 m 33 s","available":22,"free":0}},{"id":"27148","lat":"48.850735","lng":"2.375870","tags":{"name":"TRAVERSIERE","ref":"12004","address":"76 RUE TRAVERSIERE - 75012 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":21,"free":11}},{"id":"27119","lat":"48.865307","lng":"2.376020","tags":{"name":"SAINT MAUR OBERKAMPF","ref":"11030","address":"80 RUE OBERKAMPF - 75011 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":20,"free":2}},{"id":"27074","lat":"48.883842","lng":"2.367111","tags":{"name":"AQUEDUC","ref":"10036","address":"80 RUE DE L'AQUEDUC - 75010 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598464,"updated":"30\/06\/2013 | 15 h 21 m 04 s","available":27,"free":1}},{"id":"27887","lat":"48.902500","lng":"2.342248","tags":{"name":"VOLTAIRE (SAINT OUEN)","ref":"34004","address":"1 RUE VOLTAIRE - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27247","lat":"48.832272","lng":"2.367416","tags":{"name":"DUNOIS CLISSON","ref":"13043","address":"55 RUE DUNOIS - 75013 PARIS","bonus":"0","open":"1","total":"51","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":19,"free":32}},{"id":"27116","lat":"48.862137","lng":"2.377230","tags":{"name":"SAINT AMBROISE PARMENTIER","ref":"11027","address":"17 RUE SAINT AMBROISE - 75011 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":37,"free":1}},{"id":"27077","lat":"48.874405","lng":"2.373807","tags":{"name":"SAMBRE ET MEUSE","ref":"10039","address":"37 RUE SAMBRE ET MEUSE - 75010 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598465,"updated":"30\/06\/2013 | 15 h 21 m 05 s","available":21,"free":3}},{"id":"27597","lat":"48.897408","lng":"2.352527","tags":{"name":"BELIARD POISSONNIERS","ref":"18105","address":"157 BIS-159 RUE DES POISSONNIERS - 75018 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":18,"free":12}},{"id":"27600","lat":"48.889599","lng":"2.362854","tags":{"name":"RIQUET PAJOL","ref":"18109","address":"55 RUE PAJOL - 75018 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":0,"free":0}},{"id":"27596","lat":"48.892658","lng":"2.359435","tags":{"name":"CHAPELLE","ref":"18104","address":"2 IMPASSE DE LA CHAPELLE - 75018 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":11,"free":5}},{"id":"27186","lat":"48.848175","lng":"2.376358","tags":{"name":"CHARENTON PRAGUE","ref":"12101","address":"89 TER RUE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":14,"free":5}},{"id":"27890","lat":"48.905361","lng":"2.337390","tags":{"name":"ROSIERS (SAINT OUEN)","ref":"34007","address":"43-45 RUE BLANQUI \/ RUE DES ROSIERS - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27661","lat":"48.881474","lng":"2.370262","tags":{"name":"JAURES VILLETTE","ref":"19116","address":"180 BOULEVARD DE LA VILLETTE - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":27,"free":1}},{"id":"27265","lat":"48.821037","lng":"2.356345","tags":{"name":"MOULIN DE LA POINTE","ref":"13110","address":"66 RUE DU MOULIN DE LA POINTE - 75013 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":13,"free":9}},{"id":"27266","lat":"48.818573","lng":"2.353260","tags":{"name":"CIMETIERE DE GENTILLY","ref":"13111","address":"RUE DE LA POTERNE DES PEUPLIERS - 75013 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":10,"free":11}},{"id":"27107","lat":"48.864212","lng":"2.378256","tags":{"name":"SAINT MAUR AVENUE DE LA REPUBLIQUE","ref":"11018","address":"87 RUE DE SAINT MAUR - 75011 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598470,"updated":"30\/06\/2013 | 15 h 21 m 10 s","available":32,"free":0}},{"id":"27152","lat":"48.846813","lng":"2.376929","tags":{"name":"HECTOR MALOT","ref":"12008","address":"15 BIS RUE HECTOR MALOT - 75012 PARIS","bonus":"0","open":"1","total":"54","timestamp":1372598478,"updated":"30\/06\/2013 | 15 h 21 m 18 s","available":5,"free":49}},{"id":"27232","lat":"48.818367","lng":"2.353193","tags":{"name":"GOUTHIERE","ref":"13028","address":"12 RUE GOUTHIERE - 75013 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598492,"updated":"30\/06\/2013 | 15 h 21 m 32 s","available":10,"free":18}},{"id":"27113","lat":"48.858829","lng":"2.378871","tags":{"name":"BOULEVARD VOLTAIRE","ref":"11024","address":"82 RUE SEDAINE - 75011 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":39,"free":4}},{"id":"27582","lat":"48.887020","lng":"2.366886","tags":{"name":"EOLE","ref":"18039","address":"41 RUE D'AUBERVILLIERS - 75018 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":17,"free":1}},{"id":"27096","lat":"48.856434","lng":"2.379021","tags":{"name":"LEDRU ROLLIN-BASFROI","ref":"11006","address":"169 AVENUE LEDRU ROLLIN - 75011 PARIS","bonus":"0","open":"1","total":"37","timestamp":1372598468,"updated":"30\/06\/2013 | 15 h 21 m 08 s","available":31,"free":5}},{"id":"27121","lat":"48.867939","lng":"2.377886","tags":{"name":"METALLOS","ref":"11032","address":"81 BIS RUE JP TIMBAUD - 75011 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598473,"updated":"30\/06\/2013 | 15 h 21 m 13 s","available":43,"free":4}},{"id":"27223","lat":"48.836361","lng":"2.372375","tags":{"name":"AURIOL QUAI DE LA GARE","ref":"13019","address":"20 RUE FERNAND BRAUDEL - 75013 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":0,"free":35}},{"id":"27663","lat":"48.877125","lng":"2.374277","tags":{"name":"BOLIVAR BURNOUF","ref":"19118","address":"82 AVENUE SIMON BOLIVAR - 75019 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":0,"free":0}},{"id":"27078","lat":"48.872780","lng":"2.376348","tags":{"name":"BELLEVILLE","ref":"10040","address":"8 BOULEVARD DE LA VILETTE - 75010 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598465,"updated":"30\/06\/2013 | 15 h 21 m 05 s","available":45,"free":2}},{"id":"27609","lat":"48.884315","lng":"2.369830","tags":{"name":"QUAI DE SEINE","ref":"19003","address":"3 QUAI DE LA SEINE - 75019 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":22,"free":3}},{"id":"27910","lat":"48.808800","lng":"2.334690","tags":{"name":"RENAN (ARCUEIL)","ref":"41102","address":"rue Ernest Renan \/ angle rue Vaucouleurs (A la sortie du RER B) - 94110 ARCUEIL","bonus":"1","open":"0"}},{"id":"27267","lat":"48.823635","lng":"2.361572","tags":{"name":"CHOISY VISTULE","ref":"13113","address":"2 RUE DE LA VISCULE - 75013 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":32,"free":1}},{"id":"27240","lat":"48.826900","lng":"2.365178","tags":{"name":"TOLBIAC NATIONALE","ref":"13036","address":"86 RUE TOLBIAC - 75013 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":33,"free":3}},{"id":"27149","lat":"48.850441","lng":"2.378901","tags":{"name":"CROZATIER","ref":"12005","address":"74 RUE CROZATIER - 75012 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598478,"updated":"30\/06\/2013 | 15 h 21 m 18 s","available":18,"free":11}},{"id":"27948","lat":"48.815769","lng":"2.350476","tags":{"name":"FREROT (GENTILLY)","ref":"42505","address":"37 RUE CHARLES FREROT - 94250 GENTILLY","bonus":"0","open":"0"}},{"id":"27235","lat":"48.821159","lng":"2.358701","tags":{"name":"ITALIE MAISON BLANCHE","ref":"13031","address":"121 AVENUE D'ITALIE - 75013 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598493,"updated":"30\/06\/2013 | 15 h 21 m 33 s","available":29,"free":1}},{"id":"27241","lat":"48.824696","lng":"2.363106","tags":{"name":"IVRY BAUDICOURT","ref":"13037","address":"76 AVENUE D'IVRY - 75013 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":15,"free":0}},{"id":"27610","lat":"48.883396","lng":"2.371075","tags":{"name":"QUAI DE LA LOIRE","ref":"19004","address":"4 QUAI DE LA LOIRE - 75019 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":3,"free":9}},{"id":"27656","lat":"48.886234","lng":"2.368856","tags":{"name":"PLACE DU MAROC","ref":"19109","address":"27 RUE DE TANGER - 75019 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":16,"free":2}},{"id":"27706","lat":"48.871201","lng":"2.377994","tags":{"name":"BELLEVILLE","ref":"20041","address":"116 BD DE BELLEVILLE - 75020 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":57,"free":2}},{"id":"27188","lat":"48.841908","lng":"2.376606","tags":{"name":"BERCY VILLOT","ref":"12105","address":"153 RUE DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":1,"free":34}},{"id":"27888","lat":"48.902554","lng":"2.348275","tags":{"name":"LESENNE (SAINT OUEN)","ref":"34005","address":"44 RUE ADRIEN LESENNE - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"26743","lat":"48.837135","lng":"2.374341","tags":{"name":"QUAI MAURIAC \/ PONT DE BERCY","ref":"903","address":"FETE DE L'OH (BERCY) - QUAI MAURIAC ANGLE PONT DE BERCY","bonus":"0","open":"1","total":"20","timestamp":1372598402,"updated":"30\/06\/2013 | 15 h 20 m 02 s","available":5,"free":15}},{"id":"27219","lat":"48.832569","lng":"2.371232","tags":{"name":"WEISS","ref":"13015","address":"2 RUE LOUIS WEISS - 75013 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":9,"free":32}},{"id":"27945","lat":"48.813129","lng":"2.346794","tags":{"name":"RASPAIL 2 (GENTILLY)","ref":"42502","address":"FACE AU 79 AVENUE RASPAIL- 94250 GENTILLY","bonus":"0","open":"0"}},{"id":"27581","lat":"48.895222","lng":"2.360098","tags":{"name":"ROND POINT DE LA CHAPELLE","ref":"18038","address":"70 RUE DE LA CHAPELLE - 75018 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598556,"updated":"30\/06\/2013 | 15 h 22 m 36 s","available":0,"free":1}},{"id":"27628","lat":"48.881447","lng":"2.373405","tags":{"name":"BOLIVAR","ref":"19022","address":"53 RUE DE MEAUX - 75019 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598564,"updated":"30\/06\/2013 | 15 h 22 m 44 s","available":0,"free":0}},{"id":"27248","lat":"48.829575","lng":"2.369127","tags":{"name":"PLACE JEANNE D'ARC","ref":"13044","address":"20 PLACE JEANNE D'ARC - 75013 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":36,"free":0}},{"id":"27134","lat":"48.852528","lng":"2.380584","tags":{"name":"SQUARE NORDLING","ref":"11101","address":"15 RUE CHARLES DELESCLUZE - 75011 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598475,"updated":"30\/06\/2013 | 15 h 21 m 15 s","available":3,"free":45}},{"id":"27594","lat":"48.896484","lng":"2.358846","tags":{"name":"RUE DE LA CHAPELLE","ref":"18102","address":"69 BIS RUE DE LA CHAPELLE - 75018 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":0,"free":0}},{"id":"27554","lat":"48.892845","lng":"2.363429","tags":{"name":"HERBERT","ref":"18011","address":"85 RUE PAJOL - 75018 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598551,"updated":"30\/06\/2013 | 15 h 22 m 31 s","available":0,"free":0}},{"id":"27644","lat":"48.879776","lng":"2.374834","tags":{"name":"PAILLERON","ref":"19039","address":"6 RUE EDOUARD PAILLERON - 75019 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":0,"free":0}},{"id":"27153","lat":"48.846268","lng":"2.379264","tags":{"name":"DIDEROT","ref":"12009","address":"FACE 124 RUE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598478,"updated":"30\/06\/2013 | 15 h 21 m 18 s","available":12,"free":6}},{"id":"27117","lat":"48.863827","lng":"2.380906","tags":{"name":"BLUETS REPUBLIQUE","ref":"11028","address":"FACE 20 RUE GUILLAUME BERTRAND - 75011 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":35,"free":1}},{"id":"27115","lat":"48.861195","lng":"2.381302","tags":{"name":"CHEMIN VERT SAINT MAUR","ref":"11026","address":"105 RUE DU CHEMIN VERT - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":44,"free":2}},{"id":"27236","lat":"48.819897","lng":"2.359433","tags":{"name":"MASSENA","ref":"13032","address":"163 AVENUE D'ITALIE - 75013 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598493,"updated":"30\/06\/2013 | 15 h 21 m 33 s","available":24,"free":1}},{"id":"27111","lat":"48.858002","lng":"2.381798","tags":{"name":"LEON BLUM ROQUETTE","ref":"11022","address":"142 RUE DE LA ROQUETTE - 75011 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":10,"free":4}},{"id":"27189","lat":"48.843948","lng":"2.379081","tags":{"name":"BARTHES TROYES","ref":"12106","address":"3 RUE ROLAND BARTHES - 75012 PARIS","bonus":"0","open":"1","total":"69","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":13,"free":56}},{"id":"27889","lat":"48.906303","lng":"2.343969","tags":{"name":"MICHELET (SAINT OUEN)","ref":"34006","address":"92 AVENUE MICHELET - 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27944","lat":"48.810184","lng":"2.343789","tags":{"name":"RASPAIL 1 (GENTILLY)","ref":"42501","address":"80 AVENUE RASPAIL - 94250 GENTILLY","bonus":"0","open":"0"}},{"id":"27242","lat":"48.821907","lng":"2.363335","tags":{"name":"CHOISY POINT D'IVRY","ref":"13038","address":"28 AVENUE DE CHOISY - 75013 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":17,"free":7}},{"id":"27704","lat":"48.868942","lng":"2.381283","tags":{"name":"COURONNES","ref":"20039","address":"44 BOULEVARD DE BELLEVILLE - 75020 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598577,"updated":"30\/06\/2013 | 15 h 22 m 57 s","available":30,"free":18}},{"id":"27652","lat":"48.873154","lng":"2.379856","tags":{"name":"BELLEVILLE RAMPAL","ref":"19102","address":"4 RUE DE RAMPAL - 75019 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598568,"updated":"30\/06\/2013 | 15 h 22 m 48 s","available":14,"free":0}},{"id":"27618","lat":"48.882702","lng":"2.374693","tags":{"name":"LALLY TOLLENDAL","ref":"19012","address":"5 RUE LALLY TOLLENDAL - 75019 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":8,"free":2}},{"id":"27109","lat":"48.856316","lng":"2.383072","tags":{"name":"CHARONNE","ref":"11020","address":"1 RUE DE BELFORT - 75011 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":31,"free":3}},{"id":"27243","lat":"48.823219","lng":"2.365470","tags":{"name":"IVRY POINTE D'IVRY","ref":"13039","address":"2 RUE DE LA POINTE D'IVRY - 75013 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":15,"free":2}},{"id":"27097","lat":"48.853291","lng":"2.383041","tags":{"name":"FAIDHERBE PALAIS DE LA FEMME","ref":"11007","address":"17 RUE JEAN MACE - 75011 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598468,"updated":"30\/06\/2013 | 15 h 21 m 08 s","available":7,"free":51}},{"id":"27275","lat":"48.835052","lng":"2.376068","tags":{"name":"BIBLIOTH\u00bbQUE FRAN\u00abOIS MITTERAND","ref":"13123","address":"53 QUAI FRANCOIS MAURIAC - 75013 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598500,"updated":"30\/06\/2013 | 15 h 21 m 40 s","available":0,"free":27}},{"id":"27249","lat":"48.827839","lng":"2.370531","tags":{"name":"TOLBIAC ALBERT","ref":"13045","address":"FACE 1 RUE JEAN COLLY - 75013 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":15,"free":3}},{"id":"27664","lat":"48.880573","lng":"2.376853","tags":{"name":"BOURET PAILLERON","ref":"19119","address":"20 RUE EDOUARD PAILLERON - 75019 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":0,"free":0}},{"id":"27112","lat":"48.858688","lng":"2.383554","tags":{"name":"LEO FROT ROQUETTE","ref":"11023","address":"2 RUE SAINT MAUR - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":42,"free":2}},{"id":"27268","lat":"48.824810","lng":"2.367735","tags":{"name":"NATIONALE DUCHAMP (PROP 1)","ref":"13114","address":"46 RUE NATIONALE - 75013 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598498,"updated":"30\/06\/2013 | 15 h 21 m 38 s","available":13,"free":8}},{"id":"27629","lat":"48.876499","lng":"2.379407","tags":{"name":"MANIN SIMON BOLIVAR","ref":"19023","address":"FACE 1 RUE MANIN - 75019 PARIS","bonus":"1","open":"1","total":"23","timestamp":1372598564,"updated":"30\/06\/2013 | 15 h 22 m 44 s","available":19,"free":4}},{"id":"27168","lat":"48.840267","lng":"2.379520","tags":{"name":"BERCY","ref":"12025","address":"FACE 14 PL. DU BATAILLON DU PACIFIQUE - 75012 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598481,"updated":"30\/06\/2013 | 15 h 21 m 21 s","available":0,"free":22}},{"id":"27909","lat":"48.806381","lng":"2.336710","tags":{"name":"DOUMER (ARCUEIL)","ref":"41101","address":"FACE AU 11 AVENUE PAUL DOUMER - 94110 ARCUEIL","bonus":"1","open":"0"}},{"id":"27118","lat":"48.866619","lng":"2.383013","tags":{"name":"MENILMONTANT OBERKAMPF","ref":"11029","address":"137 BOULEVARD MENILMONTANT - 75011 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598472,"updated":"30\/06\/2013 | 15 h 21 m 12 s","available":39,"free":1}},{"id":"27608","lat":"48.889351","lng":"2.370774","tags":{"name":"TANGER","ref":"19002","address":"45 & 48 RUE RIQUET - 75019 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":33,"free":5}},{"id":"27139","lat":"48.851532","lng":"2.383723","tags":{"name":"BIBLIOTHEQUE FAIDHERBE","ref":"11107","address":"11 RUE FAIDHERBE - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":11,"free":32}},{"id":"27893","lat":"48.911572","lng":"2.333910","tags":{"name":"DIDEROT 2 (SAINT OUEN)","ref":"34010","address":"FACE 61-63 RUE DIDEROT- 93400 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27659","lat":"48.879276","lng":"2.378637","tags":{"name":"MANIN SECRETAN","ref":"19114","address":"31 RUE MANIN - 75019 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":0,"free":20}},{"id":"27591","lat":"48.898384","lng":"2.360877","tags":{"name":"PORTE DE LA CHAPELLE","ref":"18048","address":"29, BOULEVARD NEY - 75018 PARIS","bonus":"0","open":"1","total":"72","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":0,"free":0}},{"id":"27098","lat":"48.850380","lng":"2.383869","tags":{"name":"FAIDHERBE CHALIGNY","ref":"11008","address":"223 RUE DU FAUBOURG SAINT ANTOINE - 75011 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":28,"free":8}},{"id":"27155","lat":"48.844868","lng":"2.382579","tags":{"name":"CHARENTON","ref":"12011","address":"160 RUE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":26,"free":10}},{"id":"27237","lat":"48.817310","lng":"2.360218","tags":{"name":"PORTE D'ITALIE","ref":"13033","address":"15 AVENUE DE LA PORTE D'ITALIE - 75013 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598493,"updated":"30\/06\/2013 | 15 h 21 m 33 s","available":2,"free":12}},{"id":"27143","lat":"48.854305","lng":"2.384886","tags":{"name":"CHARONNES VALLES","ref":"11112","address":"22 RUE JULES VALLES - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598477,"updated":"30\/06\/2013 | 15 h 21 m 17 s","available":15,"free":4}},{"id":"27636","lat":"48.883778","lng":"2.376515","tags":{"name":"MOSELLE JAURES","ref":"19030","address":"6 PASSAGE DE MELUN - 75019 PARIS","bonus":"0","open":"1","total":"14","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":0,"free":0}},{"id":"27635","lat":"48.886799","lng":"2.374720","tags":{"name":"SEINE FLANDRE","ref":"19029","address":"51 QUAI DE LA SEINE - 75019 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":11,"free":4}},{"id":"27611","lat":"48.888012","lng":"2.373760","tags":{"name":"RIQUET","ref":"19005","address":"56 AVENUE DE FLANDRE - 75019 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":19,"free":1}},{"id":"27191","lat":"48.838776","lng":"2.380861","tags":{"name":"PALAIS OMNISPORT","ref":"12108","address":"81 RUE DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":0,"free":44}},{"id":"27255","lat":"48.828976","lng":"2.374332","tags":{"name":"TOLBIAC LERREDE","ref":"13052","address":"2 RUE LEREDDE - 75013 PARIS","bonus":"0","open":"1","total":"43","timestamp":1372598496,"updated":"30\/06\/2013 | 15 h 21 m 36 s","available":5,"free":38}},{"id":"27244","lat":"48.819942","lng":"2.365079","tags":{"name":"PORTE DE CHOISY","ref":"13040","address":"111 BOULEVARD MASSENA - 75013 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":41,"free":3}},{"id":"27705","lat":"48.870396","lng":"2.384222","tags":{"name":"PARC DE BELLEVILLE","ref":"20040","address":"57 & 36 RUE JULIEN LACROIX - 75020 PARIS","bonus":"0","open":"1","total":"26","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":23,"free":3}},{"id":"27651","lat":"48.875069","lng":"2.382592","tags":{"name":"SIMON BOLIVAR","ref":"19101","address":"36 AVENUE SIMON BOLIVAR - 75019 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598568,"updated":"30\/06\/2013 | 15 h 22 m 48 s","available":22,"free":0}},{"id":"27698","lat":"48.868050","lng":"2.385133","tags":{"name":"ETIENNE DOLET","ref":"20033","address":"29 RUE ETIENNE DOLLET - 75020 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":31,"free":0}},{"id":"27630","lat":"48.877953","lng":"2.381465","tags":{"name":"BUTTES CHAUMONT","ref":"19024","address":"28 \/ 30 RUE BOTZARIS - 75019 PARIS","bonus":"1","open":"1","total":"19","timestamp":1372598564,"updated":"30\/06\/2013 | 15 h 22 m 44 s","available":18,"free":0}},{"id":"27141","lat":"48.859241","lng":"2.386593","tags":{"name":"SQUARE ROQUETTE","ref":"11110","address":"176 RUE DE LA ROQUETTE - 75011 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":43,"free":4}},{"id":"27270","lat":"48.820496","lng":"2.366820","tags":{"name":"STADE GEORGES CARPENTIER","ref":"13117","address":"95-97 BOULEVARD MASSENA - 75013 PARIS","bonus":"1","open":"1","total":"67","timestamp":1372598499,"updated":"30\/06\/2013 | 15 h 21 m 39 s","available":62,"free":3}},{"id":"27245","lat":"48.821960","lng":"2.368529","tags":{"name":"PORTE D'IVRY","ref":"13041","address":"4 AVENUE D'IVRY - 75013 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598494,"updated":"30\/06\/2013 | 15 h 21 m 34 s","available":47,"free":2}},{"id":"27257","lat":"48.831245","lng":"2.377263","tags":{"name":"PAU CASALS","ref":"13054","address":"1 RUE PAU CASALS - 75013 PARIS","bonus":"0","open":"1","total":"29","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":0,"free":27}},{"id":"26745","lat":"48.839661","lng":"2.382472","tags":{"name":"GARE DE BERCY (STATION MOBILE 5)","ref":"905","address":"GARE DE BERCY - ANGLE RUE CORBINEAU - 75012 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598402,"updated":"30\/06\/2013 | 15 h 20 m 02 s","available":3,"free":14}},{"id":"27256","lat":"48.829411","lng":"2.375935","tags":{"name":"CHEVALERET TOLBIAC","ref":"13053","address":"56 RUE CHEVALERET - 75013 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598496,"updated":"30\/06\/2013 | 15 h 21 m 36 s","available":7,"free":14}},{"id":"27156","lat":"48.847298","lng":"2.385708","tags":{"name":"REUILLY DIDEROT","ref":"12012","address":"71 BOULEVARD DIDEROT - 75012 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":13,"free":8}},{"id":"27894","lat":"48.914188","lng":"2.332083","tags":{"name":"DHALENNE (SAINT OUEN)","ref":"34011","address":"FACE AU 61 RUE ALBERT DHALENNE - 93401 SAINT OUEN","bonus":"0","open":"0"}},{"id":"27723","lat":"48.871956","lng":"2.384981","tags":{"name":"PARC DE BELLEVILLE","ref":"20113","address":"30 RUE PIAT - 75020 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":20,"free":1}},{"id":"27599","lat":"48.895088","lng":"2.368694","tags":{"name":"EVANGILE","ref":"18108","address":"61 RUE DE L'EVANGILE - 75018 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598559,"updated":"30\/06\/2013 | 15 h 22 m 39 s","available":3,"free":17}},{"id":"27142","lat":"48.854965","lng":"2.387217","tags":{"name":"CHARONNE FROT","ref":"11111","address":"31 RUE LEON FROT - 75011 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":18,"free":0}},{"id":"27695","lat":"48.863411","lng":"2.387134","tags":{"name":"PERE LACHAISE","ref":"20030","address":"54 BOULEVARD MENILMONTANT - 75020 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":54,"free":2}},{"id":"27169","lat":"48.837723","lng":"2.382217","tags":{"name":"PARC DE BERCY","ref":"12026","address":"61 RUE DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598481,"updated":"30\/06\/2013 | 15 h 21 m 21 s","available":3,"free":32}},{"id":"27662","lat":"48.886299","lng":"2.377389","tags":{"name":"EURYALE DEHAYNIN","ref":"19117","address":"22 RUE EURYALE DEHAYNIN - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":0,"free":0}},{"id":"27254","lat":"48.832642","lng":"2.379105","tags":{"name":"QUAI FRANCOIS MAURIAC TOLBIAC","ref":"13051","address":"9 QUAI FRANCOIS MAURIAC - 75013 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598496,"updated":"30\/06\/2013 | 15 h 21 m 36 s","available":1,"free":17}},{"id":"27595","lat":"48.898903","lng":"2.364732","tags":{"name":"CHARLES HERMITE","ref":"18103","address":"45 RUE CHARLES HERMITE - 75018 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":0,"free":0}},{"id":"27696","lat":"48.865540","lng":"2.387724","tags":{"name":"DURIS","ref":"20031","address":"33 RUE DURIS - 75020 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":30,"free":0}},{"id":"27951","lat":"48.812012","lng":"2.356972","tags":{"name":"ROSSEL (LE KREMLIN BICETRE)","ref":"42704","address":"RUE ROSSEL \/ AVENUE DE LA CONVENTION - 94270 LE KREMLIN BICETRE","bonus":"1","open":"0"}},{"id":"27953","lat":"48.814663","lng":"2.361346","tags":{"name":"SALENGRO (KREMLIN BICETRE)","ref":"42706","address":"3 RUE ROGER SALENGRO - 94270 LE KREMLIN BICETRE","bonus":"0","open":"0"}},{"id":"27627","lat":"48.882591","lng":"2.381221","tags":{"name":"MAIRIE DU 19 EME","ref":"19021","address":"4 RUE ARMAND CARREL - 75019 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598564,"updated":"30\/06\/2013 | 15 h 22 m 44 s","available":24,"free":0}},{"id":"27619","lat":"48.884583","lng":"2.380127","tags":{"name":"LAUMIERE ET LAUMIERE BIS","ref":"19013","address":"8 & 1 RUE PETIT - 75019 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":28,"free":2}},{"id":"27250","lat":"48.825714","lng":"2.375044","tags":{"name":"OUDINE PATAY","ref":"13046","address":"10 RUE EUGENE OUDINE - 75013 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":11,"free":33}},{"id":"27170","lat":"48.842648","lng":"2.386165","tags":{"name":"MONTGALLET CHARENTON","ref":"12027","address":"2 RUE MONTGALLET - 75012 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598481,"updated":"30\/06\/2013 | 15 h 21 m 21 s","available":14,"free":2}},{"id":"27220","lat":"48.830948","lng":"2.379654","tags":{"name":"PRIMO LEVI","ref":"13016","address":"9 RUE PRIMO LEVI - 75013 PARIS","bonus":"0","open":"1","total":"62","timestamp":1372598490,"updated":"30\/06\/2013 | 15 h 21 m 30 s","available":0,"free":62}},{"id":"27646","lat":"48.874348","lng":"2.386095","tags":{"name":"PYR\u2026N\u2026ES VERSION 2","ref":"19041","address":"101 RUE DE BELLEVILLE - 75019 PARIS","bonus":"1","open":"1","total":"42","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":42,"free":0}},{"id":"27099","lat":"48.852192","lng":"2.389022","tags":{"name":"RUE DES BOULETS","ref":"11009","address":"45 RUE DES BOULETS - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":8,"free":15}},{"id":"27135","lat":"48.852890","lng":"2.389148","tags":{"name":"RUE DES BOULETS ( COMPLEMENTAIRE )","ref":"11102","address":"3 RUE ALEXANDRE DUMAS - 75011 PARIS","bonus":"0","open":"1","total":"58","timestamp":1372598475,"updated":"30\/06\/2013 | 15 h 21 m 15 s","available":22,"free":34}},{"id":"27732","lat":"48.859360","lng":"2.389613","tags":{"name":"REPOS","ref":"20131","address":"41 RUE DU REPOS - 75020 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":27,"free":3}},{"id":"27612","lat":"48.890678","lng":"2.376142","tags":{"name":"MATHIS","ref":"19006","address":"6 RUE MATHIS - 75019 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":23,"free":3}},{"id":"27607","lat":"48.894104","lng":"2.372946","tags":{"name":"OURCQ CRIMEE","ref":"19001","address":"243 RUE DE CRIMEE - 75019 PARIS","bonus":"0","open":"1","total":"56","timestamp":1372598560,"updated":"30\/06\/2013 | 15 h 22 m 40 s","available":49,"free":5}},{"id":"27697","lat":"48.866295","lng":"2.389350","tags":{"name":"AMANDIERS","ref":"20032","address":"55 RUE DES CENDRIERS - 75020 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":11,"free":1}},{"id":"27952","lat":"48.812801","lng":"2.361041","tags":{"name":"CONVENTION (LE KREMLIN BICETRE)","ref":"42705","address":"1 RUE DE LA CONVENTION - 94270 LE KREMLIN BICETRE","bonus":"0","open":"0"}},{"id":"27668","lat":"48.888790","lng":"2.378500","tags":{"name":"LEDIT DE NANTES","ref":"19125","address":"PLACE LEDIT DE NANTES - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598571,"updated":"30\/06\/2013 | 15 h 22 m 51 s","available":25,"free":3}},{"id":"27110","lat":"48.858444","lng":"2.390398","tags":{"name":"PHILIPPE AUGUSTE (20EME ARR.)","ref":"11021","address":"212 BOULEVARD CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598471,"updated":"30\/06\/2013 | 15 h 21 m 11 s","available":22,"free":0}},{"id":"27665","lat":"48.877518","lng":"2.386100","tags":{"name":"ALOUETTES","ref":"19120","address":"20 RUE CARDUCCI - 75019 PARIS","bonus":"1","open":"1","total":"27","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":26,"free":0}},{"id":"27108","lat":"48.855602","lng":"2.390546","tags":{"name":"CHARONNE PHILIPPE AUGUSTE","ref":"11019","address":"156 RUE DE CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598470,"updated":"30\/06\/2013 | 15 h 21 m 10 s","available":32,"free":0}},{"id":"27271","lat":"48.824345","lng":"2.376060","tags":{"name":"PATAY REGNAULT","ref":"13118","address":"36-38 RUE REGNAULT - 75013 PARIS","bonus":"0","open":"1","total":"63","timestamp":1372598499,"updated":"30\/06\/2013 | 15 h 21 m 39 s","available":4,"free":58}},{"id":"27950","lat":"48.810478","lng":"2.358173","tags":{"name":"LECLERC (KREMLIN BICETRE)","ref":"42702","address":"73 RUE DU GENERAL LECLERC - 94270 LE KREMELIN BICETRE","bonus":"1","open":"0"}},{"id":"27699","lat":"48.868526","lng":"2.389795","tags":{"name":"SORBIER - M\u2026NILMONTANT","ref":"20034","address":"1 RUE SORBIER - 75020 PARIS","bonus":"0","open":"1","total":"24","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":23,"free":1}},{"id":"27592","lat":"48.898453","lng":"2.369609","tags":{"name":"PTE D'AUBERVILLIERS","ref":"18049","address":"3-5, BOULEVARD NEY - 75018 PARIS","bonus":"0","open":"1","total":"68","timestamp":1372598558,"updated":"30\/06\/2013 | 15 h 22 m 38 s","available":0,"free":0}},{"id":"27192","lat":"48.840870","lng":"2.387564","tags":{"name":"CHAROLAIS","ref":"12109","address":"212 RUE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":2,"free":27}},{"id":"27269","lat":"48.820229","lng":"2.372209","tags":{"name":"PLACE DU DOCTEUR YERSIN","ref":"13116","address":"FACE 5 AVENUE DE LA PORTE D'IVRY - 75013 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598499,"updated":"30\/06\/2013 | 15 h 21 m 39 s","available":13,"free":5}},{"id":"27258","lat":"48.828594","lng":"2.380221","tags":{"name":"LAGROUA","ref":"13055","address":"18 RUE MARIE ANDREE LAGROUA - 75013 PARIS","bonus":"0","open":"1","total":"61","timestamp":1372598497,"updated":"30\/06\/2013 | 15 h 21 m 37 s","available":7,"free":53}},{"id":"27954","lat":"48.812366","lng":"2.361810","tags":{"name":"OKABE (LE KREMLIN-BICETRE)","ref":"42707","address":"51, avenue de Fontainebleau - 94270 Le Kremlin-Bicetre","bonus":"0","open":"0"}},{"id":"27190","lat":"48.847652","lng":"2.390239","tags":{"name":"DIDEROT BOURDAN","ref":"12107","address":"146 BOULEVARD DIDEROT - 75012 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":3,"free":18}},{"id":"27860","lat":"48.906467","lng":"2.358442","tags":{"name":"PROUDHON (SAINT DENIS)","ref":"32001","address":"AVENUE PRESIDENT WILSON \/ RUE PROUDHON - 93200 SAINT DENIS","bonus":"0","open":"0"}},{"id":"27157","lat":"48.844315","lng":"2.389595","tags":{"name":"RUE MONTGALLET","ref":"12013","address":"FACE 39 RUE MONTGALLET - 75012 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":13,"free":3}},{"id":"27174","lat":"48.835136","lng":"2.385478","tags":{"name":"LAME","ref":"12031","address":"49 RUE GABRIEL LAME - 75012 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":1,"free":35}},{"id":"27949","lat":"48.807213","lng":"2.353853","tags":{"name":"GIDE (LE KREMLIN BICETRE)","ref":"42701","address":"FACE 50 AVENUE CHARLES GIDE - 94270 LE KREMELIN BICETRE","bonus":"1","open":"0"}},{"id":"27620","lat":"48.886333","lng":"2.382461","tags":{"name":"LORRAINE","ref":"19014","address":"28 RUE DE LORRAINE - 75019 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":14,"free":3}},{"id":"27934","lat":"48.815910","lng":"2.368230","tags":{"name":"BARBES (IVRY)","ref":"42013","address":"RUE BARBES \/ AVENUE DE VERDUN - 94200 IVRY SUR SEINE","bonus":"0","open":"0"}},{"id":"27722","lat":"48.874092","lng":"2.389436","tags":{"name":"JOURDAIN","ref":"20112","address":"3 RUE DU JOURDAIN - 75020 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":20,"free":0}},{"id":"27643","lat":"48.875549","lng":"2.389038","tags":{"name":"JOURDAIN","ref":"19038","address":"9 RUE LASSUS - 75019 PARIS","bonus":"1","open":"1","total":"19","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":18,"free":1}},{"id":"27137","lat":"48.855946","lng":"2.392533","tags":{"name":"CHARONNE DU BUREAU","ref":"11104","address":"170 RUE DE CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598476,"updated":"30\/06\/2013 | 15 h 21 m 16 s","available":19,"free":1}},{"id":"27100","lat":"48.849258","lng":"2.391755","tags":{"name":"ST ANTOINE GONNET","ref":"11010","address":"1 RUE DES BOULETS - 75011 PARIS","bonus":"0","open":"1","total":"41","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":14,"free":27}},{"id":"27171","lat":"48.841923","lng":"2.389729","tags":{"name":"VIVALDI","ref":"12028","address":"42 ALLEE VIVALDI - 75012 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":11,"free":15}},{"id":"27730","lat":"48.868912","lng":"2.392020","tags":{"name":"MENILMONTANT BOYER","ref":"20121","address":"27 RUE BOYER - 75020 PARIS","bonus":"1","open":"1","total":"18","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":18,"free":0}},{"id":"27176","lat":"48.833508","lng":"2.386133","tags":{"name":"SAINT EMILION","ref":"12033","address":"FACE 28 RUE FRANCOIS TRUFFAUT - 75012 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":14,"free":51}},{"id":"27936","lat":"48.818001","lng":"2.372432","tags":{"name":"PAUL BERT (IVRY)","ref":"42015","address":"EN VIS A VIS DU 7 RUE PAUL BERT - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27637","lat":"48.883030","lng":"2.386349","tags":{"name":"MANIN CRIMEE VERSION 2","ref":"19031","address":"8 RUE MANIN - 75019 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":15,"free":8}},{"id":"27105","lat":"48.851818","lng":"2.393255","tags":{"name":"PHILIPPE AUGUSTE","ref":"11016","address":"5 RUE DU PASSAGE PHILIPPE AUGUSTE - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598470,"updated":"30\/06\/2013 | 15 h 21 m 10 s","available":19,"free":24}},{"id":"27102","lat":"48.850506","lng":"2.393076","tags":{"name":"MONTREUIL VOLTAIRE","ref":"11012","address":"93 RUE DE MONTREUIL - 75011 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":27,"free":4}},{"id":"27251","lat":"48.822632","lng":"2.377738","tags":{"name":"BOUTROUX VITRY","ref":"13047","address":"1 AVENUE BOUTROUX - 75013 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598495,"updated":"30\/06\/2013 | 15 h 21 m 35 s","available":0,"free":49}},{"id":"27707","lat":"48.872158","lng":"2.391739","tags":{"name":"PYRENEES ERMITAGE","ref":"20042","address":"300 RUE DES PYRENEES - 75020 PARIS","bonus":"1","open":"1","total":"47","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":47,"free":0}},{"id":"27613","lat":"48.892712","lng":"2.379200","tags":{"name":"OURCQ-FLANDRES","ref":"19007","address":"139 AVENUE DE FLANDRE - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598561,"updated":"30\/06\/2013 | 15 h 22 m 41 s","available":27,"free":3}},{"id":"27863","lat":"48.908588","lng":"2.358482","tags":{"name":"EGLISE SAINT JUSTE (SAINT DENIS)","ref":"32006","address":"AVENUE DU PRESIDENT WILSON \/ PARKING DE L'EGLISE SAINT JUSTE - 93210 SAINT DENIS","bonus":"0","open":"0"}},{"id":"27172","lat":"48.838848","lng":"2.389725","tags":{"name":"DUGOMMIER","ref":"12029","address":"FACE 4 BOULEVARD DE REUILLY - 75012 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":15,"free":39}},{"id":"27631","lat":"48.879562","lng":"2.388960","tags":{"name":"BOTZARIS VERSION 2","ref":"19025","address":"FACE 80 RUE BOTZARIS - 75019 PARIS","bonus":"1","open":"1","total":"17","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":17,"free":0}},{"id":"27177","lat":"48.832310","lng":"2.386370","tags":{"name":"PIROGUES DE BERCY","ref":"12034","address":"20 RUE DES PIROGUES DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598483,"updated":"30\/06\/2013 | 15 h 21 m 23 s","available":2,"free":46}},{"id":"27861","lat":"48.909328","lng":"2.358051","tags":{"name":"METALLURGIE (SAINT DENIS)","ref":"32003","address":"AVENUE DU PRESIDENT WILSON \/ RUE DE LA METALLURGIE - 93200 SAINT DENIS","bonus":"0","open":"0"}},{"id":"27871","lat":"48.903183","lng":"2.368026","tags":{"name":"EMGP (AUBERVILLIERS)","ref":"33001","address":"EMGP AVENUE DE PORTE DE PARIS \/ PARKING 264 - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27680","lat":"48.856167","lng":"2.394825","tags":{"name":"ALEXANDRE DUMAS","ref":"20014","address":"142 BD CHARONNE - 75020 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":32,"free":0}},{"id":"27681","lat":"48.857143","lng":"2.394872","tags":{"name":"BAGNOLET-ORTEAUX","ref":"20015","address":"44 BIS RUE DE BAGNOLET - 75020 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":32,"free":6}},{"id":"27621","lat":"48.889156","lng":"2.383375","tags":{"name":"THIONVILLE","ref":"19015","address":"24 RUE DE THIONVILLE - 75019 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":16,"free":5}},{"id":"27693","lat":"48.865185","lng":"2.394469","tags":{"name":"GAMBETTA MARTIN NADAUD","ref":"20028","address":"FACE 2 RUE ORFILA - 75020 PARIS","bonus":"0","open":"1","total":"49","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":48,"free":1}},{"id":"27864","lat":"48.905746","lng":"2.364998","tags":{"name":"EMGP NORD (SAINT DENIS)","ref":"32008","address":"EMGP PARKING ENTREE NORD - 93200 SAINT DENIS","bonus":"0","open":"0"}},{"id":"27253","lat":"48.828369","lng":"2.384440","tags":{"name":"QUAI PANHARD ET LEVASSOR","ref":"13050","address":"23 QUAI PANHARD ET LEVASSOR - 75013 PARIS","bonus":"0","open":"1","total":"59","timestamp":1372598496,"updated":"30\/06\/2013 | 15 h 21 m 36 s","available":23,"free":36}},{"id":"27657","lat":"48.899094","lng":"2.374033","tags":{"name":"MACDONALD DUCHESNE","ref":"19110","address":"1 RUE JACQUES DUCHESNE - 75019 PARIS","bonus":"0","open":"1","total":"18","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":0,"free":0}},{"id":"27193","lat":"48.833710","lng":"2.388557","tags":{"name":"BARON LE ROY TRUFFAUT","ref":"12110","address":"57-61 RUE DES PIROGUES DE BERCY - 75012 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598485,"updated":"30\/06\/2013 | 15 h 21 m 25 s","available":1,"free":54}},{"id":"27103","lat":"48.849277","lng":"2.394934","tags":{"name":"NATION VOLAIRE","ref":"11013","address":"5 PLACE DE LA NATION - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598469,"updated":"30\/06\/2013 | 15 h 21 m 09 s","available":22,"free":21}},{"id":"27272","lat":"48.821140","lng":"2.378719","tags":{"name":"VITRY DESAULT","ref":"13120","address":"RUE PIERRE ET JOSEPH DESAULT - 75013 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598499,"updated":"30\/06\/2013 | 15 h 21 m 39 s","available":6,"free":13}},{"id":"27622","lat":"48.886395","lng":"2.386541","tags":{"name":"OURCQ","ref":"19016","address":"78 RUE D'HAUTPOUL - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":17,"free":12}},{"id":"27634","lat":"48.876469","lng":"2.392285","tags":{"name":"PLACE DES FETES","ref":"19028","address":"17 RUE DES FETES - 75019 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":20,"free":0}},{"id":"27106","lat":"48.854176","lng":"2.396093","tags":{"name":"ALEXANDRE DUMAS","ref":"11017","address":"FACE 77 BOULEVARD DE CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"46","timestamp":1372598470,"updated":"30\/06\/2013 | 15 h 21 m 10 s","available":42,"free":3}},{"id":"27666","lat":"48.875519","lng":"2.392961","tags":{"name":"BELLEVILLE PRE SAINT GERVAIS","ref":"19121","address":"195 RUE DE BELLEVILLE - 75019 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598571,"updated":"30\/06\/2013 | 15 h 22 m 51 s","available":21,"free":0}},{"id":"27700","lat":"48.869411","lng":"2.395040","tags":{"name":"PYRENEES","ref":"20035","address":"262 RUE DES PYRENEES - 75020 PARIS","bonus":"1","open":"1","total":"26","timestamp":1372598577,"updated":"30\/06\/2013 | 15 h 22 m 57 s","available":26,"free":0}},{"id":"27655","lat":"48.901775","lng":"2.372628","tags":{"name":"GARE EMGP","ref":"19106","address":"15 RUE MADELEINE VIONNET - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":0,"free":0}},{"id":"27158","lat":"48.847301","lng":"2.395521","tags":{"name":"NATION","ref":"12014","address":"16 PLACE DE LA NATION SUR TPC - 75012 PARIS","bonus":"0","open":"1","total":"66","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":27,"free":37}},{"id":"27721","lat":"48.867363","lng":"2.396223","tags":{"name":"L'ISLE ADAM PYREN\u2026ES","ref":"20111","address":"60 RUE VILLIERS DE L'ISLE ADAM - 75020 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598580,"updated":"30\/06\/2013 | 15 h 23 m 00 s","available":20,"free":0}},{"id":"27173","lat":"48.836678","lng":"2.391796","tags":{"name":"WATTIGNIES","ref":"12030","address":"245 RUE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":23,"free":10}},{"id":"27928","lat":"48.812889","lng":"2.370650","tags":{"name":"IERRE ET MARIE CURIE (IVRY)","ref":"42007","address":"Angle Avenue de Verdun et rue Pierre et Marie Curie - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27162","lat":"48.845608","lng":"2.395933","tags":{"name":"SAINT MANDE - FAVRE","ref":"12018","address":"5 AVENUE SAINT MANDE - 75012 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":4,"free":31}},{"id":"27614","lat":"48.894650","lng":"2.381869","tags":{"name":"CORENTIN CARIOU","ref":"19008","address":"177 AVENUE DE FLANDRE - 75019 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":12,"free":13}},{"id":"27626","lat":"48.884663","lng":"2.390210","tags":{"name":"MANIN HAUTPOUL","ref":"19020","address":"4-6 RUE GOUBET - 75019 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598564,"updated":"30\/06\/2013 | 15 h 22 m 44 s","available":11,"free":12}},{"id":"27728","lat":"48.870136","lng":"2.396691","tags":{"name":"SQUARE DE MENILMONTANT","ref":"20119","address":"138 RUE DE MENILMONTANT - 75020 PARIS","bonus":"1","open":"1","total":"25","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":24,"free":0}},{"id":"27638","lat":"48.895947","lng":"2.381134","tags":{"name":"CAMBRAI","ref":"19033","address":"30 RUE DE CAMBRAI - 75019 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":30,"free":13}},{"id":"27104","lat":"48.848484","lng":"2.397212","tags":{"name":"NATION TRONE","ref":"11014","address":"FACE 21 PLACE DE LA NATION - 75011 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598470,"updated":"30\/06\/2013 | 15 h 21 m 10 s","available":31,"free":23}},{"id":"27179","lat":"48.840302","lng":"2.394630","tags":{"name":"REUILLY","ref":"12036","address":"116 RUE DE REUILLY - 75012 PARIS","bonus":"0","open":"1","total":"42","timestamp":1372598483,"updated":"30\/06\/2013 | 15 h 21 m 23 s","available":11,"free":30}},{"id":"27690","lat":"48.865395","lng":"2.397814","tags":{"name":"GAMBETTA GATINES","ref":"20025","address":"13 RUE DES GATINES - 75020 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":33,"free":0}},{"id":"27689","lat":"48.864296","lng":"2.398229","tags":{"name":"GAMBETTA - P\u00bbRE LACHAISE","ref":"20024","address":"11 RUE MALTE BRUN - 75020 PARIS","bonus":"1","open":"1","total":"29","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":28,"free":0}},{"id":"27670","lat":"48.873802","lng":"2.396012","tags":{"name":"PIXERECOURT","ref":"20002","address":"FACE 65 RUE PIXERECOURT - 75020 PARIS","bonus":"1","open":"1","total":"15","timestamp":1372598571,"updated":"30\/06\/2013 | 15 h 22 m 51 s","available":15,"free":0}},{"id":"27632","lat":"48.881954","lng":"2.392496","tags":{"name":"DANUBE","ref":"19026","address":"53 RUE MIGUEL HIDALGO - 75019 PARIS","bonus":"1","open":"1","total":"16","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":14,"free":2}},{"id":"27708","lat":"48.851604","lng":"2.398403","tags":{"name":"CHARONNE AVRON","ref":"20043","address":"48 BOULEVARD DE CHARONNE - 75011 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":24,"free":3}},{"id":"27937","lat":"48.815845","lng":"2.376944","tags":{"name":"CURIE (IVRY)","ref":"42016","address":"1 BIS RUE PIERRE ET MARIE CURIE - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27649","lat":"48.898830","lng":"2.379330","tags":{"name":"CANAL SAINT DENIS - BD MACDONALD","ref":"19045","address":"145, BOULEVARD MCDONALD - 75019 PARIS","bonus":"0","open":"1","total":"65","timestamp":1372598568,"updated":"30\/06\/2013 | 15 h 22 m 48 s","available":14,"free":51}},{"id":"27716","lat":"48.865353","lng":"2.398946","tags":{"name":"MAIRIE DU 20\u00bbME","ref":"20106","address":"44-46 AVENUE GAMBETTA - 75020 PARIS","bonus":"1","open":"1","total":"18","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":16,"free":0}},{"id":"27617","lat":"48.893379","lng":"2.385000","tags":{"name":"ROUVET DAMPIERRE VERSION 2","ref":"19011","address":"2 RUE ROUVET - 75019 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":0,"free":0}},{"id":"27679","lat":"48.855354","lng":"2.399729","tags":{"name":"PLACE DE LA REUNION","ref":"20013","address":"106 RUE ALEXANDRE DUMAS - 75020 PARIS","bonus":"0","open":"1","total":"44","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":42,"free":0}},{"id":"27163","lat":"48.842579","lng":"2.397250","tags":{"name":"GARE DE REUILLY","ref":"12019","address":"58 RUE DE LA GARE DE REUILLY - 75012 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":12,"free":16}},{"id":"27653","lat":"48.884769","lng":"2.392093","tags":{"name":"MANIN CARRIERES","ref":"19103","address":"139 RUE MANIN - 75019 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598568,"updated":"30\/06\/2013 | 15 h 22 m 48 s","available":16,"free":3}},{"id":"27678","lat":"48.853924","lng":"2.400039","tags":{"name":"BUZENVAL VIGNOLES","ref":"20012","address":"90 RUE BUZENVAL - 75020 PARIS","bonus":"0","open":"1","total":"15","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":13,"free":2}},{"id":"27658","lat":"48.877922","lng":"2.395986","tags":{"name":"PRE ST GERVAIS","ref":"19113","address":"27 RUE DU PRE SAINT GERVAIS - 75019 PARIS","bonus":"1","open":"1","total":"28","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":28,"free":0}},{"id":"27685","lat":"48.860958","lng":"2.400422","tags":{"name":"PYRENEES RENOUVIER","ref":"20020","address":"183 RUE DES PYRENEES - 75020 PARIS","bonus":"1","open":"1","total":"28","timestamp":1372598574,"updated":"30\/06\/2013 | 15 h 22 m 54 s","available":27,"free":1}},{"id":"27701","lat":"48.870682","lng":"2.398960","tags":{"name":"MENILMONTANT - PELLEPORT","ref":"20036","address":"164 RUE DE MENILMONTANT - 75020 PARIS","bonus":"1","open":"1","total":"19","timestamp":1372598577,"updated":"30\/06\/2013 | 15 h 22 m 57 s","available":19,"free":0}},{"id":"27669","lat":"48.848366","lng":"2.399762","tags":{"name":"PLACE DE LA NATION","ref":"20001","address":"1 COURS DE VINCENNES - 75020 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598571,"updated":"30\/06\/2013 | 15 h 22 m 51 s","available":28,"free":7}},{"id":"27180","lat":"48.839485","lng":"2.397212","tags":{"name":"DAUMESNIL","ref":"12037","address":"53 BOULEVARD DE REUILLY - 75012 PARIS","bonus":"0","open":"1","total":"40","timestamp":1372598483,"updated":"30\/06\/2013 | 15 h 21 m 23 s","available":24,"free":15}},{"id":"27623","lat":"48.888371","lng":"2.390992","tags":{"name":"PARC DE LA VILLETTE","ref":"19017","address":"197 AVENUE JEAN JAURES - 75019 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":7,"free":24}},{"id":"27159","lat":"48.846966","lng":"2.399868","tags":{"name":"NATION PICPUS","ref":"12015","address":"FACE 67 BOULEVARD DE PICPUS - 75012 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":15,"free":20}},{"id":"27273","lat":"48.824951","lng":"2.388581","tags":{"name":"IVRY BRUNESEAU","ref":"13121","address":"RUE BRUNESEAU - 75013 PARIS","bonus":"0","open":"1","total":"47","timestamp":1372598499,"updated":"30\/06\/2013 | 15 h 21 m 39 s","available":9,"free":37}},{"id":"27195","lat":"48.833820","lng":"2.394693","tags":{"name":"CHARENTON JARDINIER","ref":"12112","address":"311-313 RUE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598486,"updated":"30\/06\/2013 | 15 h 21 m 26 s","available":1,"free":30}},{"id":"27862","lat":"48.915199","lng":"2.357501","tags":{"name":"BAILLY (SAINT DENIS)","ref":"32004","address":"AVENUE DU PRESIDENT WILSON\/ RUE DE BAILLY - 93200 SAINT DENIS","bonus":"0","open":"0"}},{"id":"27615","lat":"48.896549","lng":"2.384650","tags":{"name":"CITE DES SCIENCES","ref":"19009","address":"28BIS AVENUE CORENTIN CARIOU - 75019 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":0,"free":0}},{"id":"27927","lat":"48.816929","lng":"2.381460","tags":{"name":"BROSSOLETTE (IVRY)","ref":"42006","address":"23 RUE PIERRE BROSSOLETTE - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27194","lat":"48.837612","lng":"2.397254","tags":{"name":"DECAEN CANNEBIERE","ref":"12111","address":"73 RUE CLAUDE DECAEN - 75012 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598486,"updated":"30\/06\/2013 | 15 h 21 m 26 s","available":23,"free":3}},{"id":"27691","lat":"48.867924","lng":"2.400977","tags":{"name":"PELLEPORT","ref":"20026","address":"121 AVENUE GAMBETTA - 75020 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":33,"free":0}},{"id":"27674","lat":"48.851616","lng":"2.401514","tags":{"name":"BUZENVAL","ref":"20007","address":"52 RUE BUZENVAL - 75020 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":48,"free":0}},{"id":"27625","lat":"48.886391","lng":"2.393638","tags":{"name":"PETIT HONNEGER","ref":"19019","address":"124 RUE PETIT - 75019 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":16,"free":6}},{"id":"27725","lat":"48.853870","lng":"2.402426","tags":{"name":"HAIES REUNION","ref":"20116","address":"53 RUE DES HAIES - 75020 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":22,"free":0}},{"id":"27645","lat":"48.875637","lng":"2.399461","tags":{"name":"TELEGRAPHE","ref":"19040","address":"265 RUE DE BELLEVILLE - 75019 PARIS","bonus":"1","open":"1","total":"40","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":40,"free":0}},{"id":"27654","lat":"48.883659","lng":"2.395720","tags":{"name":"PORTE BRUNET","ref":"19105","address":"FACE 1 AVENUE AMBROISE RENDU - 75019 PARIS","bonus":"0","open":"1","total":"17","timestamp":1372598569,"updated":"30\/06\/2013 | 15 h 22 m 49 s","available":0,"free":0}},{"id":"27624","lat":"48.888786","lng":"2.392686","tags":{"name":"CIT\u2026 DE LA MUSIQUE VERSION 2","ref":"19018","address":"FACE 210 AVENUE JEAN JAURES - 75019 PARIS","bonus":"0","open":"1","total":"60","timestamp":1372598563,"updated":"30\/06\/2013 | 15 h 22 m 43 s","available":0,"free":59}},{"id":"27178","lat":"48.834705","lng":"2.397112","tags":{"name":"MADAGASCAR","ref":"12035","address":"4 RUE DE MADAGASCAR - 75012 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598483,"updated":"30\/06\/2013 | 15 h 21 m 23 s","available":16,"free":17}},{"id":"27160","lat":"48.845127","lng":"2.401401","tags":{"name":"PICPUS","ref":"12016","address":"43 AVENUE DE SAINT MANDE - 75012 PARIS","bonus":"0","open":"1","total":"34","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":12,"free":22}},{"id":"27633","lat":"48.880608","lng":"2.397896","tags":{"name":"PRE ST GERVAIS VERSION 2","ref":"19027","address":"FACE 109 BOULEVARD SERURIER - 75019 PARIS","bonus":"1","open":"1","total":"18","timestamp":1372598565,"updated":"30\/06\/2013 | 15 h 22 m 45 s","available":17,"free":1}},{"id":"27712","lat":"48.859779","lng":"2.403444","tags":{"name":"BAGNOLET","ref":"20048","address":"110, RUE DE BAGNOLET - 75020 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":26,"free":2}},{"id":"27686","lat":"48.862724","lng":"2.403351","tags":{"name":"PRAIRIE L INDRE","ref":"20021","address":"2 RUE DE L'INDRE - 75020 PARIS","bonus":"1","open":"1","total":"36","timestamp":1372598574,"updated":"30\/06\/2013 | 15 h 22 m 54 s","available":36,"free":0}},{"id":"27181","lat":"48.839989","lng":"2.400526","tags":{"name":"BEL AIR","ref":"12038","address":"FACE 12 BOULEVARD PICPUS - 75012 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598483,"updated":"30\/06\/2013 | 15 h 21 m 23 s","available":34,"free":5}},{"id":"27733","lat":"48.852566","lng":"2.403928","tags":{"name":"REUNION","ref":"20132","address":"4 RUE DE LA REUNION - 75020 PARIS","bonus":"0","open":"1","total":"25","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":24,"free":1}},{"id":"27682","lat":"48.857128","lng":"2.404426","tags":{"name":"PYRENEES VITRUVE","ref":"20016","address":"114 BIS RUE DES PYRENEES - 75020 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":19,"free":0}},{"id":"27688","lat":"48.865002","lng":"2.403981","tags":{"name":"PELLEPORT BELGRAND","ref":"20023","address":"44 RUE PELLEPORT - 75020 PARIS","bonus":"1","open":"1","total":"15","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":14,"free":0}},{"id":"26742","lat":"48.892796","lng":"2.391225","tags":{"name":"ALLEE DU BELVEDERE","ref":"901","address":"ALLEE DU BELVEDERE - 75019 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598402,"updated":"30\/06\/2013 | 15 h 20 m 02 s","available":4,"free":12}},{"id":"27660","lat":"48.898491","lng":"2.386120","tags":{"name":"PORTE DE LA VILLETTE","ref":"19115","address":"1 AVENUE DE LA PORTE DE LA VILLETTE - 75019 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598570,"updated":"30\/06\/2013 | 15 h 22 m 50 s","available":14,"free":11}},{"id":"27677","lat":"48.855499","lng":"2.405169","tags":{"name":"PYR\u2026N\u2026ES-DAGORNO","ref":"20011","address":"103 RUE DES PYRENNEES - 75020 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598573,"updated":"30\/06\/2013 | 15 h 22 m 53 s","available":21,"free":0}},{"id":"27650","lat":"48.889042","lng":"2.395289","tags":{"name":"PORTE DE PANTIN","ref":"19046","address":"3, PLACE DE LA PORTE DE PANTIN - 75019 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598568,"updated":"30\/06\/2013 | 15 h 22 m 48 s","available":30,"free":2}},{"id":"27702","lat":"48.871265","lng":"2.403951","tags":{"name":"SAINT FARGEAU","ref":"20037","address":"177 AVENUE GAMBETTA - 75020 PARIS","bonus":"1","open":"1","total":"24","timestamp":1372598577,"updated":"30\/06\/2013 | 15 h 22 m 57 s","available":23,"free":0}},{"id":"27718","lat":"48.861572","lng":"2.405689","tags":{"name":"HOSPICE DEBROUSSE","ref":"20108","address":"142 RUE DE BAGNOLET - 75020 PARIS","bonus":"1","open":"1","total":"22","timestamp":1372598580,"updated":"30\/06\/2013 | 15 h 23 m 00 s","available":22,"free":0}},{"id":"27641","lat":"48.879929","lng":"2.400951","tags":{"name":"HOPITAL ROBERT DEBRE","ref":"19036","address":"AV DE LA PTE DU PRES SAINT GERVAIS \/ ANGLE BD D'ALGERIE - 75019 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":0,"free":0}},{"id":"27640","lat":"48.885735","lng":"2.397846","tags":{"name":"PORTE CHAUMONT","ref":"19035","address":"RUE SIGMUND FREUD \/ PORTE CHAUMONT - 75019 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":0,"free":0}},{"id":"27675","lat":"48.853249","lng":"2.405871","tags":{"name":"MARAICHERS","ref":"20008","address":"73 RUE DES PYRENEES - 75020 PARIS","bonus":"0","open":"1","total":"31","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":30,"free":0}},{"id":"27930","lat":"48.807259","lng":"2.375130","tags":{"name":"VERDUN (IVRY)","ref":"42009","address":"157-165 AVENUE DE VERDUN - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27183","lat":"48.831589","lng":"2.398746","tags":{"name":"PORTE DE CHARENTON","ref":"12040","address":"FACE 2 AV. DE LA PORTE DE CHARENTON - 75012 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":0,"free":67}},{"id":"27154","lat":"48.837490","lng":"2.401826","tags":{"name":"MICHEL BIZOT","ref":"12010","address":"251 AVENUE DAUMESNIL - 75012 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598479,"updated":"30\/06\/2013 | 15 h 21 m 19 s","available":2,"free":17}},{"id":"27929","lat":"48.814205","lng":"2.384207","tags":{"name":"CASANOVA (IVRY)","ref":"42008","address":"128 AVENUE DANIEL CASANOVA - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27719","lat":"48.869438","lng":"2.405397","tags":{"name":"SURMELIN HAXO","ref":"20109","address":"2 RUE HAXO - 75020 PARIS","bonus":"1","open":"1","total":"21","timestamp":1372598580,"updated":"30\/06\/2013 | 15 h 23 m 00 s","available":21,"free":0}},{"id":"27933","lat":"48.810200","lng":"2.379671","tags":{"name":"BARBUSSE (IVRY)","ref":"42012","address":"1 RUE HENRY BARBUSSE - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27182","lat":"48.834812","lng":"2.400928","tags":{"name":"DECAEN","ref":"12039","address":"45 AVENUE DU GENERAL MICHEL BIZOT - 75012 PARIS","bonus":"0","open":"1","total":"38","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":5,"free":32}},{"id":"27673","lat":"48.850285","lng":"2.406296","tags":{"name":"PYR\u2026N\u2026ES - PLAINE","ref":"20006","address":"33 RUE DES PYRENEES - 75020 PARIS","bonus":"0","open":"1","total":"12","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":12,"free":0}},{"id":"27872","lat":"48.903965","lng":"2.383125","tags":{"name":"FAURE (AUBERVILLIERS)","ref":"33003","address":"ANGLE RUE BORDIER ET BOULEVARD FELIX FAURE - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27161","lat":"48.844635","lng":"2.405100","tags":{"name":"ST MANDE NETTER","ref":"12017","address":"82 AVENUE SAINT MANDE - 75012 PARIS","bonus":"0","open":"1","total":"39","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":20,"free":19}},{"id":"27735","lat":"48.847725","lng":"2.405907","tags":{"name":"COURS DE VINCENNES PYR\u2026N\u2026ES","ref":"20503","address":"1 RUE DES PYRENEES - 75020 PARIS","bonus":"0","open":"1","total":"21","timestamp":1372598583,"updated":"30\/06\/2013 | 15 h 23 m 03 s","available":16,"free":4}},{"id":"27932","lat":"48.822117","lng":"2.392850","tags":{"name":"BOYER (IVRY)","ref":"42011","address":"26 QUAI MARCEL BOYER - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27166","lat":"48.840900","lng":"2.404380","tags":{"name":"BIZOT","ref":"12022","address":"FACE 29 RUE DU SAHEL - 75012 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598481,"updated":"30\/06\/2013 | 15 h 21 m 21 s","available":15,"free":18}},{"id":"27876","lat":"48.907887","lng":"2.378838","tags":{"name":"FELIX (AUBERVILLIERS)","ref":"33009","address":"120 BOULEVARD FELIX FAURE - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27642","lat":"48.876602","lng":"2.404770","tags":{"name":"PORTE DES LILAS","ref":"19037","address":"304 RUE DE BELLEVILLE - 75019 PARIS","bonus":"1","open":"1","total":"31","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":29,"free":0}},{"id":"27687","lat":"48.864223","lng":"2.408205","tags":{"name":"PORTE DE BAGNOLET","ref":"20022","address":"1 RUE GEO CHAVEZ - 75020 PARIS","bonus":"1","open":"1","total":"33","timestamp":1372598574,"updated":"30\/06\/2013 | 15 h 22 m 54 s","available":33,"free":0}},{"id":"27878","lat":"48.911392","lng":"2.375281","tags":{"name":"FAURE (AUBERVILLIERS)","ref":"33011","address":"FACE 172-174 BOULEVARD FELIX FAURE - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27639","lat":"48.890343","lng":"2.397814","tags":{"name":"PANTIN","ref":"19034","address":"20 AVENUE DE LA PORTE DE PANTIN - 75019 PARIS","bonus":"0","open":"1","total":"52","timestamp":1372598566,"updated":"30\/06\/2013 | 15 h 22 m 46 s","available":50,"free":0}},{"id":"27731","lat":"48.860241","lng":"2.408758","tags":{"name":"DAVOUT VITRUVE","ref":"20122","address":"98 RUE VITRUVE - 75020 PARIS","bonus":"1","open":"1","total":"27","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":27,"free":0}},{"id":"27727","lat":"48.855587","lng":"2.408763","tags":{"name":"ORTEAUX MOURAUD","ref":"20118","address":"100 RUE DES ORTEAUX - 75020 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":20,"free":1}},{"id":"27667","lat":"48.881771","lng":"2.403179","tags":{"name":"ALEXANDER FLEMMING","ref":"19124","address":"RUE ALEXANDER FLEMMING - 75019 PARIS","bonus":"1","open":"1","total":"31","timestamp":1372598571,"updated":"30\/06\/2013 | 15 h 22 m 51 s","available":28,"free":2}},{"id":"27683","lat":"48.856976","lng":"2.408842","tags":{"name":"RUE SAINT BLAISE","ref":"20017","address":"69 RUE SAINT BLAISE - 75020 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598574,"updated":"30\/06\/2013 | 15 h 22 m 54 s","available":26,"free":1}},{"id":"27616","lat":"48.901165","lng":"2.388591","tags":{"name":"PORTE DE LA VILLETTE","ref":"19010","address":"RUE EMILE REYNAUD SUR TPC - 75019 PARIS","bonus":"0","open":"1","total":"22","timestamp":1372598562,"updated":"30\/06\/2013 | 15 h 22 m 42 s","available":2,"free":18}},{"id":"27720","lat":"48.875412","lng":"2.405960","tags":{"name":"PORTE DES LILAS","ref":"20110","address":"FACE 241 AVENUE GAMBETTA - 75020 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598580,"updated":"30\/06\/2013 | 15 h 23 m 00 s","available":17,"free":2}},{"id":"27196","lat":"48.832935","lng":"2.402637","tags":{"name":"CARDINAL LAVIGERIE","ref":"12113","address":"4 PLACE DU CARDINAL LAVIGERIE - 75012 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598486,"updated":"30\/06\/2013 | 15 h 21 m 26 s","available":0,"free":30}},{"id":"27931","lat":"48.810844","lng":"2.383951","tags":{"name":"ROBESPIERRE (IVRY)","ref":"42010","address":"1 RUE ROBESPIERRE - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27883","lat":"48.883621","lng":"2.403240","tags":{"name":"JOINEAU (PRE SAINT GERVAIS)","ref":"33104","address":"RUE ANDRE JOINEAU \/ PLACE ANATOLE FRANCE - 93310 LE PRE SAINT GERVAIS","bonus":"1","open":"0"}},{"id":"27734","lat":"48.853531","lng":"2.409615","tags":{"name":"RASSELINS","ref":"20133","address":"2 RUE DES RASSELINS - 75020 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598583,"updated":"30\/06\/2013 | 15 h 23 m 03 s","available":26,"free":0}},{"id":"27710","lat":"48.863468","lng":"2.409670","tags":{"name":"LOUIS GANNE","ref":"20045","address":"3-5 RUE LOUIS GANNE - 75020 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":28,"free":2}},{"id":"27684","lat":"48.858624","lng":"2.409943","tags":{"name":"HARPIGNIES","ref":"20018","address":"2 RUE HARPIGNIES- 75020 PARIS","bonus":"0","open":"1","total":"36","timestamp":1372598574,"updated":"30\/06\/2013 | 15 h 22 m 54 s","available":35,"free":0}},{"id":"26747","lat":"48.832417","lng":"2.403064","tags":{"name":"FOIRE DU TRONE","ref":"907","address":"FOIRE DU TRONE : PLACE DU CARDINAL LAVIGERIE - 75012 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598405,"updated":"30\/06\/2013 | 15 h 20 m 05 s"}},{"id":"27726","lat":"48.872746","lng":"2.408203","tags":{"name":"SAINT FARGEAU MORTIER","ref":"20117","address":"72 RUE SAINT-FARGEAU - 75020 PARIS","bonus":"1","open":"1","total":"32","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":31,"free":1}},{"id":"27922","lat":"48.820320","lng":"2.394981","tags":{"name":"JULES (IVRY)","ref":"42001","address":"1 RUE JULES VANZUPPE - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27692","lat":"48.869156","lng":"2.409322","tags":{"name":"PORTE DE MENILMONTANT","ref":"20027","address":"1, rue Vidal de la Blache \/ Angle 78 boulevard Mortier - 75020 PARIS","bonus":"1","open":"1","total":"15","timestamp":1372598575,"updated":"30\/06\/2013 | 15 h 22 m 55 s","available":15,"free":0}},{"id":"27724","lat":"48.864426","lng":"2.410411","tags":{"name":"PORTE DE BAGNOLET","ref":"20115","address":"102 RUE LOUIS LUMIERE - 75020 PARIS","bonus":"1","open":"1","total":"20","timestamp":1372598581,"updated":"30\/06\/2013 | 15 h 23 m 01 s","available":20,"free":0}},{"id":"27709","lat":"48.852921","lng":"2.410523","tags":{"name":"DAVOUT VOLGA","ref":"20044","address":"63 BOULEVARD DAVOUT \/ ANGLE 84 RUE VOLGA 75020 PARIS","bonus":"0","open":"1","total":"27","timestamp":1372598578,"updated":"30\/06\/2013 | 15 h 22 m 58 s","available":27,"free":0}},{"id":"27877","lat":"48.911106","lng":"2.379144","tags":{"name":"HUGO (AUBERVILLIERS)","ref":"33010","address":"161 AVENUE VICTOR HUGO - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27647","lat":"48.893799","lng":"2.397910","tags":{"name":"PETITS PONTS","ref":"19043","address":"RUE JULES LADOUMEGUE \/ ANGLE ROUTES DES PETITS PONTS \/ ANGLE AV. DU GAL. LECLERC - 75019 PARIS","bonus":"0","open":"1","total":"51","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":38,"free":11}},{"id":"27714","lat":"48.862164","lng":"2.411126","tags":{"name":"RUE LOUIS LUMI\u00bbRE","ref":"20104","address":"68 RUE LOUIS LUMIERE - 75020 PARIS","bonus":"1","open":"1","total":"22","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":22,"free":0}},{"id":"27164","lat":"48.846989","lng":"2.410145","tags":{"name":"COURS DE VINCENNES - BD SOULT","ref":"12020","address":"FACE 118 COURS DE VINCENNES - 75012 PARIS","bonus":"0","open":"1","total":"45","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":43,"free":2}},{"id":"27711","lat":"48.847332","lng":"2.410390","tags":{"name":"COURS DE VINCENNES BD DAVOUT","ref":"20047","address":"107, COURS DE VINCENNES - 75020 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":40,"free":7}},{"id":"27648","lat":"48.897129","lng":"2.396079","tags":{"name":"GRANDS MOULINS","ref":"19044","address":"RUE DE LA CLOTURE \/ ANGLE RUE DU DEBARCADERE - 75019 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598567,"updated":"30\/06\/2013 | 15 h 22 m 47 s","available":37,"free":13}},{"id":"27935","lat":"48.814140","lng":"2.390909","tags":{"name":"CACHIN (IVRY)","ref":"42014","address":"PLACE MARCEL CACHIN - 94200 IVRY SUR SEINE","bonus":"0","open":"0"}},{"id":"27713","lat":"48.868034","lng":"2.411031","tags":{"name":"LE VAU BERTEAUX","ref":"20103","address":"24 RUE LE VAU - 75020 PARIS","bonus":"1","open":"1","total":"25","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":24,"free":0}},{"id":"27923","lat":"48.814926","lng":"2.392002","tags":{"name":"GARE (IVRY)","ref":"42002","address":"VIS-A-VIS DU 17 RUE DE LA GARE - 94200 IVRY SUR SEINE","bonus":"0","open":"0"}},{"id":"27938","lat":"48.823963","lng":"2.399998","tags":{"name":"NECKER (CHARENTON)","ref":"42201","address":"RUE NECKER\/ RUE DU PORT AUX LIONS - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27676","lat":"48.854023","lng":"2.412058","tags":{"name":"DOCTEUR DEJERINE","ref":"20009","address":"RUE DES DOCTEURS DEJERINE - 75020 PARIS","bonus":"0","open":"1","total":"20","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":14,"free":6}},{"id":"27185","lat":"48.840397","lng":"2.409229","tags":{"name":"MONTEMPOIVRE","ref":"12042","address":"36-38, boulevard Soult - 75012 PARIS","bonus":"0","open":"1","total":"32","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":2,"free":38}},{"id":"27175","lat":"48.835545","lng":"2.407456","tags":{"name":"PORTE DOREE","ref":"12032","address":"1 PLACE EDOUARD RENARD - 75012 PARIS","bonus":"0","open":"1","total":"35","timestamp":1372598482,"updated":"30\/06\/2013 | 15 h 21 m 22 s","available":0,"free":34}},{"id":"27925","lat":"48.819012","lng":"2.396719","tags":{"name":"COUTURIER (IVRY)","ref":"42004","address":"30, RUE PAUL VAILLANT COUTURIER - 94200 IVRY SUR SEINE","bonus":"0","open":"0"}},{"id":"27165","lat":"48.844372","lng":"2.410972","tags":{"name":"COURTELINE","ref":"12021","address":"1, 3 et 5, avenue Courteline (angle boulevard Soult) - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598480,"updated":"30\/06\/2013 | 15 h 21 m 20 s","available":21,"free":28}},{"id":"27672","lat":"48.849266","lng":"2.412330","tags":{"name":"RUE DE LAGNY SAINT MANDE","ref":"20005","address":"2 RUE REYNALDO HAHN - 75020 PARIS","bonus":"0","open":"1","total":"19","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":10,"free":8}},{"id":"27717","lat":"48.851284","lng":"2.412734","tags":{"name":"STADE MARYSE HILSZ","ref":"20107","address":"26 RUE MARYSE HILSZ - 75020 PARIS","bonus":"0","open":"1","total":"23","timestamp":1372598580,"updated":"30\/06\/2013 | 15 h 23 m 00 s","available":12,"free":11}},{"id":"27703","lat":"48.873550","lng":"2.411003","tags":{"name":"LEON FRAPIE","ref":"20038","address":"6 RUE LEON FRAPIE - 75020 PARIS","bonus":"1","open":"1","total":"19","timestamp":1372598577,"updated":"30\/06\/2013 | 15 h 22 m 57 s","available":19,"free":0}},{"id":"27879","lat":"48.915157","lng":"2.376424","tags":{"name":"LANDY (AUBERVILLIERS)","ref":"33012","address":"FACE 2 RUE DU LANDY - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27167","lat":"48.840763","lng":"2.410523","tags":{"name":"SAHEL","ref":"12023","address":"15 AVENUE EMILE LAURENT - 75012 PARIS","bonus":"0","open":"1","total":"67","timestamp":1372598481,"updated":"30\/06\/2013 | 15 h 21 m 21 s","available":6,"free":59}},{"id":"27904","lat":"48.891079","lng":"2.402776","tags":{"name":"GERVAIS (PANTIN)","ref":"35010","address":"1-3 RUE DU PRE SAINT GERVAIS - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27897","lat":"48.902691","lng":"2.393256","tags":{"name":"VAILLANT (PANTIN)","ref":"35003","address":"ANGLE RUE GENERAL GOSSERAND ET AVENUE EDOUARD VAILLANT - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27873","lat":"48.906384","lng":"2.389548","tags":{"name":"REPUBLIQUE 2 (AUBERVILLIERS)","ref":"33005","address":"FACE AU 106 AVENUE DE LA REPUBLIQUE - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27874","lat":"48.910145","lng":"2.385052","tags":{"name":"KARMAN (AUBERVILLIERS)","ref":"33006","address":"FACE 143 RUE ANDRE KARMAN - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27882","lat":"48.884003","lng":"2.407990","tags":{"name":"JAURES 2 (PRE SAINT GERVAIS)","ref":"33103","address":"34 AVENUE JEAN JAURES - 93310 LE PRE SAINT GERVAIS","bonus":"1","open":"0"}},{"id":"27899","lat":"48.895714","lng":"2.400572","tags":{"name":"GENERAL LECLERC (PANTIN)","ref":"35005","address":"QUAI DE L'AISNE\/AVENUE DU GENERAL LECLERC 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27694","lat":"48.878098","lng":"2.411046","tags":{"name":"PORTE DES LILAS","ref":"20029","address":"57 RUE DES FRERES FLAVIEN - 75020 PARIS","bonus":"1","open":"1","total":"25","timestamp":1372598576,"updated":"30\/06\/2013 | 15 h 22 m 56 s","available":25,"free":0}},{"id":"27857","lat":"48.858395","lng":"2.414861","tags":{"name":"VAILLANT (BAGNOLET)","ref":"31707","address":"FACE 70 RUE EDOUARD VAILLANT - 93170 BAGNOLET","bonus":"0","open":"0"}},{"id":"27881","lat":"48.886528","lng":"2.407469","tags":{"name":"JAURES 1 (PRE SAINT GERVAIS)","ref":"33102","address":"RUE GABRIEL PERI ANGLE AVENUE JAURES - 93310 LE PRE SAINT GERVAIS","bonus":"1","open":"0"}},{"id":"27729","lat":"48.873337","lng":"2.413240","tags":{"name":"NOISY LE SEC","ref":"20120","address":"1 RUE EVARISTE GALOIS - 75020 PARIS","bonus":"1","open":"1","total":"30","timestamp":1372598582,"updated":"30\/06\/2013 | 15 h 23 m 02 s","available":30,"free":0}},{"id":"27943","lat":"48.826656","lng":"2.405877","tags":{"name":"PARIS 3 (CHARENTON)","ref":"42207","address":"136 RUE DE PARIS - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27856","lat":"48.863026","lng":"2.415622","tags":{"name":"CHATEAU (BAGNOLET)","ref":"31706","address":"RUE DU CHATEAU - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27865","lat":"48.878590","lng":"2.411900","tags":{"name":"PARIS (LES LILAS)","ref":"32601","address":"46 RUE DE PARIS - 93260 LES LILAS","bonus":"1","open":"0"}},{"id":"27715","lat":"48.852554","lng":"2.415542","tags":{"name":"GAUMONT","ref":"20105","address":"AVENUE BENOIT FRACHON - 75020 PARIS","bonus":"0","open":"1","total":"30","timestamp":1372598579,"updated":"30\/06\/2013 | 15 h 22 m 59 s","available":24,"free":5}},{"id":"27875","lat":"48.913578","lng":"2.382201","tags":{"name":"REPUBLIQUE 1 (AUBERVILLIERS)","ref":"33007","address":"2 AVENUE DE LA REPUBLIQUE SUR CHAUSSE - 93300 AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27898","lat":"48.897327","lng":"2.400577","tags":{"name":"ALLENDE (PANTIN)","ref":"35004","address":"AVENUE DE LA GARE - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27855","lat":"48.864529","lng":"2.416171","tags":{"name":"CHAMPEAUX (BAGNOLET)","ref":"31705","address":"RUE DES CHAMPEAUX (PRES DE LA GARE ROUTIERE) - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27905","lat":"48.890484","lng":"2.406498","tags":{"name":"D'ORVES (PANTIN)","ref":"35011","address":"12 RUE HONORE D'ESTIENNE D'ORVES - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27198","lat":"48.846420","lng":"2.415637","tags":{"name":"PORTE DE VINCENNES","ref":"12115","address":"22 AVENUE DE LA PORTE DE VINCENNES - 75012 PARIS","bonus":"0","open":"1","total":"33","timestamp":1372598486,"updated":"30\/06\/2013 | 15 h 21 m 26 s","available":0,"free":33}},{"id":"27197","lat":"48.843948","lng":"2.415081","tags":{"name":"PORTE DE SAINT MANDE","ref":"12114","address":"33 AVENUE COURTELINE - 75012 PARIS","bonus":"0","open":"1","total":"28","timestamp":1372598486,"updated":"30\/06\/2013 | 15 h 21 m 26 s","available":1,"free":27}},{"id":"27671","lat":"48.847065","lng":"2.416023","tags":{"name":"PORTE DE VINCENNES BIS","ref":"20004","address":"10 RUE DU COMMANDANT L'HERMINIER - 75020 PARIS","bonus":"0","open":"1","total":"16","timestamp":1372598572,"updated":"30\/06\/2013 | 15 h 22 m 52 s","available":5,"free":11}},{"id":"27858","lat":"48.874458","lng":"2.415138","tags":{"name":"NOISY (BAGNOLET)","ref":"31708","address":"116-118 RUE DE NOISY LE SEC - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27924","lat":"48.814659","lng":"2.398262","tags":{"name":"INSURRECTION AOUT 1944 (IVRY)","ref":"42003","address":"2 PLACE DE L'INSURRECTION AOUT 1944 - 94200 IVRY SUR SEINE","bonus":"0","open":"0"}},{"id":"27939","lat":"48.822735","lng":"2.405659","tags":{"name":"RONSARD (CHARENTON)","ref":"42202","address":"1 RUE KENNEDY \/ ALLEE RONSARD - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27920","lat":"48.849312","lng":"2.417910","tags":{"name":"LAGNY (SAINT MANDE)","ref":"41604","address":"126 RUE LAGNY \/ ANGLE AVENUE JOFFRE - 94160 SAINT MANDE","bonus":"0","open":"0"}},{"id":"27851","lat":"48.868454","lng":"2.417817","tags":{"name":"BERTON (BAGNOLET)","ref":"31701","address":"3 RUE RAOUL BERTON - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27840","lat":"48.854912","lng":"2.418772","tags":{"name":"PARIS (MONTREUIL)","ref":"31003","address":"237-241 RUE DE PARIS - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27184","lat":"48.833656","lng":"2.413464","tags":{"name":"BOIS DE VINCENNES","ref":"12041","address":"AVENUE DAUMESNIL - 75012 PARIS","bonus":"0","open":"1","total":"58","timestamp":1372598484,"updated":"30\/06\/2013 | 15 h 21 m 24 s","available":0,"free":58}},{"id":"27839","lat":"48.852814","lng":"2.419307","tags":{"name":"REPUBLIQUE (MONTREUIL)","ref":"31002","address":"38 RUE DE LA REPUBLIQUE - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27903","lat":"48.892139","lng":"2.409108","tags":{"name":"LOLIVE 1 (PANTIN)","ref":"35009","address":"104 AVENUE LOLIVE - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27199","lat":"48.825584","lng":"2.409831","tags":{"name":"DOM P\u2026RIGNON GRAVELLE","ref":"12119","address":"ROUTE DOM PERIGNON - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":1,"free":49}},{"id":"27866","lat":"48.879398","lng":"2.416161","tags":{"name":"POULMARCH (LES LILAS)","ref":"32602","address":"7 RUE JEAN POULMARCH - 93200 LES LILAS","bonus":"1","open":"0"}},{"id":"27918","lat":"48.843548","lng":"2.418317","tags":{"name":"DIGEON (SAINT MANDE)","ref":"41602","address":"PLACE CHARLES DIGEON - 94160 SAINT MANDE","bonus":"0","open":"0"}},{"id":"27896","lat":"48.907227","lng":"2.396129","tags":{"name":"JAURES 2 (PANTIN)","ref":"35002","address":"130 RUE JEAN JAURES - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27917","lat":"48.839031","lng":"2.417410","tags":{"name":"GENERAL DE GAULLE (SAINT MANDE)","ref":"41601","address":"86 AVENUE DU GENERAL DE GAULLE - 94160 SAINT MANDE","bonus":"0","open":"0"}},{"id":"27926","lat":"48.814705","lng":"2.402382","tags":{"name":"GAMBETTA (IVRY)","ref":"42005","address":"1, PLACE DE LEON GAMBETTA - 94200 IVRY","bonus":"0","open":"0"}},{"id":"27942","lat":"48.823784","lng":"2.410014","tags":{"name":"PARIS 2 (CHARENTON)","ref":"42206","address":"111 RUE DE PARIS - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27955","lat":"48.846336","lng":"2.420247","tags":{"name":"PARIS 1 (VINCENNES)","ref":"43001","address":"168 AVENUE DE PARIS - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27841","lat":"48.855499","lng":"2.422056","tags":{"name":"PARIS 2 (MONTREUIL)","ref":"31004","address":"175\/179 RUE DE PARIS - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27940","lat":"48.820404","lng":"2.408405","tags":{"name":"ELUARD (CHARENTON)","ref":"42203","address":"FACE AU 7 RUE PAUL ELUARD - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27838","lat":"48.849232","lng":"2.421430","tags":{"name":"LAGNY (MONTREUIL)","ref":"31001","address":"96 RUE DE LAGNY - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27859","lat":"48.857052","lng":"2.422550","tags":{"name":"MARCEL (BAGNOLET)","ref":"31709","address":"FACE AU 184 RUE ETIENNE MARCEL - 93170 BAGNOLET","bonus":"0","open":"0"}},{"id":"27900","lat":"48.896332","lng":"2.409088","tags":{"name":"DELIZY (PANTIN)","ref":"35006","address":"FACE AU 23 RUE DELIZY - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27906","lat":"48.889484","lng":"2.414308","tags":{"name":"CANDALE (PANTIN)","ref":"35012","address":"FACE AU 12 RUE CANDALE - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27880","lat":"48.914505","lng":"2.391051","tags":{"name":"RECHAUSSIERE (AUBERVILLIERS)","ref":"33013","address":"52 RUE LEOPOLD RECHOSSIERE - AUBERVILLIERS","bonus":"0","open":"0"}},{"id":"27921","lat":"48.836090","lng":"2.418908","tags":{"name":"GENERAL DE GAULLE 2 (SAINT MANDE)","ref":"41605","address":"120 AVENUE GENERAL DE GAULLE - 94160 SAINT MANDE","bonus":"0","open":"0"}},{"id":"27902","lat":"48.892719","lng":"2.412530","tags":{"name":"LOLIVE 2 (PANTIN)","ref":"35008","address":"132 RUE JEAN LOLIVE - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27908","lat":"48.893269","lng":"2.412716","tags":{"name":"DE GAULLE (PANTIN)","ref":"35014","address":"139 AVENUE JEAN LOLIVE \/ MAIL CHARLES DE GAULLE - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27870","lat":"48.883240","lng":"2.418912","tags":{"name":"GARDE CHASSE (LES LILAS)","ref":"32606","address":"49 RUE DU GARDE CHASSE - 93260 LES LILAS","bonus":"1","open":"0"}},{"id":"27843","lat":"48.853760","lng":"2.424446","tags":{"name":"REPUBLIQUE 2 (MONTREUIL)","ref":"31006","address":"2\/4 PLACE DE LA REPUBLIQUE - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27941","lat":"48.822144","lng":"2.412603","tags":{"name":"PARIS 1 (CHARENTON)","ref":"42205","address":"89 RUE DE PARIS - 94220 CHARENTON","bonus":"0","open":"0"}},{"id":"27868","lat":"48.881214","lng":"2.420209","tags":{"name":"KOCK (LES LILAS)","ref":"32604","address":"FACE 3 AVENUE PAUL DE KOCK - 93200 LES LILAS","bonus":"1","open":"0"}},{"id":"27919","lat":"48.845779","lng":"2.423771","tags":{"name":"PASTEUR (SAINT MANDE)","ref":"41603","address":"AVENUE PASTEUR\/AVENUE DE PARIS - 94160 SAINT MANDE","bonus":"0","open":"0"}},{"id":"27852","lat":"48.870659","lng":"2.424046","tags":{"name":"CURIE (BAGNOLET)","ref":"31702","address":"40 PIERRE ET MARIE CURIE - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27895","lat":"48.910137","lng":"2.399326","tags":{"name":"JAURES 1 (PANTIN)","ref":"35001","address":"168 AVENUE JEAN JAURES - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27853","lat":"48.875267","lng":"2.423649","tags":{"name":"CARNOT (BAGNOLET)","ref":"31703","address":"177, RUE SADI CARNOT - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27842","lat":"48.856285","lng":"2.426434","tags":{"name":"PARIS 2 (MONTREUIL)","ref":"31005","address":"127\/129 RUE DE PARIS - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27200","lat":"48.827724","lng":"2.418272","tags":{"name":"CONSERVATION","ref":"12120","address":"ROUTE DE LA CEINTURE DU LAC DAUMESNIL - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":2,"free":48}},{"id":"27956","lat":"48.848881","lng":"2.426198","tags":{"name":"LAGNY (VINCENNES)","ref":"43002","address":"1 BIS RUE DE LAGNY - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27850","lat":"48.858459","lng":"2.427390","tags":{"name":"CENTENAIRE (MONTREUIL)","ref":"31013","address":"8 RUE DU CENTENAIRE - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27869","lat":"48.882172","lng":"2.423273","tags":{"name":"HORTENSIAS (LES LILAS)","ref":"32605","address":"1 ALLEE DES HORTENSIAS - 93260 LES LILAS","bonus":"1","open":"0"}},{"id":"27907","lat":"48.889488","lng":"2.419849","tags":{"name":"TELL (PANTIN)","ref":"35013","address":"1 RUE GUILLAUME TELL \/ FACE AU 64 BENJAMIN DELESSERT- 93500 PANTIN","bonus":"1","open":"0"}},{"id":"27205","lat":"48.824409","lng":"2.418455","tags":{"name":"AVENUE DE GRAVELLE","ref":"12126","address":"FACE 71 AVENUE DE GRAVELLE - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":2,"free":48}},{"id":"27957","lat":"48.845718","lng":"2.427406","tags":{"name":"PARIS 2 (VINCENNES)","ref":"43003","address":"104 AVENUE DE PARIS - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27901","lat":"48.893944","lng":"2.418030","tags":{"name":"DELESSERT (PANTIN)","ref":"35007","address":"1 RUE BENJAMIN DELESSERT - 93500 PANTIN","bonus":"0","open":"0"}},{"id":"27867","lat":"48.881142","lng":"2.424974","tags":{"name":"CALMETTE (LES LILAS)","ref":"32603","address":"1 ALLEE DOCTEUR CALMETTE - 93260 LES LILAS","bonus":"1","open":"0"}},{"id":"27854","lat":"48.873928","lng":"2.427934","tags":{"name":"HORNET (BAGNOLET)","ref":"31704","address":"FACE AU 1 RUE JEANNE HORNET - 93170 BAGNOLET","bonus":"1","open":"0"}},{"id":"27844","lat":"48.857479","lng":"2.432570","tags":{"name":"PARIS 1 (MONTREUIL)","ref":"31007","address":"56 RUE DE PARIS - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27967","lat":"48.822178","lng":"2.421504","tags":{"name":"VERDUN (SAINT MAURICE)","ref":"44102","address":"14 avenue de Verdun - 94410 SAINT MAURICE","bonus":"0","open":"0"}},{"id":"27960","lat":"48.841488","lng":"2.430793","tags":{"name":"MINIMES (VINCENNES)","ref":"43006","address":"30 AVENUE DES MINIMES - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27846","lat":"48.868813","lng":"2.432975","tags":{"name":"DE GAULLE (MONTREUIL)","ref":"31009","address":"13\/15 PLACE DU GENERAL DE GAULLE- 93100 MONTREUIL","bonus":"1","open":"0"}},{"id":"27959","lat":"48.847549","lng":"2.433433","tags":{"name":"AUBERT (VINCENNES)","ref":"43005","address":"18 AVENUE AUBERT - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27958","lat":"48.850418","lng":"2.434514","tags":{"name":"MONTREUIL (VINCENNES)","ref":"43004","address":"43 RUE DE MONTREUIL - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27201","lat":"48.835445","lng":"2.431421","tags":{"name":"POLYGONE","ref":"12122","address":"AVENUE DU POLYGONE - 75012 PARIS","bonus":"0","open":"1","total":"50","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":0,"free":48}},{"id":"27845","lat":"48.857700","lng":"2.437369","tags":{"name":"VINCENNES (MONTREUIL)","ref":"31008","address":"7 BIS RUE DE VINCENNES- 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27203","lat":"48.839043","lng":"2.437655","tags":{"name":"PYRAMIDE ARTILLERIE","ref":"12124","address":"ROUTE DE L'ARTILLERIE - 75012 PARIS","bonus":"0","open":"1","total":"55","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":0,"free":55}},{"id":"27961","lat":"48.848259","lng":"2.439893","tags":{"name":"VORGES (VINCENNES)","ref":"43007","address":"4 AVENUE VORGES - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27202","lat":"48.844231","lng":"2.439210","tags":{"name":"CHATEAU DE VINCENNES","ref":"12123","address":"COURS DES MARECHAUX - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27849","lat":"48.855808","lng":"2.441520","tags":{"name":"CARNOT (MONTREUIL)","ref":"31012","address":"35\/37 RUE CARNOT - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27848","lat":"48.858925","lng":"2.443142","tags":{"name":"STALINGRAD 2 (MONTREUIL)","ref":"31011","address":"27 RUE DE STALINGRAD- 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27204","lat":"48.837063","lng":"2.440447","tags":{"name":"PYRAMIDE ENTR\u2026E PARC FLORAL","ref":"12125","address":"PYRAMIDE ENTREE PARC FLORAL - 75012 PARIS","bonus":"0","open":"1","total":"48","timestamp":1372598487,"updated":"30\/06\/2013 | 15 h 21 m 27 s","available":0,"free":39}},{"id":"27847","lat":"48.856812","lng":"2.444987","tags":{"name":"STALINGRAD (MONTREUIL)","ref":"31010","address":"67-69 RUE DE STALINGRAD - 93100 MONTREUIL","bonus":"0","open":"0"}},{"id":"27962","lat":"48.847790","lng":"2.444691","tags":{"name":"FONTENAY (VINCENNES)","ref":"43008","address":"12 RUE DE FONTENAY - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27964","lat":"48.849747","lng":"2.451960","tags":{"name":"JARRY (VINCENNES)","ref":"43010","address":"139 RUE DE LA JARRY - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27963","lat":"48.846962","lng":"2.452237","tags":{"name":"MURS DU PARC (VINCENNES)","ref":"43009","address":"AVENUE DES MURS DU PARC - 94300 VINCENNES","bonus":"0","open":"0"}},{"id":"27914","lat":"48.850124","lng":"2.455529","tags":{"name":"STALINGRAD (FONTENAY SOUS BOIS)","ref":"41203","address":"14 AVENUE STALINGRAD - 94120 FONTENAY SOUS BOIS","bonus":"0","open":"0"}},{"id":"27913","lat":"48.843674","lng":"2.463083","tags":{"name":"CHARMES (FONTENAY SOUS BOIS)","ref":"41202","address":"ANGLE AVENUE DES CHARMES \/ AVENUE FOCH - 94120 FONTENAY SOUS BOIS","bonus":"0","open":"0"}},{"id":"27966","lat":"48.815048","lng":"2.459239","tags":{"name":"PLACE MONGOLFIER (SAINT MAURICE)","ref":"44101","address":"PLACE MONTGOLFIER - 94410 SAINT MAURICE","bonus":"0","open":"0"}},{"id":"27912","lat":"48.846302","lng":"2.472409","tags":{"name":"DE RICARD (FONTENAY SOUS BOIS)","ref":"41201","address":"RUE LOUIS-XAVIER DE RICARD - 94120 FONTENAY SOUS BOIS","bonus":"0","open":"0"}},{"id":"27915","lat":"48.836124","lng":"2.470375","tags":{"name":"CLEMANCEAU (NOGENT)","ref":"41301","address":"2 AVENUE GEORGES CLEMENCEAU - 94130 NOGENT","bonus":"0","open":"0"}},{"id":"27965","lat":"48.819954","lng":"2.464026","tags":{"name":"GARE RER (JOINVILLE)","ref":"43401","address":"PARC DU STATIONNEMENT \/ GARE RER - 94340 JOINVILLE-LE-PONT","bonus":"0","open":"0"}},{"id":"27916","lat":"48.836479","lng":"2.479464","tags":{"name":"CHARLES DE GAULLE (NOGENT)","ref":"41302","address":"FACE AU 60 AVENUE CHARLES DE GAULLES - 94130 NOGENT SUR MARNE","bonus":"0","open":"0"}}],"item_count":1226,"nb_page":1,"current_page":1,"next_page":null} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..dff415f Binary files /dev/null and b/favicon.ico differ diff --git a/flash_decompiled/LANDING/aze/motion/EazeTween.as b/flash_decompiled/LANDING/aze/motion/EazeTween.as new file mode 100644 index 0000000..4acd0b9 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/EazeTween.as @@ -0,0 +1,601 @@ +package aze.motion { + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.filters.*; + import aze.motion.specials.*; + import flash.utils.*; + import aze.motion.easing.*; + + public final class EazeTween { + + public static const specialProperties:Dictionary = new Dictionary(); + private static const running:Dictionary = new Dictionary(); + private static const ticker:Shape = createTicker(); + + public static var defaultEasing:Function = Quadratic.easeOut; + public static var defaultDuration:Object = { + slow:1, + normal:0.4, + fast:0.2 + }; + private static var pauseTime:Number; + private static var head:EazeTween; + private static var tweenCount:int = 0; + + private var prev:EazeTween; + private var next:EazeTween; + private var rnext:EazeTween; + private var isDead:Boolean; + private var target:Object; + private var reversed:Boolean; + private var overwrite:Boolean; + private var autoStart:Boolean; + private var _configured:Boolean; + private var _started:Boolean; + private var _inited:Boolean; + private var duration; + private var _duration:Number; + private var _ease:Function; + private var startTime:Number; + private var endTime:Number; + private var properties:EazeProperty; + private var specials:EazeSpecial; + private var autoVisible:Boolean; + private var slowTween:Boolean; + private var _chain:Array; + private var _onStart:Function; + private var _onStartArgs:Array; + private var _onUpdate:Function; + private var _onUpdateArgs:Array; + private var _onComplete:Function; + private var _onCompleteArgs:Array; + + public function EazeTween(_arg1:Object, _arg2:Boolean=true){ + if (!_arg1){ + throw (new ArgumentError("EazeTween: target can not be null")); + }; + this.target = _arg1; + this.autoStart = _arg2; + this._ease = defaultEasing; + } + public static function killAllTweens():void{ + var _local1:Object; + for (_local1 in running) { + killTweensOf(_local1); + }; + } + public static function killTweensOf(_arg1:Object):void{ + var _local3:EazeTween; + if (!_arg1){ + return; + }; + var _local2:EazeTween = running[_arg1]; + while (_local2) { + _local2.isDead = true; + _local2.dispose(); + if (_local2.rnext){ + _local3 = _local2; + _local2 = _local2.rnext; + _local3.rnext = null; + } else { + _local2 = null; + }; + }; + delete running[_arg1]; + } + public static function pauseAllTweens():void{ + if (ticker.hasEventListener(Event.ENTER_FRAME)){ + pauseTime = getTimer(); + ticker.removeEventListener(Event.ENTER_FRAME, tick); + }; + } + public static function resumeAllTweens():void{ + var _local1:Number; + var _local2:EazeTween; + if (!ticker.hasEventListener(Event.ENTER_FRAME)){ + _local1 = (getTimer() - pauseTime); + _local2 = head; + while (_local2) { + _local2.startTime = (_local2.startTime + _local1); + _local2.endTime = (_local2.endTime + _local1); + _local2 = _local2.next; + }; + ticker.addEventListener(Event.ENTER_FRAME, tick); + }; + } + private static function createTicker():Shape{ + var _local1:Shape = new Shape(); + _local1.addEventListener(Event.ENTER_FRAME, tick); + return (_local1); + } + private static function tick(_arg1:Event):void{ + if (head){ + updateTweens(getTimer()); + }; + } + private static function updateTweens(_arg1:int):void{ + var _local6:Boolean; + var _local7:Number; + var _local8:Number; + var _local9:Object; + var _local10:EazeProperty; + var _local11:EazeSpecial; + var _local12:EazeTween; + var _local13:EazeTween; + var _local14:CompleteData; + var _local15:int; + var _local2:Array = []; + var _local3:int; + var _local4:EazeTween = head; + var _local5:int; + while (_local4) { + _local5++; + if (_local4.isDead){ + _local6 = true; + } else { + _local6 = (_arg1 >= _local4.endTime); + _local7 = ((_local6) ? 1 : ((_arg1 - _local4.startTime) / _local4._duration)); + _local8 = _local4._ease(((_local7) || (0))); + _local9 = _local4.target; + _local10 = _local4.properties; + while (_local10) { + _local9[_local10.name] = (_local10.start + (_local10.delta * _local8)); + _local10 = _local10.next; + }; + if (_local4.slowTween){ + if (_local4.autoVisible){ + _local9.visible = (_local9.alpha > 0.001); + }; + if (_local4.specials){ + _local11 = _local4.specials; + while (_local11) { + _local11.update(_local8, _local6); + _local11 = _local11.next; + }; + }; + if (_local4._onStart != null){ + _local4._onStart.apply(null, _local4._onStartArgs); + _local4._onStart = null; + _local4._onStartArgs = null; + }; + if (_local4._onUpdate != null){ + _local4._onUpdate.apply(null, _local4._onUpdateArgs); + }; + }; + }; + if (_local6){ + if (_local4._started){ + _local14 = new CompleteData(_local4._onComplete, _local4._onCompleteArgs, _local4._chain, (_local4.endTime - _arg1)); + _local4._chain = null; + _local2.unshift(_local14); + _local3++; + }; + _local4.isDead = true; + _local4.detach(); + _local4.dispose(); + _local12 = _local4; + _local13 = _local4.prev; + _local4 = _local12.next; + if (_local13){ + _local13.next = _local4; + if (_local4){ + _local4.prev = _local13; + }; + } else { + head = _local4; + if (_local4){ + _local4.prev = null; + }; + }; + _local12.prev = (_local12.next = null); + } else { + _local4 = _local4.next; + }; + }; + if (_local3){ + _local15 = 0; + while (_local15 < _local3) { + _local2[_local15].execute(); + _local15++; + }; + }; + tweenCount = _local5; + } + + private function configure(_arg1, _arg2:Object=null, _arg3:Boolean=false):void{ + var _local4:String; + var _local5:*; + this._configured = true; + this.reversed = _arg3; + this.duration = _arg1; + if (_arg2){ + for (_local4 in _arg2) { + _local5 = _arg2[_local4]; + if ((_local4 in specialProperties)){ + if (_local4 == "alpha"){ + this.autoVisible = true; + this.slowTween = true; + } else { + if (_local4 == "alphaVisible"){ + _local4 = "alpha"; + this.autoVisible = false; + } else { + if (!(_local4 in this.target)){ + if (_local4 == "scale"){ + this.configure(_arg1, { + scaleX:_local5, + scaleY:_local5 + }, _arg3); + continue; + }; + this.specials = new specialProperties[_local4](this.target, _local4, _local5, this.specials); + this.slowTween = true; + continue; + }; + }; + }; + }; + if ((((_local5 is Array)) && ((this.target[_local4] is Number)))){ + if (("__bezier" in specialProperties)){ + this.specials = new specialProperties["__bezier"](this.target, _local4, _local5, this.specials); + this.slowTween = true; + }; + } else { + this.properties = new EazeProperty(_local4, _local5, this.properties); + }; + }; + }; + } + public function start(_arg1:Boolean=true, _arg2:Number=0):void{ + if (this._started){ + return; + }; + if (!this._inited){ + this.init(); + }; + this.overwrite = _arg1; + this.startTime = (getTimer() + _arg2); + this._duration = (((isNaN(this.duration)) ? this.smartDuration(String(this.duration)) : Number(this.duration)) * 1000); + this.endTime = (this.startTime + this._duration); + if (((this.reversed) || ((this._duration == 0)))){ + this.update(this.startTime); + }; + if (((this.autoVisible) && ((this._duration > 0)))){ + this.target.visible = true; + }; + this._started = true; + this.attach(this.overwrite); + } + private function init():void{ + if (this._inited){ + return; + }; + var _local1:EazeProperty = this.properties; + while (_local1) { + _local1.init(this.target, this.reversed); + _local1 = _local1.next; + }; + var _local2:EazeSpecial = this.specials; + while (_local2) { + _local2.init(this.reversed); + _local2 = _local2.next; + }; + this._inited = true; + } + private function smartDuration(_arg1:String):Number{ + var _local2:EazeSpecial; + if ((_arg1 in defaultDuration)){ + return (defaultDuration[_arg1]); + }; + if (_arg1 == "auto"){ + _local2 = this.specials; + while (_local2) { + if (("getPreferredDuration" in _local2)){ + return (_local2["getPreferredDuration"]()); + }; + _local2 = _local2.next; + }; + }; + return (defaultDuration.normal); + } + public function easing(_arg1:Function):EazeTween{ + this._ease = ((_arg1) || (defaultEasing)); + return (this); + } + public function filter(_arg1, _arg2:Object, _arg3:Boolean=false):EazeTween{ + if (!_arg2){ + _arg2 = {}; + }; + if (_arg3){ + _arg2.remove = true; + }; + this.addSpecial(_arg1, _arg1, _arg2); + return (this); + } + public function tint(_arg1=null, _arg2:Number=1, _arg3:Number=NaN):EazeTween{ + if (isNaN(_arg3)){ + _arg3 = (1 - _arg2); + }; + this.addSpecial("tint", "tint", [_arg1, _arg2, _arg3]); + return (this); + } + public function colorMatrix(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:uint=0xFFFFFF, _arg6:Number=0):EazeTween{ + var _local7:Boolean = ((((((((!(_arg1)) && (!(_arg2)))) && (!(_arg3)))) && (!(_arg4)))) && (!(_arg6))); + return (this.filter(ColorMatrixFilter, { + brightness:_arg1, + contrast:_arg2, + saturation:_arg3, + hue:_arg4, + tint:_arg5, + colorize:_arg6 + }, _local7)); + } + public function short(_arg1:Number, _arg2:String="rotation", _arg3:Boolean=false):EazeTween{ + this.addSpecial("__short", _arg2, [_arg1, _arg3]); + return (this); + } + public function rect(_arg1:Rectangle, _arg2:String="scrollRect"):EazeTween{ + this.addSpecial("__rect", _arg2, _arg1); + return (this); + } + private function addSpecial(_arg1, _arg2, _arg3:Object):void{ + if ((((_arg1 in specialProperties)) && (this.target))){ + if (((((!(this._inited)) || ((this._duration == 0)))) && (this.autoStart))){ + EazeSpecial(new specialProperties[_arg1](this.target, _arg2, _arg3, null)).init(true); + } else { + this.specials = new specialProperties[_arg1](this.target, _arg2, _arg3, this.specials); + if (this._started){ + this.specials.init(this.reversed); + }; + this.slowTween = true; + }; + }; + } + public function onStart(_arg1:Function, ... _args):EazeTween{ + this._onStart = _arg1; + this._onStartArgs = _args; + this.slowTween = ((((((!(this.autoVisible)) || (!((this.specials == null))))) || (!((this._onUpdate == null))))) || (!((this._onStart == null)))); + return (this); + } + public function onUpdate(_arg1:Function, ... _args):EazeTween{ + this._onUpdate = _arg1; + this._onUpdateArgs = _args; + this.slowTween = ((((((!(this.autoVisible)) || (!((this.specials == null))))) || (!((this._onUpdate == null))))) || (!((this._onStart == null)))); + return (this); + } + public function onComplete(_arg1:Function, ... _args):EazeTween{ + this._onComplete = _arg1; + this._onCompleteArgs = _args; + return (this); + } + public function kill(_arg1:Boolean=false):void{ + if (this.isDead){ + return; + }; + if (_arg1){ + this._onUpdate = (this._onComplete = null); + this.update(this.endTime); + } else { + this.detach(); + this.dispose(); + }; + this.isDead = true; + } + public function killTweens():EazeTween{ + EazeTween.killTweensOf(this.target); + return (this); + } + public function updateNow():EazeTween{ + var _local1:Number; + if (this._started){ + _local1 = Math.max(this.startTime, getTimer()); + this.update(_local1); + } else { + this.init(); + this.endTime = (this._duration = 1); + this.update(0); + }; + return (this); + } + private function update(_arg1:Number):void{ + var _local2:EazeTween = head; + head = this; + updateTweens(_arg1); + head = _local2; + } + private function attach(_arg1:Boolean):void{ + var _local2:EazeTween; + if (_arg1){ + killTweensOf(this.target); + } else { + _local2 = running[this.target]; + }; + if (_local2){ + this.prev = _local2; + this.next = _local2.next; + if (this.next){ + this.next.prev = this; + }; + _local2.next = this; + this.rnext = _local2; + } else { + if (head){ + head.prev = this; + }; + this.next = head; + head = this; + }; + running[this.target] = this; + } + private function detach():void{ + var _local1:EazeTween; + var _local2:EazeTween; + if (((this.target) && (this._started))){ + _local1 = running[this.target]; + if (_local1 == this){ + if (this.rnext){ + running[this.target] = this.rnext; + } else { + delete running[this.target]; + }; + } else { + if (_local1){ + _local2 = _local1; + _local1 = _local1.rnext; + while (_local1) { + if (_local1 == this){ + _local2.rnext = this.rnext; + break; + }; + _local2 = _local1; + _local1 = _local1.rnext; + }; + }; + }; + this.rnext = null; + }; + } + private function dispose():void{ + var _local1:EazeTween; + if (this._started){ + this.target = null; + this._onComplete = null; + this._onCompleteArgs = null; + if (this._chain){ + for each (_local1 in this._chain) { + _local1.dispose(); + }; + this._chain = null; + }; + }; + if (this.properties){ + this.properties.dispose(); + this.properties = null; + }; + this._ease = null; + this._onStart = null; + this._onStartArgs = null; + if (this.slowTween){ + if (this.specials){ + this.specials.dispose(); + this.specials = null; + }; + this.autoVisible = false; + this._onUpdate = null; + this._onUpdateArgs = null; + }; + } + public function delay(_arg1, _arg2:Boolean=true):EazeTween{ + return (this.add(_arg1, null, _arg2)); + } + public function apply(_arg1:Object=null, _arg2:Boolean=true):EazeTween{ + return (this.add(0, _arg1, _arg2)); + } + public function play(_arg1=0, _arg2:Boolean=true):EazeTween{ + return (this.add("auto", {frame:_arg1}, _arg2).easing(Linear.easeNone)); + } + public function to(_arg1, _arg2:Object=null, _arg3:Boolean=true):EazeTween{ + return (this.add(_arg1, _arg2, _arg3)); + } + public function from(_arg1, _arg2:Object=null, _arg3:Boolean=true):EazeTween{ + return (this.add(_arg1, _arg2, _arg3, true)); + } + private function add(_arg1, _arg2:Object, _arg3:Boolean, _arg4:Boolean=false):EazeTween{ + if (this.isDead){ + return (new EazeTween(this.target).add(_arg1, _arg2, _arg3, _arg4)); + }; + if (this._configured){ + return (this.chain().add(_arg1, _arg2, _arg3, _arg4)); + }; + this.configure(_arg1, _arg2, _arg4); + if (this.autoStart){ + this.start(_arg3); + }; + return (this); + } + public function chain(_arg1:Object=null):EazeTween{ + var _local2:EazeTween = new EazeTween(((_arg1) || (this.target)), false); + if (!this._chain){ + this._chain = []; + }; + this._chain.push(_local2); + return (_local2); + } + public function get isStarted():Boolean{ + return (this._started); + } + public function get isFinished():Boolean{ + return (this.isDead); + } + + specialProperties.alpha = true; + specialProperties.alphaVisible = true; + specialProperties.scale = true; + } +}//package aze.motion + +final class EazeProperty { + + public var name:String; + public var start:Number; + public var end:Number; + public var delta:Number; + public var next:EazeProperty; + + public function EazeProperty(_arg1:String, _arg2:Number, _arg3:EazeProperty){ + this.name = _arg1; + this.end = _arg2; + this.next = _arg3; + } + public function init(_arg1:Object, _arg2:Boolean):void{ + if (_arg2){ + this.start = this.end; + this.end = _arg1[this.name]; + _arg1[this.name] = this.start; + } else { + this.start = _arg1[this.name]; + }; + this.delta = (this.end - this.start); + } + public function dispose():void{ + if (this.next){ + this.next.dispose(); + }; + this.next = null; + } + +} +final class CompleteData { + + private var callback:Function; + private var args:Array; + private var chain:Array; + private var diff:Number; + + public function CompleteData(_arg1:Function, _arg2:Array, _arg3:Array, _arg4:Number){ + this.callback = _arg1; + this.args = _arg2; + this.chain = _arg3; + this.diff = _arg4; + } + public function execute():void{ + var _local1:int; + var _local2:int; + if (this.callback != null){ + this.callback.apply(null, this.args); + this.callback = null; + }; + this.args = null; + if (this.chain){ + _local1 = this.chain.length; + _local2 = 0; + while (_local2 < _local1) { + EazeTween(this.chain[_local2]).start(false, this.diff); + _local2++; + }; + this.chain = null; + }; + } + +} diff --git a/flash_decompiled/LANDING/aze/motion/easing/Cubic.as b/flash_decompiled/LANDING/aze/motion/easing/Cubic.as new file mode 100644 index 0000000..ef15803 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/easing/Cubic.as @@ -0,0 +1,22 @@ +package aze.motion.easing { + + public final class Cubic { + + public static function easeIn(_arg1:Number):Number{ + return (((_arg1 * _arg1) * _arg1)); + } + public static function easeOut(_arg1:Number):Number{ + --_arg1; + return ((((_arg1 * _arg1) * _arg1) + 1)); + } + public static function easeInOut(_arg1:Number):Number{ + _arg1 = (_arg1 * 2); + if (_arg1 < 1){ + return ((((0.5 * _arg1) * _arg1) * _arg1)); + }; + _arg1 = (_arg1 - 2); + return ((0.5 * (((_arg1 * _arg1) * _arg1) + 2))); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/LANDING/aze/motion/easing/Linear.as b/flash_decompiled/LANDING/aze/motion/easing/Linear.as new file mode 100644 index 0000000..94ca10a --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/easing/Linear.as @@ -0,0 +1,10 @@ +package aze.motion.easing { + + public class Linear { + + public static function easeNone(_arg1:Number):Number{ + return (_arg1); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/LANDING/aze/motion/easing/Quadratic.as b/flash_decompiled/LANDING/aze/motion/easing/Quadratic.as new file mode 100644 index 0000000..9212847 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/easing/Quadratic.as @@ -0,0 +1,21 @@ +package aze.motion.easing { + + public final class Quadratic { + + public static function easeIn(_arg1:Number):Number{ + return ((_arg1 * _arg1)); + } + public static function easeOut(_arg1:Number):Number{ + return ((-(_arg1) * (_arg1 - 2))); + } + public static function easeInOut(_arg1:Number):Number{ + _arg1 = (_arg1 * 2); + if (_arg1 < 1){ + return (((0.5 * _arg1) * _arg1)); + }; + --_arg1; + return ((-0.5 * ((_arg1 * (_arg1 - 2)) - 1))); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/LANDING/aze/motion/eaze.as b/flash_decompiled/LANDING/aze/motion/eaze.as new file mode 100644 index 0000000..e9b947f --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/eaze.as @@ -0,0 +1,15 @@ +package aze.motion { + + public function eaze(_arg1:Object):EazeTween{ + return (new EazeTween(_arg1)); + } + PropertyTint.register(); + PropertyFrame.register(); + PropertyFilter.register(); + PropertyVolume.register(); + PropertyColorMatrix.register(); + PropertyBezier.register(); + PropertyShortRotation.register(); + var _local1:* = PropertyRect.register(); + return (_local1); +}//package aze.motion diff --git a/flash_decompiled/LANDING/aze/motion/specials/EazeSpecial.as b/flash_decompiled/LANDING/aze/motion/specials/EazeSpecial.as new file mode 100644 index 0000000..c2418a8 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/EazeSpecial.as @@ -0,0 +1,27 @@ +package aze.motion.specials { + + public class EazeSpecial { + + protected var target:Object; + protected var property:String; + public var next:EazeSpecial; + + public function EazeSpecial(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + this.target = _arg1; + this.property = _arg2; + this.next = _arg4; + } + public function init(_arg1:Boolean):void{ + } + public function update(_arg1:Number, _arg2:Boolean):void{ + } + public function dispose():void{ + this.target = null; + if (this.next){ + this.next.dispose(); + }; + this.next = null; + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyBezier.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyBezier.as new file mode 100644 index 0000000..d3c38be --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyBezier.as @@ -0,0 +1,114 @@ +package aze.motion.specials { + import aze.motion.*; + + public class PropertyBezier extends EazeSpecial { + + private var fvalue:Array; + private var through:Boolean; + private var length:int; + private var segments:Array; + + public function PropertyBezier(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + super(_arg1, _arg2, _arg3, _arg4); + this.fvalue = _arg3; + if ((this.fvalue[0] is Array)){ + this.through = true; + this.fvalue = this.fvalue[0]; + }; + } + public static function register():void{ + EazeTween.specialProperties["__bezier"] = PropertyBezier; + } + + override public function init(_arg1:Boolean):void{ + var _local3:Number; + var _local4:Number; + var _local2:Number = target[property]; + this.fvalue = [_local2].concat(this.fvalue); + if (_arg1){ + this.fvalue.reverse(); + }; + var _local5:Number = this.fvalue[0]; + var _local6:int = (this.fvalue.length - 1); + var _local7 = 1; + var _local8:Number = NaN; + this.segments = []; + this.length = 0; + while (_local7 < _local6) { + _local3 = _local5; + _local4 = this.fvalue[_local7]; + ++_local7; + _local5 = this.fvalue[_local7]; + if (this.through){ + if (!this.length){ + _local8 = ((_local5 - _local3) / 4); + var _local9 = this.length++; + this.segments[_local9] = new BezierSegment(_local3, (_local4 - _local8), _local4); + }; + _local9 = this.length++; + this.segments[_local9] = new BezierSegment(_local4, (_local4 + _local8), _local5); + _local8 = (_local5 - (_local4 + _local8)); + } else { + if (_local7 != _local6){ + _local5 = ((_local4 + _local5) / 2); + }; + _local9 = this.length++; + this.segments[_local9] = new BezierSegment(_local3, _local4, _local5); + }; + }; + this.fvalue = null; + if (_arg1){ + this.update(0, false); + }; + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local3:BezierSegment; + var _local5:int; + var _local4:int = (this.length - 1); + if (_arg2){ + _local3 = this.segments[_local4]; + target[property] = (_local3.p0 + _local3.d2); + } else { + if (this.length == 1){ + _local3 = this.segments[0]; + target[property] = _local3.calculate(_arg1); + } else { + _local5 = ((_arg1 * this.length) >> 0); + if (_local5 < 0){ + _local5 = 0; + } else { + if (_local5 > _local4){ + _local5 = _local4; + }; + }; + _local3 = this.segments[_local5]; + _arg1 = (this.length * (_arg1 - (_local5 / this.length))); + target[property] = _local3.calculate(_arg1); + }; + }; + } + override public function dispose():void{ + this.fvalue = null; + this.segments = null; + super.dispose(); + } + + } +}//package aze.motion.specials + +class BezierSegment { + + public var p0:Number; + public var d1:Number; + public var d2:Number; + + public function BezierSegment(_arg1:Number, _arg2:Number, _arg3:Number){ + this.p0 = _arg1; + this.d1 = (_arg2 - _arg1); + this.d2 = (_arg3 - _arg1); + } + public function calculate(_arg1:Number):Number{ + return ((this.p0 + (_arg1 * (((2 * (1 - _arg1)) * this.d1) + (_arg1 * this.d2))))); + } + +} diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyColorMatrix.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyColorMatrix.as new file mode 100644 index 0000000..26bb6ba --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyColorMatrix.as @@ -0,0 +1,191 @@ +package aze.motion.specials { + import flash.display.*; + import flash.filters.*; + import aze.motion.*; + + public class PropertyColorMatrix extends EazeSpecial { + + private var removeWhenComplete:Boolean; + private var colorMatrix:ColorMatrix; + private var delta:Array; + private var start:Array; + private var temp:Array; + + public function PropertyColorMatrix(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + var _local5:uint; + super(_arg1, _arg2, _arg3, _arg4); + this.colorMatrix = new ColorMatrix(); + if (_arg3.brightness){ + this.colorMatrix.adjustBrightness((_arg3.brightness * 0xFF)); + }; + if (_arg3.contrast){ + this.colorMatrix.adjustContrast(_arg3.contrast); + }; + if (_arg3.hue){ + this.colorMatrix.adjustHue(_arg3.hue); + }; + if (_arg3.saturation){ + this.colorMatrix.adjustSaturation((_arg3.saturation + 1)); + }; + if (_arg3.colorize){ + _local5 = ((("tint" in _arg3)) ? uint(_arg3.tint) : 0xFFFFFF); + this.colorMatrix.colorize(_local5, _arg3.colorize); + }; + this.removeWhenComplete = _arg3.remove; + } + public static function register():void{ + EazeTween.specialProperties["colorMatrixFilter"] = PropertyColorMatrix; + EazeTween.specialProperties[ColorMatrixFilter] = PropertyColorMatrix; + } + + override public function init(_arg1:Boolean):void{ + var _local4:Array; + var _local5:Array; + var _local2:DisplayObject = DisplayObject(target); + var _local3:ColorMatrixFilter = (PropertyFilter.getCurrentFilter(ColorMatrixFilter, _local2, true) as ColorMatrixFilter); + if (!_local3){ + _local3 = new ColorMatrixFilter(); + }; + if (_arg1){ + _local5 = _local3.matrix; + _local4 = this.colorMatrix.matrix; + } else { + _local5 = this.colorMatrix.matrix; + _local4 = _local3.matrix; + }; + this.delta = new Array(20); + var _local6:int; + while (_local6 < 20) { + this.delta[_local6] = (_local5[_local6] - _local4[_local6]); + _local6++; + }; + this.start = _local4; + this.temp = new Array(20); + PropertyFilter.addFilter(_local2, new ColorMatrixFilter(_local4)); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local3:DisplayObject = DisplayObject(target); + (PropertyFilter.getCurrentFilter(ColorMatrixFilter, _local3, true) as ColorMatrixFilter); + if (((this.removeWhenComplete) && (_arg2))){ + _local3.filters = _local3.filters; + return; + }; + var _local4:int; + while (_local4 < 20) { + this.temp[_local4] = (this.start[_local4] + (_arg1 * this.delta[_local4])); + _local4++; + }; + PropertyFilter.addFilter(_local3, new ColorMatrixFilter(this.temp)); + } + override public function dispose():void{ + this.colorMatrix = null; + this.delta = null; + this.start = null; + this.temp = null; + super.dispose(); + } + + } +}//package aze.motion.specials + +import flash.filters.*; + +class ColorMatrix { + + private static const LUMA_R:Number = 0.212671; + private static const LUMA_G:Number = 0.71516; + private static const LUMA_B:Number = 0.072169; + private static const LUMA_R2:Number = 0.3086; + private static const LUMA_G2:Number = 0.6094; + private static const LUMA_B2:Number = 0.082; + private static const ONETHIRD:Number = 0.333333333333333; + private static const IDENTITY:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]; + private static const RAD:Number = 0.0174532925199433; + + public var matrix:Array; + + public function ColorMatrix(_arg1:Object=null){ + if ((_arg1 is ColorMatrix)){ + this.matrix = _arg1.matrix.concat(); + } else { + if ((_arg1 is Array)){ + this.matrix = _arg1.concat(); + } else { + this.reset(); + }; + }; + } + public function reset():void{ + this.matrix = IDENTITY.concat(); + } + public function adjustSaturation(_arg1:Number):void{ + var _local2:Number; + var _local3:Number; + var _local4:Number; + var _local5:Number; + _local2 = (1 - _arg1); + _local3 = (_local2 * LUMA_R); + _local4 = (_local2 * LUMA_G); + _local5 = (_local2 * LUMA_B); + this.concat([(_local3 + _arg1), _local4, _local5, 0, 0, _local3, (_local4 + _arg1), _local5, 0, 0, _local3, _local4, (_local5 + _arg1), 0, 0, 0, 0, 0, 1, 0]); + } + public function adjustContrast(_arg1:Number, _arg2:Number=NaN, _arg3:Number=NaN):void{ + if (isNaN(_arg2)){ + _arg2 = _arg1; + }; + if (isNaN(_arg3)){ + _arg3 = _arg1; + }; + _arg1 = (_arg1 + 1); + _arg2 = (_arg2 + 1); + _arg3 = (_arg3 + 1); + this.concat([_arg1, 0, 0, 0, (128 * (1 - _arg1)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg3, 0, (128 * (1 - _arg3)), 0, 0, 0, 1, 0]); + } + public function adjustBrightness(_arg1:Number, _arg2:Number=NaN, _arg3:Number=NaN):void{ + if (isNaN(_arg2)){ + _arg2 = _arg1; + }; + if (isNaN(_arg3)){ + _arg3 = _arg1; + }; + this.concat([1, 0, 0, 0, _arg1, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg3, 0, 0, 0, 1, 0]); + } + public function adjustHue(_arg1:Number):void{ + _arg1 = (_arg1 * RAD); + var _local2:Number = Math.cos(_arg1); + var _local3:Number = Math.sin(_arg1); + this.concat([((LUMA_R + (_local2 * (1 - LUMA_R))) + (_local3 * -(LUMA_R))), ((LUMA_G + (_local2 * -(LUMA_G))) + (_local3 * -(LUMA_G))), ((LUMA_B + (_local2 * -(LUMA_B))) + (_local3 * (1 - LUMA_B))), 0, 0, ((LUMA_R + (_local2 * -(LUMA_R))) + (_local3 * 0.143)), ((LUMA_G + (_local2 * (1 - LUMA_G))) + (_local3 * 0.14)), ((LUMA_B + (_local2 * -(LUMA_B))) + (_local3 * -0.283)), 0, 0, ((LUMA_R + (_local2 * -(LUMA_R))) + (_local3 * -((1 - LUMA_R)))), ((LUMA_G + (_local2 * -(LUMA_G))) + (_local3 * LUMA_G)), ((LUMA_B + (_local2 * (1 - LUMA_B))) + (_local3 * LUMA_B)), 0, 0, 0, 0, 0, 1, 0]); + } + public function colorize(_arg1:int, _arg2:Number=1):void{ + var _local3:Number; + var _local4:Number; + var _local5:Number; + var _local6:Number; + _local3 = (((_arg1 >> 16) & 0xFF) / 0xFF); + _local4 = (((_arg1 >> 8) & 0xFF) / 0xFF); + _local5 = ((_arg1 & 0xFF) / 0xFF); + _local6 = (1 - _arg2); + this.concat([(_local6 + ((_arg2 * _local3) * LUMA_R)), ((_arg2 * _local3) * LUMA_G), ((_arg2 * _local3) * LUMA_B), 0, 0, ((_arg2 * _local4) * LUMA_R), (_local6 + ((_arg2 * _local4) * LUMA_G)), ((_arg2 * _local4) * LUMA_B), 0, 0, ((_arg2 * _local5) * LUMA_R), ((_arg2 * _local5) * LUMA_G), (_local6 + ((_arg2 * _local5) * LUMA_B)), 0, 0, 0, 0, 0, 1, 0]); + } + public function get filter():ColorMatrixFilter{ + return (new ColorMatrixFilter(this.matrix)); + } + public function concat(_arg1:Array):void{ + var _local4:int; + var _local5:int; + var _local2:Array = []; + var _local3:int; + _local5 = 0; + while (_local5 < 4) { + _local4 = 0; + while (_local4 < 5) { + _local2[int((_local3 + _local4))] = (((((Number(_arg1[_local3]) * Number(this.matrix[_local4])) + (Number(_arg1[int((_local3 + 1))]) * Number(this.matrix[int((_local4 + 5))]))) + (Number(_arg1[int((_local3 + 2))]) * Number(this.matrix[int((_local4 + 10))]))) + (Number(_arg1[int((_local3 + 3))]) * Number(this.matrix[int((_local4 + 15))]))) + (((_local4 == 4)) ? Number(_arg1[int((_local3 + 4))]) : 0)); + _local4++; + }; + _local3 = (_local3 + 5); + _local5++; + }; + this.matrix = _local2; + } + +} diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyFilter.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyFilter.as new file mode 100644 index 0000000..9235bad --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyFilter.as @@ -0,0 +1,205 @@ +package aze.motion.specials { + import flash.display.*; + import flash.filters.*; + import aze.motion.*; + + public class PropertyFilter extends EazeSpecial { + + public static var fixedProp:Object = { + quality:true, + color:true + }; + + private var properties:Array; + private var fvalue:BitmapFilter; + private var start:Object; + private var delta:Object; + private var fColor:Object; + private var startColor:Object; + private var deltaColor:Object; + private var removeWhenComplete:Boolean; + private var isNewFilter:Boolean; + private var filterClass:Class; + + public function PropertyFilter(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + var _local7:String; + var _local8:*; + super(_arg1, _arg2, _arg3, _arg4); + this.filterClass = this.resolveFilterClass(_arg2); + var _local5:DisplayObject = DisplayObject(_arg1); + var _local6:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, _local5, false); + if (!_local6){ + this.isNewFilter = true; + _local6 = new this.filterClass(); + }; + this.properties = []; + this.fvalue = _local6.clone(); + for (_local7 in _arg3) { + _local8 = _arg3[_local7]; + if (_local7 == "remove"){ + this.removeWhenComplete = _local8; + } else { + if ((((_local7 == "color")) && (!(this.isNewFilter)))){ + this.fColor = { + r:((_local8 >> 16) & 0xFF), + g:((_local8 >> 8) & 0xFF), + b:(_local8 & 0xFF) + }; + }; + this.fvalue[_local7] = _local8; + this.properties.push(_local7); + }; + }; + } + public static function register():void{ + EazeTween.specialProperties["blurFilter"] = PropertyFilter; + EazeTween.specialProperties["glowFilter"] = PropertyFilter; + EazeTween.specialProperties["dropShadowFilter"] = PropertyFilter; + EazeTween.specialProperties[BlurFilter] = PropertyFilter; + EazeTween.specialProperties[GlowFilter] = PropertyFilter; + EazeTween.specialProperties[DropShadowFilter] = PropertyFilter; + } + public static function getCurrentFilter(_arg1:Class, _arg2:DisplayObject, _arg3:Boolean):BitmapFilter{ + var _local4:int; + var _local5:Array; + var _local6:BitmapFilter; + if (_arg2.filters){ + _local5 = _arg2.filters; + _local4 = 0; + while (_local4 < _local5.length) { + if ((_local5[_local4] is _arg1)){ + if (_arg3){ + _local6 = _local5.splice(_local4, 1)[0]; + _arg2.filters = _local5; + return (_local6); + }; + return (_local5[_local4]); + }; + _local4++; + }; + }; + return (null); + } + public static function addFilter(_arg1:DisplayObject, _arg2:BitmapFilter):void{ + var _local3:Array = ((_arg1.filters) || ([])); + _local3.push(_arg2); + _arg1.filters = _local3; + } + + private function resolveFilterClass(_arg1):Class{ + if ((_arg1 is Class)){ + return (_arg1); + }; + switch (_arg1){ + case "blurFilter": + return (BlurFilter); + case "glowFilter": + return (GlowFilter); + case "dropShadowFilter": + return (DropShadowFilter); + }; + return (BlurFilter); + } + override public function init(_arg1:Boolean):void{ + var _local4:BitmapFilter; + var _local5:BitmapFilter; + var _local6:Object; + var _local7:Object; + var _local8:*; + var _local10:String; + var _local2:DisplayObject = DisplayObject(target); + var _local3:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, _local2, true); + if (!_local3){ + _local3 = new this.filterClass(); + }; + if (this.fColor){ + _local8 = _local3["color"]; + _local6 = { + r:((_local8 >> 16) & 0xFF), + g:((_local8 >> 8) & 0xFF), + b:(_local8 & 0xFF) + }; + }; + if (_arg1){ + _local4 = this.fvalue; + _local5 = _local3; + this.startColor = this.fColor; + _local7 = _local6; + } else { + _local4 = _local3; + _local5 = this.fvalue; + this.startColor = _local6; + _local7 = this.fColor; + }; + this.start = {}; + this.delta = {}; + var _local9:int; + for (;_local9 < this.properties.length;_local9++) { + _local10 = this.properties[_local9]; + _local8 = this.fvalue[_local10]; + if ((_local8 is Boolean)){ + _local3[_local10] = _local8; + this.properties[_local9] = null; + } else { + if (this.isNewFilter){ + if ((_local10 in fixedProp)){ + _local3[_local10] = _local8; + this.properties[_local9] = null; + continue; + }; + _local3[_local10] = 0; + } else { + if ((((_local10 == "color")) && (this.fColor))){ + this.deltaColor = { + r:(_local7.r - this.startColor.r), + g:(_local7.g - this.startColor.g), + b:(_local7.b - this.startColor.b) + }; + this.properties[_local9] = null; + continue; + }; + }; + this.start[_local10] = _local4[_local10]; + this.delta[_local10] = (_local5[_local10] - this.start[_local10]); + }; + }; + this.fvalue = null; + this.fColor = null; + PropertyFilter.addFilter(_local2, _local4); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local6:String; + var _local3:DisplayObject = DisplayObject(target); + var _local4:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, _local3, true); + if (((this.removeWhenComplete) && (_arg2))){ + _local3.filters = _local3.filters; + return; + }; + if (!_local4){ + _local4 = new this.filterClass(); + }; + var _local5:int; + while (_local5 < this.properties.length) { + _local6 = this.properties[_local5]; + if (_local6){ + _local4[_local6] = (this.start[_local6] + (_arg1 * this.delta[_local6])); + }; + _local5++; + }; + if (this.startColor){ + _local4["color"] = ((((this.startColor.r + (_arg1 * this.deltaColor.r)) << 16) | ((this.startColor.g + (_arg1 * this.deltaColor.g)) << 8)) | (this.startColor.b + (_arg1 * this.deltaColor.b))); + }; + PropertyFilter.addFilter(_local3, _local4); + } + override public function dispose():void{ + this.filterClass = null; + this.start = (this.delta = null); + this.startColor = (this.deltaColor = null); + this.fvalue = null; + this.fColor = null; + this.properties = null; + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyFrame.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyFrame.as new file mode 100644 index 0000000..064a4a0 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyFrame.as @@ -0,0 +1,84 @@ +package aze.motion.specials { + import flash.display.*; + import aze.motion.*; + + public class PropertyFrame extends EazeSpecial { + + private var start:int; + private var delta:int; + private var frameStart; + private var frameEnd; + + public function PropertyFrame(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + var _local6:Array; + var _local7:String; + var _local8:int; + super(_arg1, _arg2, _arg3, _arg4); + var _local5:MovieClip = MovieClip(_arg1); + if ((_arg3 is String)){ + _local7 = _arg3; + if (_local7.indexOf("+") > 0){ + _local6 = _local7.split("+"); + this.frameStart = _local6[0]; + this.frameEnd = _local7; + } else { + if (_local7.indexOf(">") > 0){ + _local6 = _local7.split(">"); + this.frameStart = _local6[0]; + this.frameEnd = _local6[1]; + } else { + this.frameEnd = _local7; + }; + }; + } else { + _local8 = int(_arg3); + if (_local8 <= 0){ + _local8 = (_local8 + _local5.totalFrames); + }; + this.frameEnd = Math.max(1, Math.min(_local5.totalFrames, _local8)); + }; + } + public static function register():void{ + EazeTween.specialProperties.frame = PropertyFrame; + } + + override public function init(_arg1:Boolean):void{ + var _local2:MovieClip = MovieClip(target); + if ((this.frameStart is String)){ + this.frameStart = this.findLabel(_local2, this.frameStart); + } else { + this.frameStart = _local2.currentFrame; + }; + if ((this.frameEnd is String)){ + this.frameEnd = this.findLabel(_local2, this.frameEnd); + }; + if (_arg1){ + this.start = this.frameEnd; + this.delta = (this.frameStart - this.start); + } else { + this.start = this.frameStart; + this.delta = (this.frameEnd - this.start); + }; + _local2.gotoAndStop(this.start); + } + private function findLabel(_arg1:MovieClip, _arg2:String):int{ + var _local3:FrameLabel; + for each (_local3 in _arg1.currentLabels) { + if (_local3.name == _arg2){ + return (_local3.frame); + }; + }; + return (1); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local3:MovieClip = MovieClip(target); + _local3.gotoAndStop(Math.round((this.start + (this.delta * _arg1)))); + } + public function getPreferredDuration():Number{ + var _local1:MovieClip = MovieClip(target); + var _local2:Number = ((_local1.stage) ? _local1.stage.frameRate : 30); + return (Math.abs((Number(this.delta) / _local2))); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyRect.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyRect.as new file mode 100644 index 0000000..1d35319 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyRect.as @@ -0,0 +1,46 @@ +package aze.motion.specials { + import flash.geom.*; + import aze.motion.*; + + public class PropertyRect extends EazeSpecial { + + private var original:Rectangle; + private var targetRect:Rectangle; + private var tmpRect:Rectangle; + + public function PropertyRect(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial):void{ + super(_arg1, _arg2, _arg3, _arg4); + this.targetRect = ((((_arg3) && ((_arg3 is Rectangle)))) ? _arg3.clone() : new Rectangle()); + } + public static function register():void{ + EazeTween.specialProperties["__rect"] = PropertyRect; + } + + override public function init(_arg1:Boolean):void{ + this.original = (((target[property] is Rectangle)) ? (target[property].clone() as Rectangle) : new Rectangle(0, 0, target.width, target.height)); + if (_arg1){ + this.tmpRect = this.original; + this.original = this.targetRect; + this.targetRect = this.tmpRect; + target.scrollRect = this.original; + }; + this.tmpRect = new Rectangle(); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + if (_arg2){ + target.scrollRect = this.targetRect; + } else { + this.tmpRect.x = (this.original.x + ((this.targetRect.x - this.original.x) * _arg1)); + this.tmpRect.y = (this.original.y + ((this.targetRect.y - this.original.y) * _arg1)); + this.tmpRect.width = (this.original.width + ((this.targetRect.width - this.original.width) * _arg1)); + this.tmpRect.height = (this.original.height + ((this.targetRect.height - this.original.height) * _arg1)); + target[property] = this.tmpRect; + }; + } + override public function dispose():void{ + this.original = (this.targetRect = (this.tmpRect = null)); + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyShortRotation.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyShortRotation.as new file mode 100644 index 0000000..990c28a --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyShortRotation.as @@ -0,0 +1,42 @@ +package aze.motion.specials { + import aze.motion.*; + + public class PropertyShortRotation extends EazeSpecial { + + private var fvalue:Number; + private var radius:Number; + private var start:Number; + private var delta:Number; + + public function PropertyShortRotation(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + super(_arg1, _arg2, _arg3, _arg4); + this.fvalue = _arg3[0]; + this.radius = ((_arg3[1]) ? Math.PI : 180); + } + public static function register():void{ + EazeTween.specialProperties["__short"] = PropertyShortRotation; + } + + override public function init(_arg1:Boolean):void{ + var _local2:Number; + this.start = target[property]; + if (_arg1){ + _local2 = this.start; + target[property] = (this.start = this.fvalue); + } else { + _local2 = this.fvalue; + }; + while ((_local2 - this.start) > this.radius) { + this.start = (this.start + (this.radius * 2)); + }; + while ((_local2 - this.start) < -(this.radius)) { + this.start = (this.start - (this.radius * 2)); + }; + this.delta = (_local2 - this.start); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + target[property] = (this.start + (_arg1 * this.delta)); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyTint.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyTint.as new file mode 100644 index 0000000..0f643b7 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyTint.as @@ -0,0 +1,81 @@ +package aze.motion.specials { + import flash.geom.*; + import aze.motion.*; + + public class PropertyTint extends EazeSpecial { + + private var start:ColorTransform; + private var tvalue:ColorTransform; + private var delta:ColorTransform; + + public function PropertyTint(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + var _local5:Number; + var _local6:Number; + var _local7:uint; + var _local8:Array; + super(_arg1, _arg2, _arg3, _arg4); + if (_arg3 === null){ + this.tvalue = new ColorTransform(); + } else { + _local5 = 1; + _local6 = 0; + _local7 = 0; + _local8 = (((_arg3 is Array)) ? _arg3 : [_arg3]); + if (_local8[0] === null){ + _local5 = 0; + _local6 = 1; + } else { + if (_local8.length > 1){ + _local5 = _local8[1]; + }; + if (_local8.length > 2){ + _local6 = _local8[2]; + } else { + _local6 = (1 - _local5); + }; + _local7 = _local8[0]; + }; + this.tvalue = new ColorTransform(); + this.tvalue.redMultiplier = _local6; + this.tvalue.greenMultiplier = _local6; + this.tvalue.blueMultiplier = _local6; + this.tvalue.redOffset = (_local5 * ((_local7 >> 16) & 0xFF)); + this.tvalue.greenOffset = (_local5 * ((_local7 >> 8) & 0xFF)); + this.tvalue.blueOffset = (_local5 * (_local7 & 0xFF)); + }; + } + public static function register():void{ + EazeTween.specialProperties.tint = PropertyTint; + } + + override public function init(_arg1:Boolean):void{ + if (_arg1){ + this.start = this.tvalue; + this.tvalue = target.transform.colorTransform; + } else { + this.start = target.transform.colorTransform; + }; + this.delta = new ColorTransform((this.tvalue.redMultiplier - this.start.redMultiplier), (this.tvalue.greenMultiplier - this.start.greenMultiplier), (this.tvalue.blueMultiplier - this.start.blueMultiplier), 0, (this.tvalue.redOffset - this.start.redOffset), (this.tvalue.greenOffset - this.start.greenOffset), (this.tvalue.blueOffset - this.start.blueOffset)); + this.tvalue = null; + if (_arg1){ + this.update(0, false); + }; + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local3:ColorTransform = target.transform.colorTransform; + _local3.redMultiplier = (this.start.redMultiplier + (this.delta.redMultiplier * _arg1)); + _local3.greenMultiplier = (this.start.greenMultiplier + (this.delta.greenMultiplier * _arg1)); + _local3.blueMultiplier = (this.start.blueMultiplier + (this.delta.blueMultiplier * _arg1)); + _local3.redOffset = (this.start.redOffset + (this.delta.redOffset * _arg1)); + _local3.greenOffset = (this.start.greenOffset + (this.delta.greenOffset * _arg1)); + _local3.blueOffset = (this.start.blueOffset + (this.delta.blueOffset * _arg1)); + target.transform.colorTransform = _local3; + } + override public function dispose():void{ + this.start = (this.delta = null); + this.tvalue = null; + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/aze/motion/specials/PropertyVolume.as b/flash_decompiled/LANDING/aze/motion/specials/PropertyVolume.as new file mode 100644 index 0000000..4117f86 --- /dev/null +++ b/flash_decompiled/LANDING/aze/motion/specials/PropertyVolume.as @@ -0,0 +1,44 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.media.*; + + public class PropertyVolume extends EazeSpecial { + + private var start:Number; + private var delta:Number; + private var vvalue:Number; + private var targetVolume:Boolean; + + public function PropertyVolume(_arg1:Object, _arg2, _arg3, _arg4:EazeSpecial){ + super(_arg1, _arg2, _arg3, _arg4); + this.vvalue = _arg3; + } + public static function register():void{ + EazeTween.specialProperties.volume = PropertyVolume; + } + + override public function init(_arg1:Boolean):void{ + var _local3:Number; + this.targetVolume = ("soundTransform" in target); + var _local2:SoundTransform = ((this.targetVolume) ? target.soundTransform : SoundMixer.soundTransform); + if (_arg1){ + this.start = this.vvalue; + _local3 = _local2.volume; + } else { + _local3 = this.vvalue; + this.start = _local2.volume; + }; + this.delta = (_local3 - this.start); + } + override public function update(_arg1:Number, _arg2:Boolean):void{ + var _local3:SoundTransform = ((this.targetVolume) ? target.soundTransform : SoundMixer.soundTransform); + _local3.volume = (this.start + (this.delta * _arg1)); + if (this.targetVolume){ + target.soundTransform = _local3; + } else { + SoundMixer.soundTransform = _local3; + }; + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/LANDING/imageMap.as b/flash_decompiled/LANDING/imageMap.as new file mode 100644 index 0000000..917d672 --- /dev/null +++ b/flash_decompiled/LANDING/imageMap.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class imageMap extends BitmapData { + + public function imageMap(_arg1:int=1100, _arg2:int=654){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/LANDING/lapin.as b/flash_decompiled/LANDING/lapin.as new file mode 100644 index 0000000..6a3e3be --- /dev/null +++ b/flash_decompiled/LANDING/lapin.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class lapin extends BitmapData { + + public function lapin(_arg1:int=1100, _arg2:int=654){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/LANDING/logoWd.as b/flash_decompiled/LANDING/logoWd.as new file mode 100644 index 0000000..68bcb52 --- /dev/null +++ b/flash_decompiled/LANDING/logoWd.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class logoWd extends BitmapData { + + public function logoWd(_arg1:int=323, _arg2:int=90){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/LANDING/mcBg.as b/flash_decompiled/LANDING/mcBg.as new file mode 100644 index 0000000..7a508a1 --- /dev/null +++ b/flash_decompiled/LANDING/mcBg.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcBg extends MovieClip { + + } +}//package diff --git a/flash_decompiled/LANDING/mcBmp2.as b/flash_decompiled/LANDING/mcBmp2.as new file mode 100644 index 0000000..e1775c8 --- /dev/null +++ b/flash_decompiled/LANDING/mcBmp2.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcBmp2 extends MovieClip { + + } +}//package diff --git a/flash_decompiled/LANDING/stripe.as b/flash_decompiled/LANDING/stripe.as new file mode 100644 index 0000000..6b95e9d --- /dev/null +++ b/flash_decompiled/LANDING/stripe.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class stripe extends BitmapData { + + public function stripe(_arg1:int=50, _arg2:int=40){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/LANDING/wd/landing/BackgroundSphere.as b/flash_decompiled/LANDING/wd/landing/BackgroundSphere.as new file mode 100644 index 0000000..c5e7299 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/BackgroundSphere.as @@ -0,0 +1,20 @@ +package wd.landing { + import flash.display.*; + import flash.geom.*; + + public class BackgroundSphere extends Shape { + + public function BackgroundSphere(){ + var _local1:Number = 220; + var _local2:Matrix = new Matrix(); + var _local3:Array = [10263710, 10263710, 10263710]; + var _local4:Array = [0, 0.15, 0.25]; + var _local5:Array = [191, 250, 0xFF]; + _local2.createGradientBox((2 * _local1), (2 * _local1), 0, -(_local1), -(_local1)); + this.graphics.lineStyle(); + this.graphics.beginGradientFill(GradientType.RADIAL, _local3, _local4, _local5, _local2, SpreadMethod.REFLECT); + this.graphics.drawCircle(0, 0, _local1); + this.graphics.endFill(); + } + } +}//package wd.landing diff --git a/flash_decompiled/LANDING/wd/landing/MainLanding.as b/flash_decompiled/LANDING/wd/landing/MainLanding.as new file mode 100644 index 0000000..ad6939f --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/MainLanding.as @@ -0,0 +1,205 @@ +package wd.landing { + import flash.events.*; + import wd.landing.loading.*; + import wd.landing.effect.*; + import flash.display.*; + import wd.landing.sound.*; + import flash.utils.*; + import wd.landing.tag.*; + import wd.landing.text.*; + import flash.external.*; + + public class MainLanding extends Sprite { + + public static const SPEED_Y:Number = 0.3; + public static const RADIUS:Number = 220; + public static const WIDTH:Number = 800; + public static const HEIGHT:Number = 600; + + public static var CITY:String; + public static var LOCALE:String; + public static var LONG:String; + public static var LAT:String; + public static var PLACE:String; + public static var LAYER:String; + + private var _bgBlack:mcBg; + private var _bgCircle:BackgroundSphere; + private var _sphere:Sphere; + private var _stars:Stars; + private var _titleLanding:TitleLanding; + private var _key:String = ""; + private var ROOT_URL:String; + private var FONTS_FILE:String; + private var CSS_FILE:String; + private var XML_FILE:String; + + public function MainLanding():void{ + if (stage){ + this.init(); + } else { + addEventListener(Event.ADDED_TO_STAGE, this.init); + }; + } + private function init(_arg1:Event=null):void{ + stage.scaleMode = StageScaleMode.NO_SCALE; + stage.align = StageAlign.TOP_LEFT; + removeEventListener(Event.ADDED_TO_STAGE, this.init); + var _local2:Object = {}; + _local2 = stage.loaderInfo.parameters; + CITY = _local2.city; + LOCALE = _local2.locale; + LONG = _local2.place_lon; + LAT = _local2.place_lat; + PLACE = _local2.place_name; + if (!LOCALE){ + LOCALE = "fr-FR"; + }; + this.loadAssets(); + } + private function loadAssets():void{ + this.createBg(); + this.createSphere(); + this.createStars(); + this.loadXmlConfing(); + this.startListen(); + stage.addEventListener(Event.RESIZE, this.resizeStageHandler); + this.resizeStageHandler(null); + var _local1:Timer = new Timer(3000, 0); + _local1.addEventListener(TimerEvent.TIMER, this.setEffect); + _local1.start(); + } + private function begin():void{ + this.initSound(); + this.createButtons(); + this.createTitle(); + this.resizeStageHandler(null); + if (ExternalInterface.available){ + ExternalInterface.call("__landing.show"); + }; + } + private function initSound():void{ + LandingSoundManager.getInstance(); + } + private function loadXmlConfing():void{ + XmlLoading2.getInstance().addEventListener(XmlLoading.XML_IS_READY, this.onXmlConfigLoaded); + XmlLoading2.getInstance().startToLoad("assets/xml/config.xml"); + } + private function onXmlConfigLoaded(_arg1:Event):void{ + var e:* = _arg1; + XmlLoading2.getInstance().removeEventListener(XmlLoading.XML_IS_READY, this.onXmlLoaded); + this.ROOT_URL = XMLList(XmlLoading2.getInstance().getXml()).rootUrl.@url; + this.FONTS_FILE = XMLList(XmlLoading2.getInstance().getXml()).languages.lang.(@locale == LOCALE).@fonts; + this.CSS_FILE = ("assets/css/" + XMLList(XmlLoading2.getInstance().getXml()).languages.lang.(@locale == LOCALE).@css); + this.XML_FILE = (("assets/xml/" + LOCALE) + "/landing.xml"); + if (this.FONTS_FILE != "system"){ + Tdf_landing.embedFonts = true; + this.FONTS_FILE = ("assets/fonts/" + this.FONTS_FILE); + } else { + Tdf_landing.embedFonts = false; + }; + this.loadXmlContent(); + } + private function loadXmlContent():void{ + XmlLoading.getInstance().addEventListener(XmlLoading.XML_IS_READY, this.onXmlLoaded); + XmlLoading.getInstance().startToLoad(this.XML_FILE); + } + private function onXmlLoaded(_arg1:Event):void{ + SendTag.tagPageView(XMLList(XmlLoading.getInstance().getXml()).content.tag); + XmlLoading.getInstance().removeEventListener(XmlLoading.XML_IS_READY, this.onXmlLoaded); + if (Tdf_landing.embedFonts){ + this.loadFont(); + } else { + this.loadCss(); + }; + } + private function loadFont():void{ + FontLoading.getInstance().addEventListener(FontLoading.FONT_ARE_READY, this.onFontLoaded); + FontLoading.getInstance().loadFont(this.FONTS_FILE); + } + private function onFontLoaded(_arg1:Event):void{ + FontLoading.getInstance().removeEventListener(FontLoading.FONT_ARE_READY, this.onFontLoaded); + this.loadCss(); + } + private function loadCss():void{ + CssLoading.getInstance().addEventListener(CssLoading.CSS_IS_READY, this.onCssLoaded); + CssLoading.getInstance().startToLoad(this.CSS_FILE); + } + private function onCssLoaded(_arg1:Event):void{ + this.begin(); + FontLoading.getInstance().removeEventListener(CssLoading.CSS_IS_READY, this.onCssLoaded); + } + private function resizeStageHandler(_arg1:Event):void{ + if (this._bgBlack){ + this._bgBlack.width = stage.stageWidth; + this._bgBlack.height = stage.stageHeight; + }; + if (this._bgCircle){ + this._bgCircle.x = (stage.stageWidth >> 1); + this._bgCircle.y = (stage.stageHeight >> 1); + }; + if (this._sphere){ + this._sphere.x = (stage.stageWidth >> 1); + this._sphere.y = (stage.stageHeight >> 1); + }; + if (this._stars){ + this._stars.x = (stage.stageWidth >> 1); + this._stars.y = (stage.stageHeight >> 1); + }; + if (this._titleLanding){ + this._titleLanding.x = (stage.stageWidth >> 1); + this._titleLanding.y = ((stage.stageHeight - this._titleLanding.height) >> 1); + }; + } + private function createSphere():void{ + this._sphere = new Sphere(new imageMap()); + addChild(this._sphere); + } + private function createStars():void{ + this._stars = new Stars(); + addChild(this._stars); + } + private function createBg():void{ + this._bgCircle = new BackgroundSphere(); + addChild(this._bgCircle); + } + private function createTitle():void{ + this._titleLanding = new TitleLanding(XMLList(XmlLoading.getInstance().getXml()).content.info); + addChild(this._titleLanding); + DistortImg_sglT.instance.startEffect(this._titleLanding, 15); + } + private function createButtons():void{ + this._stars.createButton(XMLList(XmlLoading.getInstance().getXml()).content.buttons, this.ROOT_URL); + } + private function setEffect(_arg1:TimerEvent):void{ + var _local2:int = (Math.random() * 4); + switch (_local2){ + case 1: + DistortImg_sglT.instance.startEffect(this._sphere, 15); + break; + case 2: + DistortImg_sglT.instance.startEffect(this._stars, 15); + break; + case 3: + break; + }; + } + private function startListen():void{ + stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyPressedDown); + } + private function keyPressedDown(_arg1:KeyboardEvent):void{ + var _local2:uint = _arg1.keyCode; + this._key = (this._key + String(_local2)); + if (this._key.search("38384040373937396665") >= 0){ + this._titleLanding.visible = false; + this._key = ""; + this._sphere.stopEnterFrame(); + removeChild(this._sphere); + this._sphere = new Sphere(new lapin()); + addChild(this._sphere); + this.resizeStageHandler(null); + }; + } + + } +}//package wd.landing diff --git a/flash_decompiled/LANDING/wd/landing/Sphere.as b/flash_decompiled/LANDING/wd/landing/Sphere.as new file mode 100644 index 0000000..def13b1 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/Sphere.as @@ -0,0 +1,113 @@ +package wd.landing { + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.utils.*; + import __AS3__.vec.*; + + public class Sphere extends Sprite { + + private var translation3D:Vector3D; + private var rotation3D:Vector3D; + private var scale3D:Vector3D; + private var transform3D:Matrix3D; + private var vertices:Vector.; + private var tmp:Vector.; + private var uvts:Vector.; + private var projections:Vector.; + private var tabType:Array; + + public function Sphere(_arg1:BitmapData):void{ + var _local8:Number; + var _local9:Number; + var _local10:Number; + var _local11:Number; + var _local12:Number; + var _local13:Object; + var _local15:int; + this.translation3D = new Vector3D(0, 0, 0); + this.rotation3D = new Vector3D(185, 0, 10); + this.scale3D = new Vector3D(1, 1, 1); + this.transform3D = new Matrix3D(); + this.tabType = []; + super(); + var _local2:Number = MainLanding.RADIUS; + var _local3:PerspectiveProjection = new PerspectiveProjection(); + _local3.projectionCenter = new Point(0, 0); + transform.perspectiveProjection = _local3; + this.vertices = new Vector.(); + this.tmp = new Vector.(); + this.projections = new Vector.(); + this.uvts = new Vector.(); + var _local4 = 4; + var _local5:int = (36 * _local4); + var _local6:int = (18 * _local4); + var _local7:BitmapData = _arg1; + var _local14:int; + while (_local14 < _local5) { + _local8 = ((_local7.width / _local5) * _local14); + _local15 = 0; + while (_local15 < _local6) { + _local9 = ((_local7.height / _local6) * _local15); + _local10 = _local7.getPixel(_local8, _local9); + switch (_local10){ + case 0x5E5E5E: + _local11 = 0.2; + _local12 = 12058103; + break; + case 0xFFFFFF: + _local11 = 1; + _local12 = 14876151; + break; + }; + if (_local10 > 0){ + _local13 = { + size:_local11, + color:_local12 + }; + this.spherify((((_local14 / _local5) * Math.PI) * 2), ((_local15 / _local6) * Math.PI), _local2, _local13); + }; + _local15++; + }; + _local14++; + }; + this.scale3D.x = (this.scale3D.y = (this.scale3D.z = 1)); + this.translation3D.x = 0; + this.translation3D.y = 0; + this.translation3D.z = 0; + addEventListener(Event.ENTER_FRAME, this.oef); + } + public function stopEnterFrame():void{ + removeEventListener(Event.ENTER_FRAME, this.oef); + } + private function spherify(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Object):void{ + this.vertices.push(((Math.cos(_arg1) * Math.sin(_arg2)) * _arg3)); + this.vertices.push((Math.cos(_arg2) * _arg3)); + this.vertices.push(((Math.sin(_arg1) * Math.sin(_arg2)) * _arg3)); + this.tabType.push(_arg4); + } + private function oef(_arg1:Event):void{ + var _local2:Number = Math.sin((getTimer() * 0.001)); + this.rotation3D.y = (this.rotation3D.y - MainLanding.SPEED_Y); + this.transform3D.identity(); + this.transform3D.appendScale(this.scale3D.x, this.scale3D.y, this.scale3D.z); + this.transform3D.appendRotation(this.rotation3D.x, Vector3D.X_AXIS); + this.transform3D.appendRotation(this.rotation3D.y, Vector3D.Y_AXIS); + this.transform3D.appendRotation(this.rotation3D.z, Vector3D.Z_AXIS); + this.transform3D.appendTranslation(this.translation3D.x, this.translation3D.y, this.translation3D.z); + this.transform3D.transformVectors(this.vertices, this.tmp); + this.transform3D.identity(); + Utils3D.projectVectors(this.transform3D, this.tmp, this.projections, this.uvts); + graphics.clear(); + var _local3:int; + while (_local3 < this.projections.length) { + if (this.tmp[(((_local3 / 2) * 3) + 2)] > 0){ + graphics.lineStyle(1, this.tabType[(_local3 >> 1)].color, (0.4 + (Math.random() * 0.6))); + graphics.drawCircle(this.projections[_local3], this.projections[(_local3 + 1)], this.tabType[(_local3 >> 1)].size); + }; + _local3 = (_local3 + 2); + }; + } + + } +}//package wd.landing diff --git a/flash_decompiled/LANDING/wd/landing/Stars.as b/flash_decompiled/LANDING/wd/landing/Stars.as new file mode 100644 index 0000000..3a034af --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/Stars.as @@ -0,0 +1,187 @@ +package wd.landing { + import flash.events.*; + import flash.display.*; + import wd.landing.star.*; + import flash.geom.*; + import flash.utils.*; + import __AS3__.vec.*; + + public class Stars extends Sprite { + + public static const ROUND:String = "round"; + public static const SQUARRE:String = "squarre"; + public static const TOTAL_STARS:int = 18; + + private var translation3D:Vector3D; + private var rotation3D:Vector3D; + private var scale3D:Vector3D; + private var transform3D:Matrix3D; + private var tabStar:Vector.; + private var aStar:StarItem; + private var tmp_vector3d:Vector3D; + private var star1:StarItem; + private var star2:StarItem; + private var i:Number; + private var j:Number; + private var StarsContainer:Sprite; + private var canvasDistanceMax:Number; + private var _timeDistort:Timer; + private var radius:Number; + private var tabBt:Array; + + public function Stars(){ + var _local3:StarItem; + this.translation3D = new Vector3D(0, 0, 0); + this.rotation3D = new Vector3D(185, 0, 10); + this.scale3D = new Vector3D(1, 1, 1); + this.transform3D = new Matrix3D(); + this.tabBt = []; + super(); + this.radius = MainLanding.RADIUS; + this.canvasDistanceMax = this._distance(MainLanding.WIDTH, MainLanding.HEIGHT); + this.StarsContainer = new Sprite(); + addChild(this.StarsContainer); + var _local1:PerspectiveProjection = new PerspectiveProjection(); + _local1.projectionCenter = new Point(0, 0); + transform.perspectiveProjection = _local1; + this.tabStar = new Vector.(); + this.i = 0; + while (this.i < TOTAL_STARS) { + _local3 = new StarItem(); + this.spherify(((Math.random() * Math.PI) * 2), ((Math.PI / 4) + (Math.random() * ((2 * Math.PI) / 4))), ((this.radius * 1.2) + (Math.random() * this.radius)), _local3); + this.tabStar.push(_local3); + this.StarsContainer.addChild(_local3); + this.i++; + }; + this.scale3D.x = (this.scale3D.y = (this.scale3D.z = 1)); + this.translation3D.x = 0; + this.translation3D.y = 0; + this.translation3D.z = 0; + addEventListener(Event.ENTER_FRAME, this.oef); + var _local2:Timer = new Timer(2000, 0); + _local2.addEventListener(TimerEvent.TIMER, this.startDistortEffect); + _local2.start(); + } + private function resetEffect(_arg1:TimerEvent):void{ + this.i = 0; + while (this.i < this.tabStar.length) { + StarItem(this.tabStar[this.i]).resetDistort(); + this.i++; + }; + } + private function startDistortEffect(_arg1:TimerEvent):void{ + this._timeDistort = new Timer(100, 10); + this._timeDistort.addEventListener(TimerEvent.TIMER, this.distortEffect); + this._timeDistort.addEventListener(TimerEvent.TIMER_COMPLETE, this.resetEffect); + this._timeDistort.start(); + } + private function distortEffect(_arg1:TimerEvent):void{ + this.i = 0; + while (this.i < this.tabStar.length) { + if ((-1 + (Math.random() * 2)) > 0){ + StarItem(this.tabStar[this.i]).distortIt(); + }; + this.i++; + }; + } + private function spherify(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:StarItem):void{ + _arg4.vector3d = new Vector3D(((Math.cos(_arg1) * Math.sin(_arg2)) * _arg3), (Math.cos(_arg2) * _arg3), ((Math.sin(_arg1) * Math.sin(_arg2)) * _arg3)); + } + private function oef(_arg1:Event):void{ + var _local2:Number; + var _local3:Number; + this.rotation3D.y = (this.rotation3D.y - (MainLanding.SPEED_Y * 0.5)); + this.transform3D.identity(); + this.transform3D.appendScale(this.scale3D.x, this.scale3D.y, this.scale3D.z); + this.transform3D.appendRotation(this.rotation3D.x, Vector3D.X_AXIS); + this.transform3D.appendRotation(this.rotation3D.y, Vector3D.Y_AXIS); + this.transform3D.appendRotation(this.rotation3D.z, Vector3D.Z_AXIS); + this.transform3D.appendTranslation(this.translation3D.x, this.translation3D.y, this.translation3D.z); + this.i = 0; + while (this.i < this.tabStar.length) { + this.aStar = StarItem(this.tabStar[this.i]); + this.tmp_vector3d = this.transform3D.transformVector(this.aStar.vector3d); + if (((this.aStar.isOver) && ((this.aStar.typeStar == StarItem.BUTTON_STAR)))){ + StarButton(this.aStar).ptPosition.x = this.tmp_vector3d.x; + StarButton(this.aStar).ptPosition.y = this.tmp_vector3d.y; + } else { + this.aStar.x = this.tmp_vector3d.x; + this.aStar.y = this.tmp_vector3d.y; + this.aStar.radiusRatio = this._getRadiusRatio(this.aStar.x, this.aStar.y); + }; + this.i++; + }; + graphics.clear(); + this.i = 0; + while (this.i < this.tabStar.length) { + this.star1 = this.tabStar[this.i]; + if (this.star1.radiusRatio < 1){ + this.j = 0; + while (this.j < this.tabStar.length) { + this.star2 = this.tabStar[this.j]; + if ((((this.star2.radiusRatio < 1)) && (!((this.i == this.j))))){ + _local2 = Math.pow((1 - (this._distance((this.star1.x - this.star2.x), (this.star1.y - this.star2.y)) / this.canvasDistanceMax)), 8); + if (_local2 > 0.1){ + _local3 = ((-(Math.random()) * 0.3) + (_local2 * 0.8)); + graphics.lineStyle(0.5, 52475, _local3); + graphics.moveTo(this.star1.x, this.star1.y); + graphics.lineTo((this.star2.x + this.star2.realSize), (this.star2.y + this.star2.realSize)); + _local3 = ((-(Math.random()) * 0.2) + (_local2 * 0.5)); + graphics.lineStyle(0.5, 0xFF3600, _local3); + graphics.moveTo((this.star1.x + this.star1.realSize), (this.star1.y + this.star1.realSize)); + graphics.lineTo(this.star2.x, this.star2.y); + }; + }; + this.j++; + }; + }; + this.i++; + }; + } + private function _distance(_arg1:Number, _arg2:Number):Number{ + return (Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2)))); + } + private function _getRadiusRatio(_arg1:Number, _arg2:Number):Number{ + var _local3:Number = Math.atan2(_arg1, _arg2); + var _local4:Number = this._distance(_arg1, _arg2); + var _local5:Number = Math.atan((MainLanding.WIDTH / MainLanding.HEIGHT)); + if ((((Math.abs(_local3) < _local5)) || ((Math.abs(_local3) > (Math.PI - _local5))))){ + return (Math.abs(((_local4 / (MainLanding.HEIGHT >> 1)) * Math.cos(_local3)))); + }; + return (Math.abs(((_local4 / (MainLanding.WIDTH >> 1)) * Math.sin(_local3)))); + } + public function createButton(_arg1:XMLList, _arg2:String):void{ + var _local4:StarButton; + var _local3:int; + while (_local3 < _arg1.button.length()) { + _local4 = new StarButton(_arg1.button[_local3].name, (_arg2 + _arg1.button[_local3].@url), _arg1.@target, _arg1.button[_local3].tag); + _local4.addEventListener(StarButton.ON_OVER, this.onOverCity); + _local4.addEventListener(StarButton.ON_OUT, this.onOutCity); + this.spherify(_arg1.button[_local3].@x, _arg1.button[_local3].@y, ((this.radius * 1) + Number(_arg1.button[_local3].@z)), StarItem(_local4)); + this.tabStar.push(_local4); + this.tabBt.push(_local4); + this.StarsContainer.addChild(_local4); + _local3++; + }; + } + private function onOutCity(_arg1:Event):void{ + var _local2:int; + while (_local2 < this.tabBt.length) { + StarButton(this.tabBt[_local2]).setNormal(); + _local2++; + }; + } + private function onOverCity(_arg1:Event):void{ + var _local2:int; + while (_local2 < this.tabBt.length) { + if (StarButton(this.tabBt[_local2]) != StarButton(_arg1.currentTarget)){ + StarButton(this.tabBt[_local2]).setOut(); + } else { + StarButton(this.tabBt[_local2]).setOver(); + }; + _local2++; + }; + } + + } +}//package wd.landing diff --git a/flash_decompiled/LANDING/wd/landing/TitleLanding.as b/flash_decompiled/LANDING/wd/landing/TitleLanding.as new file mode 100644 index 0000000..30755ed --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/TitleLanding.as @@ -0,0 +1,43 @@ +package wd.landing { + import flash.display.*; + import wd.landing.text.*; + + public class TitleLanding extends Sprite { + + public function TitleLanding(_arg1:XMLList):void{ + var _local2:Bitmap = new Bitmap(new logoWd(), "auto", true); + addChild(_local2); + _local2.x = (-(_local2.width) >> 1); + var _local3:Tdf_landing = new Tdf_landing(String(_arg1.txt[0]).toUpperCase(), "LandingInfoText"); + _local3.multiline = false; + _local3.wordWrap = false; + addChild(_local3); + _local3.x = (-(_local3.width) >> 1); + _local3.y = int((15 + _local2.height)); + var _local4:Shape = new Shape(); + _local4.graphics.beginFill(0, 1); + _local4.graphics.drawRect((_local3.x - 3), _local3.y, (_local3.width + 10), _local3.height); + addChildAt(_local4, 0); + var _local5:Tdf_landing = new Tdf_landing(String(_arg1.txt[1]).toUpperCase(), "LandingInfoText"); + _local5.multiline = true; + _local5.wordWrap = false; + addChild(_local5); + _local5.x = (-(_local5.width) >> 1); + _local5.y = int(((0 + _local3.y) + _local3.height)); + var _local6:Shape = new Shape(); + _local6.graphics.beginFill(0, 1); + _local6.graphics.drawRect((_local5.x - 3), _local5.y, (_local5.width + 10), _local5.height); + addChildAt(_local6, 0); + var _local7:Tdf_landing = new Tdf_landing(String(_arg1.txt[2]).toUpperCase(), "LandingSelectText"); + _local7.multiline = false; + _local7.wordWrap = false; + addChild(_local7); + _local7.x = int(((_local2.x + _local2.width) - _local7.width)); + _local7.y = int(((15 + _local5.y) + _local5.height)); + var _local8:Shape = new Shape(); + _local8.graphics.beginFill(3328244, 1); + _local8.graphics.drawRect((_local7.x - 3), _local7.y, (_local7.width + 10), _local7.height); + addChildAt(_local8, 0); + } + } +}//package wd.landing diff --git a/flash_decompiled/LANDING/wd/landing/effect/CopyToBmp.as b/flash_decompiled/LANDING/wd/landing/effect/CopyToBmp.as new file mode 100644 index 0000000..97838a0 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/effect/CopyToBmp.as @@ -0,0 +1,30 @@ +package wd.landing.effect { + import flash.display.*; + import flash.geom.*; + + public class CopyToBmp { + + public static function mcToBmp(_arg1:DisplayObject, _arg2:Number=NaN, _arg3:Number=NaN):Bitmap{ + if (!_arg2){ + _arg2 = _arg1.width; + }; + if (!_arg3){ + _arg3 = _arg1.height; + }; + var _local4:BitmapData = new BitmapData(_arg2, _arg3, true, 0); + _local4.draw(_arg1, null, null, null, null, true); + var _local5:Bitmap = new Bitmap(_local4, "auto", true); + _local5.smoothing = true; + return (_local5); + } + public static function partOfmcToBmp(_arg1:DisplayObject, _arg2:Rectangle):Bitmap{ + var _local3:Sprite = new Sprite(); + var _local4:Bitmap = mcToBmp(_arg1); + _local4.x = -(_arg2.x); + _local4.y = -(_arg2.y); + _local3.addChild(_local4); + return (mcToBmp(_local3, _arg2.width, _arg2.height)); + } + + } +}//package wd.landing.effect diff --git a/flash_decompiled/LANDING/wd/landing/effect/DistortImg_sglT.as b/flash_decompiled/LANDING/wd/landing/effect/DistortImg_sglT.as new file mode 100644 index 0000000..708cccf --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/effect/DistortImg_sglT.as @@ -0,0 +1,182 @@ +package wd.landing.effect { + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.filters.*; + import flash.utils.*; + + public class DistortImg_sglT extends EventDispatcher { + + public static const LOW:int = 0; + public static const MED:int = 1; + public static const HIGH:int = 2; + public static const NORMAL:int = 3; + public static const RGB:int = 4; + + private static var _instance:DistortImg_sglT; + + private var _timerEffect:Timer; + private var mcMapFilter:mcBmp2; + private var _dmFilter:DisplacementMapFilter; + private var _mcItemToDistort:DisplayObjectContainer; + private var staticTimes:int = 50; + private var XfuzzMin:int = 0; + private var XfuzzMax:int = 0; + private var YfuzzMin:int = 0; + private var YfuzzMax:int = 0; + private var MaxPoint:int = 0; + private var MinPoint:int = 0; + private var level:int = 0; + private var _distortRGB:Boolean = false; + private var nextLevel:int; + private var incrNormal:int = 0; + + public function DistortImg_sglT(_arg1:SingletonEnforcer){ + if (!_arg1){ + throw (new Error("AssetsManager is a singleton, use static instance.")); + }; + this.init(); + } + public static function get instance():DistortImg_sglT{ + if (!_instance){ + _instance = new DistortImg_sglT(new SingletonEnforcer()); + }; + return (_instance); + } + + private function init():void{ + this.mcMapFilter = new mcBmp2(); + this._dmFilter = getDisplacementMap.getInstance().GetDisplacementMap(CopyToBmp.mcToBmp(this.mcMapFilter, this.mcMapFilter.width, this.mcMapFilter.height).bitmapData); + this._timerEffect = new Timer(1000, 0); + this._timerEffect.addEventListener(TimerEvent.TIMER, this.displayStatic); + this._timerEffect.addEventListener(TimerEvent.TIMER_COMPLETE, this.onComplete); + } + private function onComplete(_arg1:TimerEvent):void{ + this.level = NORMAL; + this.displayStatic(); + } + public function startEffect(_arg1:DisplayObjectContainer, _arg2:Number=0):void{ + this._mcItemToDistort = _arg1; + this.incrNormal = 0; + this.level = LOW; + this.setStaticLow(); + this.staticTimes = 60; + this._timerEffect.reset(); + this._timerEffect.repeatCount = _arg2; + this._timerEffect.start(); + } + public function stopEffect():void{ + this._timerEffect.stop(); + } + private function displayStatic(_arg1:TimerEvent=null):void{ + this.staticTimes--; + if (this.level != NORMAL){ + this._dmFilter.scaleX = getDisplacementMap.getInstance().randRange(this.XfuzzMin, this.XfuzzMax); + this._dmFilter.scaleY = getDisplacementMap.getInstance().randRange(this.YfuzzMin, this.YfuzzMax); + this._dmFilter.mapPoint = new Point(getDisplacementMap.getInstance().randRange(this.MinPoint, this.MaxPoint), getDisplacementMap.getInstance().randRange(this.MinPoint, this.MaxPoint)); + this._mcItemToDistort.filters = new Array(this._dmFilter); + } else { + this._mcItemToDistort.filters = null; + }; + if (this.staticTimes <= 0){ + this.level = (Math.random() * 4); + if (this.level != NORMAL){ + this.incrNormal++; + if (this.incrNormal > 4){ + this.level = NORMAL; + this.incrNormal = 0; + }; + }; + if (this.level == NORMAL){ + this.incrNormal = 0; + }; + switch (this.level){ + case LOW: + this.setStaticLow(); + break; + case MED: + this.setStaticMedium(); + break; + case HIGH: + this.setStaticHigh(); + break; + case NORMAL: + this.setStaticNormal(); + break; + default: + this.setStaticHigh(); + }; + }; + } + private function showLevel():void{ + switch (this.level){ + case HIGH: + trace("HIGH -->"); + break; + case MED: + trace("MED"); + break; + case LOW: + trace("LOW"); + break; + case RGB: + trace("RGB <--"); + break; + case NORMAL: + trace("--NORMAL--"); + break; + }; + } + private function setStaticMedium():void{ + this.level = MED; + this.XfuzzMin = -100; + this.XfuzzMax = 5; + this.YfuzzMin = -10; + this.YfuzzMax = 5; + this.MinPoint = 0; + this.MaxPoint = 500; + this.staticTimes = (10 + (Math.random() * 15)); + this._timerEffect.delay = 50; + } + private function setStaticHigh():void{ + this.level = HIGH; + this.XfuzzMin = -200; + this.XfuzzMax = 700; + this.YfuzzMin = -10; + this.YfuzzMax = 10; + this.MinPoint = 0; + this.MaxPoint = 500; + this.staticTimes = (Math.random() * 10); + this._timerEffect.delay = 50; + } + private function setStaticLow():void{ + this.level = LOW; + this.XfuzzMin = -300; + this.XfuzzMax = 700; + this.YfuzzMin = -20; + this.YfuzzMax = 20; + this.MinPoint = -200; + this.MaxPoint = 300; + this.staticTimes = (5 + (Math.random() * 15)); + this._timerEffect.delay = 20; + } + private function setStaticNormal():void{ + this.level = NORMAL; + this.XfuzzMin = 0; + this.XfuzzMax = 0; + this.YfuzzMin = 0; + this.YfuzzMax = 0; + this.MinPoint = 0; + this.MaxPoint = 0; + this.staticTimes = (50 + (Math.random() * 30)); + this._timerEffect.delay = 100; + } + + } +}//package wd.landing.effect + +class SingletonEnforcer { + + public function SingletonEnforcer(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/effect/getDisplacementMap.as b/flash_decompiled/LANDING/wd/landing/effect/getDisplacementMap.as new file mode 100644 index 0000000..593050b --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/effect/getDisplacementMap.as @@ -0,0 +1,67 @@ +package wd.landing.effect { + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.filters.*; + + public class getDisplacementMap extends EventDispatcher { + + private static var _oI:getDisplacementMap; + + private var _bmd:BitmapData; + private var _point:Point; + private var _r:BitmapData; + private var _g:BitmapData; + private var _b:BitmapData; + + public function getDisplacementMap(_arg1:PrivateConstructorAccess){ + this._point = new Point(); + super(); + } + public static function getInstance():getDisplacementMap{ + if (!_oI){ + _oI = new getDisplacementMap(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function GetDisplacementMap(_arg1:BitmapData):DisplacementMapFilter{ + var _local2:BitmapData = _arg1; + var _local3:Point = new Point(0, 0); + var _local4:uint = BitmapDataChannel.RED; + var _local5:uint = _local4; + var _local6:uint = _local4; + var _local7:Number = 5; + var _local8:Number = 1; + var _local9:String = DisplacementMapFilterMode.COLOR; + var _local10:uint; + var _local11:Number = 0; + return (new DisplacementMapFilter(_local2, _local3, _local5, _local6, _local7, _local8, _local9, _local10, _local11)); + } + public function randRange(_arg1:int, _arg2:int):int{ + var _local3:int = (Math.floor((Math.random() * ((_arg2 - _arg1) + 1))) + _arg1); + return (_local3); + } + public function createRGB(_arg1:DisplayObject):Array{ + this._bmd = new BitmapData(_arg1.width, _arg1.height, true, 0); + this._bmd.draw(_arg1); + this._r = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._g = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._b = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._r.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.RED, BitmapDataChannel.RED); + this._r.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + this._g.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.GREEN, BitmapDataChannel.GREEN); + this._g.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + this._b.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.BLUE, BitmapDataChannel.BLUE); + this._b.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + return ([this._r, this._g, this._b]); + } + + } +}//package wd.landing.effect + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/loading/CssLoading.as b/flash_decompiled/LANDING/wd/landing/loading/CssLoading.as new file mode 100644 index 0000000..460f03b --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/loading/CssLoading.as @@ -0,0 +1,44 @@ +package wd.landing.loading { + import flash.events.*; + import flash.net.*; + import flash.text.*; + + public class CssLoading extends EventDispatcher { + + private static var _oI:CssLoading; + public static var CSS_IS_READY:String = "css is ready to use"; + public static var STYLESHEET:StyleSheet; + + public var isComplete:Boolean = false; + private var loader:URLLoader; + + public function CssLoading(_arg1:PrivateConstructorAccess):void{ + } + public static function getInstance():CssLoading{ + if (!_oI){ + _oI = new CssLoading(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function startToLoad(_arg1:String):void{ + this.loader = new URLLoader(); + this.loader.addEventListener(Event.COMPLETE, this.loaderCompleteHandler); + var _local2:URLRequest = new URLRequest(_arg1); + this.loader.load(_local2); + } + private function loaderCompleteHandler(_arg1:Event):void{ + this.isComplete = true; + STYLESHEET = new StyleSheet(); + STYLESHEET.parseCSS(this.loader.data); + dispatchEvent(new Event(CSS_IS_READY)); + } + + } +}//package wd.landing.loading + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/loading/FontLoading.as b/flash_decompiled/LANDING/wd/landing/loading/FontLoading.as new file mode 100644 index 0000000..2d133c3 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/loading/FontLoading.as @@ -0,0 +1,45 @@ +package wd.landing.loading { + import flash.events.*; + import flash.display.*; + import flash.net.*; + + public class FontLoading extends EventDispatcher { + + private static var _oI:FontLoading; + public static var FONT_ARE_READY:String = "Font are ready to use"; + + public function FontLoading(_arg1:PrivateConstructorAccess):void{ + } + public static function getInstance():FontLoading{ + if (!_oI){ + _oI = new FontLoading(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function loadFont(_arg1:String):void{ + var _local2:URLLoader = new URLLoader(); + _local2.dataFormat = "binary"; + _local2.addEventListener(IOErrorEvent.IO_ERROR, this.ioError); + _local2.addEventListener(Event.COMPLETE, this.fontsLoadCompleteHandler); + _local2.load(new URLRequest(_arg1)); + } + private function fontsLoadCompleteHandler(_arg1:Event):void{ + var _local2:Loader = new Loader(); + _local2.loadBytes(_arg1.target.data); + _local2.contentLoaderInfo.addEventListener(Event.INIT, this.fontsInit); + } + private function fontsInit(_arg1:Event):void{ + dispatchEvent(new Event(FONT_ARE_READY)); + } + private function ioError(_arg1:IOErrorEvent):void{ + } + + } +}//package wd.landing.loading + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/loading/XmlLoading.as b/flash_decompiled/LANDING/wd/landing/loading/XmlLoading.as new file mode 100644 index 0000000..779bd30 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/loading/XmlLoading.as @@ -0,0 +1,44 @@ +package wd.landing.loading { + import flash.events.*; + import flash.net.*; + + public class XmlLoading extends EventDispatcher { + + private static var _oI:XmlLoading; + public static var XML_IS_READY:String = "xml is ready to use"; + + private var _xml:XML; + public var isComplete:Boolean = false; + + public function XmlLoading(_arg1:PrivateConstructorAccess):void{ + } + public static function getInstance():XmlLoading{ + if (!_oI){ + _oI = new XmlLoading(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function startToLoad(_arg1:String):void{ + var _local2:URLLoader = new URLLoader(); + var _local3:URLRequest = new URLRequest(_arg1); + _local2.addEventListener(Event.COMPLETE, this.chargementComplet); + _local2.load(_local3); + } + private function chargementComplet(_arg1:Event):void{ + this.isComplete = true; + this._xml = new XML(_arg1.target.data); + dispatchEvent(new Event(XML_IS_READY)); + } + public function getXml():XML{ + return (this._xml); + } + + } +}//package wd.landing.loading + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/loading/XmlLoading2.as b/flash_decompiled/LANDING/wd/landing/loading/XmlLoading2.as new file mode 100644 index 0000000..b5b05e9 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/loading/XmlLoading2.as @@ -0,0 +1,44 @@ +package wd.landing.loading { + import flash.events.*; + import flash.net.*; + + public class XmlLoading2 extends EventDispatcher { + + private static var _oI:XmlLoading2; + public static var XML_IS_READY:String = "xml is ready to use"; + + private var _xml:XML; + public var isComplete:Boolean = false; + + public function XmlLoading2(_arg1:PrivateConstructorAccess):void{ + } + public static function getInstance():XmlLoading2{ + if (!_oI){ + _oI = new XmlLoading2(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function startToLoad(_arg1:String):void{ + var _local2:URLLoader = new URLLoader(); + var _local3:URLRequest = new URLRequest(_arg1); + _local2.addEventListener(Event.COMPLETE, this.chargementComplet); + _local2.load(_local3); + } + private function chargementComplet(_arg1:Event):void{ + this.isComplete = true; + this._xml = new XML(_arg1.target.data); + dispatchEvent(new Event(XML_IS_READY)); + } + public function getXml():XML{ + return (this._xml); + } + + } +}//package wd.landing.loading + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/sound/LandingSoundManager.as b/flash_decompiled/LANDING/wd/landing/sound/LandingSoundManager.as new file mode 100644 index 0000000..44d3534 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/sound/LandingSoundManager.as @@ -0,0 +1,46 @@ +package wd.landing.sound { + import flash.events.*; + + public class LandingSoundManager extends EventDispatcher { + + private static var _oI:LandingSoundManager; + + private var _sound_out:soundAmbiancyToPlay; + private var _sound_over:soundAmbiancyToPlay; + private var _ambiancy:soundAmbiancyToPlay; + + public function LandingSoundManager(_arg1:PrivateConstructorAccess){ + this.init(); + } + public static function getInstance():LandingSoundManager{ + if (!_oI){ + _oI = new LandingSoundManager(new PrivateConstructorAccess()); + }; + return (_oI); + } + + private function init():void{ + this._sound_out = new soundAmbiancyToPlay("mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_DISPARITION_V2.mp3"); + this._sound_over = new soundAmbiancyToPlay("mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_APPARITION_V1.mp3"); + this._ambiancy = new soundAmbiancyToPlay("mobile/cdn_assets/audios/BOUCLE_AMBIANCE_HOME.mp3"); + this._ambiancy.playSound(); + } + public function playSound(_arg1:String):void{ + switch (_arg1){ + case SoundsName.OUT: + this._sound_out.playSound(1); + break; + case SoundsName.OVER: + this._sound_over.playSound(1); + break; + }; + } + + } +}//package wd.landing.sound + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/LANDING/wd/landing/sound/SoundsName.as b/flash_decompiled/LANDING/wd/landing/sound/SoundsName.as new file mode 100644 index 0000000..4ff8207 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/sound/SoundsName.as @@ -0,0 +1,9 @@ +package wd.landing.sound { + + public class SoundsName { + + public static const OUT:String = "out"; + public static const OVER:String = "over"; + + } +}//package wd.landing.sound diff --git a/flash_decompiled/LANDING/wd/landing/sound/soundAmbiancyToPlay.as b/flash_decompiled/LANDING/wd/landing/sound/soundAmbiancyToPlay.as new file mode 100644 index 0000000..7162d91 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/sound/soundAmbiancyToPlay.as @@ -0,0 +1,30 @@ +package wd.landing.sound { + import flash.net.*; + import flash.media.*; + + public class soundAmbiancyToPlay { + + private var _ambiancySound:Sound; + private var _chanelAmbiancy:SoundChannel; + private var _transform:SoundTransform; + private var _pausePoint:Number; + private var _currentVol:Number = 1; + + public function soundAmbiancyToPlay(_arg1:String):void{ + this._ambiancySound = new Sound(); + var _local2:SoundLoaderContext = new SoundLoaderContext(2000, true); + this._ambiancySound.load(new URLRequest(_arg1), _local2); + this._chanelAmbiancy = new SoundChannel(); + } + public function playSound(_arg1:int=1000):void{ + this._chanelAmbiancy = this._ambiancySound.play(0, _arg1); + this._transform = this._chanelAmbiancy.soundTransform; + this._transform.volume = this._currentVol; + this._chanelAmbiancy.soundTransform = this._transform; + } + private function stopIt():void{ + this._chanelAmbiancy.stop(); + } + + } +}//package wd.landing.sound diff --git a/flash_decompiled/LANDING/wd/landing/star/StarButton.as b/flash_decompiled/LANDING/wd/landing/star/StarButton.as new file mode 100644 index 0000000..0c87c45 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/star/StarButton.as @@ -0,0 +1,157 @@ +package wd.landing.star { + import flash.events.*; + import flash.display.*; + import wd.landing.sound.*; + import flash.geom.*; + import aze.motion.*; + import wd.landing.*; + import wd.landing.tag.*; + import flash.net.*; + import wd.landing.text.*; + import flash.text.*; + import aze.motion.easing.*; + import flash.external.*; + + public class StarButton extends StarItem { + + public static const ON_OVER:String = "onOver"; + public static const ON_OUT:String = "onOut"; + + private var _url:String; + private var _target:String; + private var _tag:String; + private var aStripe:Sprite; + private var _myLat:String; + private var _myLong:String; + public var ptPosition:Point; + + public function StarButton(_arg1:String, _arg2:String, _arg3:String, _arg4:String):void{ + this.ptPosition = new Point(); + super(); + this._url = _arg2; + this._target = _arg3; + this._tag = _arg4; + typeStar = BUTTON_STAR; + var _local5:Tdf_landing = new Tdf_landing(_arg1, "LandingCityText"); + _local5.multiline = false; + _local5.wordWrap = false; + _local5.antiAliasType = AntiAliasType.NORMAL; + addChild(_local5); + _local5.x = (-(_local5.width) >> 1); + _local5.y = (-(_local5.height) >> 1); + var _local6:Shape = new Shape(); + _local6.graphics.beginFill(0xFFFFFF, 1); + _local6.graphics.drawRect(0, 0, (_local5.width + 10), _local5.height); + addChildAt(_local6, 0); + _local6.x = (-(_local6.width) >> 1); + _local6.y = (-(_local6.height) >> 1); + var _local7:BitmapData = new stripe(); + this.aStripe = this.remplirTrame((_local6.width + 12), (_local6.height + 12), _local7); + addChildAt(this.aStripe, 0); + this.aStripe.blendMode = BlendMode.ADD; + this.aStripe.x = (-(this.aStripe.width) >> 1); + this.aStripe.y = (-(this.aStripe.height) >> 1); + this.aStripe.visible = false; + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.MOUSE_OVER, this.over); + this.addEventListener(MouseEvent.MOUSE_OUT, this.out); + this.addEventListener(MouseEvent.CLICK, this.click); + _realSize = 5; + setPtNotVisible(); + } + private function out(_arg1:MouseEvent):void{ + dispatchEvent(new Event(ON_OUT)); + LandingSoundManager.getInstance().playSound(SoundsName.OUT); + } + private function over(_arg1:MouseEvent):void{ + dispatchEvent(new Event(ON_OVER)); + LandingSoundManager.getInstance().playSound(SoundsName.OVER); + } + public function setOver():void{ + this.scaleX = (this.scaleY = 1.3); + isOver = true; + this.aStripe.visible = true; + } + public function setOut():void{ + this.scaleX = (this.scaleY = 1); + this.alpha = 0.6; + isOver = false; + this.aStripe.visible = false; + } + public function setNormal():void{ + this.scaleX = (this.scaleY = 1); + this.alpha = 1; + this.aStripe.visible = false; + if (isOver){ + this.gotoPosition(); + }; + } + public function gotoPosition():void{ + eaze(this).to(0.4, { + x:this.ptPosition.x, + y:this.ptPosition.y + }).easing(Cubic.easeInOut).onComplete(this.isOnPosition); + } + private function isOnPosition():void{ + isOver = false; + } + private function click(_arg1:MouseEvent):void{ + if (ExternalInterface.available){ + ExternalInterface.call("__landing.hide"); + }; + SendTag.tagPageView(this._tag); + var _local2:URLRequest = new URLRequest(this.formatUrl()); + navigateToURL(_local2, this._target); + } + private function remplirTrame(_arg1:Number, _arg2:Number, _arg3:BitmapData):Sprite{ + var _local4:Sprite = new Sprite(); + _local4.graphics.beginBitmapFill(_arg3, null, true, true); + _local4.graphics.moveTo(0, 0); + _local4.graphics.lineTo(0, 0); + _local4.graphics.lineTo(_arg1, 0); + _local4.graphics.lineTo(_arg1, _arg2); + _local4.graphics.lineTo(0, _arg2); + _local4.graphics.endFill(); + return (_local4); + } + private function formatUrl():String{ + var _local1:String; + _local1 = ("?locale=" + MainLanding.LOCALE); + if (MainLanding.LAT){ + _local1 = (_local1 + ("&place_lat=" + MainLanding.LAT)); + }; + if (MainLanding.LONG){ + _local1 = (_local1 + ("&place_lon=" + MainLanding.LONG)); + }; + if (MainLanding.PLACE){ + _local1 = (_local1 + ("&place_name=" + MainLanding.PLACE)); + }; + if (MainLanding.LAYER){ + _local1 = (_local1 + ("&app_state=" + MainLanding.LAYER)); + }; + this.getMyLocation(); + if (((this._myLat) && (this._myLong))){ + _local1 = (_local1 + ((("&my_lat=" + this._myLat) + "&my_long=") + this._myLong)); + }; + _local1 = this.strReplace(this._url, "#", _local1); + return (_local1); + } + private function getMyLocation():void{ + var _local1:String; + var _local2:Array; + if (ExternalInterface.available){ + _local1 = ExternalInterface.call("getMyLocation"); + if (((_local1) && ((_local1.search("#") > 0)))){ + _local2 = _local1.split("#"); + this._myLat = _local2[0]; + this._myLong = _local2[1]; + }; + }; + } + public function strReplace(_arg1:String, _arg2:String, _arg3:String):String{ + return (_arg1.split(_arg2).join(_arg3)); + } + + } +}//package wd.landing.star diff --git a/flash_decompiled/LANDING/wd/landing/star/StarItem.as b/flash_decompiled/LANDING/wd/landing/star/StarItem.as new file mode 100644 index 0000000..c967dd3 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/star/StarItem.as @@ -0,0 +1,111 @@ +package wd.landing.star { + import flash.display.*; + import flash.geom.*; + + public class StarItem extends Sprite { + + public static const SIMPLE_STAR:String = "simple star"; + public static const BUTTON_STAR:String = "button star"; + + public var vector3d:Vector3D; + private var _radiusRatio:Number; + private var shapeWhite:Shape; + private var shapeRed:Shape; + private var shapeGreen:Shape; + private var shapeBlue:Shape; + private var _i:int; + private var size:int = 4; + protected var _realSize:Number; + public var typeStar:String; + public var isOver:Boolean = false; + + public function StarItem(){ + this.typeStar = SIMPLE_STAR; + this.size = (this.size + (Math.random() * this.size)); + this.shapeWhite = new Shape(); + this.shapeWhite.graphics.beginFill(0xFFFFFF, 1); + this.shapeWhite.graphics.drawRect(0, 0, this.size, this.size); + addChild(this.shapeWhite); + this.shapeRed = new Shape(); + this.shapeRed.graphics.beginFill(0xFF0000, 1); + this.shapeRed.graphics.drawRect(0, 0, this.size, this.size); + addChildAt(this.shapeRed, 0); + this.shapeRed.blendMode = BlendMode.SCREEN; + this.shapeGreen = new Shape(); + this.shapeGreen.graphics.beginFill(0xFF00, 1); + this.shapeGreen.graphics.drawRect(0, 0, this.size, this.size); + addChildAt(this.shapeGreen, 0); + this.shapeGreen.blendMode = BlendMode.SCREEN; + this.shapeBlue = new Shape(); + this.shapeBlue.graphics.beginFill(39423, 1); + this.shapeBlue.graphics.drawRect(0, 0, this.size, this.size); + addChildAt(this.shapeBlue, 0); + this.shapeBlue.blendMode = BlendMode.SCREEN; + this._realSize = this.width; + } + public function distortIt():void{ + if (this.typeStar != SIMPLE_STAR){ + return; + }; + this.shapeWhite.alpha = 0.8; + this._i = 0; + while (this._i < this.numChildren) { + if (this.getChildAt(this._i) != this.shapeWhite){ + this.getChildAt(this._i).y = this.randRange(-2, 2); + this.getChildAt(this._i).x = this.randRange(-2, 2); + this.getChildAt(this._i).alpha = (this.randRange(2, 9) / 10); + }; + this._i++; + }; + } + public function resetDistort():void{ + if (this.typeStar != SIMPLE_STAR){ + return; + }; + this.shapeWhite.alpha = 1; + this._i = 0; + while (this._i < this.numChildren) { + if (this.getChildAt(this._i) != this.shapeWhite){ + this.getChildAt(this._i).y = 0; + this.getChildAt(this._i).x = 0; + this.getChildAt(this._i).alpha = 0; + }; + this._i++; + }; + } + private function randRange(_arg1:int, _arg2:int):int{ + var _local3:int = (Math.floor((Math.random() * ((_arg2 - _arg1) + 1))) + _arg1); + return (_local3); + } + public function setPtNotVisible():void{ + this.shapeWhite.visible = false; + this.shapeBlue.visible = false; + this.shapeGreen.visible = false; + this.shapeRed.visible = false; + } + public function set radiusRatio(_arg1:Number):void{ + this._radiusRatio = _arg1; + if (this.typeStar != SIMPLE_STAR){ + return; + }; + this.scaleX = (this.scaleY = _arg1); + this._i = 0; + while (this._i < this.numChildren) { + if (this.getChildAt(this._i) != this.shapeWhite){ + this.getChildAt(this._i).y = 0; + this.getChildAt(this._i).x = 0; + this.getChildAt(this._i).alpha = 0; + }; + this._i++; + }; + this._realSize = this.width; + } + public function get radiusRatio():Number{ + return (this._radiusRatio); + } + public function get realSize():Number{ + return (this._realSize); + } + + } +}//package wd.landing.star diff --git a/flash_decompiled/LANDING/wd/landing/tag/SendTag.as b/flash_decompiled/LANDING/wd/landing/tag/SendTag.as new file mode 100644 index 0000000..61cd9d5 --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/tag/SendTag.as @@ -0,0 +1,25 @@ +package wd.landing.tag { + import flash.external.*; + + public class SendTag { + + private static var param1:String; + private static var param2:String; + + public function SendTag():void{ + } + public static function tagPageView(_arg1:String):void{ + if (ExternalInterface.available){ + ExternalInterface.call("pushTag", _arg1); + }; + } + public static function tagTrackEvent(_arg1:String):void{ + param1 = ""; + param2 = ""; + if (ExternalInterface.available){ + ExternalInterface.call("pushTrackEvent", param1, param2); + }; + } + + } +}//package wd.landing.tag diff --git a/flash_decompiled/LANDING/wd/landing/text/Tdf_landing.as b/flash_decompiled/LANDING/wd/landing/text/Tdf_landing.as new file mode 100644 index 0000000..c3d2c3e --- /dev/null +++ b/flash_decompiled/LANDING/wd/landing/text/Tdf_landing.as @@ -0,0 +1,98 @@ +package wd.landing.text { + import flash.events.*; + import wd.landing.loading.*; + import flash.utils.*; + import flash.text.*; + + public class Tdf_landing extends TextField { + + public static const AUTOSIZE_CENTER:String = "center"; + public static const AUTOSIZE_LEFT:String = "left"; + public static const AUTOSIZE_RIGHT:String = "right"; + + public static var embedFonts:Boolean = true; + + private const TWEEN_CHAR_SET:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÃÂÃÄÅÉÇÈÉÊËÌÃÃŽÃÑÒÓÔÕÖÙÚÛÜ0123456789!$%&'()*+,-./:;<=>?@[÷]_`{}·–—‘’“‚â€â€žÂ·Â£"; + + private var timerTween:Timer; + private var forcedStyle:String = ""; + private var destText:String; + + public function Tdf_landing(_arg1:String, _arg2:String="", _arg3:String="left", _arg4:Boolean=false){ + this.destText = _arg1; + this.embedFonts = Tdf_landing.embedFonts; + this.antiAliasType = AntiAliasType.ADVANCED; + this.selectable = false; + this.condenseWhite = true; + this.multiline = true; + this.wordWrap = true; + this.autoSize = _arg3; + this.styleSheet = CssLoading.STYLESHEET; + this.forcedStyle = _arg2; + this.htmlText = _arg1; + if (_arg4){ + this.startTween(); + }; + } + override public function set x(_arg1:Number):void{ + var _local2:Number = _arg1; + if (this.autoSize == Tdf_landing.AUTOSIZE_CENTER){ + _local2 = (_local2 - (this.width / 2)); + } else { + if (this.autoSize == Tdf_landing.AUTOSIZE_RIGHT){ + _local2 = (_local2 - this.width); + }; + }; + super.x = _local2; + } + public function startTween(_arg1:String=""):void{ + if (_arg1 != ""){ + this.destText = _arg1; + }; + if (this.timerTween){ + this.timerTween.stop(); + this.timerTween.removeEventListener(TimerEvent.TIMER, this.renderTween); + }; + this.timerTween = new Timer(20, _arg1.length); + this.timerTween.addEventListener(TimerEvent.TIMER, this.renderTween); + this.timerTween.start(); + } + public function renderTween(_arg1:TimerEvent):void{ + var _local2 = ""; + var _local3:uint; + while (_local3 < this.destText.length) { + if (_local3 < this.timerTween.currentCount){ + _local2 = (_local2 + this.destText.charAt(_local3)); + } else { + if (_local3 < (this.timerTween.currentCount + 4)){ + _local2 = (_local2 + this.TWEEN_CHAR_SET.charAt(Math.floor((Math.random() * this.TWEEN_CHAR_SET.length)))); + }; + }; + _local3++; + }; + this.htmlText = _local2; + } + override public function get htmlText():String{ + return (super.htmlText); + } + override public function set htmlText(_arg1:String):void{ + var _local2:String; + if (!this.destText){ + this.destText = _arg1; + }; + if (this.forcedStyle != ""){ + _local2 = this.forcedStyle.split(" ")[0]; + super.htmlText = (((("

") + _arg1) + "

"); + } else { + super.htmlText = (("

" + _arg1) + "

"); + }; + } + override public function get text():String{ + return (super.text); + } + override public function set text(_arg1:String):void{ + this.htmlText = _arg1; + } + + } +}//package wd.landing.text diff --git a/flash_decompiled/monuments/fr/seraf/stage3D/Stage3DData.as b/flash_decompiled/monuments/fr/seraf/stage3D/Stage3DData.as new file mode 100644 index 0000000..567592f --- /dev/null +++ b/flash_decompiled/monuments/fr/seraf/stage3D/Stage3DData.as @@ -0,0 +1,11 @@ +package fr.seraf.stage3D { + import __AS3__.vec.*; + + public class Stage3DData { + + public var vertices:Vector.; + public var uvs:Vector.; + public var indices:Vector.; + + } +}//package fr.seraf.stage3D diff --git a/flash_decompiled/monuments/monuments_fla/MainTimeline.as b/flash_decompiled/monuments/monuments_fla/MainTimeline.as new file mode 100644 index 0000000..f2b8ad6 --- /dev/null +++ b/flash_decompiled/monuments/monuments_fla/MainTimeline.as @@ -0,0 +1,13 @@ +package monuments_fla { + import flash.display.*; + + public dynamic class MainTimeline extends MovieClip { + + public function MainTimeline(){ + addFrameScript(0, this.frame1); + } + function frame1(){ + } + + } +}//package monuments_fla diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/BerlinerDom.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/BerlinerDom.as new file mode 100644 index 0000000..0d291a5 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/BerlinerDom.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class BerlinerDom extends Stage3DData { + + public function BerlinerDom(){ + vertices = new [120.962, 109.108, -147.444, 65.9353, 89.7498, -148.313, 80.2566, 89.7498, -172.027, 63.3831, 146.102, -52.1035, 104.089, 127.835, -27.5202, -63.2881, 127.835, 80.0192, 14.1904, 127.835, 126.811, -20.5609, 127.835, -206.146, 32.4487, 127.835, -174.132, 2.59069, 127.835, -124.692, -147.053, 127.835, 3.30136, -75.3168, 127.835, 99.9365, 155.149, 127.835, -32.5578, 22.5204, 127.835, 187.355, -166.311, 127.835, 35.1887, -152.965, 127.835, 43.2486, 22.6777, 127.835, -76.6869, -81.6262, 127.835, 110.384, -24.5488, 145.118, 103.415, -4.14771, 127.835, 157.176, 2.16175, 127.835, 146.728, 79.2586, 109.108, -78.3903, 38.5531, 127.835, -102.974, 79.2586, 146.102, -78.3903, -4.14771, 7.62939E-6, 157.176, -81.6262, 7.62939E-6, 110.384, -42.887, 145.118, 133.78, -117.635, 127.835, 74.3791, -75.3168, 7.62939E-6, 99.9365, 35.0579, 7.62939E-6, 166.595, 2.16175, 7.62939E-6, 146.728, -117.635, 7.62939E-6, 74.3791, -145.315, 7.62939E-6, 120.212, -145.315, 127.835, 120.212, -52.8816, 127.835, -152.629, -20.5609, 7.62939E-6, -206.146, -52.8816, 7.62939E-6, -152.629, 2.59069, 89.7498, -124.692, 32.4487, 7.62939E-6, -174.132, 29.9729, 7.62939E-6, -170.032, 119.964, 127.835, -53.807, -58.9413, 7.62939E-6, -113.199, -39.873, 127.835, -144.773, -198.325, 127.835, 88.1983, -198.325, 7.62939E-6, 88.1983, -133.707, 127.835, 11.3612, -166.311, 7.62939E-6, 35.1887, -152.965, 7.62939E-6, 43.2486, 161.668, 89.7498, -122.86, 65.9353, 7.62939E-6, -148.313, 167.076, 89.7498, -52.3065, 167.076, 127.835, -52.3065, 198.325, 127.835, -33.4342, 198.325, 7.62939E-6, -33.4342, 53.6346, 7.62939E-6, 206.146, 53.6346, 127.835, 206.146, 35.0579, 127.835, 166.595, 22.5204, 7.62939E-6, 187.355, 80.2566, 7.62939E-6, -172.027, 161.667, 7.62939E-6, -122.86, -133.707, 7.62939E-6, 11.3612, -39.873, 7.62939E-6, -144.773, -58.9413, 127.835, -113.199, -71.9499, 7.62939E-6, -121.055, -71.9499, 127.835, -121.055, -147.053, 7.62939E-6, 3.30136, 146.63, 7.62939E-6, 52.162, 146.63, 127.835, 52.162, 104.963, 7.62939E-6, 121.156, 134.606, 7.62939E-6, 110.759, 151.553, 127.835, 82.6988, 151.553, 7.62939E-6, 82.6988, 134.606, 127.835, 110.759, 104.963, 127.835, 121.156, 147.461, 89.7498, -99.337, 155.149, 89.7498, -32.5578, 119.964, 89.7498, -53.807, 38.5531, 89.7498, -102.974, 182.646, 7.62939E-6, -78.0878, 147.461, 7.62939E-6, -99.337, 29.9729, 89.7498, -170.032, 167.076, 7.62939E-6, -52.3065, 182.646, 89.7498, -78.0878, 8.1315, 196.388, -133.867, 8.1315, 127.835, -133.867, -13.1244, 127.835, -128.618, -13.1244, 196.388, -128.618, -44.878, 127.835, -165.881, -44.878, 196.388, -165.881, -39.6292, 196.388, -144.625, -39.6292, 127.835, -144.625, -28.871, 127.835, -192.386, -7.61504, 127.835, -197.635, -7.61504, 196.388, -197.635, -28.871, 196.388, -192.386, 18.8897, 196.388, -181.628, 18.8897, 127.835, -181.628, 24.1386, 127.835, -160.372, 24.1386, 196.388, -160.372, -26.2808, 212.781, -188.29, -40.0469, 212.781, -165.495, 5.54133, 212.781, -137.963, 19.3074, 212.781, -160.757, -35.5329, 212.781, -147.215, -12.7388, 212.781, -133.449, -8.0007, 212.781, -192.804, 14.7934, 212.781, -179.038, -18.0474, 230.93, -161.231, -33.1618, 221.855, -164.946, -22.5894, 221.855, -182.452, -12.2656, 230.93, -170.804, -29.695, 221.855, -150.907, -12.1891, 221.855, -140.334, 8.95556, 221.855, -175.346, -8.55031, 221.855, -185.919, 1.84996, 221.855, -143.801, 12.4223, 221.855, -161.307, -2.69209, 230.93, -165.022, -8.47385, 230.93, -155.449, -9.20546, 230.93, -158.412, -5.65488, 230.93, -164.291, -15.0846, 230.93, -161.962, -11.534, 230.93, -167.841, -10.3697, 249.977, -163.126, 182.086, 127.835, -6.54514, 182.086, 191.246, -6.54514, 195.985, 191.246, -29.5596, 195.985, 127.835, -29.5596, 194.45, 191.246, -35.7742, 171.136, 191.246, -49.8543, 171.136, 127.835, -49.8543, 194.45, 127.835, -35.7742, 152.644, 191.246, -19.0837, 175.924, 191.246, -5.02373, 175.924, 127.835, -5.02373, 152.644, 127.835, -19.0837, 165.028, 191.246, -48.346, 151.109, 191.246, -25.2983, 151.109, 127.835, -25.2983, 158.674, 127.835, -37.8239, 165.028, 127.835, -48.346, 192.297, 200.597, -34.9146, 171.384, 200.597, -47.5445, 165.906, 200.597, -46.1916, 153.42, 200.597, -25.5177, 154.797, 200.597, -19.9433, 175.68, 200.597, -7.33147, 181.206, 200.597, -8.69618, 193.674, 200.597, -29.3402, 187.904, 206.837, -33.1989, 179.342, 213.077, -28.9161, 172.162, 213.077, -33.2646, 171.925, 206.837, -42.8488, 179.429, 206.837, -13.1667, 188.955, 206.837, -28.9398, 167.739, 206.837, -41.8151, 167.874, 213.077, -26.144, 158.2, 206.837, -26.0192, 159.251, 206.837, -21.7601, 175.207, 206.837, -12.124, 175.052, 213.077, -21.8026, 177.209, 213.077, -28.39, 172.69, 213.077, -31.1267, 174.525, 213.077, -23.9391, 170.007, 213.077, -26.6714, 173.608, 232.282, -27.5318, 54.9334, 127.835, 201.688, 54.9334, 191.246, 201.688, 68.8326, 191.246, 178.673, 68.8326, 127.835, 178.673, 67.298, 191.246, 172.459, 43.984, 191.246, 158.379, 43.984, 127.835, 158.379, 67.298, 127.835, 172.459, 25.4915, 191.246, 189.149, 48.7722, 191.246, 203.209, 48.7722, 127.835, 203.209, 25.4915, 127.835, 189.149, 37.8762, 191.246, 159.887, 23.9569, 191.246, 182.935, 23.9569, 127.835, 182.935, 31.5216, 127.835, 170.409, 37.8762, 127.835, 159.887, 65.145, 200.597, 173.318, 44.2323, 200.597, 160.689, 38.7536, 200.597, 162.042, 26.268, 200.597, 182.715, 27.6445, 200.597, 188.29, 48.5274, 200.597, 200.902, 54.0539, 200.597, 199.537, 66.5215, 200.597, 178.893, 60.7514, 206.837, 175.034, 52.1902, 213.077, 179.317, 45.0098, 213.077, 174.969, 44.7731, 206.837, 165.384, 52.2773, 206.837, 195.066, 61.8031, 206.837, 179.293, 40.5871, 206.837, 166.418, 40.7215, 213.077, 182.089, 31.0474, 206.837, 182.214, 32.0992, 206.837, 186.473, 48.0547, 206.837, 196.109, 47.9001, 213.077, 186.431, 50.0568, 213.077, 179.843, 45.5377, 213.077, 177.106, 47.3725, 213.077, 184.294, 42.8545, 213.077, 181.562, 46.4554, 232.282, 180.701, -137.312, 196.388, 106.96, -137.312, 127.835, 106.96, -158.568, 127.835, 112.209, -158.568, 196.388, 112.209, -190.321, 127.835, 74.9459, -190.321, 196.388, 74.9459, -185.072, 196.388, 96.2019, -185.072, 127.835, 96.2019, -174.314, 127.835, 48.4412, -153.058, 127.835, 43.1923, -153.058, 196.388, 43.1923, -174.314, 196.388, 48.4412, -126.553, 196.388, 59.1994, -126.553, 127.835, 59.1994, -121.305, 127.835, 80.4553, -121.305, 196.388, 80.4553, -171.724, 212.781, 52.5375, -185.49, 212.781, 75.3316, -139.902, 212.781, 102.864, -126.136, 212.781, 80.0697, -180.976, 212.781, 93.6117, -158.182, 212.781, 107.378, -153.444, 212.781, 48.0235, -130.65, 212.781, 61.7896, -163.491, 230.93, 79.5965, -178.605, 221.855, 75.8812, -168.033, 221.855, 58.3753, -157.709, 230.93, 70.023, -175.138, 221.855, 89.9203, -157.632, 221.855, 100.493, -136.488, 221.855, 65.4809, -153.993, 221.855, 54.9086, -143.593, 221.855, 97.0259, -133.021, 221.855, 79.52, -148.135, 230.93, 75.8047, -153.917, 230.93, 85.3783, -154.649, 230.93, 82.4155, -151.098, 230.93, 76.5364, -160.528, 230.93, 78.8649, -156.977, 230.93, 72.9858, -155.813, 249.977, 77.7006, 20.7229, 127.835, 118.723, 20.7229, 223.716, 118.723, 72.7815, 223.716, 105.868, 72.7815, 127.835, 105.868, -61.6748, 223.716, 6.84282, -61.6748, 127.835, 6.84282, -33.9537, 127.835, -39.0581, -33.9537, 223.716, -39.0581, 86.0781, 127.835, 96.0755, 86.0781, 223.716, 96.0755, 113.799, 223.716, 50.1746, 113.799, 127.835, 50.1746, 93.629, 223.716, -31.5072, 47.7281, 223.716, -59.2282, 47.7281, 127.835, -59.2282, 93.629, 127.835, -31.5072, 31.4015, 223.716, -61.7059, -20.6571, 223.716, -48.8508, -20.6571, 127.835, -48.8508, 31.4015, 127.835, -61.7059, -51.2973, 223.716, 75.228, -51.2973, 127.835, 75.228, -64.1524, 127.835, 23.1694, -64.1524, 223.716, 23.1694, -41.5046, 127.835, 88.5246, -41.5046, 223.716, 88.5246, 4.39634, 223.716, 116.246, 4.39634, 127.835, 116.246, 116.277, 127.835, 33.848, 116.277, 223.716, 33.848, 103.422, 223.716, -18.2106, 103.422, 127.835, -18.2106, 99.013, 272.342, 32.8262, 84.796, 288.277, 31.9848, 76.4267, 288.277, -1.90768, 88.21, 272.937, -9.02392, 106.353, 257.688, 33.2607, 94.9121, 257.688, -13.0715, 29.5383, 288.277, -30.2251, -4.35418, 288.277, -21.8558, -11.7167, 272.342, -34.047, 30.3797, 272.342, -44.4421, -22.4689, 272.342, -26.1283, -44.8851, 272.342, 10.9889, -52.0237, 257.688, 9.22605, -27.352, 257.688, -31.6257, 21.7447, 272.342, 101.46, 63.8411, 272.342, 91.0644, 67.6424, 257.688, 97.3586, 21.3102, 257.688, 108.8, 104.148, 257.688, 47.7913, 79.4764, 257.688, 88.6431, 74.5933, 272.342, 83.1457, 97.0095, 272.342, 46.0285, 80.6992, 272.342, -20.0224, 43.582, 272.342, -42.4386, 45.3448, 257.688, -49.5772, 86.1966, 257.688, -24.9054, -28.5748, 272.342, 77.0398, 8.54239, 272.342, 99.456, 6.77957, 257.688, 106.595, -34.0722, 257.688, 81.9229, -15.518, 257.688, -40.3412, 30.8142, 257.688, -51.7823, -46.8886, 272.342, 24.1912, -36.4935, 272.342, 66.2876, -42.7877, 257.688, 70.0889, -54.2288, 257.688, 23.7567, -32.6716, 288.277, 25.0326, -24.3023, 288.277, 58.9251, 22.5861, 288.277, 87.2425, 56.4786, 288.277, 78.8732, 70.0512, 288.277, -10.5644, 40.1677, 288.277, -28.612, -13.0109, 288.277, -15.4803, -31.0585, 288.277, 14.4032, 65.1353, 288.277, 72.4977, 83.1829, 288.277, 42.6142, -17.9268, 288.277, 67.5818, 11.9567, 288.277, 85.6294, 47.818, 300.681, 64.5327, 54.443, 300.481, 60.4602, 33.6427, 315.235, 38.8016, 38.7007, 315.235, 30.4266, 68.7236, 300.481, 31.0336, 67.552, 300.481, 38.7542, 3.96918, 300.481, -8.07368, 18.4817, 315.235, 18.2158, -2.31862, 300.481, -3.44285, 58.0137, 300.481, 0.127869, 62.6446, 300.481, 6.41569, 36.3552, 315.235, 20.9282, 28.5871, 300.481, -14.1527, 36.3077, 300.481, -12.9811, 27.9802, 315.235, 15.8702, -15.4276, 300.481, 18.2632, 13.4237, 315.235, 26.5907, -16.5992, 300.481, 25.9838, 24.1442, 315.235, 41.1472, 23.5373, 300.481, 71.1701, 15.8167, 300.481, 69.9985, 15.7693, 315.235, 36.0893, -5.88934, 300.481, 56.8895, -10.5202, 300.481, 50.6017, 33.6427, 330.097, 38.8016, 24.1442, 330.097, 41.1472, 15.7693, 330.097, 36.0893, 13.4237, 330.097, 26.5907, 18.4817, 330.097, 18.2158, 27.9802, 330.097, 15.8702, 36.3552, 330.097, 20.9282, 38.7007, 330.097, 30.4266, 27.8319, 336.517, 35.6754, 18.8955, 336.517, 30.2784, 24.2925, 336.517, 21.3419, 33.2289, 336.517, 26.739, 26.3408, 366.881, 29.6367, 24.9343, 366.881, 28.7872, 25.7837, 366.881, 27.3807, 27.1902, 366.881, 28.2301, 26.3408, 380.497, 29.6367, 24.9343, 380.497, 28.7872, 25.7837, 380.497, 27.3807, 27.1902, 380.497, 28.2301, 26.3408, 381.901, 29.6367, 24.9343, 381.901, 28.7872, 25.7837, 381.901, 27.3807, 27.1902, 381.901, 28.2301, 24.1321, 380.497, 33.2938, 22.7256, 380.497, 32.4443, 22.7256, 381.901, 32.4443, 24.1321, 381.901, 33.2938, 27.9923, 380.497, 23.7236, 29.3988, 380.497, 24.573, 29.3989, 381.901, 24.573, 27.9923, 381.901, 23.7236, 26.3408, 386.989, 29.6367, 24.9343, 386.989, 28.7872, 25.7837, 386.989, 27.3807, 27.1902, 386.989, 28.2301]; + uvs = new [0.804655, 0.857262, 0.666064, 0.85937, 0.702134, 0.916829, 0.659637, 0.626249, 0.762157, 0.566683, 0.340603, 0.30611, 0.53574, 0.192732, 0.448215, 0.999501, 0.581725, 0.921929, 0.506525, 0.802135, 0.129633, 0.492001, 0.310307, 0.25785, 0.890758, 0.578889, 0.55672, 0.0460306, 0.0811303, 0.414736, 0.114742, 0.395207, 0.557116, 0.685816, 0.294416, 0.232535, 0.438171, 0.249421, 0.489554, 0.119157, 0.505445, 0.144471, 0.69962, 0.689943, 0.5971, 0.74951, 0.69962, 0.689943, 0.489554, 0.119157, 0.294416, 0.232535, 0.391985, 0.175846, 0.203725, 0.319776, 0.310307, 0.25785, 0.588297, 0.0963326, 0.505445, 0.144471, 0.203725, 0.319776, 0.134009, 0.20872, 0.134009, 0.20872, 0.366812, 0.869826, 0.448215, 0.999501, 0.366812, 0.869826, 0.506525, 0.802135, 0.581725, 0.921929, 0.57549, 0.911996, 0.802141, 0.630377, 0.35155, 0.774286, 0.399576, 0.85079, 0.000499517, 0.286292, 0.000499517, 0.286292, 0.163245, 0.472471, 0.0811303, 0.414736, 0.114742, 0.395207, 0.907176, 0.797696, 0.666064, 0.85937, 0.920797, 0.626741, 0.920797, 0.626741, 0.9995, 0.581013, 0.9995, 0.581013, 0.635084, 0.000499487, 0.635084, 0.000499487, 0.588297, 0.0963325, 0.55672, 0.0460306, 0.702134, 0.916829, 0.907176, 0.797696, 0.163245, 0.472471, 0.399576, 0.85079, 0.35155, 0.774286, 0.318787, 0.793322, 0.318787, 0.793322, 0.129633, 0.492001, 0.869303, 0.373609, 0.869303, 0.373609, 0.764359, 0.206433, 0.839019, 0.231626, 0.8817, 0.299617, 0.8817, 0.299617, 0.839019, 0.231626, 0.764359, 0.206433, 0.871395, 0.740698, 0.890758, 0.578889, 0.802141, 0.630377, 0.5971, 0.74951, 0.960011, 0.68921, 0.871395, 0.740698, 0.57549, 0.911996, 0.920797, 0.626741, 0.960011, 0.68921, 0.52048, 0.824366, 0.52048, 0.824366, 0.466945, 0.811647, 0.466945, 0.811647, 0.38697, 0.901937, 0.38697, 0.901937, 0.40019, 0.850433, 0.40019, 0.850433, 0.427285, 0.966159, 0.480821, 0.978878, 0.480821, 0.978878, 0.427285, 0.966159, 0.547576, 0.940092, 0.547576, 0.940092, 0.560795, 0.888588, 0.560795, 0.888588, 0.433809, 0.956234, 0.399138, 0.901003, 0.513956, 0.834291, 0.548628, 0.889522, 0.410507, 0.856709, 0.467916, 0.823354, 0.479849, 0.967172, 0.537259, 0.933816, 0.454546, 0.890669, 0.416479, 0.899671, 0.443106, 0.942088, 0.469108, 0.913866, 0.42521, 0.865654, 0.4693, 0.840036, 0.522555, 0.924871, 0.478465, 0.950489, 0.504659, 0.848436, 0.531287, 0.890854, 0.49322, 0.899856, 0.478658, 0.876659, 0.476815, 0.883838, 0.485758, 0.898084, 0.462008, 0.892441, 0.47095, 0.906687, 0.473883, 0.895262, 0.958601, 0.515859, 0.958601, 0.515859, 0.993607, 0.571624, 0.993607, 0.571624, 0.989742, 0.586683, 0.931023, 0.620799, 0.931023, 0.620799, 0.989742, 0.586683, 0.884448, 0.546241, 0.943083, 0.512173, 0.943083, 0.512173, 0.884448, 0.546241, 0.91564, 0.617145, 0.880583, 0.561299, 0.880583, 0.561299, 0.899635, 0.591649, 0.91564, 0.617145, 0.984319, 0.5846, 0.931649, 0.615202, 0.91785, 0.611924, 0.886404, 0.561831, 0.889871, 0.548323, 0.942466, 0.517765, 0.956385, 0.521071, 0.987786, 0.571093, 0.973254, 0.580443, 0.951691, 0.570065, 0.933607, 0.580602, 0.933011, 0.603824, 0.951911, 0.531904, 0.975903, 0.570122, 0.922468, 0.60132, 0.922806, 0.563348, 0.898441, 0.563046, 0.90109, 0.552726, 0.941276, 0.529377, 0.940886, 0.552829, 0.946318, 0.56879, 0.934937, 0.575422, 0.939558, 0.558006, 0.928179, 0.564626, 0.937248, 0.566711, 0.638355, 0.0113013, 0.638355, 0.0113013, 0.673362, 0.0670664, 0.673362, 0.0670664, 0.669497, 0.0821246, 0.610778, 0.116241, 0.610778, 0.116241, 0.669497, 0.0821246, 0.564203, 0.0416827, 0.622838, 0.00761485, 0.622838, 0.00761485, 0.564203, 0.0416827, 0.595395, 0.112587, 0.560338, 0.0567409, 0.560338, 0.0567409, 0.57939, 0.0870911, 0.595395, 0.112587, 0.664074, 0.0800418, 0.611404, 0.110644, 0.597605, 0.107366, 0.566159, 0.0572727, 0.569626, 0.0437655, 0.622221, 0.0132066, 0.63614, 0.0165133, 0.667541, 0.0665346, 0.653008, 0.0758846, 0.631446, 0.0655071, 0.613362, 0.0760436, 0.612765, 0.0992665, 0.631666, 0.0273457, 0.655657, 0.0655645, 0.602223, 0.0967619, 0.602561, 0.0587902, 0.578196, 0.0584879, 0.580845, 0.0481677, 0.621031, 0.0248191, 0.620641, 0.0482708, 0.626073, 0.0642322, 0.614691, 0.0708636, 0.619312, 0.0534477, 0.607934, 0.0600682, 0.617003, 0.0621529, 0.154167, 0.240831, 0.154167, 0.240831, 0.100632, 0.228113, 0.100632, 0.228113, 0.0206572, 0.318403, 0.0206572, 0.318403, 0.033877, 0.266899, 0.033877, 0.266899, 0.0609726, 0.382625, 0.114508, 0.395343, 0.114508, 0.395343, 0.0609726, 0.382625, 0.181263, 0.356557, 0.181263, 0.356557, 0.194482, 0.305053, 0.194482, 0.305053, 0.0674962, 0.372699, 0.032825, 0.317468, 0.147643, 0.250757, 0.182315, 0.305988, 0.044194, 0.273175, 0.101603, 0.239819, 0.113536, 0.383637, 0.170946, 0.350281, 0.0882329, 0.307134, 0.0501658, 0.316136, 0.0767933, 0.358554, 0.102795, 0.330331, 0.0588972, 0.282119, 0.102987, 0.256502, 0.156242, 0.341337, 0.112152, 0.366954, 0.138346, 0.264902, 0.164974, 0.307319, 0.126907, 0.316322, 0.112345, 0.293125, 0.110502, 0.300304, 0.119445, 0.314549, 0.095695, 0.308907, 0.104637, 0.323152, 0.10757, 0.311728, 0.552193, 0.212328, 0.552193, 0.212328, 0.683308, 0.243477, 0.683308, 0.243477, 0.344666, 0.483419, 0.344666, 0.483419, 0.414484, 0.594639, 0.414484, 0.594639, 0.716796, 0.267205, 0.716796, 0.267205, 0.786614, 0.378425, 0.786614, 0.378425, 0.735814, 0.576343, 0.620208, 0.643513, 0.620208, 0.643513, 0.735814, 0.576343, 0.579088, 0.649516, 0.447973, 0.618368, 0.447973, 0.618368, 0.579088, 0.649516, 0.370803, 0.317719, 0.370803, 0.317719, 0.338426, 0.443859, 0.338426, 0.443859, 0.395467, 0.285501, 0.395467, 0.285501, 0.511073, 0.218332, 0.511073, 0.218332, 0.792855, 0.417985, 0.792855, 0.417985, 0.760478, 0.544125, 0.760478, 0.544125, 0.749374, 0.420461, 0.713567, 0.422499, 0.692488, 0.504622, 0.722166, 0.521865, 0.767861, 0.419408, 0.739046, 0.531673, 0.574395, 0.573237, 0.489034, 0.552958, 0.47049, 0.582497, 0.576514, 0.607685, 0.44341, 0.56331, 0.386952, 0.473373, 0.368973, 0.477645, 0.431111, 0.576631, 0.554766, 0.254159, 0.66079, 0.279347, 0.670364, 0.264096, 0.553672, 0.236374, 0.762307, 0.3842, 0.700169, 0.285214, 0.687871, 0.298534, 0.744328, 0.388471, 0.703249, 0.548515, 0.609766, 0.602831, 0.614205, 0.620128, 0.717095, 0.560347, 0.428032, 0.313329, 0.521515, 0.259014, 0.517075, 0.241717, 0.414186, 0.301497, 0.460916, 0.597749, 0.577608, 0.625471, 0.381906, 0.441384, 0.408088, 0.339382, 0.392235, 0.330172, 0.363419, 0.442436, 0.417713, 0.439345, 0.438792, 0.357222, 0.556885, 0.288608, 0.642247, 0.308887, 0.676431, 0.525598, 0.601166, 0.569328, 0.467231, 0.53751, 0.421776, 0.4651, 0.66405, 0.324335, 0.709504, 0.396744, 0.454849, 0.336246, 0.530114, 0.292516, 0.620434, 0.343634, 0.63712, 0.353502, 0.584733, 0.405982, 0.597471, 0.426275, 0.673087, 0.424804, 0.670136, 0.406097, 0.509997, 0.519563, 0.546548, 0.455862, 0.49416, 0.508342, 0.646113, 0.49969, 0.657777, 0.484455, 0.591564, 0.44929, 0.571999, 0.534293, 0.591445, 0.531454, 0.570471, 0.461546, 0.461144, 0.455747, 0.533809, 0.435569, 0.458193, 0.43704, 0.56081, 0.400299, 0.559281, 0.327552, 0.539836, 0.330391, 0.539716, 0.412554, 0.485167, 0.362154, 0.473504, 0.37739, 0.584733, 0.405982, 0.56081, 0.400299, 0.539716, 0.412554, 0.533809, 0.435569, 0.546548, 0.455862, 0.570471, 0.461546, 0.591564, 0.44929, 0.597471, 0.426275, 0.570098, 0.413557, 0.54759, 0.426634, 0.561183, 0.448288, 0.58369, 0.43521, 0.566342, 0.428189, 0.562799, 0.430247, 0.564939, 0.433655, 0.568481, 0.431597, 0.566342, 0.428189, 0.562799, 0.430247, 0.564939, 0.433655, 0.568481, 0.431597, 0.566342, 0.428189, 0.562799, 0.430247, 0.564939, 0.433655, 0.568481, 0.431597, 0.560779, 0.419328, 0.557237, 0.421386, 0.557237, 0.421386, 0.560779, 0.419328, 0.570502, 0.442517, 0.574044, 0.440459, 0.574044, 0.440459, 0.570502, 0.442517, 0.566342, 0.428189, 0.562799, 0.430247, 0.564939, 0.433655, 0.568481, 0.431597]; + indices = new [0, 74, 48, 1, 0, 2, 3, 16, 4, 18, 6, 5, 42, 7, 34, 7, 9, 8, 42, 9, 7, 23, 4, 40, 4, 23, 3, 22, 3, 23, 3, 22, 16, 5, 26, 18, 11, 26, 5, 11, 17, 26, 6, 19, 20, 18, 19, 6, 18, 26, 19, 21, 22, 23, 22, 21, 77, 17, 19, 26, 17, 24, 19, 17, 25, 24, 30, 19, 24, 19, 30, 20, 17, 28, 25, 28, 17, 11, 27, 28, 11, 28, 27, 31, 20, 29, 56, 29, 20, 30, 31, 33, 32, 33, 31, 27, 34, 35, 36, 35, 34, 7, 22, 37, 9, 37, 22, 77, 38, 80, 39, 80, 38, 8, 12, 76, 40, 76, 12, 75, 62, 63, 64, 63, 62, 41, 34, 61, 42, 61, 34, 36, 8, 35, 7, 35, 8, 38, 43, 32, 33, 32, 43, 44, 10, 60, 45, 60, 10, 65, 15, 46, 14, 46, 15, 47, 14, 44, 43, 44, 14, 46, 79, 48, 74, 48, 79, 59, 1, 58, 49, 58, 1, 2, 12, 50, 75, 50, 12, 51, 52, 50, 51, 52, 81, 50, 52, 53, 81, 54, 73, 55, 73, 54, 68, 57, 56, 29, 56, 57, 13, 13, 54, 55, 54, 13, 57, 66, 52, 67, 52, 66, 53, 48, 2, 0, 48, 58, 2, 48, 59, 58, 45, 47, 15, 47, 45, 60, 42, 41, 62, 41, 42, 61, 10, 63, 65, 63, 10, 64, 69, 70, 72, 70, 69, 71, 71, 67, 70, 67, 71, 66, 73, 69, 72, 69, 73, 68, 50, 76, 75, 76, 50, 74, 80, 77, 1, 77, 80, 37, 78, 74, 82, 74, 78, 79, 49, 80, 1, 80, 49, 39, 81, 82, 50, 82, 81, 78, 16, 6, 4, 6, 16, 5, 12, 52, 51, 52, 12, 67, 67, 72, 70, 72, 67, 73, 21, 40, 76, 40, 21, 23, 74, 50, 82, 80, 9, 37, 9, 80, 8, 16, 42, 62, 22, 42, 16, 9, 42, 22, 10, 62, 64, 62, 10, 45, 6, 56, 73, 56, 6, 20, 5, 27, 11, 55, 56, 13, 56, 55, 73, 27, 45, 15, 45, 16, 62, 27, 16, 45, 27, 5, 16, 33, 15, 43, 15, 33, 27, 43, 15, 14, 4, 12, 40, 12, 4, 67, 4, 73, 67, 73, 4, 6, 0, 76, 74, 76, 0, 21, 21, 1, 77, 1, 21, 0, 29, 54, 57, 29, 68, 54, 30, 68, 29, 68, 71, 69, 68, 66, 71, 66, 81, 53, 81, 79, 78, 66, 79, 81, 68, 79, 66, 79, 58, 59, 79, 49, 58, 68, 49, 79, 39, 35, 38, 35, 61, 36, 39, 61, 35, 49, 61, 39, 41, 65, 63, 41, 60, 65, 61, 60, 41, 49, 60, 61, 68, 60, 49, 47, 44, 46, 44, 31, 32, 47, 31, 44, 60, 31, 47, 68, 31, 60, 30, 31, 68, 30, 28, 31, 24, 28, 30, 24, 25, 28, 85, 83, 86, 83, 85, 84, 89, 87, 90, 87, 89, 88, 93, 91, 94, 91, 93, 92, 97, 95, 98, 95, 97, 96, 89, 85, 86, 85, 89, 90, 88, 91, 87, 91, 88, 94, 95, 92, 93, 92, 95, 96, 84, 98, 83, 98, 84, 97, 99, 88, 100, 88, 99, 94, 98, 101, 83, 101, 98, 102, 103, 86, 104, 86, 103, 89, 95, 105, 106, 105, 95, 93, 109, 107, 110, 107, 109, 108, 111, 104, 112, 104, 111, 103, 113, 105, 114, 105, 113, 106, 102, 115, 101, 115, 102, 116, 114, 117, 113, 117, 114, 110, 109, 100, 108, 100, 109, 99, 107, 112, 118, 112, 107, 111, 117, 115, 116, 115, 117, 118, 104, 83, 101, 83, 104, 86, 100, 89, 103, 89, 100, 88, 98, 106, 102, 106, 98, 95, 93, 99, 105, 99, 93, 94, 108, 103, 111, 103, 108, 100, 107, 108, 111, 102, 113, 116, 113, 102, 106, 114, 109, 110, 114, 99, 109, 99, 114, 105, 112, 101, 115, 101, 112, 104, 113, 117, 116, 118, 112, 115, 97, 92, 96, 92, 87, 91, 87, 85, 90, 92, 85, 87, 97, 85, 92, 97, 84, 85, 117, 119, 118, 119, 117, 120, 118, 121, 107, 121, 118, 119, 107, 122, 110, 122, 107, 121, 110, 120, 117, 120, 110, 122, 120, 123, 119, 119, 123, 121, 121, 123, 122, 122, 123, 120, 124, 126, 125, 126, 124, 127, 128, 130, 129, 130, 128, 131, 132, 134, 133, 134, 132, 135, 137, 139, 138, 136, 139, 137, 136, 140, 139, 133, 124, 125, 124, 133, 134, 127, 128, 126, 128, 127, 131, 129, 140, 136, 140, 129, 130, 132, 138, 135, 138, 132, 137, 141, 129, 142, 129, 141, 128, 143, 137, 144, 137, 143, 136, 145, 133, 146, 133, 145, 132, 125, 148, 147, 148, 125, 126, 149, 151, 150, 151, 149, 152, 141, 152, 149, 152, 141, 142, 147, 154, 153, 154, 147, 148, 155, 156, 151, 156, 155, 157, 158, 146, 159, 146, 158, 145, 156, 159, 160, 159, 156, 158, 155, 144, 157, 144, 155, 143, 150, 153, 154, 153, 150, 160, 126, 141, 148, 141, 126, 128, 129, 143, 142, 143, 129, 136, 146, 125, 147, 125, 146, 133, 145, 137, 132, 137, 145, 144, 158, 144, 145, 144, 158, 157, 152, 155, 151, 160, 159, 153, 159, 147, 153, 147, 159, 146, 148, 149, 154, 149, 148, 141, 149, 150, 154, 152, 143, 155, 143, 152, 142, 156, 157, 158, 127, 130, 131, 130, 139, 140, 127, 139, 130, 139, 135, 138, 127, 135, 139, 127, 134, 135, 127, 124, 134, 151, 161, 150, 161, 151, 162, 150, 163, 160, 163, 150, 161, 160, 164, 156, 164, 160, 163, 156, 162, 151, 162, 156, 164, 162, 165, 161, 161, 165, 163, 163, 165, 164, 164, 165, 162, 166, 168, 167, 168, 166, 169, 170, 172, 171, 172, 170, 173, 174, 176, 175, 176, 174, 177, 179, 181, 180, 178, 181, 179, 178, 182, 181, 175, 166, 167, 166, 175, 176, 169, 170, 168, 170, 169, 173, 171, 182, 178, 182, 171, 172, 174, 180, 177, 180, 174, 179, 183, 171, 184, 171, 183, 170, 185, 179, 186, 179, 185, 178, 187, 175, 188, 175, 187, 174, 167, 190, 189, 190, 167, 168, 191, 193, 192, 193, 191, 194, 183, 194, 191, 194, 183, 184, 189, 196, 195, 196, 189, 190, 197, 198, 193, 198, 197, 199, 200, 188, 201, 188, 200, 187, 198, 201, 202, 201, 198, 200, 197, 186, 199, 186, 197, 185, 192, 195, 196, 195, 192, 202, 168, 183, 190, 183, 168, 170, 171, 185, 184, 185, 171, 178, 188, 167, 189, 167, 188, 175, 187, 179, 174, 179, 187, 186, 200, 186, 187, 186, 200, 199, 194, 197, 193, 202, 201, 195, 201, 189, 195, 189, 201, 188, 190, 191, 196, 191, 190, 183, 191, 192, 196, 194, 185, 197, 185, 194, 184, 198, 199, 200, 169, 172, 173, 172, 181, 182, 169, 181, 172, 181, 177, 180, 169, 177, 181, 169, 176, 177, 169, 166, 176, 193, 203, 192, 203, 193, 204, 192, 205, 202, 205, 192, 203, 202, 206, 198, 206, 202, 205, 198, 204, 193, 204, 198, 206, 204, 207, 203, 203, 207, 205, 205, 207, 206, 206, 207, 204, 210, 208, 211, 208, 210, 209, 214, 212, 215, 212, 214, 213, 218, 216, 219, 216, 218, 217, 222, 220, 223, 220, 222, 221, 214, 210, 211, 210, 214, 215, 213, 216, 212, 216, 213, 219, 220, 217, 218, 217, 220, 221, 209, 223, 208, 223, 209, 222, 224, 213, 225, 213, 224, 219, 223, 226, 208, 226, 223, 227, 228, 211, 229, 211, 228, 214, 220, 230, 231, 230, 220, 218, 234, 232, 235, 232, 234, 233, 236, 229, 237, 229, 236, 228, 238, 230, 239, 230, 238, 231, 227, 240, 226, 240, 227, 241, 239, 242, 238, 242, 239, 235, 234, 225, 233, 225, 234, 224, 232, 237, 243, 237, 232, 236, 242, 240, 241, 240, 242, 243, 229, 208, 226, 208, 229, 211, 225, 214, 228, 214, 225, 213, 223, 231, 227, 231, 223, 220, 218, 224, 230, 224, 218, 219, 233, 228, 236, 228, 233, 225, 232, 233, 236, 227, 238, 241, 238, 227, 231, 239, 234, 235, 239, 224, 234, 224, 239, 230, 237, 226, 240, 226, 237, 229, 238, 242, 241, 243, 237, 240, 222, 217, 221, 217, 212, 216, 212, 210, 215, 217, 210, 212, 222, 210, 217, 222, 209, 210, 242, 244, 243, 244, 242, 245, 243, 246, 232, 246, 243, 244, 232, 247, 235, 247, 232, 246, 235, 245, 242, 245, 235, 247, 245, 248, 244, 244, 248, 246, 246, 248, 247, 247, 248, 245, 249, 251, 250, 251, 249, 252, 253, 0xFF, 254, 0xFF, 253, 0x0100, 0x0101, 259, 258, 259, 0x0101, 260, 261, 263, 262, 263, 261, 264, 265, 267, 266, 267, 265, 268, 269, 271, 270, 271, 269, 272, 273, 275, 274, 275, 273, 276, 277, 279, 278, 279, 277, 280, 266, 0xFF, 0x0100, 0xFF, 266, 267, 280, 261, 279, 261, 280, 264, 262, 268, 265, 268, 262, 263, 272, 254, 271, 254, 272, 253, 251, 0x0101, 258, 0x0101, 251, 252, 275, 249, 250, 249, 275, 276, 274, 270, 273, 270, 274, 269, 260, 278, 259, 278, 260, 277, 281, 283, 282, 283, 281, 284, 285, 284, 281, 284, 285, 286, 287, 289, 288, 289, 287, 290, 291, 293, 292, 293, 291, 294, 295, 297, 296, 297, 295, 298, 299, 301, 300, 301, 299, 302, 303, 305, 304, 305, 303, 306, 307, 309, 308, 309, 307, 310, 290, 311, 289, 311, 290, 312, 313, 315, 314, 315, 313, 316, 317, 314, 318, 314, 317, 313, 319, 296, 320, 296, 319, 295, 321, 304, 322, 304, 321, 303, 323, 292, 324, 292, 323, 291, 302, 325, 301, 325, 302, 326, 327, 308, 328, 308, 327, 307, 286, 303, 284, 303, 286, 306, 284, 321, 283, 321, 284, 303, 289, 294, 291, 294, 289, 311, 292, 316, 313, 316, 292, 293, 308, 298, 295, 298, 308, 309, 307, 315, 310, 315, 307, 314, 285, 302, 299, 302, 285, 281, 304, 312, 290, 312, 304, 305, 296, 300, 301, 300, 296, 297, 281, 326, 302, 326, 281, 282, 322, 290, 287, 290, 322, 304, 328, 295, 319, 295, 328, 308, 318, 307, 327, 307, 318, 314, 289, 323, 288, 323, 289, 291, 324, 313, 317, 313, 324, 292, 325, 296, 301, 296, 325, 320, 330, 320, 325, 320, 330, 329, 329, 330, 331, 332, 334, 333, 335, 337, 336, 338, 340, 339, 341, 343, 342, 344, 346, 345, 347, 349, 348, 350, 352, 351, 324, 346, 344, 346, 324, 317, 352, 327, 351, 327, 352, 318, 287, 342, 322, 342, 287, 341, 321, 339, 283, 339, 321, 338, 349, 319, 348, 319, 349, 328, 288, 337, 335, 337, 288, 323, 333, 326, 282, 326, 333, 334, 347, 329, 331, 329, 347, 348, 348, 320, 329, 320, 348, 319, 350, 349, 347, 349, 350, 351, 339, 332, 333, 332, 339, 340, 345, 352, 350, 352, 345, 346, 337, 345, 336, 345, 337, 344, 332, 330, 334, 330, 332, 331, 342, 340, 338, 340, 342, 343, 341, 336, 343, 336, 341, 335, 287, 335, 341, 335, 287, 288, 351, 328, 349, 328, 351, 327, 322, 338, 321, 338, 322, 342, 346, 318, 352, 318, 346, 317, 323, 344, 337, 344, 323, 324, 334, 325, 326, 325, 334, 330, 283, 333, 282, 333, 283, 339, 309, 250, 298, 250, 309, 275, 311, 0x0100, 294, 0x0100, 311, 266, 305, 265, 312, 265, 305, 262, 278, 299, 259, 299, 278, 285, 297, 258, 300, 258, 297, 251, 310, 269, 274, 269, 310, 315, 279, 306, 286, 306, 279, 261, 293, 272, 316, 272, 293, 253, 310, 275, 309, 275, 310, 274, 312, 266, 311, 266, 312, 265, 306, 262, 305, 262, 306, 261, 316, 269, 315, 269, 316, 272, 259, 300, 258, 300, 259, 299, 294, 253, 293, 253, 294, 0x0100, 298, 251, 297, 251, 298, 250, 278, 286, 285, 286, 278, 279, 387, 385, 388, 385, 387, 386, 0x0101, 277, 260, 277, 264, 280, 264, 268, 263, 277, 268, 264, 268, 0xFF, 267, 0xFF, 271, 254, 268, 271, 0xFF, 271, 273, 270, 273, 249, 276, 271, 249, 273, 268, 249, 271, 277, 249, 268, 0x0101, 249, 277, 252, 249, 0x0101, 331, 354, 347, 354, 331, 353, 347, 355, 350, 355, 347, 354, 350, 356, 345, 356, 350, 355, 345, 357, 336, 357, 345, 356, 336, 358, 343, 358, 336, 357, 343, 359, 340, 359, 343, 358, 340, 360, 332, 360, 340, 359, 332, 353, 331, 353, 332, 360, 353, 361, 354, 354, 362, 355, 362, 354, 361, 355, 362, 356, 356, 363, 357, 363, 356, 362, 357, 363, 358, 358, 364, 359, 364, 358, 363, 359, 364, 360, 360, 361, 353, 361, 360, 364, 361, 366, 362, 366, 361, 365, 362, 367, 363, 367, 362, 366, 363, 368, 364, 368, 363, 367, 364, 365, 361, 365, 364, 368, 365, 370, 366, 370, 365, 369, 366, 371, 367, 371, 366, 370, 367, 372, 368, 372, 367, 371, 368, 369, 365, 369, 368, 372, 377, 379, 378, 379, 377, 380, 370, 375, 371, 375, 370, 374, 381, 383, 382, 383, 381, 384, 372, 373, 369, 373, 372, 376, 369, 378, 370, 378, 369, 377, 370, 379, 374, 379, 370, 378, 374, 380, 373, 380, 374, 379, 373, 377, 369, 377, 373, 380, 371, 382, 372, 382, 371, 381, 372, 383, 376, 383, 372, 382, 376, 384, 375, 384, 376, 383, 375, 381, 371, 381, 375, 384, 373, 386, 374, 386, 373, 385, 374, 387, 375, 387, 374, 386, 375, 388, 376, 388, 375, 387, 376, 385, 373, 385, 376, 388]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Brandenburg.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Brandenburg.as new file mode 100644 index 0000000..3af4ed9 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Brandenburg.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Brandenburg extends Stage3DData { + + public function Brandenburg(){ + vertices = new [-2.19313, 62.8783, -71.1459, -16.9373, 62.8783, 69.1353, -19.5217, 53.2122, 65.9438, -50.4118, 65.0622, -77.9509, -48.8744, 61.6054, -76.0523, -23.4777, 68.3184, 65.528, -60.4271, 68.3184, 61.6445, -9.34061, 68.3184, -68.9773, -65.5171, 65.0622, 65.7663, -0.29458, 65.0622, -72.6833, -5.38457, 65.0622, -68.5615, -15.3999, 65.0622, 71.0338, -60.4271, 53.2122, 61.6445, -42.5229, 76.4497, -70.6476, -9.34061, 79.1874, -68.9773, -9.52953, 71.5747, -67.1798, -42.5229, 71.5747, -70.6476, -9.34061, 71.5747, -68.9773, -23.4777, 71.5747, 65.528, -56.2134, 71.5747, 59.6091, -56.4711, 71.5747, 62.0603, -23.2201, 71.5747, 63.0768, -23.2201, 76.2105, 63.0768, -56.2134, 76.2105, 59.6091, -47.1065, 80.0984, -27.0373, -14.1132, 80.0984, -23.5695, -18.6002, 80.0984, 19.1218, -51.5936, 80.0984, 15.654, -51.3019, 83.5336, 12.8792, -47.3301, 83.5336, -24.9105, -14.3367, 83.5336, -21.4428, -18.3085, 83.5336, 16.3469, -18.6002, 82.173, 19.1218, -51.5936, 82.173, 15.654, -47.1065, 82.173, -27.0373, -14.1132, 82.173, -23.5695, -14.3367, 82.173, -21.4428, -47.3301, 82.173, -24.9105, -51.3019, 82.173, 12.8792, -18.3085, 82.173, 16.3469, -51.2861, 68.3184, -25.3263, -55.258, 68.3184, 12.4634, -52.7651, 76.1285, 26.8008, -53.2354, 74.494, 31.2754, -55.8791, 69.9168, 56.4279, -56.4711, 68.3184, 62.0603, -51.3019, 78.5849, 12.8792, -55.258, 82.173, 12.4634, -51.2861, 82.173, -25.3263, -48.988, 68.3184, -25.0848, -48.988, 78.5849, -25.0848, -47.3301, 78.5849, -24.9105, -5.38457, 68.3184, -68.5615, -10.3807, 68.3184, -21.027, -14.3525, 68.3184, 16.7627, -19.5217, 68.3184, 65.9438, -20.8509, 68.3184, 60.1095, -22.8857, 68.3184, 59.8957, -10.3807, 82.173, -21.027, -14.3525, 82.173, 16.7627, -16.2738, 78.5849, 16.5608, -12.3019, 68.3184, -21.2289, -9.78289, 68.3184, -64.7692, -12.3019, 78.5849, -21.2289, -14.3367, 78.5849, -21.4428, -9.33163, 72.3055, -49.4892, -8.89389, 69.9168, -53.654, -8.89389, 72.3055, -53.654, -10.3737, 73.3411, -39.5744, -9.33163, 73.3411, -49.4892, -10.8522, 74.494, -35.0221, -10.3737, 74.494, -39.5744, -11.3705, 76.1285, -30.0906, -10.8522, 76.1285, -35.0221, -11.3705, 78.5849, -30.0906, -13.4053, 78.5849, -30.3045, -9.78289, 69.9168, -64.7692, -10.9287, 72.3055, -53.8679, -11.3664, 73.3411, -49.703, -12.4085, 74.494, -39.7883, -12.887, 76.1285, -35.236, -20.2421, 73.3411, 34.7431, -13.4053, 76.1285, -30.3045, -12.887, 74.494, -35.236, -12.4085, 73.3411, -39.7883, -11.3664, 72.3055, -49.703, -10.9287, 69.9168, -53.8679, -42.7763, 68.3184, -68.237, -42.334, 68.3184, -72.4451, -42.7763, 69.9168, -68.237, -45.7089, 74.494, -40.3347, -45.7089, 76.1285, -40.3347, -45.4019, 74.494, -43.256, -46.3987, 78.5849, -33.7722, -43.9221, 72.3055, -57.3356, -43.9221, 69.9168, -57.3356, -44.3598, 73.3411, -53.1708, -44.3598, 72.3055, -53.1708, -45.4019, 73.3411, -43.256, -46.3987, 76.1285, -33.7722, -48.0566, 76.1285, -33.9465, -47.3669, 76.1285, -40.509, -48.0566, 78.5849, -33.9465, -47.3669, 74.494, -40.509, -47.0598, 74.494, -43.4303, -47.0598, 73.3411, -43.4303, -46.0178, 73.3411, -53.345, -46.0178, 72.3055, -53.345, -45.58, 69.9168, -57.5099, -45.58, 72.3055, -57.5099, -54.8934, 73.3411, 31.1011, -53.882, 76.1285, 21.478, -56.0025, 72.3055, 41.6534, -57.5371, 69.9168, 56.2537, -53.882, 78.5849, 21.478, -19.3164, 73.3411, 45.5092, -19.3164, 72.3055, 45.5092, -20.8509, 69.9168, 60.1095, -2.19313, 61.6054, -71.1459, -16.9373, 61.6054, 69.1353, -63.6185, 62.8783, 64.2289, -63.6185, 61.6054, 64.2289, -42.334, 80.0984, -72.4451, -23.4777, 78.895, 65.528, -56.4711, 80.0984, 62.0603, -52.9599, 68.3184, 12.7049, -57.5371, 68.3184, 56.2537, -54.3445, 73.3411, 41.8276, -52.7651, 74.494, 26.8008, -20.2421, 74.494, 34.7431, -21.8117, 72.3055, 49.6771, -18.3085, 78.5849, 16.3469, -19.2306, 76.1285, 25.12, -5.38457, 53.2122, -68.5615, -52.224, 78.5849, 21.6522, -52.224, 76.1285, 21.6522, -53.2354, 73.3411, 31.2754, -54.8051, 72.3055, 46.2094, -54.8051, 69.9168, 46.2094, -54.3445, 72.3055, 41.8276, -52.9599, 78.5849, 12.7049, -16.2738, 68.3184, 16.5608, -16.2738, 78.5849, 16.5608, -22.8857, 69.9168, 59.8957, -21.8117, 69.9168, 49.6771, -21.3512, 72.3055, 45.2954, -21.3512, 73.3411, 45.2954, -19.2306, 78.5849, 25.12, -19.7718, 76.1285, 30.2686, -19.7718, 74.494, 30.2686, -54.4231, 74.494, 26.6265, -56.463, 69.9168, 46.0351, -56.463, 72.3055, 46.0351, -56.0025, 73.3411, 41.6534, -54.8934, 74.494, 31.1011, -18.2073, 73.3411, 34.957, -17.737, 74.494, 30.4824, -17.737, 76.1285, 30.4824, -18.2073, 74.494, 34.957, -19.7769, 72.3055, 49.891, -52.9599, 78.5849, 12.7049, -54.4231, 76.1285, 26.6265, -17.1958, 76.1285, 25.3339, -17.1958, 78.5849, 25.3339, -19.7769, 69.9168, 49.891, -42.334, 71.5747, -72.4451, -48.8744, 62.8783, -76.0523, -46.29, 53.2122, -72.8609, -9.34061, 80.0984, -68.9773, -42.334, 79.1874, -72.4451, -56.4711, 78.895, 62.0603, -23.4777, 80.0984, 65.528, -46.29, 65.0622, -72.8609, -60.4271, 65.0622, 61.6445, -7.74811, 69.9168, -64.5554, -44.4342, 69.9168, -68.4112, -9.52953, 76.4497, -67.1798, -7.74811, 68.3184, -64.5554, -46.29, 68.3184, -72.8609, -44.4342, 68.3184, -68.4112, -55.8791, 68.3184, 56.4279, -46.29, 61.3859, -72.8609, -5.38457, 61.3859, -68.5615, -19.5216, 61.3859, 65.9438, -60.4271, 61.3858, 61.6445, -0.155489, 29.8146, -87.1707, 3.34552, 0, -120.481, -0.155489, 0, -87.1707, 58.0048, 0, -81.0578, 58.0048, 29.8146, -81.0578, 61.5058, 0, -114.368, -25.956, 41.9269, -70.7237, -0.184944, 35.9785, -68.015, 66.0724, 35.9785, -71.0505, 68.5364, 29.8146, -120.108, -38.8974, 35.9785, -131.4, -44.7851, 35.9785, -75.3825, -44.7851, 29.8146, -75.3825, -2.55691, 29.8146, -70.9442, -2.55691, 35.9785, -70.9442, -1.51742, 35.9785, -80.8343, -22.2138, 41.9269, -106.328, -41.2694, 35.9785, -134.329, 68.7751, 41.9269, -96.7647, 0.854544, 35.9785, -77.9051, -1.51742, 29.8146, -80.8343, 3.34552, 29.8146, -120.481, 63.6882, 29.8146, -73.9809, -38.8974, 29.8146, -131.4, 61.5058, 29.8146, -114.368, -47.7142, 35.9785, -73.0106, 63.6882, 35.9785, -73.9809, 68.5364, 35.9785, -120.108, 71.4778, 35.9785, -122.479, -18.2758, 29.8146, 85.2335, -21.7769, 0, 118.543, -18.2758, 0, 85.2335, 39.8844, 0, 91.3464, 39.8844, 29.8146, 91.3464, 36.3834, 0, 124.656, -40.093, 41.9269, 63.7817, -14.322, 35.9785, 66.4903, 49.8564, 35.9785, 83.2351, 42.0668, 29.8146, 131.733, -65.367, 35.9785, 120.441, -59.4793, 35.9785, 64.4239, -59.4793, 29.8146, 64.4239, -17.2511, 29.8146, 68.8623, -17.2511, 35.9785, 68.8623, -18.2906, 35.9785, 78.7524, -43.8352, 41.9269, 99.386, -68.2961, 35.9785, 122.813, 47.1537, 41.9269, 108.949, -15.3615, 35.9785, 76.3804, -18.2906, 29.8146, 78.7524, -21.7769, 29.8146, 118.543, 46.915, 29.8146, 85.6058, -65.367, 29.8146, 120.441, 36.3834, 29.8146, 124.656, -61.8512, 35.9785, 61.4948, 46.915, 35.9785, 85.6058, 42.0668, 35.9785, 131.733, 44.4511, 35.9785, 134.664, -19.5217, 65.0622, 65.9438, -50.7097, 50.9902, -22.7153, -47.9218, 50.9902, -19.2809, -50.7097, 2.22199, -22.7153, -47.2686, 2.22199, -25.495, -44.4807, 2.22199, -22.0606, -47.9218, 2.22199, -19.2809, -47.2686, 50.9902, -25.495, -44.4807, 50.9902, -22.0606, -51.5233, 53.2122, -22.8008, -48.0071, 53.2122, -18.4692, -47.1833, 53.2122, -26.3067, -43.6671, 53.2122, -21.9751, -51.5534, 0, -22.804, -47.1802, 0, -26.3367, -43.637, 0, -21.9719, -48.0102, 0, -18.4392, -59.1698, 51.1835, 57.7769, -56.3818, 51.1835, 61.2114, -59.1698, 2.41529, 57.7769, -55.7287, 2.41529, 54.9972, -52.9408, 2.41529, 58.4316, -56.3818, 2.41529, 61.2114, -55.7287, 51.1835, 54.9972, -52.9408, 51.1835, 58.4316, -59.9834, 53.4056, 57.6914, -56.4671, 53.4056, 62.023, -55.6434, 53.4056, 54.1856, -52.1272, 53.4056, 58.5171, -60.0135, 0.193298, 57.6883, -55.6402, 0.193298, 54.1555, -52.097, 0.193298, 58.5203, -56.4703, 0.193298, 62.0531, -26.1764, 51.1835, 61.2447, -23.3885, 51.1835, 64.6791, -26.1764, 2.41529, 61.2447, -22.7353, 2.41529, 58.465, -19.9474, 2.41529, 61.8994, -23.3885, 2.41529, 64.6791, -22.7353, 51.1835, 58.465, -19.9474, 51.1835, 61.8994, -26.99, 53.4056, 61.1592, -23.4738, 53.4056, 65.4908, -22.65, 53.4056, 57.6533, -19.1338, 53.4056, 61.9849, -27.0201, 0.193298, 61.156, -22.6469, 0.193298, 57.6232, -19.1037, 0.193298, 61.9881, -23.4769, 0.193298, 65.5208, -23.4943, 51.1835, 35.7264, -20.7064, 51.1835, 39.1608, -23.4943, 2.41529, 35.7264, -20.0533, 2.41529, 32.9467, -17.2653, 2.41529, 36.3811, -20.7064, 2.41529, 39.1608, -20.0533, 51.1835, 32.9467, -17.2653, 51.1835, 36.3811, -24.3079, 53.4056, 35.6409, -20.7917, 53.4056, 39.9725, -19.968, 53.4056, 32.135, -16.4517, 53.4056, 36.4666, -24.3381, 0.193298, 35.6377, -19.9648, 0.193298, 32.105, -16.4216, 0.193298, 36.4698, -20.7949, 0.193298, 40.0025, -56.4877, 51.1835, 32.2587, -53.6998, 51.1835, 35.6931, -56.4877, 2.41529, 32.2587, -53.0466, 2.41529, 29.4789, -50.2587, 2.41529, 32.9134, -53.6998, 2.41529, 35.6931, -53.0466, 51.1835, 29.4789, -50.2587, 51.1835, 32.9134, -57.3013, 53.4056, 32.1732, -53.7851, 53.4056, 36.5047, -52.9613, 53.4056, 28.6673, -49.4451, 53.4056, 32.9989, -57.3314, 0.193298, 32.17, -52.9582, 0.193298, 28.6372, -49.415, 0.193298, 33.002, -53.7882, 0.193298, 36.5348, -53.8707, 51.1835, 7.35973, -51.0828, 51.1835, 10.7942, -53.8707, 2.41529, 7.35973, -50.4296, 2.41529, 4.58, -47.6417, 2.41529, 8.01443, -51.0828, 2.41529, 10.7942, -50.4296, 51.1835, 4.58, -47.6417, 51.1835, 8.01443, -54.6843, 53.4056, 7.27422, -51.1681, 53.4056, 11.6058, -50.3443, 53.4056, 3.76835, -46.8281, 53.4056, 8.09994, -54.7144, 0.193298, 7.27105, -50.3412, 0.193298, 3.73829, -46.798, 0.193298, 8.10311, -51.1712, 0.193298, 11.6359, -20.8773, 51.1835, 10.8275, -18.0894, 51.1835, 14.2619, -20.8773, 2.41529, 10.8275, -17.4363, 2.41529, 8.04774, -14.6483, 2.41529, 11.4822, -18.0894, 2.41529, 14.2619, -17.4363, 51.1835, 8.04774, -14.6483, 51.1835, 11.4822, -21.6909, 53.4056, 10.742, -18.1747, 53.4056, 15.0735, -17.3509, 53.4056, 7.23609, -13.8347, 53.4056, 11.5677, -21.721, 0.193298, 10.7388, -17.3478, 0.193298, 7.20603, -13.8046, 0.193298, 11.5708, -18.1779, 0.193298, 15.1036, -17.7163, 50.9902, -19.2476, -14.9284, 50.9902, -15.8131, -17.7163, 2.22199, -19.2476, -14.2752, 2.22199, -22.0273, -11.4873, 2.22199, -18.5929, -14.9284, 2.22199, -15.8131, -14.2752, 50.9902, -22.0273, -11.4873, 50.9902, -18.5929, -18.5299, 53.2123, -19.3331, -15.0137, 53.2123, -15.0015, -14.1899, 53.2123, -22.8389, -10.6737, 53.2123, -18.5074, -18.56, 0, -19.3362, -14.1868, 0, -22.869, -10.6436, 0, -18.5042, -15.0168, 0, -14.9714, -15.307, 50.9902, -42.1704, -12.5191, 50.9902, -38.736, -15.307, 2.22199, -42.1704, -11.866, 2.22199, -44.9502, -9.07802, 2.22199, -41.5158, -12.5191, 2.22199, -38.736, -11.866, 50.9902, -44.9502, -9.07802, 50.9902, -41.5158, -16.1206, 53.2123, -42.256, -12.6044, 53.2123, -37.9244, -11.7806, 53.2123, -45.7618, -8.26443, 53.2123, -41.4302, -16.1507, 0, -42.2591, -11.7775, 0, -45.7919, -8.23429, 0, -41.4271, -12.6076, 0, -37.8943, -48.3004, 50.9902, -45.6382, -45.5125, 50.9902, -42.2038, -48.3004, 2.22199, -45.6382, -44.8593, 2.22199, -48.4179, -42.0714, 2.22199, -44.9835, -45.5125, 2.22199, -42.2038, -44.8593, 50.9902, -48.4179, -42.0714, 50.9902, -44.9835, -49.114, 53.2123, -45.7237, -45.5978, 53.2123, -41.3921, -44.774, 53.2123, -49.2296, -41.2578, 53.2123, -44.898, -49.1441, 0, -45.7269, -44.7709, 0, -49.2596, -41.2277, 0, -44.8948, -45.6009, 0, -41.3621, -45.8643, 50.9902, -68.8164, -43.0763, 50.9902, -65.382, -45.8643, 2.22199, -68.8164, -42.4232, 2.22199, -71.5961, -39.6353, 2.22199, -68.1617, -43.0763, 2.22199, -65.382, -42.4232, 50.9902, -71.5961, -39.6353, 50.9902, -68.1617, -46.6779, 53.2123, -68.9019, -43.1617, 53.2123, -64.5703, -42.3379, 53.2123, -72.4078, -38.8217, 53.2123, -68.0762, -46.708, 0, -68.9051, -42.3347, 0, -72.4378, -38.7916, 0, -68.073, -43.1648, 0, -64.5403, -12.8709, 50.9902, -65.3486, -10.083, 50.9902, -61.9142, -12.8709, 2.22199, -65.3486, -9.42983, 2.22199, -68.1283, -6.64189, 2.22199, -64.6939, -10.083, 2.22199, -61.9142, -9.42983, 50.9902, -68.1283, -6.64189, 50.9902, -64.6939, -13.6845, 53.2123, -65.4341, -10.1683, 53.2123, -61.1025, -9.34452, 53.2123, -68.94, -5.8283, 53.2123, -64.6084, -13.7146, 0, -65.4373, -9.34136, 0, -68.9701, -5.79817, 0, -64.6052, -10.1714, 0, -61.0725, -25.7575, 28.5697, 123.105, -24.4096, 28.5697, 122.037, -25.7575, 1.24497, 123.105, -24.661, 1.24497, 124.429, -23.3131, 1.24497, 123.362, -24.4096, 1.24497, 122.037, -24.661, 28.5697, 124.429, -23.3131, 28.5697, 123.362, -26.0767, 29.8147, 123.071, -24.3767, 29.8147, 121.724, -24.6939, 29.8147, 124.742, -22.9939, 29.8147, 123.395, -26.0886, 0, 123.07, -24.6951, 0, 124.753, -22.982, 0, 123.396, -24.3755, 0, 121.713, 42.5202, 28.5697, 100.729, 43.8681, 28.5697, 99.6617, 42.5202, 1.24497, 100.729, 43.6166, 1.24497, 102.054, 44.9645, 1.24497, 100.986, 43.8681, 1.24497, 99.6617, 43.6166, 28.5697, 102.054, 44.9645, 28.5697, 100.986, 42.2009, 29.8147, 100.696, 43.9009, 29.8147, 99.3492, 43.5838, 29.8147, 102.367, 45.2838, 29.8147, 101.02, 42.1891, 0, 100.695, 43.5826, 0, 102.378, 45.2956, 0, 101.021, 43.9021, 0, 99.3376, -59.3133, 28.5697, 66.0213, -57.9654, 28.5697, 64.9535, -59.3133, 1.24497, 66.0213, -58.2169, 1.24497, 67.3459, -56.8689, 1.24497, 66.2782, -57.9654, 1.24497, 64.9535, -58.2169, 28.5697, 67.3459, -56.8689, 28.5697, 66.2782, -59.6326, 29.8147, 65.9877, -57.9326, 29.8147, 64.641, -58.2497, 29.8147, 67.6584, -56.5497, 29.8147, 66.3117, -59.6444, 0, 65.9865, -58.2509, 0, 67.67, -56.5379, 0, 66.313, -57.9313, 0, 64.6294, -38.7986, 28.5697, 121.734, -37.4507, 28.5697, 120.666, -38.7986, 1.24497, 121.734, -37.7022, 1.24497, 123.059, -36.3543, 1.24497, 121.991, -37.4507, 1.24497, 120.666, -37.7022, 28.5697, 123.059, -36.3543, 28.5697, 121.991, -39.1179, 29.8147, 121.7, -37.4179, 29.8147, 120.354, -37.735, 29.8147, 123.371, -36.035, 29.8147, 122.024, -39.1297, 0, 121.699, -37.7362, 0, 123.383, -36.0232, 0, 122.026, -37.4166, 0, 120.342, -51.8397, 28.5697, 120.363, -50.4918, 28.5697, 119.295, -51.8397, 1.24497, 120.363, -50.7433, 1.24497, 121.688, -49.3953, 1.24497, 120.62, -50.4918, 1.24497, 119.295, -50.7433, 28.5697, 121.688, -49.3953, 28.5697, 120.62, -52.159, 29.8147, 120.33, -50.459, 29.8147, 118.983, -50.7761, 29.8147, 122, -49.0761, 29.8147, 120.654, -52.1708, 0, 120.328, -50.7773, 0, 122.012, -49.0643, 0, 120.655, -50.4577, 0, 118.971, -64.8808, 28.5697, 118.993, -63.5329, 28.5697, 117.925, -64.8808, 1.24497, 118.993, -63.7844, 1.24497, 120.317, -62.4365, 1.24497, 119.25, -63.5329, 1.24497, 117.925, -63.7844, 28.5697, 120.317, -62.4365, 28.5697, 119.25, -65.2001, 29.8147, 118.959, -63.5001, 29.8147, 117.612, -63.8172, 29.8147, 120.63, -62.1172, 29.8147, 119.283, -65.2119, 0, 118.958, -63.8185, 0, 120.641, -62.1054, 0, 119.284, -63.4989, 0, 117.601, 39.4523, 28.5697, 129.918, 40.8002, 28.5697, 128.851, 39.4523, 1.24497, 129.918, 40.5487, 1.24497, 131.243, 41.8966, 1.24497, 130.175, 40.8002, 1.24497, 128.851, 40.5487, 28.5697, 131.243, 41.8966, 28.5697, 130.175, 39.133, 29.8147, 129.885, 40.833, 29.8147, 128.538, 40.5159, 29.8147, 131.556, 42.2159, 29.8147, 130.209, 39.1212, 0, 129.884, 40.5147, 0, 131.567, 42.2277, 0, 130.21, 40.8343, 0, 128.527, -21.2295, 28.5697, 80.0234, -19.8815, 28.5697, 78.9556, -21.2295, 1.24497, 80.0234, -20.133, 1.24497, 81.3481, -18.7851, 1.24497, 80.2803, -19.8815, 1.24497, 78.9556, -20.133, 28.5697, 81.3481, -18.7851, 28.5697, 80.2803, -21.5487, 29.8147, 79.9899, -19.8487, 29.8147, 78.6432, -20.1658, 29.8147, 81.6606, -18.4658, 29.8147, 80.3139, -21.5605, 0, 79.9886, -20.1671, 0, 81.6721, -18.454, 0, 80.3151, -19.8475, 0, 78.6316, -8.18834, 28.5697, 81.3941, -6.84044, 28.5697, 80.3264, -8.18834, 1.24497, 81.3941, -7.09189, 1.24497, 82.7188, -5.74399, 1.24497, 81.651, -6.84044, 1.24497, 80.3264, -7.09189, 28.5697, 82.7188, -5.74399, 28.5697, 81.651, -8.50761, 29.8147, 81.3606, -6.80759, 29.8147, 80.0139, -7.12474, 29.8147, 83.0313, -5.42473, 29.8147, 81.6846, -8.51943, 0, 81.3593, -7.12595, 0, 83.0429, -5.4129, 0, 81.6858, -6.80638, 0, 80.0023, -34.2706, 28.5697, 78.6527, -32.9227, 28.5697, 77.585, -34.2706, 1.24497, 78.6527, -33.1741, 1.24497, 79.9774, -31.8262, 1.24497, 78.9096, -32.9227, 1.24497, 77.585, -33.1741, 28.5697, 79.9774, -31.8262, 28.5697, 78.9096, -34.5898, 29.8147, 78.6192, -32.8898, 29.8147, 77.2725, -33.207, 29.8147, 80.2899, -31.507, 29.8147, 78.9432, -34.6017, 0, 78.6179, -33.2082, 0, 80.3015, -31.4951, 0, 78.9445, -32.8886, 0, 77.2609, -47.3117, 28.5697, 77.2821, -45.9638, 28.5697, 76.2143, -47.3117, 1.24497, 77.2821, -46.2153, 1.24497, 78.6068, -44.8674, 1.24497, 77.539, -45.9638, 1.24497, 76.2143, -46.2153, 28.5697, 78.6068, -44.8674, 28.5697, 77.539, -47.631, 29.8147, 77.2485, -45.931, 29.8147, 75.9018, -46.2481, 29.8147, 78.9192, -44.5481, 29.8147, 77.5725, -47.6428, 0, 77.2473, -46.2493, 0, 78.9308, -44.5363, 0, 77.5738, -45.9298, 0, 75.8903, -60.3528, 28.5697, 75.9114, -59.0049, 28.5697, 74.8436, -60.3528, 1.24497, 75.9114, -59.2563, 1.24497, 77.2361, -57.9084, 1.24497, 76.1683, -59.0049, 1.24497, 74.8436, -59.2563, 28.5697, 77.2361, -57.9084, 28.5697, 76.1683, -60.6721, 29.8147, 75.8778, -58.972, 29.8147, 74.5311, -59.2892, 29.8147, 77.5486, -57.5892, 29.8147, 76.2019, -60.6839, 0, 75.8766, -59.2904, 0, 77.5601, -57.5774, 0, 76.2031, -58.9708, 0, 74.5196, 30.935, 28.5697, 85.5061, 32.2829, 28.5697, 84.4384, 30.935, 1.24497, 85.5061, 32.0315, 1.24497, 86.8308, 33.3794, 1.24497, 85.763, 32.2829, 1.24497, 84.4384, 32.0315, 28.5697, 86.8308, 33.3794, 28.5697, 85.763, 30.6158, 29.8147, 85.4726, 32.3158, 29.8147, 84.1259, 31.9986, 29.8147, 87.1433, 33.6986, 29.8147, 85.7966, 30.6039, 0, 85.4713, 31.9974, 0, 87.1549, 33.7105, 0, 85.7978, 32.317, 0, 84.1143, 4.85278, 28.5697, 82.7648, 6.20068, 28.5697, 81.697, 4.85278, 1.24497, 82.7648, 5.94922, 1.24497, 84.0895, 7.29713, 1.24497, 83.0217, 6.20068, 1.24497, 81.697, 5.94922, 28.5697, 84.0895, 7.29713, 28.5697, 83.0217, 4.53351, 29.8147, 82.7312, 6.23353, 29.8147, 81.3845, 5.91638, 29.8147, 84.402, 7.61639, 29.8147, 83.0553, 4.52169, 0, 82.73, 5.91517, 0, 84.4135, 7.62821, 0, 83.0565, 6.23474, 0, 81.373, -24.3015, 28.5697, 109.252, -22.9536, 28.5697, 108.184, -24.3015, 1.24497, 109.252, -23.205, 1.24497, 110.577, -21.8571, 1.24497, 109.509, -22.9536, 1.24497, 108.184, -23.205, 28.5697, 110.577, -21.8571, 28.5697, 109.509, -24.6208, 29.8147, 109.218, -22.9207, 29.8147, 107.872, -23.2379, 29.8147, 110.889, -21.5379, 29.8147, 109.542, -24.6326, 0, 109.217, -23.2391, 0, 110.901, -21.526, 0, 109.544, -22.9195, 0, 107.86, -63.4249, 28.5697, 105.14, -62.0769, 28.5697, 104.072, -63.4249, 1.24497, 105.14, -62.3284, 1.24497, 106.465, -60.9805, 1.24497, 105.397, -62.077, 1.24497, 104.072, -62.3284, 28.5697, 106.465, -60.9805, 28.5697, 105.397, -63.7441, 29.8147, 105.106, -62.0441, 29.8147, 103.76, -62.3612, 29.8147, 106.777, -60.6612, 29.8147, 105.43, -63.7559, 0, 105.105, -62.3625, 0, 106.789, -60.6494, 0, 105.432, -62.0429, 0, 103.748, 40.9041, 28.5697, 116.105, 42.252, 28.5697, 115.038, 40.9041, 1.24497, 116.105, 42.0006, 1.24497, 117.43, 43.3485, 1.24497, 116.362, 42.252, 1.24497, 115.038, 42.0006, 28.5697, 117.43, 43.3485, 28.5697, 116.362, 40.5848, 29.8147, 116.072, 42.2849, 29.8147, 114.725, 41.9677, 29.8147, 117.742, 43.6677, 29.8147, 116.396, 40.573, 0, 116.071, 41.9665, 0, 117.754, 43.6796, 0, 116.397, 42.2861, 0, 114.713, 13.3659, 28.5697, 127.217, 14.7138, 28.5697, 126.149, 13.3659, 1.24497, 127.217, 14.4623, 1.24497, 128.541, 15.8102, 1.24497, 127.474, 14.7138, 1.24497, 126.149, 14.4623, 28.5697, 128.541, 15.8102, 28.5697, 127.474, 13.0466, 29.8147, 127.183, 14.7466, 29.8147, 125.836, 14.4295, 29.8147, 128.854, 16.1295, 29.8147, 127.507, 13.0348, 0, 127.182, 14.4283, 0, 128.865, 16.1413, 0, 127.508, 14.7478, 0, 125.825, -46.2722, 28.5697, 67.392, -44.9243, 28.5697, 66.3242, -46.2722, 1.24497, 67.392, -45.1758, 1.24497, 68.7167, -43.8279, 1.24497, 67.6489, -44.9243, 1.24497, 66.3242, -45.1758, 28.5697, 68.7167, -43.8279, 28.5697, 67.6489, -46.5915, 29.8147, 67.3584, -44.8915, 29.8147, 66.0117, -45.2086, 29.8147, 69.0292, -43.5086, 29.8147, 67.6825, -46.6033, 0, 67.3572, -45.2098, 0, 69.0407, -43.4968, 0, 67.6837, -44.8902, 0, 66.0002, -33.2311, 28.5697, 68.7627, -31.8832, 28.5697, 67.6949, -33.2311, 1.24497, 68.7627, -32.1346, 1.24497, 70.0873, -30.7867, 1.24497, 69.0196, -31.8832, 1.24497, 67.6949, -32.1346, 28.5697, 70.0873, -30.7867, 28.5697, 69.0196, -33.5504, 29.8147, 68.7291, -31.8503, 29.8147, 67.3824, -32.1675, 29.8147, 70.3998, -30.4675, 29.8147, 69.0531, -33.5622, 0, 68.7279, -32.1687, 0, 70.4114, -30.4556, 0, 69.0544, -31.8491, 0, 67.3708, 43.9762, 28.5697, 86.8768, 45.3241, 28.5697, 85.809, 43.9762, 1.24497, 86.8768, 45.0726, 1.24497, 88.2015, 46.4205, 1.24497, 87.1337, 45.3241, 1.24497, 85.809, 45.0726, 28.5697, 88.2015, 46.4205, 28.5697, 87.1337, 43.6569, 29.8147, 86.8432, 45.3569, 29.8147, 85.4965, 45.0398, 29.8147, 88.514, 46.7398, 29.8147, 87.1673, 43.6451, 0, 86.842, 45.0386, 0, 88.5255, 46.7516, 0, 87.1685, 45.3581, 0, 85.485, -22.6854, 28.5697, 93.8762, -21.3375, 28.5697, 92.8084, -22.6854, 1.24497, 93.8762, -21.589, 1.24497, 95.2009, -20.2411, 1.24497, 94.1331, -21.3375, 1.24497, 92.8084, -21.589, 28.5697, 95.2009, -20.2411, 28.5697, 94.1331, -23.0047, 29.8147, 93.8426, -21.3047, 29.8147, 92.4959, -21.6218, 29.8147, 95.5133, -19.9218, 29.8147, 94.1666, -23.0165, 0, 93.8414, -21.623, 0, 95.5249, -19.91, 0, 94.1679, -21.3035, 0, 92.4843, 26.407, 28.5697, 128.587, 27.7549, 28.5697, 127.52, 26.407, 1.24497, 128.587, 27.5035, 1.24497, 129.912, 28.8514, 1.24497, 128.844, 27.7549, 1.24497, 127.52, 27.5035, 28.5697, 129.912, 28.8514, 28.5697, 128.844, 26.0878, 29.8147, 128.554, 27.7878, 29.8147, 127.207, 27.4706, 29.8147, 130.225, 29.1706, 29.8147, 128.878, 26.0759, 0, 128.553, 27.4694, 0, 130.236, 29.1825, 0, 128.879, 27.789, 0, 127.196, -61.8088, 28.5697, 89.7641, -60.4609, 28.5697, 88.6964, -61.8088, 1.24497, 89.7641, -60.7123, 1.24497, 91.0888, -59.3644, 1.24497, 90.021, -60.4609, 1.24497, 88.6964, -60.7123, 28.5697, 91.0888, -59.3644, 28.5697, 90.021, -62.1281, 29.8147, 89.7306, -60.428, 29.8147, 88.3839, -60.7452, 29.8147, 91.4013, -59.0452, 29.8147, 90.0546, -62.1399, 0, 89.7293, -60.7464, 0, 91.4129, -59.0333, 0, 90.0558, -60.4268, 0, 88.3723, -20.19, 28.5697, 70.1333, -18.8421, 28.5697, 69.0656, -20.19, 1.24497, 70.1333, -19.0935, 1.24497, 71.458, -17.7456, 1.24497, 70.3902, -18.8421, 1.24497, 69.0656, -19.0935, 28.5697, 71.458, -17.7456, 28.5697, 70.3902, -20.5092, 29.8147, 70.0998, -18.8092, 29.8147, 68.7531, -19.1264, 29.8147, 71.7705, -17.4263, 29.8147, 70.4238, -20.521, 0, 70.0985, -19.1276, 0, 71.7821, -17.4145, 0, 70.425, -18.808, 0, 68.7415, 0.324768, 28.5697, 125.846, 1.67268, 28.5697, 124.778, 0.324768, 1.24497, 125.846, 1.42122, 1.24497, 127.171, 2.76912, 1.24497, 126.103, 1.67268, 1.24497, 124.778, 1.42122, 28.5697, 127.171, 2.76912, 28.5697, 126.103, 0.00550461, 29.8147, 125.812, 1.70552, 29.8147, 124.466, 1.38838, 29.8147, 127.483, 3.08838, 29.8147, 126.137, -0.00632095, 0, 125.811, 1.38716, 0, 127.495, 3.10021, 0, 126.138, 1.70674, 0, 124.454, -12.7164, 28.5697, 124.475, -11.3685, 28.5697, 123.408, -12.7164, 1.24497, 124.475, -11.6199, 1.24497, 125.8, -10.272, 1.24497, 124.732, -11.3685, 1.24497, 123.408, -11.6199, 28.5697, 125.8, -10.272, 28.5697, 124.732, -13.0356, 29.8147, 124.442, -11.3356, 29.8147, 123.095, -11.6528, 29.8147, 126.112, -9.95275, 29.8147, 124.766, -13.0474, 0, 124.441, -11.654, 0, 126.124, -9.94092, 0, 124.767, -11.3344, 0, 123.083, 17.8939, 28.5697, 84.1355, 19.2418, 28.5697, 83.0677, 17.8939, 1.24497, 84.1355, 18.9904, 1.24497, 85.4601, 20.3383, 1.24497, 84.3924, 19.2418, 1.24497, 83.0677, 18.9904, 28.5697, 85.4601, 20.3383, 28.5697, 84.3924, 17.5746, 29.8147, 84.1019, 19.2746, 29.8147, 82.7552, 18.9575, 29.8147, 85.7726, 20.6575, 29.8147, 84.4259, 17.5628, 0, 84.1007, 18.9563, 0, 85.7842, 20.6693, 0, 84.4272, 19.2759, 0, 82.7436, -44.2947, 28.5697, -76.8709, -43.1983, 28.5697, -75.5462, -44.2947, 1.24497, -76.8709, -42.9468, 1.24497, -77.9387, -41.8504, 1.24497, -76.614, -43.1983, 1.24497, -75.5462, -42.9468, 28.5697, -77.9387, -41.8504, 28.5697, -76.614, -44.614, 29.8147, -76.9045, -43.2311, 29.8147, -75.2337, -42.914, 29.8147, -78.2512, -41.5311, 29.8147, -76.5804, -44.6258, 0, -76.9057, -42.9128, 0, -78.2627, -41.5193, 0, -76.5792, -43.2323, 0, -75.2222, -31.2536, 28.5697, -75.5002, -30.1572, 28.5697, -74.1755, -31.2536, 1.24497, -75.5002, -29.9057, 1.24497, -76.568, -28.8093, 1.24497, -75.2433, -30.1572, 1.24497, -74.1755, -29.9057, 28.5697, -76.568, -28.8093, 28.5697, -75.2433, -31.5729, 29.8147, -75.5337, -30.19, 29.8147, -73.863, -29.8729, 29.8147, -76.8804, -28.49, 29.8147, -75.2097, -31.5847, 0, -75.535, -29.8717, 0, -76.892, -28.4782, 0, -75.2085, -30.1913, 0, -73.8514, -18.2125, 28.5697, -74.1295, -17.1161, 28.5697, -72.8048, -18.2125, 1.24497, -74.1295, -16.8646, 1.24497, -75.1973, -15.7682, 1.24497, -73.8726, -17.1161, 1.24497, -72.8048, -16.8646, 28.5697, -75.1973, -15.7682, 28.5697, -73.8726, -18.5318, 29.8147, -74.1631, -17.1489, 29.8147, -72.4924, -16.8318, 29.8147, -75.5098, -15.4489, 29.8147, -73.8391, -18.5436, 0, -74.1643, -16.8305, 0, -75.5213, -15.4371, 0, -73.8378, -17.1501, 0, -72.4808, -5.1714, 28.5697, -72.7588, -4.07495, 28.5697, -71.4342, -5.1714, 1.24497, -72.7588, -3.82349, 1.24497, -73.8266, -2.72704, 1.24497, -72.5019, -4.07495, 1.24497, -71.4342, -3.82349, 28.5697, -73.8266, -2.72704, 28.5697, -72.5019, -5.49066, 29.8147, -72.7924, -4.10779, 29.8147, -71.1217, -3.79064, 29.8147, -74.1391, -2.40778, 29.8147, -72.4684, -5.50249, 0, -72.7936, -3.78943, 0, -74.1507, -2.39595, 0, -72.4671, -4.109, 0, -71.1101, -1.05985, 28.5697, -111.878, 0.0365944, 28.5697, -110.553, -1.05985, 1.24497, -111.878, 0.288052, 1.24497, -112.945, 1.3845, 1.24497, -111.621, 0.0365944, 1.24497, -110.553, 0.288052, 28.5697, -112.945, 1.3845, 28.5697, -111.621, -1.37911, 29.8147, -111.911, 0.00375557, 29.8147, -110.24, 0.320898, 29.8147, -113.258, 1.70377, 29.8147, -111.587, -1.39094, 0, -111.912, 0.322115, 0, -113.269, 1.71559, 0, -111.586, 0.00253868, 0, -110.229, -2.67591, 28.5697, -96.5017, -1.57946, 28.5697, -95.177, -2.67591, 1.24497, -96.5017, -1.328, 1.24497, -97.5695, -0.231556, 1.24497, -96.2448, -1.57946, 1.24497, -95.177, -1.328, 28.5697, -97.5695, -0.231556, 28.5697, -96.2448, -2.99518, 29.8147, -96.5353, -1.6123, 29.8147, -94.8645, -1.29516, 29.8147, -97.882, 0.0877075, 29.8147, -96.2112, -3.007, 0, -96.5365, -1.29395, 0, -97.8935, 0.0995312, 0, -96.21, -1.61352, 0, -94.853, -40.1832, 28.5697, -115.99, -39.0868, 28.5697, -114.665, -40.1832, 1.24497, -115.99, -38.8353, 1.24497, -117.057, -37.7389, 1.24497, -115.733, -39.0868, 1.24497, -114.665, -38.8353, 28.5697, -117.057, -37.7389, 28.5697, -115.733, -40.5025, 29.8147, -116.023, -39.1196, 29.8147, -114.352, -38.8025, 29.8147, -117.37, -37.4196, 29.8147, -115.699, -40.5143, 0, -116.024, -38.8013, 0, -117.381, -37.4078, 0, -115.698, -39.1208, 0, -114.341, -41.7993, 28.5697, -100.614, -40.7029, 28.5697, -99.289, -41.7993, 1.24497, -100.614, -40.4514, 1.24497, -101.681, -39.3549, 1.24497, -100.357, -40.7029, 1.24497, -99.289, -40.4514, 28.5697, -101.681, -39.3549, 28.5697, -100.357, -42.1186, 29.8147, -100.647, -40.7357, 29.8147, -98.9765, -40.4186, 29.8147, -101.994, -39.0357, 29.8147, -100.323, -42.1304, 0, -100.648, -40.4173, 0, -102.006, -39.0239, 0, -100.322, -40.7369, 0, -98.965, -4.13191, 28.5697, -82.6489, -3.03546, 28.5697, -81.3242, -4.13191, 1.24497, -82.6489, -2.784, 1.24497, -83.7167, -1.68755, 1.24497, -82.392, -3.03546, 1.24497, -81.3242, -2.784, 28.5697, -83.7167, -1.68755, 28.5697, -82.392, -4.45117, 29.8147, -82.6825, -3.0683, 29.8147, -81.0118, -2.75115, 29.8147, -84.0292, -1.36829, 29.8147, -82.3585, -4.463, 0, -82.6837, -2.74994, 0, -84.0408, -1.35646, 0, -82.3572, -3.06951, 0, -81.0002, 8.90922, 28.5697, -81.2782, 10.0057, 28.5697, -79.9536, 8.90922, 1.24497, -81.2782, 10.2571, 1.24497, -82.346, 11.3536, 1.24497, -81.0213, 10.0057, 1.24497, -79.9536, 10.2571, 28.5697, -82.346, 11.3536, 28.5697, -81.0213, 8.58996, 29.8147, -81.3118, 9.97283, 29.8147, -79.6411, 10.29, 29.8147, -82.6585, 11.6728, 29.8147, -80.9878, 8.57813, 0, -81.313, 10.2912, 0, -82.6701, 11.6847, 0, -80.9865, 9.97161, 0, -79.6295, -17.173, 28.5697, -84.0197, -16.0766, 28.5697, -82.695, -17.173, 1.24497, -84.0197, -15.8251, 1.24497, -85.0874, -14.7287, 1.24497, -83.7627, -16.0766, 1.24497, -82.695, -15.8251, 28.5697, -85.0874, -14.7287, 28.5697, -83.7627, -17.4923, 29.8147, -84.0532, -16.1094, 29.8147, -82.3825, -15.7923, 29.8147, -85.3999, -14.4094, 29.8147, -83.7292, -17.5041, 0, -84.0544, -15.791, 0, -85.4115, -14.3976, 0, -83.7279, -16.1106, 0, -82.3709, -30.2141, 28.5697, -85.3903, -29.1177, 28.5697, -84.0656, -30.2141, 1.24497, -85.3903, -28.8662, 1.24497, -86.4581, -27.7698, 1.24497, -85.1334, -29.1177, 1.24497, -84.0656, -28.8662, 28.5697, -86.4581, -27.7698, 28.5697, -85.1334, -30.5334, 29.8147, -85.4239, -29.1505, 29.8147, -83.7531, -28.8334, 29.8147, -86.7706, -27.4505, 29.8147, -85.0998, -30.5452, 0, -85.4251, -28.8322, 0, -86.7821, -27.4387, 0, -85.0986, -29.1517, 0, -83.7416, -43.2553, 28.5697, -86.761, -42.1588, 28.5697, -85.4363, -43.2553, 1.24497, -86.761, -41.9074, 1.24497, -87.8288, -40.8109, 1.24497, -86.5041, -42.1588, 1.24497, -85.4363, -41.9074, 28.5697, -87.8288, -40.8109, 28.5697, -86.5041, -43.5745, 29.8147, -86.7945, -42.1917, 29.8147, -85.1238, -41.8745, 29.8147, -88.1412, -40.4917, 29.8147, -86.4705, -43.5864, 0, -86.7958, -41.8733, 0, -88.1528, -40.4798, 0, -86.4693, -42.1929, 0, -85.1122, 48.0326, 28.5697, -77.1662, 49.129, 28.5697, -75.8416, 48.0326, 1.24497, -77.1662, 49.3805, 1.24497, -78.234, 50.477, 1.24497, -76.9093, 49.129, 1.24497, -75.8416, 49.3805, 28.5697, -78.234, 50.477, 28.5697, -76.9093, 47.7133, 29.8147, -77.1998, 49.0962, 29.8147, -75.5291, 49.4133, 29.8147, -78.5465, 50.7962, 29.8147, -76.8758, 47.7015, 0, -77.201, 49.4146, 0, -78.5581, 50.808, 0, -76.8745, 49.095, 0, -75.5175, 21.9503, 28.5697, -79.9076, 23.0468, 28.5697, -78.5829, 21.9503, 1.24497, -79.9076, 23.2983, 1.24497, -80.9754, 24.3947, 1.24497, -79.6507, 23.0468, 1.24497, -78.5829, 23.2983, 28.5697, -80.9754, 24.3947, 28.5697, -79.6507, 21.6311, 29.8147, -79.9411, 23.014, 29.8147, -78.2704, 23.3311, 29.8147, -81.2878, 24.714, 29.8147, -79.6171, 21.6193, 0, -79.9424, 23.3323, 0, -81.2994, 24.7258, 0, -79.6159, 23.0127, 0, -78.2589, 34.9915, 28.5697, -78.5369, 36.0879, 28.5697, -77.2122, 34.9915, 1.24497, -78.5369, 36.3394, 1.24497, -79.6047, 37.4358, 1.24497, -78.28, 36.0879, 1.24497, -77.2122, 36.3394, 28.5697, -79.6047, 37.4358, 28.5697, -78.28, 34.6722, 29.8147, -78.5705, 36.0551, 29.8147, -76.8997, 36.3722, 29.8147, -79.9172, 37.7551, 29.8147, -78.2464, 34.6604, 0, -78.5717, 36.3734, 0, -79.9287, 37.7669, 0, -78.2452, 36.0538, 0, -76.8882, -38.7273, 28.5697, -129.842, -37.6308, 28.5697, -128.518, -38.7273, 1.24497, -129.842, -37.3793, 1.24497, -130.91, -36.2829, 1.24497, -129.585, -37.6308, 1.24497, -128.518, -37.3793, 28.5697, -130.91, -36.2829, 28.5697, -129.585, -39.0465, 29.8147, -129.876, -37.6636, 29.8147, -128.205, -37.3465, 29.8147, -131.223, -35.9636, 29.8147, -129.552, -39.0583, 0, -129.877, -37.3453, 0, -131.234, -35.9518, 0, -129.551, -37.6649, 0, -128.194, -25.6861, 28.5697, -128.472, -24.5897, 28.5697, -127.147, -25.6861, 1.24497, -128.472, -24.3382, 1.24497, -129.539, -23.2418, 1.24497, -128.215, -24.5897, 1.24497, -127.147, -24.3382, 28.5697, -129.539, -23.2418, 28.5697, -128.215, -26.0054, 29.8147, -128.505, -24.6225, 29.8147, -126.834, -24.3054, 29.8147, -129.852, -22.9225, 29.8147, -128.181, -26.0172, 0, -128.506, -24.3041, 0, -129.863, -22.9107, 0, -128.18, -24.6237, 0, -126.823, -12.645, 28.5697, -127.101, -11.5486, 28.5697, -125.776, -12.645, 1.24497, -127.101, -11.2971, 1.24497, -128.169, -10.2007, 1.24497, -126.844, -11.5486, 1.24497, -125.776, -11.2971, 28.5697, -128.169, -10.2007, 28.5697, -126.844, -12.9643, 29.8147, -127.135, -11.5814, 29.8147, -125.464, -11.2643, 29.8147, -128.481, -9.88139, 29.8147, -126.811, -12.9761, 0, -127.136, -11.263, 0, -128.493, -9.86956, 0, -126.809, -11.5826, 0, -125.452, 0.396124, 28.5697, -125.73, 1.49257, 28.5697, -124.406, 0.396124, 1.24497, -125.73, 1.74403, 1.24497, -126.798, 2.84048, 1.24497, -125.473, 1.49257, 1.24497, -124.406, 1.74403, 28.5697, -126.798, 2.84048, 28.5697, -125.473, 0.0768566, 29.8147, -125.764, 1.45973, 29.8147, -124.093, 1.77687, 29.8147, -127.111, 3.15974, 29.8147, -125.44, 0.0650349, 0, -125.765, 1.77809, 0, -127.122, 3.17156, 0, -125.439, 1.45852, 0, -124.082, 13.4372, 28.5697, -124.36, 14.5337, 28.5697, -123.035, 13.4372, 1.24497, -124.36, 14.7851, 1.24497, -125.427, 15.8816, 1.24497, -124.103, 14.5337, 1.24497, -123.035, 14.7851, 28.5697, -125.427, 15.8816, 28.5697, -124.103, 13.118, 29.8147, -124.393, 14.5008, 29.8147, -122.722, 14.818, 29.8147, -125.74, 16.2009, 29.8147, -124.069, 13.1061, 0, -124.394, 14.8192, 0, -125.751, 16.2127, 0, -124.068, 14.4996, 0, -122.711, 26.4784, 28.5697, -122.989, 27.5748, 28.5697, -121.664, 26.4784, 1.24497, -122.989, 27.8263, 1.24497, -124.057, 28.9227, 1.24497, -122.732, 27.5748, 1.24497, -121.664, 27.8263, 28.5697, -124.057, 28.9227, 28.5697, -122.732, 26.1591, 29.8147, -123.023, 27.542, 29.8147, -121.352, 27.8591, 29.8147, -124.369, 29.242, 29.8147, -122.698, 26.1473, 0, -123.024, 27.8604, 0, -124.381, 29.2538, 0, -122.697, 27.5408, 0, -121.34, 39.5195, 28.5697, -121.618, 40.616, 28.5697, -120.294, 39.5195, 1.24497, -121.618, 40.8674, 1.24497, -122.686, 41.9639, 1.24497, -121.361, 40.616, 1.24497, -120.294, 40.8674, 28.5697, -122.686, 41.9639, 28.5697, -121.361, 39.2002, 29.8147, -121.652, 40.5831, 29.8147, -119.981, 40.9003, 29.8147, -122.998, 42.2831, 29.8147, -121.328, 39.1884, 0, -121.653, 40.9015, 0, -123.01, 42.2949, 0, -121.327, 40.5819, 0, -119.969, 52.5606, 28.5697, -120.248, 53.6571, 28.5697, -118.923, 52.5606, 1.24497, -120.248, 53.9085, 1.24497, -121.315, 55.005, 1.24497, -119.991, 53.6571, 1.24497, -118.923, 53.9085, 28.5697, -121.315, 55.005, 28.5697, -119.991, 52.2413, 29.8147, -120.281, 53.6242, 29.8147, -118.61, 53.9414, 29.8147, -121.628, 55.3242, 29.8147, -119.957, 52.2295, 0, -120.282, 53.9426, 0, -121.639, 55.3361, 0, -119.956, 53.623, 0, -118.599, 61.0737, 28.5697, -75.7956, 62.1702, 28.5697, -74.4709, 61.0737, 1.24497, -75.7956, 62.4216, 1.24497, -76.8634, 63.5181, 1.24497, -75.5387, 62.1702, 1.24497, -74.4709, 62.4216, 28.5697, -76.8634, 63.5181, 28.5697, -75.5387, 60.7545, 29.8147, -75.8291, 62.1373, 29.8147, -74.1584, 62.4545, 29.8147, -77.1758, 63.8374, 29.8147, -75.5051, 60.7427, 0, -75.8304, 62.4557, 0, -77.1874, 63.8492, 0, -75.5039, 62.1361, 0, -74.1469, 62.5297, 28.5697, -89.6483, 63.6261, 28.5697, -88.3236, 62.5297, 1.24497, -89.6483, 63.8776, 1.24497, -90.7161, 64.974, 1.24497, -89.3914, 63.6261, 1.24497, -88.3236, 63.8776, 28.5697, -90.7161, 64.974, 28.5697, -89.3914, 62.2104, 29.8147, -89.6819, 63.5933, 29.8147, -88.0112, 63.9104, 29.8147, -91.0286, 65.2933, 29.8147, -89.3578, 62.1986, 0, -89.6831, 63.9116, 0, -91.0402, 65.3051, 0, -89.3566, 63.592, 0, -87.9996, 64.1458, 28.5697, -105.024, 65.2422, 28.5697, -103.699, 64.1458, 1.24497, -105.024, 65.4937, 1.24497, -106.092, 66.5901, 1.24497, -104.767, 65.2422, 1.24497, -103.699, 65.4937, 28.5697, -106.092, 66.5901, 28.5697, -104.767, 63.8265, 29.8147, -105.058, 65.2094, 29.8147, -103.387, 65.5265, 29.8147, -106.404, 66.9094, 29.8147, -104.734, 63.8147, 0, -105.059, 65.5277, 0, -106.416, 66.9212, 0, -104.732, 65.2081, 0, -103.375, 65.5976, 28.5697, -118.837, 66.694, 28.5697, -117.513, 65.5976, 1.24497, -118.837, 66.9455, 1.24497, -119.905, 68.0419, 1.24497, -118.58, 66.694, 1.24497, -117.513, 66.9455, 28.5697, -119.905, 68.0419, 28.5697, -118.58, 65.2783, 29.8147, -118.871, 66.6612, 29.8147, -117.2, 66.9783, 29.8147, -120.218, 68.3612, 29.8147, -118.547, 65.2665, 0, -118.872, 66.9796, 0, -120.229, 68.373, 0, -118.546, 66.66, 0, -117.189, -27.7462, 53.0189, 64.2795, -27.7462, -1.52588E-5, 64.2795, -51.6083, 53.0189, 55.3719, -52.2736, 53.0189, 61.7015, -52.2736, -1.52588E-5, 61.7015, -51.6083, -1.52588E-5, 55.3719, -25.0641, 53.0189, 38.7612, -24.3988, 53.0189, 32.4316, -25.0641, -1.52588E-5, 38.7612, -48.9263, 53.0189, 29.8536, -49.5916, 53.0189, 36.1833, -49.5916, -1.52588E-5, 36.1833, -21.7818, 53.0189, 7.53261, -46.9746, 53.0189, 11.2843, -46.3093, 53.0189, 4.95467, -22.4471, 53.0189, 13.8623, -46.9746, -1.52588E-5, 11.2843, -22.4471, -1.52588E-5, 13.8623, -21.7818, -1.52588E-5, 7.53261, -19.2861, 53.0189, -16.2128, -18.6208, -1.52588E-5, -22.5424, -18.6208, 53.0189, -22.5424, -19.2861, -1.52588E-5, -16.2128, -43.1483, 53.0189, -25.1204, -43.8136, 53.0189, -18.7907, -43.8136, -1.52588E-5, -18.7907, -43.1483, -1.52588E-5, -25.1204, -16.8768, 53.0189, -39.1356, -16.2115, 53.0189, -45.4653, -16.8768, -1.52588E-5, -39.1356, -40.739, 53.0189, -48.0432, -41.4043, 53.0189, -41.7136, -41.4043, -1.52588E-5, -41.7136, -40.739, -1.52588E-5, -48.0432, -14.4407, 53.0189, -62.3138, -13.7754, 53.0189, -68.6434, -14.4407, -1.52588E-5, -62.3138, -38.3029, 53.0189, -71.2214, -38.9681, 53.0189, -64.8917, -38.9681, -1.52588E-5, -64.8917, -24.3988, -1.52588E-5, 32.4316, -48.9263, -1.52588E-5, 29.8536, -46.3093, -1.52588E-5, 4.95467, -16.2115, -1.52588E-5, -45.4653, -13.7754, -1.52588E-5, -68.6434, -38.3029, -1.52588E-5, -71.2214, -27.0809, 53.0189, 57.9498, -27.0809, -1.52588E-5, 57.9498, -30.1105, 96.4687, 4.30833, -29.0559, 117.07, -5.72605, -30.6744, 87.7298, 9.67281, -27.4631, 101.457, -20.8799, -29.5873, 108.505, -0.670053, -29.6087, 85.771, -0.466425, -31.0442, 102.561, 13.1914, -29.1354, 112.143, -4.96939, -28.9512, 100.132, -6.72186, -27.5963, 91.0542, -19.613, -30.2017, 90.7686, 5.17579, -29.312, 114.153, -3.28865, -30.8417, 91.4574, 11.265, -29.1638, 121.227, -4.69915, -28.509, 98.0475, -10.9288, -27.9248, 96.945, -16.4877, -31.2331, 83.5336, 14.9885, -29.9309, 102.782, 2.59931, -30.3658, 88.4835, 6.73749, -29.3037, 116.961, -3.36779, -31.002, 95.8025, 12.7903, -29.1381, 114.984, -4.94369, -30.6366, 96.8443, 9.31406, -29.2861, 89.6905, -3.53576, -28.9781, 89.9238, -6.46573, -28.1972, 87.629, -13.8954, -30.1372, 85.7588, 4.56205, -29.2112, 110.942, -4.24836, -30.8947, 87.5906, 11.7692, -28.6711, 90.1226, -9.38695, -29.0236, 108.603, -6.03337, -27.7954, 91.9166, -17.7191, -28.7413, 99.0463, -8.71897, -31.0996, 99.9251, 13.719, -29.5235, 122.013, -1.27638, -28.5383, 101.547, -10.6505, -29.9649, 97.3321, 2.9226, -30.4325, 96.1615, 7.37135, -27.5762, 96.5328, -19.8046, -28.7367, 121.144, -8.7627, -29.121, 119.203, -5.10641, -27.8204, 99.756, -17.4811, -29.2068, 115.052, -4.29032, -28.8966, 107.458, -7.24104, -27.2612, 83.5336, -22.8012, -30.5975, 91.0732, 8.94116, -28.9532, 114.271, -6.70305, -29.3993, 107.273, -2.45881, -29.2141, 112.575, -4.22023, -28.4203, 91.8129, -11.7729, -30.1262, 92.6322, 4.45745, -27.9784, 85.6488, -15.9779, -30.5488, 85.8969, 8.47787, -28.81, 85.9952, -8.0649, -28.4963, 85.7064, -11.0503]; + uvs = new [0.417573, 0.772497, 0.417573, 0.227503, 0.392687, 0.238723, 0.000499547, 0.779171, 0.015304, 0.772497, 0.358597, 0.238723, 0.0401904, 0.238723, 0.358596, 0.761277, 0.000499845, 0.220829, 0.432378, 0.779171, 0.392687, 0.761277, 0.432378, 0.220829, 0.0401904, 0.238723, 0.0742807, 0.754294, 0.358596, 0.761277, 0.358596, 0.754294, 0.0742807, 0.754294, 0.358596, 0.761277, 0.358597, 0.238723, 0.074281, 0.248246, 0.074281, 0.238723, 0.358597, 0.248246, 0.358597, 0.248246, 0.074281, 0.248246, 0.0742809, 0.584867, 0.358596, 0.584867, 0.358597, 0.419011, 0.0742809, 0.419011, 0.0742809, 0.429792, 0.0742809, 0.576605, 0.358596, 0.576605, 0.358597, 0.429792, 0.358597, 0.419011, 0.0742809, 0.419011, 0.0742809, 0.584867, 0.358596, 0.584867, 0.358596, 0.576605, 0.0742809, 0.576605, 0.0742809, 0.429792, 0.358597, 0.429792, 0.0401902, 0.576605, 0.0401903, 0.429792, 0.0742809, 0.375706, 0.074281, 0.358322, 0.074281, 0.260604, 0.074281, 0.238723, 0.0742809, 0.429792, 0.0401903, 0.429792, 0.0401902, 0.576605, 0.0599935, 0.576605, 0.0599935, 0.576605, 0.0742809, 0.576605, 0.392687, 0.761277, 0.392687, 0.576605, 0.392687, 0.429792, 0.392687, 0.238723, 0.376131, 0.260605, 0.358597, 0.260604, 0.392687, 0.576605, 0.392687, 0.429792, 0.376131, 0.429792, 0.376131, 0.576605, 0.358596, 0.744929, 0.376131, 0.576605, 0.358596, 0.576605, 0.376131, 0.686396, 0.376131, 0.702577, 0.376131, 0.702577, 0.376131, 0.647877, 0.376131, 0.686396, 0.376131, 0.630192, 0.376131, 0.647877, 0.376131, 0.611033, 0.376131, 0.630192, 0.376131, 0.611033, 0.358596, 0.611033, 0.358596, 0.744929, 0.358596, 0.702577, 0.358596, 0.686396, 0.358596, 0.647877, 0.358596, 0.630192, 0.358597, 0.358322, 0.358596, 0.611033, 0.358596, 0.630192, 0.358596, 0.647877, 0.358596, 0.686396, 0.358596, 0.702577, 0.0742807, 0.744929, 0.0742807, 0.761277, 0.0742807, 0.744929, 0.0742808, 0.636528, 0.0742808, 0.636528, 0.0742808, 0.647877, 0.0742808, 0.611033, 0.0742808, 0.702577, 0.0742808, 0.702577, 0.0742808, 0.686396, 0.0742808, 0.686396, 0.0742808, 0.647877, 0.0742808, 0.611033, 0.0599934, 0.611033, 0.0599934, 0.636528, 0.0599934, 0.611033, 0.0599934, 0.636528, 0.0599934, 0.647877, 0.0599934, 0.647877, 0.0599934, 0.686396, 0.0599934, 0.686396, 0.0599934, 0.702577, 0.0599934, 0.702577, 0.0599936, 0.358322, 0.0599936, 0.395708, 0.0599936, 0.317327, 0.0599936, 0.260604, 0.0599936, 0.395708, 0.376131, 0.317327, 0.376131, 0.317327, 0.376131, 0.260605, 0.417573, 0.772497, 0.417573, 0.227503, 0.0153043, 0.227503, 0.0153043, 0.227503, 0.0742807, 0.761277, 0.358597, 0.238723, 0.074281, 0.238723, 0.0599936, 0.429792, 0.0599936, 0.260604, 0.074281, 0.317327, 0.0742809, 0.375706, 0.358597, 0.358322, 0.358597, 0.300304, 0.358597, 0.429792, 0.358597, 0.395708, 0.392687, 0.761277, 0.0742809, 0.395708, 0.0742809, 0.395708, 0.074281, 0.358322, 0.074281, 0.300304, 0.074281, 0.300304, 0.074281, 0.317327, 0.0599936, 0.429792, 0.376131, 0.429792, 0.376131, 0.429792, 0.358597, 0.260604, 0.358597, 0.300304, 0.358597, 0.317327, 0.358597, 0.317327, 0.358597, 0.395708, 0.358597, 0.375706, 0.358597, 0.375706, 0.0599936, 0.375706, 0.0599936, 0.300304, 0.0599936, 0.300304, 0.0599936, 0.317327, 0.0599936, 0.358322, 0.376131, 0.358322, 0.376131, 0.375706, 0.376131, 0.375706, 0.376131, 0.358322, 0.376131, 0.300304, 0.0599936, 0.429792, 0.0599936, 0.375706, 0.376131, 0.395708, 0.376131, 0.395708, 0.376131, 0.300304, 0.0742807, 0.761277, 0.015304, 0.772497, 0.0401902, 0.761277, 0.358596, 0.761277, 0.0742807, 0.761277, 0.074281, 0.238723, 0.358597, 0.238723, 0.0401902, 0.761277, 0.0401904, 0.238723, 0.376131, 0.744929, 0.0599934, 0.744929, 0.358596, 0.754294, 0.376131, 0.744929, 0.0401902, 0.761277, 0.0599934, 0.744929, 0.074281, 0.260604, 0.0401902, 0.761277, 0.392687, 0.761277, 0.392687, 0.238723, 0.0401904, 0.238723, 0.420585, 0.834896, 0.420585, 0.964305, 0.420585, 0.834896, 0.921773, 0.834896, 0.921773, 0.834896, 0.921772, 0.964305, 0.215416, 0.761277, 0.437494, 0.761277, 0.9995, 0.7997, 0.976553, 0.989203, 0.050758, 0.989203, 0.0507581, 0.771574, 0.0507581, 0.771574, 0.414653, 0.771574, 0.414653, 0.771574, 0.414653, 0.809998, 0.215416, 0.8996, 0.0279173, 0.9995, 0.999499, 0.8996, 0.437494, 0.7997, 0.414653, 0.809998, 0.420585, 0.964305, 0.976553, 0.809998, 0.050758, 0.989203, 0.921772, 0.964305, 0.0279174, 0.761277, 0.976553, 0.809998, 0.976553, 0.989203, 0.999499, 0.999501, 0.420586, 0.165104, 0.420586, 0.035695, 0.420586, 0.165104, 0.921773, 0.165104, 0.921773, 0.165104, 0.921773, 0.0356951, 0.215416, 0.238723, 0.437495, 0.238723, 0.9995, 0.2003, 0.976554, 0.0107969, 0.050759, 0.0107968, 0.0507589, 0.228425, 0.0507589, 0.228425, 0.414654, 0.228425, 0.414654, 0.228425, 0.414654, 0.190002, 0.215417, 0.100399, 0.0279183, 0.000499368, 0.9995, 0.1004, 0.437495, 0.2003, 0.414654, 0.190002, 0.420586, 0.035695, 0.976554, 0.190002, 0.050759, 0.0107968, 0.921773, 0.0356951, 0.0279182, 0.238723, 0.976554, 0.190002, 0.976554, 0.0107969, 0.9995, 0.000499487, 0.392687, 0.238723, 0.047442, 0.566805, 0.0742807, 0.554734, 0.047442, 0.566805, 0.0742807, 0.578876, 0.10112, 0.566805, 0.0742807, 0.554734, 0.0742807, 0.578876, 0.10112, 0.566805, 0.040431, 0.566805, 0.0742808, 0.55158, 0.0742807, 0.582029, 0.108131, 0.566805, 0.0401713, 0.566805, 0.0742807, 0.582146, 0.10839, 0.566805, 0.0742808, 0.551464, 0.0474421, 0.254092, 0.074281, 0.242021, 0.0474421, 0.254092, 0.0742809, 0.266163, 0.10112, 0.254092, 0.074281, 0.242021, 0.0742809, 0.266163, 0.10112, 0.254092, 0.0404312, 0.254092, 0.074281, 0.238867, 0.074281, 0.269316, 0.108131, 0.254092, 0.0401715, 0.254092, 0.0742809, 0.269433, 0.10839, 0.254092, 0.074281, 0.238751, 0.331758, 0.254092, 0.358597, 0.242021, 0.331758, 0.254092, 0.358597, 0.266163, 0.385436, 0.254092, 0.358597, 0.242021, 0.358597, 0.266163, 0.385436, 0.254092, 0.324747, 0.254092, 0.358597, 0.238867, 0.358597, 0.269316, 0.392446, 0.254092, 0.324487, 0.254092, 0.358597, 0.269433, 0.392706, 0.254092, 0.358597, 0.238751, 0.331758, 0.35323, 0.358597, 0.341159, 0.331758, 0.35323, 0.358597, 0.365301, 0.385435, 0.35323, 0.358597, 0.341159, 0.358597, 0.365301, 0.385435, 0.35323, 0.324747, 0.35323, 0.358597, 0.338006, 0.358597, 0.368455, 0.392446, 0.35323, 0.324487, 0.35323, 0.358597, 0.368571, 0.392706, 0.35323, 0.358597, 0.337889, 0.047442, 0.35323, 0.0742809, 0.341159, 0.047442, 0.35323, 0.0742809, 0.365301, 0.10112, 0.35323, 0.0742809, 0.341159, 0.0742809, 0.365301, 0.10112, 0.35323, 0.0404311, 0.35323, 0.0742809, 0.338006, 0.0742809, 0.368455, 0.108131, 0.35323, 0.0401714, 0.35323, 0.0742809, 0.368572, 0.10839, 0.35323, 0.0742809, 0.337889, 0.047442, 0.449963, 0.0742809, 0.437892, 0.047442, 0.449963, 0.0742808, 0.462034, 0.10112, 0.449963, 0.0742809, 0.437892, 0.0742808, 0.462034, 0.10112, 0.449963, 0.0404311, 0.449963, 0.0742809, 0.434739, 0.0742809, 0.465187, 0.108131, 0.449963, 0.0401714, 0.449963, 0.0742809, 0.465304, 0.10839, 0.449963, 0.0742809, 0.434622, 0.331758, 0.449963, 0.358597, 0.437892, 0.331758, 0.449963, 0.358597, 0.462034, 0.385435, 0.449963, 0.358597, 0.437892, 0.358597, 0.462034, 0.385435, 0.449963, 0.324747, 0.449963, 0.358597, 0.434739, 0.358597, 0.465187, 0.392446, 0.449963, 0.324487, 0.449963, 0.358597, 0.465304, 0.392706, 0.449963, 0.358597, 0.434622, 0.331758, 0.566805, 0.358597, 0.554734, 0.331758, 0.566805, 0.358597, 0.578876, 0.385435, 0.566805, 0.358597, 0.554734, 0.358597, 0.578876, 0.385435, 0.566805, 0.324747, 0.566805, 0.358597, 0.551581, 0.358597, 0.582029, 0.392446, 0.566805, 0.324487, 0.566805, 0.358597, 0.582146, 0.392706, 0.566805, 0.358597, 0.551464, 0.331758, 0.65586, 0.358597, 0.643789, 0.331758, 0.65586, 0.358596, 0.667931, 0.385435, 0.65586, 0.358597, 0.643789, 0.358596, 0.667931, 0.385435, 0.65586, 0.324747, 0.65586, 0.358597, 0.640636, 0.358596, 0.671085, 0.392446, 0.65586, 0.324487, 0.65586, 0.358596, 0.671201, 0.392706, 0.65586, 0.358597, 0.640519, 0.0474421, 0.65586, 0.0742809, 0.643789, 0.0474421, 0.65586, 0.0742809, 0.667931, 0.10112, 0.65586, 0.0742809, 0.643789, 0.0742809, 0.667931, 0.10112, 0.65586, 0.0404311, 0.65586, 0.0742809, 0.640636, 0.0742809, 0.671085, 0.108131, 0.65586, 0.0401714, 0.65586, 0.0742809, 0.671201, 0.10839, 0.65586, 0.0742809, 0.640519, 0.0474419, 0.745908, 0.0742807, 0.733837, 0.0474419, 0.745908, 0.0742807, 0.757979, 0.10112, 0.745908, 0.0742807, 0.733837, 0.0742807, 0.757979, 0.10112, 0.745908, 0.040431, 0.745908, 0.0742807, 0.730684, 0.0742807, 0.761132, 0.108131, 0.745908, 0.0401713, 0.745908, 0.0742807, 0.761249, 0.10839, 0.745908, 0.0742807, 0.730567, 0.331758, 0.745908, 0.358596, 0.733837, 0.331758, 0.745908, 0.358596, 0.757979, 0.385435, 0.745908, 0.358596, 0.733837, 0.358596, 0.757979, 0.385435, 0.745908, 0.324747, 0.745908, 0.358596, 0.730683, 0.358596, 0.761132, 0.392446, 0.745908, 0.324487, 0.745908, 0.358596, 0.761249, 0.392706, 0.745908, 0.358596, 0.730567, 0.390744, 0.0165601, 0.401276, 0.0212075, 0.390744, 0.0165601, 0.401276, 0.0119127, 0.411808, 0.0165601, 0.401276, 0.0212075, 0.401276, 0.0119127, 0.411808, 0.0165601, 0.387993, 0.0165601, 0.401276, 0.0224215, 0.401276, 0.0106987, 0.414559, 0.0165601, 0.387891, 0.0165601, 0.401276, 0.0106537, 0.414661, 0.0165601, 0.401276, 0.0224664, 0.952644, 0.130114, 0.963176, 0.134761, 0.952644, 0.130114, 0.963176, 0.125466, 0.973708, 0.130114, 0.963176, 0.134761, 0.963176, 0.125466, 0.973708, 0.130114, 0.949893, 0.130114, 0.963176, 0.135975, 0.963176, 0.124252, 0.976459, 0.130114, 0.949791, 0.130114, 0.963176, 0.124207, 0.976561, 0.130114, 0.963176, 0.13602, 0.0536044, 0.222354, 0.0641363, 0.227002, 0.0536044, 0.222354, 0.0641363, 0.217707, 0.0746682, 0.222354, 0.0641363, 0.227002, 0.0641363, 0.217707, 0.0746682, 0.222354, 0.0508532, 0.222354, 0.0641363, 0.228216, 0.0641363, 0.216493, 0.0774195, 0.222354, 0.0507513, 0.222354, 0.0641363, 0.216448, 0.0775213, 0.222354, 0.0641363, 0.228261, 0.278364, 0.0165603, 0.288896, 0.0212077, 0.278364, 0.0165603, 0.288896, 0.0119129, 0.299428, 0.0165603, 0.288896, 0.0212076, 0.288896, 0.0119129, 0.299428, 0.0165603, 0.275613, 0.0165603, 0.288896, 0.0224216, 0.288896, 0.0106989, 0.302179, 0.0165603, 0.275511, 0.0165603, 0.288896, 0.010654, 0.302281, 0.0165603, 0.288896, 0.0224665, 0.165984, 0.0165606, 0.176516, 0.0212079, 0.165984, 0.0165606, 0.176516, 0.0119132, 0.187048, 0.0165606, 0.176516, 0.0212078, 0.176516, 0.0119132, 0.187048, 0.0165606, 0.163233, 0.0165606, 0.176516, 0.0224218, 0.176516, 0.0106992, 0.189799, 0.0165606, 0.163131, 0.0165606, 0.176516, 0.0106542, 0.189901, 0.0165606, 0.176516, 0.0224668, 0.0536043, 0.0165602, 0.0641363, 0.0212076, 0.0536043, 0.0165602, 0.0641363, 0.0119129, 0.0746682, 0.0165602, 0.0641363, 0.0212076, 0.0641363, 0.0119129, 0.0746682, 0.0165602, 0.0508531, 0.0165602, 0.0641363, 0.0224216, 0.0641363, 0.0106989, 0.0774194, 0.0165602, 0.0507512, 0.0165602, 0.0641363, 0.010654, 0.0775213, 0.0165602, 0.0641363, 0.0224665, 0.952644, 0.0167142, 0.963176, 0.0213616, 0.952644, 0.0167142, 0.963176, 0.012067, 0.973708, 0.0167142, 0.963176, 0.0213616, 0.963176, 0.012067, 0.973708, 0.0167142, 0.949893, 0.0167142, 0.963176, 0.0225756, 0.963176, 0.0108529, 0.976459, 0.0167142, 0.949791, 0.0167142, 0.963176, 0.010808, 0.976561, 0.0167142, 0.963176, 0.0226206, 0.390744, 0.183931, 0.401276, 0.188579, 0.390744, 0.183931, 0.401276, 0.179284, 0.411808, 0.183931, 0.401276, 0.188579, 0.401276, 0.179284, 0.411808, 0.183931, 0.387993, 0.183931, 0.401276, 0.189793, 0.401276, 0.17807, 0.414559, 0.183931, 0.387891, 0.183931, 0.401276, 0.178025, 0.414661, 0.183931, 0.401276, 0.189838, 0.503124, 0.183931, 0.513656, 0.188578, 0.503124, 0.183931, 0.513656, 0.179284, 0.524188, 0.183931, 0.513656, 0.188578, 0.513656, 0.179284, 0.524188, 0.183931, 0.500373, 0.183931, 0.513656, 0.189793, 0.513656, 0.17807, 0.526939, 0.183931, 0.500271, 0.183931, 0.513656, 0.178025, 0.527041, 0.183931, 0.513656, 0.189837, 0.278364, 0.183931, 0.288896, 0.188579, 0.278364, 0.183931, 0.288896, 0.179284, 0.299428, 0.183931, 0.288896, 0.188579, 0.288896, 0.179284, 0.299428, 0.183931, 0.275613, 0.183931, 0.288896, 0.189793, 0.288896, 0.17807, 0.302179, 0.183931, 0.275511, 0.183931, 0.288896, 0.178025, 0.302281, 0.183931, 0.288896, 0.189838, 0.165984, 0.183931, 0.176516, 0.188578, 0.165984, 0.183931, 0.176516, 0.179284, 0.187048, 0.183931, 0.176516, 0.188578, 0.176516, 0.179284, 0.187048, 0.183931, 0.163233, 0.183931, 0.176516, 0.189793, 0.176516, 0.17807, 0.189799, 0.183931, 0.163131, 0.183931, 0.176516, 0.178025, 0.189901, 0.183931, 0.176516, 0.189837, 0.0536044, 0.183931, 0.0641364, 0.188578, 0.0536044, 0.183931, 0.0641364, 0.179284, 0.0746683, 0.183931, 0.0641364, 0.188578, 0.0641364, 0.179284, 0.0746683, 0.183931, 0.0508533, 0.183931, 0.0641364, 0.189793, 0.0641364, 0.17807, 0.0774195, 0.183931, 0.0507513, 0.183931, 0.0641364, 0.178025, 0.0775214, 0.183931, 0.0641364, 0.189837, 0.840264, 0.183931, 0.850796, 0.188579, 0.840264, 0.183931, 0.850796, 0.179284, 0.861328, 0.183931, 0.850796, 0.188579, 0.850796, 0.179284, 0.861328, 0.183931, 0.837513, 0.183931, 0.850796, 0.189793, 0.850796, 0.17807, 0.864079, 0.183931, 0.837411, 0.183931, 0.850796, 0.178025, 0.864181, 0.183931, 0.850796, 0.189838, 0.615504, 0.183931, 0.626036, 0.188578, 0.615504, 0.183931, 0.626036, 0.179284, 0.636568, 0.183931, 0.626036, 0.188578, 0.626036, 0.179284, 0.636568, 0.183931, 0.612753, 0.183931, 0.626036, 0.189793, 0.626036, 0.17807, 0.639319, 0.183931, 0.612651, 0.183931, 0.626036, 0.178025, 0.639421, 0.183931, 0.626036, 0.189837, 0.390744, 0.0703783, 0.401276, 0.0750257, 0.390744, 0.0703783, 0.401276, 0.0657309, 0.411808, 0.0703783, 0.401276, 0.0750256, 0.401276, 0.0657309, 0.411808, 0.0703783, 0.387993, 0.0703783, 0.401276, 0.0762396, 0.401276, 0.0645169, 0.414559, 0.0703783, 0.387891, 0.0703783, 0.401276, 0.064472, 0.414661, 0.0703783, 0.401276, 0.0762846, 0.0536043, 0.0703784, 0.0641362, 0.0750258, 0.0536043, 0.0703784, 0.0641362, 0.065731, 0.0746682, 0.0703784, 0.0641362, 0.0750258, 0.0641362, 0.065731, 0.0746682, 0.0703784, 0.0508531, 0.0703784, 0.0641363, 0.0762397, 0.0641363, 0.064517, 0.0774194, 0.0703784, 0.0507512, 0.0703784, 0.0641363, 0.0644721, 0.0775213, 0.0703784, 0.0641363, 0.0762848, 0.952644, 0.0703783, 0.963176, 0.0750257, 0.952644, 0.0703783, 0.963176, 0.0657309, 0.973708, 0.0703783, 0.963176, 0.0750256, 0.963176, 0.0657309, 0.973708, 0.0703783, 0.949893, 0.0703783, 0.963176, 0.0762396, 0.963176, 0.0645169, 0.976459, 0.0703783, 0.949791, 0.0703783, 0.963176, 0.064472, 0.976561, 0.0703783, 0.963176, 0.0762846, 0.727884, 0.0165604, 0.738416, 0.0212078, 0.727884, 0.0165604, 0.738416, 0.0119132, 0.748948, 0.0165604, 0.738416, 0.0212078, 0.738416, 0.0119132, 0.748948, 0.0165604, 0.725133, 0.0165604, 0.738416, 0.0224218, 0.738416, 0.0106992, 0.751699, 0.0165604, 0.725031, 0.0165604, 0.738416, 0.0106542, 0.751801, 0.0165604, 0.738416, 0.0224668, 0.165984, 0.222354, 0.176516, 0.227002, 0.165984, 0.222354, 0.176516, 0.217707, 0.187048, 0.222354, 0.176516, 0.227002, 0.176516, 0.217707, 0.187048, 0.222354, 0.163233, 0.222354, 0.176516, 0.228216, 0.176516, 0.216493, 0.189799, 0.222354, 0.163131, 0.222354, 0.176516, 0.216448, 0.189901, 0.222354, 0.176516, 0.228261, 0.278364, 0.222354, 0.288896, 0.227002, 0.278364, 0.222354, 0.288896, 0.217707, 0.299428, 0.222354, 0.288896, 0.227002, 0.288896, 0.217707, 0.299428, 0.222354, 0.275613, 0.222354, 0.288896, 0.228216, 0.288896, 0.216493, 0.302179, 0.222354, 0.275511, 0.222354, 0.288896, 0.216448, 0.302281, 0.222354, 0.288896, 0.228261, 0.952644, 0.183931, 0.963176, 0.188579, 0.952644, 0.183931, 0.963176, 0.179284, 0.973708, 0.183931, 0.963176, 0.188579, 0.963176, 0.179284, 0.973708, 0.183931, 0.949893, 0.183931, 0.963176, 0.189793, 0.963176, 0.17807, 0.976459, 0.183931, 0.949791, 0.183931, 0.963176, 0.178025, 0.976561, 0.183931, 0.963176, 0.189838, 0.390744, 0.130113, 0.401276, 0.134761, 0.390744, 0.130113, 0.401276, 0.125466, 0.411808, 0.130113, 0.401276, 0.13476, 0.401276, 0.125466, 0.411808, 0.130113, 0.387993, 0.130113, 0.401276, 0.135975, 0.401276, 0.124252, 0.414559, 0.130113, 0.387891, 0.130113, 0.401276, 0.124207, 0.414661, 0.130113, 0.401276, 0.136019, 0.840264, 0.0165603, 0.850796, 0.0212077, 0.840264, 0.0165603, 0.850796, 0.0119129, 0.861328, 0.0165603, 0.850796, 0.0212077, 0.850796, 0.0119129, 0.861328, 0.0165603, 0.837513, 0.0165603, 0.850796, 0.0224217, 0.850796, 0.0106989, 0.864079, 0.0165603, 0.837411, 0.0165603, 0.850796, 0.010654, 0.864181, 0.0165603, 0.850796, 0.0224667, 0.0536043, 0.130113, 0.0641363, 0.134761, 0.0536043, 0.130113, 0.0641363, 0.125466, 0.0746682, 0.130113, 0.0641363, 0.13476, 0.0641363, 0.125466, 0.0746682, 0.130113, 0.0508531, 0.130113, 0.0641363, 0.135975, 0.0641363, 0.124252, 0.0774194, 0.130113, 0.0507512, 0.130113, 0.0641363, 0.124207, 0.0775213, 0.130113, 0.0641363, 0.13602, 0.390744, 0.222354, 0.401276, 0.227002, 0.390744, 0.222354, 0.401276, 0.217707, 0.411808, 0.222354, 0.401276, 0.227002, 0.401276, 0.217707, 0.411808, 0.222354, 0.387993, 0.222354, 0.401276, 0.228216, 0.401276, 0.216493, 0.414559, 0.222354, 0.387891, 0.222354, 0.401276, 0.216448, 0.414661, 0.222354, 0.401276, 0.228261, 0.615504, 0.0165602, 0.626036, 0.0212076, 0.615504, 0.0165602, 0.626036, 0.0119129, 0.636568, 0.0165602, 0.626036, 0.0212076, 0.626036, 0.0119129, 0.636568, 0.0165602, 0.612753, 0.0165602, 0.626036, 0.0224216, 0.626036, 0.0106989, 0.639319, 0.0165602, 0.612651, 0.0165602, 0.626036, 0.010654, 0.639421, 0.0165602, 0.626036, 0.0224665, 0.503124, 0.0165603, 0.513656, 0.0212078, 0.503124, 0.0165603, 0.513656, 0.0119131, 0.524188, 0.0165604, 0.513656, 0.0212077, 0.513656, 0.0119131, 0.524188, 0.0165604, 0.500373, 0.0165603, 0.513656, 0.0224217, 0.513656, 0.010699, 0.526939, 0.0165604, 0.500271, 0.0165603, 0.513656, 0.0106541, 0.527041, 0.0165604, 0.513656, 0.0224668, 0.727884, 0.183931, 0.738416, 0.188579, 0.727884, 0.183931, 0.738416, 0.179284, 0.748948, 0.183931, 0.738416, 0.188579, 0.738416, 0.179284, 0.748948, 0.183931, 0.725133, 0.183931, 0.738416, 0.189793, 0.738416, 0.17807, 0.751699, 0.183931, 0.725031, 0.183931, 0.738416, 0.178025, 0.751801, 0.183931, 0.738416, 0.189838, 0.0536042, 0.777492, 0.0641361, 0.772844, 0.0536042, 0.777492, 0.0641361, 0.782139, 0.074668, 0.777492, 0.0641361, 0.772844, 0.0641361, 0.782139, 0.074668, 0.777492, 0.050853, 0.777492, 0.0641361, 0.77163, 0.0641361, 0.783353, 0.0774192, 0.777492, 0.050751, 0.777492, 0.0641361, 0.783398, 0.0775211, 0.777492, 0.0641361, 0.771585, 0.165984, 0.777492, 0.176516, 0.772844, 0.165984, 0.777492, 0.176516, 0.782139, 0.187048, 0.777492, 0.176516, 0.772844, 0.176516, 0.782139, 0.187048, 0.777492, 0.163233, 0.777492, 0.176516, 0.77163, 0.176516, 0.783353, 0.189799, 0.777492, 0.163131, 0.777492, 0.176516, 0.783398, 0.189901, 0.777492, 0.176516, 0.771585, 0.278364, 0.777492, 0.288896, 0.772844, 0.278364, 0.777492, 0.288896, 0.782139, 0.299428, 0.777492, 0.288896, 0.772844, 0.288896, 0.782139, 0.299428, 0.777492, 0.275613, 0.777492, 0.288896, 0.77163, 0.288896, 0.783353, 0.302179, 0.777492, 0.275511, 0.777492, 0.288896, 0.783398, 0.302281, 0.777492, 0.288896, 0.771585, 0.390744, 0.777492, 0.401276, 0.772844, 0.390744, 0.777492, 0.401276, 0.782139, 0.411808, 0.777492, 0.401276, 0.772844, 0.401276, 0.782139, 0.411808, 0.777492, 0.387993, 0.777492, 0.401276, 0.77163, 0.401276, 0.783353, 0.414559, 0.777492, 0.387891, 0.777492, 0.401276, 0.783398, 0.414661, 0.777492, 0.401276, 0.771585, 0.390744, 0.929468, 0.401276, 0.924821, 0.390744, 0.929468, 0.401276, 0.934115, 0.411808, 0.929468, 0.401276, 0.924821, 0.401276, 0.934115, 0.411808, 0.929468, 0.387993, 0.929468, 0.401276, 0.923607, 0.401276, 0.935329, 0.414559, 0.929468, 0.387891, 0.929468, 0.401276, 0.935374, 0.414661, 0.929468, 0.401276, 0.923562, 0.390744, 0.869733, 0.401276, 0.865085, 0.390744, 0.869733, 0.401276, 0.87438, 0.411808, 0.869733, 0.401276, 0.865085, 0.401276, 0.87438, 0.411808, 0.869733, 0.387993, 0.869733, 0.401276, 0.863871, 0.401276, 0.875594, 0.414559, 0.869733, 0.387891, 0.869733, 0.401276, 0.875639, 0.414661, 0.869733, 0.401276, 0.863827, 0.0536037, 0.929468, 0.0641357, 0.924821, 0.0536037, 0.929468, 0.0641357, 0.934115, 0.0746676, 0.929468, 0.0641357, 0.924821, 0.0641357, 0.934115, 0.0746676, 0.929468, 0.0508525, 0.929468, 0.0641357, 0.923607, 0.0641357, 0.935329, 0.0774188, 0.929468, 0.0507506, 0.929468, 0.0641357, 0.935374, 0.0775207, 0.929468, 0.0641357, 0.923562, 0.0536037, 0.869733, 0.0641356, 0.865085, 0.0536037, 0.869733, 0.0641356, 0.87438, 0.0746676, 0.869733, 0.0641356, 0.865085, 0.0641356, 0.87438, 0.0746676, 0.869733, 0.0508525, 0.869733, 0.0641357, 0.863871, 0.0641357, 0.875594, 0.0774188, 0.869733, 0.0507506, 0.869733, 0.0641357, 0.875639, 0.0775207, 0.869733, 0.0641357, 0.863826, 0.390744, 0.815915, 0.401276, 0.811267, 0.390744, 0.815915, 0.401276, 0.820562, 0.411808, 0.815915, 0.401276, 0.811267, 0.401276, 0.820562, 0.411808, 0.815915, 0.387993, 0.815915, 0.401276, 0.810053, 0.401276, 0.821776, 0.414559, 0.815915, 0.387891, 0.815915, 0.401276, 0.821821, 0.414661, 0.815915, 0.401276, 0.810008, 0.503124, 0.815915, 0.513656, 0.811267, 0.503124, 0.815915, 0.513656, 0.820562, 0.524188, 0.815915, 0.513656, 0.811267, 0.513656, 0.820562, 0.524188, 0.815915, 0.500373, 0.815915, 0.513656, 0.810053, 0.513656, 0.821776, 0.526939, 0.815915, 0.500271, 0.815915, 0.513656, 0.821821, 0.527041, 0.815915, 0.513656, 0.810008, 0.278364, 0.815915, 0.288896, 0.811267, 0.278364, 0.815915, 0.288896, 0.820562, 0.299428, 0.815915, 0.288896, 0.811267, 0.288896, 0.820562, 0.299428, 0.815915, 0.275613, 0.815915, 0.288896, 0.810053, 0.288896, 0.821776, 0.302179, 0.815915, 0.275511, 0.815915, 0.288896, 0.821821, 0.302281, 0.815915, 0.288896, 0.810009, 0.165984, 0.815915, 0.176516, 0.811267, 0.165984, 0.815915, 0.176516, 0.820562, 0.187048, 0.815915, 0.176516, 0.811267, 0.176516, 0.820562, 0.187048, 0.815915, 0.163233, 0.815915, 0.176516, 0.810053, 0.176516, 0.821776, 0.189799, 0.815915, 0.163131, 0.815915, 0.176516, 0.821821, 0.189901, 0.815915, 0.176516, 0.810008, 0.0536038, 0.815915, 0.0641358, 0.811267, 0.0536038, 0.815915, 0.0641358, 0.820562, 0.0746677, 0.815915, 0.0641358, 0.811267, 0.0641358, 0.820562, 0.0746677, 0.815915, 0.0508527, 0.815915, 0.0641358, 0.810053, 0.0641358, 0.821776, 0.0774189, 0.815915, 0.0507507, 0.815915, 0.0641358, 0.821821, 0.0775208, 0.815915, 0.0641358, 0.810008, 0.840264, 0.815915, 0.850796, 0.811267, 0.840264, 0.815915, 0.850796, 0.820562, 0.861328, 0.815915, 0.850796, 0.811267, 0.850796, 0.820562, 0.861328, 0.815915, 0.837513, 0.815915, 0.850796, 0.810053, 0.850796, 0.821776, 0.864079, 0.815915, 0.837411, 0.815915, 0.850796, 0.821821, 0.864181, 0.815915, 0.850796, 0.810009, 0.615504, 0.815915, 0.626036, 0.811267, 0.615504, 0.815915, 0.626036, 0.820562, 0.636568, 0.815915, 0.626036, 0.811267, 0.626036, 0.820562, 0.636568, 0.815915, 0.612753, 0.815915, 0.626036, 0.810053, 0.626036, 0.821776, 0.639319, 0.815915, 0.612651, 0.815915, 0.626036, 0.821821, 0.639421, 0.815915, 0.626036, 0.810008, 0.727884, 0.815915, 0.738416, 0.811267, 0.727884, 0.815915, 0.738416, 0.820562, 0.748948, 0.815915, 0.738416, 0.811267, 0.738416, 0.820562, 0.748948, 0.815915, 0.725132, 0.815915, 0.738416, 0.810053, 0.738416, 0.821776, 0.751699, 0.815915, 0.725031, 0.815915, 0.738416, 0.821821, 0.751801, 0.815915, 0.738416, 0.810008, 0.0536036, 0.983286, 0.0641356, 0.978639, 0.0536036, 0.983286, 0.0641356, 0.987934, 0.0746675, 0.983286, 0.0641356, 0.978639, 0.0641356, 0.987934, 0.0746675, 0.983286, 0.0508524, 0.983286, 0.0641356, 0.977425, 0.0641356, 0.989148, 0.0774187, 0.983286, 0.0507505, 0.983286, 0.0641356, 0.989192, 0.0775206, 0.983286, 0.0641356, 0.97738, 0.165984, 0.983286, 0.176516, 0.978639, 0.165984, 0.983286, 0.176516, 0.987933, 0.187048, 0.983286, 0.176516, 0.978639, 0.176516, 0.987933, 0.187048, 0.983286, 0.163233, 0.983286, 0.176516, 0.977425, 0.176516, 0.989147, 0.189799, 0.983286, 0.163131, 0.983286, 0.176516, 0.989192, 0.189901, 0.983286, 0.176516, 0.97738, 0.278364, 0.983286, 0.288896, 0.978639, 0.278364, 0.983286, 0.288895, 0.987934, 0.299427, 0.983286, 0.288896, 0.978639, 0.288895, 0.987934, 0.299427, 0.983286, 0.275612, 0.983286, 0.288896, 0.977425, 0.288896, 0.989148, 0.302179, 0.983286, 0.27551, 0.983286, 0.288896, 0.989193, 0.302281, 0.983286, 0.288896, 0.97738, 0.390744, 0.983286, 0.401276, 0.978639, 0.390744, 0.983286, 0.401276, 0.987933, 0.411808, 0.983286, 0.401276, 0.978639, 0.401276, 0.987933, 0.411808, 0.983286, 0.387992, 0.983286, 0.401276, 0.977425, 0.401276, 0.989147, 0.414559, 0.983286, 0.387891, 0.983286, 0.401276, 0.989192, 0.414661, 0.983286, 0.401276, 0.97738, 0.503124, 0.983286, 0.513656, 0.978639, 0.503124, 0.983286, 0.513656, 0.987933, 0.524188, 0.983286, 0.513656, 0.978639, 0.513656, 0.987933, 0.524188, 0.983286, 0.500372, 0.983286, 0.513656, 0.977425, 0.513656, 0.989147, 0.526939, 0.983286, 0.50027, 0.983286, 0.513656, 0.989192, 0.527041, 0.983286, 0.513656, 0.97738, 0.615504, 0.983286, 0.626036, 0.978639, 0.615504, 0.983286, 0.626036, 0.987934, 0.636568, 0.983286, 0.626036, 0.978639, 0.626036, 0.987934, 0.636568, 0.983286, 0.612753, 0.983286, 0.626036, 0.977425, 0.626036, 0.989148, 0.639319, 0.983286, 0.612651, 0.983286, 0.626036, 0.989192, 0.639421, 0.983286, 0.626036, 0.97738, 0.727884, 0.983286, 0.738416, 0.978639, 0.727884, 0.983286, 0.738416, 0.987933, 0.748948, 0.983286, 0.738416, 0.978639, 0.738416, 0.987933, 0.748948, 0.983286, 0.725132, 0.983286, 0.738416, 0.977425, 0.738416, 0.989147, 0.751699, 0.983286, 0.725031, 0.983286, 0.738416, 0.989192, 0.751801, 0.983286, 0.738416, 0.97738, 0.840264, 0.983286, 0.850796, 0.978639, 0.840264, 0.983286, 0.850796, 0.987934, 0.861327, 0.983286, 0.850796, 0.978639, 0.850796, 0.987934, 0.861327, 0.983286, 0.837512, 0.983286, 0.850796, 0.977425, 0.850796, 0.989148, 0.864079, 0.983286, 0.837411, 0.983286, 0.850796, 0.989193, 0.864181, 0.983286, 0.850796, 0.97738, 0.952644, 0.815915, 0.963176, 0.811268, 0.952644, 0.815915, 0.963176, 0.820562, 0.973708, 0.815915, 0.963176, 0.811268, 0.963176, 0.820562, 0.973708, 0.815915, 0.949893, 0.815915, 0.963176, 0.810054, 0.963176, 0.821776, 0.976459, 0.815915, 0.949791, 0.815915, 0.963176, 0.821821, 0.976561, 0.815915, 0.963176, 0.810009, 0.952643, 0.869733, 0.963175, 0.865085, 0.952643, 0.869733, 0.963175, 0.87438, 0.973707, 0.869733, 0.963175, 0.865085, 0.963175, 0.87438, 0.973707, 0.869733, 0.949892, 0.869733, 0.963175, 0.863872, 0.963175, 0.875594, 0.976458, 0.869733, 0.94979, 0.869733, 0.963175, 0.875639, 0.97656, 0.869733, 0.963175, 0.863827, 0.952644, 0.929468, 0.963176, 0.924821, 0.952644, 0.929468, 0.963176, 0.934116, 0.973707, 0.929468, 0.963176, 0.924821, 0.963176, 0.934116, 0.973707, 0.929468, 0.949892, 0.929468, 0.963176, 0.923607, 0.963176, 0.93533, 0.976459, 0.929468, 0.949791, 0.929468, 0.963176, 0.935374, 0.976561, 0.929468, 0.963176, 0.923562, 0.952644, 0.983132, 0.963176, 0.978485, 0.952644, 0.983132, 0.963176, 0.98778, 0.973708, 0.983132, 0.963176, 0.978485, 0.963176, 0.98778, 0.973708, 0.983132, 0.949893, 0.983132, 0.963176, 0.977271, 0.963176, 0.988994, 0.976459, 0.983132, 0.949791, 0.983132, 0.963176, 0.989039, 0.976561, 0.983132, 0.963176, 0.977226, 0.321097, 0.241796, 0.321097, 0.241796, 0.109735, 0.266387, 0.109735, 0.241796, 0.109735, 0.241796, 0.109735, 0.266387, 0.321097, 0.340935, 0.321097, 0.365526, 0.321097, 0.340935, 0.109735, 0.365526, 0.109735, 0.340935, 0.109735, 0.340935, 0.321097, 0.462258, 0.109735, 0.437668, 0.109735, 0.462258, 0.321097, 0.437668, 0.109735, 0.437668, 0.321097, 0.437668, 0.321097, 0.462258, 0.321097, 0.554509, 0.321097, 0.5791, 0.321097, 0.5791, 0.321097, 0.554509, 0.109735, 0.5791, 0.109735, 0.554509, 0.109735, 0.554509, 0.109735, 0.5791, 0.321097, 0.643565, 0.321097, 0.668156, 0.321097, 0.643565, 0.109735, 0.668156, 0.109735, 0.643565, 0.109735, 0.643565, 0.109735, 0.668156, 0.321097, 0.733612, 0.321097, 0.758203, 0.321097, 0.733612, 0.109735, 0.758203, 0.109735, 0.733612, 0.109735, 0.733612, 0.321097, 0.365526, 0.109735, 0.365526, 0.109735, 0.462258, 0.321097, 0.668156, 0.321097, 0.758203, 0.109735, 0.758203, 0.321097, 0.266387, 0.321097, 0.266387, 0.247221, 0.471284, 0.247221, 0.510268, 0.247221, 0.450443, 0.247221, 0.569141, 0.247221, 0.490625, 0.247221, 0.489834, 0.247221, 0.436773, 0.247221, 0.507328, 0.247221, 0.514137, 0.247221, 0.564219, 0.247221, 0.467914, 0.247221, 0.500799, 0.247221, 0.444257, 0.247221, 0.506278, 0.247221, 0.530481, 0.247221, 0.552077, 0.247221, 0.429792, 0.247221, 0.477924, 0.247221, 0.461847, 0.247221, 0.501106, 0.247221, 0.438332, 0.247221, 0.507228, 0.247221, 0.451837, 0.247221, 0.501759, 0.247221, 0.513142, 0.247221, 0.542006, 0.247221, 0.470298, 0.247221, 0.504527, 0.247221, 0.442299, 0.247221, 0.52449, 0.247221, 0.511462, 0.247221, 0.556861, 0.247221, 0.521895, 0.247221, 0.434724, 0.247221, 0.492981, 0.247221, 0.529399, 0.247221, 0.476668, 0.247221, 0.459384, 0.247221, 0.564963, 0.247221, 0.522065, 0.247221, 0.507861, 0.247221, 0.555936, 0.247221, 0.50469, 0.247221, 0.516154, 0.247221, 0.576605, 0.247221, 0.453286, 0.247221, 0.514063, 0.247221, 0.497575, 0.247221, 0.504418, 0.247221, 0.53376, 0.247221, 0.470705, 0.247221, 0.550096, 0.247221, 0.455086, 0.247221, 0.519354, 0.247221, 0.530953]; + indices = new [0, 11, 1, 11, 0, 9, 8, 1, 11, 1, 8, 120, 184, 2, 183, 2, 184, 12, 9, 166, 3, 166, 9, 0, 119, 0, 1, 0, 119, 118, 120, 119, 1, 119, 120, 121, 0, 4, 166, 4, 0, 118, 243, 6, 173, 20, 5, 18, 45, 5, 20, 45, 55, 5, 6, 55, 45, 243, 55, 6, 172, 52, 10, 172, 7, 52, 17, 88, 165, 7, 88, 17, 7, 178, 88, 172, 178, 7, 8, 173, 172, 10, 11, 9, 243, 11, 10, 173, 11, 243, 8, 11, 173, 169, 176, 13, 176, 169, 14, 13, 15, 16, 15, 13, 176, 16, 17, 165, 17, 16, 15, 18, 19, 20, 19, 18, 21, 22, 19, 21, 19, 22, 23, 123, 23, 22, 23, 123, 170, 24, 168, 122, 168, 24, 25, 124, 26, 27, 26, 124, 171, 28, 30, 29, 30, 28, 31, 32, 27, 26, 27, 32, 33, 34, 25, 24, 25, 34, 35, 36, 29, 30, 29, 36, 37, 37, 35, 34, 35, 37, 36, 32, 38, 33, 38, 32, 39, 38, 31, 28, 31, 38, 39, 173, 178, 172, 173, 40, 178, 173, 41, 40, 173, 6, 41, 38, 29, 37, 29, 38, 28, 134, 27, 46, 40, 47, 48, 47, 40, 41, 48, 49, 40, 48, 50, 49, 50, 37, 51, 48, 37, 50, 47, 37, 48, 37, 47, 38, 126, 45, 180, 126, 6, 45, 126, 41, 6, 126, 125, 41, 160, 41, 125, 160, 47, 41, 47, 46, 38, 160, 46, 47, 5, 56, 57, 56, 54, 141, 56, 55, 54, 5, 55, 56, 58, 54, 53, 54, 58, 59, 142, 125, 141, 142, 160, 125, 142, 46, 160, 142, 131, 46, 177, 53, 52, 63, 53, 61, 63, 58, 53, 63, 36, 58, 63, 64, 36, 59, 36, 39, 36, 59, 58, 72, 70, 73, 31, 36, 30, 36, 31, 39, 22, 171, 123, 36, 25, 35, 25, 36, 64, 75, 72, 82, 72, 75, 74, 82, 73, 80, 73, 82, 72, 79, 68, 84, 68, 79, 71, 70, 79, 83, 79, 70, 71, 80, 70, 83, 70, 80, 73, 78, 65, 85, 65, 78, 69, 84, 69, 78, 69, 84, 68, 76, 177, 62, 177, 76, 174, 66, 76, 86, 76, 66, 174, 77, 66, 86, 66, 77, 67, 65, 77, 85, 77, 65, 67, 63, 75, 64, 75, 63, 74, 34, 51, 37, 51, 34, 24, 175, 87, 179, 87, 175, 89, 100, 91, 101, 91, 100, 99, 51, 102, 50, 102, 51, 93, 100, 93, 99, 93, 100, 102, 103, 91, 90, 91, 103, 101, 103, 92, 104, 92, 103, 90, 105, 92, 98, 92, 105, 104, 49, 178, 40, 178, 49, 179, 98, 106, 105, 106, 98, 96, 107, 96, 97, 96, 107, 106, 108, 89, 175, 89, 108, 95, 100, 50, 102, 100, 49, 50, 179, 108, 175, 49, 108, 179, 49, 109, 108, 49, 107, 109, 49, 106, 107, 49, 105, 106, 49, 104, 105, 49, 103, 104, 100, 103, 49, 100, 101, 103, 97, 109, 107, 109, 97, 94, 108, 94, 95, 94, 108, 109, 59, 141, 54, 59, 142, 141, 59, 131, 142, 59, 39, 131, 125, 150, 140, 150, 110, 154, 110, 112, 153, 112, 151, 152, 110, 151, 112, 110, 125, 151, 150, 125, 110, 151, 125, 126, 140, 111, 114, 111, 150, 161, 140, 150, 111, 151, 126, 113, 140, 134, 46, 134, 140, 114, 180, 113, 126, 113, 180, 44, 138, 113, 44, 113, 138, 151, 138, 152, 151, 152, 138, 137, 112, 137, 139, 137, 112, 152, 139, 153, 112, 153, 139, 127, 136, 153, 127, 153, 136, 110, 136, 154, 110, 154, 136, 43, 150, 43, 128, 43, 150, 154, 128, 161, 150, 161, 128, 42, 135, 161, 42, 161, 135, 111, 135, 114, 111, 114, 135, 134, 141, 164, 56, 155, 156, 158, 156, 141, 60, 156, 162, 157, 162, 60, 163, 156, 60, 162, 56, 164, 117, 157, 149, 156, 149, 157, 148, 149, 158, 156, 158, 149, 129, 155, 129, 81, 129, 155, 158, 155, 146, 115, 146, 155, 81, 115, 145, 116, 145, 115, 146, 116, 130, 159, 130, 116, 145, 159, 144, 164, 144, 159, 130, 164, 143, 117, 143, 164, 144, 143, 56, 117, 56, 143, 57, 131, 163, 60, 163, 131, 147, 162, 147, 132, 147, 162, 163, 162, 148, 157, 148, 162, 132, 12, 133, 2, 133, 12, 167, 120, 4, 121, 4, 120, 166, 8, 166, 120, 166, 8, 3, 168, 169, 122, 169, 168, 14, 170, 171, 124, 171, 170, 123, 68, 71, 70, 68, 65, 69, 77, 86, 76, 64, 75, 25, 15, 7, 17, 7, 76, 62, 15, 76, 7, 62, 52, 7, 52, 62, 177, 9, 172, 10, 172, 9, 3, 172, 3, 8, 88, 179, 87, 179, 88, 178, 89, 88, 87, 89, 165, 88, 89, 16, 165, 94, 89, 95, 96, 13, 94, 169, 24, 122, 13, 24, 169, 24, 93, 51, 13, 93, 24, 96, 93, 13, 96, 91, 93, 96, 92, 91, 45, 44, 180, 45, 19, 44, 45, 20, 19, 134, 124, 27, 170, 137, 23, 124, 137, 170, 124, 127, 137, 127, 42, 43, 124, 42, 127, 134, 42, 124, 92, 96, 98, 91, 92, 90, 93, 91, 99, 96, 94, 97, 89, 13, 16, 13, 89, 94, 44, 137, 138, 23, 44, 19, 44, 23, 137, 182, 167, 181, 167, 182, 133, 181, 12, 184, 12, 181, 167, 183, 133, 182, 133, 183, 2, 181, 118, 182, 118, 181, 4, 184, 4, 181, 4, 184, 121, 183, 121, 184, 121, 183, 119, 182, 119, 183, 119, 182, 118, 137, 127, 139, 127, 43, 136, 43, 42, 128, 42, 134, 135, 33, 46, 27, 46, 33, 38, 147, 148, 132, 148, 129, 149, 129, 146, 81, 26, 147, 131, 39, 26, 131, 26, 39, 32, 80, 75, 82, 79, 80, 83, 78, 79, 84, 77, 78, 85, 75, 168, 25, 168, 79, 14, 75, 79, 168, 75, 80, 79, 15, 77, 76, 77, 15, 176, 66, 177, 174, 65, 66, 67, 63, 72, 74, 66, 61, 177, 61, 72, 63, 61, 70, 72, 61, 68, 70, 61, 65, 68, 66, 65, 61, 53, 177, 61, 116, 155, 115, 164, 116, 159, 146, 130, 145, 155, 141, 156, 155, 164, 141, 155, 116, 164, 130, 143, 144, 21, 5, 143, 5, 21, 18, 143, 5, 57, 22, 143, 130, 143, 22, 21, 22, 129, 171, 22, 146, 129, 22, 130, 146, 171, 147, 26, 171, 148, 147, 171, 129, 148, 14, 77, 176, 14, 78, 77, 14, 79, 78, 186, 185, 206, 185, 186, 187, 188, 185, 187, 185, 188, 189, 209, 188, 190, 188, 209, 189, 186, 209, 190, 209, 186, 206, 191, 210, 192, 193, 213, 203, 208, 212, 194, 212, 208, 195, 208, 196, 195, 196, 208, 197, 198, 196, 197, 196, 198, 199, 200, 198, 205, 198, 200, 199, 207, 200, 205, 200, 207, 211, 212, 207, 194, 207, 212, 211, 210, 201, 202, 201, 210, 191, 201, 213, 202, 213, 201, 203, 192, 201, 191, 201, 192, 204, 204, 203, 201, 203, 204, 193, 194, 189, 209, 189, 194, 207, 213, 195, 202, 195, 213, 212, 185, 208, 206, 208, 185, 205, 205, 197, 208, 197, 205, 198, 185, 207, 205, 207, 185, 189, 196, 192, 210, 204, 211, 193, 204, 200, 211, 192, 200, 204, 192, 199, 200, 196, 199, 192, 212, 193, 211, 193, 212, 213, 194, 206, 208, 206, 194, 209, 210, 195, 196, 195, 210, 202, 215, 214, 216, 214, 215, 235, 217, 214, 218, 214, 217, 216, 238, 217, 218, 217, 238, 219, 215, 238, 235, 238, 215, 219, 220, 221, 239, 222, 232, 242, 237, 241, 224, 241, 237, 223, 237, 225, 226, 225, 237, 224, 227, 225, 228, 225, 227, 226, 229, 227, 228, 227, 229, 234, 236, 229, 240, 229, 236, 234, 241, 236, 240, 236, 241, 223, 239, 230, 220, 230, 239, 231, 230, 242, 232, 242, 230, 231, 221, 230, 233, 230, 221, 220, 233, 232, 222, 232, 233, 230, 218, 223, 238, 223, 218, 236, 224, 242, 231, 242, 224, 241, 214, 237, 234, 237, 214, 235, 234, 226, 227, 226, 234, 237, 214, 236, 218, 236, 214, 234, 221, 225, 239, 221, 228, 225, 221, 229, 228, 240, 233, 222, 229, 233, 240, 221, 233, 229, 241, 222, 242, 222, 241, 240, 223, 235, 238, 235, 223, 237, 239, 224, 231, 224, 239, 225, 246, 250, 247, 250, 246, 244, 247, 251, 248, 251, 247, 250, 248, 245, 249, 245, 248, 251, 249, 244, 246, 244, 249, 245, 250, 252, 254, 252, 250, 244, 251, 254, 0xFF, 254, 251, 250, 245, 0xFF, 253, 0xFF, 245, 251, 244, 253, 252, 253, 244, 245, 247, 258, 0x0101, 258, 247, 248, 246, 0x0101, 0x0100, 0x0101, 246, 247, 249, 0x0100, 259, 0x0100, 249, 246, 248, 259, 258, 259, 248, 249, 262, 266, 263, 266, 262, 260, 263, 267, 264, 267, 263, 266, 264, 261, 265, 261, 264, 267, 265, 260, 262, 260, 265, 261, 266, 268, 270, 268, 266, 260, 267, 270, 271, 270, 267, 266, 261, 271, 269, 271, 261, 267, 260, 269, 268, 269, 260, 261, 263, 274, 273, 274, 263, 264, 262, 273, 272, 273, 262, 263, 265, 272, 275, 272, 265, 262, 264, 275, 274, 275, 264, 265, 278, 282, 279, 282, 278, 276, 279, 283, 280, 283, 279, 282, 280, 277, 281, 277, 280, 283, 281, 276, 278, 276, 281, 277, 282, 284, 286, 284, 282, 276, 283, 286, 287, 286, 283, 282, 277, 287, 285, 287, 277, 283, 276, 285, 284, 285, 276, 277, 279, 290, 289, 290, 279, 280, 278, 289, 288, 289, 278, 279, 281, 288, 291, 288, 281, 278, 280, 291, 290, 291, 280, 281, 294, 298, 295, 298, 294, 292, 295, 299, 296, 299, 295, 298, 296, 293, 297, 293, 296, 299, 297, 292, 294, 292, 297, 293, 298, 300, 302, 300, 298, 292, 299, 302, 303, 302, 299, 298, 293, 303, 301, 303, 293, 299, 292, 301, 300, 301, 292, 293, 295, 306, 305, 306, 295, 296, 294, 305, 304, 305, 294, 295, 297, 304, 307, 304, 297, 294, 296, 307, 306, 307, 296, 297, 310, 314, 311, 314, 310, 308, 311, 315, 312, 315, 311, 314, 312, 309, 313, 309, 312, 315, 313, 308, 310, 308, 313, 309, 314, 316, 318, 316, 314, 308, 315, 318, 319, 318, 315, 314, 309, 319, 317, 319, 309, 315, 308, 317, 316, 317, 308, 309, 311, 322, 321, 322, 311, 312, 310, 321, 320, 321, 310, 311, 313, 320, 323, 320, 313, 310, 312, 323, 322, 323, 312, 313, 326, 330, 327, 330, 326, 324, 327, 331, 328, 331, 327, 330, 328, 325, 329, 325, 328, 331, 329, 324, 326, 324, 329, 325, 330, 332, 334, 332, 330, 324, 331, 334, 335, 334, 331, 330, 325, 335, 333, 335, 325, 331, 324, 333, 332, 333, 324, 325, 327, 338, 337, 338, 327, 328, 326, 337, 336, 337, 326, 327, 329, 336, 339, 336, 329, 326, 328, 339, 338, 339, 328, 329, 342, 346, 343, 346, 342, 340, 343, 347, 344, 347, 343, 346, 344, 341, 345, 341, 344, 347, 345, 340, 342, 340, 345, 341, 346, 348, 350, 348, 346, 340, 347, 350, 351, 350, 347, 346, 341, 351, 349, 351, 341, 347, 340, 349, 348, 349, 340, 341, 343, 354, 353, 354, 343, 344, 342, 353, 352, 353, 342, 343, 345, 352, 355, 352, 345, 342, 344, 355, 354, 355, 344, 345, 358, 362, 359, 362, 358, 356, 359, 363, 360, 363, 359, 362, 360, 357, 361, 357, 360, 363, 361, 356, 358, 356, 361, 357, 362, 364, 366, 364, 362, 356, 363, 366, 367, 366, 363, 362, 357, 367, 365, 367, 357, 363, 356, 365, 364, 365, 356, 357, 359, 370, 369, 370, 359, 360, 358, 369, 368, 369, 358, 359, 361, 368, 371, 368, 361, 358, 360, 371, 370, 371, 360, 361, 374, 378, 375, 378, 374, 372, 375, 379, 376, 379, 375, 378, 376, 373, 377, 373, 376, 379, 377, 372, 374, 372, 377, 373, 378, 380, 382, 380, 378, 372, 379, 382, 383, 382, 379, 378, 373, 383, 381, 383, 373, 379, 372, 381, 380, 381, 372, 373, 375, 386, 385, 386, 375, 376, 374, 385, 384, 385, 374, 375, 377, 384, 387, 384, 377, 374, 376, 387, 386, 387, 376, 377, 390, 394, 391, 394, 390, 388, 391, 395, 392, 395, 391, 394, 392, 389, 393, 389, 392, 395, 393, 388, 390, 388, 393, 389, 394, 396, 398, 396, 394, 388, 395, 398, 399, 398, 395, 394, 389, 399, 397, 399, 389, 395, 388, 397, 396, 397, 388, 389, 391, 402, 401, 402, 391, 392, 390, 401, 400, 401, 390, 391, 393, 400, 403, 400, 393, 390, 392, 403, 402, 403, 392, 393, 406, 410, 407, 410, 406, 404, 407, 411, 408, 411, 407, 410, 408, 405, 409, 405, 408, 411, 409, 404, 406, 404, 409, 405, 410, 412, 414, 412, 410, 404, 411, 414, 415, 414, 411, 410, 405, 415, 413, 415, 405, 411, 404, 413, 412, 413, 404, 405, 407, 418, 417, 418, 407, 408, 406, 417, 416, 417, 406, 407, 409, 416, 419, 416, 409, 406, 408, 419, 418, 419, 408, 409, 422, 426, 423, 426, 422, 420, 423, 427, 424, 427, 423, 426, 424, 421, 425, 421, 424, 427, 425, 420, 422, 420, 425, 421, 426, 428, 430, 428, 426, 420, 427, 430, 431, 430, 427, 426, 421, 431, 429, 431, 421, 427, 420, 429, 428, 429, 420, 421, 423, 434, 433, 434, 423, 424, 422, 433, 432, 433, 422, 423, 425, 432, 435, 432, 425, 422, 424, 435, 434, 435, 424, 425, 438, 442, 436, 442, 438, 439, 439, 443, 442, 443, 439, 440, 440, 437, 443, 437, 440, 441, 441, 436, 437, 436, 441, 438, 442, 444, 436, 444, 442, 446, 443, 446, 442, 446, 443, 447, 437, 447, 443, 447, 437, 445, 436, 445, 437, 445, 436, 444, 439, 450, 440, 450, 439, 449, 438, 449, 439, 449, 438, 448, 441, 448, 438, 448, 441, 451, 440, 451, 441, 451, 440, 450, 454, 458, 452, 458, 454, 455, 455, 459, 458, 459, 455, 456, 456, 453, 459, 453, 456, 457, 457, 452, 453, 452, 457, 454, 458, 460, 452, 460, 458, 462, 459, 462, 458, 462, 459, 463, 453, 463, 459, 463, 453, 461, 452, 461, 453, 461, 452, 460, 455, 466, 456, 466, 455, 465, 454, 465, 455, 465, 454, 464, 457, 464, 454, 464, 457, 467, 456, 467, 457, 467, 456, 466, 470, 474, 468, 474, 470, 471, 471, 475, 474, 475, 471, 472, 472, 469, 475, 469, 472, 473, 473, 468, 469, 468, 473, 470, 474, 476, 468, 476, 474, 478, 475, 478, 474, 478, 475, 479, 469, 479, 475, 479, 469, 477, 468, 477, 469, 477, 468, 476, 471, 482, 472, 482, 471, 481, 470, 481, 471, 481, 470, 480, 473, 480, 470, 480, 473, 483, 472, 483, 473, 483, 472, 482, 486, 490, 484, 490, 486, 487, 487, 491, 490, 491, 487, 488, 488, 485, 491, 485, 488, 489, 489, 484, 485, 484, 489, 486, 490, 492, 484, 492, 490, 494, 491, 494, 490, 494, 491, 495, 485, 495, 491, 495, 485, 493, 484, 493, 485, 493, 484, 492, 487, 498, 488, 498, 487, 497, 486, 497, 487, 497, 486, 496, 489, 496, 486, 496, 489, 499, 488, 499, 489, 499, 488, 498, 502, 506, 500, 506, 502, 503, 503, 507, 506, 507, 503, 504, 504, 501, 507, 501, 504, 505, 505, 500, 501, 500, 505, 502, 506, 508, 500, 508, 506, 510, 507, 510, 506, 510, 507, 511, 501, 511, 507, 511, 501, 509, 500, 509, 501, 509, 500, 508, 503, 0x0202, 504, 0x0202, 503, 513, 502, 513, 503, 513, 502, 0x0200, 505, 0x0200, 502, 0x0200, 505, 515, 504, 515, 505, 515, 504, 0x0202, 518, 522, 516, 522, 518, 519, 519, 523, 522, 523, 519, 520, 520, 517, 523, 517, 520, 521, 521, 516, 517, 516, 521, 518, 522, 524, 516, 524, 522, 526, 523, 526, 522, 526, 523, 527, 517, 527, 523, 527, 517, 525, 516, 525, 517, 525, 516, 524, 519, 530, 520, 530, 519, 529, 518, 529, 519, 529, 518, 528, 521, 528, 518, 528, 521, 531, 520, 531, 521, 531, 520, 530, 534, 538, 532, 538, 534, 535, 535, 539, 538, 539, 535, 536, 536, 533, 539, 533, 536, 537, 537, 532, 533, 532, 537, 534, 538, 540, 532, 540, 538, 542, 539, 542, 538, 542, 539, 543, 533, 543, 539, 543, 533, 541, 532, 541, 533, 541, 532, 540, 535, 546, 536, 546, 535, 545, 534, 545, 535, 545, 534, 544, 537, 544, 534, 544, 537, 547, 536, 547, 537, 547, 536, 546, 550, 554, 548, 554, 550, 551, 551, 555, 554, 555, 551, 552, 552, 549, 555, 549, 552, 553, 553, 548, 549, 548, 553, 550, 554, 556, 548, 556, 554, 558, 555, 558, 554, 558, 555, 559, 549, 559, 555, 559, 549, 557, 548, 557, 549, 557, 548, 556, 551, 562, 552, 562, 551, 561, 550, 561, 551, 561, 550, 560, 553, 560, 550, 560, 553, 563, 552, 563, 553, 563, 552, 562, 566, 570, 564, 570, 566, 567, 567, 571, 570, 571, 567, 568, 568, 565, 571, 565, 568, 569, 569, 564, 565, 564, 569, 566, 570, 572, 564, 572, 570, 574, 571, 574, 570, 574, 571, 575, 565, 575, 571, 575, 565, 573, 564, 573, 565, 573, 564, 572, 567, 578, 568, 578, 567, 577, 566, 577, 567, 577, 566, 576, 569, 576, 566, 576, 569, 579, 568, 579, 569, 579, 568, 578, 582, 586, 580, 586, 582, 583, 583, 587, 586, 587, 583, 584, 584, 581, 587, 581, 584, 585, 585, 580, 581, 580, 585, 582, 586, 588, 580, 588, 586, 590, 587, 590, 586, 590, 587, 591, 581, 591, 587, 591, 581, 589, 580, 589, 581, 589, 580, 588, 583, 594, 584, 594, 583, 593, 582, 593, 583, 593, 582, 592, 585, 592, 582, 592, 585, 595, 584, 595, 585, 595, 584, 594, 598, 602, 596, 602, 598, 599, 599, 603, 602, 603, 599, 600, 600, 597, 603, 597, 600, 601, 601, 596, 597, 596, 601, 598, 602, 604, 596, 604, 602, 606, 603, 606, 602, 606, 603, 607, 597, 607, 603, 607, 597, 605, 596, 605, 597, 605, 596, 604, 599, 610, 600, 610, 599, 609, 598, 609, 599, 609, 598, 608, 601, 608, 598, 608, 601, 611, 600, 611, 601, 611, 600, 610, 614, 618, 612, 618, 614, 615, 615, 619, 618, 619, 615, 616, 616, 613, 619, 613, 616, 617, 617, 612, 613, 612, 617, 614, 618, 620, 612, 620, 618, 622, 619, 622, 618, 622, 619, 623, 613, 623, 619, 623, 613, 621, 612, 621, 613, 621, 612, 620, 615, 626, 616, 626, 615, 625, 614, 625, 615, 625, 614, 624, 617, 624, 614, 624, 617, 627, 616, 627, 617, 627, 616, 626, 630, 634, 628, 634, 630, 631, 631, 635, 634, 635, 631, 632, 632, 629, 635, 629, 632, 633, 633, 628, 629, 628, 633, 630, 634, 636, 628, 636, 634, 638, 635, 638, 634, 638, 635, 639, 629, 639, 635, 639, 629, 637, 628, 637, 629, 637, 628, 636, 631, 642, 632, 642, 631, 641, 630, 641, 631, 641, 630, 640, 633, 640, 630, 640, 633, 643, 632, 643, 633, 643, 632, 642, 646, 650, 644, 650, 646, 647, 647, 651, 650, 651, 647, 648, 648, 645, 651, 645, 648, 649, 649, 644, 645, 644, 649, 646, 650, 652, 644, 652, 650, 654, 651, 654, 650, 654, 651, 655, 645, 655, 651, 655, 645, 653, 644, 653, 645, 653, 644, 652, 647, 658, 648, 658, 647, 657, 646, 657, 647, 657, 646, 656, 649, 656, 646, 656, 649, 659, 648, 659, 649, 659, 648, 658, 662, 666, 660, 666, 662, 663, 663, 667, 666, 667, 663, 664, 664, 661, 667, 661, 664, 665, 665, 660, 661, 660, 665, 662, 666, 668, 660, 668, 666, 670, 667, 670, 666, 670, 667, 671, 661, 671, 667, 671, 661, 669, 660, 669, 661, 669, 660, 668, 663, 674, 664, 674, 663, 673, 662, 673, 663, 673, 662, 672, 665, 672, 662, 672, 665, 675, 664, 675, 665, 675, 664, 674, 678, 682, 676, 682, 678, 679, 679, 683, 682, 683, 679, 680, 680, 677, 683, 677, 680, 681, 681, 676, 677, 676, 681, 678, 682, 684, 676, 684, 682, 686, 683, 686, 682, 686, 683, 687, 677, 687, 683, 687, 677, 685, 676, 685, 677, 685, 676, 684, 679, 690, 680, 690, 679, 689, 678, 689, 679, 689, 678, 688, 681, 688, 678, 688, 681, 691, 680, 691, 681, 691, 680, 690, 694, 698, 692, 698, 694, 695, 695, 699, 698, 699, 695, 696, 696, 693, 699, 693, 696, 697, 697, 692, 693, 692, 697, 694, 698, 700, 692, 700, 698, 702, 699, 702, 698, 702, 699, 703, 693, 703, 699, 703, 693, 701, 692, 701, 693, 701, 692, 700, 695, 706, 696, 706, 695, 705, 694, 705, 695, 705, 694, 704, 697, 704, 694, 704, 697, 707, 696, 707, 697, 707, 696, 706, 710, 714, 708, 714, 710, 711, 711, 715, 714, 715, 711, 712, 712, 709, 715, 709, 712, 713, 713, 708, 709, 708, 713, 710, 714, 716, 708, 716, 714, 718, 715, 718, 714, 718, 715, 719, 709, 719, 715, 719, 709, 717, 708, 717, 709, 717, 708, 716, 711, 722, 712, 722, 711, 721, 710, 721, 711, 721, 710, 720, 713, 720, 710, 720, 713, 723, 712, 723, 713, 723, 712, 722, 726, 730, 724, 730, 726, 727, 727, 731, 730, 731, 727, 728, 728, 725, 731, 725, 728, 729, 729, 724, 725, 724, 729, 726, 730, 732, 724, 732, 730, 734, 731, 734, 730, 734, 731, 735, 725, 735, 731, 735, 725, 733, 724, 733, 725, 733, 724, 732, 727, 738, 728, 738, 727, 737, 726, 737, 727, 737, 726, 736, 729, 736, 726, 736, 729, 739, 728, 739, 729, 739, 728, 738, 742, 746, 740, 746, 742, 743, 743, 747, 746, 747, 743, 744, 744, 741, 747, 741, 744, 745, 745, 740, 741, 740, 745, 742, 746, 748, 740, 748, 746, 750, 747, 750, 746, 750, 747, 751, 741, 751, 747, 751, 741, 749, 740, 749, 741, 749, 740, 748, 743, 754, 744, 754, 743, 753, 742, 753, 743, 753, 742, 752, 745, 752, 742, 752, 745, 755, 744, 755, 745, 755, 744, 754, 758, 762, 756, 762, 758, 759, 759, 763, 762, 763, 759, 760, 760, 757, 763, 757, 760, 761, 761, 756, 757, 756, 761, 758, 762, 764, 756, 764, 762, 766, 763, 766, 762, 766, 763, 767, 757, 767, 763, 767, 757, 765, 756, 765, 757, 765, 756, 764, 759, 770, 760, 770, 759, 769, 758, 769, 759, 769, 758, 0x0300, 761, 0x0300, 758, 0x0300, 761, 0x0303, 760, 0x0303, 761, 0x0303, 760, 770, 774, 778, 772, 778, 774, 775, 775, 779, 778, 779, 775, 776, 776, 773, 779, 773, 776, 777, 777, 772, 773, 772, 777, 774, 778, 780, 772, 780, 778, 782, 779, 782, 778, 782, 779, 783, 773, 783, 779, 783, 773, 781, 772, 781, 773, 781, 772, 780, 775, 786, 776, 786, 775, 785, 774, 785, 775, 785, 774, 784, 777, 784, 774, 784, 777, 787, 776, 787, 777, 787, 776, 786, 790, 794, 788, 794, 790, 791, 791, 795, 794, 795, 791, 792, 792, 789, 795, 789, 792, 793, 793, 788, 789, 788, 793, 790, 794, 796, 788, 796, 794, 798, 795, 798, 794, 798, 795, 799, 789, 799, 795, 799, 789, 797, 788, 797, 789, 797, 788, 796, 791, 802, 792, 802, 791, 801, 790, 801, 791, 801, 790, 800, 793, 800, 790, 800, 793, 803, 792, 803, 793, 803, 792, 802, 806, 810, 804, 810, 806, 807, 807, 811, 810, 811, 807, 808, 808, 805, 811, 805, 808, 809, 809, 804, 805, 804, 809, 806, 810, 812, 804, 812, 810, 814, 811, 814, 810, 814, 811, 815, 805, 815, 811, 815, 805, 813, 804, 813, 805, 813, 804, 812, 807, 818, 808, 818, 807, 817, 806, 817, 807, 817, 806, 816, 809, 816, 806, 816, 809, 819, 808, 819, 809, 819, 808, 818, 822, 826, 820, 826, 822, 823, 823, 827, 826, 827, 823, 824, 824, 821, 827, 821, 824, 825, 825, 820, 821, 820, 825, 822, 826, 828, 820, 828, 826, 830, 827, 830, 826, 830, 827, 831, 821, 831, 827, 831, 821, 829, 820, 829, 821, 829, 820, 828, 823, 834, 824, 834, 823, 833, 822, 833, 823, 833, 822, 832, 825, 832, 822, 832, 825, 835, 824, 835, 825, 835, 824, 834, 838, 842, 836, 842, 838, 839, 839, 843, 842, 843, 839, 840, 840, 837, 843, 837, 840, 841, 841, 836, 837, 836, 841, 838, 842, 844, 836, 844, 842, 846, 843, 846, 842, 846, 843, 847, 837, 847, 843, 847, 837, 845, 836, 845, 837, 845, 836, 844, 839, 850, 840, 850, 839, 849, 838, 849, 839, 849, 838, 848, 841, 848, 838, 848, 841, 851, 840, 851, 841, 851, 840, 850, 854, 858, 852, 858, 854, 855, 855, 859, 858, 859, 855, 856, 856, 853, 859, 853, 856, 857, 857, 852, 853, 852, 857, 854, 858, 860, 852, 860, 858, 862, 859, 862, 858, 862, 859, 863, 853, 863, 859, 863, 853, 861, 852, 861, 853, 861, 852, 860, 855, 866, 856, 866, 855, 865, 854, 865, 855, 865, 854, 864, 857, 864, 854, 864, 857, 867, 856, 867, 857, 867, 856, 866, 870, 874, 868, 874, 870, 871, 871, 875, 874, 875, 871, 872, 872, 869, 875, 869, 872, 873, 873, 868, 869, 868, 873, 870, 874, 876, 868, 876, 874, 878, 875, 878, 874, 878, 875, 879, 869, 879, 875, 879, 869, 877, 868, 877, 869, 877, 868, 876, 871, 882, 872, 882, 871, 881, 870, 881, 871, 881, 870, 880, 873, 880, 870, 880, 873, 883, 872, 883, 873, 883, 872, 882, 886, 890, 887, 890, 886, 884, 887, 891, 888, 891, 887, 890, 888, 885, 889, 885, 888, 891, 889, 884, 886, 884, 889, 885, 890, 892, 894, 892, 890, 884, 891, 894, 895, 894, 891, 890, 885, 895, 893, 895, 885, 891, 884, 893, 892, 893, 884, 885, 887, 898, 897, 898, 887, 888, 886, 897, 896, 897, 886, 887, 889, 896, 899, 896, 889, 886, 888, 899, 898, 899, 888, 889, 902, 906, 903, 906, 902, 900, 903, 907, 904, 907, 903, 906, 904, 901, 905, 901, 904, 907, 905, 900, 902, 900, 905, 901, 906, 908, 910, 908, 906, 900, 907, 910, 911, 910, 907, 906, 901, 911, 909, 911, 901, 907, 900, 909, 908, 909, 900, 901, 903, 914, 913, 914, 903, 904, 902, 913, 912, 913, 902, 903, 905, 912, 915, 912, 905, 902, 904, 915, 914, 915, 904, 905, 918, 922, 919, 922, 918, 916, 919, 923, 920, 923, 919, 922, 920, 917, 921, 917, 920, 923, 921, 916, 918, 916, 921, 917, 922, 924, 926, 924, 922, 916, 923, 926, 927, 926, 923, 922, 917, 927, 925, 927, 917, 923, 916, 925, 924, 925, 916, 917, 919, 930, 929, 930, 919, 920, 918, 929, 928, 929, 918, 919, 921, 928, 931, 928, 921, 918, 920, 931, 930, 931, 920, 921, 934, 938, 935, 938, 934, 932, 935, 939, 936, 939, 935, 938, 936, 933, 937, 933, 936, 939, 937, 932, 934, 932, 937, 933, 938, 940, 942, 940, 938, 932, 939, 942, 943, 942, 939, 938, 933, 943, 941, 943, 933, 939, 932, 941, 940, 941, 932, 933, 935, 946, 945, 946, 935, 936, 934, 945, 944, 945, 934, 935, 937, 944, 947, 944, 937, 934, 936, 947, 946, 947, 936, 937, 950, 954, 951, 954, 950, 948, 951, 955, 952, 955, 951, 954, 952, 949, 953, 949, 952, 955, 953, 948, 950, 948, 953, 949, 954, 956, 958, 956, 954, 948, 955, 958, 959, 958, 955, 954, 949, 959, 957, 959, 949, 955, 948, 957, 956, 957, 948, 949, 951, 962, 961, 962, 951, 952, 950, 961, 960, 961, 950, 951, 953, 960, 963, 960, 953, 950, 952, 963, 962, 963, 952, 953, 966, 970, 967, 970, 966, 964, 967, 971, 968, 971, 967, 970, 968, 965, 969, 965, 968, 971, 969, 964, 966, 964, 969, 965, 970, 972, 974, 972, 970, 964, 971, 974, 975, 974, 971, 970, 965, 975, 973, 975, 965, 971, 964, 973, 972, 973, 964, 965, 967, 978, 977, 978, 967, 968, 966, 977, 976, 977, 966, 967, 969, 976, 979, 976, 969, 966, 968, 979, 978, 979, 968, 969, 982, 986, 983, 986, 982, 980, 983, 987, 984, 987, 983, 986, 984, 981, 985, 981, 984, 987, 985, 980, 982, 980, 985, 981, 986, 988, 990, 988, 986, 980, 987, 990, 991, 990, 987, 986, 981, 991, 989, 991, 981, 987, 980, 989, 988, 989, 980, 981, 983, 994, 993, 994, 983, 984, 982, 993, 992, 993, 982, 983, 985, 992, 995, 992, 985, 982, 984, 995, 994, 995, 984, 985, 998, 1002, 999, 1002, 998, 996, 999, 1003, 1000, 1003, 999, 1002, 1000, 997, 1001, 997, 1000, 1003, 1001, 996, 998, 996, 1001, 997, 1002, 1004, 1006, 1004, 1002, 996, 1003, 1006, 1007, 1006, 1003, 1002, 997, 1007, 1005, 1007, 997, 1003, 996, 1005, 1004, 1005, 996, 997, 999, 1010, 1009, 1010, 999, 1000, 998, 1009, 1008, 1009, 998, 999, 1001, 1008, 1011, 1008, 1001, 998, 1000, 1011, 1010, 1011, 1000, 1001, 1014, 1018, 1015, 1018, 1014, 1012, 1015, 1019, 1016, 1019, 1015, 1018, 1016, 1013, 1017, 1013, 1016, 1019, 1017, 1012, 1014, 1012, 1017, 1013, 1018, 1020, 1022, 1020, 1018, 1012, 1019, 1022, 1023, 1022, 1019, 1018, 1013, 1023, 1021, 1023, 1013, 1019, 1012, 1021, 1020, 1021, 1012, 1013, 1015, 1026, 1025, 1026, 1015, 1016, 1014, 1025, 0x0400, 1025, 1014, 1015, 1017, 0x0400, 1027, 0x0400, 1017, 1014, 1016, 1027, 1026, 1027, 1016, 1017, 1030, 1034, 1031, 1034, 1030, 0x0404, 1031, 1035, 1032, 1035, 1031, 1034, 1032, 1029, 1033, 1029, 1032, 1035, 1033, 0x0404, 1030, 0x0404, 1033, 1029, 1034, 1036, 1038, 1036, 1034, 0x0404, 1035, 1038, 1039, 1038, 1035, 1034, 1029, 1039, 1037, 1039, 1029, 1035, 0x0404, 1037, 1036, 1037, 0x0404, 1029, 1031, 1042, 1041, 1042, 1031, 1032, 1030, 1041, 1040, 1041, 1030, 1031, 1033, 1040, 1043, 1040, 1033, 1030, 1032, 1043, 1042, 1043, 1032, 1033, 1046, 1050, 1047, 1050, 1046, 1044, 1047, 1051, 1048, 1051, 1047, 1050, 1048, 1045, 1049, 1045, 1048, 1051, 1049, 1044, 1046, 1044, 1049, 1045, 1050, 1052, 1054, 1052, 1050, 1044, 1051, 1054, 1055, 1054, 1051, 1050, 1045, 1055, 1053, 1055, 1045, 1051, 1044, 1053, 1052, 1053, 1044, 1045, 1047, 1058, 1057, 1058, 1047, 1048, 1046, 1057, 1056, 1057, 1046, 1047, 1049, 1056, 1059, 1056, 1049, 1046, 1048, 1059, 1058, 1059, 1048, 1049, 1062, 1066, 1063, 1066, 1062, 1060, 1063, 1067, 1064, 1067, 1063, 1066, 1064, 1061, 1065, 1061, 1064, 1067, 1065, 1060, 1062, 1060, 1065, 1061, 1066, 1068, 1070, 1068, 1066, 1060, 1067, 1070, 1071, 1070, 1067, 1066, 1061, 1071, 1069, 1071, 1061, 1067, 1060, 1069, 1068, 1069, 1060, 1061, 1063, 1074, 1073, 1074, 1063, 1064, 1062, 1073, 1072, 1073, 1062, 1063, 1065, 1072, 1075, 1072, 1065, 1062, 1064, 1075, 1074, 1075, 1064, 1065, 1078, 1082, 1079, 1082, 1078, 1076, 1079, 1083, 1080, 1083, 1079, 1082, 1080, 1077, 1081, 1077, 1080, 1083, 1081, 1076, 1078, 1076, 1081, 1077, 1082, 1084, 1086, 1084, 1082, 1076, 1083, 1086, 1087, 1086, 1083, 1082, 1077, 1087, 1085, 1087, 1077, 1083, 1076, 1085, 1084, 1085, 1076, 1077, 1079, 1090, 1089, 1090, 1079, 1080, 1078, 1089, 1088, 1089, 1078, 1079, 1081, 1088, 1091, 1088, 1081, 1078, 1080, 1091, 1090, 1091, 1080, 1081, 1094, 1098, 1095, 1098, 1094, 1092, 1095, 1099, 1096, 1099, 1095, 1098, 1096, 1093, 1097, 1093, 1096, 1099, 1097, 1092, 1094, 1092, 1097, 1093, 1098, 1100, 1102, 1100, 1098, 1092, 1099, 1102, 1103, 1102, 1099, 1098, 1093, 1103, 1101, 1103, 1093, 1099, 1092, 1101, 1100, 1101, 1092, 1093, 1095, 1106, 1105, 1106, 1095, 1096, 1094, 1105, 1104, 1105, 1094, 1095, 1097, 1104, 1107, 1104, 1097, 1094, 1096, 1107, 1106, 1107, 1096, 1097, 1110, 1114, 1111, 1114, 1110, 1108, 1111, 1115, 1112, 1115, 1111, 1114, 1112, 1109, 1113, 1109, 1112, 1115, 1113, 1108, 1110, 1108, 1113, 1109, 1114, 1116, 1118, 1116, 1114, 1108, 1115, 1118, 1119, 1118, 1115, 1114, 1109, 1119, 1117, 1119, 1109, 1115, 1108, 1117, 1116, 1117, 1108, 1109, 1111, 1122, 1121, 1122, 1111, 1112, 1110, 1121, 1120, 1121, 1110, 1111, 1113, 1120, 1123, 1120, 1113, 1110, 1112, 1123, 1122, 1123, 1112, 1113, 1126, 1130, 1127, 1130, 1126, 1124, 1127, 1131, 1128, 1131, 1127, 1130, 1128, 1125, 1129, 1125, 1128, 1131, 1129, 1124, 1126, 1124, 1129, 1125, 1130, 1132, 1134, 1132, 1130, 1124, 1131, 1134, 1135, 1134, 1131, 1130, 1125, 1135, 1133, 1135, 1125, 1131, 1124, 1133, 1132, 1133, 1124, 1125, 1127, 1138, 1137, 1138, 1127, 1128, 1126, 1137, 1136, 1137, 1126, 1127, 1129, 1136, 1139, 1136, 1129, 1126, 1128, 1139, 1138, 1139, 1128, 1129, 1142, 1146, 1143, 1146, 1142, 1140, 1143, 1147, 1144, 1147, 1143, 1146, 1144, 1141, 1145, 1141, 1144, 1147, 1145, 1140, 1142, 1140, 1145, 1141, 1146, 1148, 1150, 1148, 1146, 1140, 1147, 1150, 1151, 1150, 1147, 1146, 1141, 1151, 1149, 1151, 1141, 1147, 1140, 1149, 1148, 1149, 1140, 1141, 1143, 1154, 1153, 1154, 1143, 1144, 1142, 1153, 1152, 1153, 1142, 1143, 1145, 1152, 1155, 1152, 1145, 1142, 1144, 1155, 1154, 1155, 1144, 1145, 1158, 1162, 1159, 1162, 1158, 1156, 1159, 1163, 1160, 1163, 1159, 1162, 1160, 1157, 1161, 1157, 1160, 1163, 1161, 1156, 1158, 1156, 1161, 1157, 1162, 1164, 1166, 1164, 1162, 1156, 1163, 1166, 1167, 1166, 1163, 1162, 1157, 1167, 1165, 1167, 1157, 1163, 1156, 1165, 1164, 1165, 1156, 1157, 1159, 1170, 1169, 1170, 1159, 1160, 1158, 1169, 1168, 1169, 1158, 1159, 1161, 1168, 1171, 1168, 1161, 1158, 1160, 1171, 1170, 1171, 1160, 1161, 1174, 1178, 1175, 1178, 1174, 1172, 1175, 1179, 1176, 1179, 1175, 1178, 1176, 1173, 1177, 1173, 1176, 1179, 1177, 1172, 1174, 1172, 1177, 1173, 1178, 1180, 1182, 1180, 1178, 1172, 1179, 1182, 1183, 1182, 1179, 1178, 1173, 1183, 1181, 1183, 1173, 1179, 1172, 1181, 1180, 1181, 1172, 1173, 1175, 1186, 1185, 1186, 1175, 1176, 1174, 1185, 1184, 1185, 1174, 1175, 1177, 1184, 1187, 1184, 1177, 1174, 1176, 1187, 1186, 1187, 1176, 1177, 1190, 1194, 1191, 1194, 1190, 1188, 1191, 1195, 1192, 1195, 1191, 1194, 1192, 1189, 1193, 1189, 1192, 1195, 1193, 1188, 1190, 1188, 1193, 1189, 1194, 1196, 1198, 1196, 1194, 1188, 1195, 1198, 1199, 1198, 1195, 1194, 1189, 1199, 1197, 1199, 1189, 1195, 1188, 1197, 1196, 1197, 1188, 1189, 1191, 1202, 1201, 1202, 1191, 1192, 1190, 1201, 1200, 1201, 1190, 1191, 1193, 1200, 1203, 1200, 1193, 1190, 1192, 1203, 1202, 1203, 1192, 1193, 1206, 1210, 1207, 1210, 1206, 1204, 1207, 1211, 1208, 1211, 1207, 1210, 1208, 1205, 1209, 1205, 1208, 1211, 1209, 1204, 1206, 1204, 1209, 1205, 1210, 1212, 1214, 1212, 1210, 1204, 1211, 1214, 1215, 1214, 1211, 1210, 1205, 1215, 1213, 1215, 1205, 1211, 1204, 1213, 1212, 1213, 1204, 1205, 1207, 1218, 1217, 1218, 1207, 1208, 1206, 1217, 1216, 1217, 1206, 1207, 1209, 1216, 1219, 1216, 1209, 1206, 1208, 1219, 1218, 1219, 1208, 1209, 1222, 1226, 1223, 1226, 1222, 1220, 1223, 1227, 1224, 1227, 1223, 1226, 1224, 1221, 1225, 1221, 1224, 1227, 1225, 1220, 1222, 1220, 1225, 1221, 1226, 1228, 1230, 1228, 1226, 1220, 1227, 1230, 1231, 1230, 1227, 1226, 1221, 1231, 1229, 1231, 1221, 1227, 1220, 1229, 1228, 1229, 1220, 1221, 1223, 1234, 1233, 1234, 1223, 1224, 1222, 1233, 1232, 1233, 1222, 1223, 1225, 1232, 1235, 1232, 1225, 1222, 1224, 1235, 1234, 1235, 1224, 1225, 1238, 1242, 1239, 1242, 1238, 1236, 1239, 1243, 1240, 1243, 1239, 1242, 1240, 1237, 1241, 1237, 1240, 1243, 1241, 1236, 1238, 1236, 1241, 1237, 1242, 1244, 1246, 1244, 1242, 1236, 1243, 1246, 1247, 1246, 1243, 1242, 1237, 1247, 1245, 1247, 1237, 1243, 1236, 1245, 1244, 1245, 1236, 1237, 1239, 1250, 1249, 1250, 1239, 1240, 1238, 1249, 1248, 1249, 1238, 1239, 1241, 1248, 1251, 1248, 1241, 1238, 1240, 1251, 1250, 1251, 1240, 1241, 1254, 1258, 1255, 1258, 1254, 1252, 1255, 1259, 1256, 1259, 1255, 1258, 1256, 1253, 1257, 1253, 1256, 1259, 1257, 1252, 1254, 1252, 1257, 1253, 1258, 1260, 1262, 1260, 1258, 1252, 1259, 1262, 1263, 1262, 1259, 1258, 1253, 1263, 1261, 1263, 1253, 1259, 1252, 1261, 1260, 1261, 1252, 1253, 1255, 1266, 1265, 1266, 1255, 1256, 1254, 1265, 1264, 1265, 1254, 1255, 1257, 1264, 1267, 1264, 1257, 1254, 1256, 1267, 1266, 1267, 1256, 1257, 1270, 1274, 1271, 1274, 1270, 1268, 1271, 1275, 1272, 1275, 1271, 1274, 1272, 1269, 1273, 1269, 1272, 1275, 1273, 1268, 1270, 1268, 1273, 1269, 1274, 1276, 1278, 1276, 1274, 1268, 1275, 1278, 1279, 1278, 1275, 1274, 1269, 1279, 1277, 1279, 1269, 1275, 1268, 1277, 1276, 1277, 1268, 1269, 1271, 1282, 1281, 1282, 1271, 1272, 1270, 1281, 0x0500, 1281, 1270, 1271, 1273, 0x0500, 1283, 0x0500, 1273, 1270, 1272, 1283, 1282, 1283, 1272, 1273, 1286, 1290, 1287, 1290, 1286, 1284, 1287, 1291, 1288, 1291, 1287, 1290, 1288, 0x0505, 1289, 0x0505, 1288, 1291, 1289, 1284, 1286, 1284, 1289, 0x0505, 1290, 1292, 1294, 1292, 1290, 1284, 1291, 1294, 1295, 1294, 1291, 1290, 0x0505, 1295, 1293, 1295, 0x0505, 1291, 1284, 1293, 1292, 1293, 1284, 0x0505, 1287, 1298, 1297, 1298, 1287, 1288, 1286, 1297, 1296, 1297, 1286, 1287, 1289, 1296, 1299, 1296, 1289, 1286, 1288, 1299, 1298, 1299, 1288, 1289, 1302, 1306, 1303, 1306, 1302, 1300, 1303, 1307, 1304, 1307, 1303, 1306, 1304, 1301, 1305, 1301, 1304, 1307, 1305, 1300, 1302, 1300, 1305, 1301, 1306, 1308, 1310, 1308, 1306, 1300, 1307, 1310, 1311, 1310, 1307, 1306, 1301, 1311, 1309, 1311, 1301, 1307, 1300, 1309, 1308, 1309, 1300, 1301, 1303, 1314, 1313, 1314, 1303, 1304, 1302, 1313, 1312, 1313, 1302, 1303, 1305, 1312, 1315, 1312, 1305, 1302, 1304, 1315, 1314, 1315, 1304, 1305, 1318, 1322, 1319, 1322, 1318, 1316, 1319, 1323, 1320, 1323, 1319, 1322, 1320, 1317, 1321, 1317, 1320, 1323, 1321, 1316, 1318, 1316, 1321, 1317, 1322, 1324, 1326, 1324, 1322, 1316, 1323, 1326, 1327, 1326, 1323, 1322, 1317, 1327, 1325, 1327, 1317, 1323, 1316, 1325, 1324, 1325, 1316, 1317, 1319, 1330, 1329, 1330, 1319, 1320, 1318, 1329, 1328, 1329, 1318, 1319, 1321, 1328, 1331, 1328, 1321, 1318, 1320, 1331, 1330, 1331, 1320, 1321, 1379, 1332, 1333, 1332, 1379, 1378, 1334, 1336, 1335, 1336, 1334, 1337, 1336, 1332, 1335, 1332, 1336, 1333, 1372, 1338, 1340, 1338, 1372, 1339, 1341, 1343, 1342, 1343, 1341, 1373, 1343, 1338, 1342, 1338, 1343, 1340, 1347, 1350, 1344, 1350, 1347, 1349, 1348, 1346, 1374, 1346, 1348, 1345, 1347, 1348, 1349, 1348, 1347, 1345, 1352, 1351, 1354, 1351, 1352, 1353, 1355, 1357, 1356, 1357, 1355, 1358, 1357, 1351, 1356, 1351, 1357, 1354, 1375, 1359, 1361, 1359, 1375, 1360, 1362, 1364, 1363, 1364, 1362, 1365, 1364, 1359, 1363, 1359, 1364, 1361, 1376, 1366, 1368, 1366, 1376, 1367, 1369, 1371, 1370, 1371, 1369, 1377, 1371, 1366, 1370, 1366, 1371, 1368, 1334, 1379, 1337, 1379, 1334, 1378, 1341, 1372, 1373, 1372, 1341, 1339, 1346, 1350, 1374, 1350, 1346, 1344, 1355, 1352, 1358, 1352, 1355, 1353, 1362, 1375, 1365, 1375, 1362, 1360, 1369, 1376, 1377, 1376, 1369, 1367, 53, 10, 52, 54, 10, 53, 55, 10, 54, 55, 243, 10, 1405, 1395, 1429, 1405, 1411, 1395, 1405, 1431, 1411, 1430, 1425, 1398, 1425, 1430, 1417, 1429, 1409, 1434, 1426, 1401, 1387, 1425, 1402, 1392, 1402, 1425, 1417, 1400, 1392, 1402, 1392, 1400, 1408, 1413, 1402, 1386, 1402, 1413, 1400, 1425, 1392, 1382, 1398, 1425, 1432, 1421, 1418, 1383, 1418, 1421, 1395, 1395, 1389, 1418, 1389, 1395, 1411, 1412, 1394, 1415, 1409, 1404, 1433, 1412, 1429, 1394, 1412, 1409, 1429, 1404, 1409, 1412, 1404, 1388, 1403, 1388, 1404, 1412, 1434, 1424, 1431, 1433, 1424, 1434, 1385, 1424, 1433, 1424, 1432, 1396, 1424, 1406, 1432, 1385, 1406, 1424, 1427, 1388, 1423, 1397, 1388, 1427, 1416, 1388, 1397, 1422, 1401, 1381, 1399, 1393, 1414, 1393, 1399, 1420, 1420, 1381, 1419, 1381, 1420, 1399, 1422, 1399, 1391, 1399, 1422, 1381, 1428, 1401, 1422, 1401, 1428, 1387, 1407, 1387, 1428, 1387, 1407, 1410, 1397, 1427, 1384, 1410, 1427, 1423, 1427, 1410, 1407, 1390, 1385, 1403, 1385, 1390, 1406, 1403, 1430, 1390, 1430, 1403, 1380, 1416, 1403, 1388, 1403, 1416, 1380]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/CharlottenburgCastle.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/CharlottenburgCastle.as new file mode 100644 index 0000000..76ee92b --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/CharlottenburgCastle.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class CharlottenburgCastle extends Stage3DData { + + public function CharlottenburgCastle(){ + vertices = new [-56.544, 2.05636E-5, 157.791, -54.8492, 1.82986E-5, 142.681, -50.1006, 1.82986E-5, 100.347, -48.8336, 1.82986E-5, 100.489, -48.8336, 45.1672, 100.489, -53.5821, 1.82986E-5, 142.823, -59.6395, 53.5155, 138.26, -27.997, 45.1672, -89.31, -23.4894, 45.1672, -129.496, -27.997, 1.82986E-5, -89.31, -28.8244, 1.82986E-5, -89.3345, -191.272, 0.013019, 85.4152, -114.737, 0.013019, 94.0001, -114.737, 57.8194, 94.0001, -124.819, 0.013019, 203.602, -6.06361, 1.82986E-5, 233.145, -94.2136, 45.1672, 98.6668, -94.2136, 0.013019, 98.6668, -89.6747, 45.1672, -136.92, -89.6747, 1.81794E-5, -136.92, -94.1898, -0.103985, -96.6664, -94.1898, 1.85966E-5, -96.6664, -23.4894, 2.05636E-5, -129.496, 0.448616, 1.82986E-5, 164.183, 0.622536, 45.1672, 164.203, -2.12152, 55.875, 188.667, -114.999, 45.1672, 96.3354, -114.999, 0.013019, 96.3354, -43.8005, 52.3364, -131.774, -40.4457, 50.4069, -131.398, -37.4113, 47.9995, -131.058, -52.8427, 54.604, -117.695, -49.0739, 53.7458, -117.272, -45.4725, 52.3364, -116.868, -42.1178, 50.4069, -116.492, -39.0833, 47.9995, -116.151, -36.4358, 45.1672, -115.854, -4.00645, 53.5155, 205.471, -97.4464, 53.5155, 194.99, -117.01, 55.875, 118.631, -118.581, 53.5155, 135.599, -55.6418, 1.82986E-5, 215.735, -56.9544, 1.82986E-5, 227.436, -4.75105, 1.82986E-5, 221.443, -5.31517, 57.8194, 217.139, -5.31836, 57.8194, 217.167, -97.7967, 57.8194, 206.794, -153.698, 57.8194, 203.851, -33.3731, 53.5155, -95.9102, -80.7908, 55.875, 179.843, -69.606, 55.875, -114.323, -84.3805, 53.5155, -129.563, -60.5498, 54.604, -118.559, -56.6962, 54.8922, -118.127, -64.3186, 53.7458, -118.982, -67.92, 52.3364, -119.386, -71.2747, 50.4069, -119.762, -74.3092, 47.9995, -120.102, -76.9567, 45.1672, -120.399, -56.9544, 57.8194, 227.436, -191.272, 57.8194, 85.4152, -56.544, 45.1672, 157.791, -74.4603, 55.875, 123.404, -124.895, 57.8194, 203.755, -206.002, 57.8194, 210.718, -30.279, 53.5155, -123.495, -87.4746, 53.5155, -101.979, -65.992, 53.5155, -99.5689, -94.1898, 45.1672, -96.6664, -72.5754, 0.013019, -94.242, -72.5754, 45.1672, -94.242, -58.8777, 54.604, -133.466, -51.1707, 54.604, -132.601, -55.0242, 54.8922, -133.033, -69.6027, 50.4069, -134.669, -66.2479, 52.3364, -134.292, -62.6465, 53.7458, -133.888, -6.06361, 57.8194, 233.145, -155.109, 57.8194, 216.427, -155.109, 1.82986E-5, 216.427, -206.002, 1.82986E-5, 210.718, -55.5438, 1.82986E-5, 214.861, -153.698, 1.82986E-5, 203.851, -191.272, 1.82986E-5, 85.4152, -4.75105, 57.8194, 221.443, -115.529, 53.5155, 102.263, -5.6869, 57.8194, 220.453, 0.448616, 45.1672, 164.183, 0.622536, 1.82986E-5, 164.203, -0.0436783, 53.5155, 170.142, -92.2548, 53.5155, 138.552, -55.5438, 57.8194, 214.861, -47.4019, 53.7458, -132.178, -28.8244, 45.1672, -89.3345, -62.4308, 53.5155, 163.145, -53.5821, 45.1672, 142.823, 0.448616, 45.1672, 164.183, -114.737, 57.8194, 94.0001, -124.819, 0.013019, 203.602, -75.2847, 45.1672, -135.306, -34.7638, 45.1672, -130.761, -34.7638, 45.1672, -130.761, -48.0659, 55.875, -111.907, -55.8549, 53.5155, 104.52, -88.9653, 53.5155, 105.243, -75.2847, 45.1672, -135.306, -72.6371, 47.9995, -135.009, -54.8492, 45.1672, 142.681, -50.1006, 45.1672, 100.347, 624.472, 1.83582E-5, 179.51, 721.958, 1.83582E-5, 193.011, 721.958, 50.4, 193.011, 624.188, 1.83582E-5, 182.044, 969.15, 1.83582E-5, 281.635, 715.212, 1.83582E-5, 253.151, 975.896, 50.4, 221.494, 975.896, 1.83582E-5, 221.494, 722.242, 1.83582E-5, 190.477, 715.081, 55.1375, 254.319, 617.311, 55.1375, 243.352, 722.242, 55.1375, 190.477, 652.385, 66.9366, 214.372, 687.299, 66.9366, 218.289, 617.442, 1.83582E-5, 242.185, 720.911, 55.1375, 202.341, 699.198, 62.4694, 219.623, 371.206, 50.4, 214.565, 969.15, 50.4, 281.635, 379.362, 50.4, 154.582, 624.472, 55.1375, 179.51, 617.311, 1.83582E-5, 243.352, 715.081, 1.83582E-5, 254.319, 379.362, 1.83582E-5, 154.582, 371.206, 1.83582E-5, 214.565, 640.486, 62.4694, 213.038, 715.212, 50.4, 253.151, 716.543, 55.1375, 241.287, 618.773, 55.1375, 230.32, 617.442, 50.4, 242.185, 624.188, 50.4, 182.044, 623.141, 55.1375, 191.374, 954.711, 62.4694, 248.284, 374.166, 62.4694, 183.165, 235.111, 2.14577E-5, 187.732, 12.4609, 69.775, 201.81, -1.63898, 57.5474, 217.58, 15.3746, 69.775, 175.833, 60.7384, 57.5474, 160.244, 60.7384, 2.29478E-5, 160.244, 62.9102, 2.29478E-5, 140.883, 116.667, 2.29478E-5, 146.912, 88.3762, 71.3615, 143.739, 173.426, 57.5474, 172.884, 60.7384, 59.7691, 160.244, 62.9102, 59.7691, 140.883, 114.495, 2.29478E-5, 166.274, 172.529, 45.1672, 180.881, 172.529, 2.14577E-5, 180.881, 171.625, 53.5155, 188.935, 169.472, 56, 208.132, 167.611, 53.5155, 224.721, 166.805, 55.9915, 231.904, 1.80801, 57.5474, 153.634, 173.426, 2.29478E-5, 172.884, 162.622, 57.5474, 236.005, 61.3968, 57.5632, 228.863, 59.2566, 57.5632, 247.943, 67.0671, 57.5632, 265.008, 99.6832, 57.5632, 233.157, 97.543, 57.5632, 252.238, -5.68692, 57.5474, 220.453, 114.495, 59.7691, 166.274, 86.2045, 71.3615, 163.101, 116.667, 59.7691, 146.912, 169.38, 57.5474, 175.757, 152.447, 69.775, 191.208, 149.533, 69.775, 217.185, 86.1474, 57.5632, 267.148, 61.3968, 2.29478E-5, 228.863, 97.543, 2.29478E-5, 252.238, 99.6832, 2.29478E-5, 233.157, -5.6869, 2.29478E-5, 220.453, 165.833, 2.29478E-5, 240.577, 165.833, 57.5596, 240.577, 86.1475, 2.29478E-5, 267.148, 67.0671, 2.29478E-5, 265.008, 59.2566, 2.29478E-5, 247.943, 114.495, 57.5474, 166.274, 1.6341, 2.29478E-5, 153.615, 5.11886, 57.5474, 157.332, 266.144, 2.14577E-5, -97.0085, 299.494, 1.9908E-5, -52.9711, 172.529, 45.1672, 180.881, 239.204, 53.5155, 196.333, 250.52, 56, 217.005, 169.472, 56, 208.132, 318.768, 57.5474, 253.108, 272.503, 53.5155, 142.517, 377.952, 1.9908E-5, 154.424, 235.173, 45.1672, 175.291, 236.49, 1.9908E-5, 175.439, 241.247, 1.9908E-5, 133.027, 239.931, 45.1672, 132.879, 262.529, 45.1672, -56.7041, 236.49, 45.1672, 175.439, 332.206, 45.1672, -89.5985, 332.206, 1.9908E-5, -89.5985, 239.931, 1.9908E-5, 132.879, 277.495, 1.9908E-5, 143.156, 283.639, 45.1672, 88.3817, 277.495, 45.1672, 143.156, 262.529, 1.9908E-5, -56.7041, 248.867, 1.9908E-5, 65.5464, 261.635, 1.9908E-5, -56.8044, 261.635, 45.1672, -56.8044, 281.649, 48.0022, -80.7036, 278.958, 45.1672, -81.0055, 284.725, 50.4101, -80.3586, 288.117, 52.3389, -79.9781, 291.754, 53.7471, -79.5702, 295.556, 54.6044, -79.1437, 299.442, 54.8922, -78.7079, 318.848, 48.0022, -91.0969, 303.328, 54.6044, -78.272, 307.13, 53.7471, -77.8455, 310.766, 52.3389, -77.4376, 314.159, 50.4101, -77.0571, 317.234, 48.0022, -76.7121, 319.926, 45.1672, -76.4102, 288.086, 45.1672, 88.8806, 326.471, 53.5155, -83.4788, 271.285, 53.5155, -89.6689, 266.144, 45.1672, -97.0085, 327.696, 45.1672, -49.3944, 283.289, 56, -75.1422, 249.338, 55.875, 43.6248, 256.857, 53.5155, 39.626, 269.766, 55.9375, 45.876, 251.772, 45.1672, 21.9234, 245.62, 53.5155, 139.137, 311.545, 56, -71.9727, 299.494, 45.1672, -52.9711, 235.173, 1.9908E-5, 175.291, 216.047, 0.00372475, 245.189, 299.448, 1.9908E-5, -52.5629, 292.68, 1.9908E-5, 7.7801, 314.2, 57.5474, 268.523, 364.46, 57.5252, 274.706, 377.952, 53.5155, 154.424, 280.955, 57.3737, 153.277, 294.291, 57.3737, 170.254, 289.594, 57.3737, 212.122, 344.575, 57.3737, 161.427, 327.629, 57.3737, 174.524, 335.374, 57.3737, 233.254, 272.883, 57.3737, 225.249, 322.276, 57.3737, 216.308, 351.57, 53.5155, 156.705, 315.027, 52.2556, 181.801, 312.271, 52.1637, 201.683, 302.074, 52.2556, 180.142, 299.973, 52.1637, 200.108, 340.795, 53.5155, 240.815, 266.301, 53.5155, 231.272, 268.365, 53.5155, -63.6361, 323.461, 53.5155, -56.6483, 253.75, 45.1672, 22.1, 248.867, 45.1672, 65.5464, 251.772, 1.9908E-5, 21.9234, 246.904, 1.9908E-5, 65.3262, 246.904, 45.1672, 65.3262, 253.766, 1.9908E-5, 22.0564, 327.696, 1.9908E-5, -49.3944, 315.566, 57.5474, 256.35, 235.111, 45.1672, 187.732, 242.072, 53.5155, 170.77, 280.571, 45.1672, -95.3903, 321.539, 45.1672, -90.795, 301.055, 54.8922, -93.0926, 297.168, 45.1672, 7.9133, 297.168, 1.9908E-5, 7.91331, 364.46, 1.9908E-5, 274.706, 295.244, 53.5155, -60.227, 241.247, 45.1672, 133.027, 171.625, 53.5155, 188.935, 167.611, 53.5155, 224.721, 166.299, 57.5474, 236.417, 283.639, 2.59876E-5, 88.3817, 288.086, 2.59876E-5, 88.8806, 164.52, 2.3067E-5, 252.279, 164.52, 57.5474, 252.279, 215.413, 2.14577E-5, 257.987, 215.413, 57.5474, 257.987, 297.169, 54.6044, -93.5285, 308.743, 53.7471, -92.2303, 293.367, 53.7471, -93.955, 289.731, 52.3389, -94.3629, 312.38, 52.3389, -91.8224, 286.338, 50.4101, -94.7434, 315.772, 50.4101, -91.4418, 262.172, 53.5155, 234.694, 292.721, 45.1672, 7.41447, 304.941, 54.6044, -92.6568, 283.263, 48.0022, -95.0884, 216.047, 57.5474, 245.189, 275.948, 53.5155, 147.017, 255.784, 53.5155, 49.1901, 280.571, 45.1672, -95.3903, 321.539, 45.1672, -90.795, 292.627, 56, 48.3969, 284.28, 53.6919, 38.7263, 282.345, 53.7, 55.9471, 314.2, 0.00372475, 268.523, 364.46, -0.0184615, 274.706, 315.566, 0.00372475, 256.35, -505.182, 0.0130199, 40.3275, -427.207, 0.0130199, 50.4613, -505.182, 44.0467, 40.3275, -427.207, 44.0467, 50.4613, -506.92, 39.5697, 53.7026, -441.353, 54.3295, 61.3539, -481.412, 59.3711, 71.1983, -442.579, 54.3295, 76.2451, -443.805, 54.3295, 91.1385, -498.137, 54.3295, 84.0775, -512.283, 44.0467, 94.968, -431.731, 44.0467, 105.437, -512.283, 0.0130199, 94.968, -431.731, 0.0130199, 105.437, -771.365, 0.0130199, 9.95709, -771.365, 29.2884, 9.95709, -777.386, 0.0130199, 56.2924, -195.577, 39.5697, 122.526, -431.387, 29.2884, 101.259, -196.669, 29.2884, 131.763, -196.669, 0.0130199, 131.763, -776.188, 39.5697, 47.07, -193.926, 44.0467, 108.56, -442.579, 54.3295, 76.2451, -441.353, 54.3295, 61.3539, -443.805, 54.3295, 91.1385, -456.789, 59.3711, 74.3984, -192.336, 39.5697, 94.5861, -191.137, 29.2884, 85.3636, -427.55, 29.2884, 54.6393, -428.314, 39.5697, 63.9182, -429.469, 44.0467, 77.9489, -494.289, 54.3295, 54.4743, -505.722, 0.0130199, 44.4801, -511.744, 29.2884, 90.8155, -430.624, 39.5697, 91.9796, -510.545, 39.5697, 81.593, -508.733, 44.0467, 67.6478, -505.722, 29.2884, 44.4801, -772.563, 39.5697, 19.1795, -777.386, 29.2884, 56.2924, -774.376, 44.0467, 33.1248, -511.744, 0.0130199, 90.8155, -431.387, 0.0130199, 101.259, -191.137, 0.0130201, 85.3636, -427.551, 0.0130201, 54.6393, -780.573, 63.5779, -12.6431, -786.81, 70.6677, -13.4537, -780.573, 70.6677, -12.6431, -785.414, 71.7573, -13.2723, -781.969, 71.7573, -12.8245, -783.692, 72.145, -13.0484, -782.005, 70.6677, -1.62612, -783.401, 71.7573, -1.80752, -785.124, 72.1451, -2.03141, -788.242, 70.6677, -2.43671, -786.846, 71.7573, -2.2553, -786.81, 63.5779, -13.4537, -799.149, 63.6395, -14.9817, -805.387, 70.7292, -15.7923, -799.149, 70.7292, -14.9817, -803.991, 71.8188, -15.6109, -800.545, 71.8188, -15.1631, -802.268, 72.2066, -15.387, -800.581, 70.7292, -3.96468, -801.977, 71.8189, -4.14608, -803.7, 72.2066, -4.36997, -806.818, 70.7292, -4.77527, -805.423, 71.8189, -4.59386, -805.387, 63.6395, -15.7923, -838.11, 63.5779, -20.1207, -844.348, 70.6677, -20.9313, -838.11, 70.6677, -20.1207, -842.952, 71.7573, -20.7499, -839.506, 71.7573, -20.3021, -841.229, 72.145, -20.526, -839.542, 70.6677, -9.10368, -840.938, 71.7573, -9.28508, -842.661, 72.1451, -9.50897, -845.78, 70.6677, -9.91427, -844.384, 71.7573, -9.73287, -844.348, 63.5779, -20.9313, -896.421, 63.4753, -27.8248, -902.658, 70.5651, -28.6354, -896.421, 70.5651, -27.8248, -901.263, 71.6547, -28.454, -897.817, 71.6547, -28.0062, -899.54, 72.0424, -28.2301, -897.853, 70.5651, -16.8078, -899.249, 71.6547, -16.9892, -900.972, 72.0425, -17.2131, -904.09, 70.5651, -17.6184, -902.695, 71.6547, -17.437, -902.658, 63.4753, -28.6354, -934.997, 62.8393, -33.6197, -941.234, 69.9291, -34.4303, -934.997, 69.9291, -33.6197, -939.839, 71.0187, -34.2489, -936.393, 71.0187, -33.8011, -938.116, 71.4064, -34.025, -936.429, 69.9291, -22.6027, -937.825, 71.0187, -22.7841, -939.548, 71.4065, -23.008, -942.666, 69.9291, -23.4133, -941.27, 71.0187, -23.2319, -941.234, 62.8393, -34.4303, -953.651, 62.6342, -36.2961, -959.888, 69.7239, -37.1067, -953.651, 69.7239, -36.2961, -958.493, 70.8135, -36.9253, -955.047, 70.8135, -36.4775, -956.77, 71.2013, -36.7014, -955.083, 69.7239, -25.2791, -956.479, 70.8136, -25.4605, -958.202, 71.2013, -25.6844, -961.32, 69.7239, -26.0897, -959.925, 70.8135, -25.9083, -959.888, 62.6342, -37.1067, -870.662, 70.0905, -27.1494, -854.276, 63.2237, -25.0199, -886.447, 63.2237, -29.2009, -911.476, 63.2237, -32.4537, -829.292, 61.9681, -21.773, -911.476, 61.9681, -32.4537, -829.292, 63.2237, -21.773, -911.522, 63.2237, -30.9167, -886.644, 63.2237, -27.6836, -870.859, 70.0905, -25.6322, -871.937, 70.0905, -17.3346, -854.473, 63.2237, -23.5027, -829.454, 63.2237, -20.5277, -971.854, 0.0130153, -40.3003, -768.272, 0.0130153, -13.8428, -984.061, 0.0130153, 53.6347, -971.854, 61.9681, -40.3003, -780.479, 61.9681, 80.0923, -984.061, 61.9681, 53.6348, -780.479, 0.0130153, 80.0923, -787.755, 76.2373, 1.15889, -930.999, 88.6475, 12.7699, -956.852, 76.2373, -20.8169, -821.331, 88.6475, 27.0225, -795.481, 76.2373, 60.6089, -768.272, 61.9681, -13.8428, -964.578, 76.2373, 38.6331, -399.656, 29.2884, -267.087, -399.656, 0.0130188, -268.036, -399.656, 29.2884, -268.036, -756.737, 29.2884, -298.376, -756.737, 0.0130188, -298.376, -760.997, 0.0130188, -248.242, -760.997, 29.2884, -248.242, -403.835, 29.2884, -217.895, -403.835, 0.0130188, -217.895, -410.228, 39.9577, -225.474, -750.345, 39.9577, -290.797, -753.417, 39.9577, -254.634, -407.155, 39.9577, -261.637, -399.576, 29.2884, -268.029, 79.4638, 145.913, 170.002, 82.1369, 128.778, 155.26, 91.2745, 128.778, 156.385, 82.5424, 139.05, 160.752, 81.9945, 116.441, 153.331, 91.8831, 116.441, 154.55, 83.1492, 145.913, 168.972, 89.5413, 139.05, 161.613, 86.9473, 145.913, 169.436, 97.5427, 139.05, 190.481, 106.224, 128.778, 186.112, 101.713, 128.778, 194.078, 100.996, 139.05, 184.379, 108.059, 116.441, 186.721, 103.178, 116.441, 195.341, 91.3012, 145.913, 185.097, 93.1725, 145.913, 181.785, 88.3074, 145.913, 187.445, 99.2401, 128.778, 160.896, 95.6431, 139.05, 165.066, 100.503, 116.441, 159.431, 90.2598, 145.913, 171.308, 85.2289, 139.05, 196.694, 94.5042, 128.778, 199.719, 85.6343, 128.778, 202.186, 92.0221, 139.05, 194.803, 95.3758, 116.441, 201.446, 85.7767, 116.441, 204.115, 84.622, 145.913, 188.474, 78.23, 139.05, 195.834, 80.8239, 145.913, 188.01, 66.7751, 139.05, 173.068, 60.4224, 128.778, 180.472, 61.5476, 128.778, 171.334, 65.9148, 139.05, 180.066, 58.4937, 116.441, 180.614, 59.7119, 116.441, 170.726, 74.5987, 145.913, 175.662, 74.1349, 145.913, 179.46, 75.7491, 139.05, 162.644, 66.058, 128.778, 163.369, 73.2671, 128.778, 157.727, 70.2285, 139.05, 166.966, 64.5936, 116.441, 162.106, 72.3955, 116.441, 156.001, 76.47, 145.913, 172.349, 67.806, 139.05, 186.86, 62.8896, 128.778, 189.342, 61.1633, 116.441, 190.213, 75.1639, 145.913, 183.145, 101.856, 139.05, 177.38, 104.882, 128.778, 168.105, 107.349, 128.778, 176.975, 99.9652, 139.05, 170.587, 106.608, 116.441, 167.233, 109.278, 116.441, 176.832, 93.6364, 145.913, 177.987, 92.6073, 145.913, 174.301, 72.1281, 139.05, 192.38, 76.4967, 128.778, 201.061, 68.5311, 128.778, 196.551, 75.8881, 116.441, 202.897, 67.268, 116.441, 198.015, 77.5115, 145.913, 186.139, 83.8856, 145.913, 178.723, 60.8545, 127.261, 174.379, 60.8545, 133.441, 174.379, 60.6097, 127.261, 177.49, 63.2865, 133.441, 177.701, 60.6097, 133.441, 177.49, 63.5314, 133.441, 174.59, 88.2141, 127.261, 155.775, 88.2141, 133.441, 155.775, 84.8926, 133.441, 158.207, 85.1033, 127.261, 155.53, 85.1033, 133.441, 155.53, 88.0034, 133.441, 158.452, 70.6813, 127.261, 159.411, 68.3084, 127.261, 161.437, 70.0522, 133.441, 163.479, 68.3084, 133.441, 161.437, 70.6813, 133.441, 159.411, 72.4251, 133.441, 161.453, 103.183, 133.441, 165.602, 99.1143, 133.441, 164.973, 101.156, 127.261, 163.229, 101.156, 133.441, 163.229, 101.141, 133.441, 167.345, 103.183, 127.261, 165.602, 64.4904, 127.261, 191.912, 68.5587, 133.441, 192.541, 66.5169, 127.261, 194.285, 66.5169, 133.441, 194.285, 64.4904, 133.441, 191.912, 66.5322, 133.441, 190.168, 79.4589, 127.261, 201.739, 79.4589, 133.441, 201.739, 82.5698, 127.261, 201.984, 82.7805, 133.441, 199.307, 82.5698, 133.441, 201.984, 79.6696, 133.441, 199.062, 107.063, 133.441, 180.024, 107.063, 127.261, 180.024, 104.387, 133.441, 179.813, 106.819, 133.441, 183.134, 104.142, 133.441, 182.924, 106.819, 127.261, 183.134, 96.9918, 127.261, 198.103, 96.9918, 133.441, 198.103, 99.3647, 133.441, 196.076, 99.3647, 127.261, 196.076, 97.6208, 133.441, 194.035, 95.248, 133.441, 196.061, 81.9945, 58.1115, 153.331, 91.8831, 58.1115, 154.55, 108.059, 58.1115, 186.721, 103.178, 58.1115, 195.341, 100.503, 58.1115, 159.431, 95.3758, 58.1115, 201.446, 85.7767, 58.1115, 204.115, 58.4937, 58.1115, 180.614, 59.7119, 58.1115, 170.726, 64.5936, 58.1115, 162.106, 72.3955, 58.1115, 156.001, 61.1633, 58.1115, 190.213, 106.608, 58.1115, 167.233, 109.278, 58.1115, 176.832, 75.8881, 58.1115, 202.897, 67.268, 58.1115, 198.015, 83.9935, 176.841, 177.368, 84.7205, 183.755, 178.464, 83.0159, 185.155, 175.894, 86.912, 176.48, 181.767, 82.608, 166.152, 175.279, 87.4088, 160.022, 182.516, 81.5225, 150.28, 173.643, 82.7356, 171.546, 175.472, 84.392, 171.065, 177.968, 87.3631, 149.542, 182.447, 84.1354, 187.344, 177.582, 81.0511, 158.494, 172.932, 82.8956, 179.68, 175.713, 87.6078, 183.607, 182.816, 86.064, 180.588, 180.489, 85.194, 179.029, 179.177, 83.3253, 170.364, 176.36, 85.3593, 166.447, 179.427, 83.8644, 184.644, 177.173, 85.0113, 175.764, 178.902, 85.5706, 166.687, 179.745, 82.6947, 166.687, 175.41, 83.9069, 173.968, 177.237, 84.8758, 181.849, 178.698, 81.703, 161.6, 173.915, 87.2651, 181.729, 182.299, 83.5085, 181.314, 176.637, 88.0389, 145.694, 183.466, 80.5783, 145.694, 172.22, 86.9672, 155.096, 181.85, 84.9306, 170.876, 178.78, 81.3658, 188.685, 173.407, 81.6895, 188.581, 173.895, 81.5239, 156.7, 173.645, 83.0972, 183.582, 176.017, 85.9709, 162.541, 180.348, 83.8675, 170.712, 177.178, 82.7248, 179.216, 175.455, 83.3401, 172.039, 176.383, 84.5681, 184.653, 178.234, 81.4599, 187.472, 173.549, 87.0257, 182.224, 181.938, 87.5553, 178.479, 182.737, 86.6787, 179.754, 181.415, 86.0544, 181.59, 180.474, 87.2499, 158.068, 182.276, 82.9127, 163.394, 175.739, 80.733, 149.335, 172.453, 87.7609, 182.936, 183.047, 83.5072, 178.29, 176.635, 83.5329, 175.79, 176.673, 85.6595, 175.758, 179.879, 82.9135, 165.034, 175.74, 84.8184, 186.373, 178.611, 83.7708, 186.47, 177.032, 85.3923, 164.234, 179.476, 81.8727, 187.276, 174.171, 81.4868, 154.152, 173.589, 83.3309, 179.637, 176.369, 82.8155, 169.156, 175.592, 87.9633, 148.417, 183.352, 84.6362, 172.537, 178.336, 82.9457, 172.313, 175.788, 85.4719, 182.475, 179.596, 84.9291, 170.193, 178.778, 81.9153, 186.037, 174.235, 85.3028, 181.293, 179.341, 83.6189, 170.576, 176.803, 86.6204, 162.126, 181.327, 105.493, 21.327, 22.9092, 105.493, 16.4288, 34.0423, 105.493, 10.0303, 20.3402, 105.493, 3.5782, 38.567, 105.493, 34.8014, 29.5842, 105.493, 29.6283, 20.5751, 105.493, 26.2853, 36.4862, 105.493, -0.92503, 14.9224, 105.493, 16.7049, 26.4105, 105.493, 9.49815, 40.342, 105.492, 20.0427, 32.6856, 105.493, 21.6312, 26.5271, 105.493, 15.2892, 20.7631, 105.492, 20.7092, 35.7864, 105.493, 31.2709, 24.6169, 105.493, -0.92503, 45.8458, 105.492, 16.601, 30.778, 105.493, 10.7027, 36.3783, 105.493, 27.6872, 34.0391, 105.492, 1.24806, 45.0448, 105.493, 12.612, 20.349, 105.493, 26.4454, 22.3467, 105.493, 16.9455, 25.2239, 105.493, 20.3504, 24.9354, 105.493, 3.35311, 20.9051, 105.492, 5.50142, 39.3351, 105.493, 19.5621, 34.3195, 105.493, 32.2913, 28.0928, 105.493, 1.70754, 18.0151, 105.493, 17.6797, 37.5161, 105.493, 17.5353, 38.7469, 105.493, 11.7838, 22.6631, 105.493, 29.3692, 26.6228, 105.493, 7.20507, 19.8463, 105.493, 22.105, 31.1818, 105.493, 1.4811, 40.6393, 105.493, 24.5897, 35.8799, 105.493, 21.0922, 21.3252, 105.493, 22.7907, 23.2543, 105.493, 15.207, 22.5064, 105.493, 25.836, 20.8521, 105.493, 8.14576, 39.2754, 105.493, 19.1413, 38.6182, 105.493, 21.0994, 23.5836, 105.493, 30.9261, 31.2333, 105.493, 20.3113, 25.8382, 105.493, 18.6079, 32.9491, 105.493, 16.3894, 31.9144, -41.3173, 45.1672, 34.6018, -41.3173, 1.83582E-5, 34.6018, -36.4487, 1.83582E-5, -8.80346, -36.4487, 45.1672, -8.80346, -61.7771, 55.875, 10.3312, -38.883, 55.875, 12.8992, -42.7086, 1.83582E-5, 34.4457, -37.8399, 1.83582E-5, -8.95951, -37.8399, 45.1672, -8.95951, -42.7086, 45.1672, 34.4457, -12.0075, 70.9104, 232.359, -11.7845, 63.4894, 232.366, -8.54053, 66.8625, 232.738, 179.514, 63.4928, 253.605, 184.324, 68.3814, 254.144, 185.895, 58.2004, 254.32, -161.316, 64.3577, 215.63, -156.361, 65.4579, 216.185, -156.672, 57.3714, 216.15, 212.658, 63.0776, 257.322, 211.353, 68.64, 257.176, 208.3, 64.2643, 256.834, -39.2951, 60.1385, 229.272, -35.8676, 64.5648, 229.667, -40.3512, 65.2397, 229.166, -187.897, 64.6567, 212.648, -188.262, 59.0062, 212.607, -183.455, 61.4884, 213.146, -202.578, 64.9815, 211.001, -201.734, 59.8123, 211.096, -199.928, 65.6997, 211.298, -23.2431, 68.6111, 231.093, -25.0092, 63.9162, 230.883, -21.9649, 60.2329, 231.216, -171.336, 59.3289, 214.506, -171.344, 66.4363, 214.505, -174.893, 62.3232, 214.107, 91.5729, 58.9303, 259.673, 89.5527, 63.5944, 262.316, 90.9946, 67.2468, 260.43, 84.8693, 61.9647, 266.775, 81.1764, 63.4684, 266.36, 83.8949, 67.0163, 266.665, 316.585, 66.2971, 269.196, 320.623, 57.5474, 269.649, 316.169, 59.763, 269.149, 195.535, 67.0108, 255.402, 198.031, 59.5383, 255.682, 197.732, 67.0448, 255.648, 360.254, 68.2478, 274.094, 357.822, 63.3291, 273.821, 362.029, 63.0136, 274.293, 343.301, 64.3804, 272.192, 348.021, 65.3539, 272.722, 346.624, 59.3835, 272.565, -185.757, 67.4341, 212.888, -55.1875, 67.9477, 227.508, -52.6308, 60.0788, 227.776, -50.0511, 65.7327, 228.079, -53.0792, 65.5948, 227.739, -11.8814, 57.7083, 232.34, -50.2104, 59.4928, 228.046, 62.6349, 62.4142, 254.775, 64.0398, 64.523, 257.845, 63.4155, 58.4613, 256.481, 166.285, 65.1734, 252.121, 172.106, 65.5079, 252.774, 167.277, 57.5474, 252.232, -36.3677, 68.4367, 229.62, 83.0442, 60.372, 266.57, 180.593, 57.9443, 253.726, 69.7684, 65.3187, 265.081, 71.4098, 62.0121, 265.265, 69.1707, 63.2365, 265.014, 332.042, 67.6778, 270.929, 333.442, 59.4255, 271.087, 332.887, 63.6607, 271.024, 328.363, 62.9021, 270.517, 194.767, 58.6577, 255.316, -204.979, 65.8696, 210.732, 183.92, 64.8825, 254.099, -171.112, 63.8144, 214.531, -159.836, 69.143, 215.796, -25.0958, 59.4317, 230.862, -160.667, 57.7921, 215.702, 357.243, 57.5713, 273.756, 333.397, 67.8891, 271.081, 330.317, 58.8341, 270.736, 212.665, 58.6683, 257.323, 171.357, 57.5474, 252.69, 194.929, 63.6505, 255.334, -36.603, 60.3484, 229.574, 318.21, 67.9971, 269.378, -52.9326, 67.148, 227.759, 84.8448, 58.7345, 266.772, 208.306, 57.5474, 256.834, 91.6105, 61.3337, 259.624, 180.939, 67.1247, 253.765, 89.9817, 61.0704, 261.755, -174.041, 58.0741, 214.202, -185.495, 57.8892, 212.917, 182.953, 68.2199, 253.99, -202.059, 66.3407, 211.059, 361.156, 66.1005, 274.195, 320.855, 64.8793, 269.675, 167.749, 67.8849, 252.285, -49.4501, 63.4321, 228.141, -199.042, 58.5173, 211.398, -199.906, 60.1889, 211.301, 198.009, 63.6478, 255.679, -53.3961, 62.5968, 227.696, -184.186, 65.0786, 213.064, 64.6502, 57.5474, 259.178, -160.703, 61.8985, 215.698, -188.083, 62.513, 212.627, -7.82198, 57.5452, 232.795, -199.637, 63.2967, 211.331, 68.527, 57.5474, 264.941, -10.9777, 67.3002, 232.466, 343.949, 57.5474, 272.265, -20.76, 62.1732, 231.356, -156.878, 62.808, 216.127, 72.3167, 57.5474, 265.367, -203.678, 62.7366, 210.878, 212.488, 65.929, 257.303, -34.3156, 62.0665, 229.835, 83.0663, 57.7968, 266.572, 345.937, 67.8347, 272.488, 63.4342, 65.8136, 256.521, 92.2477, 64.1303, 258.79, -50.4777, 61.2824, 228.02, 181.48, 62.3127, 253.825, 329.805, 65.895, 270.678, -188.533, 57.3714, 212.577, 90.4306, 57.5474, 261.167, 361.751, 57.5474, 274.262, -169.745, 61.0646, 214.684, -24.9864, 61.955, 230.881, -173.024, 65.405, 214.316, 317.634, 64.2133, 269.313, -54.2827, 57.4781, 227.584, 185.27, 66.111, 254.25, -21.5302, 66.5458, 231.28, 334.122, 62.1068, 271.163, -39.7358, 58.3111, 229.218, -198.705, 60.3767, 211.436, 358.252, 66.4373, 273.869, 196.228, 68.6223, 255.48, 72.6275, 62.5716, 265.401, -202.569, 57.3714, 211.002, 316.623, 57.564, 269.2, -39.0175, 63.6928, 229.312, 184.324, 59.433, 254.144, 333.738, 69.4265, 271.12, 332.731, 66.2728, 271.007, 332.337, 68.9418, 270.962, -10.8829, 62.2615, 232.464, -54.7842, 64.0512, 227.544, -55.438, 65.9541, 227.475, 334.563, 65.3816, 271.212, -51.9919, 68.5122, 227.868, -38.1258, 68.2345, 229.423, -51.2397, 66.7716, 227.948, -10.8448, 71.5767, 232.491, 90.4491, 61.0196, 261.143, -184.804, 62.4611, 212.995, 199.314, 66.0131, 255.826, 330.324, 62.6919, 270.737, 171.272, 66.9863, 252.68, 63.146, 63.034, 255.892, -160.147, 65.7304, 215.761, -172.076, 67.6691, 214.423, 85.4161, 59.9351, 266.836, 183.202, 69.715, 254.018, 71.047, 66.644, 265.224, 72.1767, 64.8575, 265.351, 210.261, 68.5937, 257.054, -35.7012, 57.5049, 229.668, 82.6666, 66.2982, 266.527, 334.779, 57.5474, 271.236, 347.058, 65.9464, 272.614, 213.988, 63.8132, 257.472, 362.498, 64.6958, 274.346, -189.641, 63.4941, 212.452, 168.013, 64.5824, 252.315, -198.661, 61.8729, 211.441, 320.679, 61.0278, 269.655, 67.8823, 63.4874, 264.869, -23.7612, 66.7139, 231.03, -202.243, 61.952, 211.039, -203.494, 67.0386, 210.899, 90.2442, 65.3091, 261.411, 344.917, 66.6892, 272.374, 358.512, 61.5422, 273.899, -170.571, 58.3095, 214.591, 179.561, 65.2207, 253.61, -189.543, 58.2763, 212.463, -200.67, 67.2606, 211.215, 86.0445, 62.402, 266.906, -7.83264, 63.8269, 232.81, -49.1059, 60.7462, 228.173, -21.2484, 57.5258, 231.289, 199.343, 58.0647, 255.829, -39.3716, 65.2146, 229.276, -160.035, 68.0923, 215.773, -35.5164, 62.7959, 229.702, -8.97015, 68.2163, 232.693, 90.4377, 62.7064, 261.158, -12.4479, 64.7909, 232.294, 317.527, 60.5971, 269.301, -155.88, 63.4514, 216.239, 81.7673, 59.9926, 266.427, 167.917, 66.725, 252.304, -159.422, 60.8805, 215.842, 69.2372, 66.2738, 265.021, -26.4152, 57.5183, 230.71, 333.397, 67.8891, 271.081]; + uvs = new [0.473633, 0.198951, 0.474267, 0.22757, 0.476042, 0.307755, 0.476689, 0.307558, 0.476689, 0.307558, 0.474913, 0.227373, 0.471765, 0.235649, 0.484418, 0.667033, 0.486104, 0.74315, 0.484418, 0.667033, 0.483997, 0.667033, 0.404044, 0.328034, 0.443085, 0.316116, 0.443085, 0.316116, 0.439613, 0.108642, 0.500435, 0.0595247, 0.453589, 0.308456, 0.453589, 0.308456, 0.452342, 0.753456, 0.452342, 0.753456, 0.450654, 0.677212, 0.450654, 0.677212, 0.486104, 0.74315, 0.502706, 0.190076, 0.502794, 0.190049, 0.501768, 0.143712, 0.442987, 0.311693, 0.442987, 0.311693, 0.475743, 0.746313, 0.477454, 0.74579, 0.479002, 0.745318, 0.471358, 0.719226, 0.473281, 0.718639, 0.475118, 0.718078, 0.476829, 0.717556, 0.478377, 0.717083, 0.479727, 0.716671, 0.501064, 0.111882, 0.453399, 0.126433, 0.442301, 0.269489, 0.441758, 0.23737, 0.474966, 0.0896137, 0.474476, 0.0674496, 0.500926, 0.0816888, 0.500574, 0.089783, 0.500573, 0.089729, 0.453399, 0.10413, 0.424934, 0.106554, 0.481585, 0.679192, 0.461639, 0.155963, 0.462886, 0.711922, 0.455145, 0.739865, 0.467427, 0.720426, 0.469392, 0.719826, 0.465504, 0.721013, 0.463667, 0.721574, 0.461956, 0.722096, 0.460408, 0.722569, 0.459057, 0.722981, 0.474476, 0.0674496, 0.404044, 0.328034, 0.473633, 0.198951, 0.464006, 0.262863, 0.439576, 0.10835, 0.398445, 0.0906598, 0.482742, 0.73144, 0.453988, 0.687616, 0.464946, 0.684271, 0.450654, 0.677212, 0.46168, 0.673846, 0.46168, 0.673846, 0.468052, 0.748661, 0.471983, 0.74746, 0.470018, 0.74806, 0.462581, 0.750331, 0.464292, 0.749808, 0.466129, 0.749247, 0.500435, 0.0595247, 0.424406, 0.0827345, 0.424406, 0.0827346, 0.398445, 0.0906599, 0.475003, 0.0912695, 0.424934, 0.106554, 0.404044, 0.328034, 0.500926, 0.0816888, 0.442807, 0.300472, 0.500435, 0.0835056, 0.502706, 0.190076, 0.502794, 0.190049, 0.502545, 0.178799, 0.455187, 0.23327, 0.475003, 0.0912695, 0.473906, 0.746873, 0.483997, 0.667033, 0.470721, 0.188514, 0.474913, 0.227373, 0.502706, 0.190076, 0.443085, 0.316116, 0.439613, 0.108642, 0.459683, 0.751215, 0.480352, 0.744905, 0.480352, 0.744905, 0.473874, 0.708568, 0.47318, 0.299556, 0.456357, 0.296336, 0.459683, 0.751215, 0.461033, 0.750803, 0.474267, 0.22757, 0.476042, 0.307755, 0.820199, 0.196106, 0.869965, 0.176081, 0.869965, 0.176081, 0.820092, 0.191306, 0.996978, 0.0226244, 0.867443, 0.0621685, 0.9995, 0.136537, 0.9995, 0.136537, 0.870072, 0.180881, 0.867394, 0.0599568, 0.817521, 0.0751818, 0.870072, 0.180881, 0.834916, 0.131856, 0.852726, 0.126419, 0.81757, 0.0773935, 0.869574, 0.158409, 0.858795, 0.124566, 0.691963, 0.115738, 0.996978, 0.0226244, 0.695205, 0.229432, 0.820199, 0.196106, 0.817521, 0.0751818, 0.867394, 0.0599568, 0.695205, 0.229432, 0.691963, 0.115738, 0.828846, 0.133709, 0.867443, 0.0621685, 0.867941, 0.084641, 0.818068, 0.099866, 0.81757, 0.0773935, 0.820092, 0.191306, 0.819701, 0.173634, 0.989134, 0.0847766, 0.692995, 0.175181, 0.622366, 0.158769, 0.50938, 0.119718, 0.50245, 0.089156, 0.51047, 0.16892, 0.533298, 0.200891, 0.533298, 0.200891, 0.53411, 0.237564, 0.561532, 0.229193, 0.547101, 0.233598, 0.59078, 0.183343, 0.533298, 0.200891, 0.53411, 0.237564, 0.56072, 0.192519, 0.590445, 0.168196, 0.590445, 0.168196, 0.590107, 0.15294, 0.589302, 0.116578, 0.588607, 0.0851575, 0.588305, 0.071553, 0.503237, 0.210068, 0.59078, 0.183343, 0.58624, 0.0635767, 0.534668, 0.071388, 0.533868, 0.0352478, 0.538097, 0.00347072, 0.554198, 0.0654259, 0.553398, 0.0292857, 0.500435, 0.0835056, 0.56072, 0.192519, 0.546289, 0.196925, 0.561532, 0.229193, 0.588767, 0.177692, 0.580391, 0.147575, 0.579302, 0.0983722, 0.54783, 0.000499487, 0.534668, 0.071388, 0.553398, 0.0292857, 0.554198, 0.065426, 0.500435, 0.0835056, 0.587942, 0.0551249, 0.587942, 0.0551249, 0.54783, 0.000499487, 0.538097, 0.00347072, 0.533868, 0.0352478, 0.56072, 0.192519, 0.503149, 0.210095, 0.504977, 0.203271, 0.633847, 0.698047, 0.651468, 0.616781, 0.590445, 0.168196, 0.624577, 0.14276, 0.630642, 0.10437, 0.589302, 0.116578, 0.665885, 0.040037, 0.640695, 0.246222, 0.694486, 0.229651, 0.62221, 0.182258, 0.622882, 0.182053, 0.624661, 0.262386, 0.623989, 0.262591, 0.632618, 0.621757, 0.622882, 0.182053, 0.667546, 0.68776, 0.667546, 0.68776, 0.623989, 0.262591, 0.643242, 0.245295, 0.645539, 0.349043, 0.643242, 0.245295, 0.632618, 0.621757, 0.627516, 0.390204, 0.632161, 0.621896, 0.632161, 0.621896, 0.641976, 0.668135, 0.640603, 0.668554, 0.643545, 0.667656, 0.645276, 0.667128, 0.647131, 0.666561, 0.64907, 0.665969, 0.651052, 0.665364, 0.660732, 0.68984, 0.653035, 0.664759, 0.654974, 0.664167, 0.656829, 0.663601, 0.65856, 0.663072, 0.660128, 0.662593, 0.661501, 0.662174, 0.647808, 0.348351, 0.664723, 0.675885, 0.636572, 0.684479, 0.633847, 0.698047, 0.66586, 0.611609, 0.642894, 0.657728, 0.627425, 0.431615, 0.631187, 0.439585, 0.637845, 0.428509, 0.628335, 0.472719, 0.626976, 0.251096, 0.657308, 0.653328, 0.651468, 0.616781, 0.62221, 0.182258, 0.613541, 0.0492314, 0.65145, 0.616008, 0.64892, 0.501711, 0.663795, 0.01068, 0.689441, 0.00182551, 0.694486, 0.229651, 0.645154, 0.226382, 0.65219, 0.195081, 0.650434, 0.115778, 0.677622, 0.214561, 0.669204, 0.188886, 0.674028, 0.0784487, 0.642136, 0.0900599, 0.667113, 0.109706, 0.681107, 0.223868, 0.662907, 0.174443, 0.661806, 0.136754, 0.656296, 0.17685, 0.65553, 0.139039, 0.676899, 0.0644782, 0.638881, 0.0783196, 0.63548, 0.63517, 0.663597, 0.625066, 0.629343, 0.472497, 0.627516, 0.390204, 0.628335, 0.472719, 0.626515, 0.39051, 0.626515, 0.39051, 0.629351, 0.47258, 0.66586, 0.611609, 0.664306, 0.0337381, 0.622366, 0.158769, 0.625649, 0.19118, 0.641207, 0.6958, 0.662105, 0.689421, 0.651656, 0.692611, 0.651204, 0.501711, 0.651204, 0.501711, 0.689441, 0.00182551, 0.649197, 0.63024, 0.624661, 0.262386, 0.590107, 0.15294, 0.588607, 0.0851575, 0.588116, 0.0630041, 0.645539, 0.349043, 0.647808, 0.348351, 0.587451, 0.0329608, 0.587451, 0.0329608, 0.613412, 0.0250355, 0.613412, 0.0250356, 0.649673, 0.693216, 0.655578, 0.691413, 0.647734, 0.693808, 0.645879, 0.694374, 0.657433, 0.690847, 0.644148, 0.694902, 0.659163, 0.690319, 0.636833, 0.071629, 0.648935, 0.502404, 0.653638, 0.692005, 0.64258, 0.695381, 0.613541, 0.0492314, 0.642514, 0.237919, 0.630786, 0.421469, 0.641207, 0.6958, 0.662105, 0.689421, 0.649506, 0.425031, 0.645116, 0.44282, 0.644392, 0.410202, 0.663795, 0.01068, 0.689441, 0.00182545, 0.664306, 0.0337381, 0.243767, 0.395564, 0.283564, 0.380802, 0.243767, 0.395564, 0.283564, 0.380802, 0.243085, 0.370217, 0.276536, 0.359446, 0.256318, 0.338617, 0.276137, 0.331265, 0.275739, 0.303081, 0.248009, 0.313366, 0.240981, 0.292014, 0.282093, 0.276765, 0.240981, 0.292014, 0.282093, 0.276765, 0.107978, 0.437984, 0.107978, 0.437984, 0.105616, 0.350173, 0.402415, 0.257734, 0.282205, 0.284671, 0.401999, 0.240236, 0.401999, 0.240236, 0.106086, 0.367651, 0.403043, 0.284192, 0.276137, 0.331265, 0.276536, 0.359446, 0.275739, 0.303081, 0.268885, 0.333955, 0.403641, 0.310662, 0.404111, 0.328139, 0.283452, 0.372895, 0.283204, 0.355336, 0.282828, 0.328783, 0.249519, 0.369467, 0.243555, 0.387694, 0.241193, 0.299884, 0.282453, 0.302231, 0.241663, 0.317361, 0.242374, 0.343789, 0.243556, 0.387694, 0.107508, 0.420506, 0.105616, 0.350173, 0.106797, 0.394078, 0.241193, 0.299884, 0.282205, 0.284671, 0.404111, 0.328139, 0.283452, 0.372895, 0.102956, 0.480133, 0.0997722, 0.481314, 0.102956, 0.480133, 0.100485, 0.481049, 0.102243, 0.480397, 0.101364, 0.480723, 0.102394, 0.459254, 0.101681, 0.459519, 0.100802, 0.459845, 0.0992105, 0.460435, 0.0999228, 0.460171, 0.0997722, 0.481314, 0.0934758, 0.483507, 0.0902925, 0.484688, 0.0934758, 0.483507, 0.0910049, 0.484423, 0.0927634, 0.483771, 0.0918841, 0.484097, 0.0929141, 0.462628, 0.0922017, 0.462893, 0.0913223, 0.463219, 0.0897308, 0.463809, 0.0904431, 0.463545, 0.0902925, 0.484688, 0.0735899, 0.491025, 0.0704066, 0.492206, 0.0735899, 0.491025, 0.071119, 0.491942, 0.0728776, 0.49129, 0.0719983, 0.491616, 0.0730282, 0.470147, 0.0723158, 0.470411, 0.0714365, 0.470737, 0.0698449, 0.471328, 0.0705572, 0.471063, 0.0704066, 0.492206, 0.0438277, 0.502302, 0.0406444, 0.503483, 0.0438277, 0.502302, 0.0413568, 0.503219, 0.0431153, 0.502566, 0.042236, 0.502893, 0.043266, 0.481424, 0.0425536, 0.481688, 0.0416743, 0.482014, 0.0400827, 0.482605, 0.040795, 0.48234, 0.0406444, 0.503483, 0.0241278, 0.511081, 0.0209445, 0.512261, 0.0241278, 0.511081, 0.0216569, 0.511997, 0.0234154, 0.511345, 0.0225361, 0.511671, 0.0235661, 0.490202, 0.0228536, 0.490466, 0.0219743, 0.490793, 0.0203827, 0.491383, 0.0210951, 0.491119, 0.0209445, 0.512261, 0.0146033, 0.515088, 0.0114201, 0.516269, 0.0146033, 0.515088, 0.0121325, 0.516004, 0.013891, 0.515352, 0.0130117, 0.515678, 0.0140417, 0.49421, 0.0133293, 0.494474, 0.0124499, 0.4948, 0.0108584, 0.49539, 0.0115707, 0.495126, 0.0114201, 0.516269, 0.0569344, 0.50247, 0.0652972, 0.499368, 0.048878, 0.505459, 0.0361038, 0.510197, 0.0780483, 0.494639, 0.0361038, 0.510197, 0.0780483, 0.494639, 0.0361037, 0.507293, 0.0488006, 0.502584, 0.056857, 0.499595, 0.056434, 0.48387, 0.0652198, 0.496493, 0.0779848, 0.492279, 0.00528872, 0.521627, 0.109192, 0.483087, 0.000499487, 0.343611, 0.00528872, 0.521627, 0.104402, 0.30507, 0.000499547, 0.343611, 0.104402, 0.30507, 0.0995124, 0.453675, 0.0268604, 0.423729, 0.0132098, 0.485687, 0.0828323, 0.402968, 0.0964814, 0.341011, 0.109192, 0.483087, 0.0101788, 0.373023, 0.29278, 0.981821, 0.292765, 0.983612, 0.292765, 0.983611, 0.110763, 1.02088, 0.110763, 1.02088, 0.109353, 0.925999, 0.109353, 0.925999, 0.291397, 0.88872, 0.291397, 0.88872, 0.288033, 0.90267, 0.114127, 1.00693, 0.11311, 0.938491, 0.289049, 0.971111, 0.292806, 0.983603, 0.542966, 0.18352, 0.544102, 0.211499, 0.548765, 0.209887, 0.544391, 0.201153, 0.544001, 0.215132, 0.549047, 0.213386, 0.544824, 0.185669, 0.547963, 0.199921, 0.546762, 0.185006, 0.552466, 0.145872, 0.556814, 0.154605, 0.554641, 0.139315, 0.55413, 0.157584, 0.557756, 0.153559, 0.555404, 0.137012, 0.549212, 0.155685, 0.550113, 0.162043, 0.547725, 0.151085, 0.552883, 0.201818, 0.551117, 0.193743, 0.553503, 0.204654, 0.548474, 0.181659, 0.546299, 0.133452, 0.551061, 0.128261, 0.546588, 0.123106, 0.549725, 0.137403, 0.55153, 0.125051, 0.54669, 0.119473, 0.545867, 0.148936, 0.542728, 0.134684, 0.543929, 0.149599, 0.536561, 0.177021, 0.533443, 0.162687, 0.533877, 0.18, 0.536229, 0.16376, 0.532464, 0.16231, 0.532934, 0.181046, 0.540578, 0.172562, 0.540399, 0.165366, 0.540966, 0.197202, 0.53605, 0.19529, 0.53963, 0.206344, 0.538225, 0.188733, 0.535286, 0.197593, 0.539161, 0.209554, 0.541479, 0.17892, 0.537293, 0.151041, 0.534831, 0.14608, 0.533966, 0.144338, 0.540978, 0.158466, 0.554462, 0.170845, 0.55586, 0.188525, 0.557248, 0.171918, 0.553398, 0.183564, 0.556724, 0.190267, 0.558226, 0.172295, 0.550292, 0.169239, 0.549713, 0.176139, 0.539574, 0.140862, 0.541926, 0.124718, 0.537808, 0.132787, 0.541644, 0.121219, 0.537188, 0.129951, 0.542217, 0.152946, 0.545345, 0.167302, 0.533571, 0.174213, 0.533571, 0.174213, 0.533493, 0.168326, 0.534857, 0.168078, 0.533493, 0.168326, 0.534935, 0.173965, 0.5472, 0.210867, 0.5472, 0.210867, 0.545548, 0.20609, 0.545614, 0.211155, 0.545614, 0.211155, 0.547133, 0.205802, 0.538341, 0.203021, 0.537165, 0.199062, 0.538082, 0.195306, 0.537165, 0.199062, 0.538341, 0.203021, 0.539258, 0.199264, 0.554958, 0.193155, 0.55288, 0.194115, 0.553892, 0.197521, 0.553892, 0.197521, 0.553946, 0.189749, 0.554958, 0.193155, 0.535684, 0.141317, 0.537762, 0.140358, 0.53675, 0.136952, 0.53675, 0.136952, 0.535684, 0.141317, 0.536695, 0.144724, 0.543442, 0.123605, 0.543442, 0.123605, 0.545027, 0.123317, 0.545094, 0.128382, 0.545027, 0.123317, 0.543509, 0.12867, 0.557149, 0.166146, 0.557149, 0.166146, 0.555785, 0.166394, 0.557071, 0.16026, 0.555707, 0.160508, 0.557071, 0.16026, 0.552301, 0.131451, 0.552301, 0.131451, 0.553477, 0.13541, 0.553477, 0.13541, 0.55256, 0.139167, 0.551384, 0.135208, 0.544001, 0.215132, 0.549047, 0.213386, 0.557756, 0.153559, 0.555404, 0.137012, 0.553503, 0.204654, 0.55153, 0.125051, 0.54669, 0.119473, 0.532464, 0.16231, 0.532934, 0.181046, 0.535286, 0.197593, 0.539161, 0.209554, 0.533966, 0.144338, 0.556724, 0.190267, 0.558226, 0.172295, 0.541644, 0.121219, 0.537188, 0.129951, 0.54538, 0.169867, 0.545766, 0.167839, 0.544861, 0.172595, 0.54693, 0.161726, 0.544644, 0.173733, 0.547194, 0.16034, 0.544067, 0.176761, 0.544712, 0.173377, 0.545591, 0.168756, 0.54717, 0.160468, 0.545455, 0.169472, 0.543817, 0.178076, 0.544797, 0.17293, 0.5473, 0.159785, 0.54648, 0.164091, 0.546017, 0.166519, 0.545025, 0.171732, 0.546105, 0.166057, 0.545311, 0.170228, 0.54592, 0.167028, 0.546218, 0.165468, 0.54469, 0.173491, 0.545334, 0.170109, 0.545848, 0.167406, 0.544163, 0.176257, 0.547118, 0.160741, 0.545122, 0.171221, 0.547529, 0.158582, 0.543566, 0.179395, 0.546959, 0.161572, 0.545878, 0.167253, 0.543984, 0.177198, 0.544156, 0.176295, 0.544068, 0.176757, 0.544904, 0.172368, 0.54643, 0.164351, 0.545313, 0.170219, 0.544706, 0.173407, 0.545033, 0.17169, 0.545685, 0.168265, 0.544034, 0.176935, 0.54699, 0.161409, 0.547272, 0.159931, 0.546806, 0.162377, 0.546474, 0.164118, 0.547109, 0.160783, 0.544806, 0.172883, 0.543648, 0.178963, 0.547381, 0.159358, 0.545121, 0.171224, 0.545135, 0.171152, 0.546265, 0.16522, 0.544806, 0.172881, 0.545818, 0.167566, 0.545262, 0.170489, 0.546123, 0.165965, 0.544253, 0.175784, 0.544048, 0.17686, 0.545028, 0.171716, 0.544754, 0.173154, 0.547488, 0.158793, 0.545721, 0.168075, 0.544823, 0.172791, 0.546165, 0.165743, 0.545877, 0.167258, 0.544276, 0.175665, 0.546075, 0.166215, 0.545181, 0.170912, 0.546775, 0.162539, 0.553979, 0.462662, 0.554147, 0.441645, 0.553941, 0.467512, 0.554216, 0.433103, 0.55408, 0.450061, 0.553944, 0.467069, 0.554184, 0.437031, 0.553859, 0.47774, 0.554032, 0.456053, 0.554242, 0.429752, 0.554127, 0.444206, 0.554034, 0.455832, 0.553947, 0.466714, 0.554174, 0.438352, 0.554005, 0.459438, 0.554326, 0.419362, 0.554098, 0.447807, 0.554183, 0.437235, 0.554147, 0.441651, 0.554313, 0.420874, 0.553941, 0.467496, 0.553971, 0.463724, 0.554014, 0.458293, 0.55401, 0.458837, 0.553949, 0.466446, 0.554227, 0.431653, 0.554152, 0.441122, 0.554058, 0.452877, 0.553906, 0.471902, 0.5542, 0.435087, 0.554218, 0.432764, 0.553976, 0.463127, 0.554035, 0.455652, 0.553933, 0.468445, 0.554104, 0.447045, 0.554247, 0.429191, 0.554175, 0.438176, 0.553956, 0.465653, 0.553985, 0.462011, 0.553973, 0.463423, 0.553948, 0.466546, 0.554226, 0.431766, 0.554217, 0.433007, 0.55399, 0.461389, 0.554105, 0.446948, 0.554024, 0.457133, 0.554131, 0.443709, 0.554115, 0.445662, 0.479516, 0.432363, 0.479516, 0.432363, 0.481336, 0.514577, 0.481336, 0.514577, 0.468748, 0.477035, 0.480426, 0.47347, 0.478806, 0.43258, 0.480626, 0.514794, 0.480626, 0.514794, 0.478806, 0.43258, 0.497401, 0.0606749, 0.497515, 0.0606749, 0.49917, 0.060154, 0.595094, 0.0312976, 0.597547, 0.0305486, 0.598349, 0.030304, 0.421239, 0.0838914, 0.423766, 0.0831199, 0.423608, 0.0831681, 0.612001, 0.0261363, 0.611335, 0.0263395, 0.609778, 0.0268149, 0.483481, 0.0649744, 0.48523, 0.06442, 0.482943, 0.065115, 0.407679, 0.0880307, 0.407493, 0.0880876, 0.409945, 0.087339, 0.400191, 0.0903168, 0.400621, 0.0901853, 0.401542, 0.0899042, 0.49167, 0.0624353, 0.490769, 0.0627322, 0.492322, 0.0622754, 0.416127, 0.0854517, 0.416123, 0.085453, 0.414313, 0.0860056, 0.550475, 0.0149148, 0.549488, 0.00981152, 0.550193, 0.0134538, 0.547174, 0.00113237, 0.54529, 0.00170743, 0.546677, 0.00128412, 0.665018, 0.00954473, 0.667078, 0.00891584, 0.664806, 0.00960946, 0.603266, 0.0288028, 0.60454, 0.0284141, 0.604387, 0.0284605, 0.687294, 0.00274432, 0.686053, 0.00312316, 0.688199, 0.00246805, 0.678646, 0.00538439, 0.681054, 0.0046494, 0.680341, 0.00486684, 0.408771, 0.0876974, 0.475375, 0.0674126, 0.476679, 0.0670513, 0.477995, 0.0666232, 0.47645, 0.0670953, 0.497465, 0.060717, 0.477913, 0.0666772, 0.535689, 0.0225389, 0.536449, 0.0168233, 0.536111, 0.0193633, 0.588346, 0.0333576, 0.591315, 0.0324512, 0.588852, 0.0332032, 0.484975, 0.0644798, 0.546243, 0.00141656, 0.595645, 0.0311295, 0.539471, 0.00348389, 0.540308, 0.00322831, 0.539166, 0.00357699, 0.672903, 0.0071376, 0.673617, 0.0069195, 0.673334, 0.00700605, 0.671026, 0.00771046, 0.602875, 0.0289223, 0.398966, 0.0906906, 0.597342, 0.0306114, 0.416242, 0.0854169, 0.421993, 0.083661, 0.490725, 0.0627667, 0.42157, 0.0837902, 0.685758, 0.00321329, 0.673594, 0.00692666, 0.672023, 0.00740623, 0.612005, 0.0261352, 0.590933, 0.0325678, 0.602957, 0.0288971, 0.484855, 0.0645542, 0.665847, 0.00929165, 0.476525, 0.0670652, 0.547162, 0.00113618, 0.609781, 0.0268141, 0.550494, 0.0150098, 0.595821, 0.0310756, 0.549698, 0.0108953, 0.414747, 0.085873, 0.408905, 0.0876566, 0.596848, 0.0307621, 0.400455, 0.0902359, 0.687754, 0.00260389, 0.667196, 0.00887966, 0.589093, 0.0331296, 0.478301, 0.0665404, 0.401994, 0.0897662, 0.401554, 0.0899007, 0.604528, 0.0284175, 0.476289, 0.0671587, 0.409573, 0.0874528, 0.53678, 0.0143399, 0.421551, 0.0837958, 0.407585, 0.0880596, 0.499536, 0.0600857, 0.401691, 0.0898589, 0.538838, 0.00367725, 0.497927, 0.0605314, 0.678976, 0.00528347, 0.492936, 0.0620787, 0.423502, 0.0832002, 0.540771, 0.00308716, 0.39963, 0.0904881, 0.611914, 0.0261629, 0.486022, 0.06419, 0.546254, 0.00141311, 0.679991, 0.00497389, 0.536121, 0.0192873, 0.550805, 0.0166192, 0.477777, 0.0667104, 0.596097, 0.0309915, 0.671761, 0.0074861, 0.407355, 0.0881298, 0.549917, 0.0120292, 0.688057, 0.00251132, 0.416939, 0.085204, 0.49078, 0.0627378, 0.415266, 0.0857146, 0.665553, 0.00938141, 0.475836, 0.0673207, 0.59803, 0.0304012, 0.492544, 0.0621781, 0.673964, 0.00681376, 0.483257, 0.0650516, 0.402166, 0.0897137, 0.686273, 0.00305611, 0.60362, 0.0286947, 0.540929, 0.0030387, 0.400195, 0.0903153, 0.665037, 0.00953877, 0.483623, 0.0649146, 0.597548, 0.0305485, 0.673768, 0.00687361, 0.673254, 0.00703037, 0.673053, 0.00709176, 0.497975, 0.0605403, 0.47558, 0.0673681, 0.475247, 0.067461, 0.674189, 0.00674498, 0.477005, 0.0669124, 0.484078, 0.0647545, 0.477389, 0.0668034, 0.497995, 0.0604907, 0.549926, 0.0120758, 0.409257, 0.087549, 0.605194, 0.0282142, 0.672026, 0.00740516, 0.59089, 0.032581, 0.535966, 0.0204595, 0.421835, 0.0837094, 0.41575, 0.085567, 0.547453, 0.00104725, 0.596975, 0.0307233, 0.540123, 0.00328481, 0.5407, 0.00310898, 0.610778, 0.0265095, 0.485315, 0.0644271, 0.54605, 0.00147539, 0.674299, 0.00671142, 0.680563, 0.00479925, 0.612679, 0.0259292, 0.688439, 0.00239486, 0.40679, 0.0883023, 0.589227, 0.0330886, 0.402189, 0.0897068, 0.667106, 0.00890714, 0.538509, 0.00377762, 0.491406, 0.0625248, 0.400362, 0.0902646, 0.399723, 0.0904594, 0.549826, 0.0115584, 0.67947, 0.00513268, 0.686405, 0.00301564, 0.416517, 0.0853326, 0.595118, 0.0312902, 0.40684, 0.088287, 0.401164, 0.0900196, 0.547774, 0.000949383, 0.499531, 0.0600579, 0.478477, 0.0664993, 0.492687, 0.0621765, 0.605209, 0.0282097, 0.483443, 0.0649626, 0.421892, 0.0836918, 0.485409, 0.0643736, 0.498951, 0.0602145, 0.54992, 0.0120471, 0.497176, 0.0607721, 0.665498, 0.00939798, 0.424011, 0.0830449, 0.545592, 0.00161541, 0.589179, 0.0331035, 0.422205, 0.0835965, 0.5392, 0.00356662, 0.490051, 0.0629811, 0.673594, 0.00692666]; + indices = new [61, 23, 0, 23, 61, 87, 61, 1, 107, 1, 61, 0, 95, 3, 4, 3, 95, 5, 95, 1, 5, 1, 95, 107, 108, 3, 2, 3, 108, 4, 103, 95, 4, 95, 103, 6, 6, 107, 95, 94, 87, 61, 87, 94, 89, 7, 22, 8, 22, 7, 9, 7, 10, 9, 10, 7, 93, 60, 11, 83, 60, 12, 11, 60, 13, 12, 12, 63, 14, 63, 12, 13, 43, 77, 15, 77, 43, 84, 59, 41, 42, 59, 81, 41, 59, 91, 81, 16, 69, 17, 69, 16, 70, 19, 68, 18, 19, 21, 68, 19, 20, 21, 8, 105, 101, 8, 18, 105, 8, 19, 18, 8, 22, 19, 2, 93, 108, 93, 2, 10, 103, 4, 108, 87, 88, 24, 88, 96, 23, 25, 94, 49, 94, 25, 89, 48, 93, 7, 17, 26, 16, 26, 17, 27, 73, 31, 72, 31, 73, 53, 72, 32, 92, 32, 72, 31, 92, 33, 28, 33, 92, 32, 28, 34, 29, 34, 28, 33, 29, 35, 30, 35, 29, 34, 35, 100, 30, 100, 35, 36, 37, 49, 38, 49, 37, 25, 85, 16, 26, 16, 85, 104, 90, 39, 40, 39, 90, 62, 15, 41, 43, 41, 15, 42, 62, 85, 39, 85, 62, 104, 38, 44, 37, 38, 45, 44, 38, 46, 45, 38, 63, 46, 63, 38, 90, 63, 12, 97, 12, 63, 98, 91, 63, 47, 91, 46, 63, 91, 45, 46, 91, 86, 45, 90, 40, 63, 94, 62, 49, 62, 103, 102, 94, 103, 62, 94, 6, 103, 48, 65, 102, 65, 50, 102, 50, 65, 51, 50, 51, 66, 50, 67, 102, 67, 50, 66, 71, 53, 73, 53, 71, 52, 76, 52, 71, 52, 76, 54, 75, 54, 76, 54, 75, 55, 74, 55, 75, 55, 74, 56, 106, 56, 74, 56, 106, 57, 106, 58, 57, 58, 106, 99, 49, 90, 38, 62, 90, 49, 104, 70, 16, 70, 104, 67, 67, 62, 102, 62, 67, 104, 91, 77, 86, 77, 91, 59, 13, 47, 63, 47, 13, 60, 107, 94, 61, 94, 107, 6, 93, 103, 108, 103, 93, 48, 65, 7, 8, 7, 65, 48, 51, 105, 18, 51, 101, 105, 51, 8, 101, 51, 65, 8, 68, 51, 18, 51, 68, 66, 70, 66, 68, 66, 70, 67, 68, 69, 70, 69, 68, 21, 106, 100, 99, 106, 30, 100, 72, 71, 73, 92, 71, 72, 92, 76, 71, 28, 76, 92, 28, 75, 76, 28, 74, 75, 29, 74, 28, 30, 74, 29, 106, 74, 30, 59, 15, 77, 15, 59, 42, 64, 79, 78, 79, 64, 80, 81, 47, 82, 47, 81, 91, 83, 64, 60, 64, 83, 80, 79, 47, 78, 47, 79, 82, 77, 84, 86, 102, 103, 48, 78, 60, 64, 60, 78, 47, 126, 132, 133, 132, 126, 128, 139, 109, 112, 139, 129, 109, 139, 140, 129, 120, 110, 117, 120, 111, 110, 120, 124, 111, 135, 131, 114, 135, 118, 131, 135, 136, 118, 119, 137, 138, 132, 139, 112, 139, 132, 128, 135, 113, 127, 113, 135, 114, 113, 115, 127, 115, 113, 116, 121, 120, 129, 120, 121, 122, 118, 121, 119, 121, 118, 122, 126, 123, 138, 123, 126, 133, 110, 115, 116, 115, 110, 111, 129, 134, 121, 134, 129, 140, 111, 141, 115, 141, 124, 125, 111, 124, 141, 136, 141, 125, 141, 136, 127, 136, 135, 127, 142, 137, 134, 142, 138, 137, 142, 126, 138, 115, 141, 127, 128, 140, 139, 128, 134, 140, 134, 128, 142, 120, 109, 129, 109, 120, 117, 119, 131, 118, 131, 119, 130, 119, 123, 130, 123, 119, 138, 128, 126, 142, 125, 120, 122, 120, 125, 124, 118, 125, 122, 125, 118, 136, 137, 121, 134, 121, 137, 119, 22, 143, 190, 143, 22, 0, 189, 144, 146, 144, 189, 145, 188, 147, 148, 147, 188, 162, 173, 154, 151, 173, 149, 154, 173, 150, 149, 155, 152, 163, 152, 155, 187, 153, 148, 147, 153, 149, 148, 153, 154, 149, 155, 171, 187, 155, 173, 171, 155, 150, 173, 188, 170, 162, 170, 188, 181, 159, 161, 160, 159, 152, 161, 152, 157, 163, 152, 156, 157, 152, 158, 156, 159, 158, 152, 168, 183, 164, 168, 177, 169, 168, 167, 177, 167, 165, 166, 168, 165, 167, 152, 183, 161, 189, 147, 162, 171, 151, 172, 151, 171, 173, 172, 154, 153, 154, 172, 151, 174, 146, 175, 146, 174, 189, 146, 176, 175, 176, 146, 144, 164, 175, 176, 175, 164, 174, 144, 164, 176, 164, 144, 145, 178, 166, 165, 166, 178, 186, 168, 179, 180, 179, 168, 169, 170, 178, 165, 178, 170, 181, 183, 180, 182, 180, 183, 168, 184, 167, 185, 167, 184, 177, 186, 167, 166, 167, 186, 185, 169, 184, 179, 184, 169, 177, 164, 183, 152, 172, 187, 171, 172, 147, 187, 172, 153, 147, 164, 152, 174, 152, 187, 174, 189, 187, 147, 187, 189, 174, 189, 170, 145, 170, 189, 162, 164, 165, 168, 164, 170, 165, 164, 145, 170, 192, 143, 157, 143, 192, 274, 274, 284, 193, 284, 274, 192, 284, 194, 193, 194, 284, 195, 195, 300, 194, 300, 195, 285, 248, 210, 197, 192, 195, 284, 195, 192, 157, 200, 199, 242, 199, 200, 204, 207, 283, 201, 283, 207, 202, 212, 270, 269, 270, 212, 267, 203, 213, 211, 213, 203, 214, 245, 279, 280, 279, 245, 301, 200, 274, 204, 274, 200, 143, 308, 232, 307, 308, 190, 232, 190, 205, 206, 308, 205, 190, 244, 301, 245, 244, 241, 301, 244, 191, 241, 242, 202, 207, 202, 242, 199, 211, 266, 203, 266, 211, 271, 213, 232, 190, 232, 213, 214, 205, 272, 206, 272, 205, 233, 272, 241, 191, 241, 272, 233, 303, 216, 215, 216, 303, 276, 303, 217, 298, 217, 303, 215, 298, 218, 296, 218, 298, 217, 296, 219, 295, 219, 296, 218, 295, 220, 293, 220, 295, 219, 293, 221, 278, 221, 293, 220, 223, 278, 221, 278, 223, 302, 224, 302, 223, 302, 224, 294, 225, 294, 224, 294, 225, 297, 226, 297, 225, 297, 226, 299, 227, 299, 226, 299, 227, 222, 277, 227, 228, 227, 277, 222, 229, 279, 309, 243, 292, 291, 292, 243, 304, 231, 307, 232, 307, 205, 308, 307, 230, 205, 231, 230, 307, 230, 233, 205, 233, 230, 265, 238, 236, 266, 236, 235, 237, 238, 235, 236, 235, 306, 237, 235, 267, 306, 235, 270, 267, 214, 231, 232, 231, 214, 264, 194, 275, 193, 194, 239, 275, 237, 239, 194, 234, 230, 231, 230, 234, 240, 230, 240, 265, 233, 282, 241, 282, 233, 265, 290, 304, 286, 304, 290, 292, 273, 196, 304, 282, 240, 234, 240, 282, 265, 301, 309, 279, 310, 309, 301, 309, 310, 237, 309, 209, 229, 254, 251, 0xFF, 254, 0x0100, 251, 254, 253, 0x0100, 250, 252, 249, 253, 252, 250, 254, 252, 253, 249, 0x0101, 305, 0x0101, 249, 252, 0x0100, 258, 259, 258, 0x0100, 253, 250, 261, 260, 261, 250, 251, 260, 253, 250, 253, 260, 258, 0x0100, 261, 251, 261, 0x0100, 259, 259, 260, 261, 260, 259, 258, 262, 0xFF, 263, 0xFF, 262, 254, 262, 252, 254, 252, 262, 0x0101, 249, 305, 0xFF, 305, 263, 0xFF, 239, 283, 202, 199, 239, 202, 239, 199, 275, 275, 199, 204, 264, 214, 203, 236, 203, 266, 203, 236, 264, 283, 306, 267, 306, 283, 239, 212, 283, 267, 283, 212, 201, 235, 269, 270, 235, 268, 269, 235, 238, 268, 268, 266, 271, 266, 268, 238, 204, 193, 275, 193, 204, 274, 302, 293, 278, 295, 302, 294, 302, 295, 293, 294, 296, 295, 296, 294, 297, 297, 298, 296, 298, 297, 299, 299, 303, 298, 303, 299, 222, 222, 276, 303, 276, 222, 277, 229, 280, 279, 280, 229, 288, 248, 281, 198, 281, 248, 247, 249, 251, 250, 251, 249, 0xFF, 288, 209, 287, 209, 288, 229, 209, 208, 287, 208, 209, 210, 291, 290, 289, 290, 291, 292, 197, 0x0101, 248, 0x0101, 197, 305, 248, 262, 247, 262, 248, 0x0101, 247, 273, 246, 273, 247, 196, 196, 247, 262, 196, 262, 263, 305, 300, 263, 300, 305, 197, 309, 311, 209, 311, 309, 237, 301, 282, 310, 282, 301, 241, 237, 282, 234, 282, 237, 310, 197, 194, 300, 194, 197, 237, 209, 197, 210, 209, 237, 197, 311, 237, 209, 264, 234, 231, 234, 264, 237, 264, 236, 237, 306, 239, 237, 304, 314, 273, 314, 304, 243, 246, 313, 247, 313, 246, 312, 273, 312, 246, 312, 273, 314, 304, 285, 286, 285, 304, 300, 196, 300, 304, 300, 196, 263, 248, 208, 210, 208, 248, 198, 286, 289, 290, 289, 286, 285, 285, 157, 289, 157, 285, 195, 315, 318, 316, 318, 315, 317, 317, 319, 352, 319, 317, 353, 347, 318, 317, 318, 347, 320, 321, 320, 347, 320, 321, 341, 341, 322, 320, 322, 341, 323, 324, 352, 325, 324, 317, 352, 324, 347, 317, 326, 324, 325, 324, 326, 323, 327, 326, 325, 326, 327, 328, 348, 330, 353, 330, 348, 329, 330, 319, 353, 319, 330, 354, 331, 349, 355, 349, 331, 357, 351, 325, 352, 325, 351, 349, 332, 333, 334, 333, 332, 350, 326, 322, 323, 326, 320, 322, 326, 318, 320, 326, 346, 318, 326, 350, 346, 350, 326, 333, 334, 358, 335, 358, 334, 333, 351, 355, 349, 355, 351, 336, 352, 354, 356, 354, 352, 319, 351, 356, 336, 356, 351, 352, 344, 316, 318, 316, 344, 360, 332, 346, 350, 346, 332, 337, 338, 347, 339, 340, 347, 338, 340, 324, 347, 321, 340, 341, 340, 321, 324, 342, 344, 345, 344, 342, 343, 345, 337, 342, 337, 345, 346, 321, 347, 324, 345, 318, 346, 318, 345, 344, 348, 317, 315, 317, 348, 353, 327, 349, 357, 349, 327, 325, 343, 360, 344, 360, 343, 359, 326, 358, 333, 358, 326, 328, 368, 363, 365, 363, 368, 367, 368, 366, 369, 366, 368, 365, 371, 366, 364, 366, 371, 369, 370, 364, 362, 364, 370, 371, 367, 361, 363, 370, 362, 372, 365, 364, 366, 363, 364, 365, 363, 362, 364, 361, 362, 363, 361, 372, 362, 380, 375, 377, 375, 380, 379, 380, 378, 381, 378, 380, 377, 383, 378, 376, 378, 383, 381, 382, 376, 374, 376, 382, 383, 379, 373, 375, 382, 374, 384, 377, 376, 378, 375, 376, 377, 375, 374, 376, 373, 374, 375, 373, 384, 374, 392, 387, 389, 387, 392, 391, 392, 390, 393, 390, 392, 389, 395, 390, 388, 390, 395, 393, 394, 388, 386, 388, 394, 395, 391, 385, 387, 394, 386, 396, 389, 388, 390, 387, 388, 389, 387, 386, 388, 385, 386, 387, 385, 396, 386, 404, 399, 401, 399, 404, 403, 404, 402, 405, 402, 404, 401, 407, 402, 400, 402, 407, 405, 406, 400, 398, 400, 406, 407, 403, 397, 399, 406, 398, 408, 401, 400, 402, 399, 400, 401, 399, 398, 400, 397, 398, 399, 397, 408, 398, 416, 411, 413, 411, 416, 415, 416, 414, 417, 414, 416, 413, 419, 414, 412, 414, 419, 417, 418, 412, 410, 412, 418, 419, 415, 409, 411, 418, 410, 420, 413, 412, 414, 411, 412, 413, 411, 410, 412, 409, 410, 411, 409, 420, 410, 428, 423, 425, 423, 428, 427, 428, 426, 429, 426, 428, 425, 431, 426, 424, 426, 431, 429, 430, 424, 422, 424, 430, 431, 427, 421, 423, 430, 422, 432, 425, 424, 426, 423, 424, 425, 423, 422, 424, 421, 422, 423, 421, 432, 422, 436, 437, 438, 436, 439, 437, 434, 435, 433, 439, 435, 434, 436, 435, 439, 440, 436, 438, 441, 436, 440, 436, 441, 435, 442, 441, 443, 444, 442, 443, 444, 433, 442, 433, 444, 434, 442, 435, 441, 435, 442, 433, 445, 434, 444, 434, 445, 439, 445, 437, 439, 446, 458, 447, 458, 446, 449, 450, 448, 452, 448, 450, 451, 446, 451, 449, 451, 446, 448, 450, 459, 451, 459, 450, 457, 459, 449, 451, 449, 459, 455, 458, 452, 447, 452, 458, 450, 453, 454, 456, 454, 453, 455, 453, 450, 458, 450, 453, 457, 453, 456, 457, 454, 457, 456, 457, 454, 459, 454, 455, 459, 453, 449, 455, 449, 453, 458, 467, 461, 468, 460, 461, 467, 460, 462, 461, 462, 464, 461, 464, 462, 463, 465, 463, 466, 463, 465, 464, 467, 465, 466, 465, 467, 468, 469, 470, 472, 470, 469, 471, 467, 471, 469, 471, 467, 466, 472, 467, 469, 472, 460, 467, 472, 473, 460, 466, 470, 471, 470, 466, 463, 470, 473, 472, 470, 462, 473, 470, 463, 462, 477, 515, 513, 515, 477, 475, 475, 518, 515, 518, 475, 478, 480, 513, 474, 513, 480, 477, 481, 475, 477, 475, 481, 476, 476, 478, 475, 478, 476, 479, 482, 477, 480, 477, 482, 481, 493, 476, 481, 476, 493, 492, 492, 479, 476, 479, 492, 494, 495, 481, 482, 481, 495, 493, 483, 484, 486, 484, 483, 485, 485, 487, 484, 487, 485, 488, 489, 486, 490, 486, 489, 483, 499, 485, 483, 485, 499, 497, 497, 488, 485, 488, 497, 500, 491, 483, 489, 483, 491, 499, 527, 492, 493, 492, 527, 525, 525, 494, 492, 494, 525, 528, 531, 493, 495, 493, 531, 527, 486, 526, 524, 526, 486, 484, 484, 529, 526, 529, 484, 487, 490, 524, 530, 524, 490, 486, 496, 497, 499, 497, 496, 498, 498, 500, 497, 500, 498, 501, 502, 499, 491, 499, 502, 496, 503, 498, 496, 498, 503, 533, 533, 501, 498, 501, 533, 535, 504, 496, 502, 496, 504, 503, 505, 506, 508, 506, 505, 507, 507, 509, 506, 509, 507, 510, 511, 508, 0x0200, 508, 511, 505, 516, 507, 505, 507, 516, 0x0202, 0x0202, 510, 507, 510, 0x0202, 517, 519, 505, 511, 505, 519, 516, 513, 0x0202, 516, 0x0202, 513, 515, 515, 517, 0x0202, 517, 515, 518, 474, 516, 519, 516, 474, 513, 508, 521, 520, 521, 508, 506, 506, 522, 521, 522, 506, 509, 0x0200, 520, 523, 520, 0x0200, 508, 520, 534, 532, 534, 520, 521, 521, 536, 534, 536, 521, 522, 523, 532, 537, 532, 523, 520, 524, 525, 527, 525, 524, 526, 526, 528, 525, 528, 526, 529, 530, 527, 531, 527, 530, 524, 532, 533, 503, 533, 532, 534, 534, 535, 533, 535, 534, 536, 537, 503, 504, 503, 537, 532, 0x0200, 519, 511, 519, 0x0200, 538, 480, 495, 482, 495, 480, 538, 530, 489, 490, 489, 530, 538, 502, 537, 504, 537, 502, 538, 519, 480, 474, 480, 519, 538, 489, 502, 491, 502, 489, 538, 495, 530, 531, 530, 495, 538, 537, 0x0200, 523, 0x0200, 537, 538, 540, 541, 543, 541, 540, 539, 542, 543, 541, 540, 542, 544, 542, 540, 543, 544, 539, 540, 546, 548, 549, 548, 546, 545, 547, 549, 548, 546, 547, 550, 547, 546, 549, 550, 545, 546, 555, 552, 554, 552, 555, 551, 553, 554, 552, 555, 553, 556, 553, 555, 554, 556, 551, 555, 557, 559, 560, 559, 557, 562, 558, 560, 559, 557, 558, 561, 558, 557, 560, 561, 562, 557, 567, 565, 566, 565, 567, 563, 564, 566, 565, 567, 564, 568, 564, 567, 566, 568, 563, 567, 570, 571, 573, 571, 570, 569, 572, 573, 571, 570, 572, 574, 572, 570, 573, 574, 569, 570, 578, 576, 575, 576, 578, 580, 577, 575, 576, 578, 577, 579, 577, 578, 575, 579, 580, 578, 582, 584, 583, 584, 582, 581, 585, 583, 584, 582, 585, 586, 585, 582, 583, 586, 581, 582, 478, 597, 518, 597, 478, 587, 479, 587, 478, 587, 479, 588, 494, 588, 479, 588, 494, 591, 488, 589, 487, 589, 488, 590, 500, 590, 488, 590, 500, 592, 528, 591, 494, 591, 528, 599, 487, 600, 529, 600, 487, 589, 501, 592, 500, 592, 501, 593, 535, 593, 501, 593, 535, 601, 510, 594, 509, 594, 510, 595, 517, 595, 510, 595, 517, 596, 518, 596, 517, 596, 518, 597, 509, 598, 522, 598, 509, 594, 522, 602, 536, 602, 522, 598, 529, 599, 528, 599, 529, 600, 536, 601, 535, 601, 536, 602, 659, 634, 635, 634, 659, 643, 620, 655, 607, 655, 620, 658, 668, 659, 605, 659, 668, 643, 668, 605, 637, 637, 605, 621, 656, 657, 613, 642, 657, 656, 642, 621, 657, 626, 604, 666, 642, 637, 621, 642, 629, 637, 604, 629, 642, 666, 669, 626, 604, 626, 629, 669, 647, 617, 647, 669, 666, 617, 644, 628, 644, 617, 647, 651, 644, 616, 644, 651, 628, 628, 645, 646, 645, 628, 651, 618, 606, 654, 606, 646, 645, 646, 606, 618, 661, 640, 615, 640, 661, 652, 622, 618, 654, 618, 629, 626, 629, 618, 661, 661, 618, 652, 653, 641, 665, 641, 653, 625, 603, 618, 622, 618, 603, 652, 622, 653, 603, 653, 622, 625, 665, 619, 610, 665, 670, 619, 665, 641, 670, 664, 639, 625, 639, 664, 611, 619, 624, 662, 624, 619, 623, 664, 625, 622, 667, 611, 633, 611, 667, 639, 667, 670, 639, 670, 667, 623, 670, 623, 619, 636, 632, 660, 632, 636, 648, 658, 649, 655, 609, 632, 612, 632, 609, 660, 608, 627, 671, 627, 608, 614, 648, 614, 608, 614, 648, 636, 671, 627, 638, 638, 649, 658, 649, 638, 627, 631, 663, 630, 663, 631, 650, 650, 612, 663, 612, 650, 609, 716, 676, 699, 717, 694, 680, 694, 717, 695, 693, 677, 712, 693, 686, 677, 704, 686, 693, 687, 691, 707, 687, 700, 679, 687, 696, 700, 707, 696, 687, 703, 711, 684, 703, 694, 711, 680, 694, 703, 696, 675, 705, 675, 696, 707, 674, 703, 692, 703, 674, 705, 688, 680, 703, 710, 709, 672, 716, 704, 690, 704, 716, 699, 708, 714, 678, 714, 708, 701, 701, 702, 714, 693, 683, 704, 683, 693, 710, 685, 706, 682, 706, 685, 708, 690, 708, 678, 690, 706, 708, 683, 706, 690, 683, 690, 704, 710, 715, 683, 672, 715, 710, 695, 683, 715, 683, 695, 717, 689, 713, 681, 689, 705, 713, 703, 705, 689, 705, 675, 697, 697, 713, 705, 689, 685, 698, 688, 718, 682, 718, 688, 719, 682, 698, 685, 698, 682, 718, 673, 689, 698, 689, 688, 703, 689, 719, 688, 673, 719, 689, 720, 726, 721, 726, 720, 729, 728, 722, 727, 722, 728, 723, 725, 722, 723, 725, 721, 722, 725, 720, 721, 729, 725, 724, 725, 729, 720, 725, 728, 724, 728, 725, 723, 745, 831, 775, 730, 926, 883, 926, 730, 838, 784, 889, 782, 822, 750, 917, 750, 822, 748, 858, 755, 891, 755, 858, 801, 852, 874, 794, 741, 740, 896, 740, 741, 844, 871, 743, 923, 743, 871, 925, 818, 757, 884, 757, 818, 854, 821, 734, 893, 866, 823, 769, 904, 932, 785, 737, 841, 930, 762, 760, 918, 760, 762, 898, 912, 773, 900, 773, 912, 772, 813, 882, 880, 0x0300, 829, 886, 906, 859, 929, 859, 906, 824, 875, 936, 873, 936, 875, 874, 791, 894, 934, 894, 791, 895, 753, 935, 921, 935, 753, 803, 874, 879, 806, 879, 874, 796, 863, 887, 807, 887, 863, 796, 887, 852, 797, 852, 796, 874, 796, 852, 887, 863, 807, 795, 795, 807, 899, 912, 900, 847, 774, 772, 839, 772, 774, 773, 763, 824, 812, 824, 763, 859, 870, 929, 765, 929, 764, 906, 764, 929, 870, 0x0303, 770, 913, 770, 0x0303, 902, 823, 770, 902, 770, 823, 866, 0x0303, 805, 855, 805, 0x0303, 913, 901, 741, 739, 741, 901, 844, 739, 815, 808, 815, 739, 741, 767, 798, 922, 829, 766, 810, 766, 829, 0x0300, 766, 0x0300, 867, 767, 810, 798, 810, 767, 829, 800, 817, 915, 817, 800, 821, 861, 821, 800, 821, 861, 734, 800, 790, 872, 790, 800, 851, 851, 915, 733, 915, 851, 800, 872, 790, 735, 786, 787, 809, 787, 786, 904, 932, 786, 888, 786, 932, 904, 932, 888, 825, 793, 791, 907, 895, 792, 868, 792, 837, 842, 837, 792, 793, 895, 793, 792, 793, 895, 791, 760, 761, 789, 761, 760, 898, 814, 931, 846, 931, 814, 789, 760, 814, 892, 814, 760, 789, 911, 849, 759, 816, 884, 757, 884, 816, 927, 927, 911, 758, 849, 927, 816, 927, 849, 911, 889, 783, 848, 783, 784, 832, 784, 783, 889, 919, 780, 835, 780, 919, 876, 732, 838, 928, 838, 732, 926, 732, 731, 919, 731, 732, 928, 876, 919, 731, 857, 840, 752, 803, 840, 857, 840, 803, 753, 908, 862, 751, 752, 862, 908, 862, 752, 840, 923, 788, 881, 788, 923, 743, 811, 871, 742, 871, 811, 925, 871, 923, 744, 925, 811, 845, 811, 864, 897, 864, 811, 742, 878, 813, 776, 813, 878, 779, 830, 779, 877, 779, 882, 813, 882, 779, 778, 826, 777, 850, 777, 826, 830, 826, 779, 830, 779, 826, 778, 850, 781, 920, 781, 777, 860, 850, 777, 781, 924, 737, 802, 737, 924, 890, 841, 890, 736, 890, 841, 737, 841, 804, 738, 804, 841, 933, 933, 736, 833, 736, 933, 841, 856, 756, 754, 801, 756, 856, 756, 801, 858, 754, 819, 914, 819, 754, 756, 834, 745, 903, 745, 885, 831, 885, 745, 834, 820, 916, 853, 916, 820, 746, 885, 820, 747, 820, 885, 746, 746, 885, 834, 748, 910, 799, 910, 748, 822, 836, 828, 905, 909, 748, 843, 748, 836, 750, 836, 748, 909, 749, 836, 909, 836, 749, 828, 827, 749, 869, 749, 827, 828, 828, 827, 865]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Fernsehturm.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Fernsehturm.as new file mode 100644 index 0000000..944a4b1 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Fernsehturm.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Fernsehturm extends Stage3DData { + + public function Fernsehturm(){ + vertices = new [62.7727, 0, 0, 54.3628, 0, 31.3864, 31.3864, 0, 54.3628, -2.74388E-6, 0, 62.7727, -31.3864, 0, 54.3628, -54.3628, 0, 31.3864, -62.7727, 0, 9.47842E-6, -54.3628, 0, -31.3864, -31.3864, 0, -54.3628, -2.91838E-5, 0, -62.7727, 31.3863, 0, -54.3628, 54.3628, 0, -31.3864, 25.016, 103.605, 1.92237E-6, 21.6645, 103.605, 12.508, 12.508, 103.605, 21.6645, -6.25605E-6, 103.605, 25.016, -12.508, 103.605, 21.6645, -21.6645, 103.605, 12.508, -25.016, 103.605, 5.69969E-6, -21.6645, 103.605, -12.508, -12.508, 103.605, -21.6645, -1.67928E-5, 103.605, -25.016, 12.508, 103.605, -21.6645, 21.6645, 103.605, -12.508, 18.4216, 812.665, -1.12525E-5, 15.9535, 812.665, 9.21078, 9.21078, 812.665, 15.9535, -6.70188E-6, 812.665, 18.4216, -9.21079, 812.665, 15.9535, -15.9536, 812.665, 9.21078, -18.4216, 812.665, -8.47088E-6, -15.9536, 812.665, -9.2108, -9.2108, 812.665, -15.9536, -1.44611E-5, 812.665, -18.4216, 9.21077, 812.665, -15.9536, 15.9535, 812.665, -9.21081, 18.4216, 819.752, -1.13298E-5, 15.9535, 819.752, 9.21078, 9.21078, 819.752, 15.9535, -6.70188E-6, 819.752, 18.4216, -9.21079, 819.752, 15.9535, -15.9536, 819.752, 9.21078, -18.4216, 819.752, -8.54826E-6, -15.9536, 819.752, -9.2108, -9.2108, 819.752, -15.9536, -1.44611E-5, 819.752, -18.4216, 9.21077, 819.752, -15.9536, 15.9535, 819.752, -9.21081, 18.4216, 823.151, -1.1246E-5, 15.9535, 823.151, 9.21078, 9.21078, 823.151, 15.9535, -6.70188E-6, 823.151, 18.4216, -9.21079, 823.151, 15.9535, -15.9536, 823.151, 9.21078, -18.4216, 823.151, -8.46446E-6, -15.9536, 823.151, -9.2108, -9.2108, 823.151, -15.9536, -1.44611E-5, 823.151, -18.4216, 9.21077, 823.151, -15.9536, 15.9535, 823.151, -9.21081, 18.4216, 829.201, -1.12781E-5, 15.9535, 829.201, 9.21078, 9.21078, 829.201, 15.9535, -6.70188E-6, 829.201, 18.4216, -9.21079, 829.201, 15.9535, -15.9536, 829.201, 9.21078, -18.4216, 829.201, -8.49651E-6, -15.9536, 829.201, -9.21079, -9.2108, 829.201, -15.9536, -1.44611E-5, 829.201, -18.4216, 9.21077, 829.201, -15.9536, 15.9535, 829.201, -9.21081, 18.4216, 856.44, -1.22364E-5, 15.9535, 856.44, 9.21078, 9.21078, 856.44, 15.9535, -6.70188E-6, 856.44, 18.4216, -9.21079, 856.44, 15.9535, -15.9536, 856.44, 9.21078, -18.4216, 856.44, -9.4548E-6, -15.9536, 856.44, -9.21079, -9.2108, 856.44, -15.9536, -1.44611E-5, 856.44, -18.4216, 9.21077, 856.44, -15.9536, 15.9535, 856.44, -9.21081, 25.6825, 812.665, 0.000203011, 22.2416, 812.665, 12.8415, 12.8413, 812.665, 22.2417, -6.8445E-6, 812.665, 25.6825, -12.8413, 812.665, 22.2417, -22.2417, 812.665, 12.8413, -25.6826, 812.665, 0.000205483, -22.2417, 812.665, -12.8413, -12.8411, 812.665, -22.2419, -1.68856E-5, 812.665, -25.6826, 12.8413, 812.665, -22.2418, 22.2417, 812.665, -12.8413, 22.2416, 819.752, 12.8415, 25.6825, 819.752, -0.000224856, 22.2417, 819.752, -12.8413, 12.8413, 819.752, -22.2418, -1.68856E-5, 819.752, -25.6826, -12.8411, 819.752, -22.2419, -22.2417, 819.752, -12.8413, -25.6826, 819.752, -0.000222384, -22.2417, 819.752, 12.8413, -12.8413, 819.752, 22.2417, -6.8445E-6, 819.752, 25.6825, 12.8413, 819.752, 22.2417, 25.6825, 823.151, 0.000203017, 22.2418, 823.151, 12.8411, 12.8413, 823.151, 22.2417, -6.8445E-6, 823.151, 25.6825, -12.8413, 823.151, 22.2417, -22.2417, 823.151, 12.8413, -25.6826, 823.151, 0.00020549, -22.2415, 823.151, -12.8417, -12.8411, 823.151, -22.2419, -1.68856E-5, 823.151, -25.6826, 12.8413, 823.151, -22.2418, 22.2417, 823.151, -12.8413, 22.2417, 829.201, 12.8413, 25.6825, 829.201, -1.14207E-5, 22.2417, 829.201, -12.8413, 12.8414, 829.201, -22.2416, -1.69575E-5, 829.201, -25.6826, -12.8417, 829.201, -22.2415, -22.2419, 829.201, -12.8411, -25.6826, 829.201, -0.000222593, -22.2416, 829.201, 12.8415, -12.8411, 829.201, 22.2418, -0.000220751, 829.201, 25.6825, 12.8413, 829.201, 22.2417, 25.6825, 970.148, 0.000196592, 22.2418, 970.148, 12.8411, 22.2417, 976.197, 12.8413, 25.6825, 976.197, -1.78461E-5, 12.8413, 970.148, 22.2417, 12.8413, 976.197, 22.2417, -6.8445E-6, 970.148, 25.6825, -0.000220751, 976.197, 25.6825, -12.8413, 970.148, 22.2417, -12.8411, 976.197, 22.2418, -22.2417, 970.148, 12.8413, -22.2416, 976.197, 12.8414, -25.6826, 970.148, 0.000199064, -25.6826, 976.197, -0.000229019, -22.2415, 970.148, -12.8417, -22.2419, 976.197, -12.8411, -12.8411, 970.148, -22.2419, -12.8417, 976.197, -22.2415, -1.68856E-5, 970.148, -25.6826, -1.69575E-5, 976.197, -25.6826, 12.8413, 970.148, -22.2418, 12.8414, 976.197, -22.2417, 22.2417, 970.148, -12.8413, 22.2417, 976.197, -12.8413, 26.5455, 976.197, 15.326, 30.6521, 976.197, -2.77889E-5, 15.3261, 976.197, 26.5455, -0.000258377, 976.197, 30.6521, -15.3258, 976.197, 26.5456, -26.5454, 976.197, 15.3263, -30.6521, 976.197, -0.000279823, -26.5457, 976.197, -15.3259, -15.3265, 976.197, -26.5453, -1.51486E-5, 976.197, -30.6522, 15.3263, 976.197, -26.5454, 26.5455, 976.197, -15.3261, 26.5455, 980.174, 15.326, 30.6521, 980.174, -2.79627E-5, 15.3261, 980.174, 26.5455, -0.000258377, 980.174, 30.6521, -15.3258, 980.174, 26.5456, -26.5454, 980.174, 15.3263, -30.6521, 980.174, -0.000279997, -26.5457, 980.174, -15.3259, -15.3265, 980.174, -26.5453, -1.51486E-5, 980.174, -30.6522, 15.3263, 980.174, -26.5454, 26.5455, 980.174, -15.3261, 23.7842, 980.174, 13.7318, 27.4636, 980.174, -2.15735E-5, 13.7318, 980.174, 23.7842, -0.000234352, 980.174, 27.4636, -13.7316, 980.174, 23.7843, -23.7841, 980.174, 13.732, -27.4636, 980.174, -0.000247391, -23.7843, 980.174, -13.7316, -13.7322, 980.174, -23.784, -1.64249E-5, 980.174, -27.4636, 13.732, 980.174, -23.7841, 23.7842, 980.174, -13.7318, 23.7842, 1044.26, 13.7318, 27.4636, 1044.26, -2.43749E-5, 13.7318, 1044.26, 23.7842, -0.000234352, 1044.26, 27.4636, -13.7316, 1044.26, 23.7843, -23.7841, 1044.26, 13.732, -27.4636, 1044.26, -0.000250192, -23.7843, 1044.26, -13.7316, -13.7322, 1044.26, -23.784, -1.64249E-5, 1044.26, -27.4636, 13.732, 1044.26, -23.7841, 23.7842, 1044.26, -13.7318, 13.7829, 1044.26, 7.95758, 15.9151, 1044.26, 0, 7.95757, 1044.26, 13.7829, -0.000147303, 1044.26, 15.9152, -7.95748, 1044.26, 13.783, -13.7829, 1044.26, 7.9577, -15.9152, 1044.26, -0.0001308, -13.783, 1044.26, -7.95746, -7.95783, 1044.26, -13.7828, -2.10142E-5, 1044.26, -15.9152, 7.95767, 1044.26, -13.7829, 13.7829, 1044.26, -7.95759, 8.03223, 1072.96, 4.63744, 9.27482, 1072.96, 1.38958E-5, 4.6374, 1072.96, 8.03226, -9.73659E-5, 1072.96, 9.27486, -4.63737, 1072.96, 8.0323, -8.03223, 1072.96, 4.6375, -9.27486, 1072.96, -6.23657E-5, -8.03231, 1072.96, -4.63734, -4.63758, 1072.96, -8.03215, -2.3769E-5, 1072.96, -9.27482, 4.63746, 1072.96, -8.03219, 8.03223, 1072.96, -4.63741, 6.67585, 1110.05, 3.85434, 7.70862, 1110.05, 1.71757E-5, 3.8543, 1110.05, 6.6759, -8.5534E-5, 1110.05, 7.70866, -3.85428, 1110.05, 6.67593, -6.67587, 1110.05, 3.85439, -7.70866, 1110.05, -4.62079E-5, -6.67593, 1110.05, -3.85424, -3.85445, 1110.05, -6.67579, -2.43651E-5, 1110.05, -7.70862, 3.85435, 1110.05, -6.67583, 6.67585, 1110.05, -3.85431, 5.25285, 1228.62, 3.03277, 6.06547, 1228.62, 2.06061E-5, 3.03272, 1228.62, 5.2529, -7.31251E-5, 1228.62, 6.06552, -3.03273, 1228.62, 5.25292, -5.25287, 1228.62, 3.03281, -6.06552, 1228.62, -2.92668E-5, -5.25292, 1228.62, -3.03268, -3.03286, 1228.62, -5.2528, -2.49947E-5, 1228.62, -6.06547, 3.03277, 1228.62, -5.25283, 5.25285, 1228.62, -3.03273, 3.73509, 1310.28, 2.15649, 4.31291, 1310.28, 2.43512E-5, 2.15644, 1310.28, 3.73514, -5.98554E-5, 1310.28, 4.31296, -2.15646, 1310.28, 3.73515, -3.73512, 1310.28, 2.15652, -4.31296, 1310.28, -1.11116E-5, -3.73515, 1310.28, -2.15641, -2.15655, 1310.28, -3.73505, -2.56318E-5, 1310.28, -4.31291, 2.15647, 1310.28, -3.73507, 3.73509, 1310.28, -2.15644, 2.69292, 1443.11, 1.5548, 3.10952, 1443.11, 2.68838E-5, 1.55475, 1443.11, 2.69297, -5.0741E-5, 1443.11, 3.10957, -1.55477, 1443.11, 2.69298, -2.69295, 1443.11, 1.55482, -3.10957, 1443.11, 1.31592E-6, -2.69298, 1443.11, -1.55472, -1.55484, 1443.11, -2.69289, -2.60664E-5, 1443.11, -3.10951, 1.55477, 1443.11, -2.6929, 2.69292, 1443.11, -1.55475, 4.54277, 1444.71, 2.62281, 5.24554, 1444.71, 2.23167E-5, 2.62276, 1444.71, 4.54282, -6.68917E-5, 1444.71, 5.24559, -2.62277, 1444.71, 4.54284, -4.54279, 1444.71, 2.62284, -5.24558, 1444.71, -2.08145E-5, -4.54284, 1444.71, -2.62272, -2.62288, 1444.71, -4.54272, -2.52676E-5, 1444.71, -5.24554, 2.62279, 1444.71, -4.54275, 4.54277, 1444.71, -2.62276, 4.54277, 1448.63, 2.6228, 5.24554, 1448.63, 2.22813E-5, 2.62276, 1448.63, 4.54282, -6.68917E-5, 1448.63, 5.24559, -2.62277, 1448.63, 4.54284, -4.54279, 1448.63, 2.62284, -5.24558, 1448.63, -2.08499E-5, -4.54284, 1448.63, -2.62272, -2.62288, 1448.63, -4.54272, -2.52676E-5, 1448.63, -5.24554, 2.62279, 1448.63, -4.54275, 4.54277, 1448.63, -2.62276, -2.70804E-5, 1450.04, 3.32991E-5, 0, 981.024, 1.26441E-7, -1.40585E-6, 972.406, 32.1621, -16.081, 972.406, 27.8532, -27.8532, 972.406, 16.081, -32.1621, 972.406, 4.98278E-6, -27.8532, 972.406, -16.081, -16.081, 972.406, -27.8531, -1.49525E-5, 972.406, -32.1621, 16.081, 972.406, -27.8532, 27.8531, 972.406, -16.081, 32.1621, 972.406, -2.49223E-5, 27.8532, 972.406, 16.081, 16.0811, 972.406, 27.8531, -2.435E-6, 948.862, 55.7063, -27.8532, 948.862, 48.2431, -48.2431, 948.862, 27.8532, -55.7063, 948.862, 8.53786E-6, -48.2431, 948.862, -27.8531, -27.8532, 948.862, -48.2431, -2.58985E-5, 948.862, -55.7063, 27.8531, 948.862, -48.2431, 48.2431, 948.862, -27.8532, 55.7063, 948.862, -4.32592E-5, 48.2431, 948.862, 27.8531, 27.8532, 948.862, 48.2431, -2.8117E-6, 916.7, 64.3241, -32.1621, 916.7, 55.7063, -55.7063, 916.7, 32.1621, -64.3241, 916.7, 9.83911E-6, -55.7063, 916.7, -32.162, -32.1621, 916.7, -55.7063, -2.99051E-5, 916.7, -64.3241, 32.162, 916.7, -55.7063, 55.7063, 916.7, -32.1621, 64.3241, 916.7, -4.9971E-5, 55.7063, 916.7, 32.162, 32.1621, 916.7, 55.7063, -2.435E-6, 884.538, 55.7063, -27.8532, 884.538, 48.2431, -48.2431, 884.538, 27.8532, -55.7063, 884.538, 8.53786E-6, -48.2431, 884.538, -27.8531, -27.8532, 884.538, -48.2431, -2.58985E-5, 884.538, -55.7063, 27.8531, 884.538, -48.2431, 48.2431, 884.538, -27.8532, 55.7063, 884.538, -4.32592E-5, 48.2431, 884.538, 27.8531, 27.8532, 884.538, 48.243, -1.40585E-6, 860.993, 32.1621, -16.081, 860.993, 27.8532, -27.8532, 860.993, 16.081, -32.1621, 860.993, 4.98278E-6, -27.8532, 860.993, -16.081, -16.081, 860.993, -27.8532, -1.49525E-5, 860.993, -32.1621, 16.081, 860.993, -27.8532, 27.8531, 860.993, -16.081, 32.1621, 860.993, -2.49223E-5, 27.8532, 860.993, 16.081, 16.0811, 860.993, 27.8531, 0, 852.375, 1.26441E-7, 7.49336, 1310.28, 4.32632, 8.65259, 1310.28, 1.52178E-5, 4.32628, 1310.28, 7.4934, -9.27237E-5, 1310.28, 8.65263, -4.32626, 1310.28, 7.49343, -7.49336, 1310.28, 4.32638, -8.65263, 1310.28, -5.59275E-5, -7.49343, 1310.28, -4.32622, -4.32645, 1310.28, -7.49329, -2.40642E-5, 1310.28, -8.65259, 4.32634, 1310.28, -7.49332, 7.49336, 1310.28, -4.32629, 3.73509, 1310.28, 2.15649, 4.31291, 1310.28, 2.43512E-5, 2.15644, 1310.28, 3.73514, -5.98554E-5, 1310.28, 4.31296, -2.15646, 1310.28, 3.73515, -3.73512, 1310.28, 2.15652, -4.31296, 1310.28, -1.11116E-5, -3.73515, 1310.28, -2.15641, -2.15655, 1310.28, -3.73505, -2.56318E-5, 1310.28, -4.31291, 2.15647, 1310.28, -3.73507, 3.73509, 1310.28, -2.15644, 7.49336, 1315.6, 4.32632, 8.65259, 1315.6, 1.52178E-5, 4.32628, 1315.6, 7.4934, -9.27237E-5, 1315.6, 8.65263, -4.32626, 1315.6, 7.49343, -7.49336, 1315.6, 4.32638, -8.65263, 1315.6, -5.59275E-5, -7.49343, 1315.6, -4.32622, -4.32645, 1315.6, -7.49329, -2.40642E-5, 1315.6, -8.65259, 4.32634, 1315.6, -7.49332, 7.49336, 1315.6, -4.32629, 9.00634, 1228.62, 5.19984, 10.3996, 1228.62, 1.13152E-5, 5.19981, 1228.62, 9.00638, -0.000105942, 1228.62, 10.3997, -5.19977, 1228.62, 9.00642, -9.00634, 1228.62, 5.19991, -10.3997, 1228.62, -7.4195E-5, -9.00643, 1228.62, -5.19974, -5.2, 1228.62, -9.00626, -2.34197E-5, 1228.62, -10.3996, 5.19988, 1228.62, -9.00631, 9.00634, 1228.62, -5.19982, 5.25285, 1228.62, 3.03277, 6.06547, 1228.62, 2.06061E-5, 3.03272, 1228.62, 5.2529, -7.31251E-5, 1228.62, 6.06552, -3.03273, 1228.62, 5.25292, -5.25287, 1228.62, 3.03281, -6.06552, 1228.62, -2.92668E-5, -5.25292, 1228.62, -3.03268, -3.03286, 1228.62, -5.2528, -2.49947E-5, 1228.62, -6.06547, 3.03277, 1228.62, -5.25283, 5.25285, 1228.62, -3.03273, 9.00634, 1232.24, 5.19984, 10.3996, 1232.24, 1.13152E-5, 5.19981, 1232.24, 9.00638, -0.000105942, 1232.24, 10.3997, -5.19977, 1232.24, 9.00642, -9.00634, 1232.24, 5.19991, -10.3997, 1232.24, -7.4195E-5, -9.00643, 1232.24, -5.19974, -5.2, 1232.24, -9.00626, -2.34197E-5, 1232.24, -10.3996, 5.19988, 1232.24, -9.00631, 9.00634, 1232.24, -5.19982, 10.2928, 1110.05, 5.9426, 11.8852, 1110.05, 8.45616E-6, 5.94257, 1110.05, 10.2929, -0.000117075, 1110.05, 11.8852, -5.94252, 1110.05, 10.2929, -10.2928, 1110.05, 5.94268, -11.8852, 1110.05, -8.92686E-5, -10.2929, 1110.05, -5.94249, -5.94278, 1110.05, -10.2928, -2.27648E-5, 1110.05, -11.8852, 5.94265, 1110.05, -10.2928, 10.2928, 1110.05, -5.94259, 6.67585, 1110.05, 3.85434, 7.70862, 1110.05, 1.71757E-5, 3.8543, 1110.05, 6.6759, -8.5534E-5, 1110.05, 7.70866, -3.85428, 1110.05, 6.67593, -6.67587, 1110.05, 3.85439, -7.70866, 1110.05, -4.62079E-5, -6.67593, 1110.05, -3.85424, -3.85445, 1110.05, -6.67579, -2.43651E-5, 1110.05, -7.70862, 3.85435, 1110.05, -6.67583, 6.67585, 1110.05, -3.85431, 10.2928, 1114.96, 5.9426, 11.8852, 1114.96, 8.45616E-6, 5.94257, 1114.96, 10.2929, -0.000117075, 1114.96, 11.8852, -5.94252, 1114.96, 10.2929, -10.2928, 1114.96, 5.94268, -11.8852, 1114.96, -8.92686E-5, -10.2929, 1114.96, -5.94249, -5.94278, 1114.96, -10.2928, -2.27648E-5, 1114.96, -11.8852, 5.94265, 1114.96, -10.2928, 10.2928, 1114.96, -5.94259, 13.6275, 1072.96, 7.86785, 15.7357, 1072.96, 3.65566E-7, 7.86783, 1072.96, 13.6275, -0.000146175, 1072.96, 15.7357, -7.86775, 1072.96, 13.6276, -13.6275, 1072.96, 7.86796, -15.7357, 1072.96, -0.00012902, -13.6276, 1072.96, -7.86773, -7.86809, 1072.96, -13.6274, -2.13101E-5, 1072.96, -15.7357, 7.86794, 1072.96, -13.6274, 13.6275, 1072.96, -7.86785, 8.03223, 1072.96, 4.63744, 9.27482, 1072.96, 1.38958E-5, 4.6374, 1072.96, 8.03226, -9.73659E-5, 1072.96, 9.27486, -4.63737, 1072.96, 8.0323, -8.03223, 1072.96, 4.6375, -9.27486, 1072.96, -6.23657E-5, -8.03231, 1072.96, -4.63734, -4.63758, 1072.96, -8.03215, -2.3769E-5, 1072.96, -9.27482, 4.63746, 1072.96, -8.03219, 8.03223, 1072.96, -4.63741, 13.6275, 1078.5, 7.86785, 15.7357, 1078.5, 3.48551E-7, 7.86783, 1078.5, 13.6275, -0.000146175, 1078.5, 15.7357, -7.86775, 1078.5, 13.6276, -13.6275, 1078.5, 7.86796, -15.7357, 1078.5, -0.000129037, -13.6276, 1078.5, -7.86773, -7.86809, 1078.5, -13.6274, -2.13101E-5, 1078.5, -15.7357, 7.86794, 1078.5, -13.6274, 13.6275, 1078.5, -7.86785, 27.6961, 1044.26, 15.9903, 31.9807, 1044.26, -3.39327E-5, 15.9903, 1044.26, 27.6961, -0.0002684, 1044.26, 31.9807, -15.9901, 1044.26, 27.6962, -27.6959, 1044.26, 15.9905, -31.9807, 1044.26, -0.000296891, -27.6962, 1044.26, -15.9901, -15.9908, 1044.26, -27.6958, -1.46299E-5, 1044.26, -31.9807, 15.9906, 1044.26, -27.696, 27.6961, 1044.26, -15.9904, 23.7842, 1044.26, 13.7318, 27.4636, 1044.26, -2.43749E-5, 13.7318, 1044.26, 23.7842, -0.000234352, 1044.26, 27.4636, -13.7316, 1044.26, 23.7843, -23.7841, 1044.26, 13.732, -27.4636, 1044.26, -0.000250192, -23.7843, 1044.26, -13.7316, -13.7322, 1044.26, -23.784, -1.64249E-5, 1044.26, -27.4636, 13.732, 1044.26, -23.7841, 23.7842, 1044.26, -13.7318, 27.6961, 1052.13, 15.9903, 31.9807, 1052.13, -3.39327E-5, 15.9903, 1052.13, 27.6961, -0.0002684, 1052.13, 31.9807, -15.9901, 1052.13, 27.6962, -27.6959, 1052.13, 15.9905, -31.9807, 1052.13, -0.000296891, -27.6962, 1052.13, -15.9901, -15.9908, 1052.13, -27.6958, -1.46299E-5, 1052.13, -31.9807, 15.9906, 1052.13, -27.696, 27.6961, 1052.13, -15.9904]; + uvs = new [0.987454, 0.5, 0.922147, 0.256273, 0.743727, 0.0778528, 0.5, 0.0125463, 0.256273, 0.0778527, 0.0778528, 0.256273, 0.0125463, 0.5, 0.0778526, 0.743727, 0.256273, 0.922147, 0.5, 0.987454, 0.743726, 0.922147, 0.922147, 0.743727, 0.694259, 0.5, 0.668233, 0.402871, 0.597129, 0.331767, 0.5, 0.305741, 0.402871, 0.331767, 0.331767, 0.402871, 0.305741, 0.5, 0.331767, 0.597129, 0.40287, 0.668233, 0.5, 0.694259, 0.597129, 0.668233, 0.668233, 0.59713, 0.64305, 0.5, 0.623885, 0.428475, 0.571525, 0.376115, 0.5, 0.35695, 0.428475, 0.376115, 0.376115, 0.428475, 0.35695, 0.5, 0.376115, 0.571525, 0.428475, 0.623885, 0.5, 0.64305, 0.571525, 0.623885, 0.623885, 0.571525, 0.64305, 0.5, 0.623885, 0.428475, 0.571525, 0.376115, 0.5, 0.35695, 0.428475, 0.376115, 0.376115, 0.428475, 0.35695, 0.5, 0.376115, 0.571525, 0.428475, 0.623885, 0.5, 0.64305, 0.571525, 0.623885, 0.623885, 0.571525, 0.64305, 0.5, 0.623885, 0.428475, 0.571525, 0.376115, 0.5, 0.35695, 0.428475, 0.376115, 0.376115, 0.428475, 0.35695, 0.5, 0.376115, 0.571525, 0.428475, 0.623885, 0.5, 0.64305, 0.571525, 0.623885, 0.623885, 0.571525, 0.64305, 0.5, 0.623885, 0.428475, 0.571525, 0.376115, 0.5, 0.35695, 0.428475, 0.376115, 0.376115, 0.428475, 0.35695, 0.5, 0.376115, 0.571525, 0.428475, 0.623885, 0.5, 0.64305, 0.571525, 0.623885, 0.623885, 0.571525, 0.64305, 0.5, 0.623885, 0.428475, 0.571525, 0.376115, 0.5, 0.35695, 0.428475, 0.376115, 0.376115, 0.428475, 0.35695, 0.5, 0.376115, 0.571525, 0.428475, 0.623885, 0.5, 0.64305, 0.571525, 0.623885, 0.623885, 0.571525, 0.699435, 0.499998, 0.672715, 0.400281, 0.599717, 0.327285, 0.5, 0.300565, 0.400283, 0.327285, 0.327285, 0.400283, 0.300565, 0.499998, 0.327285, 0.599717, 0.400284, 0.672716, 0.5, 0.699435, 0.599717, 0.672716, 0.672715, 0.599717, 0.672715, 0.400281, 0.699435, 0.500002, 0.672715, 0.599717, 0.599717, 0.672716, 0.5, 0.699435, 0.400284, 0.672716, 0.327285, 0.599717, 0.300565, 0.500002, 0.327285, 0.400283, 0.400283, 0.327285, 0.5, 0.300565, 0.599717, 0.327285, 0.699435, 0.499998, 0.672716, 0.400284, 0.599717, 0.327285, 0.5, 0.300565, 0.400283, 0.327285, 0.327285, 0.400283, 0.300565, 0.499998, 0.327286, 0.59972, 0.400284, 0.672716, 0.5, 0.699435, 0.599717, 0.672716, 0.672715, 0.599717, 0.672715, 0.400283, 0.699435, 0.5, 0.672715, 0.599717, 0.599719, 0.672715, 0.5, 0.699435, 0.40028, 0.672714, 0.327284, 0.599716, 0.300565, 0.500002, 0.327285, 0.400281, 0.400284, 0.327284, 0.499998, 0.300566, 0.599717, 0.327285, 0.699435, 0.499999, 0.672716, 0.400284, 0.672715, 0.400283, 0.699435, 0.5, 0.599717, 0.327285, 0.599717, 0.327285, 0.5, 0.300566, 0.499998, 0.300566, 0.400283, 0.327285, 0.400284, 0.327284, 0.327285, 0.400283, 0.327285, 0.400281, 0.300565, 0.499998, 0.300565, 0.500002, 0.327286, 0.59972, 0.327284, 0.599716, 0.400284, 0.672716, 0.40028, 0.672714, 0.5, 0.699435, 0.5, 0.699435, 0.599717, 0.672716, 0.599719, 0.672715, 0.672715, 0.599718, 0.672715, 0.599718, 0.706136, 0.380988, 0.738025, 0.5, 0.619013, 0.293864, 0.499998, 0.261975, 0.380989, 0.293863, 0.293865, 0.380986, 0.261975, 0.500002, 0.293863, 0.619011, 0.380984, 0.706134, 0.5, 0.738025, 0.619014, 0.706135, 0.706136, 0.619013, 0.706136, 0.380988, 0.738025, 0.5, 0.619013, 0.293864, 0.499998, 0.261975, 0.380989, 0.293863, 0.293865, 0.380986, 0.261975, 0.500002, 0.293863, 0.619011, 0.380984, 0.706134, 0.5, 0.738025, 0.619014, 0.706135, 0.706136, 0.619013, 0.684693, 0.393368, 0.713265, 0.5, 0.606633, 0.315307, 0.499998, 0.286735, 0.393369, 0.315306, 0.315308, 0.393366, 0.286735, 0.500002, 0.315306, 0.606631, 0.393364, 0.684691, 0.5, 0.713265, 0.606634, 0.684692, 0.684693, 0.606633, 0.684693, 0.393368, 0.713265, 0.5, 0.606633, 0.315307, 0.499998, 0.286735, 0.393369, 0.315306, 0.315308, 0.393366, 0.286735, 0.500002, 0.315306, 0.606631, 0.393364, 0.684691, 0.5, 0.713265, 0.606634, 0.684692, 0.684693, 0.606633, 0.607029, 0.438206, 0.623587, 0.5, 0.561794, 0.39297, 0.499999, 0.376413, 0.438207, 0.39297, 0.392971, 0.438205, 0.376413, 0.500001, 0.39297, 0.561793, 0.438204, 0.607028, 0.5, 0.623587, 0.561794, 0.607029, 0.607029, 0.561794, 0.562373, 0.463989, 0.572022, 0.5, 0.536011, 0.437626, 0.499999, 0.427977, 0.463989, 0.437626, 0.437627, 0.463988, 0.427977, 0.5, 0.437626, 0.536011, 0.463987, 0.562373, 0.5, 0.572022, 0.536012, 0.562373, 0.562373, 0.536011, 0.55184, 0.47007, 0.55986, 0.5, 0.52993, 0.448159, 0.499999, 0.440139, 0.47007, 0.448159, 0.448159, 0.470069, 0.440139, 0.5, 0.448159, 0.52993, 0.470069, 0.55184, 0.5, 0.55986, 0.52993, 0.55184, 0.55184, 0.52993, 0.54079, 0.476449, 0.547101, 0.5, 0.52355, 0.459209, 0.499999, 0.452899, 0.47645, 0.459209, 0.45921, 0.476449, 0.452899, 0.5, 0.459209, 0.52355, 0.476449, 0.54079, 0.5, 0.547101, 0.523551, 0.54079, 0.54079, 0.52355, 0.529004, 0.483254, 0.533491, 0.5, 0.516746, 0.470995, 0.5, 0.466508, 0.483254, 0.470995, 0.470995, 0.483254, 0.466508, 0.5, 0.470995, 0.516745, 0.483254, 0.529004, 0.5, 0.533491, 0.516746, 0.529004, 0.529004, 0.516746, 0.520912, 0.487926, 0.524147, 0.5, 0.512073, 0.479088, 0.5, 0.475853, 0.487927, 0.479088, 0.479088, 0.487926, 0.475853, 0.5, 0.479088, 0.512073, 0.487926, 0.520911, 0.5, 0.524147, 0.512073, 0.520911, 0.520912, 0.512073, 0.535276, 0.479633, 0.540734, 0.5, 0.520367, 0.464723, 0.499999, 0.459266, 0.479633, 0.464723, 0.464724, 0.479633, 0.459266, 0.5, 0.464723, 0.520366, 0.479632, 0.535276, 0.5, 0.540734, 0.520367, 0.535276, 0.535276, 0.520367, 0.535276, 0.479633, 0.540734, 0.5, 0.520367, 0.464723, 0.499999, 0.459266, 0.479633, 0.464723, 0.464724, 0.479633, 0.459266, 0.5, 0.464723, 0.520366, 0.479632, 0.535276, 0.5, 0.540734, 0.520367, 0.535276, 0.535276, 0.520367, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25025, 0.375125, 0.28371, 0.28371, 0.375125, 0.25025, 0.5, 0.28371, 0.624875, 0.375125, 0.71629, 0.5, 0.74975, 0.624875, 0.71629, 0.71629, 0.624875, 0.74975, 0.5, 0.71629, 0.375125, 0.624875, 0.28371, 0.5, 0.0674198, 0.28371, 0.125375, 0.125375, 0.28371, 0.0674198, 0.5, 0.125374, 0.71629, 0.28371, 0.874625, 0.5, 0.93258, 0.71629, 0.874626, 0.874625, 0.71629, 0.93258, 0.5, 0.874626, 0.28371, 0.716291, 0.125375, 0.5, 0.000499487, 0.25025, 0.0674198, 0.0674199, 0.25025, 0.000499487, 0.5, 0.0674197, 0.74975, 0.25025, 0.93258, 0.5, 0.999501, 0.74975, 0.93258, 0.93258, 0.749751, 0.999501, 0.5, 0.93258, 0.25025, 0.749751, 0.0674201, 0.5, 0.0674199, 0.28371, 0.125375, 0.125375, 0.28371, 0.0674199, 0.5, 0.125374, 0.71629, 0.28371, 0.874625, 0.5, 0.93258, 0.71629, 0.874626, 0.874625, 0.71629, 0.93258, 0.5, 0.874626, 0.28371, 0.71629, 0.125375, 0.5, 0.25025, 0.375125, 0.28371, 0.28371, 0.375125, 0.25025, 0.5, 0.28371, 0.624875, 0.375125, 0.71629, 0.5, 0.74975, 0.624875, 0.71629, 0.71629, 0.624875, 0.74975, 0.5, 0.71629, 0.375125, 0.624875, 0.28371, 0.5, 0.5, 0.558189, 0.466405, 0.567191, 0.5, 0.533595, 0.441811, 0.499999, 0.432809, 0.466405, 0.441811, 0.441811, 0.466404, 0.432809, 0.5, 0.441811, 0.533595, 0.466403, 0.558188, 0.5, 0.567191, 0.533596, 0.558188, 0.558189, 0.533595, 0.529004, 0.483254, 0.533491, 0.5, 0.516746, 0.470995, 0.5, 0.466508, 0.483254, 0.470995, 0.470995, 0.483254, 0.466508, 0.5, 0.470995, 0.516745, 0.483254, 0.529004, 0.5, 0.533491, 0.516746, 0.529004, 0.529004, 0.516746, 0.558189, 0.466405, 0.567191, 0.5, 0.533595, 0.441811, 0.499999, 0.432809, 0.466405, 0.441811, 0.441811, 0.466404, 0.432809, 0.5, 0.441811, 0.533595, 0.466403, 0.558188, 0.5, 0.567191, 0.533596, 0.558188, 0.558189, 0.533595, 0.569938, 0.459621, 0.580757, 0.5, 0.540378, 0.430062, 0.499999, 0.419243, 0.459622, 0.430062, 0.430062, 0.459621, 0.419243, 0.500001, 0.430062, 0.540378, 0.45962, 0.569937, 0.5, 0.580757, 0.540379, 0.569937, 0.569938, 0.540379, 0.54079, 0.476449, 0.547101, 0.5, 0.52355, 0.459209, 0.499999, 0.452899, 0.47645, 0.459209, 0.45921, 0.476449, 0.452899, 0.5, 0.459209, 0.52355, 0.476449, 0.54079, 0.5, 0.547101, 0.523551, 0.54079, 0.54079, 0.52355, 0.569938, 0.459621, 0.580757, 0.5, 0.540378, 0.430062, 0.499999, 0.419243, 0.459622, 0.430062, 0.430062, 0.459621, 0.419243, 0.500001, 0.430062, 0.540378, 0.45962, 0.569937, 0.5, 0.580757, 0.540379, 0.569937, 0.569938, 0.540379, 0.579928, 0.453854, 0.592293, 0.5, 0.546146, 0.420072, 0.499999, 0.407707, 0.453854, 0.420072, 0.420072, 0.453853, 0.407707, 0.500001, 0.420072, 0.546146, 0.453852, 0.579927, 0.5, 0.592293, 0.546147, 0.579927, 0.579928, 0.546146, 0.55184, 0.47007, 0.55986, 0.5, 0.52993, 0.448159, 0.499999, 0.440139, 0.47007, 0.448159, 0.448159, 0.470069, 0.440139, 0.5, 0.448159, 0.52993, 0.470069, 0.55184, 0.5, 0.55986, 0.52993, 0.55184, 0.55184, 0.52993, 0.579928, 0.453854, 0.592293, 0.5, 0.546146, 0.420072, 0.499999, 0.407707, 0.453854, 0.420072, 0.420072, 0.453853, 0.407707, 0.500001, 0.420072, 0.546146, 0.453852, 0.579927, 0.5, 0.592293, 0.546147, 0.579927, 0.579928, 0.546146, 0.605823, 0.438903, 0.622193, 0.5, 0.561097, 0.394177, 0.499999, 0.377806, 0.438904, 0.394177, 0.394178, 0.438902, 0.377806, 0.500001, 0.394177, 0.561096, 0.438901, 0.605822, 0.5, 0.622193, 0.561097, 0.605822, 0.605823, 0.561097, 0.562373, 0.463989, 0.572022, 0.5, 0.536011, 0.437626, 0.499999, 0.427977, 0.463989, 0.437626, 0.437627, 0.463988, 0.427977, 0.5, 0.437626, 0.536011, 0.463987, 0.562373, 0.5, 0.572022, 0.536012, 0.562373, 0.562373, 0.536011, 0.605823, 0.438903, 0.622193, 0.5, 0.561097, 0.394177, 0.499999, 0.377806, 0.438904, 0.394177, 0.394178, 0.438902, 0.377806, 0.500001, 0.394177, 0.561096, 0.438901, 0.605822, 0.5, 0.622193, 0.561097, 0.605822, 0.605823, 0.561097, 0.71507, 0.375829, 0.748342, 0.5, 0.624171, 0.28493, 0.499998, 0.251658, 0.375831, 0.284929, 0.284931, 0.375827, 0.251658, 0.500002, 0.284929, 0.624169, 0.375825, 0.715068, 0.5, 0.748342, 0.624173, 0.71507, 0.71507, 0.624171, 0.684693, 0.393368, 0.713265, 0.5, 0.606633, 0.315307, 0.499998, 0.286735, 0.393369, 0.315306, 0.315308, 0.393366, 0.286735, 0.500002, 0.315306, 0.606631, 0.393364, 0.684691, 0.5, 0.713265, 0.606634, 0.684692, 0.684693, 0.606633, 0.71507, 0.375829, 0.748342, 0.5, 0.624171, 0.28493, 0.499998, 0.251658, 0.375831, 0.284929, 0.284931, 0.375827, 0.251658, 0.500002, 0.284929, 0.624169, 0.375825, 0.715068, 0.5, 0.748342, 0.624173, 0.71507, 0.71507, 0.624171]; + indices = new [0, 13, 1, 13, 0, 12, 1, 14, 2, 14, 1, 13, 2, 15, 3, 15, 2, 14, 3, 16, 4, 16, 3, 15, 4, 17, 5, 17, 4, 16, 5, 18, 6, 18, 5, 17, 6, 19, 7, 19, 6, 18, 7, 20, 8, 20, 7, 19, 8, 21, 9, 21, 8, 20, 9, 22, 10, 22, 9, 21, 10, 23, 11, 23, 10, 22, 11, 12, 0, 12, 11, 23, 10, 8, 9, 8, 6, 7, 6, 4, 5, 8, 4, 6, 4, 2, 3, 2, 0, 1, 4, 0, 2, 8, 0, 4, 10, 0, 8, 11, 0, 10, 73, 75, 74, 75, 77, 76, 77, 79, 78, 75, 79, 77, 79, 81, 80, 81, 83, 82, 79, 83, 81, 75, 83, 79, 73, 83, 75, 72, 83, 73, 12, 25, 13, 25, 12, 24, 13, 26, 14, 26, 13, 25, 14, 27, 15, 27, 14, 26, 15, 28, 16, 28, 15, 27, 16, 29, 17, 29, 16, 28, 17, 30, 18, 30, 17, 29, 18, 31, 19, 31, 18, 30, 19, 32, 20, 32, 19, 31, 20, 33, 21, 33, 20, 32, 21, 34, 22, 34, 21, 33, 22, 35, 23, 35, 22, 34, 23, 24, 12, 24, 23, 35, 84, 96, 85, 96, 84, 97, 85, 107, 86, 107, 85, 96, 86, 106, 87, 106, 86, 107, 87, 105, 88, 105, 87, 106, 88, 104, 89, 104, 88, 105, 89, 103, 90, 103, 89, 104, 90, 102, 91, 102, 90, 103, 91, 101, 92, 101, 91, 102, 92, 100, 93, 100, 92, 101, 93, 99, 94, 99, 93, 100, 94, 98, 95, 98, 94, 99, 95, 97, 84, 97, 95, 98, 36, 49, 37, 49, 36, 48, 37, 50, 38, 50, 37, 49, 38, 51, 39, 51, 38, 50, 39, 52, 40, 52, 39, 51, 40, 53, 41, 53, 40, 52, 41, 54, 42, 54, 41, 53, 42, 55, 43, 55, 42, 54, 43, 56, 44, 56, 43, 55, 44, 57, 45, 57, 44, 56, 45, 58, 46, 58, 45, 57, 46, 59, 47, 59, 46, 58, 47, 48, 36, 48, 47, 59, 108, 120, 109, 120, 108, 121, 109, 131, 110, 131, 109, 120, 110, 130, 111, 130, 110, 131, 111, 129, 112, 129, 111, 130, 112, 128, 113, 128, 112, 129, 113, 127, 114, 127, 113, 128, 114, 126, 115, 126, 114, 127, 115, 125, 116, 125, 115, 126, 116, 124, 117, 124, 116, 125, 117, 123, 118, 123, 117, 124, 118, 122, 119, 122, 118, 123, 119, 121, 108, 121, 119, 122, 60, 73, 61, 73, 60, 72, 61, 74, 62, 74, 61, 73, 62, 75, 63, 75, 62, 74, 63, 76, 64, 76, 63, 75, 64, 77, 65, 77, 64, 76, 65, 78, 66, 78, 65, 77, 66, 79, 67, 79, 66, 78, 67, 80, 68, 80, 67, 79, 68, 81, 69, 81, 68, 80, 69, 82, 70, 82, 69, 81, 70, 83, 71, 83, 70, 82, 71, 72, 60, 72, 71, 83, 24, 85, 25, 85, 24, 84, 25, 86, 26, 86, 25, 85, 26, 87, 27, 87, 26, 86, 27, 88, 28, 88, 27, 87, 28, 89, 29, 89, 28, 88, 29, 90, 30, 90, 29, 89, 30, 91, 31, 91, 30, 90, 31, 92, 32, 92, 31, 91, 32, 93, 33, 93, 32, 92, 33, 94, 34, 94, 33, 93, 34, 95, 35, 95, 34, 94, 35, 84, 24, 84, 35, 95, 37, 97, 36, 97, 37, 96, 36, 98, 47, 98, 36, 97, 47, 99, 46, 99, 47, 98, 46, 100, 45, 100, 46, 99, 45, 101, 44, 101, 45, 100, 44, 102, 43, 102, 44, 101, 43, 103, 42, 103, 43, 102, 42, 104, 41, 104, 42, 103, 41, 105, 40, 105, 41, 104, 40, 106, 39, 106, 40, 105, 39, 107, 38, 107, 39, 106, 38, 96, 37, 96, 38, 107, 48, 109, 49, 109, 48, 108, 49, 110, 50, 110, 49, 109, 50, 111, 51, 111, 50, 110, 51, 112, 52, 112, 51, 111, 52, 113, 53, 113, 52, 112, 53, 114, 54, 114, 53, 113, 54, 115, 55, 115, 54, 114, 55, 116, 56, 116, 55, 115, 56, 117, 57, 117, 56, 116, 57, 118, 58, 118, 57, 117, 58, 119, 59, 119, 58, 118, 59, 108, 48, 108, 59, 119, 61, 121, 60, 121, 61, 120, 60, 122, 71, 122, 60, 121, 71, 123, 70, 123, 71, 122, 70, 124, 69, 124, 70, 123, 69, 125, 68, 125, 69, 124, 68, 126, 67, 126, 68, 125, 67, 127, 66, 127, 67, 126, 66, 128, 65, 128, 66, 127, 65, 129, 64, 129, 65, 128, 64, 130, 63, 130, 64, 129, 63, 131, 62, 131, 63, 130, 62, 120, 61, 120, 62, 131, 132, 134, 133, 134, 132, 135, 133, 137, 136, 137, 133, 134, 136, 139, 138, 139, 136, 137, 138, 141, 140, 141, 138, 139, 140, 143, 142, 143, 140, 141, 142, 145, 144, 145, 142, 143, 144, 147, 146, 147, 144, 145, 146, 149, 148, 149, 146, 147, 148, 151, 150, 151, 148, 149, 150, 153, 152, 153, 150, 151, 152, 155, 154, 155, 152, 153, 154, 135, 132, 135, 154, 155, 135, 156, 134, 156, 135, 157, 134, 158, 137, 158, 134, 156, 137, 159, 139, 159, 137, 158, 139, 160, 141, 160, 139, 159, 141, 161, 143, 161, 141, 160, 143, 162, 145, 162, 143, 161, 145, 163, 147, 163, 145, 162, 147, 164, 149, 164, 147, 163, 149, 165, 151, 165, 149, 164, 151, 166, 153, 166, 151, 165, 153, 167, 155, 167, 153, 166, 155, 157, 135, 157, 155, 167, 157, 168, 156, 168, 157, 169, 156, 170, 158, 170, 156, 168, 158, 171, 159, 171, 158, 170, 159, 172, 160, 172, 159, 171, 160, 173, 161, 173, 160, 172, 161, 174, 162, 174, 161, 173, 162, 175, 163, 175, 162, 174, 163, 176, 164, 176, 163, 175, 164, 177, 165, 177, 164, 176, 165, 178, 166, 178, 165, 177, 166, 179, 167, 179, 166, 178, 167, 169, 157, 169, 167, 179, 169, 180, 168, 180, 169, 181, 168, 182, 170, 182, 168, 180, 170, 183, 171, 183, 170, 182, 171, 184, 172, 184, 171, 183, 172, 185, 173, 185, 172, 184, 173, 186, 174, 186, 173, 185, 174, 187, 175, 187, 174, 186, 175, 188, 176, 188, 175, 187, 176, 189, 177, 189, 176, 188, 177, 190, 178, 190, 177, 189, 178, 191, 179, 191, 178, 190, 179, 181, 169, 181, 179, 191, 181, 192, 180, 192, 181, 193, 180, 194, 182, 194, 180, 192, 182, 195, 183, 195, 182, 194, 183, 196, 184, 196, 183, 195, 184, 197, 185, 197, 184, 196, 185, 198, 186, 198, 185, 197, 186, 199, 187, 199, 186, 198, 187, 200, 188, 200, 187, 199, 188, 201, 189, 201, 188, 200, 189, 202, 190, 202, 189, 201, 190, 203, 191, 203, 190, 202, 191, 193, 181, 193, 191, 203, 193, 204, 192, 204, 193, 205, 192, 206, 194, 206, 192, 204, 194, 207, 195, 207, 194, 206, 195, 208, 196, 208, 195, 207, 196, 209, 197, 209, 196, 208, 197, 210, 198, 210, 197, 209, 198, 211, 199, 211, 198, 210, 199, 212, 200, 212, 199, 211, 200, 213, 201, 213, 200, 212, 201, 214, 202, 214, 201, 213, 202, 215, 203, 215, 202, 214, 203, 205, 193, 205, 203, 215, 205, 216, 204, 216, 205, 217, 204, 218, 206, 218, 204, 216, 206, 219, 207, 219, 206, 218, 207, 220, 208, 220, 207, 219, 208, 221, 209, 221, 208, 220, 209, 222, 210, 222, 209, 221, 210, 223, 211, 223, 210, 222, 211, 224, 212, 224, 211, 223, 212, 225, 213, 225, 212, 224, 213, 226, 214, 226, 213, 225, 214, 227, 215, 227, 214, 226, 215, 217, 205, 217, 215, 227, 217, 228, 216, 228, 217, 229, 216, 230, 218, 230, 216, 228, 218, 231, 219, 231, 218, 230, 219, 232, 220, 232, 219, 231, 220, 233, 221, 233, 220, 232, 221, 234, 222, 234, 221, 233, 222, 235, 223, 235, 222, 234, 223, 236, 224, 236, 223, 235, 224, 237, 225, 237, 224, 236, 225, 238, 226, 238, 225, 237, 226, 239, 227, 239, 226, 238, 227, 229, 217, 229, 227, 239, 229, 240, 228, 240, 229, 241, 228, 242, 230, 242, 228, 240, 230, 243, 231, 243, 230, 242, 231, 244, 232, 244, 231, 243, 232, 245, 233, 245, 232, 244, 233, 246, 234, 246, 233, 245, 234, 247, 235, 247, 234, 246, 235, 248, 236, 248, 235, 247, 236, 249, 237, 249, 236, 248, 237, 250, 238, 250, 237, 249, 238, 251, 239, 251, 238, 250, 239, 241, 229, 241, 239, 251, 241, 252, 240, 252, 241, 253, 240, 254, 242, 254, 240, 252, 242, 0xFF, 243, 0xFF, 242, 254, 243, 0x0100, 244, 0x0100, 243, 0xFF, 244, 0x0101, 245, 0x0101, 244, 0x0100, 245, 258, 246, 258, 245, 0x0101, 246, 259, 247, 259, 246, 258, 247, 260, 248, 260, 247, 259, 248, 261, 249, 261, 248, 260, 249, 262, 250, 262, 249, 261, 250, 263, 251, 263, 250, 262, 251, 253, 241, 253, 251, 263, 253, 264, 252, 264, 253, 265, 252, 266, 254, 266, 252, 264, 254, 267, 0xFF, 267, 254, 266, 0xFF, 268, 0x0100, 268, 0xFF, 267, 0x0100, 269, 0x0101, 269, 0x0100, 268, 0x0101, 270, 258, 270, 0x0101, 269, 258, 271, 259, 271, 258, 270, 259, 272, 260, 272, 259, 271, 260, 273, 261, 273, 260, 272, 261, 274, 262, 274, 261, 273, 262, 275, 263, 275, 262, 274, 263, 265, 253, 265, 263, 275, 265, 276, 264, 276, 265, 277, 264, 278, 266, 278, 264, 276, 266, 279, 267, 279, 266, 278, 267, 280, 268, 280, 267, 279, 268, 281, 269, 281, 268, 280, 269, 282, 270, 282, 269, 281, 270, 283, 271, 283, 270, 282, 271, 284, 272, 284, 271, 283, 272, 285, 273, 285, 272, 284, 273, 286, 274, 286, 273, 285, 274, 287, 275, 287, 274, 286, 275, 277, 265, 277, 275, 287, 277, 288, 276, 288, 277, 289, 276, 290, 278, 290, 276, 288, 278, 291, 279, 291, 278, 290, 279, 292, 280, 292, 279, 291, 280, 293, 281, 293, 280, 292, 281, 294, 282, 294, 281, 293, 282, 295, 283, 295, 282, 294, 283, 296, 284, 296, 283, 295, 284, 297, 285, 297, 284, 296, 285, 298, 286, 298, 285, 297, 286, 299, 287, 299, 286, 298, 287, 289, 277, 289, 287, 299, 289, 300, 288, 288, 300, 290, 290, 300, 291, 291, 300, 292, 292, 300, 293, 293, 300, 294, 294, 300, 295, 295, 300, 296, 296, 300, 297, 297, 300, 298, 298, 300, 299, 299, 300, 289, 301, 303, 302, 301, 304, 303, 301, 305, 304, 301, 306, 305, 301, 307, 306, 301, 308, 307, 301, 309, 308, 301, 310, 309, 301, 311, 310, 301, 312, 311, 301, 313, 312, 301, 302, 313, 315, 302, 303, 302, 315, 314, 316, 303, 304, 303, 316, 315, 317, 304, 305, 304, 317, 316, 318, 305, 306, 305, 318, 317, 319, 306, 307, 306, 319, 318, 320, 307, 308, 307, 320, 319, 321, 308, 309, 308, 321, 320, 322, 309, 310, 309, 322, 321, 323, 310, 311, 310, 323, 322, 324, 311, 312, 311, 324, 323, 325, 312, 313, 312, 325, 324, 314, 313, 302, 313, 314, 325, 327, 314, 315, 314, 327, 326, 328, 315, 316, 315, 328, 327, 329, 316, 317, 316, 329, 328, 330, 317, 318, 317, 330, 329, 331, 318, 319, 318, 331, 330, 332, 319, 320, 319, 332, 331, 333, 320, 321, 320, 333, 332, 334, 321, 322, 321, 334, 333, 335, 322, 323, 322, 335, 334, 336, 323, 324, 323, 336, 335, 337, 324, 325, 324, 337, 336, 326, 325, 314, 325, 326, 337, 339, 326, 327, 326, 339, 338, 340, 327, 328, 327, 340, 339, 341, 328, 329, 328, 341, 340, 342, 329, 330, 329, 342, 341, 343, 330, 331, 330, 343, 342, 344, 331, 332, 331, 344, 343, 345, 332, 333, 332, 345, 344, 346, 333, 334, 333, 346, 345, 347, 334, 335, 334, 347, 346, 348, 335, 336, 335, 348, 347, 349, 336, 337, 336, 349, 348, 338, 337, 326, 337, 338, 349, 351, 338, 339, 338, 351, 350, 352, 339, 340, 339, 352, 351, 353, 340, 341, 340, 353, 352, 354, 341, 342, 341, 354, 353, 355, 342, 343, 342, 355, 354, 356, 343, 344, 343, 356, 355, 357, 344, 345, 344, 357, 356, 358, 345, 346, 345, 358, 357, 359, 346, 347, 346, 359, 358, 360, 347, 348, 347, 360, 359, 361, 348, 349, 348, 361, 360, 350, 349, 338, 349, 350, 361, 362, 350, 351, 362, 351, 352, 362, 352, 353, 362, 353, 354, 362, 354, 355, 362, 355, 356, 362, 356, 357, 362, 357, 358, 362, 358, 359, 362, 359, 360, 362, 360, 361, 362, 361, 350, 376, 363, 375, 363, 376, 364, 375, 365, 377, 365, 375, 363, 377, 366, 378, 366, 377, 365, 378, 367, 379, 367, 378, 366, 379, 368, 380, 368, 379, 367, 380, 369, 381, 369, 380, 368, 381, 370, 382, 370, 381, 369, 382, 371, 383, 371, 382, 370, 383, 372, 384, 372, 383, 371, 384, 373, 385, 373, 384, 372, 385, 374, 386, 374, 385, 373, 386, 364, 376, 364, 386, 374, 364, 387, 363, 387, 364, 388, 363, 389, 365, 389, 363, 387, 365, 390, 366, 390, 365, 389, 366, 391, 367, 391, 366, 390, 367, 392, 368, 392, 367, 391, 368, 393, 369, 393, 368, 392, 369, 394, 370, 394, 369, 393, 370, 395, 371, 395, 370, 394, 371, 396, 372, 396, 371, 395, 372, 397, 373, 397, 372, 396, 373, 398, 374, 398, 373, 397, 374, 388, 364, 388, 374, 398, 412, 399, 411, 399, 412, 400, 411, 401, 413, 401, 411, 399, 413, 402, 414, 402, 413, 401, 414, 403, 415, 403, 414, 402, 415, 404, 416, 404, 415, 403, 416, 405, 417, 405, 416, 404, 417, 406, 418, 406, 417, 405, 418, 407, 419, 407, 418, 406, 419, 408, 420, 408, 419, 407, 420, 409, 421, 409, 420, 408, 421, 410, 422, 410, 421, 409, 422, 400, 412, 400, 422, 410, 400, 423, 399, 423, 400, 424, 399, 425, 401, 425, 399, 423, 401, 426, 402, 426, 401, 425, 402, 427, 403, 427, 402, 426, 403, 428, 404, 428, 403, 427, 404, 429, 405, 429, 404, 428, 405, 430, 406, 430, 405, 429, 406, 431, 407, 431, 406, 430, 407, 432, 408, 432, 407, 431, 408, 433, 409, 433, 408, 432, 409, 434, 410, 434, 409, 433, 410, 424, 400, 424, 410, 434, 448, 435, 447, 435, 448, 436, 447, 437, 449, 437, 447, 435, 449, 438, 450, 438, 449, 437, 450, 439, 451, 439, 450, 438, 451, 440, 452, 440, 451, 439, 452, 441, 453, 441, 452, 440, 453, 442, 454, 442, 453, 441, 454, 443, 455, 443, 454, 442, 455, 444, 456, 444, 455, 443, 456, 445, 457, 445, 456, 444, 457, 446, 458, 446, 457, 445, 458, 436, 448, 436, 458, 446, 436, 459, 435, 459, 436, 460, 435, 461, 437, 461, 435, 459, 437, 462, 438, 462, 437, 461, 438, 463, 439, 463, 438, 462, 439, 464, 440, 464, 439, 463, 440, 465, 441, 465, 440, 464, 441, 466, 442, 466, 441, 465, 442, 467, 443, 467, 442, 466, 443, 468, 444, 468, 443, 467, 444, 469, 445, 469, 444, 468, 445, 470, 446, 470, 445, 469, 446, 460, 436, 460, 446, 470, 484, 471, 483, 471, 484, 472, 483, 473, 485, 473, 483, 471, 485, 474, 486, 474, 485, 473, 486, 475, 487, 475, 486, 474, 487, 476, 488, 476, 487, 475, 488, 477, 489, 477, 488, 476, 489, 478, 490, 478, 489, 477, 490, 479, 491, 479, 490, 478, 491, 480, 492, 480, 491, 479, 492, 481, 493, 481, 492, 480, 493, 482, 494, 482, 493, 481, 494, 472, 484, 472, 494, 482, 472, 495, 471, 495, 472, 496, 471, 497, 473, 497, 471, 495, 473, 498, 474, 498, 473, 497, 474, 499, 475, 499, 474, 498, 475, 500, 476, 500, 475, 499, 476, 501, 477, 501, 476, 500, 477, 502, 478, 502, 477, 501, 478, 503, 479, 503, 478, 502, 479, 504, 480, 504, 479, 503, 480, 505, 481, 505, 480, 504, 481, 506, 482, 506, 481, 505, 482, 496, 472, 496, 482, 506, 520, 507, 519, 507, 520, 508, 519, 509, 521, 509, 519, 507, 521, 510, 522, 510, 521, 509, 522, 511, 523, 511, 522, 510, 523, 0x0200, 524, 0x0200, 523, 511, 524, 513, 525, 513, 524, 0x0200, 525, 0x0202, 526, 0x0202, 525, 513, 526, 515, 527, 515, 526, 0x0202, 527, 516, 528, 516, 527, 515, 528, 517, 529, 517, 528, 516, 529, 518, 530, 518, 529, 517, 530, 508, 520, 508, 530, 518, 508, 531, 507, 531, 508, 532, 507, 533, 509, 533, 507, 531, 509, 534, 510, 534, 509, 533, 510, 535, 511, 535, 510, 534, 511, 536, 0x0200, 536, 511, 535, 0x0200, 537, 513, 537, 0x0200, 536, 513, 538, 0x0202, 538, 513, 537, 0x0202, 539, 515, 539, 0x0202, 538, 515, 540, 516, 540, 515, 539, 516, 541, 517, 541, 516, 540, 517, 542, 518, 542, 517, 541, 518, 532, 508, 532, 518, 542]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Reichstag.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Reichstag.as new file mode 100644 index 0000000..48e1e75 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Reichstag.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Reichstag extends Stage3DData { + + public function Reichstag(){ + vertices = new [90.8899, 114.623, -53.5059, 112.488, 84.4968, -32.5029, 95.0677, 84.4968, -57.802, 106.984, 114.623, -30.1326, 61.1871, 157.228, -22.9619, 91.3105, 140.163, -23.3825, 78.9926, 140.163, -41.2717, 67.8535, 157.228, -13.2803, 40.1841, 163.221, -1.36398, 112.908, 114.623, -2.37947, 95.8449, 140.163, -2.1412, 70.3075, 157.228, -1.78461, 19.6017, 140.163, 50.3574, 41.1996, 114.623, 71.3604, 40.9613, 140.163, 54.2968, 13.2919, 114.623, 66.2132, 68.1754, 157.228, 9.77515, 40.6047, 157.228, 28.7594, 62.2026, 140.163, 49.7625, 52.1004, 157.228, 26.3055, 12.1927, 157.228, -12.5031, 10.0606, 157.228, -0.943344, 92.326, 114.623, 49.3419, 71.323, 84.4968, 70.9398, 96.6221, 84.4968, 53.5196, 68.9527, 114.623, 65.436, 80.0918, 140.163, 37.4446, 12.5146, 157.228, 10.5524, 61.782, 157.228, 19.6391, 41.2832, 84.4968, 77.3523, 11.0761, 84.4968, 71.781, 91.9054, 140.163, 19.2184, 107.761, 114.623, 25.5283, -26.6159, 114.623, 27.4046, -38.5322, 84.4968, -0.264816, -32.1197, 84.4968, 29.7749, -32.5403, 114.623, -0.348495, 1.3755, 140.163, 38.5437, -10.5218, 114.623, 50.778, 51.3232, 157.228, -29.3554, 39.7635, 157.228, -31.4874, 113.329, 84.4968, 27.744, -10.9424, 140.163, 20.6546, -15.4767, 140.163, -0.586761, -27.3931, 114.623, -28.2562, -16.254, 84.4968, -56.2476, -32.9609, 84.4968, -30.4719, -11.9579, 114.623, -52.0699, 67.0763, 114.623, -68.9412, 60.7665, 140.163, -53.0853, 29.0449, 157.228, 26.6274, 19.181, 157.228, 20.2339, 69.292, 84.4968, -74.509, 18.5862, 157.228, -22.367, 18.1655, 140.163, -52.4904, 39.4069, 140.163, -57.0248, 28.2677, 157.228, -29.0334, 9.04517, 84.4968, -73.6677, 39.1686, 114.623, -74.0883, 39.0849, 84.4968, -80.0803, 11.4155, 114.623, -68.1639, -11.5372, 140.163, -21.9464, 0.276352, 140.163, -40.1725, -14.6995, 84.4968, 55.0741, 118.9, 84.4968, -2.46313, -136.251, 18.8165, -60.713, -176.454, 8.73773, -55.5964, -176.454, -1.84048, -55.5964, -174.764, 7.62939E-6, 65.4184, -139.248, 17.6282, 64.6954, 221.736, 84.4967, 180.141, 214.452, 7.62939E-6, 180.242, 221.736, 7.62939E-6, 180.141, 209.336, 84.4967, -186.18, 216.619, 7.62939E-6, -186.282, 216.619, 84.4967, -186.282, 132.378, 7.62939E-6, -266.688, 132.476, 7.62939E-6, -259.681, -131.425, 7.62939E-6, -181.422, -137.935, 7.62939E-6, -181.331, -141.222, 7.62939E-6, -76.7081, -141.222, 84.4967, -76.7081, -140.998, 7.62939E-6, -60.6467, -139.025, 84.4967, 80.6388, -139.248, 84.4967, 64.6954, -139.025, 7.62939E-6, 80.6388, -132.819, 7.62939E-6, 185.091, -126.308, 7.62939E-6, 185, -132.819, 84.4967, 185.091, -48.8024, 7.62939E-6, 265.255, -48.8024, 84.4967, 265.255, 139.769, 84.4967, 262.622, 139.769, 7.62939E-6, 262.622, 218.815, 7.62939E-6, 54.8935, 212.703, 7.62939E-6, 54.9788, 218.815, 37.7301, 54.8935, 239.647, 36.8232, 54.6026, 248.258, 7.62939E-6, 54.4823, 239.647, 7.62939E-6, 54.6026, 248.258, 84.4967, 54.4823, 247.281, 7.62939E-6, -15.5156, 247.08, 37.7301, -29.9498, 247.08, 7.62939E-6, -29.9497, 247.776, 7.62939E-6, 19.9455, 247.572, 37.7301, 5.31566, 247.572, 7.62939E-6, 5.31569, 248.067, 37.7301, 40.7767, 248.067, 7.62939E-6, 40.7768, 246.789, 7.62939E-6, -50.781, 246.64, 7.62939E-6, -61.4527, 246.789, 37.7301, -50.7811, 247.281, 37.7301, -15.5156, 247.776, 37.7301, 19.9455, 238.203, 7.62939E-6, -61.3349, 238.203, 36.8232, -61.3349, 217.371, 37.7301, -61.044, 217.371, 7.62939E-6, -61.044, 212.221, 37.7301, 20.442, 239.164, 37.7301, 20.0658, 218.333, 37.7301, 20.3566, 212.017, 7.62939E-6, 5.81218, 211.726, 37.7301, -15.0191, 211.726, 7.62939E-6, -15.0191, 212.017, 37.7301, 5.81216, 238.669, 37.7301, -15.3954, 217.838, 37.7301, -15.1045, 217.838, 7.62939E-6, -15.1045, 211.524, 7.62939E-6, -29.4532, 211.233, 37.7301, -50.2846, 211.233, 7.62939E-6, -50.2845, 211.524, 37.7301, -29.4533, 217.52, 37.7301, -50.3724, 238.074, 36.8232, -50.7812, 217.52, 7.62939E-6, -50.3723, 238.468, 7.62939E-6, -29.8295, 217.636, 37.7301, -29.5386, 239.455, 7.62939E-6, 40.8971, 239.455, 37.7301, 40.897, 212.512, 7.62939E-6, 41.2733, 218.624, 7.62939E-6, 41.1879, 212.512, 37.7301, 41.2733, 212.221, 7.62939E-6, 20.442, 218.333, 7.62939E-6, 20.3566, 218.624, 37.7301, 41.1879, 239.164, 7.62939E-6, 20.0658, 218.129, 7.62939E-6, 5.72682, 218.129, 37.7301, 5.72681, 238.96, 37.7301, 5.43593, 238.96, 7.62939E-6, 5.43594, 238.352, 7.62939E-6, -50.6632, 238.669, 7.62939E-6, -15.3954, 238.468, 37.7301, -29.8295, 217.636, 7.62939E-6, -29.5386, 211.084, 7.62939E-6, -60.9562, 209.336, 7.62939E-6, -186.18, 132.476, 84.4967, -259.681, -56.0956, 7.62939E-6, -257.048, -48.8975, 84.4967, 258.445, 139.674, 7.62939E-6, 255.812, -48.8975, 7.62939E-6, 258.445, 139.674, 84.4967, 255.812, 214.452, 84.4967, 180.242, -129.965, 84.4967, -76.8653, -131.425, 84.4967, -181.422, -129.965, 7.62939E-6, -76.8653, -126.308, 84.4967, 185, -127.768, 7.62939E-6, 80.4816, -140.998, 84.4967, -60.6467, -136.251, 7.62939E-6, -60.713, -136.251, 75.1367, -60.713, -136.251, 84.4967, -60.713, -134.501, 7.62939E-6, 64.6291, -139.248, 17.6282, 64.6954, -134.501, 84.4967, 64.6291, 215.48, 84.4967, -267.849, 132.378, 84.4967, -266.688, -56.0956, 84.4967, -257.048, 173.113, 96.7015, -77.5465, 177.016, 96.7015, -72.0119, 173.431, 96.7015, -54.7534, 204.881, 96.7015, -77.9901, 196.889, 96.7015, -72.2894, 197.061, 96.7015, -60.0072, 177.187, 96.7015, -59.7296, 205.2, 96.7015, -55.197, 173.113, 84.4967, -77.5465, 204.881, 84.4967, -77.9901, 205.2, 84.4967, -55.197, 173.431, 84.4967, -54.7534, 174.836, 96.7015, 50.5755, 179.547, 96.7015, 56.6349, 175.154, 96.7015, 73.3685, 206.604, 96.7015, 50.1319, 199.42, 96.7015, 56.3574, 199.591, 96.7015, 68.6397, 179.718, 96.7015, 68.9172, 206.923, 96.7015, 72.9249, 206.923, 84.4967, 72.9249, 206.604, 84.4967, 50.1319, 175.154, 84.4967, 73.3685, 174.836, 84.4967, 50.5755, 196.889, 100.56, -72.2894, 177.187, 100.56, -59.7296, 177.016, 100.56, -72.0119, 197.061, 100.56, -60.0072, 199.42, 100.56, 56.3574, 179.718, 100.56, 68.9172, 179.547, 100.56, 56.6349, 199.591, 100.56, 68.6397, 200.852, 96.7015, -45.9679, 129.958, 96.7015, 42.7471, 128.733, 96.7015, -44.9609, 202.077, 96.7015, 41.7401, 200.927, 84.4967, -40.5652, 200.852, 84.4967, -45.9679, 200.927, 93.2763, -40.5652, 214.548, 93.2763, -40.7555, 214.548, 84.4967, -40.7555, 215.654, 84.4967, 38.4101, 215.654, 93.2763, 38.4101, 202.033, 93.2763, 38.6003, 202.033, 84.4967, 38.6003, 202.077, 84.4967, 41.7401, 129.958, 84.4967, 42.7471, 128.733, 84.4967, -44.9609, -135.218, 84.4967, -72.1155, -134.458, 84.4967, -17.699, -133.109, 84.4967, 78.9328, -127.768, 84.4967, 80.4816, -133.848, 84.4967, 25.9915, -50.2432, 84.4967, 77.7757, -131.683, 84.4967, 266.412, -52.3524, 84.4967, -73.2726, 99.2399, 84.4967, -181.456, 100.528, 84.4967, -89.1816, 211.084, 84.4967, -60.9562, 246.64, 84.4967, -61.4527, 212.703, 84.4967, 54.9788, 222.871, 84.4967, 261.462, -18.3407, 84.4967, 174.12, -19.4626, 84.4967, 93.773, -19.769, 84.4967, -87.5018, -52.3524, 98.5912, -73.2726, -121.271, 98.5912, -70.0864, -121.302, 98.5912, -72.3098, -121.049, 98.5912, -54.2457, -120.542, 98.5912, -17.8933, -119.932, 98.5912, 25.7972, -119.444, 98.5912, 60.7498, -119.222, 98.5912, 76.5906, -119.192, 98.5912, 78.7385, -50.2432, 98.5912, 77.7757, -121.302, 93.9456, -72.3098, -135.218, 93.9456, -72.1155, -133.109, 93.9456, 78.9328, -119.192, 93.9456, 78.7385, -134.966, 102.213, -54.0513, -135.187, 93.9456, -69.8921, -135.187, 102.213, -69.8921, -134.966, 93.9456, -54.0513, -121.271, 93.9456, -70.0864, -119.932, 93.9456, 25.7972, -133.36, 93.9456, 60.9442, -133.848, 93.9456, 25.9915, -119.444, 93.9456, 60.7498, -134.458, 93.9456, -17.699, -120.542, 93.9456, -17.8933, -134.458, 103.827, -17.699, -120.542, 103.827, -17.8933, -133.848, 103.827, 25.9915, -119.932, 103.827, 25.7972, -119.222, 93.9456, 76.5906, -133.139, 93.9456, 76.7849, -121.049, 93.9456, -54.2457, -121.049, 102.213, -54.2457, -121.271, 102.213, -70.0864, -133.699, 102.213, -68.2025, -122.362, 102.213, -68.3607, -122.187, 102.213, -55.8423, -133.525, 102.213, -55.684, -122.362, 108.827, -68.3607, -133.525, 108.827, -55.684, -133.699, 108.827, -68.2025, -122.187, 108.827, -55.8423, -133.139, 102.213, 76.7849, -119.222, 102.213, 76.5906, -133.36, 102.213, 60.9442, -119.444, 102.213, 60.7498, -131.978, 102.213, 62.4793, -120.64, 102.213, 62.321, -120.465, 102.213, 74.8394, -131.803, 102.213, 74.9978, -120.64, 108.827, 62.321, -131.803, 108.827, 74.9978, -131.978, 108.827, 62.4793, -120.465, 108.827, 74.8394, -18.3407, 7.62939E-6, 174.12, -19.4626, 7.62939E-6, 93.773, 104.122, 84.4967, 172.41, 103, 7.62939E-6, 92.063, 103, 84.4967, 92.063, 104.122, 7.62939E-6, 172.41, 99.2399, 7.62939E-6, -181.456, 100.528, 7.62939E-6, -89.1816, -19.769, 7.62939E-6, -87.5018, -21.0574, 84.4967, -179.776, -21.0574, 7.62939E-6, -179.776, -243.921, 12.5566, -55.6333, -224.265, 1.52588E-5, -55.9077, -243.921, 1.52588E-5, -55.6333, -224.265, 11.7692, -55.9077, -224.265, 12.5566, -55.9077, -243.779, 12.5566, -45.4768, -218.228, 12.5566, -45.8336, -218.37, 12.5566, -55.9901, -218.37, 11.7692, -55.9901, -218.37, 8.73773, -55.9901, -218.228, 8.73773, -45.8336, -221.537, 12.5566, 70.436, -242.323, 1.52588E-5, 70.7263, -221.537, 1.52588E-5, 70.436, -242.323, 12.9503, 70.7263, -221.537, 12.9503, 70.436, -215.605, 12.9503, 61.0321, -242.453, 12.9503, 61.407, -215.941, 12.9503, 70.3579, -215.605, 8.73773, 61.0321, -215.941, 8.73773, 70.3579, -215.941, 12.5566, 70.3579, -174.594, 13.7771, 69.708, -156.421, 13.7771, 59.6108, -174.732, 13.7771, 59.8665, -168.295, 13.7771, 69.6201, -164.345, 13.7771, 69.5649, -164.278, 13.7771, 74.3282, -156.217, 13.7771, 74.2157, -156.421, 1.52588E-5, 59.6108, -156.217, 1.52588E-5, 74.2157, -174.732, 1.52588E-5, 59.8665, -168.295, 12.5566, 69.6201, -168.295, 6.7323, 69.6201, -171.597, 1.52588E-5, 69.6662, -174.594, 5.31497, 69.708, -176.411, 13.0684, -46.7657, -176.546, 13.0684, -56.4499, -161.854, 13.0684, -46.969, -166.792, 13.0684, -56.5861, -162.053, 13.0684, -61.1803, -166.855, 13.0684, -61.1132, -161.854, 1.52588E-5, -46.969, -176.411, 5.31497, -46.7657, -176.411, 8.73773, -46.7657, -162.053, 1.52588E-5, -61.1803, -176.546, 1.52588E-5, -56.4499, -176.562, 7.75592, -56.457, -176.562, 8.73773, -56.457, -176.562, 1.52588E-5, -56.457, -218.37, 7.75592, -55.9901, -215.605, 6.4567, 61.0321, -218.228, 6.4567, -45.8336, -173.919, 1.52588E-5, -56.4866, -225.366, 5.62994, -134.735, -174.984, 4.37009, -132.743, -225.366, 4.37009, -134.735, -174.984, 5.62994, -132.743, -169.523, 6.7323, 122.584, -217.783, 4.56694, 121.465, -169.523, 4.56694, 122.584, -217.783, 6.7323, 121.465, -172.762, 3.50395, 191.26, -226.468, 2.126, 187.312, -172.762, 2.126, 191.26, -226.468, 3.50395, 187.312, -181.025, 0.826782, 267.58, -237.384, 1.52588E-5, 229.912, -181.025, 1.52588E-5, 267.58, -237.384, 0.826782, 229.912, -174.594, 6.7323, 69.7129, -174.594, 1.52588E-5, 69.7105, -215.941, 6.7323, 70.3579, -230.956, 7.08663, -134.657, -236.999, 7.08663, -178.514, -241.754, 7.08663, -177.31, -225.366, 7.08663, -134.735, -236.999, 5.2756, -178.514, -235.741, 4.37009, -173.78, -246.116, 5.2756, -212.824, -235.741, 2.55907, -173.78, -246.116, 2.55907, -212.824, -222.175, 9.68262, -98.8194, -225.366, 9.68262, -134.735, -222.175, 11.7692, -98.8194, -221.868, 7.75592, -95.3626, -221.868, 5.62994, -95.3626, -230.956, 9.68262, -134.657, -176.053, 7.08663, -191.345, -186.308, 1.52588E-5, -251.661, -186.308, 7.08663, -251.661, -176.053, 1.52588E-5, -191.345, -190.692, 2.55907, -250.527, -190.692, 1.52588E-5, -250.527, -190.692, 7.08663, -250.527, -181.46, 7.08663, -191.561, -181.46, 2.55907, -191.561, -181.46, 4.37009, -191.561, -169.677, 9.96064, -132.358, -176.053, 9.96064, -191.345, -169.677, 1.52588E-5, -132.358, -181.46, 9.96064, -191.561, -174.984, 9.96064, -132.743, -166.792, 11.7692, -56.5861, -169.677, 11.7692, -132.358, -166.792, 1.52588E-5, -56.5861, -173.289, 5.62994, -94.631, -174.984, 11.7692, -132.743, -173.289, 7.75592, -94.631, -171.595, 11.7692, -56.519, -171.595, 7.75592, -56.519, -222.443, 1.52588E-5, 121.53, -221.952, 11.5724, 93.8436, -222.443, 11.5724, 121.53, -222.443, 10.5881, 121.53, -221.952, 12.5566, 93.8436, -217.783, 11.5724, 121.465, -217.783, 10.5881, 121.465, -216.791, 12.5566, 93.9351, -216.791, 11.5724, 93.9351, -176.261, 4.52514, 267.514, -176.261, 1.52588E-5, 267.514, -181.025, 4.52514, 267.58, -168.113, 8.61963, 191.195, -166.406, 1.52588E-5, 158.478, -166.406, 8.61963, 158.478, -168.113, 6.37553, 191.195, -169.523, 1.52588E-5, 218.22, -169.523, 6.37553, 218.22, -169.523, 4.52514, 218.22, -165.573, 12.5566, 122.529, -164.345, 12.5566, 69.5649, -165.573, 10.5881, 122.529, -166.406, 10.5881, 158.478, -174.749, 2.126, 218.293, -172.762, 6.37553, 191.26, -174.749, 4.52514, 218.293, -174.749, 6.37553, 218.293, -170.356, 4.56694, 158.533, -169.523, 10.5881, 122.584, -170.356, 10.5881, 158.533, -170.356, 8.61963, 158.533, -170.356, 3.50395, 158.533, -172.762, 8.61963, 191.26, -169.523, 12.5566, 122.584, -231.83, 1.52588E-5, 187.387, -227.137, 8.85584, 154.459, -231.83, 8.85584, 187.387, -231.83, 6.37553, 187.387, -227.137, 10.5881, 154.459, -226.468, 8.85584, 187.312, -226.468, 6.37553, 187.312, -222.22, 10.5881, 155.107, -222.125, 4.56694, 154.389, -222.125, 3.50395, 154.389, -222.22, 8.85584, 155.107, -242.645, 1.52588E-5, 228.213, -242.645, 4.56451, 228.213, -237.384, 4.56451, 229.912, -232.069, 6.37553, 209.169, -237.237, 6.37553, 207.8, -231.926, 2.126, 208.612, -174.749, 0.826782, 218.293, -231.926, 0.826782, 208.612, -237.237, 4.56451, 207.8, -232.069, 4.56451, 209.169, -242.453, 1.52588E-5, 61.407, -243.779, 1.063, -45.4768, -243.779, 1.52588E-5, -45.4768, -242.453, 1.063, 61.407, -237.234, 1.063, -45.5682, -235.741, 1.063, 61.3132, -230.522, 4.52757, -45.6619, -237.234, 2.79529, -45.5682, -230.522, 2.79529, -45.6619, -224.375, 6.4567, -45.7478, -224.375, 4.52757, -45.7478, -235.741, 2.79529, 61.3132, -229.029, 2.79529, 61.2195, -229.029, 4.52757, 61.2195, -222.317, 4.52757, 61.1258, -222.317, 6.4567, 61.1258, -166.855, 1.52588E-5, -61.1132, -227.904, 9.68262, -98.7393, -227.904, 11.7692, -98.7393, -241.754, 5.2756, -177.31, -250.453, 5.2756, -211.671, -246.116, 1.52588E-5, -212.824, -230.956, 1.52588E-5, -134.657, -250.453, 1.52588E-5, -211.671, -176.411, 5.31497, -46.7657, -174.594, 8.73773, 69.708, -174.594, 5.31497, 69.708, -176.411, 8.73773, -46.7657, -174.594, 8.73773, 69.7129, -174.594, 8.73773, 69.708, -164.278, 12.5566, 74.3282, -164.278, 1.52588E-5, 74.3282, -139.248, 7.62939E-6, 64.6954, -174.764, 8.73773, 65.4184, -134.501, 18.8165, 64.6291, -176.411, 1.52588E-5, -46.7657, -134.501, 75.1367, 64.6291, -134.501, 75.1367, 64.6291, -161.166, 87.306, 71.065, -134.483, 84.3926, 65.9282, -161.232, 84.3926, 66.3017, -163.018, 84.3926, -61.6058, -136.269, 84.3926, -61.9793, -162.121, 122.061, 2.66209, -161.232, 75.1367, 66.3017, -136.269, 75.1367, -61.9793, -163.018, 75.1367, -61.6058, -134.483, 75.1367, 65.9282, -134.416, 87.306, 70.6915, -136.326, 87.306, -66.1144, -136.251, 75.1367, -60.713, -163.076, 87.306, -65.7408, -135.371, 122.061, 2.28857, -153.204, 24.6064, 54.4781, -153.924, 24.6064, 63.4286, -149.089, 24.6064, 59.3134, -158.039, 24.6064, 58.5933, -158.628, 24.6064, 54.1382, -158.486, 11.2968, 64.2947, -158.628, 11.2968, 54.1382, -158.486, 24.6064, 64.2947, -147.7, 24.6064, 64.1441, -147.842, 11.2968, 53.9876, -147.7, 11.2968, 64.1441, -147.842, 24.6064, 53.9876, -153.204, 75.1367, 54.4781, -149.089, 75.1367, 59.3134, -153.924, 75.1367, 63.4286, -158.039, 75.1367, 58.5933, -153.493, 24.6064, 33.7839, -154.213, 24.6064, 42.7344, -149.378, 24.6064, 38.6192, -158.328, 24.6064, 37.8991, -158.917, 24.6064, 33.444, -158.775, 11.2968, 43.6005, -158.917, 11.2968, 33.444, -158.775, 24.6064, 43.6005, -147.989, 24.6064, 43.4499, -148.131, 11.2968, 33.2934, -147.989, 11.2968, 43.4499, -148.131, 24.6064, 33.2934, -153.493, 75.1367, 33.7839, -149.378, 75.1367, 38.6192, -154.213, 75.1367, 42.7344, -158.328, 75.1367, 37.8991, -153.816, 24.6064, 10.6112, -154.537, 24.6064, 19.5616, -149.701, 24.6064, 15.4465, -158.652, 24.6064, 14.7263, -159.241, 24.6064, 10.2712, -159.099, 11.2968, 20.4277, -159.241, 11.2968, 10.2712, -159.099, 24.6064, 20.4277, -148.313, 24.6064, 20.2771, -148.454, 11.2968, 10.1206, -148.313, 11.2968, 20.2771, -148.454, 24.6064, 10.1206, -153.816, 75.1367, 10.6112, -149.701, 75.1367, 15.4464, -154.537, 75.1367, 19.5616, -158.652, 75.1367, 14.7263, -154.155, 24.6064, -13.6266, -154.875, 24.6064, -4.67618, -150.04, 24.6064, -8.79132, -158.99, 24.6064, -9.51147, -159.579, 24.6064, -13.9666, -159.437, 11.2968, -3.81006, -159.579, 11.2968, -13.9666, -159.437, 24.6064, -3.81006, -148.651, 24.6064, -3.96066, -148.793, 11.2968, -14.1172, -148.651, 11.2968, -3.96066, -148.793, 24.6064, -14.1172, -154.155, 75.1367, -13.6266, -150.04, 75.1367, -8.79132, -154.875, 75.1367, -4.67618, -158.99, 75.1367, -9.51147, -154.469, 24.6064, -36.1616, -155.19, 24.6064, -27.2112, -150.354, 24.6064, -31.3263, -159.305, 24.6064, -32.0465, -159.894, 24.6064, -36.5016, -159.752, 11.2968, -26.3451, -159.894, 11.2968, -36.5016, -159.752, 24.6064, -26.3451, -148.966, 24.6064, -26.4957, -149.107, 11.2968, -36.6522, -148.966, 11.2968, -26.4957, -149.107, 24.6064, -36.6522, -154.469, 75.1367, -36.1616, -150.354, 75.1367, -31.3263, -155.19, 75.1367, -27.2112, -159.305, 75.1367, -32.0465, -154.761, 24.6064, -57.007, -155.481, 24.6064, -48.0566, -150.645, 24.6064, -52.1717, -159.596, 24.6064, -52.8919, -160.185, 24.6064, -57.347, -160.043, 11.2968, -47.1905, -160.185, 11.2968, -57.347, -160.043, 24.6064, -47.1905, -149.257, 24.6064, -47.3411, -149.399, 11.2968, -57.4976, -149.257, 11.2968, -47.3411, -149.399, 24.6064, -57.4976, -154.761, 75.1367, -57.007, -150.645, 75.1367, -52.1718, -155.481, 75.1367, -48.0566, -159.596, 75.1367, -52.8919, 74.5959, 84.4968, 245.492, 137.352, 84.4968, 244.616, 137.474, 90.8457, 253.352, 137.459, 90.8457, 252.263, 137.459, 84.4968, 252.263, 74.7026, 90.8457, 253.14, 74.7026, 84.4968, 253.14, 74.7178, 90.8457, 254.228, 137.474, 92.8432, 253.352, 137.352, 92.8432, 244.616, 74.7178, 92.8432, 254.228, 74.5959, 92.8432, 245.492, -48.0977, 84.4968, 246.609, 14.6586, 84.4968, 245.733, 14.7805, 90.8457, 254.469, 14.7653, 90.8457, 253.38, 14.7653, 84.4968, 253.38, -47.991, 90.8457, 254.256, -47.991, 84.4968, 254.256, -47.9758, 90.8457, 255.345, 14.7805, 92.8432, 254.469, 14.6586, 92.8432, 245.733, -47.9758, 92.8432, 255.345, -48.0977, 92.8432, 246.609, -115.394, 84.4968, 82.2888, -113.981, 84.4968, 183.509, -125.039, 90.8457, 183.663, -123.661, 90.8457, 183.644, -123.661, 84.4968, 183.644, -125.075, 90.8457, 82.4239, -125.075, 84.4968, 82.4239, -126.452, 90.8457, 82.4432, -125.039, 92.8432, 183.663, -113.981, 92.8432, 183.509, -126.452, 92.8432, 82.4432, -115.394, 92.8432, 82.2888, -119.169, 84.4968, -180.051, -117.756, 84.4968, -78.8315, -128.814, 90.8457, -78.6771, -127.436, 90.8457, -78.6963, -127.436, 84.4968, -78.6963, -128.849, 90.8457, -179.916, -128.849, 84.4968, -179.916, -130.227, 90.8457, -179.897, -128.814, 92.8432, -78.6771, -117.756, 92.8432, -78.8315, -130.227, 92.8432, -179.897, -119.169, 92.8432, -180.051, 10.0252, 84.4968, -247.673, -52.7311, 84.4968, -246.796, -52.8531, 90.8457, -255.532, -52.8379, 90.8457, -254.444, -52.8379, 84.4968, -254.444, 9.91842, 90.8457, -255.32, 9.91842, 84.4968, -255.32, 9.90321, 90.8457, -256.409, -52.8531, 92.8432, -255.532, -52.7311, 92.8432, -246.796, 9.90321, 92.8432, -256.409, 10.0252, 92.8432, -247.673, 129.104, 84.4968, -248.739, 66.3481, 84.4968, -247.863, 66.2262, 90.8457, -256.598, 66.2414, 90.8457, -255.51, 66.2414, 84.4968, -255.51, 128.998, 90.8457, -256.386, 128.998, 84.4968, -256.386, 128.982, 90.8457, -257.475, 66.2262, 92.8432, -256.598, 66.3481, 92.8432, -247.863, 128.982, 92.8432, -257.475, 129.104, 92.8432, -248.739, 198.712, 84.4968, -80.6636, 197.299, 84.4968, -181.883, 208.357, 90.8457, -182.038, 206.979, 90.8457, -182.019, 206.979, 84.4968, -182.019, 208.392, 90.8457, -80.7988, 208.392, 84.4968, -80.7988, 209.77, 90.8457, -80.818, 208.357, 92.8432, -182.038, 197.299, 92.8432, -181.883, 209.77, 92.8432, -80.818, 198.712, 92.8432, -80.6636, 201.777, 84.4968, 177.387, 200.364, 84.4968, 76.1675, 211.422, 90.8457, 76.0131, 210.044, 90.8457, 76.0323, 210.044, 84.4968, 76.0323, 211.458, 90.8457, 177.252, 211.458, 84.4968, 177.252, 212.835, 90.8457, 177.233, 211.422, 92.8432, 76.0131, 200.364, 92.8432, 76.1675, 212.835, 92.8432, 177.233, 201.777, 92.8432, 177.387, 234.976, 84.4968, 47.5404, 233.562, 84.4968, -53.6795, 244.62, 90.8457, -53.8339, 243.242, 90.8457, -53.8146, 243.242, 84.4968, -53.8146, 244.656, 90.8457, 47.4052, 244.656, 84.4968, 47.4052, 246.034, 90.8457, 47.386, 244.62, 92.8432, -53.8339, 233.562, 92.8432, -53.6795, 246.034, 92.8432, 47.386, 234.976, 92.8432, 47.5404, -121.277, 146.426, 193.702, -120.43, 146.426, 254.365, -59.767, 146.426, 253.518, -60.6141, 146.426, 192.855, -121.277, 152.213, 193.702, -91.7501, 152.213, 202.431, -60.6141, 152.213, 192.855, -103.912, 152.213, 206.571, -111.318, 152.213, 217.069, -120.43, 152.213, 254.365, -111.138, 152.213, 229.915, -103.442, 152.213, 240.202, -91.1697, 152.213, 244.001, -71.7815, 152.213, 216.517, -59.767, 152.213, 253.518, -79.4774, 152.213, 206.23, -71.6021, 152.213, 229.363, -79.0078, 152.213, 239.861, -103.912, 156.465, 206.571, -79.4774, 156.465, 206.23, -91.7501, 156.465, 202.431, -111.318, 156.465, 217.069, -71.7815, 156.465, 216.517, -111.138, 156.465, 229.915, -71.6021, 156.465, 229.363, -103.442, 156.465, 240.202, -79.0078, 156.465, 239.861, -91.1697, 156.465, 244.001, -92.2707, 189.064, 223.167, -91.1291, 156.465, 223.151, -91.1291, 189.064, 223.151, -92.2707, 156.465, 223.167, -92.2707, 169.436, 223.167, -91.1131, 189.064, 224.292, -92.2547, 189.064, 224.308, -92.2547, 156.465, 224.308, -91.1131, 156.465, 224.292, -109.599, 173.169, 218.359, -92.2707, 169.436, 223.167, -92.2707, 189.064, 223.167, -110.289, 162.695, 218.167, 151.064, 146.426, 191.15, 151.911, 146.426, 251.814, 212.574, 146.426, 250.967, 211.727, 146.426, 190.303, 151.064, 152.213, 191.15, 180.591, 152.213, 199.879, 211.727, 152.213, 190.303, 168.429, 152.213, 204.019, 161.024, 152.213, 214.517, 151.911, 152.213, 251.814, 161.203, 152.213, 227.364, 168.899, 152.213, 237.651, 181.172, 152.213, 241.45, 200.56, 152.213, 213.965, 212.574, 152.213, 250.967, 192.864, 152.213, 203.678, 200.739, 152.213, 226.811, 193.334, 152.213, 237.31, 168.429, 156.465, 204.019, 192.864, 156.465, 203.678, 180.591, 156.465, 199.879, 161.024, 156.465, 214.517, 200.56, 156.465, 213.965, 161.203, 156.465, 227.364, 200.739, 156.465, 226.811, 168.899, 156.465, 237.651, 193.334, 156.465, 237.31, 181.172, 156.465, 241.45, 180.071, 189.064, 220.615, 181.212, 156.465, 220.599, 181.212, 189.064, 220.599, 180.071, 156.465, 220.615, 180.071, 169.436, 220.615, 181.228, 189.064, 221.741, 180.087, 189.064, 221.757, 180.087, 156.465, 221.757, 181.228, 156.465, 221.741, 162.743, 173.169, 215.807, 180.071, 169.436, 220.615, 180.071, 189.064, 220.615, 162.052, 162.695, 215.616, 144.701, 146.426, -255.458, 145.549, 146.426, -194.795, 206.212, 146.426, -195.642, 205.365, 146.426, -256.305, 144.701, 152.213, -255.458, 174.229, 152.213, -246.73, 205.365, 152.213, -256.305, 162.067, 152.213, -242.589, 154.661, 152.213, -232.091, 145.549, 152.213, -194.795, 154.841, 152.213, -219.245, 162.536, 152.213, -208.958, 174.809, 152.213, -205.159, 194.197, 152.213, -232.643, 206.212, 152.213, -195.642, 186.502, 152.213, -242.931, 194.377, 152.213, -219.797, 186.971, 152.213, -209.299, 162.067, 156.465, -242.589, 186.502, 156.465, -242.931, 174.229, 156.465, -246.73, 154.661, 156.465, -232.091, 194.197, 156.465, -232.643, 154.841, 156.465, -219.245, 194.377, 156.465, -219.797, 162.536, 156.465, -208.958, 186.971, 156.465, -209.299, 174.809, 156.465, -205.159, 173.708, 189.064, -225.994, 174.85, 156.465, -226.01, 174.85, 189.064, -226.01, 173.708, 156.465, -225.994, 173.708, 169.436, -225.994, 174.866, 189.064, -224.868, 173.724, 189.064, -224.852, 173.724, 156.465, -224.852, 174.866, 156.465, -224.868, 156.38, 173.169, -230.802, 173.708, 169.436, -225.994, 173.708, 189.064, -225.994, 155.69, 162.695, -230.993, -126.777, 146.426, -252.793, -125.93, 146.426, -192.13, -65.2662, 146.426, -192.977, -66.1133, 146.426, -253.64, -126.777, 152.213, -252.793, -97.2494, 152.213, -244.064, -66.1133, 152.213, -253.64, -109.411, 152.213, -239.924, -116.817, 152.213, -229.426, -125.93, 152.213, -192.13, -116.638, 152.213, -216.58, -108.942, 152.213, -206.293, -96.6689, 152.213, -202.493, -77.2808, 152.213, -229.978, -65.2662, 152.213, -192.977, -84.9766, 152.213, -240.265, -77.1014, 152.213, -217.132, -84.507, 152.213, -206.634, -109.411, 156.465, -239.924, -84.9766, 156.465, -240.265, -97.2494, 156.465, -244.064, -116.817, 156.465, -229.426, -77.2808, 156.465, -229.978, -116.638, 156.465, -216.58, -77.1014, 156.465, -217.132, -108.942, 156.465, -206.293, -84.507, 156.465, -206.634, -96.6689, 156.465, -202.493, -97.7699, 189.064, -223.328, -96.6283, 156.465, -223.344, -96.6283, 189.064, -223.344, -97.7699, 156.465, -223.328, -97.7699, 169.436, -223.328, -96.6124, 189.064, -222.203, -97.754, 189.064, -222.187, -97.754, 156.465, -222.187, -96.6124, 156.465, -222.203, -115.098, 173.169, -228.136, -97.7699, 169.436, -223.328, -97.7699, 189.064, -223.328, -115.789, 162.695, -228.328, 214.115, 84.4967, 274.59, 153.092, 84.4967, 262.074, 213.928, 84.4967, 261.225, 153.279, 84.4967, 275.44, 153.279, 7.62939E-6, 275.44, 214.115, 7.62939E-6, 274.59, 213.928, 7.62939E-6, 261.225, 153.092, 7.62939E-6, 262.074, 224.872, 84.4967, 261.072, 224.872, 7.62939E-6, 261.072, 141.991, 7.62939E-6, 262.229, 141.991, 84.4967, 262.229, 237.249, 84.4967, 190.089, 224.719, 84.4967, 250.147, 223.883, 84.4967, 190.275, 238.085, 84.4967, 249.96, 238.085, 7.62939E-6, 249.96, 237.249, 7.62939E-6, 190.089, 223.883, 7.62939E-6, 190.275, 224.719, 7.62939E-6, 250.147, 223.733, 84.4967, 179.505, 223.733, 7.62939E-6, 179.505, 218.527, 146.426, 247.258, 218.651, 84.4968, 256.131, 218.527, 84.4968, 247.258, 218.651, 146.426, 256.131, 223.931, 146.426, 193.697, 224.678, 146.426, 247.172, 208.32, 146.426, 256.275, 155.681, 146.426, 262.038, 208.391, 146.426, 261.302, 155.611, 146.426, 257.011, 146.768, 146.426, 257.135, 217.78, 146.426, 193.783, 217.647, 146.426, 184.248, 210.959, 146.426, 179.683, 161.245, 146.426, 185.036, 211.024, 146.426, 184.341, 161.18, 146.426, 180.378, 146.579, 146.426, 243.631, 141.732, 146.426, 243.699, 145.9, 146.426, 195.003, 145.764, 146.426, 185.252, 141.053, 146.426, 195.071, 211.024, 84.4968, 184.341, 217.647, 84.4968, 184.248, 146.579, 84.4968, 243.631, 146.768, 84.4968, 257.135, 155.611, 84.4968, 257.011, 217.78, 84.4968, 193.783, 208.32, 84.4968, 256.275, 155.681, 84.4968, 262.038, 208.391, 84.4968, 261.302, 224.678, 84.4968, 247.172, 223.931, 84.4968, 193.697, 145.764, 84.4968, 185.252, 145.9, 84.4968, 195.003, 161.245, 84.4968, 185.036, 161.18, 84.4968, 180.378, 210.959, 84.4968, 179.683, 141.053, 84.4968, 195.071, 141.732, 84.4968, 243.699, -144.054, 84.4967, 255.906, -131.538, 84.4967, 194.883, -130.688, 84.4967, 255.719, -144.903, 84.4967, 195.07, -144.903, 7.62939E-6, 195.07, -144.054, 7.62939E-6, 255.906, -130.688, 7.62939E-6, 255.719, -131.538, 7.62939E-6, 194.883, -130.535, 84.4967, 266.663, -130.535, 7.62939E-6, 266.663, -131.693, 7.62939E-6, 183.782, -131.693, 84.4967, 183.782, -59.5523, 84.4967, 279.04, -119.61, 84.4967, 266.51, -59.7389, 84.4967, 265.674, -119.424, 84.4967, 279.876, -119.424, 7.62939E-6, 279.876, -59.5523, 7.62939E-6, 279.04, -59.7389, 7.62939E-6, 265.674, -119.61, 7.62939E-6, 266.51, -48.9686, 84.4967, 265.524, -48.9686, 7.62939E-6, 265.524, -116.722, 146.426, 260.318, -125.595, 84.4968, 260.442, -116.722, 84.4968, 260.318, -125.595, 146.426, 260.442, -63.161, 146.426, 265.722, -116.636, 146.426, 266.469, -125.739, 146.426, 250.111, -131.502, 146.426, 197.472, -130.766, 146.426, 250.182, -126.475, 146.426, 197.402, -126.598, 146.426, 188.559, -63.2469, 146.426, 259.571, -53.712, 146.426, 259.438, -49.147, 146.426, 252.75, -54.4995, 146.426, 203.036, -53.8044, 146.426, 252.815, -49.8421, 146.426, 202.971, -113.095, 146.426, 188.37, -113.162, 146.426, 183.523, -64.4671, 146.426, 187.691, -54.7157, 146.426, 187.555, -64.5347, 146.426, 182.844, -53.8044, 84.4968, 252.815, -53.712, 84.4968, 259.438, -113.095, 84.4968, 188.37, -126.598, 84.4968, 188.559, -126.475, 84.4968, 197.402, -63.2469, 84.4968, 259.571, -125.739, 84.4968, 250.111, -131.502, 84.4968, 197.472, -130.766, 84.4968, 250.182, -116.636, 84.4968, 266.469, -63.161, 84.4968, 265.722, -54.7157, 84.4968, 187.555, -64.4671, 84.4968, 187.691, -54.4995, 84.4968, 203.036, -49.8421, 84.4968, 202.971, -49.147, 84.4968, 252.75, -64.5347, 84.4968, 182.844, -113.162, 84.4968, 183.523, 227.666, 84.4967, -257.073, 215.15, 84.4967, -196.051, 214.301, 84.4967, -256.886, 228.516, 84.4967, -196.237, 228.516, 7.62939E-6, -196.237, 227.666, 7.62939E-6, -257.073, 214.301, 7.62939E-6, -256.886, 215.15, 7.62939E-6, -196.051, 214.148, 84.4967, -267.83, 214.148, 7.62939E-6, -267.83, 215.305, 7.62939E-6, -184.95, 215.305, 84.4967, -184.95, 143.165, 84.4967, -280.207, 203.223, 84.4967, -267.678, 143.351, 84.4967, -266.842, 203.036, 84.4967, -281.043, 203.036, 7.62939E-6, -281.043, 143.165, 7.62939E-6, -280.207, 143.351, 7.62939E-6, -266.842, 203.223, 7.62939E-6, -267.678, 132.581, 84.4967, -266.691, 132.581, 7.62939E-6, -266.691, 200.334, 146.426, -261.485, 209.207, 84.4968, -261.609, 200.334, 84.4968, -261.485, 209.207, 146.426, -261.609, 146.773, 146.426, -266.889, 200.248, 146.426, -267.636, 209.351, 146.426, -251.279, 215.114, 146.426, -198.639, 214.378, 146.426, -251.349, 210.087, 146.426, -198.569, 210.211, 146.426, -189.726, 146.859, 146.426, -260.738, 137.324, 146.426, -260.605, 132.759, 146.426, -253.918, 138.112, 146.426, -204.204, 137.417, 146.426, -253.983, 133.455, 146.426, -204.139, 196.707, 146.426, -189.538, 196.775, 146.426, -184.691, 148.08, 146.426, -188.859, 138.328, 146.426, -188.723, 148.147, 146.426, -184.012, 137.417, 84.4968, -253.983, 137.324, 84.4968, -260.605, 196.707, 84.4968, -189.538, 210.211, 84.4968, -189.726, 210.087, 84.4968, -198.569, 146.859, 84.4968, -260.738, 209.351, 84.4968, -251.279, 215.114, 84.4968, -198.639, 214.378, 84.4968, -251.349, 200.248, 84.4968, -267.636, 146.773, 84.4968, -266.889, 138.328, 84.4968, -188.723, 148.08, 84.4968, -188.859, 138.112, 84.4968, -204.204, 133.455, 84.4968, -204.139, 132.759, 84.4968, -253.918, 148.147, 84.4968, -184.012, 196.775, 84.4968, -184.691, -128.317, 84.4967, -276.416, -67.2948, 84.4967, -263.9, -128.13, 84.4967, -263.051, -67.4814, 84.4967, -277.266, -67.4814, 7.62939E-6, -277.266, -128.317, 7.62939E-6, -276.416, -128.13, 7.62939E-6, -263.051, -67.2948, 7.62939E-6, -263.9, -139.074, 84.4967, -262.898, -139.074, 7.62939E-6, -262.898, -56.1935, 7.62939E-6, -264.055, -56.1935, 84.4967, -264.055, -151.451, 84.4967, -191.915, -138.922, 84.4967, -251.973, -138.086, 84.4967, -192.101, -152.287, 84.4967, -251.786, -152.287, 7.62939E-6, -251.786, -151.451, 7.62939E-6, -191.915, -138.086, 7.62939E-6, -192.101, -138.922, 7.62939E-6, -251.973, -137.935, 84.4967, -181.331, -132.729, 146.426, -249.084, -132.853, 84.4968, -257.957, -132.729, 84.4968, -249.084, -132.853, 146.426, -257.957, -138.133, 146.426, -195.524, -138.88, 146.426, -248.999, -122.523, 146.426, -258.101, -69.8833, 146.426, -263.864, -122.593, 146.426, -263.128, -69.8131, 146.426, -258.837, -60.9702, 146.426, -258.961, -131.982, 146.426, -195.609, -131.849, 146.426, -186.074, -125.162, 146.426, -181.509, -75.4477, 146.426, -186.862, -125.227, 146.426, -186.167, -75.3826, 146.426, -182.205, -60.7816, 146.426, -245.457, -55.9347, 146.426, -245.525, -60.1026, 146.426, -196.83, -59.9664, 146.426, -187.078, -55.2557, 146.426, -196.897, -125.227, 84.4968, -186.167, -131.849, 84.4968, -186.074, -60.7816, 84.4968, -245.457, -60.9702, 84.4968, -258.961, -69.8131, 84.4968, -258.837, -131.982, 84.4968, -195.609, -122.523, 84.4968, -258.101, -69.8833, 84.4968, -263.864, -122.593, 84.4968, -263.128, -138.88, 84.4968, -248.999, -138.133, 84.4968, -195.524, -59.9664, 84.4968, -187.078, -60.1026, 84.4968, -196.83, -75.4477, 84.4968, -186.862, -75.3826, 84.4968, -182.205, -125.162, 84.4968, -181.509, -55.2557, 84.4968, -196.897, -55.9347, 84.4968, -245.525]; + uvs = new [0.315058, 0.406213, 0.272061, 0.444464, 0.306505, 0.398604, 0.283235, 0.448581, 0.375865, 0.460308, 0.315058, 0.460308, 0.339414, 0.42788, 0.362684, 0.477857, 0.418862, 0.498558, 0.272061, 0.498558, 0.306505, 0.498558, 0.358055, 0.498558, 0.461859, 0.590904, 0.418862, 0.629155, 0.418862, 0.598512, 0.47504, 0.619214, 0.362684, 0.51926, 0.418862, 0.552653, 0.375865, 0.590904, 0.395592, 0.548535, 0.47504, 0.477857, 0.479669, 0.498558, 0.315058, 0.590904, 0.358055, 0.629155, 0.306505, 0.598512, 0.362684, 0.619214, 0.339414, 0.569237, 0.47504, 0.51926, 0.375865, 0.536809, 0.418862, 0.639915, 0.479669, 0.629155, 0.315058, 0.536809, 0.283235, 0.548535, 0.554489, 0.548535, 0.577758, 0.498559, 0.565663, 0.552653, 0.565663, 0.498559, 0.49831, 0.569237, 0.522666, 0.590904, 0.395592, 0.448581, 0.418862, 0.444464, 0.272061, 0.552653, 0.522666, 0.536809, 0.531219, 0.498559, 0.554489, 0.448581, 0.531219, 0.398604, 0.565663, 0.444464, 0.522666, 0.406213, 0.362684, 0.377903, 0.375865, 0.406213, 0.442132, 0.548535, 0.461859, 0.536809, 0.358055, 0.367962, 0.461859, 0.460308, 0.461859, 0.406213, 0.418862, 0.398605, 0.442132, 0.448581, 0.479669, 0.367962, 0.418862, 0.367962, 0.418862, 0.357202, 0.47504, 0.377903, 0.522666, 0.460308, 0.49831, 0.42788, 0.531219, 0.598513, 0.259966, 0.498558, 0.773271, 0.387579, 0.854553, 0.395757, 0.854553, 0.395757, 0.854553, 0.613072, 0.782853, 0.612664, 0.0575686, 0.828987, 0.0722713, 0.828987, 0.0575686, 0.828987, 0.0722714, 0.170976, 0.0575687, 0.170976, 0.0575687, 0.170976, 0.225318, 0.024501, 0.225318, 0.0370845, 0.76013, 0.170976, 0.773271, 0.170977, 0.782854, 0.358736, 0.782854, 0.358736, 0.782854, 0.387579, 0.782853, 0.641295, 0.782853, 0.612664, 0.782853, 0.641295, 0.773271, 0.828987, 0.760129, 0.828987, 0.773271, 0.828987, 0.605968, 0.975021, 0.605968, 0.975021, 0.225318, 0.975021, 0.225318, 0.975021, 0.0599335, 0.604042, 0.0722713, 0.604042, 0.0599335, 0.604042, 0.0178835, 0.604042, 0.000499547, 0.604042, 0.0178835, 0.604042, 0.000499547, 0.604042, 0.000499547, 0.478342, 0.000499547, 0.452422, 0.000499576, 0.452422, 0.000499487, 0.542022, 0.000499487, 0.51575, 0.000499547, 0.51575, 0.000499487, 0.57943, 0.000499517, 0.57943, 0.000499547, 0.415014, 0.000499547, 0.39585, 0.000499547, 0.415014, 0.000499547, 0.478342, 0.000499487, 0.542022, 0.0175305, 0.39585, 0.0175305, 0.39585, 0.0595804, 0.39585, 0.0595804, 0.39585, 0.0722713, 0.542022, 0.0178835, 0.542022, 0.0599335, 0.542022, 0.0722713, 0.515751, 0.0722713, 0.478342, 0.0722713, 0.478342, 0.0722713, 0.51575, 0.0178836, 0.478342, 0.0599335, 0.478342, 0.0599335, 0.478342, 0.0722713, 0.452422, 0.0722713, 0.415014, 0.0722713, 0.415014, 0.0722713, 0.452422, 0.0595804, 0.415014, 0.0180881, 0.414795, 0.0595804, 0.415014, 0.0178836, 0.452422, 0.0599335, 0.452422, 0.0178835, 0.57943, 0.0178835, 0.57943, 0.0722713, 0.57943, 0.0599335, 0.57943, 0.0722713, 0.57943, 0.0722713, 0.542022, 0.0599335, 0.542022, 0.0599335, 0.57943, 0.0178835, 0.542022, 0.0599335, 0.51575, 0.0599335, 0.51575, 0.0178835, 0.51575, 0.0178835, 0.51575, 0.0175304, 0.415014, 0.0178836, 0.478342, 0.0178836, 0.452422, 0.0599335, 0.452422, 0.0722713, 0.39585, 0.0722714, 0.170976, 0.225318, 0.0370845, 0.605968, 0.0370845, 0.605968, 0.962791, 0.225318, 0.962791, 0.605968, 0.962791, 0.225318, 0.962791, 0.0722713, 0.828987, 0.760129, 0.358736, 0.76013, 0.170976, 0.760129, 0.358736, 0.760129, 0.828987, 0.760129, 0.641295, 0.782854, 0.387579, 0.773271, 0.387579, 0.773271, 0.387579, 0.773271, 0.387579, 0.773271, 0.612664, 0.782853, 0.612664, 0.773271, 0.612664, 0.0575687, 0.024501, 0.225318, 0.024501, 0.605968, 0.0370843, 0.148438, 0.365111, 0.140717, 0.375146, 0.148438, 0.406043, 0.0843103, 0.365111, 0.100601, 0.375146, 0.100601, 0.397202, 0.140717, 0.397202, 0.0843103, 0.406042, 0.148438, 0.365111, 0.0843103, 0.365111, 0.0843103, 0.406042, 0.148438, 0.406043, 0.148571, 0.595187, 0.139235, 0.606185, 0.148571, 0.636118, 0.0844433, 0.595187, 0.099119, 0.606185, 0.099119, 0.628241, 0.139235, 0.628241, 0.0844434, 0.636118, 0.0844434, 0.636118, 0.0844433, 0.595187, 0.148571, 0.636118, 0.148571, 0.595187, 0.100601, 0.375146, 0.140717, 0.397202, 0.140717, 0.375146, 0.100601, 0.397202, 0.099119, 0.606185, 0.139235, 0.628241, 0.139235, 0.606185, 0.099119, 0.628241, 0.0933445, 0.422504, 0.238923, 0.580007, 0.238924, 0.422504, 0.0933445, 0.580007, 0.0933445, 0.432205, 0.0933445, 0.422504, 0.0933445, 0.432205, 0.0658498, 0.432205, 0.0658498, 0.432205, 0.0658498, 0.574369, 0.0658498, 0.574369, 0.0933445, 0.574369, 0.0933445, 0.574369, 0.0933445, 0.580007, 0.238923, 0.580007, 0.238924, 0.422504, 0.770866, 0.367132, 0.770866, 0.464852, 0.770866, 0.63838, 0.760129, 0.641295, 0.770866, 0.54331, 0.603593, 0.63838, 0.773271, 0.975021, 0.603593, 0.367132, 0.2946, 0.176698, 0.2946, 0.342402, 0.0722713, 0.39585, 0.000499547, 0.39585, 0.0722713, 0.604042, 0.0575685, 0.975021, 0.541922, 0.812158, 0.541922, 0.667874, 0.537432, 0.342402, 0.603593, 0.367132, 0.742773, 0.371125, 0.742773, 0.367132, 0.742773, 0.399572, 0.742773, 0.464852, 0.742773, 0.54331, 0.742773, 0.606077, 0.742773, 0.634523, 0.742773, 0.63838, 0.603593, 0.63838, 0.742773, 0.367132, 0.770866, 0.367132, 0.770866, 0.63838, 0.742773, 0.63838, 0.770866, 0.399572, 0.770866, 0.371125, 0.770866, 0.371125, 0.770866, 0.399572, 0.742773, 0.371125, 0.742773, 0.54331, 0.770866, 0.606077, 0.770866, 0.54331, 0.742773, 0.606077, 0.770866, 0.464852, 0.742773, 0.464852, 0.770866, 0.464852, 0.742773, 0.464852, 0.770866, 0.54331, 0.742773, 0.54331, 0.742773, 0.634523, 0.770866, 0.634523, 0.742773, 0.399572, 0.742773, 0.399572, 0.742773, 0.371125, 0.76791, 0.374196, 0.745025, 0.374196, 0.745025, 0.396676, 0.76791, 0.396676, 0.745025, 0.374196, 0.76791, 0.396676, 0.76791, 0.374196, 0.745025, 0.396676, 0.770866, 0.634523, 0.742773, 0.634523, 0.770866, 0.606077, 0.742773, 0.606077, 0.768118, 0.608868, 0.745232, 0.608868, 0.745232, 0.631348, 0.768118, 0.631348, 0.745232, 0.608868, 0.768118, 0.631348, 0.768118, 0.608868, 0.745232, 0.631348, 0.541922, 0.812158, 0.541922, 0.667874, 0.29472, 0.812158, 0.29472, 0.667874, 0.29472, 0.667874, 0.29472, 0.812158, 0.2946, 0.176698, 0.2946, 0.342402, 0.537432, 0.342402, 0.537432, 0.176698, 0.537432, 0.176698, 0.990714, 0.394, 0.951036, 0.394, 0.990714, 0.394, 0.951036, 0.394, 0.951036, 0.394, 0.990714, 0.412238, 0.939136, 0.412238, 0.939136, 0.394, 0.939136, 0.394, 0.939136, 0.394, 0.939136, 0.412238, 0.949092, 0.620908, 0.99105, 0.620908, 0.949092, 0.620908, 0.99105, 0.620908, 0.949092, 0.620908, 0.936855, 0.604173, 0.99105, 0.604173, 0.937796, 0.620908, 0.936855, 0.604173, 0.937796, 0.620908, 0.937796, 0.620908, 0.854331, 0.620778, 0.81737, 0.603105, 0.854331, 0.603105, 0.841615, 0.620778, 0.833641, 0.620778, 0.833641, 0.629332, 0.81737, 0.629332, 0.81737, 0.603105, 0.81737, 0.629332, 0.854331, 0.603105, 0.841615, 0.620778, 0.841615, 0.620778, 0.848281, 0.620778, 0.854331, 0.620778, 0.854715, 0.411613, 0.854715, 0.394223, 0.825331, 0.411613, 0.835025, 0.394223, 0.825331, 0.386093, 0.835025, 0.386093, 0.825331, 0.411613, 0.854715, 0.411613, 0.854715, 0.411613, 0.825331, 0.386093, 0.854715, 0.394223, 0.854747, 0.39421, 0.854747, 0.39421, 0.854747, 0.39421, 0.939136, 0.394, 0.936855, 0.604173, 0.939136, 0.412238, 0.849412, 0.394223, 0.951036, 0.252444, 0.849412, 0.257284, 0.951036, 0.252444, 0.849412, 0.257284, 0.845586, 0.71584, 0.942953, 0.712621, 0.845586, 0.71584, 0.942953, 0.712621, 0.854058, 0.839061, 0.962336, 0.830627, 0.854058, 0.839061, 0.962336, 0.830627, 0.872885, 0.975881, 0.985568, 0.906838, 0.872885, 0.975881, 0.985568, 0.906838, 0.854331, 0.620787, 0.854331, 0.620782, 0.937796, 0.620908, 0.96232, 0.252444, 0.973281, 0.17355, 0.982912, 0.175593, 0.951036, 0.252444, 0.973281, 0.17355, 0.970875, 0.182083, 0.990714, 0.111721, 0.970875, 0.182083, 0.990714, 0.111721, 0.945608, 0.317008, 0.951036, 0.252444, 0.945608, 0.317008, 0.945086, 0.323222, 0.945086, 0.323222, 0.96232, 0.252444, 0.849918, 0.152041, 0.868916, 0.0434924, 0.868916, 0.0434924, 0.849918, 0.152041, 0.877794, 0.0454174, 0.877794, 0.0454174, 0.877794, 0.0454174, 0.860825, 0.151519, 0.860825, 0.151519, 0.860825, 0.151519, 0.838712, 0.258107, 0.849918, 0.152041, 0.838712, 0.258107, 0.860825, 0.151519, 0.849412, 0.257284, 0.835025, 0.394223, 0.838712, 0.258107, 0.835025, 0.394223, 0.847066, 0.325753, 0.849412, 0.257284, 0.847066, 0.325753, 0.84472, 0.394223, 0.84472, 0.394223, 0.95236, 0.712621, 0.950589, 0.662924, 0.95236, 0.712621, 0.95236, 0.712621, 0.950589, 0.662924, 0.942953, 0.712621, 0.942953, 0.712621, 0.940175, 0.663218, 0.940175, 0.663218, 0.86327, 0.975881, 0.86327, 0.975881, 0.872885, 0.975881, 0.844674, 0.839061, 0.840307, 0.780363, 0.840307, 0.780363, 0.844674, 0.839061, 0.848281, 0.887547, 0.848281, 0.887547, 0.848281, 0.887547, 0.837612, 0.71584, 0.833641, 0.620778, 0.837612, 0.71584, 0.840307, 0.780363, 0.85883, 0.887547, 0.854058, 0.839061, 0.85883, 0.887547, 0.85883, 0.887547, 0.848281, 0.780363, 0.845586, 0.71584, 0.848281, 0.780363, 0.848281, 0.780363, 0.848281, 0.780363, 0.854058, 0.839061, 0.845586, 0.71584, 0.97316, 0.830627, 0.96276, 0.771624, 0.97316, 0.830627, 0.97316, 0.830627, 0.96276, 0.771624, 0.962336, 0.830627, 0.962336, 0.830627, 0.952856, 0.772911, 0.952645, 0.771624, 0.952645, 0.771624, 0.952856, 0.772911, 0.996137, 0.903655, 0.996137, 0.903655, 0.985568, 0.906838, 0.974256, 0.869729, 0.984649, 0.867141, 0.973952, 0.868732, 0.85883, 0.887547, 0.973952, 0.868732, 0.984649, 0.867141, 0.974256, 0.869729, 0.99105, 0.604173, 0.990714, 0.412238, 0.990714, 0.412238, 0.99105, 0.604173, 0.977501, 0.412238, 0.977501, 0.604173, 0.963952, 0.412238, 0.977501, 0.412238, 0.963952, 0.412238, 0.951544, 0.412238, 0.951544, 0.412238, 0.977501, 0.604173, 0.963952, 0.604173, 0.963952, 0.604173, 0.950404, 0.604173, 0.950404, 0.604173, 0.835025, 0.386093, 0.957173, 0.317008, 0.957173, 0.317008, 0.982912, 0.175593, 0.999501, 0.113682, 0.990714, 0.111721, 0.96232, 0.252444, 0.999501, 0.113682, 0.854715, 0.411613, 0.854331, 0.620778, 0.854331, 0.620778, 0.854715, 0.411613, 0.854331, 0.620787, 0.854331, 0.620778, 0.833641, 0.629332, 0.833641, 0.629332, 0.782853, 0.612664, 0.854553, 0.613072, 0.773271, 0.612664, 0.854715, 0.411613, 0.773271, 0.612664, 0.773271, 0.612664, 0.827268, 0.623551, 0.773271, 0.614997, 0.827268, 0.614997, 0.827268, 0.385305, 0.773271, 0.385305, 0.827268, 0.500715, 0.827268, 0.614997, 0.773271, 0.385305, 0.827268, 0.385305, 0.773271, 0.614997, 0.773271, 0.623551, 0.773271, 0.377879, 0.773271, 0.387579, 0.827268, 0.377879, 0.773271, 0.500715, 0.810732, 0.59397, 0.812437, 0.610022, 0.802563, 0.602755, 0.820606, 0.601237, 0.821669, 0.593224, 0.821669, 0.611463, 0.821669, 0.593224, 0.821669, 0.611463, 0.799896, 0.611463, 0.799896, 0.593224, 0.799896, 0.611463, 0.799896, 0.593224, 0.810732, 0.59397, 0.802563, 0.602755, 0.812437, 0.610022, 0.820606, 0.601237, 0.810731, 0.556808, 0.812437, 0.57286, 0.802563, 0.565593, 0.820606, 0.564075, 0.821669, 0.556062, 0.821669, 0.574301, 0.821669, 0.556062, 0.821669, 0.574301, 0.799896, 0.574301, 0.799896, 0.556062, 0.799896, 0.574301, 0.799896, 0.556062, 0.810731, 0.556808, 0.802562, 0.565593, 0.812437, 0.57286, 0.820606, 0.564075, 0.810732, 0.515195, 0.812437, 0.531247, 0.802563, 0.52398, 0.820606, 0.522462, 0.821669, 0.514449, 0.821669, 0.532688, 0.821669, 0.514449, 0.821669, 0.532688, 0.799896, 0.532688, 0.799896, 0.514449, 0.799896, 0.532688, 0.799896, 0.514449, 0.810732, 0.515195, 0.802563, 0.52398, 0.812437, 0.531247, 0.820606, 0.522462, 0.810731, 0.47167, 0.812437, 0.487722, 0.802562, 0.480454, 0.820606, 0.478937, 0.821669, 0.470923, 0.821669, 0.489162, 0.821669, 0.470923, 0.821669, 0.489162, 0.799896, 0.489162, 0.799896, 0.470923, 0.799896, 0.489162, 0.799896, 0.470923, 0.810731, 0.47167, 0.802562, 0.480454, 0.812437, 0.487722, 0.820606, 0.478937, 0.810732, 0.431202, 0.812437, 0.447254, 0.802563, 0.439987, 0.820606, 0.438469, 0.821669, 0.430456, 0.821669, 0.448695, 0.821669, 0.430456, 0.821669, 0.448695, 0.799896, 0.448695, 0.799896, 0.430456, 0.799896, 0.448695, 0.799896, 0.430456, 0.810732, 0.431202, 0.802563, 0.439987, 0.812437, 0.447254, 0.820606, 0.438469, 0.810732, 0.393769, 0.812437, 0.40982, 0.802563, 0.402553, 0.820606, 0.401036, 0.821669, 0.393022, 0.821669, 0.411261, 0.821669, 0.393022, 0.821669, 0.411261, 0.799896, 0.411261, 0.799896, 0.393022, 0.799896, 0.411261, 0.799896, 0.393022, 0.810732, 0.393769, 0.802563, 0.402553, 0.812437, 0.40982, 0.820606, 0.401036, 0.356369, 0.942632, 0.229689, 0.942632, 0.229689, 0.958319, 0.229689, 0.956365, 0.229689, 0.956365, 0.356369, 0.956365, 0.356369, 0.956365, 0.356369, 0.958319, 0.229689, 0.958319, 0.229689, 0.942632, 0.356369, 0.958319, 0.356369, 0.942632, 0.604021, 0.941561, 0.477341, 0.941561, 0.477341, 0.957248, 0.477341, 0.955294, 0.477341, 0.955294, 0.604021, 0.955294, 0.604021, 0.955294, 0.604021, 0.957248, 0.477341, 0.957248, 0.477341, 0.941561, 0.604021, 0.957248, 0.604021, 0.941561, 0.735208, 0.64485, 0.735208, 0.826617, 0.75753, 0.826617, 0.754749, 0.826617, 0.754749, 0.826617, 0.754749, 0.64485, 0.754749, 0.64485, 0.75753, 0.64485, 0.75753, 0.826617, 0.735208, 0.826617, 0.75753, 0.64485, 0.735208, 0.64485, 0.735433, 0.173745, 0.735433, 0.355512, 0.757755, 0.355512, 0.754974, 0.355512, 0.754974, 0.355512, 0.754974, 0.173745, 0.754974, 0.173745, 0.757755, 0.173745, 0.757755, 0.355512, 0.735433, 0.355512, 0.757755, 0.173745, 0.735433, 0.173745, 0.472787, 0.055575, 0.599467, 0.055575, 0.599467, 0.0398875, 0.599467, 0.0418422, 0.599467, 0.0418422, 0.472787, 0.0418421, 0.472787, 0.0418421, 0.472787, 0.0398874, 0.599467, 0.0398875, 0.599467, 0.055575, 0.472787, 0.0398874, 0.472787, 0.055575, 0.232431, 0.056646, 0.359111, 0.056646, 0.359111, 0.0409586, 0.359111, 0.0429132, 0.359111, 0.0429132, 0.232431, 0.0429132, 0.232431, 0.0429132, 0.232431, 0.0409585, 0.359111, 0.0409586, 0.359111, 0.056646, 0.232431, 0.0409585, 0.232431, 0.056646, 0.0966852, 0.360157, 0.0966853, 0.178389, 0.0743636, 0.178389, 0.0771449, 0.178389, 0.0771449, 0.178389, 0.0771449, 0.360157, 0.0771449, 0.360157, 0.0743636, 0.360157, 0.0743636, 0.178389, 0.0966853, 0.178389, 0.0743636, 0.360157, 0.0966852, 0.360157, 0.0977715, 0.823543, 0.0977715, 0.641776, 0.0754499, 0.641776, 0.0782311, 0.641776, 0.0782311, 0.641776, 0.0782311, 0.823543, 0.0782311, 0.823543, 0.0754498, 0.823543, 0.0754499, 0.641776, 0.0977715, 0.641776, 0.0754498, 0.823543, 0.0977715, 0.823543, 0.0271116, 0.591246, 0.0271117, 0.409478, 0.0047901, 0.409478, 0.00757134, 0.409478, 0.00757134, 0.409478, 0.00757134, 0.591246, 0.00757134, 0.591246, 0.00479007, 0.591246, 0.0047901, 0.409478, 0.0271117, 0.409478, 0.00479007, 0.591246, 0.0271116, 0.591246, 0.750221, 0.844736, 0.750221, 0.953673, 0.627766, 0.953673, 0.627766, 0.844736, 0.750221, 0.844736, 0.690875, 0.861148, 0.627766, 0.844736, 0.715537, 0.868276, 0.730779, 0.886939, 0.750221, 0.953673, 0.730779, 0.910008, 0.715537, 0.92867, 0.690875, 0.935799, 0.650971, 0.886939, 0.627766, 0.953673, 0.666213, 0.868276, 0.650971, 0.910008, 0.666213, 0.92867, 0.715537, 0.868276, 0.666213, 0.868276, 0.690875, 0.861148, 0.730779, 0.886939, 0.650971, 0.886939, 0.730779, 0.910008, 0.650971, 0.910008, 0.715537, 0.92867, 0.666213, 0.92867, 0.690875, 0.935799, 0.69251, 0.898364, 0.690205, 0.898364, 0.690205, 0.898364, 0.69251, 0.898364, 0.69251, 0.898364, 0.690205, 0.900414, 0.69251, 0.900414, 0.69251, 0.900414, 0.690205, 0.900414, 0.727346, 0.889298, 0.69251, 0.898364, 0.69251, 0.898364, 0.728734, 0.888936, 0.200509, 0.846982, 0.200509, 0.95592, 0.0780543, 0.95592, 0.0780543, 0.846982, 0.200509, 0.846982, 0.141163, 0.863394, 0.0780543, 0.846982, 0.165825, 0.870523, 0.181067, 0.889186, 0.200509, 0.95592, 0.181067, 0.912254, 0.165825, 0.930917, 0.141163, 0.938046, 0.101259, 0.889186, 0.0780543, 0.95592, 0.116501, 0.870523, 0.101259, 0.912254, 0.116501, 0.930917, 0.165825, 0.870523, 0.116501, 0.870523, 0.141163, 0.863394, 0.181067, 0.889186, 0.101259, 0.889186, 0.181067, 0.912254, 0.101259, 0.912254, 0.165825, 0.930917, 0.116501, 0.930917, 0.141163, 0.938046, 0.142798, 0.900611, 0.140493, 0.900611, 0.140493, 0.900611, 0.142798, 0.900611, 0.142798, 0.900611, 0.140493, 0.902661, 0.142798, 0.902661, 0.142798, 0.902661, 0.140493, 0.902661, 0.177634, 0.891544, 0.142798, 0.900611, 0.142798, 0.900611, 0.179022, 0.891183, 0.200764, 0.0449727, 0.200764, 0.15391, 0.0783093, 0.15391, 0.0783093, 0.0449727, 0.200764, 0.0449727, 0.141418, 0.0613846, 0.0783093, 0.0449727, 0.16608, 0.0685132, 0.181322, 0.087176, 0.200764, 0.15391, 0.181322, 0.110245, 0.16608, 0.128908, 0.141418, 0.136036, 0.101514, 0.087176, 0.0783093, 0.15391, 0.116756, 0.068513, 0.101514, 0.110245, 0.116756, 0.128907, 0.16608, 0.0685132, 0.116756, 0.068513, 0.141418, 0.0613846, 0.181322, 0.087176, 0.101514, 0.087176, 0.181322, 0.110245, 0.101514, 0.110245, 0.16608, 0.128908, 0.116756, 0.128907, 0.141418, 0.136036, 0.143053, 0.0986015, 0.140748, 0.0986015, 0.140748, 0.0986015, 0.143053, 0.0986015, 0.143053, 0.0986015, 0.140748, 0.100652, 0.143053, 0.100652, 0.143053, 0.100652, 0.140748, 0.100652, 0.177889, 0.0895346, 0.143053, 0.0986015, 0.143053, 0.0986015, 0.179277, 0.0891734, 0.748737, 0.0429524, 0.748737, 0.15189, 0.626282, 0.15189, 0.626282, 0.0429524, 0.748737, 0.0429524, 0.689391, 0.0593643, 0.626282, 0.0429524, 0.714053, 0.0664928, 0.729295, 0.0851557, 0.748737, 0.15189, 0.729295, 0.108224, 0.714053, 0.126887, 0.689391, 0.134016, 0.649487, 0.0851557, 0.626282, 0.15189, 0.664729, 0.0664928, 0.649487, 0.108224, 0.664729, 0.126887, 0.714053, 0.0664928, 0.664729, 0.0664928, 0.689391, 0.0593643, 0.729295, 0.0851557, 0.649487, 0.0851557, 0.729295, 0.108224, 0.649487, 0.108224, 0.714053, 0.126887, 0.664729, 0.126887, 0.689391, 0.134016, 0.691026, 0.0965811, 0.688721, 0.0965811, 0.688721, 0.0965811, 0.691026, 0.0965811, 0.691026, 0.0965811, 0.688721, 0.0986311, 0.691026, 0.0986311, 0.691026, 0.0986311, 0.688721, 0.0986311, 0.725862, 0.0875144, 0.691026, 0.0965811, 0.691026, 0.0965811, 0.72725, 0.0871532, 0.0756115, 0.998373, 0.198414, 0.974371, 0.0756115, 0.974371, 0.198414, 0.998373, 0.198414, 0.998373, 0.0756115, 0.998373, 0.0756115, 0.974371, 0.198414, 0.974371, 0.0535204, 0.974371, 0.0535204, 0.974371, 0.220823, 0.974371, 0.220823, 0.974371, 0.0265407, 0.847237, 0.0535205, 0.954752, 0.0535205, 0.847237, 0.0265406, 0.954752, 0.0265406, 0.954752, 0.0265407, 0.847237, 0.0535205, 0.847237, 0.0535205, 0.954752, 0.0535206, 0.827896, 0.0535206, 0.827896, 0.0659368, 0.949411, 0.0659368, 0.965344, 0.0659368, 0.949411, 0.0659368, 0.965344, 0.0535204, 0.853382, 0.0535204, 0.949411, 0.0867893, 0.965344, 0.193189, 0.974371, 0.0867893, 0.974371, 0.193189, 0.965344, 0.211039, 0.965344, 0.0659369, 0.853382, 0.0659369, 0.836259, 0.0793049, 0.827896, 0.179789, 0.836259, 0.0793049, 0.836259, 0.179789, 0.827896, 0.211039, 0.941095, 0.220823, 0.941095, 0.211039, 0.853771, 0.211039, 0.836259, 0.220823, 0.853771, 0.0793049, 0.836259, 0.0659369, 0.836259, 0.211039, 0.941095, 0.211039, 0.965344, 0.193189, 0.965344, 0.0659369, 0.853382, 0.0867893, 0.965344, 0.193189, 0.974371, 0.0867893, 0.974371, 0.0535204, 0.949411, 0.0535204, 0.853382, 0.211039, 0.836259, 0.211039, 0.853771, 0.179789, 0.836259, 0.179789, 0.827896, 0.0793049, 0.827896, 0.220823, 0.853771, 0.220823, 0.941095, 0.797942, 0.955846, 0.770962, 0.8466, 0.770962, 0.955846, 0.797942, 0.8466, 0.797942, 0.8466, 0.797942, 0.955846, 0.770962, 0.955846, 0.770962, 0.8466, 0.770962, 0.975499, 0.770962, 0.975499, 0.770962, 0.826664, 0.770962, 0.826664, 0.628052, 0.9995, 0.748908, 0.975499, 0.628052, 0.975499, 0.748908, 0.9995, 0.748908, 0.9995, 0.628052, 0.9995, 0.628052, 0.975499, 0.748908, 0.975499, 0.606311, 0.975499, 0.606311, 0.975499, 0.742904, 0.964453, 0.760815, 0.964453, 0.742904, 0.964453, 0.760815, 0.964453, 0.63496, 0.975499, 0.742904, 0.975499, 0.760815, 0.945902, 0.770962, 0.851248, 0.770962, 0.945902, 0.760815, 0.851248, 0.760815, 0.835368, 0.63496, 0.964453, 0.615713, 0.964453, 0.606311, 0.952561, 0.615713, 0.863169, 0.615713, 0.952561, 0.606311, 0.863169, 0.733556, 0.835368, 0.733556, 0.826664, 0.635397, 0.835368, 0.615713, 0.835368, 0.635397, 0.826664, 0.615713, 0.952561, 0.615713, 0.964453, 0.733556, 0.835368, 0.760815, 0.835368, 0.760815, 0.851248, 0.63496, 0.964453, 0.760815, 0.945902, 0.770962, 0.851248, 0.770962, 0.945902, 0.742904, 0.975499, 0.63496, 0.975499, 0.615713, 0.835368, 0.635397, 0.835368, 0.615713, 0.863169, 0.606311, 0.863169, 0.606311, 0.952561, 0.635397, 0.826664, 0.733556, 0.826664, 0.0332787, 0.0441537, 0.0602584, 0.1534, 0.0602585, 0.0441537, 0.0332786, 0.1534, 0.0332786, 0.1534, 0.0332787, 0.0441537, 0.0602585, 0.0441537, 0.0602584, 0.1534, 0.0602585, 0.0245012, 0.0602585, 0.0245012, 0.0602584, 0.173336, 0.0602584, 0.173336, 0.203168, 0.000499606, 0.0823123, 0.0245012, 0.203168, 0.0245013, 0.0823123, 0.000499606, 0.0823123, 0.000499606, 0.203168, 0.000499606, 0.203168, 0.0245013, 0.0823123, 0.0245012, 0.224909, 0.0245013, 0.224909, 0.0245013, 0.0883158, 0.0355469, 0.0704052, 0.0355469, 0.0883158, 0.0355469, 0.0704052, 0.0355469, 0.19626, 0.0245012, 0.0883158, 0.0245012, 0.0704052, 0.0540975, 0.0602585, 0.148752, 0.0602585, 0.0540975, 0.0704052, 0.148752, 0.0704052, 0.164632, 0.19626, 0.035547, 0.215507, 0.035547, 0.224909, 0.0474393, 0.215507, 0.136831, 0.215507, 0.0474393, 0.224909, 0.136831, 0.0976639, 0.164632, 0.0976639, 0.173336, 0.195823, 0.164632, 0.215507, 0.164632, 0.195823, 0.173336, 0.215507, 0.0474393, 0.215507, 0.035547, 0.0976639, 0.164632, 0.0704052, 0.164632, 0.0704052, 0.148752, 0.19626, 0.035547, 0.0704052, 0.0540975, 0.0602585, 0.148752, 0.0602585, 0.0540975, 0.0883158, 0.0245012, 0.19626, 0.0245012, 0.215507, 0.164632, 0.195823, 0.164632, 0.215507, 0.136831, 0.224909, 0.136831, 0.224909, 0.0474393, 0.195823, 0.173336, 0.0976639, 0.173336, 0.75118, 0.000499606, 0.628377, 0.0245013, 0.75118, 0.0245013, 0.628377, 0.000499606, 0.628377, 0.000499606, 0.75118, 0.000499606, 0.75118, 0.0245013, 0.628377, 0.0245013, 0.773271, 0.0245013, 0.773271, 0.0245013, 0.605968, 0.0245013, 0.605968, 0.0245013, 0.800251, 0.151636, 0.773271, 0.0441206, 0.773271, 0.151636, 0.800251, 0.0441207, 0.800251, 0.0441207, 0.800251, 0.151636, 0.773271, 0.151636, 0.773271, 0.0441206, 0.773271, 0.170977, 0.760854, 0.0494615, 0.760854, 0.033528, 0.760854, 0.0494615, 0.760854, 0.033528, 0.773271, 0.14549, 0.773271, 0.0494615, 0.740002, 0.033528, 0.633603, 0.0245013, 0.740002, 0.0245013, 0.633603, 0.033528, 0.615752, 0.033528, 0.760854, 0.14549, 0.760854, 0.162613, 0.747486, 0.170977, 0.647003, 0.162613, 0.747486, 0.162613, 0.647003, 0.170977, 0.615752, 0.0577776, 0.605968, 0.0577776, 0.615752, 0.145102, 0.615752, 0.162613, 0.605968, 0.145102, 0.747486, 0.162613, 0.760854, 0.162613, 0.615752, 0.0577776, 0.615752, 0.033528, 0.633603, 0.033528, 0.760854, 0.14549, 0.740002, 0.033528, 0.633603, 0.0245013, 0.740002, 0.0245013, 0.773271, 0.0494615, 0.773271, 0.14549, 0.615752, 0.162613, 0.615752, 0.145102, 0.647003, 0.162613, 0.647003, 0.170977, 0.747486, 0.170977, 0.605968, 0.145102, 0.605968, 0.0577776]; + indices = new [0, 1, 2, 1, 0, 3, 4, 5, 6, 5, 4, 7, 8, 7, 4, 5, 9, 3, 9, 5, 10, 11, 7, 8, 7, 10, 5, 10, 7, 11, 12, 13, 14, 13, 12, 15, 16, 11, 8, 17, 18, 19, 18, 17, 14, 8, 20, 21, 22, 23, 24, 23, 22, 25, 26, 25, 22, 25, 26, 18, 27, 8, 21, 19, 26, 28, 26, 19, 18, 6, 3, 0, 3, 6, 5, 25, 29, 23, 29, 25, 13, 15, 29, 13, 29, 15, 30, 28, 16, 8, 31, 22, 32, 22, 31, 26, 33, 34, 35, 34, 33, 36, 37, 15, 12, 15, 37, 38, 8, 39, 40, 32, 24, 41, 24, 32, 22, 42, 21, 43, 21, 42, 27, 44, 45, 46, 45, 44, 47, 48, 6, 0, 6, 48, 49, 37, 33, 38, 33, 37, 42, 19, 28, 8, 17, 19, 8, 37, 50, 51, 50, 37, 12, 52, 0, 2, 0, 52, 48, 39, 6, 49, 6, 39, 4, 33, 43, 36, 43, 33, 42, 28, 31, 16, 31, 28, 26, 51, 8, 27, 12, 17, 50, 17, 12, 14, 8, 53, 20, 54, 40, 55, 40, 54, 56, 57, 58, 59, 58, 57, 60, 40, 49, 55, 49, 40, 39, 57, 47, 60, 47, 57, 45, 58, 49, 48, 49, 58, 55, 61, 53, 62, 53, 61, 20, 61, 47, 44, 47, 61, 62, 8, 56, 53, 60, 62, 54, 62, 60, 47, 42, 51, 27, 51, 42, 37, 38, 35, 63, 35, 38, 33, 17, 8, 50, 38, 30, 15, 30, 38, 63, 8, 4, 39, 62, 56, 54, 56, 62, 53, 43, 44, 36, 44, 43, 61, 59, 48, 52, 48, 59, 58, 43, 20, 61, 20, 43, 21, 36, 46, 34, 46, 36, 44, 60, 55, 58, 55, 60, 54, 8, 40, 56, 50, 8, 51, 18, 13, 25, 13, 18, 14, 3, 64, 1, 64, 3, 9, 9, 41, 64, 41, 9, 32, 10, 32, 9, 32, 10, 31, 11, 31, 10, 31, 11, 16, 65, 506, 507, 506, 65, 66, 168, 66, 65, 66, 168, 67, 505, 506, 68, 506, 505, 69, 71, 70, 72, 70, 71, 161, 74, 73, 154, 73, 74, 75, 76, 155, 175, 155, 76, 77, 1091, 156, 1090, 156, 1091, 176, 78, 1100, 79, 1100, 78, 163, 80, 162, 164, 162, 80, 81, 80, 167, 81, 167, 80, 82, 83, 505, 85, 83, 69, 505, 83, 84, 69, 166, 83, 85, 83, 166, 228, 86, 165, 87, 165, 86, 88, 157, 89, 159, 89, 157, 90, 158, 91, 160, 91, 158, 92, 97, 96, 98, 96, 97, 99, 101, 104, 111, 106, 97, 107, 106, 99, 97, 112, 99, 106, 104, 99, 112, 101, 99, 104, 101, 236, 99, 236, 108, 109, 236, 110, 108, 101, 110, 236, 153, 115, 116, 115, 153, 235, 137, 119, 118, 119, 137, 143, 120, 121, 123, 121, 120, 122, 147, 125, 124, 125, 147, 146, 126, 121, 122, 121, 126, 125, 127, 128, 130, 128, 127, 129, 135, 128, 131, 128, 135, 130, 133, 128, 129, 128, 133, 131, 134, 101, 102, 101, 134, 151, 136, 96, 137, 96, 136, 98, 137, 107, 136, 107, 137, 106, 138, 143, 139, 143, 138, 140, 138, 117, 140, 117, 138, 141, 142, 117, 141, 117, 142, 119, 93, 143, 95, 143, 93, 139, 143, 96, 95, 96, 143, 137, 103, 118, 144, 118, 103, 112, 142, 146, 119, 146, 142, 145, 147, 119, 146, 119, 147, 118, 118, 148, 144, 148, 118, 147, 148, 104, 105, 104, 148, 147, 120, 146, 145, 146, 120, 123, 113, 132, 114, 132, 113, 149, 115, 133, 116, 133, 115, 131, 110, 149, 108, 149, 110, 132, 132, 115, 114, 115, 132, 131, 100, 124, 150, 124, 100, 111, 135, 126, 152, 126, 135, 125, 151, 125, 135, 125, 151, 124, 124, 134, 150, 134, 124, 151, 127, 135, 152, 135, 127, 130, 73, 153, 154, 153, 73, 235, 156, 155, 77, 155, 156, 176, 158, 157, 159, 157, 158, 160, 237, 71, 94, 71, 237, 161, 78, 162, 163, 162, 78, 164, 166, 165, 228, 165, 166, 87, 167, 169, 170, 167, 65, 169, 167, 168, 65, 167, 82, 168, 507, 84, 173, 507, 172, 84, 507, 505, 172, 507, 171, 505, 163, 1088, 1100, 184, 183, 179, 183, 184, 182, 185, 180, 186, 180, 185, 177, 180, 187, 186, 187, 180, 184, 187, 179, 188, 179, 187, 184, 185, 179, 177, 179, 185, 188, 192, 197, 198, 197, 192, 196, 197, 191, 199, 191, 197, 196, 200, 191, 189, 191, 200, 199, 200, 192, 198, 192, 200, 189, 202, 201, 203, 201, 202, 204, 182, 202, 183, 202, 182, 204, 178, 202, 203, 202, 178, 183, 178, 201, 181, 201, 178, 203, 201, 182, 181, 182, 201, 204, 206, 205, 207, 205, 206, 208, 194, 206, 195, 206, 194, 208, 190, 206, 207, 206, 190, 195, 190, 205, 193, 205, 190, 207, 205, 194, 193, 194, 205, 208, 210, 209, 211, 209, 210, 212, 213, 209, 215, 209, 213, 214, 213, 216, 217, 216, 213, 215, 216, 218, 217, 218, 216, 219, 218, 220, 221, 220, 218, 219, 222, 220, 212, 220, 222, 221, 222, 210, 223, 210, 222, 212, 224, 210, 211, 210, 224, 223, 224, 209, 214, 209, 224, 211, 220, 216, 215, 216, 220, 219, 209, 220, 215, 220, 209, 212, 160, 161, 298, 161, 238, 70, 160, 238, 161, 160, 91, 238, 251, 249, 250, 249, 251, 248, 242, 252, 244, 252, 225, 253, 242, 225, 252, 242, 232, 225, 242, 230, 232, 230, 242, 251, 0xFF, 251, 250, 0xFF, 230, 251, 230, 254, 227, 0xFF, 254, 230, 0x0101, 0x0100, 258, 0x0100, 0x0101, 259, 0x0101, 252, 253, 252, 0x0101, 260, 252, 243, 244, 243, 252, 260, 262, 261, 263, 261, 262, 264, 246, 267, 268, 246, 265, 267, 246, 266, 265, 269, 247, 270, 269, 261, 247, 269, 263, 261, 261, 248, 247, 248, 261, 264, 269, 268, 267, 268, 269, 270, 268, 247, 246, 247, 268, 270, 254, 271, 272, 271, 254, 0xFF, 265, 273, 259, 273, 265, 266, 0x0100, 245, 274, 0x0100, 273, 245, 0x0100, 259, 273, 243, 258, 275, 243, 0x0101, 258, 243, 260, 0x0101, 273, 246, 245, 246, 273, 266, 275, 277, 278, 275, 276, 277, 258, 276, 275, 0x0100, 276, 258, 0x0100, 279, 276, 278, 274, 275, 279, 274, 278, 0x0100, 274, 279, 275, 245, 243, 245, 275, 274, 281, 280, 282, 280, 281, 283, 276, 281, 282, 281, 276, 279, 276, 280, 277, 280, 276, 282, 280, 278, 277, 278, 280, 283, 278, 281, 279, 281, 278, 283, 284, 249, 285, 284, 271, 249, 284, 272, 271, 248, 286, 287, 248, 262, 286, 248, 264, 262, 271, 250, 249, 250, 271, 0xFF, 291, 285, 290, 285, 291, 284, 287, 249, 248, 249, 287, 285, 293, 292, 294, 292, 293, 295, 290, 293, 291, 293, 290, 295, 288, 293, 294, 293, 288, 291, 288, 292, 289, 292, 288, 294, 292, 290, 289, 290, 292, 295, 262, 284, 286, 284, 262, 272, 259, 226, 265, 225, 0x0101, 253, 226, 0x0101, 225, 259, 0x0101, 226, 272, 227, 254, 229, 262, 263, 227, 262, 229, 272, 262, 227, 269, 229, 263, 269, 226, 229, 269, 265, 226, 269, 267, 265, 240, 296, 297, 296, 240, 239, 299, 298, 300, 298, 299, 301, 302, 234, 233, 234, 302, 303, 305, 304, 306, 304, 305, 241, 296, 298, 301, 298, 296, 239, 299, 240, 297, 240, 299, 300, 304, 234, 303, 234, 304, 241, 302, 305, 306, 305, 302, 233, 155, 233, 73, 174, 73, 75, 174, 155, 73, 174, 175, 155, 157, 239, 165, 239, 160, 298, 157, 160, 239, 83, 173, 84, 173, 83, 227, 90, 165, 231, 165, 90, 157, 162, 225, 232, 235, 73, 186, 241, 230, 240, 230, 241, 232, 241, 300, 234, 300, 241, 240, 300, 298, 161, 198, 221, 222, 198, 218, 221, 198, 237, 218, 217, 214, 213, 217, 187, 214, 217, 235, 187, 162, 305, 163, 162, 241, 305, 162, 232, 241, 234, 223, 224, 223, 234, 300, 197, 300, 161, 300, 197, 199, 234, 73, 233, 234, 186, 73, 186, 234, 185, 99, 218, 237, 217, 236, 235, 223, 198, 222, 198, 223, 200, 197, 237, 198, 237, 197, 161, 223, 199, 200, 199, 223, 300, 101, 100, 102, 100, 101, 111, 104, 103, 105, 103, 104, 112, 99, 217, 218, 217, 99, 236, 192, 194, 196, 194, 192, 193, 196, 195, 191, 195, 196, 194, 191, 190, 189, 190, 191, 195, 189, 193, 192, 193, 189, 190, 188, 214, 187, 214, 188, 224, 185, 224, 188, 224, 185, 234, 81, 225, 162, 170, 81, 167, 81, 170, 225, 230, 239, 240, 239, 230, 165, 173, 225, 170, 173, 226, 225, 173, 229, 226, 173, 227, 229, 288, 284, 291, 284, 288, 286, 287, 288, 289, 288, 287, 286, 287, 290, 285, 290, 287, 289, 228, 227, 83, 227, 228, 230, 165, 230, 228, 305, 155, 176, 155, 305, 233, 305, 176, 163, 246, 242, 245, 246, 251, 242, 251, 246, 247, 248, 251, 247, 243, 242, 244, 242, 243, 245, 231, 165, 88, 1088, 176, 1091, 176, 1088, 163, 179, 178, 177, 178, 179, 183, 180, 182, 184, 182, 180, 181, 180, 178, 181, 178, 180, 177, 235, 186, 187, 310, 308, 309, 313, 314, 311, 313, 315, 314, 313, 316, 315, 313, 317, 316, 318, 319, 320, 318, 321, 319, 318, 322, 321, 322, 325, 323, 325, 326, 323, 325, 327, 326, 325, 328, 327, 329, 332, 331, 336, 335, 337, 335, 336, 330, 330, 338, 331, 338, 330, 336, 329, 339, 332, 340, 378, 341, 340, 342, 378, 340, 502, 342, 339, 502, 340, 329, 502, 339, 347, 346, 345, 346, 347, 348, 345, 508, 349, 345, 350, 508, 345, 500, 350, 345, 343, 500, 352, 345, 349, 345, 352, 347, 329, 342, 502, 329, 378, 342, 378, 331, 338, 329, 331, 378, 343, 350, 500, 343, 508, 350, 508, 344, 353, 343, 344, 508, 498, 497, 351, 497, 498, 508, 508, 498, 378, 378, 498, 499, 351, 354, 355, 351, 356, 354, 351, 508, 356, 508, 351, 497, 354, 316, 355, 316, 354, 357, 501, 326, 327, 317, 355, 316, 326, 355, 317, 326, 351, 355, 501, 351, 326, 501, 498, 351, 317, 358, 326, 358, 317, 359, 356, 417, 354, 417, 356, 360, 362, 361, 364, 361, 362, 363, 366, 365, 368, 365, 366, 367, 370, 369, 372, 369, 370, 371, 374, 373, 376, 373, 374, 375, 341, 377, 340, 377, 341, 378, 365, 379, 368, 365, 377, 379, 365, 340, 377, 379, 501, 327, 501, 379, 377, 501, 499, 498, 499, 501, 378, 501, 377, 378, 381, 380, 383, 380, 381, 382, 361, 381, 383, 381, 361, 384, 361, 392, 393, 392, 361, 383, 383, 394, 390, 394, 383, 380, 396, 395, 398, 395, 396, 397, 399, 396, 400, 397, 402, 395, 402, 397, 401, 403, 401, 399, 403, 402, 401, 403, 404, 402, 405, 395, 406, 405, 398, 395, 405, 407, 398, 402, 409, 408, 409, 402, 364, 410, 405, 411, 410, 407, 405, 410, 412, 407, 409, 416, 414, 416, 415, 417, 409, 415, 416, 409, 364, 415, 405, 414, 411, 414, 405, 409, 406, 409, 405, 409, 406, 408, 395, 408, 406, 408, 395, 402, 318, 419, 422, 419, 318, 320, 421, 423, 420, 423, 421, 424, 368, 423, 424, 368, 426, 423, 425, 327, 328, 425, 379, 327, 426, 379, 425, 368, 379, 426, 373, 427, 429, 427, 373, 428, 434, 435, 436, 434, 433, 435, 430, 431, 432, 433, 431, 430, 434, 431, 433, 432, 439, 440, 437, 504, 503, 439, 504, 437, 432, 504, 439, 432, 431, 504, 371, 443, 369, 443, 371, 441, 365, 447, 446, 447, 365, 448, 448, 442, 450, 442, 448, 445, 365, 339, 340, 365, 451, 339, 365, 446, 451, 446, 440, 439, 440, 446, 447, 448, 440, 447, 440, 448, 432, 446, 437, 451, 437, 446, 439, 448, 430, 432, 430, 448, 450, 442, 430, 450, 430, 442, 433, 442, 435, 433, 435, 442, 444, 443, 435, 444, 435, 443, 436, 503, 438, 339, 339, 333, 332, 333, 339, 438, 318, 425, 328, 425, 318, 422, 318, 325, 322, 325, 318, 328, 452, 421, 418, 452, 453, 421, 452, 454, 453, 452, 455, 454, 455, 457, 454, 457, 455, 458, 421, 459, 424, 459, 421, 456, 368, 460, 366, 460, 459, 462, 368, 459, 460, 368, 424, 459, 376, 463, 374, 455, 466, 458, 466, 455, 467, 370, 441, 371, 441, 370, 468, 468, 469, 441, 469, 468, 470, 471, 466, 467, 466, 471, 472, 366, 445, 367, 445, 366, 460, 474, 473, 476, 473, 474, 475, 324, 319, 321, 319, 324, 476, 307, 474, 312, 474, 307, 309, 477, 476, 478, 476, 477, 474, 482, 359, 317, 323, 326, 488, 359, 488, 358, 488, 359, 482, 482, 487, 488, 487, 482, 483, 483, 486, 487, 486, 483, 479, 479, 485, 486, 485, 479, 481, 481, 484, 485, 484, 481, 480, 480, 478, 484, 478, 480, 477, 344, 360, 353, 344, 417, 360, 344, 416, 417, 352, 348, 347, 348, 352, 489, 412, 348, 489, 412, 346, 348, 412, 410, 346, 335, 504, 337, 335, 503, 504, 335, 334, 503, 333, 503, 334, 503, 333, 438, 461, 369, 449, 369, 461, 372, 461, 445, 460, 445, 461, 449, 453, 457, 462, 457, 453, 454, 453, 459, 456, 459, 453, 462, 419, 423, 426, 423, 419, 420, 419, 425, 422, 425, 419, 426, 364, 393, 413, 393, 364, 361, 415, 354, 417, 415, 357, 354, 415, 392, 357, 413, 392, 415, 392, 413, 393, 399, 387, 403, 387, 399, 388, 404, 363, 362, 363, 404, 385, 403, 385, 404, 385, 403, 387, 411, 416, 410, 416, 411, 414, 410, 344, 346, 344, 410, 416, 390, 490, 389, 490, 390, 394, 391, 310, 315, 310, 391, 491, 389, 491, 391, 491, 389, 490, 315, 311, 314, 311, 315, 310, 386, 492, 384, 492, 386, 493, 384, 382, 381, 382, 384, 492, 434, 427, 428, 427, 434, 436, 429, 443, 441, 443, 427, 436, 427, 443, 429, 471, 463, 464, 463, 471, 452, 372, 468, 370, 468, 466, 472, 372, 466, 468, 372, 458, 466, 470, 373, 469, 373, 470, 376, 471, 465, 472, 465, 471, 464, 400, 388, 399, 388, 400, 494, 380, 382, 492, 388, 493, 386, 493, 388, 496, 490, 394, 380, 486, 485, 484, 484, 478, 476, 488, 487, 486, 326, 358, 488, 479, 483, 482, 480, 481, 479, 474, 477, 480, 480, 312, 474, 312, 480, 479, 309, 475, 474, 388, 494, 496, 397, 399, 401, 399, 397, 396, 373, 375, 428, 464, 376, 465, 376, 464, 463, 468, 376, 470, 468, 465, 376, 468, 472, 465, 461, 458, 372, 458, 462, 457, 461, 462, 458, 461, 460, 462, 364, 413, 415, 364, 404, 362, 404, 364, 402, 387, 386, 384, 386, 387, 388, 385, 387, 384, 385, 361, 363, 361, 385, 384, 315, 389, 391, 389, 315, 316, 392, 390, 389, 390, 392, 383, 392, 316, 357, 316, 392, 389, 310, 307, 311, 307, 310, 309, 330, 334, 335, 334, 330, 333, 331, 333, 330, 333, 331, 332, 323, 321, 322, 321, 323, 324, 421, 420, 419, 418, 419, 320, 419, 418, 421, 453, 456, 421, 476, 473, 319, 455, 471, 467, 471, 455, 452, 369, 444, 442, 444, 369, 443, 442, 449, 369, 449, 442, 445, 448, 367, 445, 367, 448, 365, 429, 469, 373, 469, 429, 441, 310, 491, 490, 492, 495, 380, 492, 496, 495, 492, 493, 496, 495, 490, 380, 495, 310, 490, 495, 308, 310, 339, 437, 503, 437, 339, 451, 486, 323, 488, 323, 486, 324, 324, 484, 476, 484, 324, 486, 482, 317, 313, 479, 313, 312, 313, 479, 482, 344, 345, 346, 345, 344, 343, 311, 312, 313, 312, 311, 307, 169, 507, 509, 507, 169, 65, 521, 515, 522, 515, 521, 0x0200, 0x0200, 511, 513, 511, 0x0200, 521, 522, 0x0202, 524, 0x0202, 522, 515, 519, 515, 518, 515, 519, 0x0202, 520, 513, 517, 513, 520, 0x0200, 517, 0x0202, 519, 0x0202, 517, 513, 523, 519, 518, 525, 511, 521, 511, 525, 516, 522, 516, 525, 516, 522, 524, 524, 513, 511, 513, 524, 0x0202, 517, 510, 520, 517, 523, 510, 523, 517, 519, 515, 523, 518, 510, 515, 0x0200, 515, 510, 523, 510, 0x0200, 520, 524, 511, 516, 521, 522, 525, 526, 541, 538, 541, 526, 529, 528, 538, 539, 538, 528, 526, 529, 540, 541, 540, 529, 527, 528, 540, 527, 540, 528, 539, 530, 531, 533, 531, 530, 532, 534, 535, 537, 535, 534, 536, 531, 534, 533, 534, 531, 536, 530, 535, 532, 535, 530, 537, 537, 533, 534, 533, 537, 530, 542, 557, 554, 557, 542, 545, 544, 554, 555, 554, 544, 542, 545, 556, 557, 556, 545, 543, 544, 556, 543, 556, 544, 555, 546, 547, 549, 547, 546, 548, 550, 551, 553, 551, 550, 552, 547, 550, 549, 550, 547, 552, 546, 551, 548, 551, 546, 553, 553, 549, 550, 549, 553, 546, 558, 573, 570, 573, 558, 561, 560, 570, 571, 570, 560, 558, 561, 572, 573, 572, 561, 559, 560, 572, 559, 572, 560, 571, 562, 563, 565, 563, 562, 564, 566, 567, 569, 567, 566, 568, 563, 566, 565, 566, 563, 568, 562, 567, 564, 567, 562, 569, 569, 565, 566, 565, 569, 562, 574, 589, 586, 589, 574, 577, 576, 586, 587, 586, 576, 574, 577, 588, 589, 588, 577, 575, 576, 588, 575, 588, 576, 587, 578, 579, 581, 579, 578, 580, 582, 583, 585, 583, 582, 584, 579, 582, 581, 582, 579, 584, 578, 583, 580, 583, 578, 585, 585, 581, 582, 581, 585, 578, 590, 605, 602, 605, 590, 593, 592, 602, 603, 602, 592, 590, 593, 604, 605, 604, 593, 591, 592, 604, 591, 604, 592, 603, 594, 595, 597, 595, 594, 596, 598, 599, 601, 599, 598, 600, 595, 598, 597, 598, 595, 600, 594, 599, 596, 599, 594, 601, 601, 597, 598, 597, 601, 594, 606, 621, 618, 621, 606, 609, 608, 618, 619, 618, 608, 606, 609, 620, 621, 620, 609, 607, 608, 620, 607, 620, 608, 619, 610, 611, 613, 611, 610, 612, 614, 615, 617, 615, 614, 616, 611, 614, 613, 614, 611, 616, 610, 615, 612, 615, 610, 617, 617, 613, 614, 613, 617, 610, 106, 118, 112, 118, 106, 137, 104, 124, 111, 124, 104, 147, 151, 110, 101, 110, 151, 132, 151, 131, 132, 131, 151, 135, 121, 146, 123, 146, 121, 125, 117, 143, 140, 143, 117, 119, 96, 237, 95, 237, 96, 99, 93, 237, 94, 237, 93, 95, 113, 236, 109, 236, 113, 114, 236, 115, 235, 115, 236, 114, 622, 631, 623, 631, 622, 633, 626, 631, 625, 631, 626, 623, 632, 627, 629, 627, 632, 633, 625, 628, 626, 628, 625, 627, 624, 632, 629, 632, 624, 630, 624, 627, 625, 627, 624, 629, 622, 627, 633, 627, 622, 628, 624, 631, 630, 631, 624, 625, 634, 643, 635, 643, 634, 645, 638, 643, 637, 643, 638, 635, 644, 639, 641, 639, 644, 645, 637, 640, 638, 640, 637, 639, 636, 644, 641, 644, 636, 642, 636, 639, 637, 639, 636, 641, 634, 639, 645, 639, 634, 640, 636, 643, 642, 643, 636, 637, 646, 655, 647, 655, 646, 657, 650, 655, 649, 655, 650, 647, 656, 651, 653, 651, 656, 657, 649, 652, 650, 652, 649, 651, 648, 656, 653, 656, 648, 654, 648, 651, 649, 651, 648, 653, 646, 651, 657, 651, 646, 652, 648, 655, 654, 655, 648, 649, 658, 667, 659, 667, 658, 669, 662, 667, 661, 667, 662, 659, 668, 663, 665, 663, 668, 669, 661, 664, 662, 664, 661, 663, 660, 668, 665, 668, 660, 666, 660, 663, 661, 663, 660, 665, 658, 663, 669, 663, 658, 664, 660, 667, 666, 667, 660, 661, 670, 679, 671, 679, 670, 681, 674, 679, 673, 679, 674, 671, 680, 675, 677, 675, 680, 681, 673, 676, 674, 676, 673, 675, 672, 680, 677, 680, 672, 678, 672, 675, 673, 675, 672, 677, 670, 675, 681, 675, 670, 676, 672, 679, 678, 679, 672, 673, 682, 691, 683, 691, 682, 693, 686, 691, 685, 691, 686, 683, 692, 687, 689, 687, 692, 693, 685, 688, 686, 688, 685, 687, 684, 692, 689, 692, 684, 690, 684, 687, 685, 687, 684, 689, 682, 687, 693, 687, 682, 688, 684, 691, 690, 691, 684, 685, 694, 703, 695, 703, 694, 705, 698, 703, 697, 703, 698, 695, 704, 699, 701, 699, 704, 705, 697, 700, 698, 700, 697, 699, 696, 704, 701, 704, 696, 702, 696, 699, 697, 699, 696, 701, 694, 699, 705, 699, 694, 700, 696, 703, 702, 703, 696, 697, 706, 715, 707, 715, 706, 717, 710, 715, 709, 715, 710, 707, 716, 711, 713, 711, 716, 717, 709, 712, 710, 712, 709, 711, 708, 716, 713, 716, 708, 714, 708, 711, 709, 711, 708, 713, 706, 711, 717, 711, 706, 712, 708, 715, 714, 715, 708, 709, 718, 727, 719, 727, 718, 729, 722, 727, 721, 727, 722, 719, 728, 723, 725, 723, 728, 729, 721, 724, 722, 724, 721, 723, 720, 728, 725, 728, 720, 726, 720, 723, 721, 723, 720, 725, 718, 723, 729, 723, 718, 724, 720, 727, 726, 727, 720, 721, 630, 633, 632, 633, 630, 631, 642, 645, 644, 645, 642, 643, 654, 657, 656, 657, 654, 655, 666, 669, 668, 669, 666, 667, 678, 681, 680, 681, 678, 679, 690, 693, 692, 693, 690, 691, 702, 705, 704, 705, 702, 703, 714, 717, 716, 717, 714, 715, 726, 729, 728, 729, 726, 727, 734, 737, 735, 734, 738, 737, 739, 738, 734, 739, 740, 738, 739, 741, 740, 739, 742, 741, 744, 742, 739, 744, 747, 742, 744, 746, 747, 744, 743, 746, 735, 736, 734, 745, 736, 735, 743, 736, 745, 744, 736, 743, 732, 736, 744, 736, 732, 733, 736, 730, 734, 730, 736, 733, 730, 739, 734, 739, 730, 731, 732, 739, 731, 739, 732, 744, 756, 755, 757, 748, 749, 750, 751, 749, 748, 751, 752, 749, 753, 752, 751, 753, 754, 752, 755, 754, 753, 756, 754, 755, 747, 757, 742, 757, 747, 756, 747, 754, 756, 754, 747, 746, 746, 752, 754, 752, 746, 743, 743, 749, 752, 749, 743, 745, 749, 735, 750, 735, 749, 745, 750, 737, 748, 737, 750, 735, 737, 751, 748, 751, 737, 738, 738, 753, 751, 753, 738, 740, 740, 755, 753, 755, 740, 741, 742, 755, 741, 755, 742, 757, 758, 761, 762, 758, 759, 761, 758, 760, 759, 759, 763, 766, 763, 759, 760, 758, 763, 760, 763, 758, 764, 762, 764, 758, 762, 765, 764, 762, 761, 765, 763, 765, 766, 765, 763, 764, 759, 765, 761, 765, 759, 766, 0x0300, 767, 769, 767, 0x0300, 770, 775, 778, 776, 775, 779, 778, 780, 779, 775, 780, 781, 779, 780, 782, 781, 780, 783, 782, 785, 783, 780, 785, 788, 783, 785, 787, 788, 785, 784, 787, 776, 777, 775, 786, 777, 776, 784, 777, 786, 785, 777, 784, 773, 777, 785, 777, 773, 774, 777, 0x0303, 775, 0x0303, 777, 774, 0x0303, 780, 775, 780, 0x0303, 772, 773, 780, 772, 780, 773, 785, 797, 796, 798, 789, 790, 791, 792, 790, 789, 792, 793, 790, 794, 793, 792, 794, 795, 793, 796, 795, 794, 797, 795, 796, 788, 798, 783, 798, 788, 797, 788, 795, 797, 795, 788, 787, 787, 793, 795, 793, 787, 784, 784, 790, 793, 790, 784, 786, 790, 776, 791, 776, 790, 786, 791, 778, 789, 778, 791, 776, 778, 792, 789, 792, 778, 779, 779, 794, 792, 794, 779, 781, 781, 796, 794, 796, 781, 782, 783, 796, 782, 796, 783, 798, 799, 802, 803, 799, 800, 802, 799, 801, 800, 800, 804, 807, 804, 800, 801, 799, 804, 801, 804, 799, 805, 803, 805, 799, 803, 806, 805, 803, 802, 806, 804, 806, 807, 806, 804, 805, 800, 806, 802, 806, 800, 807, 809, 808, 810, 808, 809, 811, 816, 819, 817, 816, 820, 819, 821, 820, 816, 821, 822, 820, 821, 823, 822, 821, 824, 823, 826, 824, 821, 826, 829, 824, 826, 828, 829, 826, 825, 828, 817, 818, 816, 827, 818, 817, 825, 818, 827, 826, 818, 825, 814, 818, 826, 818, 814, 815, 818, 812, 816, 812, 818, 815, 812, 821, 816, 821, 812, 813, 814, 821, 813, 821, 814, 826, 838, 837, 839, 830, 831, 832, 833, 831, 830, 833, 834, 831, 835, 834, 833, 835, 836, 834, 837, 836, 835, 838, 836, 837, 829, 839, 824, 839, 829, 838, 829, 836, 838, 836, 829, 828, 828, 834, 836, 834, 828, 825, 825, 831, 834, 831, 825, 827, 831, 817, 832, 817, 831, 827, 832, 819, 830, 819, 832, 817, 819, 833, 830, 833, 819, 820, 820, 835, 833, 835, 820, 822, 822, 837, 835, 837, 822, 823, 824, 837, 823, 837, 824, 839, 840, 843, 844, 840, 841, 843, 840, 842, 841, 841, 845, 848, 845, 841, 842, 840, 845, 842, 845, 840, 846, 844, 846, 840, 844, 847, 846, 844, 843, 847, 845, 847, 848, 847, 845, 846, 841, 847, 843, 847, 841, 848, 850, 849, 851, 849, 850, 852, 857, 860, 858, 857, 861, 860, 862, 861, 857, 862, 863, 861, 862, 864, 863, 862, 865, 864, 867, 865, 862, 867, 870, 865, 867, 869, 870, 867, 866, 869, 858, 859, 857, 868, 859, 858, 866, 859, 868, 867, 859, 866, 855, 859, 867, 859, 855, 856, 859, 853, 857, 853, 859, 856, 853, 862, 857, 862, 853, 854, 855, 862, 854, 862, 855, 867, 879, 878, 880, 871, 872, 873, 874, 872, 871, 874, 875, 872, 876, 875, 874, 876, 877, 875, 878, 877, 876, 879, 877, 878, 870, 880, 865, 880, 870, 879, 870, 877, 879, 877, 870, 869, 869, 875, 877, 875, 869, 866, 866, 872, 875, 872, 866, 868, 872, 858, 873, 858, 872, 868, 873, 860, 871, 860, 873, 858, 860, 874, 871, 874, 860, 861, 861, 876, 874, 876, 861, 863, 863, 878, 876, 878, 863, 864, 865, 878, 864, 878, 865, 880, 881, 884, 885, 881, 882, 884, 881, 883, 882, 882, 886, 889, 886, 882, 883, 881, 886, 883, 886, 881, 887, 885, 887, 881, 885, 888, 887, 885, 884, 888, 886, 888, 889, 888, 886, 887, 882, 888, 884, 888, 882, 889, 891, 890, 892, 890, 891, 893, 895, 894, 896, 894, 895, 897, 894, 898, 899, 898, 894, 897, 900, 894, 899, 894, 900, 896, 898, 895, 901, 895, 898, 897, 902, 900, 903, 900, 902, 896, 895, 904, 901, 904, 895, 905, 907, 906, 908, 906, 907, 909, 906, 910, 911, 910, 906, 909, 912, 906, 911, 906, 912, 908, 910, 907, 913, 907, 910, 909, 914, 912, 915, 912, 914, 908, 907, 903, 913, 903, 907, 902, 917, 916, 919, 916, 917, 918, 938, 928, 939, 928, 938, 931, 940, 926, 933, 926, 940, 941, 926, 942, 925, 942, 926, 941, 943, 928, 927, 928, 943, 939, 922, 917, 919, 917, 922, 944, 942, 923, 925, 923, 942, 945, 946, 922, 924, 922, 946, 944, 916, 947, 921, 947, 916, 918, 943, 920, 948, 920, 943, 927, 949, 935, 936, 935, 949, 950, 949, 930, 951, 930, 949, 936, 952, 929, 953, 929, 952, 932, 938, 929, 931, 929, 938, 953, 952, 930, 932, 930, 952, 951, 954, 934, 937, 934, 954, 955, 954, 935, 950, 935, 954, 937, 934, 940, 933, 940, 934, 955, 945, 924, 923, 924, 945, 946, 948, 921, 947, 921, 948, 920, 920, 916, 921, 916, 920, 927, 916, 922, 919, 922, 926, 925, 922, 933, 926, 935, 930, 936, 933, 930, 935, 930, 928, 931, 930, 927, 928, 933, 927, 930, 922, 927, 933, 916, 927, 922, 933, 937, 934, 937, 933, 935, 932, 931, 929, 931, 932, 930, 923, 922, 925, 922, 923, 924, 957, 956, 958, 956, 957, 959, 956, 960, 961, 960, 956, 959, 962, 956, 961, 956, 962, 958, 960, 957, 963, 957, 960, 959, 964, 962, 965, 962, 964, 958, 957, 966, 963, 966, 957, 967, 969, 968, 970, 968, 969, 971, 968, 972, 973, 972, 968, 971, 974, 968, 973, 968, 974, 970, 972, 969, 975, 969, 972, 971, 976, 974, 977, 974, 976, 970, 969, 965, 975, 965, 969, 964, 979, 978, 981, 978, 979, 980, 1000, 990, 1001, 990, 1000, 993, 1002, 988, 995, 988, 1002, 1003, 988, 1004, 987, 1004, 988, 1003, 1005, 990, 989, 990, 1005, 1001, 984, 979, 981, 979, 984, 1006, 1004, 985, 987, 985, 1004, 1007, 1008, 984, 986, 984, 1008, 1006, 978, 1009, 983, 1009, 978, 980, 1005, 982, 1010, 982, 1005, 989, 1011, 997, 998, 997, 1011, 1012, 1011, 992, 1013, 992, 1011, 998, 1014, 991, 1015, 991, 1014, 994, 1000, 991, 993, 991, 1000, 1015, 1014, 992, 994, 992, 1014, 1013, 1016, 996, 999, 996, 1016, 1017, 1016, 997, 1012, 997, 1016, 999, 996, 1002, 995, 1002, 996, 1017, 1007, 986, 985, 986, 1007, 1008, 1010, 983, 1009, 983, 1010, 982, 982, 978, 983, 978, 982, 989, 978, 984, 981, 984, 988, 987, 984, 995, 988, 997, 992, 998, 995, 992, 997, 992, 990, 993, 992, 989, 990, 995, 989, 992, 984, 989, 995, 978, 989, 984, 995, 999, 996, 999, 995, 997, 994, 993, 991, 993, 994, 992, 985, 984, 987, 984, 985, 986, 1019, 1018, 1020, 1018, 1019, 1021, 1018, 1022, 1023, 1022, 1018, 1021, 0x0400, 1018, 1023, 1018, 0x0400, 1020, 1022, 1019, 1025, 1019, 1022, 1021, 1026, 0x0400, 1027, 0x0400, 1026, 1020, 1019, 0x0404, 1025, 0x0404, 1019, 1029, 1031, 1030, 1032, 1030, 1031, 1033, 1030, 1034, 1035, 1034, 1030, 1033, 1036, 1030, 1035, 1030, 1036, 1032, 1034, 1031, 1037, 1031, 1034, 1033, 1038, 1036, 1039, 1036, 1038, 1032, 1031, 1027, 1037, 1027, 1031, 1026, 1041, 1040, 1043, 1040, 1041, 1042, 1062, 1052, 1063, 1052, 1062, 1055, 1064, 1050, 1057, 1050, 1064, 1065, 1050, 1066, 1049, 1066, 1050, 1065, 1067, 1052, 1051, 1052, 1067, 1063, 1046, 1041, 1043, 1041, 1046, 1068, 1066, 1047, 1049, 1047, 1066, 1069, 1070, 1046, 1048, 1046, 1070, 1068, 1040, 1071, 1045, 1071, 1040, 1042, 1067, 1044, 1072, 1044, 1067, 1051, 1073, 1059, 1060, 1059, 1073, 1074, 1073, 1054, 1075, 1054, 1073, 1060, 1076, 1053, 1077, 1053, 1076, 1056, 1062, 1053, 1055, 1053, 1062, 1077, 1076, 1054, 1056, 1054, 1076, 1075, 1078, 1058, 1061, 1058, 1078, 1079, 1078, 1059, 1074, 1059, 1078, 1061, 1058, 1064, 1057, 1064, 1058, 1079, 1069, 1048, 1047, 1048, 1069, 1070, 1072, 1045, 1071, 1045, 1072, 1044, 1044, 1040, 1045, 1040, 1044, 1051, 1040, 1046, 1043, 1046, 1050, 1049, 1046, 1057, 1050, 1059, 1054, 1060, 1057, 1054, 1059, 1054, 1052, 1055, 1054, 1051, 1052, 1057, 1051, 1054, 1046, 1051, 1057, 1040, 1051, 1046, 1057, 1061, 1058, 1061, 1057, 1059, 1056, 1055, 1053, 1055, 1056, 1054, 1047, 1046, 1049, 1046, 1047, 1048, 1081, 1080, 1082, 1080, 1081, 1083, 1080, 1084, 1085, 1084, 1080, 1083, 1086, 1080, 1085, 1080, 1086, 1082, 1084, 1081, 1087, 1081, 1084, 1083, 1088, 1086, 1089, 1086, 1088, 1082, 1081, 1090, 1087, 1090, 1081, 1091, 1093, 1092, 1094, 1092, 1093, 1095, 1092, 1096, 1097, 1096, 1092, 1095, 1098, 1092, 1097, 1092, 1098, 1094, 1096, 1093, 1099, 1093, 1096, 1095, 1100, 1098, 79, 1098, 1100, 1094, 1093, 1089, 1099, 1089, 1093, 1088, 1102, 1101, 1104, 1101, 1102, 1103, 1123, 1113, 1124, 1113, 1123, 1116, 1125, 1111, 1118, 1111, 1125, 1126, 1111, 1127, 1110, 1127, 1111, 1126, 1128, 1113, 1112, 1113, 1128, 1124, 1107, 1102, 1104, 1102, 1107, 1129, 1127, 1108, 1110, 1108, 1127, 1130, 1131, 1107, 1109, 1107, 1131, 1129, 1101, 1132, 1106, 1132, 1101, 1103, 1128, 1105, 1133, 1105, 1128, 1112, 1134, 1120, 1121, 1120, 1134, 1135, 1134, 1115, 1136, 1115, 1134, 1121, 1137, 1114, 1138, 1114, 1137, 1117, 1123, 1114, 1116, 1114, 1123, 1138, 1137, 1115, 1117, 1115, 1137, 1136, 1139, 1119, 1122, 1119, 1139, 1140, 1139, 1120, 1135, 1120, 1139, 1122, 1119, 1125, 1118, 1125, 1119, 1140, 1130, 1109, 1108, 1109, 1130, 1131, 1133, 1106, 1132, 1106, 1133, 1105, 1105, 1101, 1106, 1101, 1105, 1112, 1101, 1107, 1104, 1107, 1111, 1110, 1107, 1118, 1111, 1120, 1115, 1121, 1118, 1115, 1120, 1115, 1113, 1116, 1115, 1112, 1113, 1118, 1112, 1115, 1107, 1112, 1118, 1101, 1112, 1107, 1118, 1122, 1119, 1122, 1118, 1120, 1117, 1116, 1114, 1116, 1117, 1115, 1108, 1107, 1110, 1107, 1108, 1109]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Siegessaule.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Siegessaule.as new file mode 100644 index 0000000..c7a218b --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/berlin/Siegessaule.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.berlin { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Siegessaule extends Stage3DData { + + public function Siegessaule(){ + vertices = new [-25.6774, 5.20832, -51.9245, -25.6774, 22.494, -51.9245, 32.2372, 24.04, -45.6592, 32.2372, 22.494, -45.6592, -24.104, 5.20832, -50.6614, 34.093, -1.52588E-5, -46.8308, 5.714, 5.20832, -49.2493, -46.8304, 0, -34.0938, -51.9241, 0, 25.677, -50.4606, 24.04, 23.5185, -45.8125, 20.2453, -32.2005, -40.8209, 5.20832, -33.5817, -39.6719, 5.20832, -47.0641, -33.5813, 5.20832, 40.8205, 40.8209, 20.2453, 33.5809, 47.0637, 22.494, -39.6723, 33.5813, 20.2453, -40.8213, 33.5813, 22.494, -40.8213, 45.6929, 20.2453, -38.3088, 47.0637, 20.2453, -39.6723, 45.5933, 24.04, -38.3173, 45.5933, 22.494, -38.3173, 44.3743, 24.04, -24.0129, 31.7124, 24.04, -39.5003, -39.6719, 22.494, -47.0641, -47.0636, 20.2453, 39.6715, -33.5813, 20.2453, 40.8205, 39.672, 0, 47.0633, -45.4332, 24.04, 38.2047, -44.2269, 22.494, 24.0497, -44.2269, 24.04, 24.0497, -39.6719, 20.2453, -47.0641, -38.1638, 20.2453, -45.3297, -23.4733, 24.04, -50.4069, -34.0934, 22.5634, 46.83, -26.1896, 5.20832, -45.9151, -25.6774, 0, -51.9245, -26.1896, 0, -45.9151, -51.9241, 5.20832, 25.677, -45.9147, 0, 26.1892, 51.9241, 5.20832, -25.6778, 51.9241, 0, -25.6778, 45.9147, 5.20832, -26.19, 51.9241, 20.2453, -25.6778, -26.1896, 22.494, -45.9151, -26.1896, 20.2453, -45.9151, -51.9241, 22.494, 25.677, -45.9147, 20.2453, 26.1892, 26.1896, 22.5634, 45.9143, 23.5468, 20.3147, 49.5437, -51.9241, 20.2453, 25.677, -50.5878, 20.2453, 23.8338, -25.6774, 20.2453, -51.9245, 26.1873, 0, 45.9141, -39.6719, 0, -47.0641, -47.0636, 0, 39.6715, 47.0535, 5.20832, -39.5536, 45.9147, 20.2453, -26.19, 26.1896, 20.3147, 45.9143, 39.672, 20.3147, 47.0633, -45.4873, 20.2453, 38.2503, -44.3043, 20.2453, 24.3693, -39.4463, 24.04, -31.4573, -45.7298, 22.494, -31.9928, -23.9855, 22.494, -44.3974, -40.8209, 0, -33.5817, -34.0934, 5.20832, 46.83, -33.5813, 0, 40.8205, -34.0934, 0, 46.83, 46.8304, 20.2453, 34.093, 46.8304, 22.5634, 34.093, 34.0934, 22.494, -46.8308, 34.0934, 20.2453, -46.8308, 32.5842, 20.2453, -39.426, -40.8209, 20.2453, -33.5817, -46.8304, 20.2453, -34.0938, -46.8304, 22.494, -34.0938, 40.8209, 5.20832, 33.5809, 40.8209, 0, 33.5809, 46.8304, 5.20832, 34.093, -32.4128, 20.2895, 44.7748, -39.3297, 20.2453, -31.6481, 33.7551, 0, -40.837, 34.0927, 5.20832, -46.8309, 33.7551, 5.20832, -40.837, -45.7298, 24.04, -31.9928, -31.4526, 24.04, 39.3961, -38.24, 24.04, -45.6122, -23.9855, 24.04, -44.3974, 23.9876, 24.04, 44.3717, 38.1176, 24.04, 45.5759, 39.3282, 24.04, 31.3711, 45.2878, 24.04, 31.879, 25.6869, 0, 51.9245, 51.9186, 0, -25.6129, 51.9241, 22.494, -25.6778, -34.0934, 20.3147, 46.83, 25.6774, 20.3147, 51.9237, 46.0139, 20.2453, 32.1918, 50.8465, 20.2453, -24.5151, -31.9775, 24.04, 45.5551, 23.484, 24.04, 50.2816, 50.0101, 22.494, -23.5326, 50.0101, 24.04, -23.5326, 46.8304, 0, 34.093, 32.5842, 5.20832, -39.426, 33.126, 20.2453, -45.7842, 45.6929, 5.20832, -38.3088, 44.563, 5.20832, -25.0506, 44.563, 20.2453, -25.0506, 46.0139, 5.20832, 32.1918, -44.3043, 5.20832, 24.3693, -45.4873, 5.20832, 38.2503, -31.9551, 5.20832, 39.4035, -31.9551, 20.2453, 39.4035, -32.4128, 5.20832, 44.7748, -50.5878, 5.20832, 23.8338, -45.8125, 5.20832, -32.2005, -38.1638, 5.20832, -45.3297, -24.6565, 5.20832, -44.1786, -24.6565, 20.2453, -44.1786, -24.104, 20.2453, -50.6614, 24.0465, 20.3147, 43.6805, 25.6774, 22.5634, 51.9237, 23.484, 22.5634, 50.2816, 23.9876, 22.5634, 44.3717, 38.1176, 22.5634, 45.5759, 39.672, 22.5634, 47.0633, 39.3282, 22.5634, 31.3711, 40.8209, 22.5634, 33.5809, 45.2878, 22.5634, 31.879, -50.4606, 22.494, 23.5185, -40.8209, 22.494, -33.5817, -39.4463, 22.494, -31.4573, -38.24, 22.494, -45.6122, -23.4733, 22.494, -50.4069, 31.7124, 22.494, -39.5003, 45.9147, 22.494, -26.19, 44.3743, 22.494, -24.0129, -45.9147, 22.494, 26.1892, -45.4332, 22.494, 38.2047, -47.0636, 22.494, 39.6715, -33.5813, 22.494, 40.8205, -31.4526, 22.494, 39.3961, -31.9775, 22.5634, 45.5551, -46.8304, 5.20832, -34.0938, -39.3297, 5.20832, -31.6481, 5.714, 5.20832, -48.1202, 33.126, 5.20832, -45.7842, 50.8465, 5.20832, -24.5151, 25.6869, 5.20832, 51.9245, 23.5468, 5.20832, 49.5437, 39.672, 5.20832, 47.0633, -45.9147, 5.20832, 26.1892, -47.0636, 5.20832, 39.6715, 2.07718, 0, -43.3343, 2.07718, 5.20832, -49.5593, 2.07718, 0, -49.5593, 2.07718, 5.20832, -48.4302, 2.07718, 8.60831, -48.4302, 2.07718, 9.47499, -43.3343, 5.714, 9.47499, -43.3343, 5.714, 8.60831, -48.1202, 5.714, 0, -49.2493, 5.714, 0, -43.3343, 47.0535, -1.52588E-5, -39.5536, 39.4066, 5.20832, 31.6287, 39.4066, 20.2453, 31.6287, 26.1881, 5.20832, 45.9141, 38.2762, 20.3068, 44.8931, 24.0465, 5.20832, 43.6805, 45.9147, -1.52588E-5, -26.19, 38.2762, 5.20832, 44.8931, -32.4634, 33.8631, 0.0291415, -31.4027, 33.8631, 1.48901, -29.6866, 33.8631, 0.931391, -29.6866, 33.8631, -0.873109, -31.4027, 33.8631, -1.43073, -32.4634, 58.7935, 0.0291415, -31.4027, 58.7935, 1.48901, -29.6866, 58.7935, 0.931391, -29.6866, 58.7935, -0.873109, -31.4027, 58.7935, -1.43073, -29.4027, 33.8631, -13.3808, -28.342, 33.8631, -11.9209, -26.6258, 33.8631, -12.4786, -26.6258, 33.8631, -14.2831, -28.342, 33.8631, -14.8407, -29.4027, 58.7935, -13.3808, -28.342, 58.7935, -11.9209, -26.6258, 58.7935, -12.4786, -26.6258, 58.7935, -14.2831, -28.342, 58.7935, -14.8407, -20.8267, 33.8631, -24.1348, -19.766, 33.8631, -22.6749, -18.0498, 33.8631, -23.2325, -18.0498, 33.8631, -25.037, -19.766, 33.8631, -25.5946, -20.8267, 58.7935, -24.1348, -19.766, 58.7935, -22.6749, -18.0498, 58.7935, -23.2325, -18.0498, 58.7935, -25.037, -19.766, 58.7935, -25.5946, -8.43401, 33.8631, -30.1028, -7.37336, 33.8631, -28.6429, -5.65717, 33.8631, -29.2005, -5.65717, 33.8631, -31.005, -7.37336, 33.8631, -31.5626, -8.43401, 58.7935, -30.1028, -7.37336, 58.7935, -28.6429, -5.65717, 58.7935, -29.2005, -5.65717, 58.7935, -31.005, -7.37336, 58.7935, -31.5626, 5.32081, 33.8631, -30.1028, 6.38146, 33.8631, -28.6429, 8.09765, 33.8631, -29.2005, 8.09765, 33.8631, -31.005, 6.38146, 33.8631, -31.5626, 5.32081, 58.7935, -30.1028, 6.38146, 58.7935, -28.6429, 8.09765, 58.7935, -29.2005, 8.09765, 58.7935, -31.005, 6.38146, 58.7935, -31.5626, 17.7135, 33.8631, -24.1348, 18.7741, 33.8631, -22.6749, 20.4903, 33.8631, -23.2325, 20.4903, 33.8631, -25.037, 18.7741, 33.8631, -25.5946, 17.7135, 58.7935, -24.1348, 18.7741, 58.7935, -22.6749, 20.4903, 58.7935, -23.2325, 20.4903, 58.7935, -25.037, 18.7741, 58.7935, -25.5947, 26.2895, 33.8631, -13.3808, 27.3501, 33.8631, -11.921, 29.0663, 33.8631, -12.4786, 29.0663, 33.8631, -14.2831, 27.3501, 33.8631, -14.8407, 26.2895, 58.7935, -13.3808, 27.3501, 58.7935, -11.921, 29.0663, 58.7935, -12.4786, 29.0663, 58.7935, -14.2831, 27.3501, 58.7935, -14.8407, 29.3502, 33.8631, 0.0291275, 30.4109, 33.8631, 1.489, 32.127, 33.8631, 0.931377, 32.127, 33.8631, -0.873124, 30.4109, 33.8631, -1.43074, 29.3502, 58.7935, 0.0291275, 30.4109, 58.7935, 1.489, 32.127, 58.7935, 0.931377, 32.127, 58.7935, -0.873123, 30.4109, 58.7935, -1.43074, 26.2895, 33.8631, 13.4391, 27.3501, 33.8631, 14.899, 29.0663, 33.8631, 14.3413, 29.0663, 33.8631, 12.5368, 27.3501, 33.8631, 11.9792, 26.2895, 58.7935, 13.4391, 27.3501, 58.7935, 14.899, 29.0663, 58.7935, 14.3413, 29.0663, 58.7935, 12.5368, 27.3501, 58.7935, 11.9792, 17.7135, 33.8631, 24.193, 18.7741, 33.8631, 25.6529, 20.4903, 33.8631, 25.0953, 20.4903, 33.8631, 23.2908, 18.7741, 33.8631, 22.7332, 17.7135, 58.7935, 24.193, 18.7741, 58.7935, 25.6529, 20.4903, 58.7935, 25.0953, 20.4903, 58.7935, 23.2908, 18.7741, 58.7935, 22.7332, 5.32082, 33.8631, 30.161, 6.38147, 33.8631, 31.6209, 8.09766, 33.8631, 31.0633, 8.09766, 33.8631, 29.2588, 6.38147, 33.8631, 28.7012, 5.32082, 58.7935, 30.161, 6.38147, 58.7935, 31.6209, 8.09766, 58.7935, 31.0633, 8.09766, 58.7935, 29.2588, 6.38147, 58.7935, 28.7012, -8.43401, 33.8631, 30.161, -7.37335, 33.8631, 31.6209, -5.65717, 33.8631, 31.0633, -5.65717, 33.8631, 29.2588, -7.37335, 33.8631, 28.7012, -8.43401, 58.7935, 30.161, -7.37335, 58.7935, 31.6209, -5.65717, 58.7935, 31.0633, -5.65717, 58.7935, 29.2588, -7.37335, 58.7935, 28.7012, -20.8267, 33.8631, 24.193, -19.766, 33.8631, 25.6529, -18.0498, 33.8631, 25.0953, -18.0498, 33.8631, 23.2908, -19.766, 33.8631, 22.7332, -20.8267, 58.7935, 24.193, -19.766, 58.7935, 25.6529, -18.0498, 58.7935, 25.0953, -18.0498, 58.7935, 23.2908, -19.766, 58.7935, 22.7332, -29.4027, 33.8631, 13.4391, -28.342, 33.8631, 14.899, -26.6258, 33.8631, 14.3413, -26.6258, 33.8631, 12.5368, -28.342, 33.8631, 11.9792, -29.4027, 58.7935, 13.4391, -28.342, 58.7935, 14.899, -26.6258, 58.7935, 14.3413, -26.6258, 58.7935, 12.5368, -28.342, 58.7935, 11.9792, -11.3641, 79.2051, 1.12727, -10.3197, 79.198, 0.368502, -10.7186, 79.2007, -0.859264, -12.0095, 79.2094, -0.859293, -12.4084, 79.2121, 0.368455, -11.2668, 93.6146, 1.12727, -10.2224, 93.6076, 0.368502, -10.6213, 93.6103, -0.859264, -11.9122, 93.619, -0.859293, -12.3111, 93.6217, 0.368455, -10.7173, 79.2051, -3.90278, -9.44709, 79.198, -4.13327, -9.27376, 79.2007, -5.41252, -10.4368, 79.2095, -5.97265, -11.329, 79.2121, -5.03958, -10.6296, 93.6146, -3.86058, -9.35945, 93.6076, -4.09107, -9.18613, 93.6103, -5.37032, -10.3492, 93.619, -5.93045, -11.2413, 93.6217, -4.99738, -7.95206, 79.2051, -8.15407, -6.70766, 79.198, -7.81063, -5.99647, 79.2007, -8.888, -6.80132, 79.2095, -9.89729, -8.00994, 79.2121, -9.44369, -7.89142, 93.6146, -8.07803, -6.64702, 93.6076, -7.73459, -5.93582, 93.6103, -8.81195, -6.74068, 93.619, -9.82124, -7.9493, 93.6217, -9.36765, -3.61614, 79.2051, -10.7846, -2.64398, 79.198, -9.93522, -1.53577, 79.2007, -10.5973, -1.82301, 79.2094, -11.8559, -3.10875, 79.2121, -11.9716, -3.59449, 93.6146, -10.6897, -2.62233, 93.6076, -9.8404, -1.51412, 93.6103, -10.5025, -1.80137, 93.619, -11.7611, -3.08711, 93.6217, -11.8768, 1.43172, 79.2051, -11.2733, 1.9391, 79.198, -10.0862, 3.22484, 79.2007, -10.202, 3.51209, 79.2094, -11.4605, 2.40388, 79.2121, -12.1226, 1.41007, 93.6146, -11.1784, 1.91746, 93.6076, -9.99142, 3.2032, 93.6103, -10.1071, 3.49044, 93.619, -11.3657, 2.38223, 93.6217, -12.0278, 6.19172, 79.2051, -9.5234, 6.13383, 79.198, -8.23378, 7.34246, 79.2007, -7.78019, 8.14731, 79.2095, -8.78948, 7.43611, 79.2121, -9.86684, 6.13107, 93.6146, -9.44736, 6.07319, 93.6076, -8.15773, 7.28181, 93.6103, -7.70414, 8.08667, 93.619, -8.71343, 7.37547, 93.6217, -9.7908, 9.72108, 79.2051, -5.88154, 9.1094, 79.198, -4.74474, 10.0015, 79.2007, -3.81167, 11.1646, 79.2095, -4.37181, 10.9913, 79.2121, -5.65105, 9.63345, 93.6146, -5.83934, 9.02176, 93.6076, -4.70254, 9.9139, 93.6103, -3.76947, 11.077, 93.619, -4.3296, 10.9036, 93.6217, -5.60885, 11.3208, 79.2051, -1.06901, 10.2764, 79.198, -0.31019, 10.6754, 79.2007, 0.917557, 11.9663, 79.2095, 0.917528, 12.3652, 79.2121, -0.310238, 11.2235, 93.6146, -1.06901, 10.1792, 93.6076, -0.31019, 10.5781, 93.6103, 0.917557, 11.869, 93.619, 0.917528, 12.2679, 93.6217, -0.310238, 10.674, 79.2051, 3.96103, 9.40385, 79.198, 4.19157, 9.23058, 79.2007, 5.47083, 10.3937, 79.2095, 6.03091, 11.2858, 79.2121, 5.0978, 10.5864, 93.6146, 3.91883, 9.31622, 93.6076, 4.14937, 9.14295, 93.6103, 5.42863, 10.306, 93.619, 5.98871, 11.1981, 93.6217, 5.0556, 7.90884, 79.2051, 8.21231, 6.66444, 79.198, 7.8689, 5.95327, 79.2007, 8.94628, 6.75815, 79.2095, 9.95555, 7.96676, 79.2121, 9.50193, 7.8482, 93.6146, 8.13626, 6.60379, 93.6076, 7.79285, 5.89262, 93.6103, 8.87024, 6.6975, 93.619, 9.87951, 7.90611, 93.6217, 9.42588, 3.57293, 79.2051, 10.8428, 2.60076, 79.198, 9.99348, 1.49256, 79.2007, 10.6556, 1.77982, 79.2095, 11.9141, 3.06556, 79.2121, 12.0298, 3.55129, 93.6146, 10.748, 2.57912, 93.6076, 9.89866, 1.47092, 93.6103, 10.5608, 1.75818, 93.619, 11.8193, 3.04392, 93.6217, 11.935, -1.47492, 79.2051, 11.3315, -1.98229, 79.198, 10.1445, -3.26804, 79.2007, 10.2602, -3.5553, 79.2095, 11.5188, -2.44709, 79.2121, 12.1809, -1.45328, 93.6146, 11.2367, -1.96065, 93.6076, 10.0497, -3.24639, 93.6103, 10.1654, -3.53365, 93.619, 11.4239, -2.42545, 93.6217, 12.086, -6.23494, 79.2051, 9.58168, -6.17702, 79.198, 8.29206, -7.38564, 79.2007, 7.83844, -8.19052, 79.2095, 8.84771, -7.47934, 79.2121, 9.92509, -6.17429, 93.6146, 9.50564, -6.11638, 93.6076, 8.21601, -7.32499, 93.6103, 7.76239, -8.12987, 93.619, 8.77166, -7.4187, 93.6217, 9.84904, -9.76433, 79.2051, 5.93983, -9.1526, 79.198, 4.80305, -10.0447, 79.2007, 3.86995, -11.2078, 79.2095, 4.43003, -11.0345, 79.2121, 5.70928, -9.6767, 93.6146, 5.89762, -9.06496, 93.6076, 4.76085, -9.95706, 93.6103, 3.82774, -11.1201, 93.619, 4.38783, -10.9469, 93.6217, 5.66708, -11.1766, 106.98, 1.12727, -10.1322, 106.973, 0.368501, -10.5311, 106.976, -0.859264, -11.822, 106.984, -0.859293, -12.2209, 106.987, 0.368455, -11.0738, 122.2, 1.12727, -10.0294, 122.193, 0.368501, -10.4283, 122.196, -0.859264, -11.7192, 122.204, -0.859293, -12.1182, 122.207, 0.368455, -10.5483, 106.98, -3.82144, -9.27817, 106.973, -4.05192, -9.10485, 106.976, -5.33117, -10.2679, 106.984, -5.8913, -11.16, 106.987, -4.95823, -10.4558, 122.2, -3.77686, -9.18561, 122.193, -4.00735, -9.01228, 122.196, -5.2866, -10.1753, 122.204, -5.84673, -11.0675, 122.207, -4.91366, -7.83516, 106.98, -8.00748, -6.59076, 106.973, -7.66405, -5.87957, 106.976, -8.74143, -6.68444, 106.984, -9.75071, -7.89306, 106.987, -9.2971, -7.77111, 122.2, -7.92716, -6.5267, 122.193, -7.58373, -5.81552, 122.196, -8.66111, -6.62038, 122.204, -9.67039, -7.829, 122.207, -9.21678, -3.57442, 106.98, -10.6018, -2.60226, 106.973, -9.75244, -1.49405, 106.976, -10.4146, -1.7813, 106.984, -11.6731, -3.06704, 106.987, -11.7888, -3.55156, 122.2, -10.5016, -2.5794, 122.193, -9.65228, -1.47119, 122.196, -10.3144, -1.75844, 122.204, -11.5729, -3.04418, 122.207, -11.6887, 1.39, 106.98, -11.0905, 1.89738, 106.973, -9.90346, 3.18312, 106.976, -10.0192, 3.47037, 106.984, -11.2777, 2.36216, 106.987, -11.9398, 1.36714, 122.2, -10.9903, 1.87452, 122.193, -9.8033, 3.16026, 122.196, -9.91902, 3.44751, 122.204, -11.1776, 2.3393, 122.207, -11.8397, 6.07483, 106.98, -9.37683, 6.01693, 106.973, -8.08721, 7.22555, 106.976, -7.6336, 8.03042, 106.984, -8.64288, 7.31923, 106.987, -9.72026, 6.01077, 122.2, -9.29651, 5.95288, 122.193, -8.00689, 7.1615, 122.196, -7.55328, 7.96636, 122.204, -8.56256, 7.25518, 122.207, -9.63993, 9.55217, 106.98, -5.8002, 8.94048, 106.973, -4.66339, 9.83261, 106.976, -3.73033, 10.9957, 106.984, -4.29046, 10.8223, 106.987, -5.56971, 9.45961, 122.2, -5.75562, 8.84792, 122.193, -4.61882, 9.74005, 122.196, -3.68575, 10.9031, 122.204, -4.24588, 10.7298, 122.207, -5.52513, 11.1333, 106.98, -1.06901, 10.089, 106.973, -0.31019, 10.4879, 106.976, 0.917558, 11.7788, 106.984, 0.917528, 12.1777, 106.987, -0.310238, 11.0306, 122.2, -1.06901, 9.98623, 122.193, -0.31019, 10.3852, 122.196, 0.917557, 11.6761, 122.204, 0.917528, 12.075, 122.207, -0.310238, 10.5051, 106.98, 3.87968, 9.23493, 106.973, 4.11023, 9.06167, 106.976, 5.38948, 10.2247, 106.984, 5.94956, 11.1168, 106.987, 5.01645, 10.4125, 122.2, 3.83511, 9.14237, 122.193, 4.06565, 8.9691, 122.196, 5.34491, 10.1322, 122.204, 5.90499, 11.0243, 122.207, 4.97188, 7.79194, 106.98, 8.06572, 6.54753, 106.973, 7.72232, 5.83637, 106.976, 8.79971, 6.64126, 106.984, 9.80897, 7.84987, 106.987, 9.35534, 7.72789, 122.2, 7.9854, 6.48348, 122.193, 7.642, 5.77232, 122.196, 8.71939, 6.57721, 122.204, 9.72865, 7.78582, 122.207, 9.27502, 3.53122, 106.98, 10.66, 2.55905, 106.973, 9.8107, 1.45084, 106.976, 10.4728, 1.7381, 106.984, 11.7314, 3.02385, 106.987, 11.8471, 3.50835, 122.2, 10.5599, 2.53618, 122.193, 9.71054, 1.42798, 122.196, 10.3727, 1.71524, 122.204, 11.6312, 3.00098, 122.207, 11.7469, -1.43321, 106.98, 11.1488, -1.94057, 106.973, 9.96173, -3.22631, 106.976, 10.0774, -3.51358, 106.984, 11.336, -2.40538, 106.987, 11.9981, -1.41034, 122.2, 11.0486, -1.91771, 122.193, 9.86157, -3.20345, 122.196, 9.97727, -3.49072, 122.204, 11.2358, -2.38252, 122.207, 11.8979, -6.11805, 106.98, 9.43511, -6.06012, 106.973, 8.14549, -7.26873, 106.976, 7.69186, -8.07362, 106.984, 8.70112, -7.36246, 106.987, 9.77851, -6.054, 122.2, 9.35479, -5.99607, 122.193, 8.06517, -7.20468, 122.196, 7.61154, -8.00957, 122.204, 8.6208, -7.29841, 122.207, 9.69818, -9.59542, 106.98, 5.85848, -8.98368, 106.973, 4.72171, -9.87577, 106.976, 3.7886, -11.0389, 106.984, 4.34868, -10.8656, 106.987, 5.62794, -9.50286, 122.2, 5.81391, -8.89112, 122.193, 4.67713, -9.78321, 122.196, 3.74403, -10.9463, 122.204, 4.3041, -10.773, 122.207, 5.58336, -11.2446, 132.056, 0.781285, -10.5293, 132.051, 0.261577, -10.8025, 132.053, -0.579358, -11.6867, 132.059, -0.579377, -11.9599, 132.061, 0.261547, -11.1489, 145.933, 0.781285, -10.4336, 145.928, 0.261577, -10.7068, 145.93, -0.579358, -11.591, 145.936, -0.579377, -11.8643, 145.938, 0.261546, -10.4596, 132.056, -4.16269, -9.58957, 132.051, -4.32057, -9.47086, 132.053, -5.19676, -10.2675, 132.059, -5.58041, -10.8785, 132.061, -4.94132, -10.3733, 145.933, -4.12117, -9.50335, 145.928, -4.27905, -9.38464, 145.93, -5.15525, -10.1813, 145.936, -5.53889, -10.7923, 145.938, -4.8998, -7.6071, 132.056, -8.27643, -6.75477, 132.051, -8.0412, -6.26766, 132.053, -8.77913, -6.81893, 132.059, -9.47041, -7.64675, 132.061, -9.15973, -7.54744, 145.933, -8.20161, -6.69511, 145.928, -7.96639, -6.20799, 145.93, -8.70431, -6.75927, 145.936, -9.3956, -7.58709, 145.938, -9.08492, -3.25225, 132.056, -10.7451, -2.58639, 132.051, -10.1634, -1.82734, 132.053, -10.6169, -2.02409, 132.059, -11.4789, -2.90473, 132.061, -11.5582, -3.23096, 145.933, -10.6518, -2.56509, 145.928, -10.0701, -1.80605, 145.93, -10.5236, -2.00279, 145.936, -11.3856, -2.88344, 145.938, -11.4649, 1.74246, 132.056, -11.0799, 2.08998, 132.051, -10.2668, 2.97063, 132.053, -10.3461, 3.16737, 132.059, -11.2081, 2.40833, 132.061, -11.6616, 1.72117, 145.933, -10.9866, 2.06869, 145.928, -10.1735, 2.94933, 145.93, -10.2528, 3.14608, 145.936, -11.1148, 2.38703, 145.938, -11.5683, 6.38778, 132.056, -9.21434, 6.34813, 132.051, -8.33103, 7.17595, 132.053, -8.02035, 7.72722, 132.059, -8.71164, 7.24011, 132.061, -9.44956, 6.32812, 145.933, -9.13952, 6.28846, 145.928, -8.25622, 7.11629, 145.93, -7.94553, 7.66756, 145.936, -8.63682, 7.18044, 145.938, -9.37475, 9.76364, 132.056, -5.51801, 9.34467, 132.051, -4.73939, 9.95571, 132.053, -4.10029, 10.7523, 132.059, -4.48394, 10.6336, 132.061, -5.36014, 9.67742, 145.933, -5.47649, 9.25845, 145.928, -4.69787, 9.86949, 145.93, -4.05877, 10.6661, 145.936, -4.44242, 10.5474, 145.938, -5.31862, 11.2014, 132.056, -0.72302, 10.4861, 132.051, -0.203282, 10.7593, 132.053, 0.637642, 11.6435, 132.059, 0.637622, 11.9167, 132.061, -0.203313, 11.1057, 145.933, -0.72302, 10.3904, 145.928, -0.203282, 10.6636, 145.93, 0.637642, 11.5478, 145.936, 0.637622, 11.821, 145.938, -0.203313, 10.4163, 132.056, 4.22095, 9.54635, 132.051, 4.37886, 9.42767, 132.053, 5.25506, 10.2243, 132.059, 5.63867, 10.8353, 132.061, 4.99956, 10.3301, 145.933, 4.17943, 9.46013, 145.928, 4.33734, 9.34145, 145.93, 5.21354, 10.1381, 145.936, 5.59716, 10.7491, 145.938, 4.95804, 7.5639, 132.056, 8.33468, 6.71156, 132.051, 8.09947, 6.22446, 132.053, 8.8374, 6.77574, 132.059, 9.52868, 7.60356, 132.061, 9.21798, 7.50423, 145.933, 8.25987, 6.6519, 145.928, 8.02465, 6.16479, 145.93, 8.76258, 6.71608, 145.936, 9.45386, 7.5439, 145.938, 9.14317, 3.20905, 132.056, 10.8034, 2.54319, 132.051, 10.2217, 1.78414, 132.053, 10.6752, 1.98089, 132.059, 11.5372, 2.86153, 132.061, 11.6164, 3.18776, 145.933, 10.7101, 2.52189, 145.928, 10.1284, 1.76285, 145.93, 10.5819, 1.95959, 145.936, 11.4439, 2.84024, 145.938, 11.5231, -1.78567, 132.056, 11.1381, -2.13319, 132.051, 10.3251, -3.01383, 132.053, 10.4044, -3.21058, 132.059, 11.2664, -2.45153, 132.061, 11.7199, -1.76437, 145.933, 11.0448, -2.11189, 145.928, 10.2318, -2.99254, 145.93, 10.3111, -3.18928, 145.936, 11.1731, -2.43024, 145.938, 11.6266, -6.43099, 132.056, 9.2726, -6.39133, 132.051, 8.3893, -7.21915, 132.053, 8.07861, -7.77043, 132.059, 8.76989, -7.28332, 132.061, 9.50782, -6.37133, 145.933, 9.19779, -6.33167, 145.928, 8.31449, -7.15948, 145.93, 8.00379, -7.71077, 145.936, 8.69507, -7.22366, 145.938, 9.433, -9.80686, 132.056, 5.57629, -9.38787, 132.051, 4.79768, -9.99889, 132.053, 4.15856, -10.7955, 132.059, 4.54218, -10.6768, 132.061, 5.41838, -9.72065, 145.933, 5.53477, -9.30165, 145.928, 4.75616, -9.91267, 145.93, 4.11704, -10.7093, 145.936, 4.50066, -10.5906, 145.938, 5.37686, -11.1789, 158.567, 0.781285, -10.4635, 158.562, 0.261577, -10.7367, 158.564, -0.579358, -11.6209, 158.57, -0.579377, -11.8942, 158.572, 0.261547, -11.0831, 172.313, 0.781285, -10.3677, 172.308, 0.261577, -10.6409, 172.31, -0.579358, -11.5251, 172.316, -0.579377, -11.7984, 172.318, 0.261547, -10.4003, 158.567, -4.13415, -9.5303, 158.562, -4.29202, -9.41159, 158.564, -5.16822, -10.2082, 158.57, -5.55187, -10.8192, 158.572, -4.91278, -10.314, 172.313, -4.09258, -9.44399, 172.308, -4.25046, -9.32527, 172.31, -5.12665, -10.1219, 172.316, -5.5103, -10.7329, 172.318, -4.87121, -7.56608, 158.567, -8.22499, -6.71375, 158.562, -7.98977, -6.22664, 158.564, -8.72769, -6.77792, 158.57, -9.41898, -7.60574, 158.572, -9.10829, -7.50635, 172.313, -8.15009, -6.65402, 172.308, -7.91487, -6.16691, 172.31, -8.65279, -6.71819, 172.316, -9.34408, -7.54601, 172.318, -9.03339, -3.23761, 158.567, -10.681, -2.57175, 158.562, -10.0993, -1.8127, 158.564, -10.5528, -2.00945, 158.57, -11.4148, -2.89009, 158.572, -11.494, -3.2163, 172.313, -10.5876, -2.55043, 172.308, -10.0059, -1.79138, 172.31, -10.4594, -1.98813, 172.316, -11.3214, -2.86877, 172.318, -11.4006, 1.72782, 158.567, -11.0157, 2.07535, 158.562, -10.2027, 2.95599, 158.564, -10.282, 3.15273, 158.57, -11.144, 2.39369, 158.572, -11.5975, 1.70651, 172.313, -10.9223, 2.05403, 172.308, -10.1093, 2.93467, 172.31, -10.1886, 3.13142, 172.316, -11.0506, 2.37237, 172.318, -11.5041, 6.34676, 158.567, -9.1629, 6.30711, 158.562, -8.2796, 7.13493, 158.564, -7.96891, 7.68621, 158.57, -8.6602, 7.19909, 158.572, -9.39812, 6.28703, 172.313, -9.088, 6.24738, 172.308, -8.2047, 7.0752, 172.31, -7.89401, 7.62647, 172.316, -8.5853, 7.13936, 172.318, -9.32323, 9.70436, 158.567, -5.48947, 9.28539, 158.562, -4.71084, 9.89644, 158.564, -4.07175, 10.6931, 158.57, -4.4554, 10.5743, 158.572, -5.3316, 9.61805, 172.313, -5.4479, 9.19908, 172.308, -4.66927, 9.81013, 172.31, -4.03018, 10.6067, 172.316, -4.41383, 10.488, 172.318, -5.29003, 11.1356, 158.567, -0.72302, 10.4203, 158.562, -0.203282, 10.6936, 158.564, 0.637642, 11.5777, 158.57, 0.637622, 11.8509, 158.572, -0.203313, 11.0398, 172.313, -0.72302, 10.3245, 172.308, -0.203282, 10.5978, 172.31, 0.637642, 11.4819, 172.316, 0.637622, 11.7551, 172.318, -0.203313, 10.3571, 158.567, 4.19241, 9.48708, 158.562, 4.35031, 9.36839, 158.564, 5.22651, 10.165, 158.57, 5.61013, 10.776, 158.572, 4.97102, 10.2707, 172.313, 4.15084, 9.40077, 172.308, 4.30874, 9.28208, 172.31, 5.18494, 10.0787, 172.316, 5.56857, 10.6897, 172.318, 4.92946, 7.52287, 158.567, 8.28324, 6.67054, 158.562, 8.04803, 6.18344, 158.564, 8.78597, 6.73473, 158.57, 9.47724, 7.56255, 158.572, 9.16654, 7.46314, 172.313, 8.20834, 6.61081, 172.308, 7.97313, 6.12371, 172.31, 8.71107, 6.675, 172.316, 9.40234, 7.50281, 172.318, 9.09164, 3.19441, 158.567, 10.7393, 2.52854, 158.562, 10.1575, 1.7695, 158.564, 10.611, 1.96625, 158.57, 11.473, 2.8469, 158.572, 11.5523, 3.17309, 172.313, 10.6459, 2.50723, 172.308, 10.0641, 1.74818, 172.31, 10.5176, 1.94493, 172.316, 11.3796, 2.82558, 172.318, 11.4589, -1.77103, 158.567, 11.074, -2.11854, 158.562, 10.261, -2.99919, 158.564, 10.3402, -3.19594, 158.57, 11.2022, -2.4369, 158.572, 11.6557, -1.74971, 172.313, 10.9806, -2.09723, 172.308, 10.1676, -2.97787, 172.31, 10.2468, -3.17462, 172.316, 11.1088, -2.41558, 172.318, 11.5623, -6.38998, 158.567, 9.22117, -6.35031, 158.562, 8.33787, -7.17812, 158.564, 8.02717, -7.72941, 158.57, 8.71844, -7.24231, 158.572, 9.45638, -6.33025, 172.313, 9.14627, -6.29058, 172.308, 8.26297, -7.11839, 172.31, 7.95227, -7.66968, 172.316, 8.64354, -7.18258, 172.318, 9.38148, -9.74759, 158.567, 5.54774, -9.32859, 158.562, 4.76913, -9.93962, 158.564, 4.13002, -10.7362, 158.57, 4.51364, -10.6176, 158.572, 5.38984, -9.66127, 172.313, 5.50618, -9.24228, 172.308, 4.72756, -9.85331, 172.31, 4.08845, -10.6499, 172.316, 4.47207, -10.5313, 172.318, 5.34828, -0.2216, 246.225, -1.73973, -0.2216, 211.874, 2.34164, -0.2216, 246.678, 9.10066, -0.2216, 230.639, -4.50521, -0.2216, 218.368, -9.60317, -0.2216, 243.718, 15.8791, -0.2216, 244.122, -11.9055, -0.2216, 224.851, 6.05203, -0.2216, 245.93, 3.20915, -0.2216, 215.416, 8.94512, -0.2216, 248.707, 12.0316, -0.2216, 257.424, -3.52138, -0.2216, 249.316, -3.08888, -0.2216, 213.388, -3.21883, -0.2216, 248.184, 8.09905, -0.2216, 227.312, -5.45477, -0.2216, 250.491, -1.65855, -0.2216, 240.172, 3.65902, -0.2216, 243.718, -6.00918, -0.2216, 231.548, 4.45153, -0.2216, 252.035, -0.283791, -0.2216, 236.673, 8.72848, -0.2216, 248.113, 10.3537, -0.2216, 244.062, 8.95469, -0.2216, 234.359, -4.69852, -0.2216, 245.475, 0.865177, -0.2216, 244.369, 11.3541, -0.2216, 242.046, -11.9055, -0.2216, 246.31, 10.9701, -0.2216, 244.056, 2.25534, -0.2216, 231.223, -3.15073, -0.2216, 249.354, 9.11048, -0.2216, 245.954, 9.92928, -0.2216, 251.55, -4.55106, -0.2216, 239.718, 13.6166, -0.2216, 225.246, -4.91465, -0.2216, 216.618, -9.60317, -0.2216, 228.184, -4.36942, -0.2216, 224, 5.0366, -0.2216, 247.647, 11.0548, -0.2216, 247.1, -5.10934, -0.2216, 236.436, -5.62731, -0.2216, 243.153, 6.19629, -0.2216, 246.717, 12.3804, -0.2216, 244.81, -10.1532, -0.2216, 247.757, 9.31289, -0.2216, 227.476, 6.05203, -0.2216, 257.424, -2.47947, -0.2216, 213.388, 3.85733, -0.2216, 211.874, -3.21883, -36.5353, 23.9435, 0.0291441, -32.9193, 23.9435, -15.8135, -22.7875, 23.9435, -28.5184, -8.14666, 23.9435, -35.5691, 8.10345, 23.9435, -35.5691, 22.7443, 23.9435, -28.5184, 32.8761, 23.9435, -15.8136, 36.4921, 23.9435, 0.0291275, 32.8761, 23.9435, 15.8718, 22.7443, 23.9435, 28.5767, 8.10346, 23.9435, 35.6273, -8.14666, 23.9435, 35.6273, -22.7875, 23.9435, 28.5767, -32.9193, 23.9435, 15.8718, -32.737, 33.8631, 0.0291417, -29.4972, 33.8631, -14.1655, -20.4193, 33.8631, -25.5488, -7.30147, 33.8631, -31.866, 7.25826, 33.8631, -31.866, 20.3761, 33.8631, -25.5488, 29.454, 33.8631, -14.1656, 32.6938, 33.8631, 0.0291269, 29.454, 33.8631, 14.2238, 20.3761, 33.8631, 25.6071, 7.25827, 33.8631, 31.9243, -7.30146, 33.8631, 31.9243, -20.4193, 33.8631, 25.6071, -29.4972, 33.8631, 14.2238, -16.5681, 33.8631, 0.0291372, -14.9295, 33.8631, -7.15014, -10.3382, 33.8631, -12.9075, -3.70355, 33.8631, -16.1025, 3.66035, 33.8631, -16.1025, 10.295, 33.8631, -12.9075, 14.8863, 33.8631, -7.15014, 16.5249, 33.8631, 0.0291297, 14.8863, 33.8631, 7.20841, 10.295, 33.8631, 12.9657, 3.66035, 33.8631, 16.1608, -3.70355, 33.8631, 16.1608, -10.3382, 33.8631, 12.9657, -14.9295, 33.8631, 7.20841, -16.5681, 58.7935, 0.0291372, -14.9295, 58.7935, -7.15014, -10.3382, 58.7935, -12.9075, -3.70355, 58.7935, -16.1026, 3.66035, 58.7935, -16.1026, 10.295, 58.7935, -12.9075, 14.8863, 58.7935, -7.15014, 16.5249, 58.7935, 0.0291297, 14.8863, 58.7935, 7.20841, 10.295, 58.7935, 12.9657, 3.66035, 58.7935, 16.1608, -3.70355, 58.7935, 16.1608, -10.3382, 58.7935, 12.9657, -14.9295, 58.7935, 7.20841, -32.4168, 58.7935, 0.0291402, -29.2087, 58.7935, -14.0266, -20.2197, 58.7935, -25.2985, -7.23022, 58.7935, -31.5539, 7.18701, 58.7935, -31.5539, 20.1765, 58.7935, -25.2985, 29.1655, 58.7935, -14.0266, 32.3736, 58.7935, 0.0291255, 29.1655, 58.7935, 14.0849, 20.1765, 58.7935, 25.3567, 7.18702, 58.7935, 31.6122, -7.23022, 58.7935, 31.6122, -20.2197, 58.7935, 25.3567, -29.2087, 58.7935, 14.0849, -34.6108, 66.9873, 0.0291406, -31.1854, 66.9874, -14.9785, -21.5876, 66.9873, -27.0138, -7.71843, 66.9873, -33.6928, 7.67522, 66.9873, -33.6928, 21.5444, 66.9873, -27.0138, 31.1422, 66.9874, -14.9786, 34.5676, 66.9874, 0.0291249, 31.1422, 66.9874, 15.0368, 21.5444, 66.9874, 27.0721, 7.67523, 66.9874, 33.7511, -7.71842, 66.9874, 33.7511, -21.5876, 66.9874, 27.0721, -31.1854, 66.9874, 15.0368, -15.0951, 69.4624, 0.0291359, -13.6024, 69.4624, -6.51102, -9.41979, 69.4624, -11.7558, -3.37578, 69.4624, -14.6665, 3.33257, 69.4624, -14.6665, 9.37658, 69.4624, -11.7558, 13.5592, 69.4624, -6.51102, 15.0519, 69.4624, 0.0291291, 13.5592, 69.4624, 6.56929, 9.37659, 69.4624, 11.8141, 3.33258, 69.4624, 14.7247, -3.37577, 69.4624, 14.7247, -9.41979, 69.4624, 11.8141, -13.6024, 69.4624, 6.56929, -11.364, 79.2051, 0.0291348, -10.2408, 79.2051, -4.89216, -7.09349, 79.2051, -8.83874, -2.54553, 79.2051, -11.0289, 2.50233, 79.2051, -11.0289, 7.05029, 79.2051, -8.83874, 10.1976, 79.2051, -4.89216, 11.3208, 79.2051, 0.0291297, 10.1976, 79.2051, 4.95043, 7.05029, 79.2051, 8.89699, 2.50233, 79.2051, 11.0872, -2.54553, 79.2051, 11.0872, -7.09349, 79.2051, 8.897, -10.2408, 79.2051, 4.95043, -10.6446, 185.788, 0.0291346, -9.59258, 185.788, -4.58001, -6.64493, 185.788, -8.27626, -2.38544, 185.788, -10.3275, 2.34223, 185.788, -10.3275, 6.60172, 185.788, -8.27626, 9.54938, 185.788, -4.58001, 10.6014, 185.788, 0.0291298, 9.54938, 185.788, 4.63827, 6.60173, 185.788, 8.33451, 2.34224, 185.788, 10.3858, -2.38544, 185.788, 10.3858, -6.64493, 185.788, 8.33451, -9.59258, 185.788, 4.63827, -12.5974, 195.887, 0.0291353, -11.352, 195.888, -5.42728, -7.86246, 195.888, -9.80299, -2.81997, 195.887, -12.2313, 2.77677, 195.887, -12.2313, 7.81925, 195.888, -9.80299, 11.3088, 195.888, -5.42729, 12.5542, 195.888, 0.0291296, 11.3088, 195.888, 5.48555, 7.81926, 195.888, 9.86125, 2.77677, 195.888, 12.2896, -2.81997, 195.888, 12.2896, -7.86246, 195.888, 9.86125, -11.352, 195.888, 5.48555, -12.5974, 201.638, 0.0291353, -11.352, 201.638, -5.42728, -7.86246, 201.638, -9.80299, -2.81997, 201.638, -12.2313, 2.77677, 201.638, -12.2313, 7.81925, 201.638, -9.80299, 11.3088, 201.638, -5.42729, 12.5542, 201.638, 0.0291296, 11.3088, 201.638, 5.48555, 7.81926, 201.638, 9.86125, 2.77677, 201.638, 12.2896, -2.81997, 201.638, 12.2896, -7.86246, 201.638, 9.86125, -11.352, 201.638, 5.48555, -11.6939, 201.638, 0.0291351, -10.538, 201.638, -5.03529, -7.29918, 201.638, -9.09665, -2.61894, 201.638, -11.3505, 2.57573, 201.638, -11.3505, 7.25597, 201.638, -9.09666, 10.4948, 201.638, -5.0353, 11.6507, 201.638, 0.0291298, 10.4948, 201.638, 5.09356, 7.25598, 201.638, 9.15492, 2.57574, 201.638, 11.4088, -2.61894, 201.638, 11.4088, -7.29918, 201.638, 9.15492, -10.538, 201.638, 5.09356, -11.6939, 195.887, 0.0291351, -10.538, 195.887, -5.03529, -7.29918, 195.887, -9.09665, -2.61894, 195.887, -11.3505, 2.57573, 195.887, -11.3505, 7.25597, 195.887, -9.09666, 10.4948, 195.887, -5.0353, 11.6507, 195.887, 0.0291298, 10.4948, 195.887, 5.09356, 7.25598, 195.887, 9.15492, 2.57574, 195.887, 11.4088, -2.61894, 195.887, 11.4088, -7.29918, 195.887, 9.15492, -10.538, 195.887, 5.09356, -4.72766, 195.887, 0.0291335, -4.26161, 195.887, -2.01275, -2.95578, 195.887, -3.65021, -1.0688, 195.887, -4.55894, 1.02559, 195.887, -4.55894, 2.91258, 195.887, -3.65021, 4.21841, 195.887, -2.01275, 4.68446, 195.887, 0.0291314, 4.21841, 195.887, 2.07102, 2.91258, 195.887, 3.70848, 1.0256, 195.887, 4.6172, -1.0688, 195.887, 4.6172, -2.95578, 195.887, 3.70848, -4.26161, 195.887, 2.07101, -4.72766, 211.874, 0.0291335, -4.26161, 211.874, -2.01275, -2.95578, 211.874, -3.65021, -1.0688, 211.874, -4.55894, 1.02559, 211.874, -4.55894, 2.91258, 211.874, -3.65021, 4.21841, 211.874, -2.01275, 4.68446, 211.874, 0.0291314, 4.21841, 211.874, 2.07102, 2.91258, 211.874, 3.70848, 1.0256, 211.874, 4.6172, -1.0688, 211.874, 4.6172, -2.95578, 211.874, 3.70848, -4.26161, 211.874, 2.07101, -11.1765, 106.98, 0.0291347, -11.0073, 132.056, 0.0291347, -10.8283, 158.567, 0.0291347, -10.0719, 106.98, -4.81081, -9.91936, 132.056, -4.73737, -9.75813, 158.567, -4.65973, -6.9766, 106.98, -8.69215, -6.87106, 132.056, -8.55982, -6.75949, 158.567, -8.41991, -2.50381, 106.98, -10.8461, -2.46615, 132.056, -10.6811, -2.42633, 158.567, -10.5067, 2.46061, 106.98, -10.8461, 2.42294, 132.056, -10.6811, 2.38312, 158.567, -10.5067, 6.93339, 106.98, -8.69216, 6.82786, 132.056, -8.55982, 6.71628, 158.567, -8.41991, 10.0287, 106.98, -4.81082, 9.87615, 132.056, -4.73738, 9.71492, 158.567, -4.65973, 11.1333, 106.98, 0.0291297, 10.9641, 132.056, 0.0291297, 10.7851, 158.567, 0.0291298, 10.0287, 106.98, 4.86908, 9.87615, 132.056, 4.79564, 9.71493, 158.567, 4.718, 6.9334, 106.98, 8.75041, 6.82786, 132.056, 8.61808, 6.71629, 158.567, 8.47817, 2.46061, 106.98, 10.9044, 2.42295, 132.056, 10.7394, 2.38313, 158.567, 10.5649, -2.50381, 106.98, 10.9044, -2.46614, 132.056, 10.7394, -2.42632, 158.567, 10.5649, -6.9766, 106.98, 8.75042, -6.87106, 132.056, 8.61808, -6.75949, 158.567, 8.47817, -10.0719, 106.98, 4.86908, -9.91936, 132.056, 4.79564, -9.75813, 158.567, 4.718, -11.4897, 78.8768, 0.0291348, -10.354, 78.8768, -4.9467, -7.17187, 78.8768, -8.93702, -2.5735, 78.8768, -11.1515, 2.5303, 78.8768, -11.1515, 7.12866, 78.8768, -8.93702, 10.3108, 78.8768, -4.94671, 11.4465, 78.8768, 0.0291296, 10.3108, 78.8768, 5.00497, 7.12867, 78.8768, 8.99528, 2.5303, 78.8768, 11.2097, -2.5735, 78.8768, 11.2097, -7.17187, 78.8768, 8.99528, -10.354, 78.8768, 5.00497, -11.1788, 106.652, 0.0291347, -10.0739, 106.652, -4.81177, -6.97798, 106.652, -8.69389, -2.5043, 106.652, -10.8483, 2.4611, 106.652, -10.8483, 6.93477, 106.652, -8.69389, 10.0307, 106.652, -4.81178, 11.1356, 106.652, 0.0291297, 10.0307, 106.652, 4.87004, 6.93478, 106.652, 8.75215, 2.4611, 106.652, 10.9066, -2.5043, 106.652, 10.9066, -6.97798, 106.652, 8.75215, -10.0739, 106.652, 4.87004, -11.0095, 131.728, 0.0291347, -10.8305, 158.238, 0.0291347, -9.92136, 131.728, -4.73833, -9.76013, 158.238, -4.66069, -6.87244, 131.728, -8.56155, -6.76087, 158.238, -8.42164, -2.46664, 131.728, -10.6833, -2.42682, 158.238, -10.5088, 2.42343, 131.728, -10.6833, 2.38361, 158.238, -10.5088, 6.82924, 131.728, -8.56155, 6.71766, 158.238, -8.42165, 9.87815, 131.728, -4.73834, 9.71692, 158.238, -4.66069, 10.9663, 131.728, 0.0291297, 10.7873, 158.238, 0.0291298, 9.87815, 131.728, 4.7966, 9.71692, 158.238, 4.71896, 6.82924, 131.728, 8.61981, 6.71767, 158.238, 8.4799, 2.42344, 131.728, 10.7415, 2.38362, 158.238, 10.5671, -2.46664, 131.728, 10.7415, -2.42682, 158.238, 10.5671, -6.87244, 131.728, 8.61981, -6.76087, 158.238, 8.4799, -9.92135, 131.728, 4.7966, -9.76013, 158.238, 4.71896, -11.1281, 106.988, -5.31949, -12.3489, 106.988, 0.0291348, -11.1281, 106.988, 5.37775, -7.70756, 106.988, 9.66701, -2.76469, 106.988, 12.0474, 2.72149, 106.988, 12.0474, 7.66436, 106.988, 9.667, 11.0849, 106.988, 5.37775, 12.3057, 106.988, 0.0291327, 11.0849, 106.988, -5.31949, 7.66435, 106.988, -9.60875, 2.72148, 106.988, -11.9891, -2.76469, 106.988, -11.9891, -7.70756, 106.988, -9.60874, -12.3511, 106.66, 0.0291348, -11.1301, 106.66, -5.32044, -7.70894, 106.66, -9.61048, -2.76518, 106.66, -11.9913, 2.72197, 106.66, -11.9913, 7.66573, 106.66, -9.61048, 11.0869, 106.66, -5.32045, 12.3079, 106.66, 0.0291259, 11.0869, 106.66, 5.37871, 7.66574, 106.66, 9.66874, 2.72198, 106.66, 12.0495, -2.76518, 106.66, 12.0495, -7.70894, 106.66, 9.66874, -11.1301, 106.66, 5.37871, -11.3394, 79.2051, -5.42121, -12.5834, 79.2051, 0.0291347, -11.3394, 79.2051, 5.47948, -7.85373, 79.2051, 9.85031, -2.81686, 79.2051, 12.2759, 2.77366, 79.2051, 12.2759, 7.81053, 79.2051, 9.85031, 11.2962, 79.2051, 5.47948, 12.5402, 79.2051, 0.0291292, 11.2962, 79.2051, -5.42121, 7.81053, 79.2051, -9.79205, 2.77365, 79.2051, -12.2177, -2.81686, 79.2051, -12.2177, -7.85373, 79.2051, -9.79205, -12.5846, 78.8768, 0.0291348, -11.3405, 78.8768, -5.42174, -7.8545, 78.8768, -9.793, -2.81713, 78.8768, -12.2189, 2.77392, 78.8768, -12.2189, 7.81129, 78.8768, -9.79301, 11.2973, 78.8768, -5.42174, 12.5414, 78.8768, 0.0291292, 11.2973, 78.8768, 5.48001, 7.8113, 78.8768, 9.85126, 2.77393, 78.8768, 12.2771, -2.81713, 78.8768, 12.2771, -7.8545, 78.8768, 9.85127, -11.3405, 78.8768, 5.48001, -10.9756, 132.064, -5.24604, -12.1796, 132.064, 0.0291348, -10.9756, 132.064, 5.30431, -7.60202, 132.064, 9.53467, -2.72702, 132.064, 11.8823, 2.68382, 132.064, 11.8823, 7.55882, 132.064, 9.53467, 10.9324, 132.064, 5.30432, 12.1364, 132.064, 0.0291294, 10.9324, 132.064, -5.24605, 7.55881, 132.064, -9.47641, 2.68381, 132.064, -11.8241, -2.72702, 132.064, -11.8241, -7.60202, 132.064, -9.47641, -12.1819, 131.736, 0.0291348, -10.9776, 131.736, -5.247, -7.6034, 131.736, -9.47814, -2.72751, 131.736, -11.8262, 2.68431, 131.736, -11.8262, 7.5602, 131.736, -9.47814, 10.9344, 131.736, -5.247, 12.1387, 131.736, 0.0291294, 10.9344, 131.736, 5.30527, 7.5602, 131.736, 9.5364, 2.68431, 131.736, 11.8845, -2.72751, 131.736, 11.8845, -7.6034, 131.736, 9.53641, -10.9776, 131.736, 5.30527, -10.8144, 158.575, -5.1684, -12.0007, 158.575, 0.0291382, -10.8144, 158.575, 5.22667, -7.49045, 158.575, 9.39476, -2.6872, 158.575, 11.7079, 2.644, 158.575, 11.7079, 7.44725, 158.575, 9.39476, 10.7712, 158.575, 5.22667, 11.9575, 158.575, 0.0291329, 10.7712, 158.575, -5.16841, 7.44724, 158.575, -9.3365, 2.644, 158.575, -11.6496, -2.6872, 158.575, -11.6496, -7.49045, 158.575, -9.3365, -12.0029, 158.246, 0.0291314, -10.8164, 158.246, -5.16936, -7.49183, 158.246, -9.33823, -2.68769, 158.246, -11.6518, 2.64449, 158.246, -11.6518, 7.44862, 158.246, -9.33823, 10.7732, 158.246, -5.16936, 11.9597, 158.246, 0.0291294, 10.7732, 158.246, 5.22763, 7.44863, 158.246, 9.39649, 2.6445, 158.246, 11.71, -2.68769, 158.246, 11.71, -7.49183, 158.246, 9.3965, -10.8164, 158.246, 5.22762]; + uvs = new [0.252988, 0.9995, 0.252988, 0.9995, 0.810116, 0.939229, 0.810116, 0.939229, 0.268124, 0.987349, 0.827968, 0.950501, 0.554968, 0.973766, 0.0495003, 0.827973, 0.000499547, 0.252994, 0.0145789, 0.273758, 0.0592925, 0.809761, 0.10731, 0.823047, 0.118363, 0.952744, 0.176955, 0.107317, 0.89269, 0.176961, 0.952744, 0.881638, 0.823046, 0.892691, 0.823046, 0.892691, 0.939557, 0.868521, 0.952744, 0.881638, 0.938599, 0.868603, 0.938599, 0.868603, 0.926872, 0.730998, 0.805067, 0.879982, 0.118363, 0.952744, 0.0472566, 0.11837, 0.176955, 0.107317, 0.881637, 0.0472639, 0.0629411, 0.132481, 0.0745455, 0.268648, 0.0745455, 0.268648, 0.118363, 0.952744, 0.132872, 0.93606, 0.274191, 0.984901, 0.172028, 0.0495076, 0.248061, 0.941691, 0.252988, 0.9995, 0.248061, 0.941691, 0.000499547, 0.252994, 0.0583095, 0.248067, 0.999501, 0.747014, 0.999501, 0.747014, 0.941691, 0.751941, 0.999501, 0.747014, 0.248061, 0.941691, 0.248061, 0.941691, 0.000499547, 0.252994, 0.0583095, 0.248067, 0.751939, 0.0583168, 0.726516, 0.0234025, 0.000499547, 0.252994, 0.0133549, 0.270725, 0.252988, 0.9995, 0.751917, 0.0583186, 0.118363, 0.952744, 0.0472566, 0.11837, 0.952646, 0.880496, 0.941691, 0.751941, 0.751939, 0.0583168, 0.881637, 0.0472639, 0.0624211, 0.132042, 0.0738007, 0.265573, 0.120533, 0.802611, 0.0600876, 0.807762, 0.269264, 0.927092, 0.10731, 0.823047, 0.172028, 0.0495076, 0.176955, 0.107317, 0.172028, 0.0495076, 0.9505, 0.172034, 0.9505, 0.172034, 0.827972, 0.9505, 0.827972, 0.9505, 0.813454, 0.879268, 0.10731, 0.823047, 0.0495003, 0.827973, 0.0495003, 0.827973, 0.89269, 0.176961, 0.89269, 0.176961, 0.9505, 0.172034, 0.188195, 0.0692785, 0.121655, 0.804446, 0.824718, 0.892842, 0.827965, 0.950501, 0.824718, 0.892842, 0.0600876, 0.807762, 0.197432, 0.121019, 0.132138, 0.938778, 0.269264, 0.927092, 0.730756, 0.0731557, 0.866685, 0.0615718, 0.87833, 0.198218, 0.935661, 0.193332, 0.747103, 0.000499547, 0.999447, 0.74639, 0.999501, 0.747014, 0.172028, 0.0495076, 0.747012, 0.000507295, 0.942645, 0.190323, 0.989134, 0.735829, 0.192382, 0.0617722, 0.725911, 0.0163047, 0.981088, 0.726378, 0.981088, 0.726378, 0.9505, 0.172034, 0.813454, 0.879268, 0.818666, 0.940432, 0.939557, 0.868521, 0.928688, 0.740981, 0.928688, 0.740981, 0.942645, 0.190323, 0.0738007, 0.265573, 0.0624211, 0.132042, 0.192598, 0.120949, 0.192598, 0.120949, 0.188195, 0.0692785, 0.0133549, 0.270725, 0.0592925, 0.809761, 0.132872, 0.93606, 0.262809, 0.924987, 0.262809, 0.924987, 0.268124, 0.987349, 0.731323, 0.0798053, 0.747012, 0.000507295, 0.725911, 0.0163047, 0.730756, 0.0731557, 0.866685, 0.0615718, 0.881637, 0.0472639, 0.87833, 0.198218, 0.89269, 0.176961, 0.935661, 0.193332, 0.0145789, 0.273758, 0.10731, 0.823047, 0.120533, 0.802611, 0.132138, 0.938778, 0.274191, 0.984901, 0.805067, 0.879982, 0.941691, 0.751941, 0.926872, 0.730998, 0.0583095, 0.248067, 0.0629411, 0.132481, 0.0472566, 0.11837, 0.176955, 0.107317, 0.197432, 0.121019, 0.192382, 0.0617722, 0.0495003, 0.827973, 0.121655, 0.804446, 0.554968, 0.962904, 0.818666, 0.940432, 0.989134, 0.735829, 0.747103, 0.000499547, 0.726516, 0.0234025, 0.881637, 0.0472639, 0.0583095, 0.248067, 0.0472566, 0.11837, 0.519982, 0.916864, 0.519982, 0.976747, 0.519982, 0.976747, 0.519982, 0.965886, 0.519982, 0.965886, 0.519982, 0.916864, 0.554968, 0.916864, 0.554968, 0.962904, 0.554968, 0.973766, 0.554968, 0.916864, 0.952646, 0.880496, 0.879084, 0.19574, 0.879084, 0.19574, 0.751924, 0.058318, 0.86821, 0.0681397, 0.731323, 0.0798053, 0.941691, 0.751941, 0.86821, 0.0681397, 0.187708, 0.49972, 0.197912, 0.485676, 0.214421, 0.49104, 0.214421, 0.508399, 0.197912, 0.513763, 0.187708, 0.49972, 0.197912, 0.485676, 0.214421, 0.49104, 0.214421, 0.508399, 0.197912, 0.513763, 0.217152, 0.62872, 0.227355, 0.614676, 0.243865, 0.620041, 0.243865, 0.637399, 0.227355, 0.642763, 0.217152, 0.62872, 0.227355, 0.614676, 0.243865, 0.620041, 0.243865, 0.637399, 0.227355, 0.642763, 0.299651, 0.73217, 0.309855, 0.718127, 0.326364, 0.723491, 0.326364, 0.74085, 0.309855, 0.746214, 0.299651, 0.73217, 0.309855, 0.718127, 0.326364, 0.723491, 0.326364, 0.74085, 0.309855, 0.746214, 0.418866, 0.789581, 0.42907, 0.775537, 0.445579, 0.780901, 0.445579, 0.79826, 0.42907, 0.803624, 0.418866, 0.789581, 0.42907, 0.775537, 0.445579, 0.780901, 0.445579, 0.79826, 0.42907, 0.803624, 0.551185, 0.789581, 0.561388, 0.775537, 0.577898, 0.780901, 0.577898, 0.79826, 0.561388, 0.803624, 0.551185, 0.789581, 0.561388, 0.775537, 0.577898, 0.780901, 0.577898, 0.79826, 0.561388, 0.803624, 0.6704, 0.73217, 0.680604, 0.718127, 0.697113, 0.723491, 0.697113, 0.74085, 0.680604, 0.746214, 0.6704, 0.73217, 0.680604, 0.718127, 0.697113, 0.723491, 0.697113, 0.74085, 0.680604, 0.746214, 0.7529, 0.62872, 0.763103, 0.614677, 0.779612, 0.620041, 0.779612, 0.6374, 0.763103, 0.642764, 0.7529, 0.62872, 0.763103, 0.614677, 0.779612, 0.620041, 0.779612, 0.6374, 0.763103, 0.642764, 0.782344, 0.49972, 0.792547, 0.485676, 0.809056, 0.49104, 0.809056, 0.508399, 0.792547, 0.513763, 0.782344, 0.49972, 0.792547, 0.485676, 0.809056, 0.49104, 0.809056, 0.508399, 0.792547, 0.513763, 0.7529, 0.37072, 0.763103, 0.356676, 0.779613, 0.36204, 0.779613, 0.379399, 0.763103, 0.384763, 0.7529, 0.37072, 0.763103, 0.356676, 0.779613, 0.36204, 0.779613, 0.379399, 0.763103, 0.384763, 0.670401, 0.267269, 0.680604, 0.253226, 0.697113, 0.25859, 0.697113, 0.275949, 0.680604, 0.281313, 0.670401, 0.267269, 0.680604, 0.253226, 0.697113, 0.25859, 0.697113, 0.275949, 0.680604, 0.281313, 0.551185, 0.209859, 0.561389, 0.195815, 0.577898, 0.201179, 0.577898, 0.218538, 0.561389, 0.223902, 0.551185, 0.209859, 0.561389, 0.195815, 0.577898, 0.201179, 0.577898, 0.218538, 0.561389, 0.223902, 0.418866, 0.209859, 0.42907, 0.195815, 0.445579, 0.201179, 0.445579, 0.218538, 0.42907, 0.223902, 0.418866, 0.209859, 0.42907, 0.195815, 0.445579, 0.201179, 0.445579, 0.218538, 0.42907, 0.223902, 0.299651, 0.267269, 0.309855, 0.253226, 0.326364, 0.25859, 0.326364, 0.275949, 0.309855, 0.281313, 0.299651, 0.267269, 0.309855, 0.253226, 0.326364, 0.25859, 0.326364, 0.275949, 0.309855, 0.281313, 0.217152, 0.370719, 0.227355, 0.356676, 0.243865, 0.36204, 0.243865, 0.379399, 0.227355, 0.384763, 0.217152, 0.370719, 0.227355, 0.356676, 0.243865, 0.36204, 0.243865, 0.379399, 0.227355, 0.384763, 0.39068, 0.489156, 0.400727, 0.496455, 0.39689, 0.508266, 0.384471, 0.508266, 0.380633, 0.496456, 0.391616, 0.489156, 0.401662, 0.496455, 0.397825, 0.508266, 0.385407, 0.508266, 0.381569, 0.496456, 0.396902, 0.537544, 0.409121, 0.539761, 0.410788, 0.552067, 0.3996, 0.557455, 0.391018, 0.548479, 0.397745, 0.537138, 0.409964, 0.539355, 0.411631, 0.551661, 0.400443, 0.557049, 0.391861, 0.548073, 0.423503, 0.57844, 0.435474, 0.575136, 0.442315, 0.5855, 0.434573, 0.595209, 0.422946, 0.590846, 0.424086, 0.577708, 0.436057, 0.574405, 0.442899, 0.584769, 0.435156, 0.594478, 0.423529, 0.590114, 0.465213, 0.603745, 0.474565, 0.595574, 0.485226, 0.601944, 0.482463, 0.61405, 0.470094, 0.615164, 0.465422, 0.602832, 0.474774, 0.594662, 0.485434, 0.601031, 0.482671, 0.613138, 0.470303, 0.614251, 0.513773, 0.608446, 0.518654, 0.597027, 0.531022, 0.59814, 0.533786, 0.610247, 0.523125, 0.616616, 0.513565, 0.607534, 0.518446, 0.596115, 0.530814, 0.597228, 0.533577, 0.609335, 0.522917, 0.615704, 0.559563, 0.591613, 0.559006, 0.579207, 0.570633, 0.574843, 0.578376, 0.584553, 0.571534, 0.594916, 0.55898, 0.590881, 0.558423, 0.578475, 0.57005, 0.574112, 0.577792, 0.583821, 0.570951, 0.594185, 0.593515, 0.556579, 0.587631, 0.545643, 0.596213, 0.536667, 0.607401, 0.542056, 0.605734, 0.554362, 0.592672, 0.556173, 0.586788, 0.545237, 0.59537, 0.536261, 0.606558, 0.54165, 0.604891, 0.553956, 0.608904, 0.510284, 0.598858, 0.502984, 0.602695, 0.491173, 0.615114, 0.491174, 0.618951, 0.502984, 0.607968, 0.510284, 0.597922, 0.502984, 0.60176, 0.491173, 0.614178, 0.491174, 0.618015, 0.502984, 0.602682, 0.461896, 0.590463, 0.459678, 0.588796, 0.447372, 0.599985, 0.441984, 0.608567, 0.450961, 0.601839, 0.462302, 0.58962, 0.460084, 0.587954, 0.447778, 0.599142, 0.44239, 0.607724, 0.451366, 0.576082, 0.421, 0.564111, 0.424303, 0.557269, 0.413939, 0.565012, 0.40423, 0.576639, 0.408594, 0.575498, 0.421731, 0.563527, 0.425035, 0.556686, 0.414671, 0.564429, 0.404962, 0.576055, 0.409325, 0.534371, 0.395695, 0.525019, 0.403865, 0.514358, 0.397496, 0.517122, 0.385389, 0.52949, 0.384276, 0.534163, 0.396607, 0.524811, 0.404778, 0.51415, 0.398408, 0.516913, 0.386301, 0.529282, 0.385188, 0.485812, 0.390993, 0.480931, 0.402412, 0.468562, 0.401299, 0.465799, 0.389193, 0.476459, 0.382823, 0.48602, 0.391906, 0.481139, 0.403325, 0.46877, 0.402212, 0.466007, 0.390105, 0.476668, 0.383735, 0.440021, 0.407827, 0.440578, 0.420233, 0.428952, 0.424596, 0.421209, 0.414887, 0.42805, 0.404523, 0.440605, 0.408558, 0.441162, 0.420964, 0.429535, 0.425328, 0.421792, 0.415619, 0.428634, 0.405255, 0.406069, 0.44286, 0.411954, 0.453796, 0.403372, 0.462772, 0.392183, 0.457384, 0.39385, 0.445078, 0.406912, 0.443266, 0.412797, 0.454202, 0.404215, 0.463178, 0.393026, 0.45779, 0.394693, 0.445484, 0.392484, 0.489156, 0.40253, 0.496455, 0.398693, 0.508266, 0.386275, 0.508266, 0.382437, 0.496456, 0.393472, 0.489156, 0.403519, 0.496455, 0.399681, 0.508266, 0.387263, 0.508266, 0.383425, 0.496456, 0.398527, 0.536761, 0.410746, 0.538978, 0.412413, 0.551284, 0.401225, 0.556673, 0.392643, 0.547697, 0.399417, 0.536332, 0.411636, 0.53855, 0.413304, 0.550856, 0.402115, 0.556244, 0.393533, 0.547268, 0.424627, 0.57703, 0.436598, 0.573726, 0.44344, 0.58409, 0.435697, 0.593799, 0.42407, 0.589436, 0.425243, 0.576257, 0.437214, 0.572954, 0.444056, 0.583318, 0.436313, 0.593027, 0.424686, 0.588663, 0.465615, 0.601986, 0.474967, 0.593816, 0.485628, 0.600185, 0.482864, 0.612292, 0.470496, 0.613405, 0.465835, 0.601023, 0.475187, 0.592852, 0.485847, 0.599222, 0.483084, 0.611329, 0.470716, 0.612442, 0.513372, 0.606688, 0.518252, 0.595269, 0.530621, 0.596382, 0.533384, 0.608489, 0.522723, 0.614858, 0.513152, 0.605724, 0.518033, 0.594305, 0.530401, 0.595418, 0.533164, 0.607525, 0.522504, 0.613895, 0.558439, 0.590203, 0.557882, 0.577797, 0.569508, 0.573433, 0.577251, 0.583142, 0.57041, 0.593506, 0.557823, 0.58943, 0.557266, 0.577024, 0.568892, 0.572661, 0.576635, 0.58237, 0.569793, 0.592734, 0.59189, 0.555796, 0.586006, 0.544861, 0.594588, 0.535885, 0.605776, 0.541273, 0.604109, 0.553579, 0.591, 0.555368, 0.585115, 0.544432, 0.593698, 0.535456, 0.604886, 0.540844, 0.603219, 0.55315, 0.6071, 0.510284, 0.597054, 0.502984, 0.600892, 0.491173, 0.61331, 0.491174, 0.617147, 0.502984, 0.606112, 0.510284, 0.596066, 0.502984, 0.599903, 0.491173, 0.612322, 0.491174, 0.616159, 0.502984, 0.601057, 0.462678, 0.588838, 0.460461, 0.587172, 0.448155, 0.59836, 0.442767, 0.606942, 0.451743, 0.600167, 0.463107, 0.587948, 0.46089, 0.586281, 0.448583, 0.59747, 0.443196, 0.606052, 0.452172, 0.574957, 0.42241, 0.562986, 0.425713, 0.556145, 0.415349, 0.563888, 0.40564, 0.575514, 0.410004, 0.574341, 0.423183, 0.56237, 0.426486, 0.555529, 0.416122, 0.563272, 0.406413, 0.574898, 0.410777, 0.53397, 0.397453, 0.524618, 0.405624, 0.513957, 0.399254, 0.51672, 0.387147, 0.529089, 0.386034, 0.53375, 0.398417, 0.524398, 0.406587, 0.513737, 0.400218, 0.5165, 0.388111, 0.528869, 0.386998, 0.486213, 0.392752, 0.481332, 0.404171, 0.468964, 0.403058, 0.4662, 0.390951, 0.476861, 0.384581, 0.486433, 0.393715, 0.481552, 0.405134, 0.469183, 0.404021, 0.46642, 0.391914, 0.477081, 0.385545, 0.441146, 0.409237, 0.441703, 0.421642, 0.430076, 0.426006, 0.422333, 0.416297, 0.429175, 0.405933, 0.441762, 0.410009, 0.442319, 0.422415, 0.430692, 0.426779, 0.42295, 0.41707, 0.429791, 0.406706, 0.407694, 0.443643, 0.413579, 0.454578, 0.404997, 0.463555, 0.393808, 0.458167, 0.395475, 0.445861, 0.408584, 0.444072, 0.414469, 0.455007, 0.405887, 0.463983, 0.394699, 0.458596, 0.396366, 0.446289, 0.391829, 0.492484, 0.39871, 0.497484, 0.396082, 0.505573, 0.387576, 0.505573, 0.384948, 0.497484, 0.392749, 0.492484, 0.399631, 0.497484, 0.397002, 0.505573, 0.388497, 0.505573, 0.385868, 0.497484, 0.399381, 0.540044, 0.40775, 0.541563, 0.408892, 0.549991, 0.401229, 0.553682, 0.395351, 0.547534, 0.40021, 0.539645, 0.40858, 0.541163, 0.409721, 0.549592, 0.402058, 0.553283, 0.39618, 0.547135, 0.426821, 0.579617, 0.43502, 0.577354, 0.439706, 0.584453, 0.434403, 0.591103, 0.42644, 0.588114, 0.427395, 0.578897, 0.435594, 0.576635, 0.44028, 0.583733, 0.434977, 0.590383, 0.427014, 0.587394, 0.468714, 0.603365, 0.475119, 0.597769, 0.482421, 0.602132, 0.480529, 0.610424, 0.472057, 0.611187, 0.468919, 0.602468, 0.475324, 0.596872, 0.482626, 0.601234, 0.480733, 0.609527, 0.472262, 0.610289, 0.516762, 0.606586, 0.520105, 0.598764, 0.528577, 0.599527, 0.53047, 0.607819, 0.523168, 0.612182, 0.516557, 0.605688, 0.5199, 0.597867, 0.528372, 0.598629, 0.530265, 0.606922, 0.522963, 0.611284, 0.561449, 0.588639, 0.561068, 0.580142, 0.569031, 0.577154, 0.574334, 0.583804, 0.569649, 0.590902, 0.560875, 0.58792, 0.560494, 0.579423, 0.568457, 0.576434, 0.573761, 0.583084, 0.569075, 0.590183, 0.593924, 0.553082, 0.589894, 0.545592, 0.595772, 0.539444, 0.603435, 0.543134, 0.602293, 0.551563, 0.593095, 0.552682, 0.589065, 0.545192, 0.594943, 0.539044, 0.602606, 0.542735, 0.601464, 0.551164, 0.607755, 0.506955, 0.600874, 0.501956, 0.603503, 0.493866, 0.612009, 0.493866, 0.614637, 0.501956, 0.606835, 0.506955, 0.599954, 0.501956, 0.602582, 0.493866, 0.611088, 0.493866, 0.613716, 0.501956, 0.600203, 0.459396, 0.591834, 0.457877, 0.590692, 0.449448, 0.598356, 0.445757, 0.604234, 0.451906, 0.599374, 0.459795, 0.591005, 0.458276, 0.589863, 0.449847, 0.597527, 0.446157, 0.603404, 0.452305, 0.572763, 0.419823, 0.564564, 0.422085, 0.559878, 0.414987, 0.565181, 0.408337, 0.573145, 0.411325, 0.572189, 0.420542, 0.56399, 0.422805, 0.559304, 0.415706, 0.564607, 0.409056, 0.572571, 0.412045, 0.530871, 0.396074, 0.524465, 0.40167, 0.517163, 0.397308, 0.519056, 0.389015, 0.527527, 0.388253, 0.530666, 0.396972, 0.52426, 0.402568, 0.516958, 0.398205, 0.518851, 0.389913, 0.527323, 0.38915, 0.482822, 0.392854, 0.479479, 0.400675, 0.471008, 0.399913, 0.469115, 0.39162, 0.476417, 0.387258, 0.483027, 0.393752, 0.479684, 0.401573, 0.471212, 0.40081, 0.46932, 0.392518, 0.476622, 0.388155, 0.438135, 0.4108, 0.438517, 0.419297, 0.430553, 0.422286, 0.42525, 0.415636, 0.429936, 0.408537, 0.438709, 0.41152, 0.439091, 0.420017, 0.431127, 0.423006, 0.425824, 0.416356, 0.43051, 0.409257, 0.40566, 0.446358, 0.40969, 0.453848, 0.403813, 0.459996, 0.396149, 0.456305, 0.397291, 0.447877, 0.406489, 0.446757, 0.41052, 0.454247, 0.404642, 0.460395, 0.396979, 0.456705, 0.39812, 0.448276, 0.392462, 0.492484, 0.399343, 0.497484, 0.396715, 0.505573, 0.388209, 0.505573, 0.38558, 0.497484, 0.393383, 0.492484, 0.400265, 0.497484, 0.397636, 0.505573, 0.389131, 0.505573, 0.386502, 0.497484, 0.399951, 0.539769, 0.40832, 0.541288, 0.409462, 0.549717, 0.401799, 0.553407, 0.395921, 0.54726, 0.400782, 0.53937, 0.409151, 0.540888, 0.410293, 0.549317, 0.402629, 0.553008, 0.396751, 0.54686, 0.427216, 0.579122, 0.435415, 0.576859, 0.440101, 0.583958, 0.434798, 0.590608, 0.426834, 0.587619, 0.42779, 0.578402, 0.43599, 0.576139, 0.440675, 0.583238, 0.435372, 0.589888, 0.427409, 0.586899, 0.468855, 0.602749, 0.47526, 0.597152, 0.482562, 0.601515, 0.480669, 0.609807, 0.472198, 0.61057, 0.46906, 0.60185, 0.475465, 0.596254, 0.482767, 0.600616, 0.480875, 0.608909, 0.472403, 0.609671, 0.516621, 0.605968, 0.519964, 0.598147, 0.528436, 0.59891, 0.530329, 0.607202, 0.523027, 0.611565, 0.516416, 0.60507, 0.519759, 0.597249, 0.528231, 0.598011, 0.530124, 0.606304, 0.522822, 0.610666, 0.561055, 0.588145, 0.560673, 0.579648, 0.568637, 0.576659, 0.57394, 0.583309, 0.569254, 0.590407, 0.56048, 0.587424, 0.560099, 0.578927, 0.568062, 0.575938, 0.573365, 0.582588, 0.568679, 0.589687, 0.593354, 0.552807, 0.589324, 0.545317, 0.595202, 0.539169, 0.602865, 0.54286, 0.601723, 0.551289, 0.592524, 0.552407, 0.588493, 0.544917, 0.594372, 0.538769, 0.602035, 0.54246, 0.600893, 0.550889, 0.607123, 0.506955, 0.600241, 0.501956, 0.60287, 0.493866, 0.611376, 0.493866, 0.614004, 0.501956, 0.606201, 0.506955, 0.59932, 0.501956, 0.601948, 0.493866, 0.610454, 0.493866, 0.613082, 0.501956, 0.599633, 0.45967, 0.591264, 0.458151, 0.590122, 0.449722, 0.597786, 0.446032, 0.603664, 0.45218, 0.598803, 0.46007, 0.590434, 0.458551, 0.589292, 0.450122, 0.596955, 0.446432, 0.602833, 0.45258, 0.572369, 0.420317, 0.564169, 0.42258, 0.559484, 0.415481, 0.564787, 0.408831, 0.57275, 0.41182, 0.571794, 0.421038, 0.563595, 0.423301, 0.558909, 0.416202, 0.564212, 0.409552, 0.572176, 0.412541, 0.53073, 0.396691, 0.524324, 0.402287, 0.517022, 0.397925, 0.518915, 0.389632, 0.527387, 0.38887, 0.530525, 0.39759, 0.524119, 0.403186, 0.516817, 0.398823, 0.51871, 0.390531, 0.527182, 0.389768, 0.482963, 0.393471, 0.47962, 0.401292, 0.471148, 0.40053, 0.469256, 0.392237, 0.476558, 0.387875, 0.483168, 0.394369, 0.479825, 0.402191, 0.471354, 0.401428, 0.469461, 0.393136, 0.476763, 0.388773, 0.43853, 0.411295, 0.438911, 0.419792, 0.430948, 0.422781, 0.425645, 0.416131, 0.43033, 0.409032, 0.439104, 0.412015, 0.439486, 0.420512, 0.431522, 0.423501, 0.426219, 0.416851, 0.430905, 0.409753, 0.40623, 0.446632, 0.410261, 0.454122, 0.404383, 0.46027, 0.396719, 0.45658, 0.397861, 0.448151, 0.40706, 0.447032, 0.411091, 0.454522, 0.405213, 0.46067, 0.39755, 0.45698, 0.398691, 0.448551, 0.497868, 0.516736, 0.497868, 0.477474, 0.497868, 0.412454, 0.497868, 0.543339, 0.497868, 0.59238, 0.497868, 0.347247, 0.497868, 0.614528, 0.497868, 0.441781, 0.497868, 0.469129, 0.497868, 0.41395, 0.497868, 0.38426, 0.497868, 0.533875, 0.497868, 0.529714, 0.497868, 0.530964, 0.497868, 0.422089, 0.497868, 0.552474, 0.497868, 0.515955, 0.497868, 0.464801, 0.497868, 0.557807, 0.497868, 0.457177, 0.497868, 0.50273, 0.497868, 0.416034, 0.497868, 0.4004, 0.497868, 0.413858, 0.497868, 0.545199, 0.497868, 0.491677, 0.497868, 0.390776, 0.497868, 0.614528, 0.497868, 0.39447, 0.497868, 0.478304, 0.497868, 0.530309, 0.497868, 0.41236, 0.497868, 0.404483, 0.497868, 0.54378, 0.497868, 0.369012, 0.497868, 0.547278, 0.497868, 0.59238, 0.497868, 0.542033, 0.497868, 0.451549, 0.497868, 0.393656, 0.497868, 0.549151, 0.497868, 0.554133, 0.497868, 0.440393, 0.497868, 0.380904, 0.497868, 0.597672, 0.497868, 0.410412, 0.497868, 0.441781, 0.497868, 0.523852, 0.497868, 0.462894, 0.497868, 0.530964, 0.148538, 0.49972, 0.183323, 0.652122, 0.280788, 0.774339, 0.421631, 0.842165, 0.577954, 0.842165, 0.718796, 0.77434, 0.816262, 0.652122, 0.851047, 0.49972, 0.816262, 0.347317, 0.718796, 0.2251, 0.577954, 0.157274, 0.421631, 0.157274, 0.280789, 0.2251, 0.183323, 0.347317, 0.185076, 0.49972, 0.216243, 0.636269, 0.30357, 0.745773, 0.429761, 0.806543, 0.569823, 0.806543, 0.696014, 0.745773, 0.783342, 0.636269, 0.814508, 0.49972, 0.783342, 0.363171, 0.696015, 0.253667, 0.569823, 0.192897, 0.429761, 0.192896, 0.30357, 0.253667, 0.216243, 0.363171, 0.340618, 0.49972, 0.356381, 0.568782, 0.400548, 0.624166, 0.464372, 0.654902, 0.535212, 0.654902, 0.599036, 0.624167, 0.643204, 0.568783, 0.658967, 0.49972, 0.643204, 0.430657, 0.599036, 0.375273, 0.535212, 0.344537, 0.464373, 0.344537, 0.400548, 0.375273, 0.356381, 0.430657, 0.340618, 0.49972, 0.356381, 0.568782, 0.400548, 0.624166, 0.464372, 0.654902, 0.535212, 0.654902, 0.599036, 0.624167, 0.643204, 0.568783, 0.658967, 0.49972, 0.643204, 0.430657, 0.599036, 0.375273, 0.535212, 0.344537, 0.464373, 0.344537, 0.400548, 0.375273, 0.356381, 0.430657, 0.188156, 0.49972, 0.219018, 0.634932, 0.30549, 0.743365, 0.430447, 0.80354, 0.569138, 0.80354, 0.694094, 0.743365, 0.780567, 0.634933, 0.811428, 0.49972, 0.780567, 0.364507, 0.694094, 0.256075, 0.569138, 0.195899, 0.430447, 0.195899, 0.30549, 0.256075, 0.219018, 0.364507, 0.167051, 0.49972, 0.200002, 0.64409, 0.292331, 0.759866, 0.42575, 0.824116, 0.573834, 0.824116, 0.707253, 0.759866, 0.799582, 0.64409, 0.832534, 0.49972, 0.799582, 0.35535, 0.707253, 0.239574, 0.573834, 0.175323, 0.42575, 0.175323, 0.292331, 0.239574, 0.200002, 0.35535, 0.354788, 0.49972, 0.369148, 0.562634, 0.409383, 0.613088, 0.467526, 0.641088, 0.532059, 0.641088, 0.590201, 0.613088, 0.630437, 0.562634, 0.644797, 0.49972, 0.630437, 0.436805, 0.590201, 0.386352, 0.532059, 0.358352, 0.467526, 0.358352, 0.409383, 0.386352, 0.369148, 0.436805, 0.39068, 0.49972, 0.401486, 0.547061, 0.431762, 0.585026, 0.475512, 0.606095, 0.524072, 0.606095, 0.567822, 0.585026, 0.598099, 0.547061, 0.608904, 0.49972, 0.598099, 0.452378, 0.567823, 0.414413, 0.524072, 0.393344, 0.475513, 0.393344, 0.431762, 0.414413, 0.401486, 0.452378, 0.397601, 0.49972, 0.407721, 0.544058, 0.436077, 0.579615, 0.477053, 0.599348, 0.522532, 0.599348, 0.563507, 0.579615, 0.591863, 0.544059, 0.601983, 0.49972, 0.591863, 0.455381, 0.563507, 0.419824, 0.522532, 0.400092, 0.477053, 0.400092, 0.436077, 0.419824, 0.407721, 0.455381, 0.378816, 0.49972, 0.390796, 0.552209, 0.424365, 0.594302, 0.472872, 0.617662, 0.526712, 0.617662, 0.57522, 0.594302, 0.608788, 0.552209, 0.620769, 0.49972, 0.608788, 0.44723, 0.57522, 0.405137, 0.526712, 0.381777, 0.472872, 0.381777, 0.424365, 0.405137, 0.390796, 0.44723, 0.378816, 0.49972, 0.390796, 0.552209, 0.424365, 0.594302, 0.472872, 0.617662, 0.526712, 0.617662, 0.57522, 0.594302, 0.608788, 0.552209, 0.620769, 0.49972, 0.608788, 0.44723, 0.57522, 0.405137, 0.526712, 0.381777, 0.472872, 0.381777, 0.424365, 0.405137, 0.390796, 0.44723, 0.387507, 0.49972, 0.398626, 0.548438, 0.429783, 0.587507, 0.474806, 0.609189, 0.524778, 0.609189, 0.569801, 0.587507, 0.600958, 0.548438, 0.612078, 0.49972, 0.600958, 0.451001, 0.569801, 0.411932, 0.524778, 0.39025, 0.474806, 0.39025, 0.429783, 0.411932, 0.398626, 0.451001, 0.387507, 0.49972, 0.398626, 0.548438, 0.429783, 0.587507, 0.474806, 0.609189, 0.524778, 0.609189, 0.569801, 0.587507, 0.600958, 0.548438, 0.612078, 0.49972, 0.600958, 0.451001, 0.569801, 0.411932, 0.524778, 0.39025, 0.474806, 0.39025, 0.429783, 0.411932, 0.398626, 0.451001, 0.454521, 0.49972, 0.459004, 0.519362, 0.471566, 0.535114, 0.489718, 0.543856, 0.509866, 0.543856, 0.528018, 0.535114, 0.54058, 0.519362, 0.545064, 0.49972, 0.54058, 0.480077, 0.528019, 0.464325, 0.509866, 0.455584, 0.489718, 0.455584, 0.471566, 0.464325, 0.459004, 0.480077, 0.454521, 0.49972, 0.459004, 0.519362, 0.471566, 0.535114, 0.489718, 0.543856, 0.509866, 0.543856, 0.528018, 0.535114, 0.54058, 0.519362, 0.545064, 0.49972, 0.54058, 0.480077, 0.528019, 0.464325, 0.509866, 0.455584, 0.489718, 0.455584, 0.471566, 0.464325, 0.459004, 0.480077, 0.392484, 0.49972, 0.394112, 0.49972, 0.395833, 0.49972, 0.403111, 0.546279, 0.404578, 0.545572, 0.406129, 0.544825, 0.432886, 0.583616, 0.433902, 0.582343, 0.434975, 0.580997, 0.475914, 0.604337, 0.476276, 0.60275, 0.476659, 0.601071, 0.523671, 0.604337, 0.523308, 0.60275, 0.522925, 0.601071, 0.566698, 0.583616, 0.565683, 0.582343, 0.564609, 0.580997, 0.596474, 0.546279, 0.595007, 0.545572, 0.593456, 0.544825, 0.607101, 0.49972, 0.605472, 0.49972, 0.603751, 0.49972, 0.596474, 0.453161, 0.595007, 0.453867, 0.593456, 0.454614, 0.566698, 0.415823, 0.565683, 0.417096, 0.56461, 0.418442, 0.523671, 0.395103, 0.523308, 0.39669, 0.522925, 0.398368, 0.475914, 0.395103, 0.476276, 0.39669, 0.476659, 0.398368, 0.432886, 0.415823, 0.433902, 0.417096, 0.434975, 0.418442, 0.403111, 0.453161, 0.404578, 0.453867, 0.406129, 0.454614, 0.389471, 0.49972, 0.400396, 0.547586, 0.431008, 0.585972, 0.475243, 0.607274, 0.524341, 0.607274, 0.568576, 0.585972, 0.599188, 0.547586, 0.610114, 0.49972, 0.599188, 0.451854, 0.568577, 0.413468, 0.524341, 0.392165, 0.475243, 0.392165, 0.431008, 0.413468, 0.400396, 0.451854, 0.392462, 0.49972, 0.403091, 0.546288, 0.432873, 0.583633, 0.475909, 0.604358, 0.523675, 0.604358, 0.566711, 0.583633, 0.596493, 0.546288, 0.607122, 0.49972, 0.596493, 0.453151, 0.566711, 0.415807, 0.523675, 0.395082, 0.475909, 0.395082, 0.432873, 0.415807, 0.403091, 0.453151, 0.394091, 0.49972, 0.395812, 0.49972, 0.404558, 0.545582, 0.406109, 0.544835, 0.433888, 0.58236, 0.434962, 0.581014, 0.476271, 0.60277, 0.476654, 0.601092, 0.523313, 0.60277, 0.52293, 0.601092, 0.565696, 0.58236, 0.564623, 0.581014, 0.595026, 0.545582, 0.593475, 0.544835, 0.605494, 0.49972, 0.603772, 0.49972, 0.595026, 0.453858, 0.593475, 0.454605, 0.565696, 0.41708, 0.564623, 0.418426, 0.523313, 0.396669, 0.52293, 0.398347, 0.476271, 0.396669, 0.476655, 0.398347, 0.433888, 0.41708, 0.434962, 0.418426, 0.404558, 0.453858, 0.406109, 0.454605, 0.39295, 0.551172, 0.381206, 0.49972, 0.39295, 0.448267, 0.425855, 0.407006, 0.473404, 0.384107, 0.52618, 0.384107, 0.57373, 0.407006, 0.606635, 0.448267, 0.618379, 0.49972, 0.606635, 0.551172, 0.57373, 0.592434, 0.52618, 0.615332, 0.473404, 0.615332, 0.425855, 0.592434, 0.381185, 0.49972, 0.39293, 0.551181, 0.425841, 0.59245, 0.473399, 0.615353, 0.526185, 0.615353, 0.573743, 0.59245, 0.606654, 0.551181, 0.6184, 0.49972, 0.606654, 0.448258, 0.573743, 0.406989, 0.526185, 0.384087, 0.4734, 0.384087, 0.425842, 0.406989, 0.39293, 0.448258, 0.390917, 0.552151, 0.37895, 0.49972, 0.390918, 0.447289, 0.424449, 0.405243, 0.472902, 0.381909, 0.526682, 0.381909, 0.575136, 0.405243, 0.608667, 0.447289, 0.620634, 0.49972, 0.608667, 0.552151, 0.575136, 0.594197, 0.526682, 0.617531, 0.472902, 0.617531, 0.424449, 0.594197, 0.378939, 0.49972, 0.390907, 0.552156, 0.424441, 0.594206, 0.4729, 0.617542, 0.526685, 0.617542, 0.575143, 0.594206, 0.608678, 0.552156, 0.620646, 0.49972, 0.608678, 0.447284, 0.575143, 0.405233, 0.526685, 0.381897, 0.4729, 0.381897, 0.424441, 0.405233, 0.390907, 0.447284, 0.394417, 0.550466, 0.382834, 0.49972, 0.394417, 0.448974, 0.42687, 0.408279, 0.473767, 0.385695, 0.525818, 0.385695, 0.572715, 0.408279, 0.605168, 0.448974, 0.61675, 0.49972, 0.605168, 0.550466, 0.572714, 0.591161, 0.525818, 0.613745, 0.473767, 0.613745, 0.42687, 0.591161, 0.382813, 0.49972, 0.394397, 0.550475, 0.426857, 0.591177, 0.473762, 0.613765, 0.525823, 0.613765, 0.572728, 0.591177, 0.605187, 0.550475, 0.616772, 0.49972, 0.605187, 0.448965, 0.572728, 0.408262, 0.525823, 0.385674, 0.473762, 0.385674, 0.426857, 0.408262, 0.394397, 0.448965, 0.395968, 0.549719, 0.384556, 0.49972, 0.395968, 0.449721, 0.427943, 0.409625, 0.47415, 0.387373, 0.525435, 0.387373, 0.571641, 0.409625, 0.603617, 0.449721, 0.615029, 0.49972, 0.603617, 0.549719, 0.571641, 0.589815, 0.525435, 0.612066, 0.47415, 0.612066, 0.427943, 0.589815, 0.384534, 0.49972, 0.395948, 0.549728, 0.42793, 0.589831, 0.474145, 0.612087, 0.52544, 0.612087, 0.571654, 0.589831, 0.603636, 0.549728, 0.61505, 0.49972, 0.603636, 0.449712, 0.571654, 0.409608, 0.52544, 0.387352, 0.474145, 0.387352, 0.42793, 0.409608, 0.395948, 0.449712]; + indices = new [36, 156, 157, 156, 36, 0, 52, 71, 72, 71, 52, 1, 52, 106, 121, 106, 52, 72, 135, 2, 3, 2, 135, 33, 147, 106, 148, 4, 159, 158, 121, 159, 4, 106, 159, 121, 106, 162, 159, 147, 162, 106, 163, 83, 5, 83, 163, 6, 7, 38, 145, 38, 7, 8, 75, 46, 76, 46, 75, 50, 63, 9, 85, 9, 63, 131, 117, 51, 10, 51, 117, 116, 75, 51, 50, 51, 75, 10, 54, 11, 12, 11, 54, 65, 67, 154, 55, 154, 67, 13, 129, 59, 14, 59, 129, 127, 16, 15, 19, 15, 16, 17, 16, 18, 73, 18, 16, 19, 20, 138, 21, 138, 20, 22, 136, 20, 21, 20, 136, 23, 2, 136, 3, 136, 2, 23, 138, 103, 102, 103, 138, 22, 31, 132, 24, 132, 31, 74, 26, 141, 25, 141, 26, 142, 77, 27, 78, 27, 77, 152, 167, 59, 169, 59, 167, 14, 91, 126, 128, 126, 91, 90, 126, 89, 125, 89, 126, 90, 89, 124, 125, 124, 89, 101, 143, 28, 140, 28, 143, 86, 29, 28, 30, 28, 29, 140, 29, 9, 131, 9, 29, 30, 60, 26, 25, 26, 60, 114, 31, 81, 74, 81, 31, 32, 135, 88, 33, 88, 135, 64, 36, 35, 0, 35, 36, 37, 39, 38, 8, 38, 39, 153, 171, 40, 41, 40, 171, 42, 57, 99, 109, 99, 57, 43, 57, 95, 43, 95, 57, 137, 52, 44, 1, 44, 52, 45, 47, 46, 50, 46, 47, 139, 48, 97, 58, 97, 48, 123, 122, 97, 49, 97, 122, 58, 51, 47, 50, 47, 51, 61, 52, 120, 45, 120, 52, 121, 168, 93, 53, 93, 168, 150, 54, 35, 37, 35, 54, 12, 39, 154, 153, 154, 39, 55, 27, 168, 53, 168, 27, 152, 56, 171, 165, 171, 56, 42, 18, 57, 109, 57, 18, 19, 137, 19, 15, 19, 137, 57, 47, 141, 139, 141, 47, 25, 59, 48, 58, 48, 59, 127, 47, 60, 25, 60, 47, 61, 31, 120, 32, 120, 31, 45, 63, 62, 133, 62, 63, 85, 134, 62, 87, 62, 134, 133, 134, 88, 64, 88, 134, 87, 31, 44, 45, 44, 31, 24, 82, 56, 165, 56, 82, 84, 7, 11, 65, 11, 7, 145, 67, 66, 13, 66, 67, 68, 69, 129, 14, 129, 69, 70, 71, 16, 72, 16, 71, 17, 73, 72, 16, 72, 73, 106, 75, 132, 74, 132, 75, 76, 104, 77, 78, 77, 104, 79, 130, 91, 128, 91, 130, 92, 98, 14, 167, 14, 98, 69, 96, 114, 80, 114, 96, 26, 75, 81, 10, 81, 75, 74, 83, 82, 5, 82, 83, 84, 22, 92, 103, 92, 22, 91, 93, 66, 68, 66, 93, 150, 40, 94, 41, 40, 104, 94, 40, 79, 104, 95, 69, 43, 69, 95, 70, 97, 34, 96, 34, 97, 123, 99, 69, 98, 69, 99, 43, 124, 100, 144, 100, 124, 101, 99, 110, 149, 110, 99, 98, 106, 105, 148, 105, 106, 73, 105, 18, 107, 18, 105, 73, 18, 108, 107, 108, 18, 109, 108, 99, 149, 99, 108, 109, 26, 34, 142, 34, 26, 96, 98, 166, 110, 166, 98, 167, 111, 60, 61, 60, 111, 112, 113, 60, 112, 60, 113, 114, 114, 115, 80, 115, 114, 113, 111, 51, 116, 51, 111, 61, 117, 81, 146, 81, 117, 10, 118, 81, 32, 81, 118, 146, 118, 120, 119, 120, 118, 32, 4, 120, 121, 120, 4, 119, 122, 151, 170, 151, 122, 49, 123, 144, 34, 144, 123, 124, 102, 70, 95, 70, 102, 130, 151, 80, 115, 80, 151, 49, 142, 144, 143, 144, 142, 34, 156, 4, 158, 119, 0, 35, 4, 0, 119, 156, 0, 4, 155, 159, 160, 155, 158, 159, 155, 156, 158, 155, 157, 156, 147, 161, 162, 147, 164, 161, 147, 163, 164, 147, 6, 163, 155, 161, 164, 161, 155, 160, 162, 160, 159, 160, 162, 161, 169, 170, 172, 170, 169, 122, 172, 167, 169, 167, 172, 166, 123, 125, 124, 125, 123, 48, 48, 126, 125, 126, 48, 127, 127, 128, 126, 128, 127, 129, 129, 130, 128, 130, 129, 70, 103, 130, 102, 130, 103, 92, 100, 143, 144, 143, 100, 86, 131, 76, 46, 63, 76, 131, 63, 132, 76, 133, 132, 63, 133, 24, 132, 134, 24, 133, 134, 44, 24, 64, 44, 134, 64, 1, 44, 135, 1, 64, 135, 71, 1, 3, 71, 135, 140, 142, 143, 142, 140, 141, 140, 139, 141, 139, 140, 29, 131, 139, 29, 139, 131, 46, 96, 49, 97, 49, 96, 80, 145, 116, 117, 116, 145, 38, 117, 11, 145, 11, 117, 146, 146, 12, 11, 12, 146, 118, 118, 35, 12, 35, 118, 119, 153, 112, 111, 112, 153, 154, 13, 115, 113, 115, 13, 66, 150, 115, 66, 115, 150, 151, 13, 112, 154, 112, 13, 113, 153, 116, 38, 116, 153, 111, 152, 172, 168, 170, 168, 172, 170, 150, 168, 150, 170, 151, 110, 77, 79, 77, 110, 166, 166, 152, 77, 152, 166, 172, 149, 42, 108, 42, 149, 40, 110, 40, 149, 40, 110, 79, 108, 56, 107, 56, 108, 42, 107, 84, 105, 84, 107, 56, 105, 83, 148, 83, 105, 84, 148, 6, 147, 6, 148, 83, 17, 3, 136, 3, 17, 71, 17, 21, 15, 21, 17, 136, 137, 21, 138, 21, 137, 15, 137, 102, 95, 102, 137, 138, 33, 23, 2, 23, 33, 88, 20, 91, 22, 23, 91, 20, 23, 90, 91, 23, 89, 90, 101, 86, 100, 86, 101, 89, 89, 88, 86, 88, 89, 23, 9, 62, 85, 62, 9, 30, 62, 88, 87, 88, 28, 86, 62, 28, 88, 62, 30, 28, 169, 58, 122, 58, 169, 59, 179, 173, 174, 173, 179, 178, 180, 174, 175, 174, 180, 179, 181, 175, 176, 175, 181, 180, 182, 176, 177, 176, 182, 181, 178, 177, 173, 177, 178, 182, 180, 178, 179, 181, 178, 180, 182, 178, 181, 189, 183, 184, 183, 189, 188, 190, 184, 185, 184, 190, 189, 191, 185, 186, 185, 191, 190, 192, 186, 187, 186, 192, 191, 188, 187, 183, 187, 188, 192, 190, 188, 189, 191, 188, 190, 192, 188, 191, 199, 193, 194, 193, 199, 198, 200, 194, 195, 194, 200, 199, 201, 195, 196, 195, 201, 200, 202, 196, 197, 196, 202, 201, 198, 197, 193, 197, 198, 202, 200, 198, 199, 201, 198, 200, 202, 198, 201, 209, 203, 204, 203, 209, 208, 210, 204, 205, 204, 210, 209, 211, 205, 206, 205, 211, 210, 212, 206, 207, 206, 212, 211, 208, 207, 203, 207, 208, 212, 210, 208, 209, 211, 208, 210, 212, 208, 211, 219, 213, 214, 213, 219, 218, 220, 214, 215, 214, 220, 219, 221, 215, 216, 215, 221, 220, 222, 216, 217, 216, 222, 221, 218, 217, 213, 217, 218, 222, 220, 218, 219, 221, 218, 220, 222, 218, 221, 229, 223, 224, 223, 229, 228, 230, 224, 225, 224, 230, 229, 231, 225, 226, 225, 231, 230, 232, 226, 227, 226, 232, 231, 228, 227, 223, 227, 228, 232, 230, 228, 229, 231, 228, 230, 232, 228, 231, 239, 233, 234, 233, 239, 238, 240, 234, 235, 234, 240, 239, 241, 235, 236, 235, 241, 240, 242, 236, 237, 236, 242, 241, 238, 237, 233, 237, 238, 242, 240, 238, 239, 241, 238, 240, 242, 238, 241, 249, 243, 244, 243, 249, 248, 250, 244, 245, 244, 250, 249, 251, 245, 246, 245, 251, 250, 252, 246, 247, 246, 252, 251, 248, 247, 243, 247, 248, 252, 250, 248, 249, 251, 248, 250, 252, 248, 251, 259, 253, 254, 253, 259, 258, 260, 254, 0xFF, 254, 260, 259, 261, 0xFF, 0x0100, 0xFF, 261, 260, 262, 0x0100, 0x0101, 0x0100, 262, 261, 258, 0x0101, 253, 0x0101, 258, 262, 260, 258, 259, 261, 258, 260, 262, 258, 261, 269, 263, 264, 263, 269, 268, 270, 264, 265, 264, 270, 269, 271, 265, 266, 265, 271, 270, 272, 266, 267, 266, 272, 271, 268, 267, 263, 267, 268, 272, 270, 268, 269, 271, 268, 270, 272, 268, 271, 279, 273, 274, 273, 279, 278, 280, 274, 275, 274, 280, 279, 281, 275, 276, 275, 281, 280, 282, 276, 277, 276, 282, 281, 278, 277, 273, 277, 278, 282, 280, 278, 279, 281, 278, 280, 282, 278, 281, 289, 283, 284, 283, 289, 288, 290, 284, 285, 284, 290, 289, 291, 285, 286, 285, 291, 290, 292, 286, 287, 286, 292, 291, 288, 287, 283, 287, 288, 292, 290, 288, 289, 291, 288, 290, 292, 288, 291, 299, 293, 294, 293, 299, 298, 300, 294, 295, 294, 300, 299, 301, 295, 296, 295, 301, 300, 302, 296, 297, 296, 302, 301, 298, 297, 293, 297, 298, 302, 300, 298, 299, 301, 298, 300, 302, 298, 301, 309, 303, 304, 303, 309, 308, 310, 304, 305, 304, 310, 309, 311, 305, 306, 305, 311, 310, 312, 306, 307, 306, 312, 311, 308, 307, 303, 307, 308, 312, 310, 308, 309, 311, 308, 310, 312, 308, 311, 319, 313, 314, 313, 319, 318, 320, 314, 315, 314, 320, 319, 321, 315, 316, 315, 321, 320, 322, 316, 317, 316, 322, 321, 318, 317, 313, 317, 318, 322, 320, 318, 319, 321, 318, 320, 322, 318, 321, 329, 323, 324, 323, 329, 328, 330, 324, 325, 324, 330, 329, 331, 325, 326, 325, 331, 330, 332, 326, 327, 326, 332, 331, 328, 327, 323, 327, 328, 332, 330, 328, 329, 331, 328, 330, 332, 328, 331, 339, 333, 334, 333, 339, 338, 340, 334, 335, 334, 340, 339, 341, 335, 336, 335, 341, 340, 342, 336, 337, 336, 342, 341, 338, 337, 333, 337, 338, 342, 340, 338, 339, 341, 338, 340, 342, 338, 341, 349, 343, 344, 343, 349, 348, 350, 344, 345, 344, 350, 349, 351, 345, 346, 345, 351, 350, 352, 346, 347, 346, 352, 351, 348, 347, 343, 347, 348, 352, 350, 348, 349, 351, 348, 350, 352, 348, 351, 359, 353, 354, 353, 359, 358, 360, 354, 355, 354, 360, 359, 361, 355, 356, 355, 361, 360, 362, 356, 357, 356, 362, 361, 358, 357, 353, 357, 358, 362, 360, 358, 359, 361, 358, 360, 362, 358, 361, 369, 363, 364, 363, 369, 368, 370, 364, 365, 364, 370, 369, 371, 365, 366, 365, 371, 370, 372, 366, 367, 366, 372, 371, 368, 367, 363, 367, 368, 372, 370, 368, 369, 371, 368, 370, 372, 368, 371, 379, 373, 374, 373, 379, 378, 380, 374, 375, 374, 380, 379, 381, 375, 376, 375, 381, 380, 382, 376, 377, 376, 382, 381, 378, 377, 373, 377, 378, 382, 380, 378, 379, 381, 378, 380, 382, 378, 381, 389, 383, 384, 383, 389, 388, 390, 384, 385, 384, 390, 389, 391, 385, 386, 385, 391, 390, 392, 386, 387, 386, 392, 391, 388, 387, 383, 387, 388, 392, 390, 388, 389, 391, 388, 390, 392, 388, 391, 399, 393, 394, 393, 399, 398, 400, 394, 395, 394, 400, 399, 401, 395, 396, 395, 401, 400, 402, 396, 397, 396, 402, 401, 398, 397, 393, 397, 398, 402, 400, 398, 399, 401, 398, 400, 402, 398, 401, 409, 403, 404, 403, 409, 408, 410, 404, 405, 404, 410, 409, 411, 405, 406, 405, 411, 410, 412, 406, 407, 406, 412, 411, 408, 407, 403, 407, 408, 412, 410, 408, 409, 411, 408, 410, 412, 408, 411, 419, 413, 414, 413, 419, 418, 420, 414, 415, 414, 420, 419, 421, 415, 416, 415, 421, 420, 422, 416, 417, 416, 422, 421, 418, 417, 413, 417, 418, 422, 420, 418, 419, 421, 418, 420, 422, 418, 421, 429, 423, 424, 423, 429, 428, 430, 424, 425, 424, 430, 429, 431, 425, 426, 425, 431, 430, 432, 426, 427, 426, 432, 431, 428, 427, 423, 427, 428, 432, 430, 428, 429, 431, 428, 430, 432, 428, 431, 439, 433, 434, 433, 439, 438, 440, 434, 435, 434, 440, 439, 441, 435, 436, 435, 441, 440, 442, 436, 437, 436, 442, 441, 438, 437, 433, 437, 438, 442, 440, 438, 439, 441, 438, 440, 442, 438, 441, 449, 443, 444, 443, 449, 448, 450, 444, 445, 444, 450, 449, 451, 445, 446, 445, 451, 450, 452, 446, 447, 446, 452, 451, 448, 447, 443, 447, 448, 452, 450, 448, 449, 451, 448, 450, 452, 448, 451, 459, 453, 454, 453, 459, 458, 460, 454, 455, 454, 460, 459, 461, 455, 456, 455, 461, 460, 462, 456, 457, 456, 462, 461, 458, 457, 453, 457, 458, 462, 460, 458, 459, 461, 458, 460, 462, 458, 461, 469, 463, 464, 463, 469, 468, 470, 464, 465, 464, 470, 469, 471, 465, 466, 465, 471, 470, 472, 466, 467, 466, 472, 471, 468, 467, 463, 467, 468, 472, 470, 468, 469, 471, 468, 470, 472, 468, 471, 479, 473, 474, 473, 479, 478, 480, 474, 475, 474, 480, 479, 481, 475, 476, 475, 481, 480, 482, 476, 477, 476, 482, 481, 478, 477, 473, 477, 478, 482, 480, 478, 479, 481, 478, 480, 482, 478, 481, 489, 483, 484, 483, 489, 488, 490, 484, 485, 484, 490, 489, 491, 485, 486, 485, 491, 490, 492, 486, 487, 486, 492, 491, 488, 487, 483, 487, 488, 492, 490, 488, 489, 491, 488, 490, 492, 488, 491, 499, 493, 494, 493, 499, 498, 500, 494, 495, 494, 500, 499, 501, 495, 496, 495, 501, 500, 502, 496, 497, 496, 502, 501, 498, 497, 493, 497, 498, 502, 500, 498, 499, 501, 498, 500, 502, 498, 501, 509, 503, 504, 503, 509, 508, 510, 504, 505, 504, 510, 509, 511, 505, 506, 505, 511, 510, 0x0200, 506, 507, 506, 0x0200, 511, 508, 507, 503, 507, 508, 0x0200, 510, 508, 509, 511, 508, 510, 0x0200, 508, 511, 519, 513, 0x0202, 513, 519, 518, 520, 0x0202, 515, 0x0202, 520, 519, 521, 515, 516, 515, 521, 520, 522, 516, 517, 516, 522, 521, 518, 517, 513, 517, 518, 522, 520, 518, 519, 521, 518, 520, 522, 518, 521, 529, 523, 524, 523, 529, 528, 530, 524, 525, 524, 530, 529, 531, 525, 526, 525, 531, 530, 532, 526, 527, 526, 532, 531, 528, 527, 523, 527, 528, 532, 530, 528, 529, 531, 528, 530, 532, 528, 531, 539, 533, 534, 533, 539, 538, 540, 534, 535, 534, 540, 539, 541, 535, 536, 535, 541, 540, 542, 536, 537, 536, 542, 541, 538, 537, 533, 537, 538, 542, 540, 538, 539, 541, 538, 540, 542, 538, 541, 549, 543, 544, 543, 549, 548, 550, 544, 545, 544, 550, 549, 551, 545, 546, 545, 551, 550, 552, 546, 547, 546, 552, 551, 548, 547, 543, 547, 548, 552, 550, 548, 549, 551, 548, 550, 552, 548, 551, 559, 553, 554, 553, 559, 558, 560, 554, 555, 554, 560, 559, 561, 555, 556, 555, 561, 560, 562, 556, 557, 556, 562, 561, 558, 557, 553, 557, 558, 562, 560, 558, 559, 561, 558, 560, 562, 558, 561, 569, 563, 564, 563, 569, 568, 570, 564, 565, 564, 570, 569, 571, 565, 566, 565, 571, 570, 572, 566, 567, 566, 572, 571, 568, 567, 563, 567, 568, 572, 570, 568, 569, 571, 568, 570, 572, 568, 571, 579, 573, 574, 573, 579, 578, 580, 574, 575, 574, 580, 579, 581, 575, 576, 575, 581, 580, 582, 576, 577, 576, 582, 581, 578, 577, 573, 577, 578, 582, 580, 578, 579, 581, 578, 580, 582, 578, 581, 589, 583, 584, 583, 589, 588, 590, 584, 585, 584, 590, 589, 591, 585, 586, 585, 591, 590, 592, 586, 587, 586, 592, 591, 588, 587, 583, 587, 588, 592, 590, 588, 589, 591, 588, 590, 592, 588, 591, 599, 593, 594, 593, 599, 598, 600, 594, 595, 594, 600, 599, 601, 595, 596, 595, 601, 600, 602, 596, 597, 596, 602, 601, 598, 597, 593, 597, 598, 602, 600, 598, 599, 601, 598, 600, 602, 598, 601, 609, 603, 604, 603, 609, 608, 610, 604, 605, 604, 610, 609, 611, 605, 606, 605, 611, 610, 612, 606, 607, 606, 612, 611, 608, 607, 603, 607, 608, 612, 610, 608, 609, 611, 608, 610, 612, 608, 611, 619, 613, 614, 613, 619, 618, 620, 614, 615, 614, 620, 619, 621, 615, 616, 615, 621, 620, 622, 616, 617, 616, 622, 621, 618, 617, 613, 617, 618, 622, 620, 618, 619, 621, 618, 620, 622, 618, 621, 629, 623, 624, 623, 629, 628, 630, 624, 625, 624, 630, 629, 631, 625, 626, 625, 631, 630, 632, 626, 627, 626, 632, 631, 628, 627, 623, 627, 628, 632, 630, 628, 629, 631, 628, 630, 632, 628, 631, 639, 633, 634, 633, 639, 638, 640, 634, 635, 634, 640, 639, 641, 635, 636, 635, 641, 640, 642, 636, 637, 636, 642, 641, 638, 637, 633, 637, 638, 642, 640, 638, 639, 641, 638, 640, 642, 638, 641, 649, 643, 644, 643, 649, 648, 650, 644, 645, 644, 650, 649, 651, 645, 646, 645, 651, 650, 652, 646, 647, 646, 652, 651, 648, 647, 643, 647, 648, 652, 650, 648, 649, 651, 648, 650, 652, 648, 651, 659, 653, 654, 653, 659, 658, 660, 654, 655, 654, 660, 659, 661, 655, 656, 655, 661, 660, 662, 656, 657, 656, 662, 661, 658, 657, 653, 657, 658, 662, 660, 658, 659, 661, 658, 660, 662, 658, 661, 669, 663, 664, 663, 669, 668, 670, 664, 665, 664, 670, 669, 671, 665, 666, 665, 671, 670, 672, 666, 667, 666, 672, 671, 668, 667, 663, 667, 668, 672, 670, 668, 669, 671, 668, 670, 672, 668, 671, 679, 673, 674, 673, 679, 678, 680, 674, 675, 674, 680, 679, 681, 675, 676, 675, 681, 680, 682, 676, 677, 676, 682, 681, 678, 677, 673, 677, 678, 682, 680, 678, 679, 681, 678, 680, 682, 678, 681, 689, 683, 684, 683, 689, 688, 690, 684, 685, 684, 690, 689, 691, 685, 686, 685, 691, 690, 692, 686, 687, 686, 692, 691, 688, 687, 683, 687, 688, 692, 690, 688, 689, 691, 688, 690, 692, 688, 691, 699, 693, 694, 693, 699, 698, 700, 694, 695, 694, 700, 699, 701, 695, 696, 695, 701, 700, 702, 696, 697, 696, 702, 701, 698, 697, 693, 697, 698, 702, 700, 698, 699, 701, 698, 700, 702, 698, 701, 709, 703, 704, 703, 709, 708, 710, 704, 705, 704, 710, 709, 711, 705, 706, 705, 711, 710, 712, 706, 707, 706, 712, 711, 708, 707, 703, 707, 708, 712, 710, 708, 709, 711, 708, 710, 712, 708, 711, 719, 713, 714, 713, 719, 718, 720, 714, 715, 714, 720, 719, 721, 715, 716, 715, 721, 720, 722, 716, 717, 716, 722, 721, 718, 717, 713, 717, 718, 722, 720, 718, 719, 721, 718, 720, 722, 718, 721, 729, 723, 724, 723, 729, 728, 730, 724, 725, 724, 730, 729, 731, 725, 726, 725, 731, 730, 732, 726, 727, 726, 732, 731, 728, 727, 723, 727, 728, 732, 730, 728, 729, 731, 728, 730, 732, 728, 731, 739, 733, 734, 733, 739, 738, 740, 734, 735, 734, 740, 739, 741, 735, 736, 735, 741, 740, 742, 736, 737, 736, 742, 741, 738, 737, 733, 737, 738, 742, 740, 738, 739, 741, 738, 740, 742, 738, 741, 749, 743, 744, 743, 749, 748, 750, 744, 745, 744, 750, 749, 751, 745, 746, 745, 751, 750, 752, 746, 747, 746, 752, 751, 748, 747, 743, 747, 748, 752, 750, 748, 749, 751, 748, 750, 752, 748, 751, 759, 753, 754, 753, 759, 758, 760, 754, 755, 754, 760, 759, 761, 755, 756, 755, 761, 760, 762, 756, 757, 756, 762, 761, 758, 757, 753, 757, 758, 762, 760, 758, 759, 761, 758, 760, 762, 758, 761, 769, 763, 764, 763, 769, 0x0300, 770, 764, 765, 764, 770, 769, 0x0303, 765, 766, 765, 0x0303, 770, 772, 766, 767, 766, 772, 0x0303, 0x0300, 767, 763, 767, 0x0300, 772, 770, 0x0300, 769, 0x0303, 0x0300, 770, 772, 0x0300, 0x0303, 779, 773, 774, 773, 779, 778, 780, 774, 775, 774, 780, 779, 781, 775, 776, 775, 781, 780, 782, 776, 777, 776, 782, 781, 778, 777, 773, 777, 778, 782, 780, 778, 779, 781, 778, 780, 782, 778, 781, 789, 783, 784, 783, 789, 788, 790, 784, 785, 784, 790, 789, 791, 785, 786, 785, 791, 790, 792, 786, 787, 786, 792, 791, 788, 787, 783, 787, 788, 792, 790, 788, 789, 791, 788, 790, 792, 788, 791, 799, 793, 794, 793, 799, 798, 800, 794, 795, 794, 800, 799, 801, 795, 796, 795, 801, 800, 802, 796, 797, 796, 802, 801, 798, 797, 793, 797, 798, 802, 800, 798, 799, 801, 798, 800, 802, 798, 801, 809, 803, 804, 803, 809, 808, 810, 804, 805, 804, 810, 809, 811, 805, 806, 805, 811, 810, 812, 806, 807, 806, 812, 811, 808, 807, 803, 807, 808, 812, 810, 808, 809, 811, 808, 810, 812, 808, 811, 819, 813, 814, 813, 819, 818, 820, 814, 815, 814, 820, 819, 821, 815, 816, 815, 821, 820, 822, 816, 817, 816, 822, 821, 818, 817, 813, 817, 818, 822, 820, 818, 819, 821, 818, 820, 822, 818, 821, 829, 823, 824, 823, 829, 828, 830, 824, 825, 824, 830, 829, 831, 825, 826, 825, 831, 830, 832, 826, 827, 826, 832, 831, 828, 827, 823, 827, 828, 832, 830, 828, 829, 831, 828, 830, 832, 828, 831, 839, 833, 834, 833, 839, 838, 840, 834, 835, 834, 840, 839, 841, 835, 836, 835, 841, 840, 842, 836, 837, 836, 842, 841, 838, 837, 833, 837, 838, 842, 840, 838, 839, 841, 838, 840, 842, 838, 841, 849, 843, 844, 843, 849, 848, 850, 844, 845, 844, 850, 849, 851, 845, 846, 845, 851, 850, 852, 846, 847, 846, 852, 851, 848, 847, 843, 847, 848, 852, 850, 848, 849, 851, 848, 850, 852, 848, 851, 859, 853, 854, 853, 859, 858, 860, 854, 855, 854, 860, 859, 861, 855, 856, 855, 861, 860, 862, 856, 857, 856, 862, 861, 858, 857, 853, 857, 858, 862, 860, 858, 859, 861, 858, 860, 862, 858, 861, 869, 863, 864, 863, 869, 868, 870, 864, 865, 864, 870, 869, 871, 865, 866, 865, 871, 870, 872, 866, 867, 866, 872, 871, 868, 867, 863, 867, 868, 872, 870, 868, 869, 871, 868, 870, 872, 868, 871, 921, 922, 874, 921, 886, 922, 877, 921, 882, 921, 909, 886, 877, 909, 921, 911, 888, 908, 888, 911, 880, 877, 911, 908, 911, 877, 882, 892, 910, 919, 910, 892, 903, 903, 897, 876, 905, 916, 901, 916, 905, 899, 894, 903, 892, 903, 894, 897, 880, 910, 888, 910, 880, 919, 895, 904, 918, 904, 912, 883, 895, 912, 904, 912, 916, 883, 916, 912, 901, 887, 918, 904, 918, 887, 875, 907, 896, 915, 899, 907, 878, 902, 914, 890, 914, 913, 891, 902, 913, 914, 902, 873, 913, 898, 873, 902, 899, 896, 907, 896, 899, 905, 894, 915, 890, 915, 894, 907, 914, 879, 900, 879, 891, 917, 914, 891, 879, 885, 873, 889, 873, 885, 913, 906, 889, 893, 889, 906, 885, 906, 920, 884, 920, 906, 893, 898, 902, 881, 890, 897, 894, 897, 890, 914, 875, 896, 905, 896, 875, 887, 923, 938, 924, 938, 923, 937, 924, 939, 925, 939, 924, 938, 925, 940, 926, 940, 925, 939, 926, 941, 927, 941, 926, 940, 927, 942, 928, 942, 927, 941, 928, 943, 929, 943, 928, 942, 929, 944, 930, 944, 929, 943, 930, 945, 931, 945, 930, 944, 931, 946, 932, 946, 931, 945, 932, 947, 933, 947, 932, 946, 933, 948, 934, 948, 933, 947, 934, 949, 935, 949, 934, 948, 935, 950, 936, 950, 935, 949, 936, 937, 923, 937, 936, 950, 935, 933, 934, 933, 931, 932, 931, 929, 930, 933, 929, 931, 929, 927, 928, 927, 925, 926, 929, 925, 927, 925, 923, 924, 929, 923, 925, 933, 923, 929, 935, 923, 933, 936, 923, 935, 937, 952, 938, 952, 937, 951, 938, 953, 939, 953, 938, 952, 939, 954, 940, 954, 939, 953, 940, 955, 941, 955, 940, 954, 941, 956, 942, 956, 941, 955, 942, 957, 943, 957, 942, 956, 943, 958, 944, 958, 943, 957, 944, 959, 945, 959, 944, 958, 945, 960, 946, 960, 945, 959, 946, 961, 947, 961, 946, 960, 947, 962, 948, 962, 947, 961, 948, 963, 949, 963, 948, 962, 949, 964, 950, 964, 949, 963, 950, 951, 937, 951, 950, 964, 951, 966, 952, 966, 951, 965, 952, 967, 953, 967, 952, 966, 953, 968, 954, 968, 953, 967, 954, 969, 955, 969, 954, 968, 955, 970, 956, 970, 955, 969, 956, 971, 957, 971, 956, 970, 957, 972, 958, 972, 957, 971, 958, 973, 959, 973, 958, 972, 959, 974, 960, 974, 959, 973, 960, 975, 961, 975, 960, 974, 961, 976, 962, 976, 961, 975, 962, 977, 963, 977, 962, 976, 963, 978, 964, 978, 963, 977, 964, 965, 951, 965, 964, 978, 965, 980, 966, 980, 965, 979, 966, 981, 967, 981, 966, 980, 967, 982, 968, 982, 967, 981, 968, 983, 969, 983, 968, 982, 969, 984, 970, 984, 969, 983, 970, 985, 971, 985, 970, 984, 971, 986, 972, 986, 971, 985, 972, 987, 973, 987, 972, 986, 973, 988, 974, 988, 973, 987, 974, 989, 975, 989, 974, 988, 975, 990, 976, 990, 975, 989, 976, 991, 977, 991, 976, 990, 977, 992, 978, 992, 977, 991, 978, 979, 965, 979, 978, 992, 979, 994, 980, 994, 979, 993, 980, 995, 981, 995, 980, 994, 981, 996, 982, 996, 981, 995, 982, 997, 983, 997, 982, 996, 983, 998, 984, 998, 983, 997, 984, 999, 985, 999, 984, 998, 985, 1000, 986, 1000, 985, 999, 986, 1001, 987, 1001, 986, 1000, 987, 1002, 988, 1002, 987, 1001, 988, 1003, 989, 1003, 988, 1002, 989, 1004, 990, 1004, 989, 1003, 990, 1005, 991, 1005, 990, 1004, 991, 1006, 992, 1006, 991, 1005, 992, 993, 979, 993, 992, 1006, 993, 1008, 994, 1008, 993, 1007, 994, 1009, 995, 1009, 994, 1008, 995, 1010, 996, 1010, 995, 1009, 996, 1011, 997, 1011, 996, 1010, 997, 1012, 998, 1012, 997, 1011, 998, 1013, 999, 1013, 998, 1012, 999, 1014, 1000, 1014, 999, 1013, 1000, 1015, 1001, 1015, 1000, 1014, 1001, 1016, 1002, 1016, 1001, 1015, 1002, 1017, 1003, 1017, 1002, 1016, 1003, 1018, 1004, 1018, 1003, 1017, 1004, 1019, 1005, 1019, 1004, 1018, 1005, 1020, 1006, 1020, 1005, 1019, 1006, 1007, 993, 1007, 1006, 1020, 1008, 1175, 1176, 1175, 1008, 1007, 1009, 1176, 1177, 1176, 1009, 1008, 1010, 1177, 1178, 1177, 1010, 1009, 1011, 1178, 1179, 1178, 1011, 1010, 1012, 1179, 1180, 1179, 1012, 1011, 1013, 1180, 1181, 1180, 1013, 1012, 1014, 1181, 1182, 1181, 1014, 1013, 1015, 1182, 1183, 1182, 1015, 1014, 1016, 1183, 1184, 1183, 1016, 1015, 1017, 1184, 1185, 1184, 1017, 1016, 1018, 1185, 1186, 1185, 1018, 1017, 1019, 1186, 1187, 1186, 1019, 1018, 1020, 1187, 1188, 1187, 1020, 1019, 1007, 1188, 1175, 1188, 1007, 1020, 1205, 1133, 1203, 1133, 1205, 1136, 1207, 1136, 1205, 1136, 1207, 1139, 1209, 1139, 1207, 1139, 1209, 1142, 1211, 1142, 1209, 1142, 1211, 1145, 1213, 1145, 1211, 1145, 1213, 1148, 1215, 1148, 1213, 1148, 1215, 1151, 1217, 1151, 1215, 1151, 1217, 1154, 1219, 1154, 1217, 1154, 1219, 1157, 1221, 1157, 1219, 1157, 1221, 1160, 1223, 1160, 1221, 1160, 1223, 1163, 1225, 1163, 1223, 1163, 1225, 1166, 1227, 1166, 1225, 1166, 1227, 1169, 1229, 1169, 1227, 1169, 1229, 1172, 1203, 1172, 1229, 1172, 1203, 1133, 1035, 1050, 1036, 1050, 1035, 1049, 1036, 1051, 1037, 1051, 1036, 1050, 1037, 1052, 1038, 1052, 1037, 1051, 1038, 1053, 1039, 1053, 1038, 1052, 1039, 1054, 1040, 1054, 1039, 1053, 1040, 1055, 1041, 1055, 1040, 1054, 1041, 1056, 1042, 1056, 1041, 1055, 1042, 1057, 1043, 1057, 1042, 1056, 1043, 1058, 1044, 1058, 1043, 1057, 1044, 1059, 1045, 1059, 1044, 1058, 1045, 1060, 1046, 1060, 1045, 1059, 1046, 1061, 1047, 1061, 1046, 1060, 1047, 1062, 1048, 1062, 1047, 1061, 1048, 1049, 1035, 1049, 1048, 1062, 1049, 1064, 1050, 1064, 1049, 1063, 1050, 1065, 1051, 1065, 1050, 1064, 1051, 1066, 1052, 1066, 1051, 1065, 1052, 1067, 1053, 1067, 1052, 1066, 1053, 1068, 1054, 1068, 1053, 1067, 1054, 1069, 1055, 1069, 1054, 1068, 1055, 1070, 1056, 1070, 1055, 1069, 1056, 1071, 1057, 1071, 1056, 1070, 1057, 1072, 1058, 1072, 1057, 1071, 1058, 1073, 1059, 1073, 1058, 1072, 1059, 1074, 1060, 1074, 1059, 1073, 1060, 1075, 1061, 1075, 1060, 1074, 1061, 1076, 1062, 1076, 1061, 1075, 1062, 1063, 1049, 1063, 1062, 1076, 1063, 1078, 1064, 1078, 1063, 1077, 1064, 1079, 1065, 1079, 1064, 1078, 1065, 1080, 1066, 1080, 1065, 1079, 1066, 1081, 1067, 1081, 1066, 1080, 1067, 1082, 1068, 1082, 1067, 1081, 1068, 1083, 1069, 1083, 1068, 1082, 1069, 1084, 1070, 1084, 1069, 1083, 1070, 1085, 1071, 1085, 1070, 1084, 1071, 1086, 1072, 1086, 1071, 1085, 1072, 1087, 1073, 1087, 1072, 1086, 1073, 1088, 1074, 1088, 1073, 1087, 1074, 1089, 1075, 1089, 1074, 1088, 1075, 1090, 1076, 1090, 1075, 1089, 1076, 1077, 1063, 1077, 1076, 1090, 1077, 1092, 1078, 1092, 1077, 1091, 1078, 1093, 1079, 1093, 1078, 1092, 1079, 1094, 1080, 1094, 1079, 1093, 1080, 1095, 1081, 1095, 1080, 1094, 1081, 1096, 1082, 1096, 1081, 1095, 1082, 1097, 1083, 1097, 1082, 1096, 1083, 1098, 1084, 1098, 1083, 1097, 1084, 1099, 1085, 1099, 1084, 1098, 1085, 1100, 1086, 1100, 1085, 1099, 1086, 1101, 1087, 1101, 1086, 1100, 1087, 1102, 1088, 1102, 1087, 1101, 1088, 1103, 1089, 1103, 1088, 1102, 1089, 1104, 1090, 1104, 1089, 1103, 1090, 1091, 1077, 1091, 1090, 1104, 1091, 1106, 1092, 1106, 1091, 1105, 1092, 1107, 1093, 1107, 1092, 1106, 1093, 1108, 1094, 1108, 1093, 1107, 1094, 1109, 1095, 1109, 1094, 1108, 1095, 1110, 1096, 1110, 1095, 1109, 1096, 1111, 1097, 1111, 1096, 1110, 1097, 1112, 1098, 1112, 1097, 1111, 1098, 1113, 1099, 1113, 1098, 1112, 1099, 1114, 1100, 1114, 1099, 1113, 1100, 1115, 1101, 1115, 1100, 1114, 1101, 1116, 1102, 1116, 1101, 1115, 1102, 1117, 1103, 1117, 1102, 1116, 1103, 1118, 1104, 1118, 1103, 1117, 1104, 1105, 1091, 1105, 1104, 1118, 1105, 1120, 1106, 1120, 1105, 1119, 1106, 1121, 1107, 1121, 1106, 1120, 1107, 1122, 1108, 1122, 1107, 1121, 1108, 1123, 1109, 1123, 1108, 1122, 1109, 1124, 1110, 1124, 1109, 1123, 1110, 1125, 1111, 1125, 1110, 1124, 1111, 1126, 1112, 1126, 1111, 1125, 1112, 1127, 1113, 1127, 1112, 1126, 1113, 1128, 1114, 1128, 1113, 1127, 1114, 1129, 1115, 1129, 1114, 1128, 1115, 1130, 1116, 1130, 1115, 1129, 1116, 1131, 1117, 1131, 1116, 1130, 1117, 1132, 1118, 1132, 1117, 1131, 1118, 1119, 1105, 1119, 1118, 1132, 1121, 1123, 1122, 1123, 1125, 1124, 1125, 1127, 1126, 1123, 1127, 1125, 1127, 1129, 1128, 1129, 1131, 1130, 1127, 1131, 1129, 1131, 1119, 1132, 1127, 1119, 1131, 1123, 1119, 1127, 1121, 1119, 1123, 1120, 1119, 1121, 1036, 1135, 1035, 1135, 1036, 1138, 1206, 1134, 1204, 1134, 1206, 1137, 1245, 1231, 1246, 1231, 1245, 1232, 1037, 1138, 1036, 1138, 1037, 1141, 1208, 1137, 1206, 1137, 1208, 1140, 1246, 1244, 1247, 1244, 1246, 1231, 1038, 1141, 1037, 1141, 1038, 1144, 1210, 1140, 1208, 1140, 1210, 1143, 1247, 1243, 1248, 1243, 1247, 1244, 1039, 1144, 1038, 1144, 1039, 1147, 1212, 1143, 1210, 1143, 1212, 1146, 1248, 1242, 1249, 1242, 1248, 1243, 1040, 1147, 1039, 1147, 1040, 1150, 1214, 1146, 1212, 1146, 1214, 1149, 1249, 1241, 1250, 1241, 1249, 1242, 1041, 1150, 1040, 1150, 1041, 1153, 1216, 1149, 1214, 1149, 1216, 1152, 1250, 1240, 1251, 1240, 1250, 1241, 1042, 1153, 1041, 1153, 1042, 1156, 1218, 1152, 1216, 1152, 1218, 1155, 1251, 1239, 1252, 1239, 1251, 1240, 1043, 1156, 1042, 1156, 1043, 1159, 1220, 1155, 1218, 1155, 1220, 1158, 1252, 1238, 1253, 1238, 1252, 1239, 1044, 1159, 1043, 1159, 1044, 1162, 1222, 1158, 1220, 1158, 1222, 1161, 1253, 1237, 1254, 1237, 1253, 1238, 1045, 1162, 1044, 1162, 1045, 1165, 1224, 1161, 1222, 1161, 1224, 1164, 1254, 1236, 1255, 1236, 1254, 1237, 1046, 1165, 1045, 1165, 1046, 1168, 1226, 1164, 1224, 1164, 1226, 1167, 1255, 1235, 1256, 1235, 1255, 1236, 1047, 1168, 1046, 1168, 1047, 1171, 1228, 1167, 1226, 1167, 1228, 1170, 1256, 1234, 1257, 1234, 1256, 1235, 1048, 1171, 1047, 1171, 1048, 1174, 1230, 1170, 1228, 1170, 1230, 1173, 1257, 1233, 1258, 1233, 1257, 1234, 1035, 1174, 1048, 1174, 1035, 1135, 1204, 1173, 1230, 1173, 1204, 1134, 1258, 1232, 1245, 1232, 1258, 1233, 1259, 1273, 1260, 1273, 1259, 1274, 1272, 1274, 1259, 1274, 1272, 1275, 1271, 1275, 1272, 1275, 1271, 1276, 1270, 1276, 1271, 1276, 1270, 1277, 1269, 1277, 1270, 1277, 1269, 1278, 1268, 1278, 1269, 1278, 1268, 1279, 1267, 1279, 1268, 1279, 1267, 0x0500, 1266, 0x0500, 1267, 0x0500, 1266, 1281, 1265, 1281, 1266, 1281, 1265, 1282, 1264, 1282, 1265, 1282, 1264, 1283, 1263, 1283, 1264, 1283, 1263, 1284, 1262, 1284, 1263, 1284, 1262, 0x0505, 1261, 0x0505, 1262, 0x0505, 1261, 1286, 1260, 1286, 1261, 1286, 1260, 1273, 1287, 1301, 1288, 1301, 1287, 1302, 1300, 1302, 1287, 1302, 1300, 1303, 1299, 1303, 1300, 1303, 1299, 1304, 1298, 1304, 1299, 1304, 1298, 1305, 1297, 1305, 1298, 1305, 1297, 1306, 1296, 1306, 1297, 1306, 1296, 1307, 1295, 1307, 1296, 1307, 1295, 1308, 1294, 1308, 1295, 1308, 1294, 1309, 1293, 1309, 1294, 1309, 1293, 1310, 1292, 1310, 1293, 1310, 1292, 1311, 1291, 1311, 1292, 1311, 1291, 1312, 1290, 1312, 1291, 1312, 1290, 1313, 1289, 1313, 1290, 1313, 1289, 1314, 1288, 1314, 1289, 1314, 1288, 1301, 1315, 1329, 1316, 1329, 1315, 1330, 1021, 1190, 1022, 1190, 1021, 1189, 1328, 1330, 1315, 1330, 1328, 1331, 1022, 1191, 1023, 1191, 1022, 1190, 1327, 1331, 1328, 1331, 1327, 1332, 1023, 1192, 0x0400, 1192, 1023, 1191, 1326, 1332, 1327, 1332, 1326, 1333, 0x0400, 1193, 1025, 1193, 0x0400, 1192, 1325, 1333, 1326, 1333, 1325, 1334, 1025, 1194, 1026, 1194, 1025, 1193, 1324, 1334, 1325, 1334, 1324, 1335, 1026, 1195, 1027, 1195, 1026, 1194, 1323, 1335, 1324, 1335, 1323, 1336, 1027, 1196, 0x0404, 1196, 1027, 1195, 1322, 1336, 1323, 1336, 1322, 1337, 0x0404, 1197, 1029, 1197, 0x0404, 1196, 1321, 1337, 1322, 1337, 1321, 1338, 1029, 1198, 1030, 1198, 1029, 1197, 1320, 1338, 1321, 1338, 1320, 1339, 1030, 1199, 1031, 1199, 1030, 1198, 1319, 1339, 1320, 1339, 1319, 1340, 1031, 1200, 1032, 1200, 1031, 1199, 1318, 1340, 1319, 1340, 1318, 1341, 1032, 1201, 1033, 1201, 1032, 1200, 1317, 1341, 1318, 1341, 1317, 1342, 1033, 1202, 1034, 1202, 1033, 1201, 1316, 1342, 1317, 1342, 1316, 1329, 1034, 1189, 1021, 1189, 1034, 1202, 1136, 1232, 1133, 1232, 1136, 1231, 1133, 1233, 1172, 1233, 1133, 1232, 1172, 1234, 1169, 1234, 1172, 1233, 1169, 1235, 1166, 1235, 1169, 1234, 1166, 1236, 1163, 1236, 1166, 1235, 1163, 1237, 1160, 1237, 1163, 1236, 1160, 1238, 1157, 1238, 1160, 1237, 1157, 1239, 1154, 1239, 1157, 1238, 1154, 1240, 1151, 1240, 1154, 1239, 1151, 1241, 1148, 1241, 1151, 1240, 1148, 1242, 1145, 1242, 1148, 1241, 1145, 1243, 1142, 1243, 1145, 1242, 1142, 1244, 1139, 1244, 1142, 1243, 1139, 1231, 1136, 1231, 1139, 1244, 1189, 1246, 1190, 1246, 1189, 1245, 1190, 1247, 1191, 1247, 1190, 1246, 1191, 1248, 1192, 1248, 1191, 1247, 1192, 1249, 1193, 1249, 1192, 1248, 1193, 1250, 1194, 1250, 1193, 1249, 1194, 1251, 1195, 1251, 1194, 1250, 1195, 1252, 1196, 1252, 1195, 1251, 1196, 1253, 1197, 1253, 1196, 1252, 1197, 1254, 1198, 1254, 1197, 1253, 1198, 1255, 1199, 1255, 1198, 1254, 1199, 1256, 1200, 1256, 1199, 1255, 1200, 1257, 1201, 1257, 1200, 1256, 1201, 1258, 1202, 1258, 1201, 1257, 1202, 1245, 1189, 1245, 1202, 1258, 1022, 1260, 1021, 1260, 1022, 1259, 1021, 1261, 1034, 1261, 1021, 1260, 1034, 1262, 1033, 1262, 1034, 1261, 1033, 1263, 1032, 1263, 1033, 1262, 1032, 1264, 1031, 1264, 1032, 1263, 1031, 1265, 1030, 1265, 1031, 1264, 1030, 1266, 1029, 1266, 1030, 1265, 1029, 1267, 0x0404, 1267, 1029, 1266, 0x0404, 1268, 1027, 1268, 0x0404, 1267, 1027, 1269, 1026, 1269, 1027, 1268, 1026, 1270, 1025, 1270, 1026, 1269, 1025, 1271, 0x0400, 1271, 1025, 1270, 0x0400, 1272, 1023, 1272, 0x0400, 1271, 1023, 1259, 1022, 1259, 1023, 1272, 1175, 1274, 1176, 1274, 1175, 1273, 1176, 1275, 1177, 1275, 1176, 1274, 1177, 1276, 1178, 1276, 1177, 1275, 1178, 1277, 1179, 1277, 1178, 1276, 1179, 1278, 1180, 1278, 1179, 1277, 1180, 1279, 1181, 1279, 1180, 1278, 1181, 0x0500, 1182, 0x0500, 1181, 1279, 1182, 1281, 1183, 1281, 1182, 0x0500, 1183, 1282, 1184, 1282, 1183, 1281, 1184, 1283, 1185, 1283, 1184, 1282, 1185, 1284, 1186, 1284, 1185, 1283, 1186, 0x0505, 1187, 0x0505, 1186, 1284, 1187, 1286, 1188, 1286, 1187, 0x0505, 1188, 1273, 1175, 1273, 1188, 1286, 1137, 1288, 1134, 1288, 1137, 1287, 1134, 1289, 1173, 1289, 1134, 1288, 1173, 1290, 1170, 1290, 1173, 1289, 1170, 1291, 1167, 1291, 1170, 1290, 1167, 1292, 1164, 1292, 1167, 1291, 1164, 1293, 1161, 1293, 1164, 1292, 1161, 1294, 1158, 1294, 1161, 1293, 1158, 1295, 1155, 1295, 1158, 1294, 1155, 1296, 1152, 1296, 1155, 1295, 1152, 1297, 1149, 1297, 1152, 1296, 1149, 1298, 1146, 1298, 1149, 1297, 1146, 1299, 1143, 1299, 1146, 1298, 1143, 1300, 1140, 1300, 1143, 1299, 1140, 1287, 1137, 1287, 1140, 1300, 1203, 1302, 1205, 1302, 1203, 1301, 1205, 1303, 1207, 1303, 1205, 1302, 1207, 1304, 1209, 1304, 1207, 1303, 1209, 1305, 1211, 1305, 1209, 1304, 1211, 1306, 1213, 1306, 1211, 1305, 1213, 1307, 1215, 1307, 1213, 1306, 1215, 1308, 1217, 1308, 1215, 1307, 1217, 1309, 1219, 1309, 1217, 1308, 1219, 1310, 1221, 1310, 1219, 1309, 1221, 1311, 1223, 1311, 1221, 1310, 1223, 1312, 1225, 1312, 1223, 1311, 1225, 1313, 1227, 1313, 1225, 1312, 1227, 1314, 1229, 1314, 1227, 1313, 1229, 1301, 1203, 1301, 1229, 1314, 1138, 1316, 1135, 1316, 1138, 1315, 1135, 1317, 1174, 1317, 1135, 1316, 1174, 1318, 1171, 1318, 1174, 1317, 1171, 1319, 1168, 1319, 1171, 1318, 1168, 1320, 1165, 1320, 1168, 1319, 1165, 1321, 1162, 1321, 1165, 1320, 1162, 1322, 1159, 1322, 1162, 1321, 1159, 1323, 1156, 1323, 1159, 1322, 1156, 1324, 1153, 1324, 1156, 1323, 1153, 1325, 1150, 1325, 1153, 1324, 1150, 1326, 1147, 1326, 1150, 1325, 1147, 1327, 1144, 1327, 1147, 1326, 1144, 1328, 1141, 1328, 1144, 1327, 1141, 1315, 1138, 1315, 1141, 1328, 1204, 1330, 1206, 1330, 1204, 1329, 1206, 1331, 1208, 1331, 1206, 1330, 1208, 1332, 1210, 1332, 1208, 1331, 1210, 1333, 1212, 1333, 1210, 1332, 1212, 1334, 1214, 1334, 1212, 1333, 1214, 1335, 1216, 1335, 1214, 1334, 1216, 1336, 1218, 1336, 1216, 1335, 1218, 1337, 1220, 1337, 1218, 1336, 1220, 1338, 1222, 1338, 1220, 1337, 1222, 1339, 1224, 1339, 1222, 1338, 1224, 1340, 1226, 1340, 1224, 1339, 1226, 1341, 1228, 1341, 1226, 1340, 1228, 1342, 1230, 1342, 1228, 1341, 1230, 1329, 1204, 1329, 1230, 1342]; + } + } +}//package wd.d3.geom.monuments.mesh.berlin diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/BritishMuseum.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/BritishMuseum.as new file mode 100644 index 0000000..84b8b6d --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/BritishMuseum.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class BritishMuseum extends Stage3DData { + + public function BritishMuseum(){ + vertices = new [50.1069, 83.8716, -42.7906, -99.4758, 83.688, -9.5788, 74.6485, 83.8716, -75.7757, -122.655, 83.688, -26.8563, -111.066, 86.6746, -18.2176, -138.554, 62.6496, -38.7067, -29.8164, 75.9028, -55.2109, -26.4736, 84.0088, -140.05, -27.6014, 86.7437, -111.426, -25.3865, 75.9028, -167.641, -28.7293, 84.0088, -82.8013, -132.347, 75.2172, -34.0804, 62.3777, 86.676, -59.2832, 86.0224, 75.6633, -91.0629, 95.6683, 62.651, -104.027, -89.784, 75.2172, -2.35475, -24.3794, 62.7187, -193.2, 38.7329, 75.6633, -27.5034, 84.8217, 75.7675, 30.3921, 165.122, 83.8735, 2.81076, 138.029, 86.6084, 12.1166, 191.236, 75.7675, -6.15884, 110.936, 83.8735, 21.4225, 215.428, 62.5834, -14.4682, -88.3815, 83.8701, 143.248, -76.9807, 75.6618, 127.981, 61.3642, 83.6894, 110.159, -112.981, 83.8701, 176.19, 84.5436, 83.6894, 127.437, 72.9539, 86.676, 118.798, 100.442, 62.651, 139.287, -8.6385, 75.9028, 155.231, -12.1312, 84.0088, 240.065, -10.9527, 86.7437, 211.442, -13.267, 75.9028, 267.653, -9.77432, 84.0088, 182.82, 94.2354, 75.2187, 134.661, -100.681, 86.6746, 159.719, -124.382, 75.6618, 191.457, -134.05, 62.6496, 204.405, 51.6724, 75.2187, 102.935, -14.3192, 62.7187, 293.211, -122.81, 75.7646, 70.5829, -203.159, 83.8705, 98.024, -176.049, 86.6054, 88.7654, -229.289, 75.7646, 106.948, -148.94, 83.8705, 79.5069, -253.495, 62.5805, 115.215, -93.9376, 63.1843, 61.4138, -83.7986, 63.167, 2.18105, -79.846, 63.1843, 5.13647, -30.8235, 63.1843, -29.6516, -30.0876, 63.1843, -24.6933, 26.1897, 63.1843, -10.6017, 29.1533, 63.1674, -14.6058, 56.0196, 63.1843, 39.1567, -64.1078, 63.1843, 111.172, -7.83043, 63.1843, 125.264, 41.928, 63.1843, 95.434, 2.70255, 89.9461, 60.6185, -17.0771, 89.9461, 74.2113, -38.7387, 98.5624, 63.8781, -38.7387, 89.9461, 63.8781, -40.6206, 89.9461, 39.952, -20.8409, 89.9461, 26.3592, 0.820648, 89.9461, 36.6924, 45.8322, 63.1674, 98.3918, 60.8908, 63.1505, 38.4909, -98.8228, 63.1497, 62.1913, -67.1481, 63.167, 115.157, -7.21745, 63.1843, 130.085, -8.92696, 94.538, 36.7561, 0.809097, 89.9461, 23.6263, 10.038, 83.004, 11.1803, -2.29872, 94.538, 47.8125, 13.8699, 89.9461, 45.4127, 29.1964, 83.004, 43.1379, -5.4299, 94.538, 60.3174, 7.69997, 89.9461, 70.0534, 20.146, 83.004, 79.2823, -16.4862, 94.538, 66.9455, -14.0864, 89.9461, 83.1142, -11.8116, 83.004, 98.4407, -28.9911, 94.538, 63.8144, -38.7271, 89.9461, 76.9443, -47.9561, 83.004, 89.3903, -35.6193, 94.538, 52.758, -51.7879, 89.9461, 55.1579, -67.1144, 83.004, 57.4327, -32.4882, 94.538, 40.2532, -45.618, 89.9461, 30.5172, -58.064, 83.004, 21.2882, -21.4318, 94.538, 33.625, -23.8316, 89.9461, 17.4563, -26.1064, 83.004, 2.12985, -40.6206, 98.5624, 39.952, -20.8409, 98.5624, 26.3592, -17.0771, 98.5624, 74.2113, 0.820648, 98.5624, 36.6924, 2.70255, 98.5624, 60.6185, 506.874, -3.43323E-5, -177.439, 534.802, 58.6687, -157.629, 562.73, -3.43323E-5, -137.819, 430.227, -3.43323E-5, -69.3813, 433.5, 51.5312, -69.938, 505.141, 58.6687, -170.938, 433.5, 58.6687, -69.938, 531.154, 58.6687, -152.487, 539.863, 68.6124, -154.039, 430.227, 58.6687, -69.3813, 531.327, 58.6687, -152.73, 506.874, 58.6687, -177.439, 557.167, 58.6687, -134.036, 557.167, 51.5312, -134.036, 505.141, 51.5312, -170.938, 536.388, 68.6124, -149.14, 485.526, 58.6687, -33.0353, 503.399, 58.6687, -172.54, 486.083, -3.43323E-5, -29.7614, 562.73, 58.6687, -137.819, 486.083, 58.6687, -29.7614, 485.526, 51.5312, -33.0353, 459.513, 58.6687, -51.4867, 559.255, 58.6687, -132.92, 171.574, 81.5874, -208.924, 225.631, 62.1174, -158.898, 107.448, 62.1174, -245.154, 166.539, 81.5874, -202.026, 230.664, 62.1174, -165.794, 112.485, 62.1174, -252.055, -6.8168, -3.43323E-5, -546.235, 21.1114, 58.6687, -526.425, 49.0397, -3.43323E-5, -506.615, -83.4639, -3.43323E-5, -438.177, -80.1901, 51.5312, -438.734, -8.54895, 58.6687, -539.734, -80.1901, 58.6687, -438.734, 17.464, 58.6687, -521.283, 26.1723, 68.6124, -522.835, -83.4639, 58.6687, -438.177, 17.6365, 58.6687, -521.526, -6.8168, 58.6687, -546.235, 43.4769, 58.6687, -502.831, 43.4769, 51.5312, -502.831, -8.54895, 51.5312, -539.734, 22.6974, 68.6124, -517.936, -28.1642, 58.6687, -401.831, -10.2917, 58.6687, -541.336, -27.6075, -3.43323E-5, -398.557, 49.0397, 58.6687, -506.615, -27.6075, 58.6687, -398.557, -28.1642, 51.5312, -401.831, -54.1771, 58.6687, -420.282, 45.5647, 58.6687, -501.716, -44.2067, 64.8711, 481.828, -44.4774, 64.8711, 494.191, -56.8399, 64.8711, 493.92, -44.4774, 0.313107, 494.191, -56.5693, 64.8711, 481.558, -56.8399, 0.313107, 493.92, -56.5693, 0.313107, 481.558, -44.2067, 0.313107, 481.828, -420.822, 64.8187, 201.726, -421.092, 64.8187, 214.089, -433.455, 64.8187, 213.818, -421.092, 2.09994, 214.089, -433.184, 64.8187, 201.455, -433.455, 2.09994, 213.818, -433.184, 2.09994, 201.455, -420.822, 2.09994, 201.726, 377.904, 8.79618, -121.415, 377.91, 51.5524, -120.971, 375.124, 8.79618, -123.376, 376.898, 8.79618, -118.165, 376.898, 51.5524, -118.165, 372.4, 51.5524, -121.338, 372.4, 8.79618, -121.338, 373.496, 8.79618, -118.118, 370.647, 54.7899, -121.721, 377.517, 51.6565, -116.929, 380.141, 51.6565, -120.689, 373.496, 51.5524, -118.118, 375.124, 51.5524, -123.376, 373.271, 54.7899, -125.482, 380.141, 54.7899, -120.689, 373.271, 51.6565, -125.482, 370.647, 51.6565, -121.721, 377.517, 54.7899, -116.929, 378.99, 5.18368, -121.785, 375.108, 5.18368, -124.524, 377.585, 5.18368, -117.246, 371.303, 5.18368, -121.678, 372.835, 5.18368, -117.18, 389.774, 8.79618, -136.157, 389.78, 51.5524, -135.712, 386.994, 8.79618, -138.118, 388.768, 8.79618, -132.907, 388.768, 51.5524, -132.907, 384.27, 51.5524, -136.08, 384.27, 8.79618, -136.08, 385.366, 8.79618, -132.86, 382.517, 54.7899, -136.463, 389.387, 51.6565, -131.67, 392.011, 51.6565, -135.431, 385.366, 51.5524, -132.86, 386.994, 51.5524, -138.118, 385.141, 54.7899, -140.223, 392.011, 54.7899, -135.431, 385.141, 51.6565, -140.223, 382.517, 51.6565, -136.463, 389.387, 54.7899, -131.67, 390.86, 5.18368, -136.527, 386.978, 5.18368, -139.265, 389.455, 5.18368, -131.988, 383.174, 5.18368, -136.419, 384.705, 5.18368, -131.922, 21.384, 8.79618, -375.522, 21.3902, 51.5524, -375.077, 18.6042, 8.79618, -377.482, 20.3781, 8.79618, -372.272, 20.3781, 51.5524, -372.272, 15.8803, 51.5524, -375.445, 15.8803, 8.79618, -375.445, 16.9766, 8.79618, -372.224, 14.1277, 54.7899, -375.828, 20.9977, 51.6565, -371.035, 23.6209, 51.6565, -374.795, 16.9766, 51.5524, -372.224, 18.6042, 51.5524, -377.482, 16.7509, 54.7899, -379.588, 23.6209, 54.7899, -374.795, 16.7509, 51.6565, -379.588, 14.1277, 51.6565, -375.828, 20.9977, 54.7899, -371.035, 22.4706, 5.18368, -375.891, 18.5882, 5.18368, -378.63, 21.0657, 5.18368, -371.353, 14.7837, 5.18368, -375.784, 16.3149, 5.18368, -371.286, 66.4857, 8.79618, -373.13, 66.4919, 51.5524, -372.686, 63.7059, 8.79618, -375.091, 65.4798, 8.79618, -369.88, 65.4798, 51.5524, -369.88, 60.982, 51.5524, -373.053, 60.982, 8.79618, -373.053, 62.0783, 8.79618, -369.833, 59.2294, 54.7899, -373.436, 66.0994, 51.6565, -368.644, 68.7226, 51.6565, -372.404, 62.0783, 51.5524, -369.833, 63.7059, 51.5524, -375.091, 61.8526, 54.7899, -377.196, 68.7226, 54.7899, -372.404, 61.8526, 51.6565, -377.196, 59.2294, 51.6565, -373.436, 66.0994, 54.7899, -368.644, 67.5723, 5.18368, -373.5, 63.6899, 5.18368, -376.239, 66.1673, 5.18368, -368.961, 59.8854, 5.18368, -373.393, 61.4166, 5.18368, -368.895, 80.1886, 8.82734, -363.058, 80.1948, 51.5836, -362.613, 77.4088, 8.82734, -365.019, 79.1826, 8.82734, -359.808, 79.1826, 51.5836, -359.808, 74.6849, 51.5836, -362.981, 74.6849, 8.82734, -362.981, 75.7811, 8.82734, -359.761, 72.9323, 54.8211, -363.364, 79.8022, 51.6876, -358.571, 82.4254, 51.6876, -362.332, 75.7811, 51.5836, -359.761, 77.4088, 51.5836, -365.019, 75.5555, 54.8211, -367.124, 82.4254, 54.8211, -362.332, 75.5555, 51.6876, -367.124, 72.9323, 51.6876, -363.364, 79.8022, 54.8211, -358.571, 81.2752, 5.21484, -363.428, 77.3928, 5.21484, -366.166, 79.8702, 5.21484, -358.889, 73.5883, 5.21484, -363.32, 75.1195, 5.21484, -358.823, 95.1205, 8.79618, -351.562, 95.1267, 51.5524, -351.118, 92.3407, 8.79618, -353.523, 94.1145, 8.79618, -348.312, 94.1145, 51.5524, -348.312, 89.6167, 51.5524, -351.485, 89.6167, 8.79618, -351.485, 90.713, 8.79618, -348.265, 87.8642, 54.7899, -351.868, 94.7341, 51.6565, -347.076, 97.3573, 51.6565, -350.836, 90.713, 51.5524, -348.265, 92.3407, 51.5524, -353.523, 90.4874, 54.7899, -355.629, 97.3573, 54.7899, -350.836, 90.4874, 51.6565, -355.629, 87.8642, 51.6565, -351.868, 94.7341, 54.7899, -347.076, 96.2071, 5.18368, -351.932, 92.3246, 5.18368, -354.671, 94.8021, 5.18368, -347.393, 88.5202, 5.18368, -351.825, 90.0514, 5.18368, -347.327, 52.3966, 8.79618, -383.543, 52.4028, 51.5524, -383.098, 49.6168, 8.79618, -385.503, 51.3906, 8.79618, -380.293, 51.3906, 51.5524, -380.293, 46.8929, 51.5524, -383.466, 46.8929, 8.79618, -383.466, 47.9892, 8.79618, -380.245, 45.1403, 54.7899, -383.849, 52.0102, 51.6565, -379.056, 54.6334, 51.6565, -382.816, 47.9892, 51.5524, -380.245, 49.6168, 51.5524, -385.503, 47.7635, 54.7899, -387.609, 54.6334, 54.7899, -382.816, 47.7635, 51.6565, -387.609, 45.1403, 51.6565, -383.849, 52.0102, 54.7899, -379.056, 53.4832, 5.18368, -383.912, 49.6008, 5.18368, -386.651, 52.0782, 5.18368, -379.374, 45.7963, 5.18368, -383.805, 47.3275, 5.18368, -379.307, 36.2074, 8.79618, -396.42, 36.2136, 51.5524, -395.975, 33.4276, 8.79618, -398.381, 35.2014, 8.79618, -393.17, 35.2014, 51.5524, -393.17, 30.7037, 51.5524, -396.343, 30.7037, 8.79618, -396.343, 31.8, 8.79618, -393.123, 28.9511, 54.7899, -396.726, 35.821, 51.6565, -391.933, 38.4442, 51.6565, -395.694, 31.8, 51.5524, -393.123, 33.4276, 51.5524, -398.381, 31.5743, 54.7899, -400.486, 38.4442, 54.7899, -395.694, 31.5743, 51.6565, -400.486, 28.9511, 51.6565, -396.726, 35.821, 54.7899, -391.933, 37.294, 5.18368, -396.79, 33.4116, 5.18368, -399.528, 35.889, 5.18368, -392.251, 29.6071, 5.18368, -396.682, 31.1383, 5.18368, -392.185, 85.5255, 8.79618, -305.011, 85.5317, 51.5524, -304.567, 82.7457, 8.79618, -306.972, 84.5195, 8.79618, -301.762, 84.5195, 51.5524, -301.762, 80.0218, 51.5524, -304.934, 80.0218, 8.79618, -304.934, 81.1181, 8.79618, -301.714, 78.2692, 54.7899, -305.317, 85.1392, 51.6565, -300.525, 87.7623, 51.6565, -304.285, 81.1181, 51.5524, -301.714, 82.7457, 51.5524, -306.972, 80.8924, 54.7899, -309.078, 87.7623, 54.7899, -304.285, 80.8924, 51.6565, -309.078, 78.2692, 51.6565, -305.317, 85.1392, 54.7899, -300.525, 86.6121, 5.18368, -305.381, 82.7297, 5.18368, -308.12, 85.2071, 5.18368, -300.842, 78.9252, 5.18368, -305.274, 80.4564, 5.18368, -300.776, 72.1482, 8.79618, -286.59, 72.1544, 51.5524, -286.145, 69.3684, 8.79618, -288.551, 71.1422, 8.79618, -283.34, 71.1422, 51.5524, -283.34, 66.6444, 51.5524, -286.513, 66.6444, 8.79618, -286.513, 67.7407, 8.79618, -283.293, 64.8919, 54.7899, -286.896, 71.7618, 51.6565, -282.104, 74.385, 51.6565, -285.864, 67.7407, 51.5524, -283.293, 69.3684, 51.5524, -288.551, 67.5151, 54.7899, -290.656, 74.385, 54.7899, -285.864, 67.5151, 51.6565, -290.656, 64.8919, 51.6565, -286.896, 71.7618, 54.7899, -282.104, 73.2348, 5.18368, -286.96, 69.3524, 5.18368, -289.699, 71.8298, 5.18368, -282.421, 65.5479, 5.18368, -286.853, 67.0791, 5.18368, -282.355, 99.5616, 8.79618, -324.391, 99.5678, 51.5524, -323.947, 96.7818, 8.79618, -326.352, 98.5556, 8.79618, -321.142, 98.5556, 51.5524, -321.142, 94.0579, 51.5524, -324.314, 94.0579, 8.79618, -324.314, 95.1542, 8.79618, -321.094, 92.3053, 54.7899, -324.697, 99.1753, 51.6565, -319.905, 101.798, 51.6565, -323.665, 95.1542, 51.5524, -321.094, 96.7818, 51.5524, -326.352, 94.9285, 54.7899, -328.458, 101.798, 54.7899, -323.665, 94.9285, 51.6565, -328.458, 92.3053, 51.6565, -324.697, 99.1753, 54.7899, -319.905, 100.648, 5.18368, -324.761, 96.7658, 5.18368, -327.5, 99.2433, 5.18368, -320.222, 92.9613, 5.18368, -324.654, 94.4925, 5.18368, -320.156, 110.902, 8.79618, -340.486, 110.908, 51.5524, -340.042, 108.122, 8.79618, -342.447, 109.896, 8.79618, -337.237, 109.896, 51.5524, -337.237, 105.398, 51.5524, -340.41, 105.398, 8.79618, -340.41, 106.494, 8.79618, -337.189, 103.645, 54.7899, -340.793, 110.515, 51.6565, -336, 113.139, 51.6565, -339.76, 106.494, 51.5524, -337.189, 108.122, 51.5524, -342.447, 106.269, 54.7899, -344.553, 113.139, 54.7899, -339.76, 106.269, 51.6565, -344.553, 103.645, 51.6565, -340.793, 110.515, 54.7899, -336, 111.988, 5.18368, -340.856, 108.106, 5.18368, -343.595, 110.583, 5.18368, -336.318, 104.301, 5.18368, -340.749, 105.833, 5.18368, -336.251, 89.639, 8.82734, -244.793, 89.6452, 51.5836, -244.349, 86.8592, 8.82734, -246.754, 88.6331, 8.82734, -241.544, 88.6331, 51.5836, -241.544, 84.1353, 51.5836, -244.716, 84.1353, 8.82734, -244.716, 85.2316, 8.82734, -241.496, 82.3827, 54.8211, -245.099, 89.2527, 51.6876, -240.307, 91.8759, 51.6876, -244.067, 85.2316, 51.5836, -241.496, 86.8592, 51.5836, -246.754, 85.0059, 54.8211, -248.86, 91.8759, 54.8211, -244.067, 85.0059, 51.6876, -248.86, 82.3827, 51.6876, -245.099, 89.2527, 54.8211, -240.307, 90.7256, 5.21484, -245.163, 86.8432, 5.21484, -247.902, 89.3207, 5.21484, -240.624, 83.0387, 5.21484, -245.056, 84.5699, 5.21484, -240.558, 73.4029, 8.82734, -256.643, 73.4091, 51.5836, -256.199, 70.6232, 8.82734, -258.604, 72.397, 8.82734, -253.393, 72.397, 51.5836, -253.393, 67.8992, 51.5836, -256.566, 67.8992, 8.82734, -256.566, 68.9955, 8.82734, -253.346, 66.1467, 54.8211, -256.949, 73.0166, 51.6876, -252.157, 75.6398, 51.6876, -255.917, 68.9955, 51.5836, -253.346, 70.6232, 51.5836, -258.604, 68.7699, 54.8211, -260.71, 75.6398, 54.8211, -255.917, 68.7699, 51.6876, -260.71, 66.1467, 51.6876, -256.949, 73.0166, 54.8211, -252.157, 74.4895, 5.21484, -257.013, 70.6071, 5.21484, -259.752, 73.0846, 5.21484, -252.474, 66.8027, 5.21484, -256.906, 68.3338, 5.21484, -252.408, 57.6726, 8.82734, -268.124, 57.6788, 51.5836, -267.68, 54.8928, 8.82734, -270.085, 56.6666, 8.82734, -264.874, 56.6666, 51.5836, -264.874, 52.1689, 51.5836, -268.047, 52.1689, 8.82734, -268.047, 53.2652, 8.82734, -264.827, 50.4163, 54.8211, -268.43, 57.2863, 51.6876, -263.638, 59.9095, 51.6876, -267.398, 53.2652, 51.5836, -264.827, 54.8928, 51.5836, -270.085, 53.0395, 54.8211, -272.19, 59.9095, 54.8211, -267.398, 53.0395, 51.6876, -272.19, 50.4163, 51.6876, -268.43, 57.2863, 54.8211, -263.638, 58.7592, 5.21484, -268.494, 54.8768, 5.21484, -271.233, 57.3542, 5.21484, -263.955, 51.0723, 5.21484, -268.387, 52.6035, 5.21484, -263.889, 371.387, 8.79618, -172.949, 371.393, 51.5524, -172.504, 368.608, 8.79618, -174.91, 370.381, 8.79618, -169.699, 370.381, 51.5524, -169.699, 365.884, 51.5524, -172.872, 365.884, 8.79618, -172.872, 366.98, 8.79618, -169.652, 364.131, 54.7899, -173.255, 371.001, 51.6565, -168.463, 373.624, 51.6565, -172.223, 366.98, 51.5524, -169.652, 368.608, 51.5524, -174.91, 366.754, 54.7899, -177.015, 373.624, 54.7899, -172.223, 366.754, 51.6565, -177.015, 364.131, 51.6565, -173.255, 371.001, 54.7899, -168.463, 372.474, 5.18368, -173.319, 368.591, 5.18368, -176.058, 371.069, 5.18368, -168.78, 364.787, 5.18368, -173.212, 366.318, 5.18368, -168.714, 357.006, 8.79618, -183.628, 357.012, 51.5524, -183.184, 354.226, 8.79618, -185.589, 356, 8.79618, -180.378, 356, 51.5524, -180.378, 351.502, 51.5524, -183.551, 351.502, 8.79618, -183.551, 352.598, 8.79618, -180.331, 349.749, 54.7899, -183.934, 356.619, 51.6565, -179.142, 359.243, 51.6565, -182.902, 352.598, 51.5524, -180.331, 354.226, 51.5524, -185.589, 352.373, 54.7899, -187.694, 359.243, 54.7899, -182.902, 352.373, 51.6565, -187.694, 349.749, 51.6565, -183.934, 356.619, 54.7899, -179.142, 358.092, 5.18368, -183.998, 354.21, 5.18368, -186.737, 356.687, 5.18368, -179.459, 350.405, 5.18368, -183.891, 351.937, 5.18368, -179.393, 342.663, 8.79618, -195.23, 342.669, 51.5524, -194.786, 339.883, 8.79618, -197.191, 341.657, 8.79618, -191.981, 341.657, 51.5524, -191.981, 337.159, 51.5524, -195.153, 337.159, 8.79618, -195.153, 338.255, 8.79618, -191.933, 335.407, 54.7899, -195.536, 342.277, 51.6565, -190.744, 344.9, 51.6565, -194.504, 338.255, 51.5524, -191.933, 339.883, 51.5524, -197.191, 338.03, 54.7899, -199.297, 344.9, 54.7899, -194.504, 338.03, 51.6565, -199.297, 335.407, 51.6565, -195.536, 342.277, 54.7899, -190.744, 343.75, 5.18368, -195.6, 339.867, 5.18368, -198.339, 342.345, 5.18368, -191.061, 336.063, 5.18368, -195.493, 337.594, 5.18368, -190.995, 387.912, 8.79618, -161.455, 387.918, 51.5524, -161.011, 385.132, 8.79618, -163.416, 386.906, 8.79618, -158.206, 386.906, 51.5524, -158.206, 382.408, 51.5524, -161.379, 382.408, 8.79618, -161.379, 383.504, 8.79618, -158.158, 380.655, 54.7899, -161.762, 387.525, 51.6565, -156.969, 390.149, 51.6565, -160.729, 383.504, 51.5524, -158.158, 385.132, 51.5524, -163.416, 383.279, 54.7899, -165.522, 390.149, 54.7899, -160.729, 383.279, 51.6565, -165.522, 380.655, 51.6565, -161.762, 387.525, 54.7899, -156.969, 388.998, 5.18368, -161.825, 385.116, 5.18368, -164.564, 387.593, 5.18368, -157.287, 381.312, 5.18368, -161.718, 382.843, 5.18368, -157.22, 402.663, 8.79618, -151.616, 402.67, 51.5524, -151.171, 399.884, 8.79618, -153.577, 401.657, 8.79618, -148.366, 401.657, 51.5524, -148.366, 397.16, 51.5524, -151.539, 397.16, 8.79618, -151.539, 398.256, 8.79618, -148.319, 395.407, 54.7899, -151.922, 402.277, 51.6565, -147.129, 404.9, 51.6565, -150.89, 398.256, 51.5524, -148.319, 399.884, 51.5524, -153.577, 398.03, 54.7899, -155.682, 404.9, 54.7899, -150.89, 398.03, 51.6565, -155.682, 395.407, 51.6565, -151.922, 402.277, 54.7899, -147.129, 403.75, 5.18368, -151.986, 399.868, 5.18368, -154.724, 402.345, 5.18368, -147.447, 396.063, 5.18368, -151.878, 397.594, 5.18368, -147.381, 329.205, 8.79618, -204.578, 329.211, 51.5524, -204.133, 326.425, 8.79618, -206.539, 328.199, 8.79618, -201.328, 328.199, 51.5524, -201.328, 323.701, 51.5524, -204.501, 323.701, 8.79618, -204.501, 324.797, 8.79618, -201.281, 321.949, 54.7899, -204.884, 328.819, 51.6565, -200.092, 331.442, 51.6565, -203.852, 324.797, 51.5524, -201.281, 326.425, 51.5524, -206.539, 324.572, 54.7899, -208.644, 331.442, 54.7899, -203.852, 324.572, 51.6565, -208.644, 321.949, 51.6565, -204.884, 328.819, 54.7899, -200.092, 330.292, 5.18368, -204.948, 326.409, 5.18368, -207.687, 328.887, 5.18368, -200.409, 322.605, 5.18368, -204.841, 324.136, 5.18368, -200.343, 318.052, 8.79618, -188.297, 318.058, 51.5524, -187.852, 315.272, 8.79618, -190.258, 317.046, 8.79618, -185.047, 317.046, 51.5524, -185.047, 312.548, 51.5524, -188.22, 312.548, 8.79618, -188.22, 313.644, 8.79618, -185, 310.796, 54.7899, -188.603, 317.665, 51.6565, -183.81, 320.289, 51.6565, -187.571, 313.644, 51.5524, -185, 315.272, 51.5524, -190.258, 313.419, 54.7899, -192.363, 320.289, 54.7899, -187.571, 313.419, 51.6565, -192.363, 310.796, 51.6565, -188.603, 317.665, 54.7899, -183.81, 319.138, 5.18368, -188.667, 315.256, 5.18368, -191.405, 317.733, 5.18368, -184.128, 311.452, 5.18368, -188.559, 312.983, 5.18368, -184.062, 304.266, 8.79618, -170.408, 304.272, 51.5524, -169.964, 301.486, 8.79618, -172.369, 303.26, 8.79618, -167.159, 303.26, 51.5524, -167.159, 298.762, 51.5524, -170.332, 298.762, 8.79618, -170.332, 299.859, 8.79618, -167.111, 297.01, 54.7899, -170.715, 303.88, 51.6565, -165.922, 306.503, 51.6565, -169.682, 299.859, 51.5524, -167.111, 301.486, 51.5524, -172.369, 299.633, 54.7899, -174.475, 306.503, 54.7899, -169.682, 299.633, 51.6565, -174.475, 297.01, 51.6565, -170.715, 303.88, 54.7899, -165.922, 305.353, 5.18368, -170.778, 301.47, 5.18368, -173.517, 303.948, 5.18368, -166.24, 297.666, 5.18368, -170.671, 299.197, 5.18368, -166.173, 290.865, 8.79618, -152.046, 290.871, 51.5524, -151.602, 288.085, 8.79618, -154.007, 289.859, 8.79618, -148.797, 289.859, 51.5524, -148.797, 285.361, 51.5524, -151.969, 285.361, 8.79618, -151.969, 286.457, 8.79618, -148.749, 283.608, 54.7899, -152.352, 290.478, 51.6565, -147.56, 293.102, 51.6565, -151.32, 286.457, 51.5524, -148.749, 288.085, 51.5524, -154.007, 286.232, 54.7899, -156.113, 293.102, 54.7899, -151.32, 286.232, 51.6565, -156.113, 283.608, 51.6565, -152.352, 290.478, 54.7899, -147.56, 291.951, 5.18368, -152.416, 288.069, 5.18368, -155.155, 290.546, 5.18368, -147.877, 284.264, 5.18368, -152.309, 285.796, 5.18368, -147.811, 277.719, 8.79618, -134.035, 277.725, 51.5524, -133.591, 274.94, 8.79618, -135.996, 276.713, 8.79618, -130.786, 276.713, 51.5524, -130.786, 272.216, 51.5524, -133.958, 272.216, 8.79618, -133.958, 273.312, 8.79618, -130.738, 270.463, 54.7899, -134.342, 277.333, 51.6565, -129.549, 279.956, 51.6565, -133.309, 273.312, 51.5524, -130.738, 274.94, 51.5524, -135.996, 273.086, 54.7899, -138.102, 279.956, 54.7899, -133.309, 273.086, 51.6565, -138.102, 270.463, 51.6565, -134.342, 277.333, 54.7899, -129.549, 278.806, 5.18368, -134.405, 274.924, 5.18368, -137.144, 277.401, 5.18368, -129.867, 271.119, 5.18368, -134.298, 272.65, 5.18368, -129.8, 247.063, 8.72495, -128.181, 247.069, 51.4812, -127.737, 244.283, 8.72495, -130.142, 246.057, 8.72495, -124.931, 246.057, 51.4812, -124.931, 241.559, 51.4812, -128.104, 241.559, 8.72495, -128.104, 242.656, 8.72495, -124.884, 239.807, 54.7187, -128.487, 246.677, 51.5852, -123.695, 249.3, 51.5852, -127.455, 242.656, 51.4812, -124.884, 244.283, 51.4812, -130.142, 242.43, 54.7187, -132.248, 249.3, 54.7187, -127.455, 242.43, 51.5852, -132.248, 239.807, 51.5852, -128.487, 246.677, 54.7187, -123.695, 248.15, 5.11245, -128.551, 244.267, 5.11245, -131.29, 246.745, 5.11245, -124.012, 240.463, 5.11245, -128.444, 241.994, 5.11245, -123.946, 263.911, 8.72495, -115.884, 263.918, 51.4812, -115.44, 261.132, 8.72495, -117.845, 262.906, 8.72495, -112.635, 262.906, 51.4812, -112.635, 258.408, 51.4812, -115.807, 258.408, 8.72495, -115.807, 259.504, 8.72495, -112.587, 256.655, 54.7187, -116.19, 263.525, 51.5852, -111.398, 266.148, 51.5852, -115.158, 259.504, 51.4812, -112.587, 261.132, 51.4812, -117.845, 259.278, 54.7187, -119.951, 266.148, 54.7187, -115.158, 259.278, 51.5852, -119.951, 256.655, 51.5852, -116.19, 263.525, 54.7187, -111.398, 264.998, 5.11245, -116.254, 261.116, 5.11245, -118.993, 263.593, 5.11245, -111.715, 257.311, 5.11245, -116.147, 258.842, 5.11245, -111.649, 231.715, 8.72495, -139.383, 231.721, 51.4812, -138.938, 228.935, 8.72495, -141.344, 230.709, 8.72495, -136.133, 230.709, 51.4812, -136.133, 226.211, 51.4812, -139.306, 226.211, 8.72495, -139.306, 227.308, 8.72495, -136.085, 224.459, 54.7187, -139.689, 231.329, 51.5852, -134.896, 233.952, 51.5852, -138.657, 227.308, 51.4812, -136.085, 228.935, 51.4812, -141.344, 227.082, 54.7187, -143.449, 233.952, 54.7187, -138.657, 227.082, 51.5852, -143.449, 224.459, 51.5852, -139.689, 231.329, 54.7187, -134.896, 232.802, 5.11245, -139.753, 228.919, 5.11245, -142.491, 231.397, 5.11245, -135.214, 225.115, 5.11245, -139.645, 226.646, 5.11245, -135.147, 121.518, 8.72495, -220.443, 121.524, 51.4812, -219.998, 118.738, 8.72495, -222.404, 120.512, 8.72495, -217.193, 120.512, 51.4812, -217.193, 116.014, 51.4812, -220.366, 116.014, 8.72495, -220.366, 117.111, 8.72495, -217.146, 114.262, 54.7187, -220.749, 121.132, 51.5852, -215.956, 123.755, 51.5852, -219.717, 117.111, 51.4812, -217.146, 118.738, 51.4812, -222.404, 116.885, 54.7187, -224.509, 123.755, 54.7187, -219.717, 116.885, 51.5852, -224.509, 114.262, 51.5852, -220.749, 121.132, 54.7187, -215.956, 122.605, 5.11245, -220.813, 118.722, 5.11245, -223.551, 121.2, 5.11245, -216.274, 114.918, 5.11245, -220.705, 116.449, 5.11245, -216.208, 185.906, 8.72495, -173.449, 185.913, 51.4812, -173.005, 183.127, 8.72495, -175.41, 184.9, 8.72495, -170.199, 184.9, 51.4812, -170.199, 180.403, 51.4812, -173.372, 180.403, 8.72495, -173.372, 181.499, 8.72495, -170.152, 178.65, 54.7187, -173.755, 185.52, 51.5852, -168.963, 188.143, 51.5852, -172.723, 181.499, 51.4812, -170.152, 183.127, 51.4812, -175.41, 181.273, 54.7187, -177.515, 188.143, 54.7187, -172.723, 181.273, 51.5852, -177.515, 178.65, 51.5852, -173.755, 185.52, 54.7187, -168.963, 186.993, 5.11245, -173.819, 183.111, 5.11245, -176.558, 185.588, 5.11245, -169.28, 179.306, 5.11245, -173.712, 180.837, 5.11245, -169.214, 169.967, 8.72495, -185.082, 169.974, 51.4812, -184.638, 167.188, 8.72495, -187.043, 168.962, 8.72495, -181.832, 168.962, 51.4812, -181.832, 164.464, 51.4812, -185.005, 164.464, 8.72495, -185.005, 165.56, 8.72495, -181.785, 162.711, 54.7187, -185.388, 169.581, 51.5852, -180.596, 172.204, 51.5852, -184.356, 165.56, 51.4812, -181.785, 167.188, 51.4812, -187.043, 165.334, 54.7187, -189.148, 172.204, 54.7187, -184.356, 165.334, 51.5852, -189.148, 162.711, 51.5852, -185.388, 169.581, 54.7187, -180.596, 171.054, 5.11245, -185.452, 167.172, 5.11245, -188.191, 169.649, 5.11245, -180.913, 163.367, 5.11245, -185.345, 164.898, 5.11245, -180.847, 201.254, 8.72495, -162.247, 201.26, 51.4812, -161.803, 198.474, 8.72495, -164.208, 200.248, 8.72495, -158.998, 200.248, 51.4812, -158.998, 195.751, 51.4812, -162.171, 195.751, 8.72495, -162.171, 196.847, 8.72495, -158.95, 193.998, 54.7187, -162.554, 200.868, 51.5852, -157.761, 203.491, 51.5852, -161.521, 196.847, 51.4812, -158.95, 198.474, 51.4812, -164.208, 196.621, 54.7187, -166.314, 203.491, 54.7187, -161.521, 196.621, 51.5852, -166.314, 193.998, 51.5852, -162.554, 200.868, 54.7187, -157.761, 202.341, 5.11245, -162.617, 198.458, 5.11245, -165.356, 200.936, 5.11245, -158.079, 194.654, 5.11245, -162.51, 196.185, 5.11245, -158.012, 105.402, 8.72495, -231.865, 105.409, 51.4812, -231.42, 102.623, 8.72495, -233.826, 104.396, 8.72495, -228.615, 104.396, 51.4812, -228.615, 99.8987, 51.4812, -231.788, 99.8987, 8.72495, -231.788, 100.995, 8.72495, -228.568, 98.1462, 54.7187, -232.171, 105.016, 51.5852, -227.378, 107.639, 51.5852, -231.139, 100.995, 51.4812, -228.568, 102.623, 51.4812, -233.826, 100.769, 54.7187, -235.931, 107.639, 54.7187, -231.139, 100.769, 51.5852, -235.931, 98.1462, 51.5852, -232.171, 105.016, 54.7187, -227.378, 106.489, 5.11245, -232.235, 102.607, 5.11245, -234.973, 105.084, 5.11245, -227.696, 98.8022, 5.11245, -232.127, 100.333, 5.11245, -227.63, 153.485, 8.72495, -197.112, 153.491, 51.4812, -196.668, 150.705, 8.72495, -199.073, 152.479, 8.72495, -193.862, 152.479, 51.4812, -193.862, 147.981, 51.4812, -197.035, 147.981, 8.72495, -197.035, 149.077, 8.72495, -193.815, 146.228, 54.7187, -197.418, 153.098, 51.5852, -192.626, 155.721, 51.5852, -196.386, 149.077, 51.4812, -193.815, 150.705, 51.4812, -199.073, 148.852, 54.7187, -201.178, 155.721, 54.7187, -196.386, 148.852, 51.5852, -201.178, 146.228, 51.5852, -197.418, 153.098, 54.7187, -192.626, 154.571, 5.11245, -197.482, 150.689, 5.11245, -200.221, 153.166, 5.11245, -192.943, 146.884, 5.11245, -197.375, 148.415, 5.11245, -192.877, 218.103, 8.72495, -149.951, 218.109, 51.4812, -149.506, 215.323, 8.72495, -151.911, 217.097, 8.72495, -146.701, 217.097, 51.4812, -146.701, 212.599, 51.4812, -149.874, 212.599, 8.72495, -149.874, 213.695, 8.72495, -146.653, 210.846, 54.7187, -150.257, 217.716, 51.5852, -145.464, 220.34, 51.5852, -149.224, 213.695, 51.4812, -146.653, 215.323, 51.4812, -151.911, 213.47, 54.7187, -154.017, 220.34, 54.7187, -149.224, 213.47, 51.5852, -154.017, 210.846, 51.5852, -150.257, 217.716, 54.7187, -145.464, 219.189, 5.11245, -150.32, 215.307, 5.11245, -153.059, 217.784, 5.11245, -145.782, 211.502, 5.11245, -150.213, 213.034, 5.11245, -145.715, 137.249, 8.72495, -208.962, 137.255, 51.4812, -208.518, 134.469, 8.72495, -210.923, 136.243, 8.72495, -205.712, 136.243, 51.4812, -205.712, 131.745, 51.4812, -208.885, 131.745, 8.72495, -208.885, 132.841, 8.72495, -205.665, 129.992, 54.7187, -209.268, 136.862, 51.5852, -204.476, 139.485, 51.5852, -208.236, 132.841, 51.4812, -205.665, 134.469, 51.4812, -210.923, 132.615, 54.7187, -213.028, 139.485, 54.7187, -208.236, 132.615, 51.5852, -213.028, 129.992, 51.5852, -209.268, 136.862, 54.7187, -204.476, 138.335, 5.11245, -209.332, 134.453, 5.11245, -212.071, 136.93, 5.11245, -204.793, 130.648, 5.11245, -209.225, 132.179, 5.11245, -204.727, 115.499, 8.72495, -246.633, 115.506, 51.4812, -246.189, 112.72, 8.72495, -248.594, 114.493, 8.72495, -243.384, 114.493, 51.4812, -243.384, 109.996, 51.4812, -246.557, 109.996, 8.72495, -246.557, 111.092, 8.72495, -243.336, 108.243, 54.7187, -246.94, 115.113, 51.5852, -242.147, 117.736, 51.5852, -245.907, 111.092, 51.4812, -243.336, 112.72, 51.4812, -248.594, 110.866, 54.7187, -250.7, 117.736, 54.7187, -245.907, 110.866, 51.5852, -250.7, 108.243, 51.5852, -246.94, 115.113, 54.7187, -242.147, 116.586, 5.11245, -247.003, 112.704, 5.11245, -249.742, 115.181, 5.11245, -242.465, 108.899, 5.11245, -246.896, 110.43, 5.11245, -242.398, 163.581, 8.72495, -211.881, 163.588, 51.4812, -211.436, 160.802, 8.72495, -213.842, 162.575, 8.72495, -208.631, 162.575, 51.4812, -208.631, 158.078, 51.4812, -211.804, 158.078, 8.72495, -211.804, 159.174, 8.72495, -208.584, 156.325, 54.7187, -212.187, 163.195, 51.5852, -207.394, 165.818, 51.5852, -211.155, 159.174, 51.4812, -208.584, 160.802, 51.4812, -213.842, 158.948, 54.7187, -215.947, 165.818, 54.7187, -211.155, 158.948, 51.5852, -215.947, 156.325, 51.5852, -212.187, 163.195, 54.7187, -207.394, 164.668, 5.11245, -212.251, 160.786, 5.11245, -214.989, 163.263, 5.11245, -207.712, 156.981, 5.11245, -212.143, 158.512, 5.11245, -207.646, 228.2, 8.72495, -164.719, 228.206, 51.4812, -164.275, 225.42, 8.72495, -166.68, 227.194, 8.72495, -161.47, 227.194, 51.4812, -161.47, 222.696, 51.4812, -164.642, 222.696, 8.72495, -164.642, 223.792, 8.72495, -161.422, 220.943, 54.7187, -165.025, 227.813, 51.5852, -160.233, 230.436, 51.5852, -163.993, 223.792, 51.4812, -161.422, 225.42, 51.4812, -166.68, 223.566, 54.7187, -168.786, 230.436, 54.7187, -163.993, 223.566, 51.5852, -168.786, 220.943, 51.5852, -165.025, 227.813, 54.7187, -160.233, 229.286, 5.11245, -165.089, 225.404, 5.11245, -167.828, 227.881, 5.11245, -160.55, 221.599, 5.11245, -164.982, 223.13, 5.11245, -160.484, 211.351, 8.72495, -177.016, 211.357, 51.4812, -176.572, 208.571, 8.72495, -178.977, 210.345, 8.72495, -173.766, 210.345, 51.4812, -173.766, 205.847, 51.4812, -176.939, 205.847, 8.72495, -176.939, 206.944, 8.72495, -173.719, 204.095, 54.7187, -177.322, 210.965, 51.5852, -172.53, 213.588, 51.5852, -176.29, 206.944, 51.4812, -173.719, 208.571, 51.4812, -178.977, 206.718, 54.7187, -181.083, 213.588, 54.7187, -176.29, 206.718, 51.5852, -181.083, 204.095, 51.5852, -177.322, 210.965, 54.7187, -172.53, 212.438, 5.11245, -177.386, 208.555, 5.11245, -180.125, 211.033, 5.11245, -172.847, 204.751, 5.11245, -177.279, 206.282, 5.11245, -172.781, 196.003, 8.72495, -188.218, 196.009, 51.4812, -187.773, 193.223, 8.72495, -190.179, 194.997, 8.72495, -184.968, 194.997, 51.4812, -184.968, 190.5, 51.4812, -188.141, 190.5, 8.72495, -188.141, 191.596, 8.72495, -184.921, 188.747, 54.7187, -188.524, 195.617, 51.5852, -183.731, 198.24, 51.5852, -187.492, 191.596, 51.4812, -184.921, 193.223, 51.4812, -190.179, 191.37, 54.7187, -192.284, 198.24, 54.7187, -187.492, 191.37, 51.5852, -192.284, 188.747, 51.5852, -188.524, 195.617, 54.7187, -183.731, 197.09, 5.11245, -188.588, 193.207, 5.11245, -191.326, 195.685, 5.11245, -184.049, 189.403, 5.11245, -188.48, 190.934, 5.11245, -183.983, 180.064, 8.72495, -199.851, 180.071, 51.4812, -199.406, 177.285, 8.72495, -201.812, 179.058, 8.72495, -196.601, 179.058, 51.4812, -196.601, 174.561, 51.4812, -199.774, 174.561, 8.72495, -199.774, 175.657, 8.72495, -196.553, 172.808, 54.7187, -200.157, 179.678, 51.5852, -195.364, 182.301, 51.5852, -199.125, 175.657, 51.4812, -196.553, 177.285, 51.4812, -201.812, 175.431, 54.7187, -203.917, 182.301, 54.7187, -199.125, 175.431, 51.5852, -203.917, 172.808, 51.5852, -200.157, 179.678, 54.7187, -195.364, 181.151, 5.11245, -200.221, 177.269, 5.11245, -202.959, 179.746, 5.11245, -195.682, 173.464, 5.11245, -200.113, 174.995, 5.11245, -195.616, 131.615, 8.72495, -235.211, 131.621, 51.4812, -234.767, 128.835, 8.72495, -237.172, 130.609, 8.72495, -231.962, 130.609, 51.4812, -231.962, 126.111, 51.4812, -235.135, 126.111, 8.72495, -235.135, 127.208, 8.72495, -231.914, 124.359, 54.7187, -235.518, 131.229, 51.5852, -230.725, 133.852, 51.5852, -234.485, 127.208, 51.4812, -231.914, 128.835, 51.4812, -237.172, 126.982, 54.7187, -239.278, 133.852, 54.7187, -234.485, 126.982, 51.5852, -239.278, 124.359, 51.5852, -235.518, 131.229, 54.7187, -230.725, 132.702, 5.11245, -235.581, 128.819, 5.11245, -238.32, 131.297, 5.11245, -231.043, 125.015, 5.11245, -235.474, 126.546, 5.11245, -230.976, 147.345, 8.72495, -223.731, 147.352, 51.4812, -223.286, 144.566, 8.72495, -225.691, 146.339, 8.72495, -220.481, 146.339, 51.4812, -220.481, 141.842, 51.4812, -223.654, 141.842, 8.72495, -223.654, 142.938, 8.72495, -220.433, 140.089, 54.7187, -224.037, 146.959, 51.5852, -219.244, 149.582, 51.5852, -223.004, 142.938, 51.4812, -220.433, 144.566, 51.4812, -225.691, 142.712, 54.7187, -227.797, 149.582, 54.7187, -223.004, 142.712, 51.5852, -227.797, 140.089, 51.5852, -224.037, 146.959, 54.7187, -219.244, 148.432, 5.11245, -224.1, 144.549, 5.11245, -226.839, 147.027, 5.11245, -219.562, 140.745, 5.11245, -223.993, 142.276, 5.11245, -219.495, 284.065, -6.10352E-5, -25.0428, 284.065, 62.0549, -25.0428, -217.105, 54.3514, -35.0618, -217.105, 43.4201, -35.0618, 24.8446, 24.0961, -361.352, 381.839, 5.18365, -144.619, 381.839, 56.3118, -144.619, 367.629, 29.6211, -125.15, 359.389, 54.7187, -113.859, 436.467, -6.10352E-5, -74.9084, 436.467, 29.6211, -74.9084, 9.09247, 5.18365, -372.525, 216.637, 5.18365, -146.575, 222.14, -6.10352E-5, -149.557, 209.308, 5.18365, -136.533, 209.308, 54.7187, -136.533, 221.601, 62.0549, -150.874, 36.7838, 5.18365, -260.934, 90.3371, 5.18365, -334.309, 118.005, 5.18365, -341.527, 34.4528, 5.18365, -374.898, 103.048, -6.10352E-5, -239.126, 90.4029, 54.7187, -221.8, 118.005, -6.10352E-5, -341.527, 31.6089, -6.10352E-5, -404.269, -291.971, 35.4999, 208.894, -317.08, 35.4999, 243.986, -490.915, 35.4999, 160.432, -473.661, -6.10352E-5, 172.778, -490.915, -6.10352E-5, 160.432, -473.661, 35.4999, 172.778, -454.338, -6.10352E-5, 145.773, -528.045, 35.4999, 212.323, -303.212, -6.10352E-5, -273.899, -285.229, -6.10352E-5, -260.565, -339.07, 62.0201, 65.812, -339.07, 43.4201, 65.812, -347.298, 62.0201, 76.907, -353.169, 43.4201, -12.0477, -351.047, 50.3389, -14.9093, -354.868, 43.4201, -17.7423, -256.667, 49.3514, -156.967, -191.799, 43.4201, -173.422, -149.838, 43.4201, -142.308, -287.997, 43.4201, -114.576, -246.485, 43.4201, -103.95, -301.3, 43.4201, -272.699, -80.1438, 62.7187, -196.775, -88.3126, 57.5064, -202.304, -171.651, 59.7812, -89.9157, 65.7814, 68.6862, -155.8, 72.1163, 65.7549, -163.941, 91.685, 62.0549, -163.068, 112.071, 62.0549, -338.852, -19.4791, 62.0549, -293.46, -229.905, 43.4562, -322.834, -245.58, 43.4562, -301.696, -191.808, -6.10352E-5, -261.823, -176.134, -6.10352E-5, -282.961, -76.0784, 59.6049, -225.249, 372.953, 65.6737, -151.105, 372.953, 62.0549, -151.105, -229.905, -6.10352E-5, -322.834, 326.948, 54.7187, -184.682, 112.485, 62.0549, -252.055, 326.891, 54.7187, -214.459, 409.503, 54.7187, -154.164, 326.878, 62.0549, -214.441, 372.893, 62.0549, -104.003, 372.893, 54.7187, -104.003, 233, -6.10352E-5, -181.309, 233, 5.18365, -181.309, 127.242, 5.18365, -258.496, 120.278, 5.18365, -263.579, 216.637, 54.7187, -146.575, 221.601, 54.7187, -150.874, 324.403, -6.10352E-5, -212.042, 324.403, 5.18365, -212.042, 324.352, -6.10352E-5, -211.971, 119.116, 5.18365, -247.362, 407.488, 5.18365, -151.403, 381.133, 5.18365, -115.294, 367.629, 5.18365, -125.15, 352.537, 29.6211, -118.86, 427.219, 29.6211, -62.2369, 351.529, 29.6211, -117.479, 359.389, 29.6211, -113.859, 381.133, -6.10352E-5, -115.294, 407.488, -6.10352E-5, -151.403, 478.85, 62.0549, 11.1305, 328.18, 62.0549, 68.7782, -120.064, 43.4201, -257.865, -351.047, 43.4201, -14.9093, -365.838, 43.4201, 63.1591, -395.248, 43.4201, 41.3512, -210.096, 54.3514, -66.2299, -357.611, 62.0201, 52.0641, -249.165, 43.4201, -80.5352, -240.008, 43.4201, -73.6133, -225.62, 43.4201, -92.7619, -183.51, 43.4201, -172.303, -325.441, 43.4201, 41.6551, -316.865, 43.4201, 99.473, -311.013, 43.4201, 52.3541, -303.239, 43.4201, 58.1181, -227.614, 43.4201, -42.9795, -78.9891, 48.6175, -269.182, -131.697, 55.4112, -339.233, -103.486, 55.4112, -299.756, -119.322, 55.4112, -278.399, -64.173, 55.4112, -289.163, 127.242, -6.10352E-5, -258.496, 64.5359, 62.0549, -264.503, 409.503, 62.0549, -154.164, 478.85, -6.10352E-5, 11.1305, 388.837, -6.10352E-5, 135.152, 388.837, 62.0549, 135.152, 334.369, -6.10352E-5, -93.9661, 427.219, -6.10352E-5, -62.2369, 351.529, -6.10352E-5, -117.479, 317.07, 62.0549, 84.529, 328.18, -6.10352E-5, 68.7782, 317.07, -6.10352E-5, 84.529, 301.744, -6.10352E-5, -49.2651, 400.253, -6.10352E-5, 22.632, 301.744, 62.0549, -49.2651, 400.253, 62.0549, 22.632, 382.575, 62.0549, 46.8543, 382.575, -6.10352E-5, 46.8543, -169.477, 59.6049, -294.506, -169.477, -6.10352E-5, -294.506, 159.101, 62.0549, -157.5, 334.369, 62.0549, -93.9661, 313.532, 62.0549, -148.05, 352.537, 62.0549, -118.86, -286.137, 62.7187, 314.064, -347.298, 43.4201, 76.907, -395.248, 50.3389, 41.3512, -404.837, 50.3389, 34.2404, -404.837, 62.7187, 34.2404, -512.632, 35.4999, 118.971, -491.137, 35.4999, 134.351, -454.338, 35.4999, 145.773, 25.3984, 65.7987, -260.33, 8.05496, 65.7987, -233.15, 4.85532, 65.7987, -232.626, 27.2119, 65.7987, -258.985, 20.8501, 65.7987, -220.765, 22.1033, 65.7987, -222.403, 22.1033, 62.0549, -222.403, 24.9338, 64.9987, -216.001, 26.3672, 62.0549, -217.934, 26.3672, 64.9987, -217.934, 24.9338, 62.0549, -216.001, 40.0628, 64.9987, -207.779, 48.2807, 64.9987, -218.861, 50.7959, 64.9987, -216.996, 42.5352, 62.0549, -205.856, 42.5352, 64.9987, -205.856, 94.1144, 64.9987, -167.609, 108.603, 64.9987, -187.148, 110.556, 64.9987, -185.7, 141.291, 64.9987, -129.72, 141.291, 62.0549, -129.72, 96.0784, 62.0549, -166.176, 96.0784, 64.9987, -166.176, 142.407, 64.9987, -131.225, 140.893, 64.9987, -132.945, 140.893, 62.0549, -132.945, 160.9, 64.9987, -156.165, 159.101, 64.9987, -157.5, 143.536, 62.0549, -132.748, 143.536, 64.9987, -132.748, 252.808, 64.9987, -92.8198, 217.708, 64.9987, -77.7489, 217.708, 62.0549, -77.7489, 64.5359, 65.9924, -264.503, 44.8898, 65.9924, -237.585, 237.375, 64.9987, -104.272, 16.9172, 65.9924, -373.447, 28.7236, 65.9924, -362.528, 32.1629, 65.9924, -397.173, 109.114, 65.9924, -338.728, 60.1461, 65.9924, -267.707, 60.3855, 65.9924, -264.043, -19.4791, 65.9924, -293.46, 89.6074, 65.9924, -337.618, 64.3928, 65.9924, -303.07, 89.6074, 68.4987, -337.618, 64.3928, 68.4987, -303.07, 57.4545, 68.4987, -308.134, 12.8073, 68.4987, -340.72, 59.2772, 68.4987, -306.804, 21.0038, 62.0549, -258.192, 22.8266, 67.6436, -256.861, 22.8266, 68.4987, -256.861, 38.0612, 68.4987, -375.239, -123.895, 50.5961, -427.364, -146.372, 50.5961, -395.225, -17.0853, 50.5961, -304.806, 350.632, 65.6737, -120.522, 335.877, 65.6737, -178.165, 313.532, 65.6737, -148.05, 335.877, 62.0549, -178.165, -411.479, 62.7187, 288.721, -111.614, 62.7187, 511.969, -115.294, 24.0961, -460.754, -171.651, 62.7187, -89.9157, -88.6013, 62.7187, -202.987, 27.2119, 62.0549, -258.985, 8.05496, 62.0549, -233.15, 40.0628, 62.0549, -207.779, 25.3984, 62.0549, -260.33, 48.2807, 62.0549, -218.861, 50.7959, 62.0549, -216.996, 94.1144, 62.0549, -167.609, 32.1629, 62.0549, -397.173, 24.8446, 62.0549, -361.352, -284.62, 50.0889, -32.7213, -221.056, 49.3514, -213.605, -362.987, 50.3389, -6.79288, -354.868, 50.3389, -17.7423, -350.985, 50.3389, -10.4279, -331.91, 50.3389, -36.1522, -353.169, 50.3389, -12.0477, -360.768, 50.3389, -5.14746, -345.285, 43.4201, -46.0704, -331.91, 43.4201, -36.1522, -350.985, 43.4201, -10.4279, -362.987, 43.4201, -6.79288, -360.768, 43.4201, -5.14746, -255.612, 50.0889, -91.7884, -5.39197, -6.10352E-5, 404.588, -142.996, -6.10352E-5, 302.552, -229.846, -6.10352E-5, 238.151, -440.315, -6.10352E-5, 82.0849, -286.137, -6.10352E-5, 314.064, -405.762, -6.10352E-5, 225.36, -50.1875, 62.7187, 489.025, -93.6496, 62.7187, 547.638, -199.287, 62.7187, 378.465, -93.6496, -6.10352E-5, 547.638, -541.153, -6.10352E-5, 249.279, -487.118, -6.10352E-5, 289.347, -528.045, -6.10352E-5, 212.323, -503.406, -6.10352E-5, 198.376, -464.102, 37.7823, 227.521, -503.406, 47.503, 198.376, -541.153, 47.503, 249.279, -497.866, 47.503, 239.956, -488.902, 47.503, 227.867, -464.187, 47.503, 258.422, -487.118, 47.503, 289.347, -471.103, -6.10352E-5, 267.749, -469.384, 47.503, 253.933, -472.801, 47.503, 258.542, -472.801, 37.7823, 258.542, -473.066, 47.503, 239.61, -473.066, 37.7823, 239.61, -464.102, 47.503, 227.521, -479.213, 18.4261, 216.315, -457.482, 18.4261, 187.009, -479.213, -6.10352E-5, 216.315, -488.902, 37.7823, 227.867, -497.866, 37.7823, 239.956, -469.384, 37.7823, 253.933, -464.187, 37.7823, 258.422, -449.372, 37.7823, 238.443, -455.794, 27.3573, 212.12, -427.641, 27.3573, 209.137, -444.379, 18.4261, 196.725, -455.794, 18.4261, 212.12, -439.056, 18.4261, 224.531, -458.972, -6.10352E-5, 89.3989, -291.971, -6.10352E-5, 208.894, -458.972, 35.4999, 89.3989, -317.08, -6.10352E-5, 243.986, -491.137, -6.10352E-5, 134.351, -562.029, 35.4999, 188.006, -512.632, -6.10352E-5, 118.971, -562.029, -6.10352E-5, 188.006, -345.285, 50.3389, -46.0704, -374.414, -6.10352E-5, -6.78757, -456.16, 47.0326, -67.6356, -417.005, -6.10352E-5, -120.44, -417.005, 47.0326, -120.44, -269.466, 47.0326, -319.408, -245.58, -6.10352E-5, -301.696, -269.466, -6.10352E-5, -319.408, -304.449, 47.0326, -272.231, -286.466, 47.0326, -258.897, -399.022, -6.10352E-5, -107.105, -182.215, 66.5014, -98.646, -191.799, 66.5014, -173.422, -456.271, -6.10352E-5, -67.486, -284.62, 43.4201, -32.7213, -246.485, 50.0889, -103.95, -260.785, 50.0889, -160.026, -222.683, 49.3514, -131.772, -182.953, 43.4201, -185.351, -221.056, 47.0326, -213.605, -256.667, 43.4201, -156.967, -256.667, 50.0889, -156.967, -227.614, 54.3514, -42.9795, -210.096, 43.4201, -66.2299, -199.501, 54.3514, -58.8032, -365.838, 62.0201, 63.1591, -357.611, 43.4201, 52.0641, -225.62, 55.6701, -92.7619, -231.709, 55.6701, -67.409, -240.01, 55.6701, -73.6636, -225.351, 55.6701, -62.6186, -203.294, 55.6701, -75.94, -282.037, 49.5451, 2.12418, -284.718, 52.6965, 5.73883, -316.349, 49.5451, 48.3969, -282.037, 55.6701, 2.12418, -284.718, 55.6701, 5.73883, -316.349, 52.6965, 48.3969, -291.129, 55.6701, -4.61763, -291.129, 43.4201, -4.61763, -277.739, 43.4201, -22.6759, -277.739, 55.6701, -22.6759, -263.518, 55.6701, -11.9635, -263.518, 51.4339, -11.9635, -255.522, 55.6701, -5.93925, -255.522, 43.4201, -5.93925, -269.236, 43.4201, 12.2621, -269.236, 55.6701, 12.2621, -277.01, 49.5451, 6.49809, -279.381, 52.6965, 9.69608, -277.01, 55.6701, 6.49809, -311.013, 49.5451, 52.3541, -311.013, 52.6965, 52.3541, -279.381, 55.6701, 9.69608, -163.193, 62.7187, -83.7038, -203.294, 43.4201, -75.94, -269.64, 55.6701, -16.6708, -217.356, 43.4201, -56.5944, -269.64, 52.4859, -16.6708, -251.146, 52.4859, -41.612, -231.709, 52.4859, -67.409, -316.349, 43.4201, 48.3969, -250.176, 63.6435, -259.181, -240.542, 43.4201, -227.645, -414.455, 43.4201, -115.746, 34.893, 68.9905, 335.979, -298.065, 68.9905, 88.3564, -312.253, 68.9905, 107.434, -312.253, 62.7187, 107.434, 20.705, 68.9905, 355.057, -305.159, 75.2624, 97.8952, 27.799, 75.2624, 345.518, -92.0043, 62.7187, 485.63, -92.0043, 69.3655, 485.63, -101.809, 76.0124, 498.8, -111.614, 69.3655, 511.969, 201.436, 74.6424, -64.1578, 209.703, 65.9208, -75.2701, 75.1514, 74.6424, -140.843, 83.4182, 74.6424, -151.955, 66.8846, 62.0549, -129.731, -163.787, 59.6049, -295.958, -131.697, 59.6049, -339.233, -64.173, 59.6049, -289.163, -163.787, 55.4112, -295.958, -301.3, 47.0326, -272.699, -190.758, 47.0326, -258.243, -352.631, 47.0326, -72.7045, -355.779, 47.0326, -72.2371, -453.012, 47.0326, -68.103, -416.538, 47.0326, -117.291, -399.022, 47.0326, -107.105, -398.555, 47.0326, -103.956, -374.771, 47.0326, -10.0858, -352.631, 43.4201, -72.7045, -398.555, 43.4201, -103.956, -453.012, 43.4201, -68.103, -377.217, 43.4201, -11.8995, -374.771, 43.4201, -10.0858, -411.479, 69.3655, 288.721, -391.87, 69.3655, 262.382, -391.87, 62.7187, 262.382, -401.675, 76.0124, 275.552, -415.538, 63.6435, -77.7561, -450.569, 43.4201, -66.2917, -416.538, 43.4201, -117.291, -183.51, 27.1737, -172.303, 244.723, 64.9987, -88.3403, 20.8501, 62.0549, -220.765, 110.556, 62.0549, -185.7, 237.205, 71.9862, -93.8575, 232.65, 71.9862, -71.8907, 35.0129, 65.7549, -192.811, 66.8846, 65.9208, -129.731, 91.685, 65.9208, -163.068, 193.169, 74.6424, -53.0455, -440.315, 62.7187, 82.0849, 34.893, 62.7187, 335.979, 20.705, 62.7187, 355.057, -229.846, 62.7187, 238.151, -142.996, 62.7187, 302.552, -5.39197, 62.7187, 404.588, -43.2795, 67.4505, -174.823, -15.3126, 67.4505, -294.941, -62.992, 79.5362, -189.44, 4.39984, 79.5362, -280.324, -176.134, 43.4562, -282.961, -132.511, 59.6049, -344.358, -62.0099, 59.6049, -292.08, -73.0522, 55.4112, -277.189, -73.0522, 63.555, -277.189, -88.8885, 63.555, -255.832, -88.8885, 62.0549, -255.832, -103.486, 63.555, -299.756, -119.322, 63.555, -278.399, -88.8885, 55.4112, -255.832, -94.5098, 62.0549, -248.251, 6.28358, 50.5961, -336.321, -17.0853, 24.0961, -304.806, -199.287, -6.10352E-5, 378.465, -50.1875, -6.10352E-5, 489.025, -471.103, 62.7187, 267.749, -439.056, 27.3573, 224.531, -471.103, 47.503, 267.749, -449.372, 18.4261, 238.443, -444.379, 27.3573, 196.725, -403.182, 62.7187, 221.881, -425.061, -6.10352E-5, 205.658, -403.182, -6.10352E-5, 221.881, -425.061, 62.7187, 205.658, -427.641, -6.10352E-5, 209.137, -405.762, 62.7187, 225.36, -444.379, -6.10352E-5, 196.725, -457.482, -6.10352E-5, 187.009, 90.337, 54.7187, -334.309, -175.333, -6.10352E-5, -376.111, 225.133, 64.9987, -77.408, 225.133, 71.9862, -77.408, 244.723, 71.9862, -88.3403, 326.948, 5.18365, -184.682, 108.603, 62.0549, -187.148, 4.85532, 62.0549, -232.626, 142.407, 62.0549, -131.225, -376.418, 63.6435, -48.7475, 209.703, 62.0549, -75.2701, -243.967, 43.4201, -102.061, 60.1461, 62.0549, -267.707, -132.511, 24.0961, -344.358, -13.5386, -6.10352E-5, 293.771, 241.034, -6.10352E-5, -175.445, 98.4537, -6.10352E-5, -232.831, 222.14, 5.18365, -149.557, 60.3855, 62.0549, -264.043, -187.609, 43.4201, -258.71, -182.215, 43.4201, -98.646, -224.175, 43.4201, -129.76, -222.683, 43.4201, -131.772, -295.721, 43.4201, -112.912, -260.785, 43.4201, -160.026, -221.056, 43.4201, -213.605, -256.359, 43.4201, -85.4959, -223.059, 43.4201, -214.682, -107.007, 24.0961, -367.694, -255.612, 43.4201, -91.7884, 232.015, 62.0549, -64.7789, 32.4271, 65.9924, -394.698, -20.9187, 65.9924, -294.511, -295.721, 50.0889, -112.912, -330.15, 50.0889, -66.4823, -149.838, 66.5014, -142.308, -224.175, 66.5014, -129.76, -249.165, 50.0889, -80.5352, -256.359, 50.0889, -85.4959, -191.799, 49.3514, -173.422, -287.997, 50.0889, -114.576, -298.065, 62.7187, 88.3564, -64.4625, 54.68, -288.773, -240.542, 47.0326, -227.645, -283.318, 47.0326, -259.364, 21.0038, 68.4987, -258.192, -243.967, 50.0889, -102.061, -260.785, 49.3514, -160.026, -182.953, 49.3514, -185.351, -223.059, 47.0326, -214.682, 24.1123, 67.4505, -265.707, 31.6089, 54.7187, -404.269, 119.797, 54.7187, -340.219, -67.2069, 62.0549, -224.957, -164.05, -6.10352E-5, -290.482, 237.375, 62.0549, -104.272, 252.808, 62.0549, -92.8198, -13.5386, 62.7187, 293.771, 101.748, 62.0549, -237.344, 231.855, 54.7187, -164.924, 112.485, 54.7187, -252.055, 260.08, 62.0549, -122.79, 260.08, 54.7187, -122.79, 241.034, 5.18365, -175.445, 101.748, 54.7187, -237.344, 259.107, 5.18365, -122.576, 259.107, -6.10352E-5, -122.576, 98.4537, 5.18365, -232.831, 256.95, 62.0549, 18.5343, 215.604, 62.0549, -15.248, 56.6144, 62.0549, -266.795, 14.4697, 62.0549, -372.931, 109.114, 62.0549, -338.728, 28.7236, 62.0549, -362.528, 22.8266, 62.0549, -256.861, 44.8898, 62.0549, -237.585, 42.4009, 62.0549, -239.401, -20.9187, 62.0549, -294.511, 31.6089, 62.0549, -404.269, 256.981, 30.5687, 18.5556, 272.62, -6.10352E-5, 29.5875, 44.7189, -6.10352E-5, 336.97, -395.645, 63.6435, -63.0047, -73.0704, 59.6049, -229.305, -190.758, 43.4201, -258.243, -268.999, 43.4201, -316.26, -355.779, 43.4201, -72.2371, -76.0784, 27.1737, -225.249, -24.3794, 62.0549, -193.2, 59.4465, 62.0549, -147.658, 59.4465, 65.7549, -147.658, 72.1163, 62.0549, -163.941, -15.3126, 62.0549, -294.941, 32.4271, 62.0549, -394.698, 6.28358, 34.6086, -336.321, -124.186, 24.0961, -448.217, -146.372, 34.6086, -395.225, -118.223, 34.6086, -375.538, -157.626, 34.6086, -379.133, -253.522, 62.7187, 115.819, -225.284, 71.4076, -250.088, 215.604, -6.10352E-5, -15.248, 119.797, 62.0549, -340.219, 28.0793, 62.7187, 324.631, 28.678, 68.6862, -184.67, -175.333, 24.0961, -376.111, 224.873, 5.18365, -170.175, 42.4009, 65.9924, -239.401, 57.4545, 62.0549, -308.134, -266.044, 71.4076, -280.312, -283.318, 43.4201, -259.364, -338.297, 43.4201, -59.2738, 22.3431, 62.0549, -176.529, 22.3431, 65.7549, -176.529, -82.7045, 67.4505, -204.058, -78.9891, 55.4112, -269.182, -94.5098, 55.4112, -248.251, 232.65, 64.9987, -71.8907, 28.0793, 30.5687, 324.631, 272.62, 30.5687, 29.5875, 44.7001, 30.5687, 336.956, 237.205, 64.9987, -93.8575, 31.6089, 5.18365, -404.269, 263.134, 54.7187, -97.2484, 120.278, -6.10352E-5, -263.579, 14.4697, 65.9924, -372.931, 12.8073, 65.9924, -340.72, -217.684, 55.6701, -56.8417, -338.297, 47.0326, -59.2738, 44.7378, 62.7187, 336.984, -82.6503, 62.0549, -264.245, 14.247, 65.9924, -339.669, 56.6144, 65.9924, -266.795, -268.999, 47.0326, -316.26, -115.294, -6.10352E-5, -460.754, 9.09247, -6.10352E-5, -372.525, 9.09247, 62.0549, -372.525, -123.895, 34.6086, -427.364, 112.071, 65.9924, -338.852, 35.0129, 62.0549, -192.811, 263.134, 5.18365, -97.2484, 231.855, 62.0549, -164.924, -240.074, 43.4201, -224.496, 160.9, 62.0549, -156.165, 36.7838, 54.7187, -260.934, 90.4029, 5.18365, -221.8, 98.4537, 54.7187, -232.831, 64.5359, 54.7187, -264.503, 64.0444, 5.18365, -267.593, 39.2999, 67.6436, -279.432, 39.2999, 62.0549, -279.432, -39.1121, 24.0961, -275.101, 14.247, 62.0549, -339.669, -73.0704, 55.4112, -229.305, -120.064, 27.1737, -257.865, -132.511, -6.10352E-5, -344.358, 350.632, 62.0549, -120.522, 24.8446, 54.7187, -361.352, -330.15, 43.4201, -66.4823, -41.5646, 48.6175, -271.794, -127.22, 24.0961, -340.435, -187.609, -6.10352E-5, -258.71, -225.351, 51.4339, -62.6186, -39.1121, 54.68, -275.101, -41.5646, 54.68, -271.794, 29.8593, 65.9924, -364.001, 16.9172, 62.0549, -373.447, 38.0612, 65.9924, -375.239, 59.2772, 67.6436, -306.804, -71.6119, 55.4112, -231.272, -59.7524, 55.4112, -247.266, -59.7524, 62.0549, -247.266, -82.6503, 55.4112, -264.245, -345.285, 47.0326, -46.0704, -139.524, 27.1737, -139.687, -316.865, 62.7187, 99.473, -225.351, 43.4201, -62.6186, 9.09247, 54.7187, -372.525, -164.05, 27.1737, -290.482, -56.0912, 55.4112, -252.203, 351.698, 65.6737, -121.982, -374.303, 47.0326, -6.93718, -222.592, 43.4201, -211.533, -335.148, 43.4201, -59.7411, -56.0912, 48.6175, -252.203, -71.6119, 62.0549, -231.272, 15.6872, 24.0961, -349.003, -129.477, 34.6086, -359.447, -64.4625, 48.6175, -288.773, -191.808, 43.4562, -261.823, -240.074, 47.0326, -224.496, -62.0099, 54.68, -292.08, -222.592, 47.0326, -211.533, -187.609, 47.0326, -258.71, 24.1123, 62.0549, -265.707, -335.148, 47.0326, -59.7411, -164.05, 43.4201, -290.482, -27.782, 62.7187, -195.723, -24.3794, 62.7187, -193.2, 184.902, 62.0549, -41.9333, 184.902, 65.9208, -41.9333, 232.015, 64.9987, -64.7789, -73.0704, 62.7187, -229.305, -67.2069, 62.7187, -224.957, -82.7045, 62.7187, -204.058, -43.2795, 62.7187, -174.823, 24.8446, 5.18365, -361.352, 103.048, 5.18365, -239.126, 24.8446, 54.7187, -361.352, 9.09247, 24.0961, -372.525, -217.684, 43.4201, -56.8417, -98.0713, 43.4201, -241.557, 24.8446, 54.7187, -361.352, -73.0704, 62.0549, -229.305, 24.8446, 24.0961, -361.352, 351.698, 62.0549, -121.982, 34.4528, 54.7187, -374.898, 103.048, 5.18365, -239.126, -98.0713, 43.4201, -241.557, 64.0444, -6.10352E-5, -267.593, -161.517, 43.4201, -155.995, -27.782, 62.0549, -195.723, 9.09247, 54.7187, -372.525, -139.524, 43.4201, -139.687, -199.501, 43.4201, -58.8032, -253.522, -6.48499E-5, 115.819, -24.3794, -6.48499E-5, -193.2]; + uvs = new [0.544854, 0.538483, 0.412121, 0.510028, 0.566971, 0.568328, 0.391829, 0.52612, 0.401975, 0.518074, 0.377912, 0.537158, 0.474306, 0.550859, 0.478311, 0.628384, 0.47696, 0.602227, 0.479614, 0.653595, 0.475608, 0.576071, 0.383345, 0.532849, 0.555912, 0.553405, 0.577221, 0.582159, 0.585914, 0.593889, 0.420605, 0.503299, 0.48082, 0.676951, 0.534603, 0.524652, 0.574659, 0.47113, 0.646034, 0.495322, 0.621953, 0.48716, 0.669246, 0.50319, 0.597871, 0.478998, 0.690749, 0.510478, 0.420047, 0.370159, 0.430321, 0.383972, 0.552923, 0.3985, 0.397879, 0.340355, 0.573214, 0.382407, 0.563069, 0.390454, 0.587132, 0.37137, 0.490441, 0.358185, 0.486303, 0.280668, 0.487699, 0.306822, 0.484958, 0.255459, 0.489095, 0.332976, 0.581698, 0.375679, 0.408963, 0.355257, 0.387605, 0.326542, 0.378893, 0.314828, 0.544439, 0.405229, 0.483711, 0.232105, 0.390489, 0.437035, 0.319072, 0.412972, 0.343168, 0.421091, 0.295847, 0.405146, 0.367264, 0.42921, 0.274332, 0.397897, 0.416143, 0.44505, 0.425844, 0.499076, 0.429304, 0.496323, 0.473099, 0.527503, 0.473689, 0.522961, 0.523299, 0.509359, 0.52597, 0.512982, 0.549072, 0.463485, 0.441916, 0.399176, 0.491526, 0.385573, 0.535911, 0.412211, 0.501642, 0.444543, 0.483977, 0.432368, 0.464942, 0.442092, 0.464942, 0.442092, 0.463573, 0.463991, 0.481238, 0.476166, 0.500273, 0.466442, 0.539328, 0.409457, 0.553389, 0.464031, 0.411812, 0.444401, 0.439178, 0.395571, 0.492009, 0.381158, 0.491649, 0.466509, 0.500424, 0.478389, 0.508742, 0.48965, 0.497376, 0.456315, 0.511709, 0.458303, 0.525295, 0.460187, 0.494452, 0.444922, 0.505946, 0.435853, 0.516842, 0.427256, 0.484589, 0.439003, 0.486512, 0.42419, 0.488335, 0.410148, 0.473566, 0.442026, 0.464791, 0.430146, 0.456473, 0.418884, 0.467839, 0.452219, 0.453506, 0.450231, 0.43992, 0.448347, 0.470763, 0.463612, 0.459269, 0.472681, 0.448373, 0.481278, 0.480626, 0.469531, 0.478703, 0.484344, 0.47688, 0.498386, 0.463573, 0.463991, 0.481238, 0.476166, 0.483977, 0.432368, 0.500273, 0.466442, 0.501642, 0.444543, 0.950579, 0.655759, 0.975039, 0.63729, 0.9995, 0.618822, 0.881441, 0.557942, 0.884344, 0.558409, 0.948966, 0.649837, 0.884344, 0.558409, 0.971749, 0.632635, 0.979472, 0.633944, 0.881441, 0.557942, 0.971905, 0.632856, 0.950579, 0.655759, 0.994533, 0.615433, 0.994533, 0.615433, 0.948966, 0.649837, 0.976337, 0.629509, 0.929911, 0.524005, 0.947444, 0.651324, 0.930363, 0.521005, 0.9995, 0.618822, 0.930363, 0.521005, 0.929911, 0.524005, 0.907127, 0.541207, 0.996366, 0.614387, 0.654358, 0.688826, 0.701559, 0.642397, 0.598078, 0.722768, 0.649818, 0.682583, 0.706096, 0.648638, 0.602619, 0.729014, 0.500717, 0.9995, 0.525178, 0.981032, 0.549639, 0.962564, 0.431579, 0.901683, 0.434482, 0.902151, 0.499104, 0.993579, 0.434482, 0.902151, 0.521888, 0.976377, 0.529611, 0.977685, 0.431579, 0.901683, 0.522043, 0.976597, 0.500717, 0.9995, 0.544671, 0.959175, 0.544671, 0.959175, 0.499104, 0.993579, 0.526476, 0.973251, 0.480049, 0.867747, 0.497583, 0.995066, 0.480501, 0.864747, 0.549639, 0.962564, 0.480501, 0.864747, 0.480049, 0.867747, 0.457266, 0.884949, 0.546504, 0.958129, 0.454943, 0.0600367, 0.45455, 0.0487372, 0.443618, 0.0491425, 0.45455, 0.0487372, 0.44401, 0.0604419, 0.443618, 0.0491425, 0.44401, 0.0604419, 0.454943, 0.0600367, 0.125244, 0.320938, 0.124852, 0.309638, 0.113919, 0.310043, 0.124852, 0.309638, 0.114312, 0.321343, 0.113919, 0.310043, 0.114312, 0.321343, 0.125244, 0.320938, 0.835798, 0.606183, 0.835798, 0.605777, 0.833363, 0.608012, 0.834868, 0.603225, 0.834868, 0.603225, 0.830928, 0.606183, 0.830928, 0.606183, 0.831858, 0.603225, 0.829383, 0.606556, 0.835401, 0.602086, 0.837768, 0.605491, 0.831858, 0.603225, 0.833363, 0.608012, 0.83175, 0.60996, 0.837768, 0.605491, 0.83175, 0.60996, 0.829383, 0.606556, 0.835401, 0.602086, 0.836764, 0.606508, 0.833363, 0.609061, 0.835465, 0.602376, 0.829963, 0.606508, 0.831262, 0.602376, 0.84648, 0.61951, 0.84648, 0.619103, 0.844046, 0.621338, 0.845551, 0.616552, 0.845551, 0.616552, 0.841611, 0.61951, 0.841611, 0.61951, 0.842541, 0.616552, 0.840065, 0.619882, 0.846083, 0.615413, 0.84845, 0.618817, 0.842541, 0.616552, 0.844046, 0.621338, 0.842432, 0.623287, 0.84845, 0.618817, 0.842432, 0.623287, 0.840065, 0.619882, 0.846083, 0.615413, 0.847446, 0.619834, 0.844046, 0.622388, 0.846147, 0.615702, 0.840645, 0.619834, 0.841944, 0.615702, 0.523555, 0.84306, 0.523555, 0.842654, 0.52112, 0.844888, 0.522625, 0.840102, 0.522625, 0.840102, 0.518685, 0.84306, 0.518685, 0.84306, 0.519615, 0.840102, 0.51714, 0.843433, 0.523158, 0.838963, 0.525525, 0.842368, 0.519615, 0.840102, 0.52112, 0.844888, 0.519507, 0.846837, 0.525525, 0.842368, 0.519507, 0.846837, 0.51714, 0.843433, 0.523158, 0.838963, 0.524521, 0.843385, 0.52112, 0.845938, 0.523222, 0.839253, 0.51772, 0.843385, 0.519019, 0.839253, 0.563423, 0.840298, 0.563423, 0.839891, 0.560988, 0.842126, 0.562493, 0.83734, 0.562493, 0.83734, 0.558553, 0.840298, 0.558553, 0.840298, 0.559483, 0.83734, 0.557008, 0.84067, 0.563026, 0.836201, 0.565393, 0.839605, 0.559483, 0.83734, 0.560988, 0.842126, 0.559375, 0.844075, 0.565393, 0.839605, 0.559375, 0.844075, 0.557008, 0.84067, 0.563026, 0.836201, 0.564389, 0.840622, 0.560988, 0.843176, 0.56309, 0.83649, 0.557588, 0.840622, 0.558887, 0.83649, 0.57542, 0.830914, 0.57542, 0.830508, 0.572986, 0.832742, 0.57449, 0.827956, 0.57449, 0.827956, 0.570551, 0.830914, 0.570551, 0.830914, 0.571481, 0.827956, 0.569005, 0.831286, 0.575023, 0.826817, 0.57739, 0.830222, 0.571481, 0.827956, 0.572986, 0.832742, 0.571372, 0.834691, 0.57739, 0.830222, 0.571372, 0.834691, 0.569005, 0.831286, 0.575023, 0.826817, 0.576386, 0.831238, 0.572986, 0.833792, 0.575087, 0.827107, 0.569585, 0.831238, 0.570884, 0.827107, 0.588487, 0.820213, 0.588487, 0.819807, 0.586053, 0.822041, 0.587557, 0.817255, 0.587557, 0.817255, 0.583618, 0.820213, 0.583618, 0.820213, 0.584548, 0.817255, 0.582072, 0.820586, 0.58809, 0.816116, 0.590457, 0.819521, 0.584548, 0.817255, 0.586053, 0.822041, 0.584439, 0.82399, 0.590457, 0.819521, 0.584439, 0.82399, 0.582072, 0.820586, 0.58809, 0.816116, 0.589453, 0.820537, 0.586053, 0.823091, 0.588154, 0.816406, 0.582652, 0.820537, 0.583951, 0.816406, 0.551088, 0.849998, 0.551088, 0.849591, 0.548653, 0.851826, 0.550158, 0.847039, 0.550158, 0.847039, 0.546219, 0.849998, 0.546219, 0.849998, 0.547149, 0.847039, 0.544673, 0.85037, 0.550691, 0.845901, 0.553058, 0.849305, 0.547149, 0.847039, 0.548653, 0.851826, 0.54704, 0.853775, 0.553058, 0.849305, 0.54704, 0.853775, 0.544673, 0.85037, 0.550691, 0.845901, 0.552054, 0.850322, 0.548653, 0.852876, 0.550755, 0.84619, 0.545253, 0.850322, 0.546552, 0.84619, 0.536926, 0.861978, 0.536926, 0.861571, 0.534491, 0.863806, 0.535996, 0.85902, 0.535996, 0.85902, 0.532057, 0.861978, 0.532057, 0.861978, 0.532987, 0.85902, 0.530511, 0.86235, 0.536529, 0.857881, 0.538896, 0.861285, 0.532987, 0.85902, 0.534491, 0.863806, 0.532878, 0.865755, 0.538896, 0.861285, 0.532878, 0.865755, 0.530511, 0.86235, 0.536529, 0.857881, 0.537892, 0.862302, 0.534491, 0.864856, 0.536593, 0.85817, 0.531091, 0.862302, 0.53239, 0.85817, 0.579425, 0.777775, 0.579425, 0.777369, 0.57699, 0.779603, 0.578494, 0.774817, 0.578494, 0.774817, 0.574555, 0.777775, 0.574555, 0.777775, 0.575485, 0.774817, 0.573009, 0.778148, 0.579027, 0.773678, 0.581394, 0.777083, 0.575485, 0.774817, 0.57699, 0.779603, 0.575376, 0.781552, 0.581394, 0.777083, 0.575376, 0.781552, 0.573009, 0.778148, 0.579027, 0.773678, 0.58039, 0.778099, 0.57699, 0.780653, 0.579091, 0.773968, 0.573589, 0.778099, 0.574888, 0.773968, 0.567363, 0.761103, 0.567363, 0.760697, 0.564928, 0.762932, 0.566433, 0.758145, 0.566433, 0.758145, 0.562494, 0.761103, 0.562494, 0.761103, 0.563424, 0.758145, 0.560948, 0.761476, 0.566966, 0.757006, 0.569333, 0.760411, 0.563424, 0.758145, 0.564928, 0.762932, 0.563315, 0.76488, 0.569333, 0.760411, 0.563315, 0.76488, 0.560948, 0.761476, 0.566966, 0.757006, 0.568329, 0.761428, 0.564928, 0.763981, 0.56703, 0.757296, 0.561528, 0.761428, 0.562827, 0.757296, 0.59208, 0.795314, 0.59208, 0.794908, 0.589646, 0.797143, 0.59115, 0.792356, 0.59115, 0.792356, 0.587211, 0.795314, 0.587211, 0.795314, 0.588141, 0.792356, 0.585665, 0.795687, 0.591683, 0.791218, 0.59405, 0.794622, 0.588141, 0.792356, 0.589646, 0.797143, 0.588032, 0.799091, 0.59405, 0.794622, 0.588032, 0.799091, 0.585665, 0.795687, 0.591683, 0.791218, 0.593046, 0.795639, 0.589646, 0.798192, 0.591747, 0.791507, 0.586245, 0.795639, 0.587544, 0.791507, 0.602311, 0.809885, 0.602311, 0.809479, 0.599876, 0.811714, 0.601381, 0.806927, 0.601381, 0.806927, 0.597441, 0.809885, 0.597441, 0.809885, 0.598371, 0.806927, 0.595896, 0.810258, 0.601914, 0.805788, 0.604281, 0.809193, 0.598371, 0.806927, 0.599876, 0.811714, 0.598263, 0.813662, 0.604281, 0.809193, 0.598263, 0.813662, 0.595896, 0.810258, 0.601914, 0.805788, 0.603277, 0.81021, 0.599876, 0.812763, 0.601978, 0.806078, 0.596475, 0.81021, 0.597774, 0.806078, 0.582319, 0.722666, 0.582319, 0.72226, 0.579885, 0.724494, 0.581389, 0.719708, 0.581389, 0.719708, 0.57745, 0.722666, 0.57745, 0.722666, 0.57838, 0.719708, 0.575904, 0.723039, 0.581922, 0.718569, 0.584289, 0.721974, 0.57838, 0.719708, 0.579885, 0.724494, 0.578271, 0.726443, 0.584289, 0.721974, 0.578271, 0.726443, 0.575904, 0.723039, 0.581922, 0.718569, 0.583285, 0.72299, 0.579885, 0.725544, 0.581986, 0.718859, 0.576484, 0.72299, 0.577783, 0.718859, 0.568103, 0.733708, 0.568103, 0.733301, 0.565668, 0.735536, 0.567173, 0.730749, 0.567173, 0.730749, 0.563234, 0.733708, 0.563234, 0.733708, 0.564164, 0.730749, 0.561688, 0.73408, 0.567706, 0.729611, 0.570073, 0.733015, 0.564164, 0.730749, 0.565668, 0.735536, 0.564055, 0.737485, 0.570073, 0.733015, 0.564055, 0.737485, 0.561688, 0.73408, 0.567706, 0.729611, 0.569069, 0.734032, 0.565668, 0.736585, 0.56777, 0.7299, 0.562268, 0.734032, 0.563567, 0.7299, 0.55433, 0.744405, 0.55433, 0.743999, 0.551895, 0.746233, 0.5534, 0.741447, 0.5534, 0.741447, 0.54946, 0.744405, 0.54946, 0.744405, 0.55039, 0.741447, 0.547915, 0.744778, 0.553933, 0.740308, 0.5563, 0.743713, 0.55039, 0.741447, 0.551895, 0.746233, 0.550282, 0.748182, 0.5563, 0.743713, 0.550282, 0.748182, 0.547915, 0.744778, 0.553933, 0.740308, 0.555296, 0.744729, 0.551895, 0.747283, 0.553997, 0.740598, 0.548494, 0.744729, 0.549793, 0.740598, 0.83067, 0.653383, 0.83067, 0.652977, 0.828235, 0.655211, 0.82974, 0.650425, 0.82974, 0.650425, 0.825801, 0.653383, 0.825801, 0.653383, 0.82673, 0.650425, 0.824255, 0.653756, 0.830273, 0.649286, 0.83264, 0.652691, 0.82673, 0.650425, 0.828235, 0.655211, 0.826622, 0.65716, 0.83264, 0.652691, 0.826622, 0.65716, 0.824255, 0.653756, 0.830273, 0.649286, 0.831636, 0.653707, 0.828235, 0.656261, 0.830337, 0.649576, 0.824835, 0.653707, 0.826134, 0.649576, 0.81808, 0.66333, 0.81808, 0.662924, 0.815645, 0.665159, 0.81715, 0.660372, 0.81715, 0.660372, 0.81321, 0.66333, 0.81321, 0.66333, 0.81414, 0.660372, 0.811665, 0.663703, 0.817683, 0.659233, 0.82005, 0.662638, 0.81414, 0.660372, 0.815645, 0.665159, 0.814032, 0.667107, 0.82005, 0.662638, 0.814032, 0.667107, 0.811665, 0.663703, 0.817683, 0.659233, 0.819046, 0.663655, 0.815645, 0.666208, 0.817747, 0.659523, 0.812244, 0.663655, 0.813543, 0.659523, 0.805535, 0.674121, 0.805535, 0.673715, 0.803101, 0.67595, 0.804605, 0.671163, 0.804605, 0.671163, 0.800666, 0.674121, 0.800666, 0.674121, 0.801596, 0.671163, 0.79912, 0.674494, 0.805138, 0.670024, 0.807505, 0.673429, 0.801596, 0.671163, 0.803101, 0.67595, 0.801487, 0.677898, 0.807505, 0.673429, 0.801487, 0.677898, 0.79912, 0.674494, 0.805138, 0.670024, 0.806501, 0.674446, 0.803101, 0.676999, 0.805202, 0.670314, 0.7997, 0.674446, 0.800999, 0.670314, 0.845146, 0.642664, 0.845146, 0.642257, 0.842711, 0.644492, 0.844216, 0.639705, 0.844216, 0.639705, 0.840276, 0.642664, 0.840276, 0.642664, 0.841206, 0.639705, 0.838731, 0.643036, 0.844749, 0.638567, 0.847116, 0.641971, 0.841206, 0.639705, 0.842711, 0.644492, 0.841098, 0.646441, 0.847116, 0.641971, 0.841098, 0.646441, 0.838731, 0.643036, 0.844749, 0.638567, 0.846112, 0.642988, 0.842711, 0.645542, 0.844813, 0.638856, 0.83931, 0.642988, 0.840609, 0.638856, 0.858074, 0.633479, 0.858074, 0.633073, 0.855639, 0.635308, 0.857144, 0.630521, 0.857144, 0.630521, 0.853204, 0.633479, 0.853204, 0.633479, 0.854134, 0.630521, 0.851659, 0.633852, 0.857677, 0.629382, 0.860044, 0.632787, 0.854134, 0.630521, 0.855639, 0.635308, 0.854026, 0.637256, 0.860044, 0.632787, 0.854026, 0.637256, 0.851659, 0.633852, 0.857677, 0.629382, 0.85904, 0.633804, 0.855639, 0.636357, 0.857741, 0.629672, 0.852238, 0.633804, 0.853537, 0.629672, 0.793746, 0.68284, 0.793746, 0.682433, 0.791311, 0.684668, 0.792816, 0.679881, 0.792816, 0.679881, 0.788876, 0.682839, 0.788876, 0.682839, 0.789806, 0.679881, 0.787331, 0.683212, 0.793349, 0.678743, 0.795716, 0.682147, 0.789806, 0.679881, 0.791311, 0.684668, 0.789698, 0.686617, 0.795716, 0.682147, 0.789698, 0.686617, 0.787331, 0.683212, 0.793349, 0.678743, 0.794712, 0.683164, 0.791311, 0.685717, 0.793413, 0.679032, 0.78791, 0.683164, 0.789209, 0.679032, 0.783678, 0.668096, 0.783678, 0.66769, 0.781244, 0.669924, 0.782748, 0.665138, 0.782748, 0.665138, 0.778809, 0.668096, 0.778809, 0.668096, 0.779739, 0.665138, 0.777263, 0.668469, 0.783281, 0.663999, 0.785648, 0.667404, 0.779739, 0.665138, 0.781244, 0.669924, 0.77963, 0.671873, 0.785648, 0.667404, 0.77963, 0.671873, 0.777263, 0.668469, 0.783281, 0.663999, 0.784644, 0.668421, 0.781244, 0.670974, 0.783345, 0.664289, 0.777843, 0.668421, 0.779142, 0.664289, 0.771263, 0.651917, 0.771263, 0.651511, 0.768828, 0.653746, 0.770333, 0.648959, 0.770333, 0.648959, 0.766393, 0.651917, 0.766393, 0.651917, 0.767323, 0.648959, 0.764847, 0.65229, 0.770865, 0.64782, 0.773232, 0.651225, 0.767323, 0.648959, 0.768828, 0.653746, 0.767214, 0.655694, 0.773232, 0.651225, 0.767214, 0.655694, 0.764847, 0.65229, 0.770865, 0.64782, 0.772228, 0.652242, 0.768828, 0.654795, 0.770929, 0.64811, 0.765427, 0.652242, 0.766726, 0.64811, 0.759181, 0.6353, 0.759181, 0.634894, 0.756746, 0.637128, 0.758251, 0.632342, 0.758251, 0.632342, 0.754311, 0.6353, 0.754311, 0.6353, 0.755241, 0.632342, 0.752765, 0.635673, 0.758783, 0.631203, 0.76115, 0.634608, 0.755241, 0.632342, 0.756746, 0.637128, 0.755132, 0.639077, 0.76115, 0.634608, 0.755132, 0.639077, 0.752765, 0.635673, 0.758783, 0.631203, 0.760146, 0.635624, 0.756746, 0.638178, 0.758847, 0.631493, 0.753345, 0.635624, 0.754644, 0.631493, 0.74733, 0.619001, 0.74733, 0.618594, 0.744895, 0.620829, 0.7464, 0.616043, 0.7464, 0.616043, 0.74246, 0.619001, 0.74246, 0.619001, 0.74339, 0.616043, 0.740914, 0.619373, 0.746932, 0.614904, 0.749299, 0.618308, 0.74339, 0.616043, 0.744895, 0.620829, 0.743281, 0.622778, 0.749299, 0.618308, 0.743281, 0.622778, 0.740914, 0.619373, 0.746932, 0.614904, 0.748295, 0.619325, 0.744895, 0.621879, 0.746997, 0.615193, 0.741494, 0.619325, 0.742793, 0.615193, 0.720138, 0.61404, 0.720138, 0.613633, 0.717704, 0.615868, 0.719208, 0.611081, 0.719208, 0.611081, 0.715269, 0.61404, 0.715269, 0.61404, 0.716199, 0.611081, 0.713723, 0.614412, 0.719741, 0.609943, 0.722108, 0.613347, 0.716199, 0.611081, 0.717704, 0.615868, 0.71609, 0.617817, 0.722108, 0.613347, 0.71609, 0.617817, 0.713723, 0.614412, 0.719741, 0.609943, 0.721104, 0.614364, 0.717704, 0.616918, 0.719805, 0.610232, 0.714303, 0.614364, 0.715602, 0.610232, 0.734891, 0.602582, 0.734891, 0.602175, 0.732456, 0.60441, 0.733961, 0.599624, 0.733961, 0.599624, 0.730021, 0.602582, 0.730021, 0.602582, 0.730951, 0.599624, 0.728476, 0.602954, 0.734494, 0.598485, 0.736861, 0.601889, 0.730951, 0.599624, 0.732456, 0.60441, 0.730843, 0.606359, 0.736861, 0.601889, 0.730843, 0.606359, 0.728476, 0.602954, 0.734494, 0.598485, 0.735857, 0.602906, 0.732456, 0.60546, 0.734558, 0.598774, 0.729055, 0.602906, 0.730354, 0.598774, 0.7067, 0.624477, 0.7067, 0.624071, 0.704265, 0.626305, 0.70577, 0.621519, 0.70577, 0.621519, 0.70183, 0.624477, 0.70183, 0.624477, 0.70276, 0.621519, 0.700285, 0.62485, 0.706303, 0.62038, 0.70867, 0.623785, 0.70276, 0.621519, 0.704265, 0.626305, 0.702652, 0.628254, 0.70867, 0.623785, 0.702652, 0.628254, 0.700285, 0.62485, 0.706303, 0.62038, 0.707666, 0.624801, 0.704265, 0.627355, 0.706367, 0.62067, 0.700864, 0.624801, 0.702163, 0.62067, 0.610219, 0.699996, 0.610219, 0.699589, 0.607785, 0.701824, 0.609289, 0.697038, 0.609289, 0.697038, 0.60535, 0.699996, 0.60535, 0.699996, 0.60628, 0.697038, 0.603804, 0.700368, 0.609822, 0.695899, 0.612189, 0.699303, 0.60628, 0.697038, 0.607785, 0.701824, 0.606171, 0.703773, 0.612189, 0.699303, 0.606171, 0.703773, 0.603804, 0.700368, 0.609822, 0.695899, 0.611185, 0.70032, 0.607785, 0.702874, 0.609886, 0.696188, 0.604384, 0.70032, 0.605683, 0.696188, 0.666598, 0.656208, 0.666598, 0.655802, 0.664163, 0.658037, 0.665668, 0.65325, 0.665668, 0.65325, 0.661728, 0.656208, 0.661728, 0.656208, 0.662658, 0.65325, 0.660182, 0.656581, 0.6662, 0.652111, 0.668567, 0.655516, 0.662658, 0.65325, 0.664163, 0.658037, 0.662549, 0.659985, 0.668567, 0.655516, 0.662549, 0.659985, 0.660182, 0.656581, 0.6662, 0.652111, 0.667563, 0.656533, 0.664163, 0.659086, 0.666264, 0.652401, 0.660762, 0.656533, 0.662061, 0.652401, 0.652642, 0.667048, 0.652642, 0.666641, 0.650207, 0.668876, 0.651712, 0.664089, 0.651712, 0.664089, 0.647772, 0.667048, 0.647772, 0.667048, 0.648702, 0.664089, 0.646226, 0.66742, 0.652244, 0.662951, 0.654611, 0.666355, 0.648702, 0.664089, 0.650207, 0.668876, 0.648593, 0.670825, 0.654611, 0.666355, 0.648593, 0.670825, 0.646226, 0.66742, 0.652244, 0.662951, 0.653607, 0.667372, 0.650207, 0.669925, 0.652308, 0.66324, 0.646806, 0.667372, 0.648105, 0.66324, 0.680036, 0.645771, 0.680036, 0.645364, 0.677601, 0.647599, 0.679106, 0.642813, 0.679106, 0.642813, 0.675166, 0.645771, 0.675166, 0.645771, 0.676097, 0.642813, 0.673621, 0.646143, 0.679639, 0.641674, 0.682006, 0.645078, 0.676097, 0.642813, 0.677601, 0.647599, 0.675988, 0.649548, 0.682006, 0.645078, 0.675988, 0.649548, 0.673621, 0.646143, 0.679639, 0.641674, 0.681002, 0.646095, 0.677601, 0.648649, 0.679703, 0.641963, 0.674201, 0.646095, 0.6755, 0.641963, 0.596104, 0.710644, 0.596104, 0.710238, 0.59367, 0.712473, 0.595174, 0.707686, 0.595174, 0.707686, 0.591235, 0.710644, 0.591235, 0.710644, 0.592165, 0.707686, 0.589689, 0.711017, 0.595707, 0.706548, 0.598074, 0.709952, 0.592165, 0.707686, 0.59367, 0.712473, 0.592056, 0.714422, 0.598074, 0.709952, 0.592056, 0.714422, 0.589689, 0.711017, 0.595707, 0.706548, 0.59707, 0.710969, 0.59367, 0.713522, 0.595771, 0.706837, 0.590269, 0.710969, 0.591568, 0.706837, 0.638209, 0.678257, 0.638209, 0.67785, 0.635774, 0.680085, 0.637279, 0.675299, 0.637279, 0.675299, 0.63334, 0.678257, 0.63334, 0.678257, 0.63427, 0.675299, 0.631794, 0.678629, 0.637812, 0.67416, 0.640179, 0.677564, 0.63427, 0.675299, 0.635774, 0.680085, 0.634161, 0.682034, 0.640179, 0.677564, 0.634161, 0.682034, 0.631794, 0.678629, 0.637812, 0.67416, 0.639175, 0.678581, 0.635774, 0.681135, 0.637876, 0.674449, 0.632374, 0.678581, 0.633673, 0.674449, 0.694789, 0.634313, 0.694789, 0.633906, 0.692354, 0.636141, 0.693859, 0.631355, 0.693859, 0.631355, 0.689919, 0.634313, 0.689919, 0.634313, 0.690849, 0.631355, 0.688373, 0.634685, 0.694391, 0.630216, 0.696758, 0.633621, 0.690849, 0.631355, 0.692354, 0.636141, 0.69074, 0.63809, 0.696758, 0.633621, 0.69074, 0.63809, 0.688373, 0.634685, 0.694391, 0.630216, 0.695754, 0.634637, 0.692354, 0.637191, 0.694455, 0.630506, 0.688953, 0.634637, 0.690252, 0.630506, 0.623993, 0.689298, 0.623993, 0.688892, 0.621558, 0.691127, 0.623063, 0.68634, 0.623063, 0.68634, 0.619123, 0.689298, 0.619123, 0.689298, 0.620053, 0.68634, 0.617578, 0.689671, 0.623596, 0.685201, 0.625963, 0.688606, 0.620053, 0.68634, 0.621558, 0.691127, 0.619945, 0.693075, 0.625963, 0.688606, 0.619945, 0.693075, 0.617578, 0.689671, 0.623596, 0.685201, 0.624959, 0.689623, 0.621558, 0.692176, 0.62366, 0.685491, 0.618158, 0.689623, 0.619456, 0.685491, 0.605219, 0.724018, 0.605219, 0.723612, 0.602784, 0.725847, 0.604289, 0.72106, 0.604289, 0.72106, 0.600349, 0.724018, 0.600349, 0.724018, 0.601279, 0.72106, 0.598803, 0.724391, 0.604821, 0.719921, 0.607188, 0.723326, 0.601279, 0.72106, 0.602784, 0.725847, 0.60117, 0.727795, 0.607188, 0.723326, 0.60117, 0.727795, 0.598803, 0.724391, 0.604821, 0.719921, 0.606184, 0.724343, 0.602784, 0.726896, 0.604886, 0.720211, 0.599383, 0.724343, 0.600682, 0.720211, 0.647323, 0.691631, 0.647323, 0.691224, 0.644889, 0.693459, 0.646393, 0.688672, 0.646393, 0.688672, 0.642454, 0.691631, 0.642454, 0.691631, 0.643384, 0.688672, 0.640908, 0.692003, 0.646926, 0.687534, 0.649293, 0.690938, 0.643384, 0.688672, 0.644889, 0.693459, 0.643275, 0.695408, 0.649293, 0.690938, 0.643275, 0.695408, 0.640908, 0.692003, 0.646926, 0.687534, 0.648289, 0.691955, 0.644889, 0.694509, 0.64699, 0.687823, 0.641488, 0.691955, 0.642787, 0.687823, 0.703903, 0.647687, 0.703903, 0.64728, 0.701468, 0.649515, 0.702973, 0.644729, 0.702973, 0.644729, 0.699033, 0.647687, 0.699033, 0.647687, 0.699963, 0.644729, 0.697488, 0.648059, 0.703506, 0.64359, 0.705873, 0.646994, 0.699963, 0.644729, 0.701468, 0.649515, 0.699855, 0.651464, 0.705873, 0.646994, 0.699855, 0.651464, 0.697488, 0.648059, 0.703506, 0.64359, 0.704869, 0.648011, 0.701468, 0.650565, 0.70357, 0.643879, 0.698067, 0.648011, 0.699366, 0.643879, 0.68915, 0.659145, 0.68915, 0.658738, 0.686715, 0.660973, 0.68822, 0.656186, 0.68822, 0.656186, 0.684281, 0.659145, 0.684281, 0.659145, 0.685211, 0.656186, 0.682735, 0.659517, 0.688753, 0.655048, 0.69112, 0.658452, 0.685211, 0.656186, 0.686715, 0.660973, 0.685102, 0.662922, 0.69112, 0.658452, 0.685102, 0.662922, 0.682735, 0.659517, 0.688753, 0.655048, 0.690116, 0.659469, 0.686715, 0.662023, 0.688817, 0.655337, 0.683315, 0.659469, 0.684614, 0.655337, 0.675712, 0.669582, 0.675712, 0.669176, 0.673277, 0.67141, 0.674782, 0.666624, 0.674782, 0.666624, 0.670842, 0.669582, 0.670842, 0.669582, 0.671772, 0.666624, 0.669297, 0.669955, 0.675315, 0.665485, 0.677682, 0.66889, 0.671772, 0.666624, 0.673277, 0.67141, 0.671664, 0.673359, 0.677682, 0.66889, 0.671664, 0.673359, 0.669297, 0.669955, 0.675315, 0.665485, 0.676678, 0.669906, 0.673277, 0.67246, 0.675379, 0.665775, 0.669876, 0.669906, 0.671175, 0.665775, 0.661756, 0.680421, 0.661756, 0.680015, 0.659321, 0.68225, 0.660826, 0.677463, 0.660826, 0.677463, 0.656886, 0.680421, 0.656886, 0.680421, 0.657816, 0.677463, 0.655341, 0.680794, 0.661359, 0.676324, 0.663725, 0.679729, 0.657816, 0.677463, 0.659321, 0.68225, 0.657707, 0.684198, 0.663725, 0.679729, 0.657707, 0.684198, 0.655341, 0.680794, 0.661359, 0.676324, 0.662722, 0.680746, 0.659321, 0.683299, 0.661423, 0.676614, 0.65592, 0.680746, 0.657219, 0.676614, 0.619334, 0.71337, 0.619334, 0.712963, 0.616899, 0.715198, 0.618404, 0.710411, 0.618404, 0.710411, 0.614464, 0.71337, 0.614464, 0.71337, 0.615394, 0.710411, 0.612918, 0.713742, 0.618936, 0.709273, 0.621303, 0.712677, 0.615394, 0.710411, 0.616899, 0.715198, 0.615285, 0.717147, 0.621303, 0.712677, 0.615285, 0.717147, 0.612918, 0.713742, 0.618936, 0.709273, 0.620299, 0.713694, 0.616899, 0.716248, 0.619, 0.709562, 0.613498, 0.713694, 0.614797, 0.709562, 0.633107, 0.702672, 0.633107, 0.702266, 0.630672, 0.7045, 0.632177, 0.699714, 0.632177, 0.699714, 0.628237, 0.702672, 0.628237, 0.702672, 0.629167, 0.699714, 0.626692, 0.703045, 0.63271, 0.698575, 0.635077, 0.70198, 0.629167, 0.699714, 0.630672, 0.7045, 0.629059, 0.706449, 0.635077, 0.70198, 0.629059, 0.706449, 0.626692, 0.703045, 0.63271, 0.698575, 0.634073, 0.702996, 0.630672, 0.70555, 0.632774, 0.698865, 0.627272, 0.702996, 0.628571, 0.698865, 0.751597, 0.51927, 0.751597, 0.51927, 0.308379, 0.534828, 0.308379, 0.534828, 0.526441, 0.830061, 0.839566, 0.627348, 0.839566, 0.627348, 0.826755, 0.609729, 0.819326, 0.599512, 0.887029, 0.562915, 0.887029, 0.562915, 0.512645, 0.840478, 0.69345, 0.631245, 0.698355, 0.633901, 0.686843, 0.622158, 0.686843, 0.622158, 0.697895, 0.635113, 0.535763, 0.738098, 0.584043, 0.8045, 0.608607, 0.810746, 0.535108, 0.842323, 0.594112, 0.717313, 0.582711, 0.701634, 0.608607, 0.810746, 0.532955, 0.869213, 0.239139, 0.312739, 0.216493, 0.280976, 0.0637486, 0.359587, 0.0788592, 0.348079, 0.0637486, 0.359587, 0.0788592, 0.348079, 0.0962861, 0.372522, 0.0302624, 0.312618, 0.235158, 0.754293, 0.250901, 0.741871, 0.199241, 0.444158, 0.199241, 0.444158, 0.191826, 0.434119, 0.187731, 0.515524, 0.189643, 0.518113, 0.186299, 0.520752, 0.274888, 0.646789, 0.332475, 0.661006, 0.369209, 0.632023, 0.246649, 0.608431, 0.283241, 0.598187, 0.236834, 0.75317, 0.431534, 0.680931, 0.424377, 0.686091, 0.349266, 0.5844, 0.560116, 0.641605, 0.56582, 0.648968, 0.58312, 0.647919, 0.603325, 0.808376, 0.486393, 0.768554, 0.300611, 0.798097, 0.286484, 0.778971, 0.333558, 0.74183, 0.347685, 0.760956, 0.435482, 0.706913, 0.831785, 0.633391, 0.831785, 0.633391, 0.300611, 0.798097, 0.791503, 0.664678, 0.602619, 0.729014, 0.791821, 0.691903, 0.864156, 0.635722, 0.791809, 0.691887, 0.831151, 0.590328, 0.831151, 0.590328, 0.708354, 0.662793, 0.708354, 0.662793, 0.615753, 0.734715, 0.609655, 0.739451, 0.69345, 0.631245, 0.697895, 0.635113, 0.78959, 0.689725, 0.78959, 0.689725, 0.789544, 0.689661, 0.608427, 0.724639, 0.862339, 0.633223, 0.83858, 0.600545, 0.826755, 0.609729, 0.813327, 0.604171, 0.878692, 0.551448, 0.812418, 0.602921, 0.819326, 0.599512, 0.83858, 0.600545, 0.862339, 0.633223, 0.92346, 0.48371, 0.789463, 0.432928, 0.396975, 0.737295, 0.189643, 0.518113, 0.175595, 0.446925, 0.149848, 0.467239, 0.314965, 0.563235, 0.18301, 0.456964, 0.28058, 0.576813, 0.288596, 0.570368, 0.301559, 0.587691, 0.339793, 0.659877, 0.211596, 0.46607, 0.218468, 0.413099, 0.224228, 0.456104, 0.231033, 0.450735, 0.299181, 0.542201, 0.43345, 0.747117, 0.38769, 0.811837, 0.412158, 0.775383, 0.397885, 0.756059, 0.446804, 0.765196, 0.615753, 0.734715, 0.560356, 0.741007, 0.864156, 0.635722, 0.92346, 0.48371, 0.842301, 0.371469, 0.842301, 0.371469, 0.796947, 0.581643, 0.878692, 0.551448, 0.812418, 0.602921, 0.77944, 0.418669, 0.789463, 0.432928, 0.77944, 0.418669, 0.767535, 0.54119, 0.853789, 0.474198, 0.767535, 0.54119, 0.853789, 0.474198, 0.837852, 0.452278, 0.837852, 0.452278, 0.353716, 0.771425, 0.353716, 0.771425, 0.642688, 0.641968, 0.796947, 0.581643, 0.779183, 0.631357, 0.813327, 0.604171, 0.243, 0.216509, 0.191826, 0.434119, 0.149848, 0.467239, 0.141453, 0.473863, 0.141453, 0.473863, 0.0450496, 0.397772, 0.0638746, 0.383435, 0.0962861, 0.372522, 0.525683, 0.737691, 0.510005, 0.713062, 0.507169, 0.712624, 0.527271, 0.736438, 0.521171, 0.701576, 0.5223, 0.703058, 0.5223, 0.703058, 0.524725, 0.697168, 0.526017, 0.698917, 0.526017, 0.698917, 0.524725, 0.697168, 0.538007, 0.689457, 0.545413, 0.699485, 0.547615, 0.697747, 0.54017, 0.687668, 0.54017, 0.687668, 0.585325, 0.652041, 0.598383, 0.66972, 0.600093, 0.668371, 0.62659, 0.616797, 0.62659, 0.616797, 0.587045, 0.650705, 0.587045, 0.650705, 0.627596, 0.618159, 0.626278, 0.619751, 0.626278, 0.619751, 0.644263, 0.640725, 0.642688, 0.641968, 0.628614, 0.619537, 0.628614, 0.619537, 0.724784, 0.581636, 0.693547, 0.568305, 0.693547, 0.568305, 0.560356, 0.741007, 0.542645, 0.716647, 0.711273, 0.592303, 0.519578, 0.841221, 0.529887, 0.831086, 0.533358, 0.862718, 0.600708, 0.8083, 0.556513, 0.743992, 0.556679, 0.740639, 0.486393, 0.768554, 0.583438, 0.807535, 0.560706, 0.77627, 0.583438, 0.807535, 0.560706, 0.77627, 0.554631, 0.780989, 0.515538, 0.811351, 0.556227, 0.779749, 0.52177, 0.735792, 0.523365, 0.734553, 0.523365, 0.734553, 0.538304, 0.842589, 0.39568, 0.892313, 0.375399, 0.863216, 0.488651, 0.778897, 0.811662, 0.605715, 0.799322, 0.658605, 0.779183, 0.631357, 0.799322, 0.658605, 0.132434, 0.24128, 0.394941, 0.0333398, 0.403701, 0.922732, 0.349266, 0.5844, 0.42413, 0.686719, 0.527271, 0.736438, 0.510005, 0.713062, 0.538007, 0.689457, 0.525683, 0.737691, 0.545413, 0.699485, 0.547615, 0.697747, 0.585325, 0.652041, 0.533358, 0.862718, 0.526441, 0.830061, 0.248626, 0.53355, 0.30709, 0.698117, 0.178981, 0.510845, 0.186299, 0.520752, 0.189643, 0.514015, 0.206835, 0.537291, 0.187731, 0.515524, 0.180924, 0.509312, 0.195125, 0.54653, 0.206835, 0.537291, 0.189643, 0.514015, 0.178981, 0.510845, 0.180924, 0.509312, 0.275017, 0.587184, 0.490233, 0.130161, 0.369767, 0.225208, 0.293734, 0.285197, 0.109478, 0.430573, 0.243, 0.216509, 0.138274, 0.299137, 0.449563, 0.053533, 0.410392, 0.000499547, 0.319033, 0.15652, 0.410392, 0.000499547, 0.0182106, 0.278997, 0.065515, 0.241674, 0.0302624, 0.312618, 0.05223, 0.325055, 0.0866396, 0.297907, 0.05223, 0.325055, 0.0182106, 0.278997, 0.0566173, 0.286968, 0.0646966, 0.297907, 0.0861824, 0.269655, 0.065515, 0.241674, 0.0799488, 0.261216, 0.0816403, 0.273825, 0.0785603, 0.269655, 0.0785603, 0.269655, 0.0785603, 0.286968, 0.0785603, 0.286968, 0.0866396, 0.297907, 0.0734099, 0.308344, 0.0929956, 0.334861, 0.0734099, 0.308344, 0.0646966, 0.297907, 0.0566173, 0.286968, 0.0816403, 0.273825, 0.0861824, 0.269655, 0.0995344, 0.287733, 0.0941786, 0.311882, 0.11912, 0.314249, 0.104467, 0.325811, 0.0941786, 0.311882, 0.108832, 0.30032, 0.0928834, 0.424124, 0.239139, 0.312739, 0.0928834, 0.424124, 0.216493, 0.280976, 0.0638746, 0.383435, 0.000499547, 0.335285, 0.0450496, 0.397772, 0.000499547, 0.335285, 0.195125, 0.54653, 0.168872, 0.510986, 0.0973102, 0.567662, 0.1326, 0.61544, 0.1326, 0.61544, 0.265572, 0.79547, 0.286484, 0.778971, 0.265572, 0.79547, 0.234043, 0.752783, 0.249786, 0.740362, 0.148343, 0.603018, 0.340029, 0.592517, 0.332475, 0.661006, 0.0972103, 0.567526, 0.248626, 0.53355, 0.283241, 0.598187, 0.271283, 0.649638, 0.30464, 0.62332, 0.340447, 0.671799, 0.30709, 0.698117, 0.274888, 0.646789, 0.274888, 0.646789, 0.299181, 0.542201, 0.314965, 0.563235, 0.324245, 0.55631, 0.175595, 0.446925, 0.18301, 0.456964, 0.301559, 0.587691, 0.29586, 0.564589, 0.288594, 0.570414, 0.301425, 0.560128, 0.321102, 0.572026, 0.25048, 0.501659, 0.248064, 0.498388, 0.219556, 0.45979, 0.25048, 0.501659, 0.248064, 0.498388, 0.219556, 0.45979, 0.242521, 0.507939, 0.242521, 0.507939, 0.254589, 0.524278, 0.254589, 0.524278, 0.267037, 0.514302, 0.267037, 0.514302, 0.274035, 0.508692, 0.274035, 0.508692, 0.261679, 0.492226, 0.261679, 0.492226, 0.254874, 0.497595, 0.252736, 0.494702, 0.254874, 0.497595, 0.224228, 0.456104, 0.224228, 0.456104, 0.252736, 0.494702, 0.356671, 0.578612, 0.321102, 0.572026, 0.261679, 0.518684, 0.308424, 0.554518, 0.261679, 0.518684, 0.278347, 0.541251, 0.29586, 0.564589, 0.219556, 0.45979, 0.281892, 0.740159, 0.290026, 0.711203, 0.134798, 0.611116, 0.526717, 0.192375, 0.235236, 0.423023, 0.22245, 0.405761, 0.22245, 0.405761, 0.51393, 0.175113, 0.228843, 0.414392, 0.520323, 0.183744, 0.412613, 0.0571712, 0.412613, 0.0571712, 0.403777, 0.0452555, 0.394941, 0.0333398, 0.678985, 0.556087, 0.686435, 0.566141, 0.56822, 0.627811, 0.57567, 0.637865, 0.560769, 0.617757, 0.358768, 0.77268, 0.38769, 0.811837, 0.446804, 0.765196, 0.358768, 0.77268, 0.236834, 0.75317, 0.334443, 0.738542, 0.188957, 0.570974, 0.186166, 0.570587, 0.100101, 0.568049, 0.132974, 0.612555, 0.148343, 0.603018, 0.148717, 0.600134, 0.168598, 0.514006, 0.188957, 0.570974, 0.148717, 0.600134, 0.100101, 0.568049, 0.166456, 0.515695, 0.168598, 0.514006, 0.132434, 0.24128, 0.150106, 0.265111, 0.150106, 0.265111, 0.14127, 0.253196, 0.13337, 0.576396, 0.10224, 0.566362, 0.132974, 0.612555, 0.339793, 0.659877, 0.717576, 0.577644, 0.521171, 0.701576, 0.600093, 0.668371, 0.710994, 0.582784, 0.706693, 0.562758, 0.533355, 0.675837, 0.560769, 0.617757, 0.58312, 0.647919, 0.671535, 0.546033, 0.109478, 0.430573, 0.526717, 0.192375, 0.51393, 0.175113, 0.293734, 0.285197, 0.369767, 0.225208, 0.490233, 0.130161, 0.463874, 0.660391, 0.490097, 0.769855, 0.446617, 0.674007, 0.507355, 0.75624, 0.347685, 0.760956, 0.387033, 0.816533, 0.448753, 0.767836, 0.438801, 0.754362, 0.438801, 0.754362, 0.424528, 0.735038, 0.424528, 0.735038, 0.412158, 0.775383, 0.397885, 0.756059, 0.424528, 0.735038, 0.419462, 0.728179, 0.509713, 0.807413, 0.488651, 0.778897, 0.319033, 0.15652, 0.449563, 0.0535331, 0.0799488, 0.261216, 0.108832, 0.30032, 0.0799488, 0.261216, 0.0995344, 0.287733, 0.104467, 0.325811, 0.140599, 0.302285, 0.121445, 0.317397, 0.140599, 0.302285, 0.121445, 0.317397, 0.11912, 0.314249, 0.138274, 0.299137, 0.104467, 0.325811, 0.0929956, 0.334861, 0.584043, 0.8045, 0.349544, 0.84611, 0.700111, 0.567899, 0.700111, 0.567899, 0.717576, 0.577644, 0.791503, 0.664678, 0.598383, 0.66972, 0.507169, 0.712624, 0.627596, 0.618159, 0.167618, 0.549375, 0.686435, 0.566141, 0.285444, 0.596428, 0.556513, 0.743992, 0.387033, 0.816533, 0.484395, 0.231583, 0.715389, 0.657329, 0.589969, 0.711616, 0.698355, 0.633901, 0.556679, 0.740639, 0.337234, 0.738929, 0.340029, 0.592517, 0.303295, 0.6215, 0.30464, 0.62332, 0.239796, 0.607009, 0.271283, 0.649638, 0.30709, 0.698117, 0.274277, 0.58144, 0.305331, 0.699127, 0.409882, 0.837543, 0.275017, 0.587184, 0.706044, 0.556264, 0.533561, 0.860452, 0.485133, 0.769533, 0.239796, 0.607009, 0.208767, 0.564999, 0.369209, 0.632023, 0.303295, 0.6215, 0.28058, 0.576813, 0.274277, 0.58144, 0.332475, 0.661006, 0.246649, 0.608431, 0.235236, 0.423023, 0.446543, 0.764843, 0.290026, 0.711203, 0.252578, 0.740749, 0.52177, 0.735792, 0.285444, 0.596428, 0.271283, 0.649638, 0.340447, 0.671799, 0.305331, 0.699127, 0.524612, 0.742624, 0.532955, 0.869213, 0.610177, 0.809527, 0.443327, 0.706533, 0.358467, 0.767677, 0.711273, 0.592303, 0.724784, 0.581636, 0.484395, 0.231583, 0.592939, 0.715701, 0.707139, 0.647828, 0.602619, 0.729014, 0.731587, 0.608945, 0.731587, 0.608945, 0.715389, 0.657329, 0.592939, 0.715701, 0.730724, 0.608762, 0.730724, 0.608762, 0.589969, 0.711616, 0.727073, 0.479774, 0.690914, 0.511189, 0.553377, 0.743204, 0.517407, 0.84078, 0.600708, 0.8083, 0.529887, 0.831086, 0.523365, 0.734553, 0.542645, 0.716647, 0.540466, 0.718339, 0.485133, 0.769533, 0.532955, 0.869213, 0.727099, 0.479754, 0.740798, 0.469468, 0.535397, 0.191343, 0.150786, 0.562655, 0.438193, 0.710583, 0.334443, 0.738542, 0.265947, 0.792585, 0.186166, 0.570587, 0.435482, 0.706913, 0.48082, 0.676951, 0.554411, 0.634243, 0.554411, 0.634243, 0.56582, 0.648968, 0.490097, 0.769855, 0.533561, 0.860452, 0.509713, 0.807413, 0.39568, 0.911383, 0.375399, 0.863216, 0.400057, 0.844858, 0.365245, 0.848648, 0.274301, 0.397346, 0.3038, 0.731527, 0.690914, 0.511189, 0.610177, 0.809527, 0.520829, 0.202837, 0.52765, 0.668475, 0.349544, 0.84611, 0.701028, 0.652717, 0.540466, 0.718339, 0.554631, 0.780989, 0.268117, 0.759681, 0.252578, 0.740749, 0.20147, 0.558512, 0.521946, 0.661112, 0.521946, 0.661112, 0.429359, 0.687622, 0.43345, 0.747117, 0.419462, 0.728179, 0.706693, 0.562758, 0.520829, 0.202837, 0.740798, 0.469468, 0.53538, 0.191356, 0.710994, 0.582784, 0.532955, 0.869213, 0.733973, 0.585553, 0.609655, 0.739451, 0.517407, 0.84078, 0.515538, 0.811351, 0.308136, 0.554749, 0.20147, 0.558512, 0.535413, 0.19133, 0.430151, 0.74265, 0.516799, 0.810372, 0.553377, 0.743204, 0.265947, 0.792585, 0.403701, 0.922732, 0.512645, 0.840478, 0.512645, 0.840478, 0.39568, 0.892313, 0.603325, 0.808376, 0.533355, 0.675837, 0.733973, 0.585553, 0.707139, 0.647828, 0.2904, 0.708318, 0.644263, 0.640725, 0.535763, 0.738098, 0.582711, 0.701634, 0.589969, 0.711616, 0.560356, 0.741007, 0.55996, 0.743838, 0.538217, 0.754979, 0.538217, 0.754979, 0.468799, 0.75202, 0.516799, 0.810372, 0.438193, 0.710583, 0.396975, 0.737295, 0.387033, 0.816533, 0.811662, 0.605715, 0.526441, 0.830061, 0.208767, 0.564999, 0.466589, 0.749027, 0.391665, 0.812878, 0.337234, 0.738929, 0.301425, 0.560128, 0.468799, 0.75202, 0.466589, 0.749027, 0.53091, 0.832419, 0.519578, 0.841221, 0.538304, 0.842589, 0.556227, 0.779749, 0.439508, 0.712363, 0.450197, 0.726834, 0.450197, 0.726834, 0.430151, 0.74265, 0.195125, 0.54653, 0.378301, 0.629495, 0.218468, 0.413099, 0.301425, 0.560128, 0.512645, 0.840478, 0.358467, 0.767677, 0.453496, 0.731301, 0.812623, 0.607037, 0.168972, 0.511121, 0.305705, 0.696243, 0.204262, 0.558899, 0.453496, 0.731301, 0.439508, 0.712363, 0.518188, 0.818887, 0.389903, 0.830289, 0.446543, 0.764843, 0.333558, 0.74183, 0.2904, 0.708318, 0.448753, 0.767836, 0.305705, 0.696243, 0.337234, 0.738929, 0.524612, 0.742624, 0.204262, 0.558899, 0.358467, 0.767677, 0.477841, 0.679301, 0.48082, 0.676951, 0.664085, 0.535978, 0.664085, 0.535978, 0.706044, 0.556264, 0.438193, 0.710583, 0.443327, 0.706533, 0.429359, 0.687622, 0.463874, 0.660391, 0.526441, 0.830061, 0.594112, 0.717313, 0.526441, 0.830061, 0.512645, 0.840478, 0.308136, 0.554749, 0.416229, 0.722104, 0.526441, 0.830061, 0.438193, 0.710583, 0.526441, 0.830061, 0.812623, 0.607037, 0.535108, 0.842323, 0.594112, 0.717313, 0.416229, 0.722104, 0.55996, 0.743838, 0.359047, 0.644686, 0.477841, 0.679301, 0.512645, 0.840478, 0.378301, 0.629495, 0.324245, 0.55631, 0.274301, 0.397346, 0.48082, 0.676951]; + indices = new [17, 10, 6, 10, 17, 0, 1, 6, 10, 6, 1, 15, 2, 9, 7, 9, 2, 13, 3, 8, 7, 8, 3, 4, 4, 10, 8, 10, 4, 1, 5, 9, 16, 9, 5, 11, 6, 54, 17, 54, 6, 51, 7, 12, 2, 12, 7, 8, 10, 12, 8, 12, 10, 0, 11, 7, 9, 7, 11, 3, 9, 14, 16, 14, 9, 13, 6, 49, 51, 49, 6, 15, 22, 17, 18, 17, 22, 0, 26, 18, 40, 18, 26, 22, 2, 21, 13, 21, 2, 19, 20, 28, 19, 28, 20, 29, 29, 22, 26, 22, 29, 20, 30, 21, 36, 21, 30, 23, 18, 54, 67, 54, 18, 17, 12, 19, 2, 19, 12, 20, 12, 22, 20, 22, 12, 0, 36, 19, 28, 19, 36, 21, 13, 23, 14, 23, 13, 21, 66, 18, 67, 18, 66, 40, 25, 35, 31, 35, 25, 24, 26, 31, 35, 31, 26, 40, 27, 34, 32, 34, 27, 38, 28, 33, 32, 33, 28, 29, 29, 35, 33, 35, 29, 26, 30, 34, 41, 34, 30, 36, 31, 69, 25, 69, 31, 70, 32, 37, 27, 37, 32, 33, 35, 37, 33, 37, 35, 24, 36, 32, 34, 32, 36, 28, 34, 39, 41, 39, 34, 38, 31, 66, 70, 66, 31, 40, 46, 25, 42, 25, 46, 24, 1, 42, 15, 42, 1, 46, 27, 45, 38, 45, 27, 43, 44, 3, 43, 3, 44, 4, 4, 46, 1, 46, 4, 44, 5, 45, 11, 45, 5, 47, 42, 69, 68, 69, 42, 25, 37, 43, 27, 43, 37, 44, 37, 46, 44, 46, 37, 24, 11, 43, 3, 43, 11, 45, 38, 47, 39, 47, 38, 45, 49, 42, 68, 42, 49, 15, 66, 55, 58, 55, 66, 67, 99, 60, 59, 60, 99, 97, 60, 61, 62, 61, 60, 97, 63, 61, 95, 61, 63, 62, 64, 95, 96, 95, 64, 63, 64, 98, 65, 98, 64, 96, 98, 59, 65, 59, 98, 99, 72, 74, 75, 74, 72, 71, 73, 75, 76, 75, 73, 72, 53, 76, 55, 76, 53, 73, 78, 74, 77, 74, 78, 75, 79, 75, 78, 75, 79, 76, 76, 58, 55, 58, 76, 79, 81, 77, 80, 77, 81, 78, 82, 78, 81, 78, 82, 79, 79, 57, 58, 57, 79, 82, 81, 83, 84, 83, 81, 80, 82, 84, 85, 84, 82, 81, 57, 85, 56, 85, 57, 82, 84, 86, 87, 86, 84, 83, 85, 87, 88, 87, 85, 84, 56, 88, 48, 88, 56, 85, 86, 90, 87, 90, 86, 89, 87, 91, 88, 91, 87, 90, 88, 50, 48, 50, 88, 91, 89, 93, 90, 93, 89, 92, 90, 94, 91, 94, 90, 93, 91, 52, 50, 52, 91, 94, 92, 72, 93, 72, 92, 71, 93, 73, 94, 73, 93, 72, 94, 53, 52, 53, 94, 73, 61, 96, 95, 98, 97, 99, 96, 97, 98, 61, 97, 96, 54, 52, 53, 52, 54, 51, 54, 55, 67, 55, 54, 53, 57, 66, 58, 66, 57, 70, 70, 56, 69, 56, 70, 57, 69, 48, 68, 48, 69, 56, 49, 48, 50, 48, 49, 68, 52, 49, 50, 49, 52, 51, 102, 101, 119, 102, 111, 101, 102, 100, 111, 109, 118, 120, 118, 109, 103, 104, 105, 106, 105, 104, 114, 107, 121, 113, 121, 107, 122, 108, 123, 119, 123, 108, 115, 114, 122, 107, 122, 114, 104, 106, 122, 104, 117, 106, 105, 109, 106, 117, 120, 106, 109, 120, 122, 106, 120, 116, 122, 120, 112, 116, 120, 123, 112, 122, 116, 121, 111, 115, 108, 115, 111, 117, 112, 107, 113, 110, 115, 117, 115, 110, 123, 116, 113, 121, 113, 116, 112, 107, 105, 114, 117, 103, 109, 117, 100, 103, 117, 111, 100, 118, 123, 120, 118, 119, 123, 118, 102, 119, 101, 108, 119, 108, 101, 111, 105, 110, 117, 110, 112, 123, 110, 107, 112, 105, 107, 110, 124, 128, 129, 125, 124, 127, 124, 125, 128, 127, 126, 125, 127, 129, 126, 129, 127, 124, 132, 131, 149, 132, 141, 131, 132, 130, 141, 139, 148, 150, 148, 139, 133, 134, 135, 136, 135, 134, 144, 137, 151, 143, 151, 137, 152, 138, 153, 149, 153, 138, 145, 144, 152, 137, 152, 144, 134, 136, 152, 134, 147, 136, 135, 139, 136, 147, 150, 136, 139, 150, 152, 136, 150, 146, 152, 150, 142, 146, 150, 153, 142, 152, 146, 151, 141, 145, 138, 145, 141, 147, 142, 137, 143, 140, 145, 147, 145, 140, 153, 146, 143, 151, 143, 146, 142, 137, 135, 144, 147, 133, 139, 147, 130, 133, 147, 141, 130, 148, 153, 150, 148, 149, 153, 148, 132, 149, 131, 138, 149, 138, 131, 141, 135, 140, 147, 140, 142, 153, 140, 137, 142, 135, 137, 140, 156, 160, 159, 160, 156, 158, 155, 159, 157, 159, 155, 156, 158, 161, 160, 161, 158, 154, 157, 154, 155, 154, 157, 161, 158, 155, 154, 155, 158, 156, 164, 168, 167, 168, 164, 166, 163, 167, 165, 167, 163, 164, 166, 169, 168, 169, 166, 162, 165, 162, 163, 162, 165, 169, 166, 163, 162, 163, 166, 164, 171, 173, 170, 173, 171, 174, 176, 182, 172, 182, 176, 175, 181, 173, 174, 173, 181, 177, 176, 181, 175, 181, 176, 177, 170, 182, 171, 182, 170, 172, 179, 178, 186, 178, 179, 187, 185, 179, 186, 179, 185, 180, 174, 175, 181, 174, 182, 175, 174, 171, 182, 187, 183, 178, 183, 187, 184, 185, 178, 183, 178, 185, 186, 184, 179, 180, 179, 184, 187, 185, 184, 180, 184, 185, 183, 189, 176, 172, 176, 189, 191, 192, 173, 177, 173, 192, 190, 191, 177, 176, 177, 191, 192, 190, 170, 173, 170, 190, 188, 188, 172, 170, 172, 188, 189, 194, 196, 193, 196, 194, 197, 199, 205, 195, 205, 199, 198, 204, 196, 197, 196, 204, 200, 199, 204, 198, 204, 199, 200, 193, 205, 194, 205, 193, 195, 202, 201, 209, 201, 202, 210, 208, 202, 209, 202, 208, 203, 197, 198, 204, 197, 205, 198, 197, 194, 205, 210, 206, 201, 206, 210, 207, 208, 201, 206, 201, 208, 209, 207, 202, 203, 202, 207, 210, 208, 207, 203, 207, 208, 206, 212, 199, 195, 199, 212, 214, 215, 196, 200, 196, 215, 213, 214, 200, 199, 200, 214, 215, 213, 193, 196, 193, 213, 211, 211, 195, 193, 195, 211, 212, 217, 219, 216, 219, 217, 220, 222, 228, 218, 228, 222, 221, 227, 219, 220, 219, 227, 223, 222, 227, 221, 227, 222, 223, 216, 228, 217, 228, 216, 218, 225, 224, 232, 224, 225, 233, 231, 225, 232, 225, 231, 226, 220, 221, 227, 220, 228, 221, 220, 217, 228, 233, 229, 224, 229, 233, 230, 231, 224, 229, 224, 231, 232, 230, 225, 226, 225, 230, 233, 231, 230, 226, 230, 231, 229, 235, 222, 218, 222, 235, 237, 238, 219, 223, 219, 238, 236, 237, 223, 222, 223, 237, 238, 236, 216, 219, 216, 236, 234, 234, 218, 216, 218, 234, 235, 240, 242, 239, 242, 240, 243, 245, 251, 241, 251, 245, 244, 250, 242, 243, 242, 250, 246, 245, 250, 244, 250, 245, 246, 239, 251, 240, 251, 239, 241, 248, 247, 0xFF, 247, 248, 0x0100, 254, 248, 0xFF, 248, 254, 249, 243, 244, 250, 243, 251, 244, 243, 240, 251, 0x0100, 252, 247, 252, 0x0100, 253, 254, 247, 252, 247, 254, 0xFF, 253, 248, 249, 248, 253, 0x0100, 254, 253, 249, 253, 254, 252, 258, 245, 241, 245, 258, 260, 261, 242, 246, 242, 261, 259, 260, 246, 245, 246, 260, 261, 259, 239, 242, 239, 259, 0x0101, 0x0101, 241, 239, 241, 0x0101, 258, 263, 265, 262, 265, 263, 266, 268, 274, 264, 274, 268, 267, 273, 265, 266, 265, 273, 269, 268, 273, 267, 273, 268, 269, 262, 274, 263, 274, 262, 264, 271, 270, 278, 270, 271, 279, 277, 271, 278, 271, 277, 272, 266, 267, 273, 266, 274, 267, 266, 263, 274, 279, 275, 270, 275, 279, 276, 277, 270, 275, 270, 277, 278, 276, 271, 272, 271, 276, 279, 277, 276, 272, 276, 277, 275, 281, 268, 264, 268, 281, 283, 284, 265, 269, 265, 284, 282, 283, 269, 268, 269, 283, 284, 282, 262, 265, 262, 282, 280, 280, 264, 262, 264, 280, 281, 286, 288, 285, 288, 286, 289, 291, 297, 287, 297, 291, 290, 296, 288, 289, 288, 296, 292, 291, 296, 290, 296, 291, 292, 285, 297, 286, 297, 285, 287, 294, 293, 301, 293, 294, 302, 300, 294, 301, 294, 300, 295, 289, 290, 296, 289, 297, 290, 289, 286, 297, 302, 298, 293, 298, 302, 299, 300, 293, 298, 293, 300, 301, 299, 294, 295, 294, 299, 302, 300, 299, 295, 299, 300, 298, 304, 291, 287, 291, 304, 306, 307, 288, 292, 288, 307, 305, 306, 292, 291, 292, 306, 307, 305, 285, 288, 285, 305, 303, 303, 287, 285, 287, 303, 304, 309, 311, 308, 311, 309, 312, 314, 320, 310, 320, 314, 313, 319, 311, 312, 311, 319, 315, 314, 319, 313, 319, 314, 315, 308, 320, 309, 320, 308, 310, 317, 316, 324, 316, 317, 325, 323, 317, 324, 317, 323, 318, 312, 313, 319, 312, 320, 313, 312, 309, 320, 325, 321, 316, 321, 325, 322, 323, 316, 321, 316, 323, 324, 322, 317, 318, 317, 322, 325, 323, 322, 318, 322, 323, 321, 327, 314, 310, 314, 327, 329, 330, 311, 315, 311, 330, 328, 329, 315, 314, 315, 329, 330, 328, 308, 311, 308, 328, 326, 326, 310, 308, 310, 326, 327, 332, 334, 331, 334, 332, 335, 337, 343, 333, 343, 337, 336, 342, 334, 335, 334, 342, 338, 337, 342, 336, 342, 337, 338, 331, 343, 332, 343, 331, 333, 340, 339, 347, 339, 340, 348, 346, 340, 347, 340, 346, 341, 335, 336, 342, 335, 343, 336, 335, 332, 343, 348, 344, 339, 344, 348, 345, 346, 339, 344, 339, 346, 347, 345, 340, 341, 340, 345, 348, 346, 345, 341, 345, 346, 344, 350, 337, 333, 337, 350, 352, 353, 334, 338, 334, 353, 351, 352, 338, 337, 338, 352, 353, 351, 331, 334, 331, 351, 349, 349, 333, 331, 333, 349, 350, 355, 357, 354, 357, 355, 358, 360, 366, 356, 366, 360, 359, 365, 357, 358, 357, 365, 361, 360, 365, 359, 365, 360, 361, 354, 366, 355, 366, 354, 356, 363, 362, 370, 362, 363, 371, 369, 363, 370, 363, 369, 364, 358, 359, 365, 358, 366, 359, 358, 355, 366, 371, 367, 362, 367, 371, 368, 369, 362, 367, 362, 369, 370, 368, 363, 364, 363, 368, 371, 369, 368, 364, 368, 369, 367, 373, 360, 356, 360, 373, 375, 376, 357, 361, 357, 376, 374, 375, 361, 360, 361, 375, 376, 374, 354, 357, 354, 374, 372, 372, 356, 354, 356, 372, 373, 378, 380, 377, 380, 378, 381, 383, 389, 379, 389, 383, 382, 388, 380, 381, 380, 388, 384, 383, 388, 382, 388, 383, 384, 377, 389, 378, 389, 377, 379, 386, 385, 393, 385, 386, 394, 392, 386, 393, 386, 392, 387, 381, 382, 388, 381, 389, 382, 381, 378, 389, 394, 390, 385, 390, 394, 391, 392, 385, 390, 385, 392, 393, 391, 386, 387, 386, 391, 394, 392, 391, 387, 391, 392, 390, 396, 383, 379, 383, 396, 398, 399, 380, 384, 380, 399, 397, 398, 384, 383, 384, 398, 399, 397, 377, 380, 377, 397, 395, 395, 379, 377, 379, 395, 396, 401, 403, 400, 403, 401, 404, 406, 412, 402, 412, 406, 405, 411, 403, 404, 403, 411, 407, 406, 411, 405, 411, 406, 407, 400, 412, 401, 412, 400, 402, 409, 408, 416, 408, 409, 417, 415, 409, 416, 409, 415, 410, 404, 405, 411, 404, 412, 405, 404, 401, 412, 417, 413, 408, 413, 417, 414, 415, 408, 413, 408, 415, 416, 414, 409, 410, 409, 414, 417, 415, 414, 410, 414, 415, 413, 419, 406, 402, 406, 419, 421, 422, 403, 407, 403, 422, 420, 421, 407, 406, 407, 421, 422, 420, 400, 403, 400, 420, 418, 418, 402, 400, 402, 418, 419, 424, 426, 423, 426, 424, 427, 429, 435, 425, 435, 429, 428, 434, 426, 427, 426, 434, 430, 429, 434, 428, 434, 429, 430, 423, 435, 424, 435, 423, 425, 432, 431, 439, 431, 432, 440, 438, 432, 439, 432, 438, 433, 427, 428, 434, 427, 435, 428, 427, 424, 435, 440, 436, 431, 436, 440, 437, 438, 431, 436, 431, 438, 439, 437, 432, 433, 432, 437, 440, 438, 437, 433, 437, 438, 436, 442, 429, 425, 429, 442, 444, 445, 426, 430, 426, 445, 443, 444, 430, 429, 430, 444, 445, 443, 423, 426, 423, 443, 441, 441, 425, 423, 425, 441, 442, 447, 449, 446, 449, 447, 450, 452, 458, 448, 458, 452, 451, 457, 449, 450, 449, 457, 453, 452, 457, 451, 457, 452, 453, 446, 458, 447, 458, 446, 448, 455, 454, 462, 454, 455, 463, 461, 455, 462, 455, 461, 456, 450, 451, 457, 450, 458, 451, 450, 447, 458, 463, 459, 454, 459, 463, 460, 461, 454, 459, 454, 461, 462, 460, 455, 456, 455, 460, 463, 461, 460, 456, 460, 461, 459, 465, 452, 448, 452, 465, 467, 468, 449, 453, 449, 468, 466, 467, 453, 452, 453, 467, 468, 466, 446, 449, 446, 466, 464, 464, 448, 446, 448, 464, 465, 470, 472, 469, 472, 470, 473, 475, 481, 471, 481, 475, 474, 480, 472, 473, 472, 480, 476, 475, 480, 474, 480, 475, 476, 469, 481, 470, 481, 469, 471, 478, 477, 485, 477, 478, 486, 484, 478, 485, 478, 484, 479, 473, 474, 480, 473, 481, 474, 473, 470, 481, 486, 482, 477, 482, 486, 483, 484, 477, 482, 477, 484, 485, 483, 478, 479, 478, 483, 486, 484, 483, 479, 483, 484, 482, 488, 475, 471, 475, 488, 490, 491, 472, 476, 472, 491, 489, 490, 476, 475, 476, 490, 491, 489, 469, 472, 469, 489, 487, 487, 471, 469, 471, 487, 488, 493, 495, 492, 495, 493, 496, 498, 504, 494, 504, 498, 497, 503, 495, 496, 495, 503, 499, 498, 503, 497, 503, 498, 499, 492, 504, 493, 504, 492, 494, 501, 500, 508, 500, 501, 509, 507, 501, 508, 501, 507, 502, 496, 497, 503, 496, 504, 497, 496, 493, 504, 509, 505, 500, 505, 509, 506, 507, 500, 505, 500, 507, 508, 506, 501, 502, 501, 506, 509, 507, 506, 502, 506, 507, 505, 511, 498, 494, 498, 511, 513, 0x0202, 495, 499, 495, 0x0202, 0x0200, 513, 499, 498, 499, 513, 0x0202, 0x0200, 492, 495, 492, 0x0200, 510, 510, 494, 492, 494, 510, 511, 516, 518, 515, 518, 516, 519, 521, 527, 517, 527, 521, 520, 526, 518, 519, 518, 526, 522, 521, 526, 520, 526, 521, 522, 515, 527, 516, 527, 515, 517, 524, 523, 531, 523, 524, 532, 530, 524, 531, 524, 530, 525, 519, 520, 526, 519, 527, 520, 519, 516, 527, 532, 528, 523, 528, 532, 529, 530, 523, 528, 523, 530, 531, 529, 524, 525, 524, 529, 532, 530, 529, 525, 529, 530, 528, 534, 521, 517, 521, 534, 536, 537, 518, 522, 518, 537, 535, 536, 522, 521, 522, 536, 537, 535, 515, 518, 515, 535, 533, 533, 517, 515, 517, 533, 534, 539, 541, 538, 541, 539, 542, 544, 550, 540, 550, 544, 543, 549, 541, 542, 541, 549, 545, 544, 549, 543, 549, 544, 545, 538, 550, 539, 550, 538, 540, 547, 546, 554, 546, 547, 555, 553, 547, 554, 547, 553, 548, 542, 543, 549, 542, 550, 543, 542, 539, 550, 555, 551, 546, 551, 555, 552, 553, 546, 551, 546, 553, 554, 552, 547, 548, 547, 552, 555, 553, 552, 548, 552, 553, 551, 557, 544, 540, 544, 557, 559, 560, 541, 545, 541, 560, 558, 559, 545, 544, 545, 559, 560, 558, 538, 541, 538, 558, 556, 556, 540, 538, 540, 556, 557, 562, 564, 561, 564, 562, 565, 567, 573, 563, 573, 567, 566, 572, 564, 565, 564, 572, 568, 567, 572, 566, 572, 567, 568, 561, 573, 562, 573, 561, 563, 570, 569, 577, 569, 570, 578, 576, 570, 577, 570, 576, 571, 565, 566, 572, 565, 573, 566, 565, 562, 573, 578, 574, 569, 574, 578, 575, 576, 569, 574, 569, 576, 577, 575, 570, 571, 570, 575, 578, 576, 575, 571, 575, 576, 574, 580, 567, 563, 567, 580, 582, 583, 564, 568, 564, 583, 581, 582, 568, 567, 568, 582, 583, 581, 561, 564, 561, 581, 579, 579, 563, 561, 563, 579, 580, 585, 587, 584, 587, 585, 588, 590, 596, 586, 596, 590, 589, 595, 587, 588, 587, 595, 591, 590, 595, 589, 595, 590, 591, 584, 596, 585, 596, 584, 586, 593, 592, 600, 592, 593, 601, 599, 593, 600, 593, 599, 594, 588, 589, 595, 588, 596, 589, 588, 585, 596, 601, 597, 592, 597, 601, 598, 599, 592, 597, 592, 599, 600, 598, 593, 594, 593, 598, 601, 599, 598, 594, 598, 599, 597, 603, 590, 586, 590, 603, 605, 606, 587, 591, 587, 606, 604, 605, 591, 590, 591, 605, 606, 604, 584, 587, 584, 604, 602, 602, 586, 584, 586, 602, 603, 608, 610, 607, 610, 608, 611, 613, 619, 609, 619, 613, 612, 618, 610, 611, 610, 618, 614, 613, 618, 612, 618, 613, 614, 607, 619, 608, 619, 607, 609, 616, 615, 623, 615, 616, 624, 622, 616, 623, 616, 622, 617, 611, 612, 618, 611, 619, 612, 611, 608, 619, 624, 620, 615, 620, 624, 621, 622, 615, 620, 615, 622, 623, 621, 616, 617, 616, 621, 624, 622, 621, 617, 621, 622, 620, 626, 613, 609, 613, 626, 628, 629, 610, 614, 610, 629, 627, 628, 614, 613, 614, 628, 629, 627, 607, 610, 607, 627, 625, 625, 609, 607, 609, 625, 626, 631, 633, 630, 633, 631, 634, 636, 642, 632, 642, 636, 635, 641, 633, 634, 633, 641, 637, 636, 641, 635, 641, 636, 637, 630, 642, 631, 642, 630, 632, 639, 638, 646, 638, 639, 647, 645, 639, 646, 639, 645, 640, 634, 635, 641, 634, 642, 635, 634, 631, 642, 647, 643, 638, 643, 647, 644, 645, 638, 643, 638, 645, 646, 644, 639, 640, 639, 644, 647, 645, 644, 640, 644, 645, 643, 649, 636, 632, 636, 649, 651, 652, 633, 637, 633, 652, 650, 651, 637, 636, 637, 651, 652, 650, 630, 633, 630, 650, 648, 648, 632, 630, 632, 648, 649, 654, 656, 653, 656, 654, 657, 659, 665, 655, 665, 659, 658, 664, 656, 657, 656, 664, 660, 659, 664, 658, 664, 659, 660, 653, 665, 654, 665, 653, 655, 662, 661, 669, 661, 662, 670, 668, 662, 669, 662, 668, 663, 657, 658, 664, 657, 665, 658, 657, 654, 665, 670, 666, 661, 666, 670, 667, 668, 661, 666, 661, 668, 669, 667, 662, 663, 662, 667, 670, 668, 667, 663, 667, 668, 666, 672, 659, 655, 659, 672, 674, 675, 656, 660, 656, 675, 673, 674, 660, 659, 660, 674, 675, 673, 653, 656, 653, 673, 671, 671, 655, 653, 655, 671, 672, 677, 679, 676, 679, 677, 680, 682, 688, 678, 688, 682, 681, 687, 679, 680, 679, 687, 683, 682, 687, 681, 687, 682, 683, 676, 688, 677, 688, 676, 678, 685, 684, 692, 684, 685, 693, 691, 685, 692, 685, 691, 686, 680, 681, 687, 680, 688, 681, 680, 677, 688, 693, 689, 684, 689, 693, 690, 691, 684, 689, 684, 691, 692, 690, 685, 686, 685, 690, 693, 691, 690, 686, 690, 691, 689, 695, 682, 678, 682, 695, 697, 698, 679, 683, 679, 698, 696, 697, 683, 682, 683, 697, 698, 696, 676, 679, 676, 696, 694, 694, 678, 676, 678, 694, 695, 700, 702, 699, 702, 700, 703, 705, 711, 701, 711, 705, 704, 710, 702, 703, 702, 710, 706, 705, 710, 704, 710, 705, 706, 699, 711, 700, 711, 699, 701, 708, 707, 715, 707, 708, 716, 714, 708, 715, 708, 714, 709, 703, 704, 710, 703, 711, 704, 703, 700, 711, 716, 712, 707, 712, 716, 713, 714, 707, 712, 707, 714, 715, 713, 708, 709, 708, 713, 716, 714, 713, 709, 713, 714, 712, 718, 705, 701, 705, 718, 720, 721, 702, 706, 702, 721, 719, 720, 706, 705, 706, 720, 721, 719, 699, 702, 699, 719, 717, 717, 701, 699, 701, 717, 718, 723, 725, 722, 725, 723, 726, 728, 734, 724, 734, 728, 727, 733, 725, 726, 725, 733, 729, 728, 733, 727, 733, 728, 729, 722, 734, 723, 734, 722, 724, 731, 730, 738, 730, 731, 739, 737, 731, 738, 731, 737, 732, 726, 727, 733, 726, 734, 727, 726, 723, 734, 739, 735, 730, 735, 739, 736, 737, 730, 735, 730, 737, 738, 736, 731, 732, 731, 736, 739, 737, 736, 732, 736, 737, 735, 741, 728, 724, 728, 741, 743, 744, 725, 729, 725, 744, 742, 743, 729, 728, 729, 743, 744, 742, 722, 725, 722, 742, 740, 740, 724, 722, 724, 740, 741, 746, 748, 745, 748, 746, 749, 751, 757, 747, 757, 751, 750, 756, 748, 749, 748, 756, 752, 751, 756, 750, 756, 751, 752, 745, 757, 746, 757, 745, 747, 754, 753, 761, 753, 754, 762, 760, 754, 761, 754, 760, 755, 749, 750, 756, 749, 757, 750, 749, 746, 757, 762, 758, 753, 758, 762, 759, 760, 753, 758, 753, 760, 761, 759, 754, 755, 754, 759, 762, 760, 759, 755, 759, 760, 758, 764, 751, 747, 751, 764, 766, 767, 748, 752, 748, 767, 765, 766, 752, 751, 752, 766, 767, 765, 745, 748, 745, 765, 763, 763, 747, 745, 747, 763, 764, 769, 0x0303, 0x0300, 0x0303, 769, 772, 774, 780, 770, 780, 774, 773, 779, 0x0303, 772, 0x0303, 779, 775, 774, 779, 773, 779, 774, 775, 0x0300, 780, 769, 780, 0x0300, 770, 777, 776, 784, 776, 777, 785, 783, 777, 784, 777, 783, 778, 772, 773, 779, 772, 780, 773, 772, 769, 780, 785, 781, 776, 781, 785, 782, 783, 776, 781, 776, 783, 784, 782, 777, 778, 777, 782, 785, 783, 782, 778, 782, 783, 781, 787, 774, 770, 774, 787, 789, 790, 0x0303, 775, 0x0303, 790, 788, 789, 775, 774, 775, 789, 790, 788, 0x0300, 0x0303, 0x0300, 788, 786, 786, 770, 0x0300, 770, 786, 787, 792, 794, 791, 794, 792, 795, 797, 803, 793, 803, 797, 796, 802, 794, 795, 794, 802, 798, 797, 802, 796, 802, 797, 798, 791, 803, 792, 803, 791, 793, 800, 799, 807, 799, 800, 808, 806, 800, 807, 800, 806, 801, 795, 796, 802, 795, 803, 796, 795, 792, 803, 808, 804, 799, 804, 808, 805, 806, 799, 804, 799, 806, 807, 805, 800, 801, 800, 805, 808, 806, 805, 801, 805, 806, 804, 810, 797, 793, 797, 810, 812, 813, 794, 798, 794, 813, 811, 812, 798, 797, 798, 812, 813, 811, 791, 794, 791, 811, 809, 809, 793, 791, 793, 809, 810, 815, 817, 814, 817, 815, 818, 820, 826, 816, 826, 820, 819, 825, 817, 818, 817, 825, 821, 820, 825, 819, 825, 820, 821, 814, 826, 815, 826, 814, 816, 823, 822, 830, 822, 823, 831, 829, 823, 830, 823, 829, 824, 818, 819, 825, 818, 826, 819, 818, 815, 826, 831, 827, 822, 827, 831, 828, 829, 822, 827, 822, 829, 830, 828, 823, 824, 823, 828, 831, 829, 828, 824, 828, 829, 827, 833, 820, 816, 820, 833, 835, 836, 817, 821, 817, 836, 834, 835, 821, 820, 821, 835, 836, 834, 814, 817, 814, 834, 832, 832, 816, 814, 816, 832, 833, 838, 840, 837, 840, 838, 841, 843, 849, 839, 849, 843, 842, 848, 840, 841, 840, 848, 844, 843, 848, 842, 848, 843, 844, 837, 849, 838, 849, 837, 839, 846, 845, 853, 845, 846, 854, 852, 846, 853, 846, 852, 847, 841, 842, 848, 841, 849, 842, 841, 838, 849, 854, 850, 845, 850, 854, 851, 852, 845, 850, 845, 852, 853, 851, 846, 847, 846, 851, 854, 852, 851, 847, 851, 852, 850, 856, 843, 839, 843, 856, 858, 859, 840, 844, 840, 859, 857, 858, 844, 843, 844, 858, 859, 857, 837, 840, 837, 857, 855, 855, 839, 837, 839, 855, 856, 861, 863, 860, 863, 861, 864, 866, 872, 862, 872, 866, 865, 871, 863, 864, 863, 871, 867, 866, 871, 865, 871, 866, 867, 860, 872, 861, 872, 860, 862, 869, 868, 876, 868, 869, 877, 875, 869, 876, 869, 875, 870, 864, 865, 871, 864, 872, 865, 864, 861, 872, 877, 873, 868, 873, 877, 874, 875, 868, 873, 868, 875, 876, 874, 869, 870, 869, 874, 877, 875, 874, 870, 874, 875, 873, 879, 866, 862, 866, 879, 881, 882, 863, 867, 863, 882, 880, 881, 867, 866, 867, 881, 882, 880, 860, 863, 860, 880, 878, 878, 862, 860, 862, 878, 879, 884, 886, 883, 886, 884, 887, 889, 895, 885, 895, 889, 888, 894, 886, 887, 886, 894, 890, 889, 894, 888, 894, 889, 890, 883, 895, 884, 895, 883, 885, 892, 891, 899, 891, 892, 900, 898, 892, 899, 892, 898, 893, 887, 888, 894, 887, 895, 888, 887, 884, 895, 900, 896, 891, 896, 900, 897, 898, 891, 896, 891, 898, 899, 897, 892, 893, 892, 897, 900, 898, 897, 893, 897, 898, 896, 902, 889, 885, 889, 902, 904, 905, 886, 890, 886, 905, 903, 904, 890, 889, 890, 904, 905, 903, 883, 886, 883, 903, 901, 901, 885, 883, 885, 901, 902, 907, 909, 906, 909, 907, 910, 912, 918, 908, 918, 912, 911, 917, 909, 910, 909, 917, 913, 912, 917, 911, 917, 912, 913, 906, 918, 907, 918, 906, 908, 915, 914, 922, 914, 915, 923, 921, 915, 922, 915, 921, 916, 910, 911, 917, 910, 918, 911, 910, 907, 918, 923, 919, 914, 919, 923, 920, 921, 914, 919, 914, 921, 922, 920, 915, 916, 915, 920, 923, 921, 920, 916, 920, 921, 919, 925, 912, 908, 912, 925, 927, 928, 909, 913, 909, 928, 926, 927, 913, 912, 913, 927, 928, 926, 906, 909, 906, 926, 924, 924, 908, 906, 908, 924, 925, 930, 932, 929, 932, 930, 933, 935, 941, 931, 941, 935, 934, 940, 932, 933, 932, 940, 936, 935, 940, 934, 940, 935, 936, 929, 941, 930, 941, 929, 931, 938, 937, 945, 937, 938, 946, 944, 938, 945, 938, 944, 939, 933, 934, 940, 933, 941, 934, 933, 930, 941, 946, 942, 937, 942, 946, 943, 944, 937, 942, 937, 944, 945, 943, 938, 939, 938, 943, 946, 944, 943, 939, 943, 944, 942, 948, 935, 931, 935, 948, 950, 951, 932, 936, 932, 951, 949, 950, 936, 935, 936, 950, 951, 949, 929, 932, 929, 949, 947, 947, 931, 929, 931, 947, 948, 953, 955, 952, 955, 953, 956, 958, 964, 954, 964, 958, 957, 963, 955, 956, 955, 963, 959, 958, 963, 957, 963, 958, 959, 952, 964, 953, 964, 952, 954, 961, 960, 968, 960, 961, 969, 967, 961, 968, 961, 967, 962, 956, 957, 963, 956, 964, 957, 956, 953, 964, 969, 965, 960, 965, 969, 966, 967, 960, 965, 960, 967, 968, 966, 961, 962, 961, 966, 969, 967, 966, 962, 966, 967, 965, 971, 958, 954, 958, 971, 973, 974, 955, 959, 955, 974, 972, 973, 959, 958, 959, 973, 974, 972, 952, 955, 952, 972, 970, 970, 954, 952, 954, 970, 971, 976, 978, 975, 978, 976, 979, 981, 987, 977, 987, 981, 980, 986, 978, 979, 978, 986, 982, 981, 986, 980, 986, 981, 982, 975, 987, 976, 987, 975, 977, 984, 983, 991, 983, 984, 992, 990, 984, 991, 984, 990, 985, 979, 980, 986, 979, 987, 980, 979, 976, 987, 992, 988, 983, 988, 992, 989, 990, 983, 988, 983, 990, 991, 989, 984, 985, 984, 989, 992, 990, 989, 985, 989, 990, 988, 994, 981, 977, 981, 994, 996, 997, 978, 982, 978, 997, 995, 996, 982, 981, 982, 996, 997, 995, 975, 978, 975, 995, 993, 993, 977, 975, 977, 993, 994, 999, 1001, 998, 1001, 999, 1002, 1004, 1010, 1000, 1010, 1004, 1003, 1009, 1001, 1002, 1001, 1009, 1005, 1004, 1009, 1003, 1009, 1004, 1005, 998, 1010, 999, 1010, 998, 1000, 1007, 1006, 1014, 1006, 1007, 1015, 1013, 1007, 1014, 1007, 1013, 1008, 1002, 1003, 1009, 1002, 1010, 1003, 1002, 999, 1010, 1015, 1011, 1006, 1011, 1015, 1012, 1013, 1006, 1011, 1006, 1013, 1014, 1012, 1007, 1008, 1007, 1012, 1015, 1013, 1012, 1008, 1012, 1013, 1011, 1017, 1004, 1000, 1004, 1017, 1019, 1020, 1001, 1005, 1001, 1020, 1018, 1019, 1005, 1004, 1005, 1019, 1020, 1018, 998, 1001, 998, 1018, 1016, 1016, 1000, 998, 1000, 1016, 1017, 1022, 0x0400, 1021, 0x0400, 1022, 1025, 1027, 1033, 1023, 1033, 1027, 1026, 1032, 0x0400, 1025, 0x0400, 1032, 0x0404, 1027, 1032, 1026, 1032, 1027, 0x0404, 1021, 1033, 1022, 1033, 1021, 1023, 1030, 1029, 1037, 1029, 1030, 1038, 1036, 1030, 1037, 1030, 1036, 1031, 1025, 1026, 1032, 1025, 1033, 1026, 1025, 1022, 1033, 1038, 1034, 1029, 1034, 1038, 1035, 1036, 1029, 1034, 1029, 1036, 1037, 1035, 1030, 1031, 1030, 1035, 1038, 1036, 1035, 1031, 1035, 1036, 1034, 1040, 1027, 1023, 1027, 1040, 1042, 1043, 0x0400, 0x0404, 0x0400, 1043, 1041, 1042, 0x0404, 1027, 0x0404, 1042, 1043, 1041, 1021, 0x0400, 1021, 1041, 1039, 1039, 1023, 1021, 1023, 1039, 1040, 1045, 1047, 1044, 1047, 1045, 1048, 1050, 1056, 1046, 1056, 1050, 1049, 1055, 1047, 1048, 1047, 1055, 1051, 1050, 1055, 1049, 1055, 1050, 1051, 1044, 1056, 1045, 1056, 1044, 1046, 1053, 1052, 1060, 1052, 1053, 1061, 1059, 1053, 1060, 1053, 1059, 1054, 1048, 1049, 1055, 1048, 1056, 1049, 1048, 1045, 1056, 1061, 1057, 1052, 1057, 1061, 1058, 1059, 1052, 1057, 1052, 1059, 1060, 1058, 1053, 1054, 1053, 1058, 1061, 1059, 1058, 1054, 1058, 1059, 1057, 1063, 1050, 1046, 1050, 1063, 1065, 1066, 1047, 1051, 1047, 1066, 1064, 1065, 1051, 1050, 1051, 1065, 1066, 1064, 1044, 1047, 1044, 1064, 1062, 1062, 1046, 1044, 1046, 1062, 1063, 1068, 1070, 1067, 1070, 1068, 1071, 1073, 1079, 1069, 1079, 1073, 1072, 1078, 1070, 1071, 1070, 1078, 1074, 1073, 1078, 1072, 1078, 1073, 1074, 1067, 1079, 1068, 1079, 1067, 1069, 1076, 1075, 1083, 1075, 1076, 1084, 1082, 1076, 1083, 1076, 1082, 1077, 1071, 1072, 1078, 1071, 1079, 1072, 1071, 1068, 1079, 1084, 1080, 1075, 1080, 1084, 1081, 1082, 1075, 1080, 1075, 1082, 1083, 1081, 1076, 1077, 1076, 1081, 1084, 1082, 1081, 1077, 1081, 1082, 1080, 1086, 1073, 1069, 1073, 1086, 1088, 1089, 1070, 1074, 1070, 1089, 1087, 1088, 1074, 1073, 1074, 1088, 1089, 1087, 1067, 1070, 1067, 1087, 1085, 1085, 1069, 1067, 1069, 1085, 1086, 1091, 1093, 1090, 1093, 1091, 1094, 1096, 1102, 1092, 1102, 1096, 1095, 1101, 1093, 1094, 1093, 1101, 1097, 1096, 1101, 1095, 1101, 1096, 1097, 1090, 1102, 1091, 1102, 1090, 1092, 1099, 1098, 1106, 1098, 1099, 1107, 1105, 1099, 1106, 1099, 1105, 1100, 1094, 1095, 1101, 1094, 1102, 1095, 1094, 1091, 1102, 1107, 1103, 1098, 1103, 1107, 1104, 1105, 1098, 1103, 1098, 1105, 1106, 1104, 1099, 1100, 1099, 1104, 1107, 1105, 1104, 1100, 1104, 1105, 1103, 1109, 1096, 1092, 1096, 1109, 1111, 1112, 1093, 1097, 1093, 1112, 1110, 1111, 1097, 1096, 1097, 1111, 1112, 1110, 1090, 1093, 1090, 1110, 1108, 1108, 1092, 1090, 1092, 1108, 1109, 1114, 1116, 1113, 1116, 1114, 1117, 1119, 1125, 1115, 1125, 1119, 1118, 1124, 1116, 1117, 1116, 1124, 1120, 1119, 1124, 1118, 1124, 1119, 1120, 1113, 1125, 1114, 1125, 1113, 1115, 1122, 1121, 1129, 1121, 1122, 1130, 1128, 1122, 1129, 1122, 1128, 1123, 1117, 1118, 1124, 1117, 1125, 1118, 1117, 1114, 1125, 1130, 1126, 1121, 1126, 1130, 1127, 1128, 1121, 1126, 1121, 1128, 1129, 1127, 1122, 1123, 1122, 1127, 1130, 1128, 1127, 1123, 1127, 1128, 1126, 1132, 1119, 1115, 1119, 1132, 1134, 1135, 1116, 1120, 1116, 1135, 1133, 1134, 1120, 1119, 1120, 1134, 1135, 1133, 1113, 1116, 1113, 1133, 1131, 1131, 1115, 1113, 1115, 1131, 1132, 1137, 1139, 1136, 1139, 1137, 1140, 1142, 1148, 1138, 1148, 1142, 1141, 1147, 1139, 1140, 1139, 1147, 1143, 1142, 1147, 1141, 1147, 1142, 1143, 1136, 1148, 1137, 1148, 1136, 1138, 1145, 1144, 1152, 1144, 1145, 1153, 1151, 1145, 1152, 1145, 1151, 1146, 1140, 1141, 1147, 1140, 1148, 1141, 1140, 1137, 1148, 1153, 1149, 1144, 1149, 1153, 1150, 1151, 1144, 1149, 1144, 1151, 1152, 1150, 1145, 1146, 1145, 1150, 1153, 1151, 1150, 1146, 1150, 1151, 1149, 1155, 1142, 1138, 1142, 1155, 1157, 1158, 1139, 1143, 1139, 1158, 1156, 1157, 1143, 1142, 1143, 1157, 1158, 1156, 1136, 1139, 1136, 1156, 1154, 1154, 1138, 1136, 1138, 1154, 1155, 1160, 1162, 1159, 1162, 1160, 1163, 1165, 1171, 1161, 1171, 1165, 1164, 1170, 1162, 1163, 1162, 1170, 1166, 1165, 1170, 1164, 1170, 1165, 1166, 1159, 1171, 1160, 1171, 1159, 1161, 1168, 1167, 1175, 1167, 1168, 1176, 1174, 1168, 1175, 1168, 1174, 1169, 1163, 1164, 1170, 1163, 1171, 1164, 1163, 1160, 1171, 1176, 1172, 1167, 1172, 1176, 1173, 1174, 1167, 1172, 1167, 1174, 1175, 1173, 1168, 1169, 1168, 1173, 1176, 1174, 1173, 1169, 1173, 1174, 1172, 1178, 1165, 1161, 1165, 1178, 1180, 1181, 1162, 1166, 1162, 1181, 1179, 1180, 1166, 1165, 1166, 1180, 1181, 1179, 1159, 1162, 1159, 1179, 1177, 1177, 1161, 1159, 1161, 1177, 1178, 1267, 1299, 1301, 1267, 1314, 1299, 1267, 1316, 1314, 1267, 1265, 1316, 1316, 1251, 1250, 1316, 1190, 1251, 1265, 1190, 1316, 1268, 1190, 1265, 1840, 1704, 1791, 1704, 1840, 1241, 1307, 1182, 1305, 1182, 1307, 1183, 1746, 1720, 1674, 1720, 1737, 1735, 1746, 1737, 1720, 1746, 1698, 1737, 1796, 1776, 1801, 1796, 1781, 1776, 1780, 1601, 1768, 1780, 1381, 1601, 1381, 1399, 1600, 1780, 1399, 1381, 1781, 1399, 1780, 1796, 1399, 1781, 1796, 1788, 1399, 1796, 1787, 1788, 1830, 1770, 1700, 1830, 1786, 1770, 1830, 1802, 1786, 1189, 1190, 1268, 1189, 1188, 1190, 1189, 1187, 1188, 1189, 1264, 1187, 1263, 1191, 1269, 1263, 1192, 1191, 1263, 1189, 1192, 1263, 1264, 1189, 1388, 1752, 1751, 1388, 1193, 1752, 1388, 1826, 1193, 1684, 1256, 1194, 1256, 1684, 1763, 1634, 1632, 1680, 1632, 1634, 1195, 1261, 1293, 1254, 1196, 1740, 1757, 1740, 1196, 1197, 1197, 1194, 1256, 1194, 1197, 1196, 1195, 1682, 1683, 1682, 1195, 1634, 1679, 1198, 1678, 1198, 1679, 1257, 1294, 1669, 1719, 1669, 1294, 1764, 1668, 1719, 1669, 1719, 1668, 1695, 1839, 1695, 1668, 1695, 1839, 1753, 1739, 1823, 1202, 1823, 1739, 1193, 1684, 1203, 1633, 1203, 1684, 1834, 1617, 1199, 1200, 1199, 1617, 1761, 1823, 1774, 1186, 1833, 1823, 1829, 1823, 1833, 1202, 1202, 1617, 1200, 1617, 1202, 1833, 1204, 1199, 1761, 1199, 1204, 1762, 1204, 1681, 1763, 1204, 1764, 1681, 1204, 1761, 1764, 1763, 1762, 1204, 1762, 1763, 1684, 1294, 1681, 1764, 1681, 1294, 1675, 1824, 1836, 1765, 1836, 1824, 1203, 1739, 1205, 1206, 1205, 1739, 1201, 1752, 1739, 1206, 1739, 1752, 1193, 1765, 1205, 1201, 1205, 1765, 1836, 1829, 1753, 1839, 1753, 1829, 1399, 1622, 1740, 1245, 1740, 1622, 1757, 1674, 1718, 1631, 1718, 1674, 1686, 1458, 1207, 1208, 1207, 1458, 1456, 1209, 1210, 1212, 1210, 1209, 1211, 1210, 1324, 1212, 1324, 1210, 1213, 1426, 1209, 1214, 1209, 1426, 1211, 1215, 1472, 1471, 1472, 1215, 1216, 1664, 0x0707, 1641, 1664, 1809, 0x0707, 1664, 1482, 1809, 1664, 1401, 1482, 1318, 1217, 1219, 1217, 1318, 1218, 1406, 1410, 1404, 1410, 1406, 1220, 1406, 1274, 1220, 1274, 1406, 1221, 1403, 1274, 1221, 1274, 1403, 1222, 1726, 1701, 1702, 1701, 1726, 1717, 1229, 1390, 1230, 1389, 1517, 1231, 1569, 1273, 1282, 1273, 1569, 1771, 1779, 1827, 1793, 1827, 1779, 1520, 1232, 1708, 1233, 1232, 1706, 1708, 1232, 1707, 1706, 1232, 1575, 1721, 1575, 1232, 1233, 1707, 1721, 1730, 1721, 1707, 1232, 1629, 1755, 1365, 1755, 1629, 1235, 1766, 1767, 1687, 1239, 1589, 1806, 1589, 1239, 1240, 1835, 1771, 1704, 1241, 1835, 1704, 1671, 1311, 1312, 1795, 1311, 1671, 1771, 1311, 1795, 1835, 1311, 1771, 1241, 1311, 1835, 1618, 1630, 1722, 1630, 1618, 1772, 1826, 1823, 1193, 1823, 1826, 1831, 1384, 1773, 1382, 1773, 1384, 1315, 1832, 1242, 1797, 1242, 1832, 1243, 1843, 1705, 1815, 1842, 1674, 1631, 1674, 1842, 1716, 1794, 1831, 1826, 1186, 1794, 1825, 1239, 1244, 1240, 1244, 1239, 1469, 1675, 1677, 1681, 1677, 1675, 1246, 1677, 1758, 1676, 1758, 1677, 1246, 1257, 1758, 1198, 1758, 1257, 1676, 1295, 1247, 1249, 1247, 1295, 1248, 1295, 1251, 1248, 1251, 1295, 1250, 1679, 1249, 1247, 1249, 1679, 1678, 1252, 1680, 1632, 1680, 1252, 1253, 1254, 1741, 1255, 1741, 1254, 1293, 1681, 1256, 1763, 1256, 1676, 1257, 1256, 1677, 1676, 1256, 1681, 1677, 1723, 1253, 1252, 1682, 1260, 1683, 1682, 1258, 1260, 1682, 1259, 1258, 1680, 1723, 1634, 1723, 1680, 1253, 1259, 1757, 1622, 1757, 1259, 1682, 1757, 1634, 1194, 1634, 1757, 1682, 1757, 1194, 1196, 1723, 1194, 1634, 1723, 1684, 1194, 1723, 1261, 1684, 1266, 1265, 1267, 1266, 1268, 1265, 1266, 1189, 1268, 1266, 1192, 1189, 1269, 1262, 1263, 1262, 1269, 1270, 1272, 1183, 1685, 1183, 1272, 1309, 1685, 1674, 1720, 1674, 1685, 1686, 1759, 1641, 0x0707, 1759, 1640, 1641, 1759, 1557, 1640, 1481, 1636, 1642, 1481, 1813, 1636, 1481, 1273, 1813, 1277, 1184, 1487, 1184, 1277, 1485, 1278, 1219, 1217, 1219, 1278, 1488, 1801, 1805, 1288, 1805, 1801, 1776, 1645, 1768, 1601, 1768, 1645, 1777, 1733, 1770, 1786, 1733, 1547, 1770, 1733, 1291, 1547, 1733, 1598, 1291, 1732, 1787, 1796, 1787, 1732, 1789, 1306, 1307, 1305, 1307, 1306, 1308, 1310, 1183, 1309, 1183, 1310, 1182, 1270, 1259, 1262, 1270, 1258, 1259, 1270, 1260, 1258, 1293, 1723, 1252, 1723, 1293, 1261, 1572, 1350, 1313, 1350, 1572, 1346, 1623, 1675, 1396, 1675, 1623, 1246, 1767, 1635, 1687, 1313, 1623, 1572, 1313, 1246, 1623, 1246, 1760, 1758, 1313, 1760, 1246, 1271, 1299, 1314, 1299, 1271, 1296, 1297, 1271, 1298, 1271, 1297, 1296, 1267, 1300, 1266, 1300, 1267, 1301, 1302, 1303, 1304, 1303, 1302, 1272, 1298, 1304, 1297, 1304, 1298, 1302, 1191, 1266, 1300, 1266, 1191, 1192, 1309, 1306, 1310, 1306, 1309, 1308, 1590, 1312, 1311, 1590, 1772, 1312, 1590, 1630, 1772, 1488, 1320, 1321, 1320, 1488, 1319, 1322, 1209, 1323, 1322, 1214, 1209, 1322, 1460, 1214, 1282, 1837, 1569, 1840, 1791, 1837, 1326, 1329, 1330, 1326, 1327, 1329, 1326, 1325, 1327, 1326, 1328, 1325, 1327, 1691, 1624, 1327, 1394, 1691, 1327, 1325, 1394, 1328, 1394, 1325, 1394, 1328, 1391, 1392, 1328, 1326, 1328, 1392, 1391, 1331, 1326, 1330, 1326, 1331, 1392, 1571, 1330, 1329, 1330, 1571, 1331, 1327, 1571, 1329, 1571, 1327, 1624, 1332, 1333, 1335, 1333, 1332, 1334, 1336, 1333, 1334, 1333, 1336, 1393, 1336, 1395, 1393, 1395, 1336, 1337, 1338, 1395, 1337, 1395, 1338, 1396, 1339, 1338, 1340, 1338, 1339, 1396, 1341, 1339, 1340, 1339, 1341, 1397, 1341, 1623, 1397, 1623, 1341, 1342, 1343, 1623, 1342, 1623, 1343, 1572, 1335, 1344, 1332, 1344, 1335, 1345, 1346, 1343, 1347, 1343, 1346, 1572, 1345, 1348, 1344, 1348, 1345, 1625, 1349, 1346, 1347, 1346, 1349, 1350, 1351, 1313, 1352, 1313, 1351, 1760, 1349, 1313, 1350, 1313, 1349, 1352, 1351, 1353, 1760, 1353, 1351, 1354, 1647, 1355, 1818, 1355, 1647, 1673, 1647, 1348, 1625, 1348, 1647, 1818, 1356, 1353, 1354, 1353, 1356, 1357, 1294, 1359, 1692, 1359, 1294, 1358, 1360, 1673, 1672, 1673, 1360, 1355, 1356, 1738, 1360, 1738, 1356, 1619, 1672, 1356, 1360, 1356, 1672, 1357, 1573, 1574, 1621, 1574, 1573, 1620, 1359, 1366, 1724, 1364, 1365, 1755, 1749, 1365, 1364, 1366, 1365, 1749, 1366, 1358, 1365, 1359, 1358, 1366, 1358, 1629, 1365, 1629, 1358, 1294, 1635, 1724, 1366, 1724, 1635, 1693, 1635, 1749, 1687, 1749, 1635, 1366, 1398, 1755, 1235, 1755, 1398, 1363, 1749, 1689, 1687, 1749, 1364, 1689, 1742, 1398, 1688, 1398, 1742, 1363, 1689, 1648, 1710, 1648, 1689, 1364, 1690, 1742, 1688, 1742, 1690, 1362, 1648, 1783, 1710, 1783, 1648, 1361, 1236, 1748, 1367, 1769, 1748, 1236, 1236, 1649, 1694, 1649, 1236, 1367, 1361, 1782, 1783, 1369, 1370, 1371, 1370, 1369, 1368, 1748, 1769, 1725, 1748, 1372, 1373, 1372, 1748, 1725, 1785, 1371, 1374, 1371, 1785, 1369, 1691, 1662, 1375, 1662, 1376, 1377, 1691, 1376, 1662, 1725, 1662, 1372, 1662, 1725, 1375, 1766, 1377, 1376, 1766, 1374, 1377, 1766, 1785, 1374, 1743, 1367, 1748, 1367, 1743, 1649, 1743, 1748, 1373, 1368, 1378, 1370, 1378, 1368, 1784, 1724, 1692, 1359, 1692, 1724, 1693, 1766, 1691, 1767, 1691, 1766, 1376, 1380, 1600, 1379, 1600, 1380, 1381, 1713, 1804, 1714, 1804, 1713, 1715, 1743, 1694, 1649, 1743, 1690, 1694, 1690, 1373, 1362, 1373, 1690, 1743, 1384, 1385, 1315, 1385, 1384, 1383, 1243, 1383, 1242, 1383, 1243, 1385, 1422, 1421, 1420, 1422, 1604, 1421, 1317, 1604, 1422, 1826, 1803, 1186, 1388, 1803, 1826, 1803, 1388, 1712, 1705, 1811, 1838, 1235, 1294, 1719, 1294, 1235, 1629, 1719, 1398, 1235, 1398, 1719, 1695, 1688, 1695, 1753, 1695, 1688, 1398, 1670, 1788, 1802, 1399, 1688, 1753, 1399, 1690, 1688, 1399, 1694, 1690, 1788, 1694, 1399, 1788, 1236, 1694, 1375, 1624, 1691, 1624, 1811, 1705, 1375, 1811, 1624, 1725, 1811, 1375, 1769, 1811, 1725, 1769, 1709, 1811, 1236, 1709, 1769, 1788, 1709, 1236, 1670, 1709, 1788, 1737, 1696, 1735, 1696, 1737, 1736, 1221, 1404, 1405, 1404, 1221, 1406, 1405, 1790, 1463, 1405, 1408, 1790, 1405, 1409, 1408, 1410, 1405, 1404, 1405, 1410, 1409, 1411, 1403, 1402, 1403, 1411, 1222, 1407, 1411, 1402, 1411, 1407, 1412, 1276, 1407, 1319, 1407, 1276, 1412, 1479, 1657, 1484, 1657, 1479, 1650, 1698, 1736, 1737, 1736, 1698, 1697, 1583, 1414, 1584, 1414, 1583, 1415, 1414, 1746, 1584, 1746, 1414, 1698, 1583, 1602, 1415, 1602, 1583, 1422, 1320, 1464, 1417, 1320, 1798, 1464, 1320, 1463, 1798, 1417, 1582, 1579, 1582, 1417, 1416, 1317, 1416, 1418, 1416, 1317, 1582, 1317, 1419, 1614, 1419, 1317, 1418, 1420, 1423, 1603, 1423, 1420, 1421, 1603, 1422, 1420, 1422, 1603, 1602, 1423, 1606, 1435, 1429, 1424, 1430, 1424, 1429, 1427, 1424, 1434, 1430, 1434, 1424, 1425, 1460, 1426, 1214, 1426, 1460, 1462, 1427, 1442, 1444, 1442, 1427, 1429, 1425, 1606, 1434, 1606, 1425, 1435, 1433, 1447, 1436, 1447, 1433, 1448, 1437, 1447, 1438, 1447, 1437, 1436, 1437, 1446, 1431, 1446, 1437, 1438, 1446, 1432, 1431, 1432, 1446, 1445, 1445, 1439, 1432, 1439, 1445, 1440, 1440, 1441, 1439, 1441, 1440, 1428, 1442, 1616, 1444, 1616, 1442, 1443, 1446, 1440, 1445, 1446, 1447, 1440, 1438, 1447, 1446, 1608, 1605, 1451, 1605, 1608, 1450, 1443, 1453, 1452, 1453, 1443, 1442, 1450, 1452, 1453, 1452, 1450, 1608, 1453, 1605, 1450, 1605, 1453, 1454, 1207, 1455, 1457, 1455, 1207, 1456, 1324, 1458, 1208, 1458, 1324, 1213, 1323, 1455, 1459, 1455, 1323, 1457, 1460, 1461, 1462, 1461, 1460, 1322, 1323, 1461, 1322, 1461, 1323, 1459, 1463, 1790, 1798, 1636, 1671, 1778, 1671, 1636, 1795, 1636, 1813, 1795, 1465, 1466, 1476, 1466, 1465, 1467, 1806, 1778, 1239, 1806, 1636, 1778, 1468, 1469, 1470, 1468, 1238, 1469, 1468, 1806, 1238, 1806, 1810, 1636, 1468, 1810, 1806, 1471, 1470, 1215, 1470, 1471, 1468, 1472, 1473, 1554, 1473, 1472, 1216, 1554, 1466, 1467, 1466, 1554, 1473, 1637, 1652, 1474, 1652, 1637, 1225, 1653, 1637, 1474, 1637, 1653, 1638, 1653, 1639, 1638, 1653, 1480, 1639, 1653, 1656, 1480, 1653, 1475, 1656, 1656, 1652, 1225, 1652, 1656, 1475, 1656, 1225, 1224, 1643, 1654, 1279, 1654, 1643, 1655, 1477, 1654, 1400, 1654, 1477, 1279, 1775, 1400, 1651, 1400, 1775, 1477, 1640, 1651, 1650, 1651, 1640, 1775, 1413, 1227, 1646, 1227, 1413, 1478, 1227, 1663, 1628, 1663, 1227, 1478, 1650, 1641, 1640, 1650, 1664, 1641, 1650, 1479, 1664, 1483, 1480, 1223, 1480, 1483, 1639, 1665, 1482, 1401, 1665, 1642, 1482, 1665, 1481, 1642, 1224, 1665, 1656, 1665, 1224, 1481, 1226, 1484, 1657, 1226, 1223, 1484, 1226, 1483, 1223, 1655, 1628, 1663, 1628, 1655, 1643, 1657, 1646, 1226, 1646, 1657, 1413, 1485, 1185, 1184, 1185, 1485, 1287, 1485, 1520, 1287, 1485, 1486, 1520, 1485, 1277, 1486, 1841, 1277, 1487, 1277, 1841, 1486, 1488, 1489, 1275, 1489, 1488, 1278, 1218, 1278, 1217, 1278, 1218, 1489, 1491, 1490, 1492, 1494, 1493, 1744, 1490, 1493, 1494, 1491, 1493, 1490, 1497, 1496, 1495, 1496, 1497, 1500, 1501, 1495, 1498, 1495, 1501, 1502, 1501, 1503, 1502, 1503, 1501, 1504, 1779, 1505, 1506, 1505, 1779, 1493, 1507, 1506, 1505, 1506, 1507, 1508, 1509, 1507, 1510, 1507, 1509, 1508, 1512, 1513, 1516, 1512, 1511, 1513, 1512, 1514, 1511, 1512, 1515, 1514, 1494, 1281, 1490, 1281, 1494, 1518, 1513, 1499, 1516, 1499, 1513, 1498, 1492, 1281, 0x0500, 1281, 1492, 1490, 1827, 1494, 1744, 1494, 1827, 1518, 1779, 1287, 1520, 1779, 1508, 1287, 1779, 1506, 1508, 1521, 1504, 1519, 1504, 1521, 1503, 0x0500, 1522, 1523, 0x0500, 1521, 1522, 0x0500, 1503, 1521, 1499, 1512, 1516, 1512, 1499, 1496, 0x0505, 1497, 1524, 1500, 1514, 1515, 1497, 1514, 1500, 0x0505, 1514, 1497, 1496, 1515, 1512, 1515, 1496, 1500, 1511, 1510, 1513, 1510, 1511, 1509, 1497, 1283, 1524, 1502, 1497, 1495, 1497, 1502, 1283, 1514, 0x0505, 1286, 1511, 1286, 1509, 1286, 1511, 1514, 1492, 1523, 1491, 1523, 1492, 0x0500, 1701, 1717, 1644, 1726, 1702, 1228, 1728, 1626, 1561, 1566, 1568, 1559, 1703, 1525, 1699, 1525, 1703, 1526, 1699, 1727, 1558, 1727, 1699, 1525, 1230, 1517, 1229, 1517, 1230, 1231, 1779, 1744, 1493, 1779, 1827, 1744, 1779, 1793, 1827, 1528, 1658, 1529, 1658, 1528, 1580, 1530, 1581, 1532, 1581, 1530, 1531, 1530, 1658, 1531, 1658, 1530, 1529, 1530, 1533, 1529, 1533, 1532, 1534, 1532, 1533, 1530, 1529, 1534, 1528, 1534, 1529, 1533, 1534, 1580, 1528, 1534, 1581, 1580, 1534, 1532, 1581, 1535, 1563, 0x0600, 1563, 1535, 1564, 1387, 1537, 1538, 1387, 0x0600, 1537, 1387, 1535, 0x0600, 1816, 1540, 1817, 1540, 1816, 1627, 1234, 0x0606, 1577, 1234, 1541, 0x0606, 1541, 1543, 1576, 1234, 1543, 1541, 1545, 1591, 1590, 1591, 1545, 1546, 1547, 1700, 1770, 1700, 1547, 1544, 1547, 1545, 1544, 1545, 1547, 1289, 1545, 1292, 1546, 1292, 1545, 1289, 1781, 1808, 1659, 1808, 1781, 1780, 1659, 1776, 1781, 1776, 1659, 1805, 1750, 1810, 1468, 1807, 1666, 1660, 1809, 1666, 1807, 1809, 1549, 1666, 1482, 1549, 1809, 1810, 1549, 1482, 1750, 1549, 1810, 1790, 1745, 1798, 1810, 1642, 1636, 1642, 1810, 1482, 1807, 0x0707, 1809, 0x0707, 1807, 1759, 1557, 1807, 1550, 1807, 1557, 1759, 1800, 1550, 1812, 1550, 1800, 1557, 1812, 1408, 1800, 1408, 1812, 1790, 1464, 1465, 1476, 1465, 1464, 1798, 1701, 1666, 1549, 1666, 1701, 1644, 1701, 1750, 1702, 1750, 1701, 1549, 1750, 1228, 1702, 1228, 1750, 1548, 1661, 1228, 1548, 1228, 1661, 1727, 1558, 1661, 1555, 1661, 1558, 1727, 1553, 1558, 1555, 1553, 1527, 1558, 1553, 1568, 1527, 1559, 1553, 1552, 1553, 1559, 1568, 1560, 1556, 1561, 1560, 1552, 1556, 1560, 1559, 1552, 1560, 1567, 1559, 1556, 1728, 1561, 1728, 1556, 1745, 1551, 1728, 1745, 1728, 1551, 1703, 1526, 1551, 1660, 1551, 1526, 1703, 1644, 1660, 1666, 1660, 1644, 1526, 1562, 1387, 1538, 1387, 1562, 1386, 1386, 1563, 1564, 1386, 1565, 1563, 1386, 1562, 1565, 1565, 1538, 1537, 1538, 1565, 1562, 1537, 1563, 1565, 1563, 1537, 0x0600, 1567, 1566, 1559, 1567, 1699, 1566, 1626, 1560, 1561, 1699, 1560, 1626, 1567, 1560, 1699, 1728, 1699, 1626, 1699, 1728, 1703, 1527, 1699, 1558, 1527, 1566, 1699, 1527, 1568, 1566, 1837, 1771, 1569, 1771, 1837, 1828, 1828, 1791, 1704, 1791, 1828, 1837, 1738, 1620, 1573, 1620, 1738, 1619, 1621, 1734, 1570, 1734, 1621, 1574, 1734, 1620, 1619, 1620, 1734, 1574, 1738, 1621, 1570, 1621, 1738, 1573, 1234, 1540, 1627, 1540, 1234, 1577, 1539, 1541, 1578, 1541, 1539, 0x0606, 1817, 1541, 1576, 1541, 1817, 1578, 1576, 1816, 1817, 1816, 1576, 1543, 1706, 1730, 1729, 1730, 1706, 1707, 1233, 1756, 1575, 1756, 1233, 1708, 1721, 1729, 1730, 1721, 1756, 1729, 1721, 1575, 1756, 1539, 1577, 0x0606, 1577, 1539, 1540, 1422, 1582, 1317, 1582, 1422, 1583, 1731, 1586, 1709, 1586, 1667, 1709, 1667, 1586, 1588, 1667, 1811, 1709, 1586, 1587, 1588, 1587, 1586, 1731, 1588, 1585, 1667, 1585, 1588, 1587, 1712, 1618, 1722, 1712, 1751, 1618, 1712, 1388, 1751, 1645, 1381, 1714, 1381, 1645, 1601, 1782, 1710, 1783, 1710, 1782, 1784, 1689, 1784, 1368, 1784, 1689, 1710, 1687, 1368, 1369, 1368, 1687, 1689, 1785, 1687, 1369, 1785, 1766, 1687, 1589, 1244, 1237, 1244, 1589, 1240, 1238, 1244, 1469, 1244, 1238, 1237, 1590, 1777, 1630, 1590, 1768, 1777, 1590, 1808, 1768, 1590, 1591, 1808, 1808, 1780, 1768, 1288, 1796, 1801, 1796, 1288, 1732, 1659, 1288, 1805, 1732, 1747, 1789, 1747, 1594, 1595, 1747, 1593, 1594, 1732, 1593, 1747, 1288, 1593, 1732, 1288, 1592, 1593, 1659, 1592, 1288, 1659, 1292, 1592, 1292, 1591, 1546, 1659, 1591, 1292, 1659, 1808, 1591, 1596, 1594, 1593, 1594, 1596, 1597, 1595, 1291, 1598, 1595, 1597, 1291, 1595, 1594, 1597, 1597, 1290, 1291, 1290, 1597, 1596, 1593, 1290, 1596, 1290, 1593, 1592, 1747, 1802, 1788, 1802, 1595, 1599, 1747, 1595, 1802, 1599, 1786, 1802, 1786, 1599, 1733, 1599, 1598, 1733, 1598, 1599, 1595, 1789, 1788, 1787, 1788, 1789, 1747, 1380, 1754, 1713, 1754, 1380, 1379, 1379, 1711, 1754, 1711, 1379, 1600, 1754, 1803, 1712, 1803, 1754, 1711, 1712, 1713, 1754, 1712, 1715, 1713, 1712, 1722, 1715, 1777, 1714, 1804, 1714, 1777, 1645, 1804, 1630, 1777, 1722, 1804, 1715, 1804, 1722, 1630, 1607, 1605, 1454, 1605, 1607, 1449, 1451, 1452, 1608, 1451, 1615, 1452, 1451, 1613, 1615, 1609, 1610, 1612, 1610, 1609, 1611, 1419, 1609, 1614, 1609, 1419, 1611, 1615, 1443, 1452, 1443, 1615, 1616, 1284, 1218, 1318, 1319, 1402, 1320, 1402, 1319, 1407, 1208, 1457, 1324, 1457, 1208, 1207, 1209, 1324, 1323, 1324, 1209, 1212, 1324, 1457, 1323, 1716, 1746, 1674, 1245, 1248, 1188, 1248, 1245, 1247, 1622, 1188, 1187, 1188, 1622, 1245, 1380, 1714, 1381, 1714, 1380, 1713, 1590, 1544, 1545, 1544, 1590, 1311, 1241, 1544, 1311, 1544, 1241, 1700, 1491, 1505, 1493, 1505, 1491, 1519, 1519, 1501, 1498, 1501, 1519, 1504, 1220, 1411, 1412, 1220, 1222, 1411, 1220, 1274, 1222, 1276, 1489, 1412, 1489, 1276, 1275, 1409, 1800, 1408, 1409, 1775, 1800, 1409, 1477, 1775, 1185, 1286, 1284, 1185, 1509, 1286, 1185, 1508, 1509, 1185, 1287, 1508, 1218, 1524, 1283, 1218, 0x0505, 1524, 1218, 1286, 0x0505, 1218, 1284, 1286, 1628, 0x0500, 1281, 1628, 1279, 0x0500, 1628, 1643, 1279, 1484, 1664, 1479, 1664, 1484, 1223, 1227, 1226, 1646, 1226, 1639, 1483, 1227, 1639, 1226, 1227, 1638, 1639, 1281, 1227, 1628, 1227, 1281, 1638, 1413, 1663, 1478, 1663, 1413, 1655, 1657, 1655, 1413, 1655, 1657, 1650, 1477, 1502, 1503, 1502, 1477, 1409, 1283, 1489, 1218, 1489, 1283, 1412, 1410, 1502, 1409, 1502, 1412, 1283, 1410, 1412, 1502, 1410, 1220, 1412, 1526, 1717, 1525, 1717, 1526, 1644, 1472, 1555, 1661, 1556, 1798, 1745, 1552, 1798, 1556, 1552, 1465, 1798, 1552, 1467, 1465, 1553, 1467, 1552, 1553, 1554, 1467, 1555, 1554, 1553, 1472, 1554, 1555, 1548, 1468, 1471, 1468, 1548, 1750, 1548, 1472, 1661, 1472, 1548, 1471, 1727, 1726, 1228, 1726, 1727, 1525, 1717, 1726, 1525, 1696, 1720, 1735, 1720, 1696, 1685, 1736, 1685, 1696, 1736, 1272, 1685, 1736, 1303, 1272, 1697, 1303, 1736, 1308, 1314, 1307, 1314, 1308, 1271, 1647, 1685, 1183, 1685, 1647, 1686, 1647, 1307, 1673, 1307, 1647, 1183, 1332, 1336, 1334, 1617, 1764, 1761, 1764, 1617, 1669, 1839, 1833, 1829, 1833, 1839, 1668, 1668, 1617, 1833, 1617, 1668, 1669, 1202, 1201, 1739, 1201, 1202, 1200, 1824, 1762, 1684, 1765, 1762, 1824, 1762, 1765, 1199, 1200, 1765, 1201, 1765, 1200, 1199, 1320, 1403, 1463, 1403, 1320, 1402, 1405, 1403, 1221, 1403, 1405, 1463, 1275, 1319, 1488, 1319, 1275, 1276, 0x0700, 1488, 1321, 1488, 0x0700, 1219, 0x0700, 1318, 1219, 1318, 0x0700, 1284, 0x0700, 1531, 1658, 1498, 1496, 1499, 1496, 1498, 1495, 1513, 1507, 1505, 1507, 1513, 1510, 1505, 1498, 1513, 1498, 1505, 1519, 1716, 1580, 1746, 1580, 1716, 1658, 1581, 1746, 1580, 1746, 1581, 1584, 1718, 1705, 1843, 1705, 1718, 1686, 1816, 1705, 1686, 1705, 1816, 1543, 1706, 1729, 1705, 1571, 1705, 1729, 1705, 1571, 1624, 1756, 1571, 1729, 1571, 1756, 1335, 1708, 1543, 1234, 1543, 1708, 1706, 1705, 1543, 1706, 1390, 1231, 1230, 1231, 1390, 1389, 1600, 1803, 1711, 1600, 1829, 1803, 1600, 1399, 1829, 1803, 1829, 1186, 1290, 1292, 1289, 1292, 1290, 1592, 1291, 1289, 1547, 1289, 1291, 1290, 1372, 1377, 1374, 1377, 1372, 1662, 1256, 1740, 1197, 1256, 1679, 1740, 1256, 1257, 1679, 1679, 1245, 1740, 1245, 1679, 1247, 1203, 1255, 1741, 1255, 1203, 1834, 1254, 1684, 1261, 1254, 1834, 1684, 1254, 1255, 1834, 1619, 1818, 1734, 1818, 1619, 1356, 1357, 1760, 1353, 1760, 1357, 1672, 1320, 1579, 1321, 1579, 1320, 1417, 1345, 1647, 1625, 1647, 1234, 1627, 1345, 1234, 1647, 1234, 1756, 1708, 1234, 1335, 1756, 1345, 1335, 1234, 1282, 1481, 1224, 1481, 1282, 1273, 1660, 1550, 1807, 1812, 1745, 1790, 1550, 1745, 1812, 1550, 1551, 1745, 1660, 1551, 1550, 1281, 1637, 1638, 1637, 1281, 1518, 1184, 1284, 0x0700, 1284, 1184, 1185, 1395, 1294, 1692, 1395, 1675, 1294, 1395, 1396, 1675, 1397, 1396, 1339, 1396, 1397, 1623, 1635, 1391, 1693, 1394, 1767, 1691, 1391, 1767, 1394, 1635, 1767, 1391, 1333, 1571, 1335, 1571, 1333, 1331, 1395, 1333, 1393, 1333, 1395, 1692, 1693, 1392, 1331, 1392, 1693, 1391, 1693, 1333, 1692, 1333, 1693, 1331, 1337, 1340, 1338, 1340, 1337, 1336, 1342, 1347, 1343, 1347, 1342, 1341, 1356, 1348, 1818, 1354, 1348, 1356, 1348, 1332, 1344, 1332, 1340, 1336, 1348, 1340, 1332, 1348, 1341, 1340, 1341, 1349, 1347, 1348, 1349, 1341, 1354, 1349, 1348, 1349, 1351, 1352, 1354, 1351, 1349, 1648, 1755, 1363, 1755, 1648, 1364, 1477, 0x0500, 1279, 0x0500, 1477, 1503, 1522, 1491, 1523, 1522, 1519, 1491, 1522, 1521, 1519, 1815, 1838, 1814, 1838, 1815, 1705, 1814, 1822, 1815, 1758, 1760, 1198, 1198, 1760, 1672, 1678, 1198, 1672, 1647, 1627, 1686, 1627, 1816, 1686, 1540, 1578, 1817, 1578, 1540, 1539, 1738, 1355, 1360, 1570, 1355, 1738, 1570, 1818, 1355, 1570, 1734, 1818, 1315, 1249, 1678, 1249, 1315, 1385, 1249, 1243, 1295, 1243, 1249, 1385, 1773, 1316, 1250, 1773, 1314, 1316, 1314, 1773, 1315, 1673, 1314, 1315, 1314, 1673, 1307, 1363, 1361, 1648, 1361, 1363, 1742, 1362, 1361, 1742, 1361, 1362, 1782, 1782, 1378, 1784, 1378, 1362, 1373, 1782, 1362, 1378, 1187, 1263, 1262, 1263, 1187, 1264, 1622, 1262, 1259, 1262, 1622, 1187, 1557, 1775, 1640, 1775, 1557, 1800, 1241, 1830, 1700, 1830, 1241, 1819, 1670, 1819, 1820, 1819, 1670, 1830, 1587, 1822, 1585, 1822, 1731, 1821, 1587, 1731, 1822, 1821, 1819, 1390, 1819, 1821, 1820, 1821, 1229, 1822, 1229, 1821, 1390, 1820, 1821, 1731, 1709, 1820, 1731, 1820, 1709, 1670, 1658, 1819, 0x0700, 1819, 1389, 1390, 1658, 1389, 1819, 1814, 1585, 1822, 1838, 1667, 1814, 1667, 1838, 1811, 1667, 1585, 1814, 1251, 1188, 1248, 1188, 1251, 1190, 1224, 1837, 1282, 1225, 1837, 1224, 1840, 1837, 1225, 1637, 1840, 1225, 1840, 1637, 1841, 1841, 1518, 1486, 1518, 1841, 1637, 1486, 1827, 1520, 1827, 1486, 1518, 1487, 1840, 1841, 1241, 0x0700, 1819, 0x0700, 1487, 1184, 1241, 1487, 0x0700, 1840, 1487, 1241, 1612, 1606, 1604, 1612, 1433, 1606, 1433, 1449, 1448, 1612, 1449, 1433, 1451, 1449, 1612, 1605, 1449, 1451, 1451, 1610, 1613, 1610, 1451, 1612, 1607, 1428, 1449, 1428, 1607, 1442, 1441, 1442, 1429, 1442, 1441, 1428, 1453, 1607, 1454, 1607, 1453, 1442, 1449, 1447, 1448, 1428, 1447, 1449, 1440, 1447, 1428, 1606, 1421, 1604, 1421, 1606, 1423, 1830, 1670, 1802, 1716, 1843, 1815, 1843, 1716, 1842, 1429, 1439, 1441, 1429, 1432, 1439, 1437, 1433, 1436, 1433, 1434, 1606, 1437, 1434, 1433, 1431, 1434, 1437, 1431, 1430, 1434, 1432, 1430, 1431, 1429, 1430, 1432, 1583, 1579, 1582, 1579, 0x0700, 1321, 1579, 1531, 0x0700, 1583, 1531, 1579, 1583, 1581, 1531, 1583, 1584, 1581, 1655, 1400, 1654, 1650, 1400, 1655, 1650, 1651, 1400, 1401, 1656, 1665, 1656, 1223, 1480, 1401, 1223, 1656, 1401, 1664, 1223, 1653, 1652, 1475, 1652, 1653, 1474, 1242, 1382, 1797, 1383, 1382, 1242, 1384, 1382, 1383, 1309, 1271, 1308, 1271, 1309, 1298, 1309, 1302, 1298, 1302, 1309, 1272, 1589, 1238, 1806, 1238, 1589, 1237, 1371, 1372, 1374, 1372, 1378, 1373, 1371, 1378, 1372, 1371, 1370, 1378, 1517, 1822, 1229, 1822, 1716, 1815, 1517, 1716, 1822, 1716, 1389, 1658, 1389, 1716, 1517, 1614, 1604, 1317, 1609, 1604, 1614, 1609, 1612, 1604, 1382, 1832, 1797, 1832, 1382, 1773, 1250, 1832, 1773, 1295, 1832, 1250, 1295, 1243, 1832, 1673, 1678, 1672, 1678, 1673, 1315]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Buckingham.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Buckingham.as new file mode 100644 index 0000000..c79e968 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Buckingham.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Buckingham extends Stage3DData { + + public function Buckingham(){ + vertices = new [-142.911, 64.5809, 87.1251, -224.095, 64.5809, 28.9087, -126.973, 64.5809, 64.8986, -208.156, 64.5809, 6.68219, -142.911, -0.000152588, 87.1251, -224.095, -0.000198364, 28.9087, -126.973, -0.000152588, 64.8986, -192.392, 53.5763, 17.9869, -208.156, 68.2785, 6.68227, -89.9807, 53.5763, -124.827, -105.745, 68.2785, -136.131, -192.392, -0.000198364, 17.9869, -208.156, -0.000205994, 6.68225, -89.9807, -0.000198364, -124.827, -97.0881, 61.3525, 11.0961, -98.7742, 61.3525, 9.887, -66.0779, 61.3525, -32.1481, -67.7639, 61.3525, -33.3572, -97.0881, -0.000160217, 11.096, -98.7741, -0.000152588, 9.88702, -66.0778, -0.000152588, -32.1481, -67.7639, -0.000152588, -33.3572, -65.9333, -0.000160217, -32.3497, -131.132, -0.000198364, -79.1036, -30.3052, -0.000160217, -82.0337, -95.5041, -0.000198364, -128.788, -65.9333, 53.5764, -32.3497, -131.132, 53.5764, -79.1036, -30.3052, 53.5764, -82.0337, -95.5041, 53.5764, -128.788, -112.42, 53.5764, -65.6851, -76.7918, 53.5764, -115.369, -65.9333, 61.3525, -32.3497, -112.42, 61.3525, -65.6851, -76.7918, 61.3525, -115.369, -30.3052, 61.3525, -82.0337, -132.716, -0.000160217, 60.78, -197.915, -0.000198364, 14.0261, -162.287, -0.000198364, -35.6579, -132.716, 53.5764, 60.78, -197.915, 53.5764, 14.0261, -97.0881, 53.5764, 11.096, -162.287, 53.5764, -35.6579, -179.203, 53.5764, 27.4446, -143.575, 53.5764, -22.2394, -132.716, 61.3525, 60.7799, -179.203, 61.3525, 27.4446, -143.575, 61.3525, -22.2394, -97.0881, 61.3525, 11.096, -223.045, -0.000205994, 27.4446, -260.581, -0.000228882, 0.527256, -126.597, -0.000228882, -186.316, -223.045, 68.2785, 27.4446, -260.581, 68.2785, 0.527237, -89.0602, 68.2785, -159.399, -126.597, 68.2785, -186.316, -208.625, 68.2785, -71.927, -181.37, 68.2785, -109.933, -143.834, 68.2785, -83.0161, -171.088, 68.2785, -45.0096, -208.625, 76.0254, -71.927, -181.37, 76.0254, -109.933, -143.834, 76.0254, -83.0161, -171.088, 76.0254, -45.0096, -66.4717, -0.000167847, 33.051, -165.934, -0.000228882, -38.2733, -35.4614, -0.000167847, -10.1932, -134.924, -0.000228882, -81.5175, -66.4717, 53.5764, 33.051, -165.934, 53.5764, -38.2733, -35.4614, 53.5764, -10.1932, -134.924, 53.5764, -81.5175, -150.429, 58.8126, -59.8954, -50.9666, 58.8127, 11.4289, -24.5615, 64.5808, -77.9149, -105.745, 64.5808, -136.131, -7.87669, 64.5808, -101.182, -89.0603, 64.5808, -159.399, -24.5615, -0.000221252, -77.9149, -105.745, -0.000236511, -136.131, -89.0602, -0.000236511, -159.399, 34.2819, 54.2082, -245.687, 51.578, 61.3524, -233.382, -3.22913, 59.4437, -193.377, -3.22911, 42.8521, -193.377, 13.9613, 42.8521, -217.349, 13.9613, 59.4437, -217.349, -28.4955, 42.852, -290.348, -48.6473, 42.852, -262.246, -48.6473, -0.000343323, -262.246, -69.9001, 59.4436, -277.486, -48.6473, 59.4436, -262.246, -87.0905, -0.000335693, -253.514, -87.0905, 59.4436, -253.514, -75.6416, 42.852, -245.304, -75.6416, 59.4436, -245.304, -58.6485, 42.8521, -170.345, -37.828, 42.8521, -155.13, -27.9556, 42.8521, -168.639, -15.0843, 42.8521, -193.676, -48.7761, 42.8521, -183.854, -37.828, 48.8757, -155.13, -48.7761, 48.8757, -183.854, -58.6485, 48.8757, -170.345, -27.9556, 48.8757, -168.639, 20.7666, 24.093, -141.444, 42.9299, 64.5808, -239.534, -39.6268, 64.5808, -123.95, -30.785, 61.3525, -117.61, -27.1402, 42.8521, -177.179, -27.1402, 46.5529, -189.833, -39.1961, 42.8521, -185.989, -75.6416, -0.000335693, -245.304, -69.9001, -0.000350952, -277.486, 51.578, 54.2082, -233.382, 34.2819, 61.3524, -245.687, -2.14175, 24.0929, -157.872, -27.1402, 42.8521, -202.487, 20.7666, -0.00025177, -141.444, -48.4685, 42.8521, -130.29, -48.4685, 61.3525, -130.29, -120.881, -0.000312805, -182.217, -120.881, 42.8521, -182.217, -7.87668, 24.093, -101.182, -7.87666, -0.000228882, -101.182, -30.785, 24.093, -117.61, 102.119, 54.2082, -304.423, 62.7859, -0.000228882, -111.312, 94.4914, 44.0646, -155.526, 167.772, -0.000289917, -257.716, 129.831, 54.2082, -284.708, 116.955, -0.000259399, -186.851, 54.9048, 71.098, -180.535, 39.7608, 71.098, -168.348, 63.6389, 71.098, -192.144, 76.4747, 71.098, -182.486, 62.5378, 71.098, -152.144, 67.7406, 71.098, -170.878, 127.147, 71.098, -242.961, 51.578, 71.098, -233.382, 67.7406, 76.098, -170.878, 63.6389, 76.098, -192.144, 54.9048, 76.098, -180.535, 76.4747, 76.098, -182.486, 116.955, 54.2083, -186.851, 81.3323, 54.2083, -137.175, 74.4511, 71.098, -217.109, 81.4974, 71.098, -275.438, 167.772, 54.2083, -257.716, 62.7859, 54.2083, -111.312, 129.832, -0.000312805, -284.708, 102.119, -0.000328064, -304.423, -2.14174, -0.000267029, -157.872, -2.14175, 54.2083, -157.872, 209.387, 44.0647, -45.3478, 209.387, 64.4611, -45.3478, 87.7355, 64.461, -93.4209, 78.418, -0.000198364, -80.4274, 78.418, 64.4611, -80.4274, 155.304, 64.4611, -25.2928, 155.304, -0.000152588, -25.2927, 167.053, -0.000152588, -41.6772, 167.053, 64.4611, -41.6772, 193.272, 58.5713, -22.8756, 193.272, -0.000137329, -22.8755, 193.272, 64.4611, -22.8756, 222.14, 44.0647, -63.9897, 219.925, 44.0647, -60.0427, 257.368, 44.0648, -38.7277, 222.14, 54.2084, -63.9898, 208.423, 54.2084, -103.935, 199.54, 54.2084, -102.965, 199.54, 57.2005, -102.965, 148.459, 54.2083, -148.56, 139.576, 57.2004, -147.59, 130.693, 54.2083, -146.62, 137.645, 54.2083, -156.315, 165.736, 54.2083, -135.099, 176.55, 54.2083, -127.344, 244.603, 54.2084, -95.3149, 199.54, 54.2084, -102.965, 201.472, 54.2084, -94.2404, 141.507, 54.2083, -138.866, 169.598, 54.2083, -117.65, 167.667, 57.2005, -126.375, 158.784, 54.2083, -125.405, 209.387, 58.5712, -45.3478, 219.925, 58.5712, -60.0427, 248.57, 65.3823, -11.3618, 264.517, -0.0001297, -33.6009, 190.657, 54.2083, -101.995, 197.609, 54.2083, -111.689, 208.423, 54.2084, -103.935, 222.14, 35.3678, -63.9897, 225.173, 65.3823, -28.1396, 87.7355, -0.000205994, -93.4208, 94.4914, 54.2083, -155.526, 81.3323, 44.0647, -137.175, 261.896, 44.0648, -29.9454, 264.517, 44.0648, -33.601, 261.896, 58.5713, -29.9454, 235.243, 58.5713, 7.22173, 235.243, -0.000114441, 7.22175, 81.3323, 64.461, -137.175, 62.7859, 64.461, -111.312, 111.096, 43.0284, -317.042, 11.399, 54.2081, -388.534, -48.6473, -0.000366211, -304.799, -18.6241, 54.2082, -346.666, -18.6241, 71.0979, -346.666, -48.6473, 54.2082, -304.799, -28.4955, 54.2082, -290.348, 51.2637, 54.2082, -233.605, 102.119, 54.2082, -304.423, 138.781, -0.000312805, -297.188, 111.096, -0.000335693, -317.042, 51.578, 54.2082, -233.382, 111.096, 54.2082, -317.042, 34.2819, 42.8521, -245.687, 81.4974, 54.2082, -275.438, 11.399, -0.000396729, -388.534, 81.4974, 71.098, -275.438, -28.4954, -0.000350952, -290.348, -211.43, 57.6441, 131.289, -230.911, 57.6441, 109.76, -243.18, 57.6441, 108.661, -221.132, 57.6441, 116.729, -214.072, 57.6441, 106.822, -223.85, 57.6441, 99.8529, -211.43, 61.3526, 131.289, -7.80499, 61.3527, 305.745, -7.80498, 1.52588E-5, 305.745, -158.507, 61.3526, 197.677, -15.1723, 61.3527, 316.018, -4.26743, 61.3527, 253.171, -85.1153, 24.0931, 169.515, -144.901, 61.3526, 178.702, -144.901, 42.1212, 178.702, -85.1153, 61.3526, 169.515, -9.04553, 24.0932, 224.064, -9.04553, 61.3527, 224.064, -165.1, 24.0931, 118.068, -168.652, 24.0931, 115.521, -87.9143, 24.0931, 173.418, -87.9143, 61.3526, 173.418, -11.8446, 61.3527, 227.967, -11.8446, 24.0932, 227.967, -222.491, 57.6441, 108.291, -211.43, 42.1212, 131.289, -243.18, 42.1211, 108.661, -165.853, 24.0931, 111.618, -2.57272, 69.896, 281.942, -30.3661, 61.3527, 289.566, -222.491, 61.1874, 108.291, -222.491, 57.6441, 108.291, -214.072, 57.6441, 106.822, -230.911, 57.6441, 109.76, -168.652, 61.3526, 115.521, -162.301, -0.000144958, 114.165, -162.301, 24.0931, 114.165, 24.3821, 69.896, 301.271, -221.132, 57.6441, 116.729, -222.491, 61.1874, 108.291, -223.85, 57.6441, 99.8529, -146.463, 61.3526, 84.5783, 3.96535, 7.62939E-6, 329.742, -199.111, 57.6441, 46.8246, -167.427, 57.6441, 69.5449, 37.4315, 61.3527, 283.073, 56.5338, 61.3527, 296.772, 65.8965, 24.0932, 283.715, 65.8965, 61.3527, 283.715, 68.6955, 24.0932, 279.812, 68.6956, 1.52588E-5, 279.812, -167.427, 61.3525, 69.5449, 3.96547, 61.3527, 329.742, -199.111, -0.000190735, 46.8246, 11.3328, 61.3527, 319.468, -142.911, 24.0931, 87.1251, -146.463, 24.0931, 84.5783, -285.791, -0.000190735, 78.2939, -297.905, 42.8522, 69.6607, -297.905, -0.000198364, 69.6607, -285.791, 42.1211, 78.2938, -285.791, 42.8522, 78.2938, -274.93, -0.000183105, 86.034, -274.93, 42.1211, 86.0339, -300.523, 42.1211, 98.7238, -274.93, 42.8522, 86.0339, -243.18, -0.000160217, 108.661, -255.195, 42.8521, 4.38988, -232.266, 42.8521, 20.8323, -255.195, -0.000228882, 4.38991, -232.266, -0.000213623, 20.8323, -158.507, 42.1212, 197.677, -158.507, -9.15527E-5, 197.677, 170.329, 35.3677, -173.019, 221.635, 35.3677, -231.67, 250.628, 35.3677, -220.127, 187.747, 35.3678, -145.334, 308.334, 35.3678, -173.215, 342.092, 35.3678, -156.877, 333.169, 35.3678, -155.407, 244.603, -0.000167847, -95.3149, 342.092, -0.000175476, -156.877, 221.635, 37.3362, -231.67, 187.747, 37.3363, -145.334, 240.142, 37.3362, -218.399, 306.864, -0.000205994, -182.139, 306.864, 35.3678, -182.139, 256.178, -0.000175476, -111.457, 219.907, -0.000259399, -242.157, 219.907, 35.3677, -242.157, 169.24, 37.3363, -158.605, 169.24, 35.3678, -158.605, 308.334, 37.3363, -173.215, 333.169, 37.3363, -155.407, 250.628, -0.000244141, -220.127, 189.474, 35.3678, -134.847, 256.178, 35.3678, -111.457, 201.05, -0.000213623, -150.989, 158.754, 35.3678, -156.877, 257.368, 35.3678, -38.7277, 257.368, -0.0001297, -38.7277, 116.955, 35.3677, -186.851, 128.53, -0.000267029, -202.993, 128.53, 35.3677, -202.993, 255.898, 35.3678, -47.6513, 231.063, 37.3363, -65.46, 231.063, 35.3678, -65.46, 255.898, 37.3363, -47.6513, 240.142, 35.3677, -218.399, 201.05, 35.3678, -150.989, 158.754, -0.000221252, -156.877, 170.329, -0.000228882, -173.019, 189.474, -0.000213623, -134.847, 244.603, 35.3678, -95.3149, 244.603, 35.3678, -95.3149, 162.522, 43.0284, -261.451, 129.832, 43.0284, -284.708, 133.405, 43.0284, -285.304, 211.518, 43.0284, -330.134, 215.144, 43.0284, -330.68, 73.0083, -0.000427246, -463.77, 73.0084, 43.0283, -463.77, 16.5484, 43.0283, -384.841, 16.5484, -0.000396729, -384.841, 215.144, -0.000305176, -330.68, 162.522, -0.000282288, -261.451, 170.557, 43.0284, -362.653, 170.557, -0.000335693, -362.653, 185.316, 43.0284, -383.235, 185.316, -0.000343323, -383.234, 181.748, 43.0284, -382.647, 166.989, 43.0284, -362.066, 166.989, 40.9015, -362.066, 73.5986, 43.0283, -460.2, 58.0183, 40.9014, -438.42, 20.1139, 40.9014, -385.431, 161.985, 40.9015, -264.971, 211.518, 40.9015, -330.134, 88.8887, 40.9014, -389.189, 36.63, 40.9014, -389.189, 149.997, 50.2322, -358.766, 162.272, 50.2322, -376.172, 181.748, 40.9015, -382.647, 153.675, 40.9015, -343.499, 85.81, 50.2321, -404.033, 71.5309, 40.9014, -364.576, 69.2009, 50.2321, -380.481, 53.5643, 50.2321, -391.509, 71.5309, 50.2321, -440.166, 73.5987, 40.9014, -460.2, 66.9211, 40.9014, -432.141, 82.4487, 50.2321, -432.466, 142.349, 43.0284, -297.776, 142.349, 40.9015, -297.776, 20.1139, 43.0283, -385.431, 133.405, 40.9015, -285.304, 161.985, 43.0284, -264.971, 138.781, 43.0284, -297.188, -85.6467, 3.8147E-5, 454.707, -99.8385, 2.28882E-5, 418.348, -92.385, 3.05176E-5, 423.693, -112.238, 36.1027, 435.639, -92.3849, 36.1027, 423.693, -99.8385, 36.1027, 418.348, -112.238, 3.05176E-5, 435.639, -85.6467, 36.1027, 454.707, -15.1723, 0, 316.019, 3.96533, 36.1027, 329.742, -15.1723, 36.1027, 316.019, -390.064, -0.000236511, 34.1552, -405.554, 35.5802, 55.6357, -421.044, -0.000221252, 77.1163, -331.502, -0.000160217, 141.685, -421.044, 29.7535, 77.1163, -390.064, 29.7535, 34.1552, -300.523, 29.7535, 98.7238, -331.502, 29.7535, 141.685, -316.822, 35.5803, 121.326, -300.523, -0.000183105, 98.7238, 198.902, 0, 232.664, 127.421, -4.57764E-5, 181.405, 238.142, 0, 177.943, 166.661, -4.57764E-5, 126.685, 198.902, 97.4554, 232.664, 127.421, 97.4553, 181.405, 238.142, 97.4554, 177.943, 166.661, 97.4553, 126.684, 159.973, 102.061, 204.748, 132.38, 102.061, 184.961, 168.815, 102.061, 192.418, 141.222, 102.061, 172.632, 159.973, 97.4554, 204.748, 132.38, 97.4553, 184.961, 168.815, 97.4554, 192.418, 141.222, 97.4553, 172.632, 190.372, 102.061, 162.357, 162.779, 102.061, 142.57, 199.213, 102.061, 150.027, 171.62, 102.061, 130.241, 190.372, 97.4554, 162.357, 162.779, 97.4553, 142.57, 199.213, 97.4554, 150.027, 171.62, 97.4553, 130.241, 190.582, -5.34058E-5, 226.329, 133.437, -8.39233E-5, 185.35, 112.387, -5.34058E-5, 335.373, 55.2414, -8.39233E-5, 294.394, 190.582, 79.3235, 226.329, 133.437, 79.3234, 185.35, 112.387, 79.3235, 335.373, 55.2413, 79.3234, 294.394, 78.921, -5.34058E-5, 382.042, 120.171, -4.57764E-5, 340.955, 120.171, 79.3235, 340.955, 86.7051, 79.3235, 387.624, 86.7051, -4.57764E-5, 387.624, 38.1184, 79.3234, 282.115, 38.1184, -9.91821E-5, 282.115, 4.65239, -3.8147E-5, 328.784, 4.65236, 79.3234, 328.784, 175.288, 84.5203, 215.361, 148.39, 84.5202, 196.073, 63.3555, 84.5202, 314.656, 40.8167, 84.5202, 298.494, 21.0304, 84.5202, 326.086, 81.8631, 84.5203, 369.709, 101.649, 84.5203, 342.116, 90.2529, 84.5203, 333.944, 83.9509, 84.5204, 320.733, 67.4715, 84.5204, 308.916, 92.4056, 84.5204, 308.943, 75.9262, 84.5204, 297.125, 83.9509, 92.2763, 320.733, 67.4715, 92.2763, 308.916, 92.4056, 92.2763, 308.943, 75.9262, 92.2763, 297.125, 229.648, -5.34058E-5, 171.852, 172.502, -8.39233E-5, 130.873, 307.843, -5.34058E-5, 62.8074, 250.697, -8.39233E-5, 21.8285, 229.648, 79.3235, 171.852, 172.502, 79.3234, 130.873, 307.843, 79.3235, 62.8074, 250.697, 79.3234, 21.8285, 341.309, -5.34058E-5, 16.1386, 315.627, -4.57764E-5, 68.3893, 315.627, 79.3235, 68.3893, 349.093, 79.3235, 21.7205, 349.093, -4.57764E-5, 21.7205, 233.574, 79.3234, 9.54968, 233.574, -9.91821E-5, 9.54971, 267.04, -9.91821E-5, -37.1191, 267.04, 79.3234, -37.1192, 214.353, 84.5203, 160.884, 187.456, 84.5202, 141.596, 272.491, 84.5202, 23.0136, 249.952, 84.5202, 6.85117, 269.739, 84.5202, -20.7411, 330.571, 84.5203, 22.8818, 310.785, 84.5203, 50.474, 299.388, 84.5203, 42.3016, 273.355, 75.1502, 50.2064, 259.907, 75.1502, 40.5624, 280.284, 75.1502, 40.5442, 266.836, 75.1502, 30.9002, 273.355, 92.2762, 50.2064, 259.907, 92.2762, 40.5624, 280.284, 92.2762, 40.5442, 266.836, 92.2762, 30.9002, 4.65236, 61.3527, 328.784]; + uvs = new [0.60985, 0.683499, 0.777737, 0.683499, 0.60985, 0.650927, 0.777737, 0.650927, 0.60985, 0.683499, 0.777737, 0.683499, 0.60985, 0.650927, 0.745136, 0.650927, 0.777737, 0.650927, 0.745136, 0.44164, 0.777737, 0.44164, 0.745136, 0.650927, 0.777737, 0.650927, 0.745136, 0.44164, 0.621727, 0.578118, 0.625214, 0.578118, 0.621727, 0.514745, 0.625214, 0.514745, 0.621727, 0.578118, 0.625214, 0.578118, 0.621727, 0.514745, 0.625214, 0.514745, 0.621728, 0.51445, 0.756559, 0.51445, 0.621728, 0.44164, 0.756559, 0.44164, 0.621728, 0.51445, 0.756559, 0.51445, 0.621728, 0.44164, 0.756559, 0.44164, 0.717862, 0.51445, 0.717862, 0.44164, 0.621728, 0.51445, 0.717862, 0.51445, 0.717862, 0.44164, 0.621728, 0.44164, 0.621727, 0.650927, 0.756559, 0.650927, 0.756559, 0.578118, 0.621727, 0.650927, 0.756559, 0.650927, 0.621727, 0.578118, 0.756559, 0.578118, 0.717862, 0.650927, 0.717862, 0.578118, 0.621727, 0.650927, 0.717862, 0.650927, 0.717862, 0.578118, 0.621727, 0.578118, 0.777737, 0.681354, 0.855362, 0.681354, 0.855362, 0.407543, 0.777737, 0.681354, 0.855362, 0.681354, 0.777737, 0.407543, 0.855362, 0.407543, 0.855362, 0.575175, 0.855362, 0.519478, 0.777737, 0.519478, 0.777737, 0.575175, 0.855362, 0.575175, 0.855362, 0.519478, 0.777737, 0.519478, 0.777737, 0.575175, 0.558413, 0.578118, 0.764101, 0.578118, 0.558413, 0.514745, 0.764101, 0.514745, 0.558413, 0.578118, 0.764101, 0.578118, 0.558413, 0.514745, 0.764101, 0.514745, 0.764101, 0.546432, 0.558413, 0.546432, 0.60985, 0.44164, 0.777737, 0.44164, 0.60985, 0.407543, 0.777737, 0.407543, 0.60985, 0.44164, 0.777737, 0.44164, 0.777737, 0.407543, 0.693793, 0.238435, 0.658121, 0.23834, 0.693793, 0.315092, 0.693793, 0.315092, 0.693793, 0.279962, 0.693793, 0.279962, 0.823268, 0.23878, 0.823268, 0.279962, 0.823268, 0.279962, 0.867218, 0.279962, 0.823268, 0.279962, 0.867218, 0.315092, 0.867218, 0.315092, 0.843542, 0.315092, 0.843542, 0.315092, 0.746923, 0.375844, 0.703588, 0.376119, 0.703335, 0.356194, 0.710277, 0.32303, 0.746671, 0.355918, 0.703588, 0.376119, 0.746671, 0.355918, 0.746923, 0.375844, 0.703335, 0.356194, 0.610162, 0.3487, 0.675957, 0.238387, 0.675509, 0.407543, 0.657224, 0.407543, 0.710585, 0.347363, 0.722978, 0.335117, 0.735678, 0.347203, 0.843542, 0.315092, 0.867218, 0.279962, 0.658121, 0.23834, 0.693793, 0.238435, 0.657536, 0.3487, 0.73537, 0.32287, 0.610162, 0.3487, 0.693793, 0.407543, 0.693793, 0.407543, 0.843542, 0.407543, 0.843542, 0.407543, 0.60985, 0.407543, 0.60985, 0.407543, 0.657224, 0.407543, 0.658671, 0.134511, 0.523266, 0.3487, 0.523266, 0.283906, 0.523266, 0.134151, 0.601515, 0.134359, 0.523266, 0.238001, 0.601822, 0.287176, 0.610569, 0.309481, 0.601263, 0.26988, 0.574275, 0.270318, 0.563593, 0.309355, 0.574834, 0.287614, 0.564296, 0.176624, 0.658121, 0.23834, 0.574834, 0.287614, 0.601263, 0.26988, 0.601822, 0.287176, 0.574275, 0.270318, 0.523266, 0.238001, 0.523266, 0.310798, 0.610947, 0.238214, 0.658447, 0.176875, 0.523266, 0.134151, 0.523266, 0.3487, 0.601515, 0.134359, 0.658671, 0.134511, 0.657536, 0.3487, 0.657536, 0.3487, 0.258449, 0.310798, 0.258449, 0.310798, 0.47167, 0.3487, 0.47167, 0.367741, 0.47167, 0.367741, 0.31267, 0.367741, 0.31267, 0.367741, 0.31267, 0.34373, 0.31267, 0.34373, 0.258449, 0.34373, 0.258449, 0.34373, 0.258449, 0.34373, 0.25929, 0.283906, 0.258449, 0.289263, 0.186438, 0.283906, 0.25929, 0.283906, 0.317142, 0.254767, 0.328324, 0.26187, 0.328324, 0.26187, 0.44274, 0.253195, 0.453921, 0.260298, 0.465103, 0.267401, 0.465103, 0.253195, 0.405961, 0.254232, 0.383598, 0.254232, 0.25929, 0.238001, 0.328324, 0.26187, 0.317142, 0.268974, 0.44274, 0.267401, 0.383598, 0.268438, 0.39478, 0.261335, 0.405961, 0.268438, 0.258449, 0.310798, 0.258449, 0.289263, 0.171653, 0.316497, 0.171653, 0.283906, 0.339505, 0.268974, 0.339505, 0.254767, 0.317142, 0.254767, 0.25929, 0.283906, 0.220037, 0.316497, 0.47167, 0.3487, 0.523266, 0.283906, 0.523266, 0.310798, 0.171653, 0.289263, 0.171653, 0.283906, 0.171653, 0.289263, 0.171653, 0.34373, 0.171653, 0.34373, 0.523266, 0.310798, 0.523266, 0.3487, 0.658769, 0.116069, 0.864941, 0.116069, 0.864941, 0.23878, 0.864941, 0.177424, 0.864941, 0.177424, 0.864941, 0.238779, 0.823268, 0.23878, 0.658769, 0.238342, 0.658671, 0.134511, 0.601515, 0.116069, 0.658769, 0.116069, 0.658121, 0.23834, 0.658769, 0.116069, 0.693793, 0.238435, 0.658447, 0.176875, 0.864941, 0.116069, 0.658447, 0.176875, 0.823268, 0.23878, 0.660175, 0.773793, 0.707864, 0.766477, 0.725697, 0.773929, 0.687685, 0.766435, 0.687744, 0.751947, 0.707924, 0.751989, 0.660175, 0.773793, 0.21123, 0.801314, 0.21123, 0.801314, 0.522881, 0.801314, 0.21123, 0.81637, 0.257886, 0.747979, 0.45023, 0.723125, 0.522881, 0.773508, 0.522881, 0.773508, 0.45023, 0.723125, 0.292918, 0.723125, 0.292918, 0.723125, 0.60985, 0.728845, 0.617194, 0.728845, 0.45023, 0.728845, 0.45023, 0.728845, 0.292918, 0.728845, 0.292918, 0.728845, 0.697804, 0.759212, 0.660175, 0.773793, 0.725697, 0.773929, 0.617194, 0.723125, 0.227395, 0.774646, 0.257886, 0.801314, 0.697804, 0.759212, 0.697804, 0.759212, 0.687744, 0.751947, 0.707864, 0.766477, 0.617194, 0.728845, 0.60985, 0.723125, 0.60985, 0.723125, 0.171653, 0.774646, 0.687685, 0.766435, 0.697804, 0.759212, 0.707924, 0.751989, 0.617194, 0.683499, 0.171653, 0.81637, 0.72607, 0.683499, 0.660548, 0.683499, 0.171653, 0.747979, 0.132149, 0.747979, 0.132149, 0.728845, 0.132149, 0.728845, 0.132149, 0.723125, 0.132149, 0.723125, 0.660548, 0.683499, 0.171653, 0.81637, 0.72607, 0.683499, 0.171653, 0.801314, 0.60985, 0.683499, 0.617194, 0.683499, 0.813631, 0.774111, 0.83863, 0.774163, 0.83863, 0.774163, 0.813631, 0.774111, 0.813631, 0.774111, 0.791218, 0.774064, 0.791218, 0.774064, 0.813743, 0.804107, 0.791218, 0.774064, 0.725697, 0.773929, 0.844223, 0.681354, 0.796806, 0.681354, 0.844223, 0.681354, 0.796806, 0.681354, 0.522881, 0.801314, 0.522881, 0.801314, 0.436825, 0.214345, 0.424196, 0.121977, 0.373295, 0.113027, 0.385925, 0.229051, 0.248542, 0.11838, 0.186438, 0.110764, 0.197185, 0.11838, 0.25929, 0.238001, 0.186438, 0.110764, 0.424196, 0.121977, 0.385925, 0.229051, 0.385924, 0.121977, 0.25929, 0.110764, 0.25929, 0.110764, 0.25929, 0.214345, 0.436825, 0.113027, 0.436825, 0.113027, 0.424196, 0.229051, 0.424196, 0.229051, 0.248542, 0.11838, 0.197185, 0.11838, 0.373295, 0.113027, 0.373295, 0.238001, 0.25929, 0.214345, 0.373295, 0.214345, 0.436825, 0.238001, 0.186438, 0.283906, 0.186438, 0.283906, 0.523266, 0.238001, 0.523266, 0.214345, 0.523266, 0.214345, 0.197185, 0.276291, 0.248542, 0.276291, 0.248542, 0.276291, 0.197185, 0.276291, 0.385924, 0.121977, 0.373295, 0.214345, 0.436825, 0.238001, 0.436825, 0.214345, 0.373295, 0.238001, 0.25929, 0.238001, 0.25929, 0.238001, 0.534093, 0.13418, 0.601515, 0.134359, 0.597218, 0.131303, 0.534444, 0.0337057, 0.530026, 0.0306607, 0.854483, 0.000499666, 0.854483, 0.000499547, 0.854292, 0.116069, 0.854292, 0.116069, 0.530026, 0.0306607, 0.534093, 0.13418, 0.622232, 0.0306607, 0.622232, 0.0306607, 0.622232, 0.000499725, 0.622232, 0.000499785, 0.626529, 0.00354463, 0.626529, 0.0337056, 0.626529, 0.0337056, 0.850181, 0.00354463, 0.850128, 0.0354363, 0.85, 0.113024, 0.538273, 0.131146, 0.534444, 0.0337057, 0.759754, 0.0616575, 0.831125, 0.097925, 0.646503, 0.0486912, 0.646786, 0.0233266, 0.626529, 0.00354463, 0.626529, 0.0609134, 0.778496, 0.0494284, 0.759355, 0.0975242, 0.778114, 0.0837479, 0.810269, 0.0839275, 0.833384, 0.0243688, 0.850181, 0.00354451, 0.831821, 0.0353341, 0.810933, 0.0242434, 0.597218, 0.113024, 0.597218, 0.113024, 0.85, 0.113024, 0.597218, 0.131303, 0.538273, 0.131146, 0.601515, 0.116069, 0.171653, 0.9995, 0.226644, 0.974161, 0.21123, 0.974161, 0.226644, 0.9995, 0.21123, 0.974161, 0.226644, 0.974161, 0.226644, 0.9995, 0.171653, 0.9995, 0.21123, 0.81637, 0.171653, 0.81637, 0.21123, 0.81637, 0.999265, 0.80376, 0.999383, 0.835298, 0.9995, 0.866837, 0.813978, 0.867184, 0.9995, 0.866837, 0.999265, 0.80376, 0.813743, 0.804107, 0.813978, 0.867184, 0.813867, 0.837293, 0.813743, 0.804107, 0.000499427, 0.587132, 0.148321, 0.587132, 0.000499487, 0.506941, 0.148321, 0.506941, 0.000499427, 0.587132, 0.148321, 0.587132, 0.000499487, 0.506941, 0.148321, 0.506941, 0.0810031, 0.587132, 0.138066, 0.587132, 0.0810032, 0.569063, 0.138066, 0.569063, 0.0810031, 0.587132, 0.138066, 0.587132, 0.0810032, 0.569063, 0.138066, 0.569063, 0.0810032, 0.52501, 0.138066, 0.52501, 0.0810032, 0.506941, 0.138066, 0.506941, 0.0810032, 0.52501, 0.138066, 0.52501, 0.0810032, 0.506941, 0.138066, 0.506941, 0.0180656, 0.586775, 0.136243, 0.586775, 0.0180656, 0.746575, 0.136243, 0.746575, 0.0180656, 0.586775, 0.136243, 0.586775, 0.0180656, 0.746575, 0.136243, 0.746575, 0.0180656, 0.814966, 0.00196815, 0.746575, 0.00196815, 0.746575, 0.00196809, 0.814966, 0.00196809, 0.814966, 0.171653, 0.746575, 0.171653, 0.746575, 0.171653, 0.814966, 0.171653, 0.814966, 0.0496943, 0.586775, 0.105318, 0.586775, 0.105318, 0.760553, 0.151928, 0.760553, 0.151928, 0.800988, 0.026126, 0.800988, 0.0261261, 0.760553, 0.049694, 0.760553, 0.0712388, 0.752141, 0.105318, 0.752141, 0.0712388, 0.734863, 0.105318, 0.734863, 0.0712388, 0.752141, 0.105318, 0.752141, 0.0712388, 0.734863, 0.105318, 0.734863, 0.0180657, 0.506941, 0.136243, 0.506941, 0.0180658, 0.347142, 0.136243, 0.347142, 0.0180657, 0.506941, 0.136243, 0.506941, 0.0180658, 0.347142, 0.136243, 0.347142, 0.0180658, 0.278751, 0.00196826, 0.347142, 0.00196826, 0.347142, 0.00196826, 0.278751, 0.00196826, 0.278751, 0.171653, 0.347142, 0.171653, 0.347142, 0.171653, 0.278751, 0.171653, 0.278751, 0.0496944, 0.506941, 0.105318, 0.506941, 0.105318, 0.333164, 0.151928, 0.333164, 0.151928, 0.292729, 0.0261261, 0.292729, 0.0261263, 0.333164, 0.0496942, 0.333164, 0.0775061, 0.358881, 0.105318, 0.358881, 0.0775061, 0.344721, 0.105318, 0.344721, 0.0775061, 0.358881, 0.105318, 0.358881, 0.0775061, 0.344721, 0.105318, 0.344721, 0.171653, 0.814966]; + indices = new [0, 3, 1, 3, 0, 2, 0, 5, 4, 5, 0, 1, 1, 12, 5, 12, 1, 3, 3, 6, 12, 6, 3, 2, 2, 4, 6, 4, 2, 0, 7, 10, 8, 10, 7, 9, 7, 12, 11, 12, 7, 8, 8, 79, 12, 79, 8, 10, 10, 13, 79, 13, 10, 9, 9, 11, 13, 11, 9, 7, 14, 17, 15, 17, 14, 16, 14, 19, 18, 19, 14, 15, 15, 21, 19, 21, 15, 17, 17, 20, 21, 20, 17, 16, 16, 18, 20, 18, 16, 14, 33, 35, 34, 35, 33, 32, 22, 27, 23, 22, 30, 27, 22, 26, 30, 23, 29, 25, 29, 23, 27, 25, 28, 24, 25, 31, 28, 25, 29, 31, 24, 26, 22, 26, 24, 28, 27, 31, 29, 31, 27, 30, 26, 33, 30, 33, 26, 32, 30, 34, 31, 34, 30, 33, 31, 35, 28, 35, 31, 34, 28, 32, 26, 32, 28, 35, 46, 48, 47, 48, 46, 45, 36, 40, 37, 36, 43, 40, 36, 39, 43, 37, 42, 38, 42, 37, 40, 38, 41, 18, 38, 44, 41, 38, 42, 44, 18, 39, 36, 39, 18, 41, 40, 44, 42, 44, 40, 43, 39, 46, 43, 46, 39, 45, 43, 47, 44, 47, 43, 46, 44, 48, 41, 48, 44, 47, 41, 45, 39, 45, 41, 48, 61, 63, 62, 63, 61, 60, 49, 53, 50, 53, 49, 52, 50, 55, 51, 50, 57, 55, 50, 56, 57, 50, 53, 56, 51, 54, 80, 54, 51, 55, 80, 52, 49, 80, 59, 52, 80, 58, 59, 80, 54, 58, 55, 58, 54, 58, 55, 57, 52, 56, 53, 56, 52, 59, 56, 61, 57, 61, 56, 60, 57, 62, 58, 62, 57, 61, 58, 63, 59, 63, 58, 62, 59, 60, 56, 60, 59, 63, 69, 73, 72, 73, 69, 68, 64, 69, 65, 69, 64, 68, 65, 71, 67, 65, 72, 71, 65, 69, 72, 67, 70, 66, 70, 67, 71, 66, 68, 64, 66, 73, 68, 66, 70, 73, 71, 73, 70, 73, 71, 72, 74, 77, 75, 77, 74, 76, 74, 79, 78, 79, 74, 75, 75, 80, 79, 80, 75, 77, 77, 124, 80, 124, 77, 76, 76, 78, 124, 78, 76, 74, 85, 81, 218, 85, 115, 81, 119, 83, 84, 120, 83, 119, 120, 86, 83, 115, 86, 120, 85, 86, 115, 85, 87, 88, 87, 85, 218, 89, 87, 222, 87, 89, 88, 90, 89, 113, 90, 88, 89, 90, 91, 88, 92, 90, 113, 90, 92, 93, 94, 92, 112, 94, 93, 92, 94, 95, 93, 121, 94, 112, 94, 121, 122, 94, 96, 100, 122, 96, 94, 119, 96, 122, 119, 97, 96, 84, 97, 119, 84, 98, 97, 98, 109, 111, 84, 109, 98, 84, 99, 109, 84, 117, 99, 94, 117, 84, 111, 100, 98, 117, 100, 111, 94, 100, 117, 95, 90, 93, 91, 83, 86, 90, 83, 91, 95, 83, 90, 91, 85, 88, 85, 91, 86, 83, 94, 84, 94, 83, 95, 101, 102, 103, 102, 101, 104, 101, 96, 97, 96, 101, 103, 101, 98, 104, 98, 101, 97, 102, 98, 100, 98, 102, 104, 96, 102, 100, 102, 96, 103, 107, 82, 106, 82, 107, 108, 115, 107, 106, 107, 115, 120, 110, 111, 109, 99, 110, 109, 99, 117, 110, 117, 111, 110, 153, 125, 116, 153, 108, 125, 153, 82, 108, 153, 114, 82, 124, 105, 123, 105, 124, 118, 125, 105, 116, 105, 125, 123, 114, 106, 82, 114, 115, 106, 81, 115, 114, 145, 128, 196, 128, 145, 197, 338, 129, 348, 338, 148, 129, 338, 130, 148, 338, 339, 130, 126, 150, 151, 126, 339, 150, 126, 130, 339, 146, 136, 138, 136, 146, 133, 139, 147, 114, 114, 153, 133, 133, 146, 114, 149, 152, 127, 152, 149, 153, 140, 141, 142, 141, 140, 143, 141, 135, 134, 135, 141, 143, 132, 141, 134, 141, 132, 142, 140, 132, 137, 132, 140, 142, 140, 135, 143, 135, 140, 137, 138, 126, 147, 138, 130, 126, 138, 148, 130, 149, 133, 153, 149, 136, 133, 138, 136, 149, 129, 144, 131, 144, 129, 148, 196, 149, 145, 196, 138, 149, 144, 138, 196, 144, 148, 138, 139, 114, 146, 147, 146, 138, 146, 147, 139, 197, 186, 154, 186, 203, 155, 197, 203, 186, 156, 127, 195, 127, 156, 204, 157, 156, 195, 156, 157, 158, 159, 157, 160, 157, 159, 158, 159, 161, 162, 161, 159, 160, 163, 161, 164, 163, 162, 161, 163, 165, 162, 165, 186, 155, 186, 165, 163, 155, 162, 165, 154, 128, 197, 154, 166, 128, 154, 167, 166, 201, 164, 202, 164, 201, 163, 187, 198, 167, 198, 187, 200, 154, 187, 167, 187, 154, 186, 169, 128, 166, 128, 169, 196, 168, 322, 193, 193, 166, 168, 171, 191, 170, 191, 171, 190, 181, 171, 170, 171, 181, 190, 172, 191, 190, 192, 191, 172, 170, 172, 181, 173, 174, 182, 174, 176, 175, 173, 176, 174, 184, 177, 185, 178, 184, 183, 178, 177, 184, 194, 163, 201, 201, 188, 194, 323, 199, 189, 322, 199, 323, 168, 199, 322, 193, 169, 166, 193, 179, 169, 193, 336, 179, 172, 190, 180, 181, 172, 190, 172, 180, 192, 182, 174, 175, 183, 184, 185, 194, 186, 163, 186, 194, 187, 194, 200, 187, 200, 194, 188, 156, 159, 162, 159, 156, 158, 156, 203, 204, 156, 155, 203, 162, 155, 156, 168, 198, 199, 166, 198, 168, 166, 167, 198, 169, 144, 196, 144, 169, 179, 179, 324, 144, 324, 179, 336, 149, 203, 145, 203, 149, 204, 126, 205, 217, 126, 215, 205, 126, 151, 215, 206, 346, 220, 346, 206, 345, 207, 206, 220, 207, 208, 206, 207, 210, 208, 87, 207, 222, 87, 210, 207, 87, 211, 210, 380, 215, 214, 215, 380, 205, 150, 380, 214, 380, 150, 339, 81, 87, 218, 87, 81, 211, 210, 209, 208, 209, 206, 208, 221, 126, 217, 114, 219, 221, 81, 209, 211, 212, 209, 81, 114, 209, 212, 221, 209, 114, 209, 210, 211, 217, 216, 219, 217, 219, 213, 209, 217, 206, 217, 209, 221, 219, 126, 221, 206, 205, 345, 205, 206, 217, 266, 228, 227, 266, 224, 228, 225, 224, 266, 223, 224, 225, 223, 226, 224, 223, 227, 226, 223, 266, 227, 223, 267, 266, 276, 225, 266, 225, 276, 249, 236, 248, 237, 248, 236, 223, 252, 294, 295, 294, 252, 232, 389, 230, 231, 230, 389, 233, 223, 274, 267, 274, 223, 229, 273, 239, 272, 273, 235, 239, 258, 235, 273, 258, 259, 235, 258, 4, 278, 278, 259, 258, 294, 236, 237, 236, 294, 232, 238, 239, 235, 239, 238, 240, 0x0101, 241, 242, 0x0101, 243, 241, 0x0101, 244, 243, 243, 238, 235, 238, 243, 244, 243, 259, 241, 259, 243, 235, 241, 250, 242, 250, 241, 259, 245, 270, 246, 270, 245, 271, 270, 239, 246, 239, 270, 272, 245, 239, 240, 239, 245, 246, 275, 230, 233, 230, 275, 277, 0x0101, 236, 244, 236, 0x0101, 229, 247, 227, 228, 227, 247, 226, 226, 228, 224, 228, 226, 247, 225, 248, 223, 248, 225, 249, 230, 251, 252, 251, 277, 260, 230, 277, 251, 251, 268, 234, 268, 251, 260, 251, 234, 252, 261, 253, 254, 0xFF, 253, 261, 0xFF, 263, 253, 253, 263, 254, 261, 262, 0x0100, 262, 263, 0x0100, 250, 0x0101, 242, 250, 264, 0x0101, 250, 279, 264, 252, 231, 230, 231, 252, 295, 238, 245, 240, 245, 238, 244, 274, 0x0101, 264, 0x0101, 274, 229, 249, 276, 289, 234, 232, 252, 245, 232, 234, 245, 236, 232, 245, 244, 236, 245, 269, 271, 245, 268, 269, 245, 234, 268, 389, 275, 233, 275, 389, 265, 223, 236, 229, 280, 281, 282, 281, 283, 284, 280, 283, 281, 284, 290, 281, 290, 288, 291, 284, 288, 290, 288, 293, 291, 288, 285, 293, 288, 286, 285, 282, 290, 292, 290, 282, 281, 286, 289, 285, 289, 286, 249, 294, 401, 295, 401, 294, 287, 401, 283, 280, 283, 401, 287, 294, 283, 287, 294, 286, 283, 294, 249, 286, 294, 237, 249, 288, 283, 286, 283, 288, 284, 297, 331, 299, 306, 305, 313, 305, 306, 307, 330, 315, 328, 315, 330, 316, 301, 323, 304, 323, 301, 322, 308, 301, 304, 301, 308, 309, 308, 319, 309, 319, 308, 310, 298, 320, 317, 320, 298, 332, 311, 298, 317, 298, 311, 312, 311, 296, 312, 296, 311, 334, 320, 319, 310, 319, 320, 332, 325, 296, 334, 296, 325, 326, 299, 313, 314, 313, 299, 306, 297, 313, 305, 313, 297, 314, 307, 297, 305, 297, 307, 331, 307, 299, 331, 299, 307, 306, 300, 316, 302, 316, 300, 315, 316, 327, 302, 327, 316, 330, 131, 321, 324, 321, 131, 333, 332, 337, 319, 337, 332, 318, 321, 326, 324, 326, 321, 296, 300, 328, 315, 328, 300, 329, 327, 328, 329, 328, 327, 330, 296, 298, 312, 321, 298, 296, 321, 332, 298, 318, 332, 321, 193, 319, 337, 322, 336, 193, 336, 309, 319, 322, 309, 336, 322, 301, 309, 318, 303, 337, 303, 318, 335, 338, 340, 339, 340, 338, 379, 345, 343, 346, 343, 345, 344, 347, 338, 348, 338, 347, 342, 347, 349, 342, 349, 347, 350, 352, 349, 350, 349, 352, 351, 352, 344, 351, 344, 352, 343, 355, 353, 365, 353, 355, 354, 372, 353, 356, 353, 372, 365, 377, 372, 356, 377, 357, 372, 377, 358, 357, 341, 359, 379, 359, 341, 360, 355, 341, 354, 341, 355, 360, 364, 367, 363, 369, 374, 370, 367, 374, 369, 364, 374, 367, 363, 365, 364, 365, 366, 355, 363, 366, 365, 363, 361, 366, 361, 363, 367, 367, 368, 361, 368, 367, 369, 370, 368, 369, 368, 370, 362, 372, 357, 371, 371, 373, 374, 373, 371, 357, 373, 370, 374, 370, 373, 362, 374, 372, 371, 364, 372, 374, 372, 364, 365, 358, 375, 376, 375, 358, 377, 376, 340, 378, 340, 376, 375, 359, 340, 379, 340, 359, 378, 380, 340, 375, 340, 380, 339, 341, 349, 354, 349, 341, 342, 353, 349, 351, 349, 353, 354, 356, 351, 344, 351, 356, 353, 375, 345, 380, 345, 375, 377, 338, 341, 379, 341, 338, 342, 377, 344, 345, 344, 377, 356, 368, 366, 361, 366, 360, 355, 360, 378, 359, 360, 376, 378, 366, 376, 360, 368, 376, 366, 362, 376, 368, 362, 358, 376, 373, 358, 362, 357, 358, 373, 386, 388, 385, 388, 386, 384, 385, 389, 383, 389, 385, 391, 385, 382, 386, 382, 385, 383, 384, 382, 387, 382, 384, 386, 384, 381, 388, 381, 384, 387, 381, 390, 388, 390, 381, 265, 391, 388, 390, 388, 391, 385, 400, 397, 393, 397, 400, 398, 396, 400, 393, 400, 396, 399, 398, 392, 397, 392, 398, 401, 393, 394, 396, 393, 392, 394, 393, 397, 392, 396, 395, 399, 395, 396, 394, 395, 400, 399, 401, 400, 395, 398, 400, 401, 406, 409, 407, 409, 406, 408, 402, 407, 403, 407, 402, 406, 403, 409, 405, 409, 403, 407, 405, 408, 404, 408, 405, 409, 404, 406, 402, 406, 404, 408, 410, 413, 411, 413, 410, 412, 414, 417, 416, 417, 414, 415, 410, 415, 414, 415, 410, 411, 411, 417, 415, 417, 411, 413, 413, 416, 417, 416, 413, 412, 412, 414, 416, 414, 412, 410, 418, 421, 419, 421, 418, 420, 422, 425, 424, 425, 422, 423, 418, 423, 422, 423, 418, 419, 419, 425, 423, 425, 419, 421, 421, 424, 425, 424, 421, 420, 420, 422, 424, 422, 420, 418, 443, 445, 450, 445, 443, 444, 426, 431, 430, 431, 426, 427, 427, 433, 431, 433, 427, 429, 428, 430, 432, 430, 428, 426, 435, 437, 438, 437, 435, 436, 439, 441, 442, 441, 439, 440, 428, 436, 435, 436, 428, 432, 450, 448, 449, 448, 446, 447, 448, 445, 446, 450, 445, 448, 437, 434, 438, 437, 441, 434, 442, 441, 437, 433, 440, 439, 440, 433, 429, 430, 444, 443, 444, 430, 431, 431, 445, 444, 445, 431, 433, 433, 446, 445, 446, 433, 439, 439, 447, 446, 447, 439, 442, 442, 448, 447, 448, 442, 437, 437, 449, 448, 449, 437, 436, 436, 450, 449, 450, 436, 432, 432, 443, 450, 443, 432, 430, 451, 454, 453, 454, 451, 452, 455, 458, 456, 458, 455, 457, 451, 456, 452, 456, 451, 455, 452, 458, 454, 458, 452, 456, 454, 457, 453, 457, 454, 458, 453, 455, 451, 455, 453, 457, 476, 478, 477, 478, 476, 483, 459, 464, 460, 464, 459, 463, 460, 466, 462, 466, 460, 464, 461, 463, 459, 463, 461, 465, 468, 470, 469, 470, 468, 471, 472, 474, 473, 474, 472, 475, 461, 469, 465, 469, 461, 468, 479, 481, 480, 478, 481, 479, 483, 481, 478, 483, 482, 481, 467, 470, 471, 474, 470, 467, 475, 470, 474, 466, 473, 462, 473, 466, 472, 463, 477, 464, 477, 463, 476, 464, 478, 466, 478, 464, 477, 466, 479, 472, 479, 466, 478, 472, 480, 475, 480, 472, 479, 475, 481, 470, 481, 475, 480, 470, 482, 469, 482, 470, 481, 469, 483, 465, 483, 469, 482, 465, 476, 463, 476, 465, 483, 484, 487, 486, 487, 484, 485, 488, 491, 489, 491, 488, 490, 484, 489, 485, 489, 484, 488, 485, 491, 487, 491, 485, 489, 487, 490, 486, 490, 487, 491, 486, 488, 484, 488, 486, 490, 265, 492, 275, 492, 265, 441, 278, 250, 259, 250, 278, 279]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/LondonEye.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/LondonEye.as new file mode 100644 index 0000000..f2b4e25 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/LondonEye.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class LondonEye extends Stage3DData { + + public function LondonEye(){ + vertices = new [-21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -21.7933, 132.982, 2.47452, -68.1274, 132.982, -222.261, -65.9144, 45.4238, -204.985, -59.6123, -28.8046, -155.79, -50.1805, -78.4024, -82.1628, -39.055, -95.8188, 4.6858, -27.9294, -78.4024, 91.5345, -18.4977, -28.8046, 165.161, -12.1956, 45.4238, 214.357, -9.98256, 132.982, 231.632, -12.1956, 220.54, 214.357, -18.4977, 294.769, 165.161, -27.9295, 344.367, 91.5345, -39.055, 361.783, 4.68579, -50.1805, 344.367, -82.1629, -59.6123, 294.769, -155.79, -65.9144, 220.54, -204.985, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -56.3167, 132.982, 6.89706, -88.985, 132.982, -248.12, -86.4983, 34.5939, -228.708, -79.4167, -48.8157, -173.427, -68.8183, -104.548, -90.6938, -56.3167, -124.119, 6.89707, -43.815, -104.548, 104.488, -33.2167, -48.8157, 187.221, -26.1351, 34.5939, 242.502, -23.6483, 132.982, 261.914, -26.1351, 231.37, 242.502, -33.2167, 314.78, 187.221, -43.815, 370.513, 104.488, -56.3167, 390.083, 6.89706, -68.8183, 370.513, -90.6938, -79.4167, 314.78, -173.427, -86.4983, 231.37, -228.708, -54.4616, 132.982, -252.543, -51.9749, 34.5939, -233.131, -44.8933, -48.8157, -177.85, -34.2949, -104.548, -95.1163, -21.7933, -124.119, 2.47453, -9.29165, -104.548, 100.065, 1.30672, -48.8157, 182.799, 8.38833, 34.5939, 238.08, 10.8751, 132.982, 257.492, 8.38832, 231.37, 238.08, 1.30672, 314.78, 182.799, -9.29166, 370.513, 100.065, -21.7933, 390.083, 2.47452, -34.2949, 370.513, -95.1163, -44.8933, 314.78, -177.85, -51.9749, 231.37, -233.131, -68.1274, 132.982, -222.261, -65.9144, 45.4238, -204.985, -59.6123, -28.8046, -155.79, -50.1805, -78.4024, -82.1628, -39.055, -95.8188, 4.6858, -27.9294, -78.4024, 91.5345, -18.4977, -28.8046, 165.161, -12.1956, 45.4238, 214.357, -9.98255, 132.982, 231.632, -12.1956, 220.54, 214.357, -18.4977, 294.769, 165.161, -27.9294, 344.367, 91.5345, -39.055, 361.783, 4.68579, -50.1805, 344.367, -82.1629, -59.6123, 294.769, -155.79, -65.9144, 220.54, -204.985, 2.74538, -150.482, -118.939, 32.4555, -146.545, 112.985, 2.74538, -146.545, -118.939, 32.4555, -150.482, 112.985, -55.6825, -146.545, 124.275, -85.3926, -146.545, -107.648, -55.6825, -150.482, 124.275, -85.3926, -150.482, -107.648, -78.8354, -146.545, -98.9544, -74.9467, -146.545, -95.2452, -75.477, -146.545, -99.3846, -78.3051, -146.545, -94.815, -77.2943, -121.509, -52.3429, -66.5315, -121.509, -53.7216, -74.5656, -96.0609, -116.437, -69.6112, -129.804, -56.693, -77.221, -105.7, -116.097, -75.687, -146.545, -74.3773, -75.1567, -124.113, -70.2379, -75.1567, -146.545, -70.2379, -75.687, -122.433, -74.3773, -85.3284, -96.0609, -115.059, -81.3604, -105.7, -115.567, -75.477, -112.461, -99.3846, -74.9467, -114.14, -95.2452, -78.8354, -112.461, -98.9544, -78.3051, -114.14, -94.815, -71.7983, -124.113, -70.6681, -73.7506, -129.804, -56.1627, -72.3286, -122.433, -74.8075, -71.7983, -146.545, -70.6681, -72.3286, -146.545, -74.8075, -66.5315, -115.143, -53.7216, -77.2943, -115.143, -52.3429, -85.3284, -89.695, -115.059, -74.5656, -89.695, -116.437, -86.7911, -121.509, -51.1263, -94.8252, -96.0609, -113.842, -94.8252, -89.695, -113.842, -86.7911, -115.143, -51.1263, -83.5355, -95.3739, -101.063, -79.0871, -109.464, -66.3384, -72.7727, -95.3739, -102.442, -68.3244, -109.464, -67.7172, -79.0802, -103.926, -66.2845, -83.5286, -89.8362, -101.009, -72.7658, -89.8362, -102.388, -68.3174, -103.926, -67.6633, 81.6128, -119.695, -57.2491, 92.4351, -150.482, -62.637, 78.8694, -107.352, -55.8833, 85.9993, -119.695, -48.4381, 96.8217, -150.482, -53.826, 83.256, -107.352, -47.0723, 92.9033, -111.965, -62.8701, 89.4658, -104.367, -50.1639, 85.0793, -104.367, -58.9749, 97.2899, -111.965, -54.0591, 118.469, -150.482, -64.603, 114.082, -150.482, -73.414, 49.7374, -5.56216, -31.2178, 85.4981, -106.013, -50.3875, 47.0985, -7.27359, -27.9718, 86.8175, -105.158, -52.0105, 39.6443, -9.69394, -30.8577, 83.4077, -106.869, -50.3129, 81.771, -107.224, -51.8304, 42.9178, -8.98503, -27.8227, -10.1177, 121.228, -6.0837, 16.8599, 55.7996, -14.8498, 13.5865, 55.0907, -17.8848, -8.48098, 121.582, -4.56618, 49.2887, -4.85326, -35.6592, 19.9574, 59.2224, -25.7213, 46.0153, -5.56216, -38.6942, 23.2308, 59.9313, -22.6862, 82.8661, -106.013, -55.6741, 41.8346, -7.27359, -38.545, 84.9564, -105.158, -55.7487, 23.6795, 59.2224, -18.2449, -6.93224, 123.294, -10.0019, -5.29551, 123.648, -8.48442, 21.0406, 57.511, -14.9989, 13.1378, 55.7996, -22.3261, -9.02257, 122.438, -9.92735, -10.342, 121.582, -8.30437, 15.7767, 57.511, -25.5721, -6.39065, 122.438, -4.64077, 81.5466, -106.869, -54.0511, 39.1957, -8.98503, -35.2991, 86.5932, -104.803, -54.2312, -5.07118, 123.294, -6.26375, 55.6943, -5.56216, 16.3249, 95.0235, -106.013, 26.3006, 52.3502, -7.27359, 13.8115, 96.6955, -105.158, 27.5574, 45.8125, -9.69394, 18.4105, 92.9769, -106.869, 26.7326, 91.7546, -107.224, 28.6002, 48.257, -8.98503, 14.6754, -8.45663, 121.228, 6.37396, 19.839, 55.7996, 8.37244, 17.3944, 55.0907, 12.1076, -7.23438, 121.582, 4.5064, 56.3304, -4.85326, 20.7433, 25.4679, 59.2224, 18.1755, 53.8859, -5.56216, 24.4784, 27.9124, 59.9313, 14.4404, 93.7447, -106.013, 32.0661, 49.7927, -7.27359, 25.3423, 95.7913, -105.158, 31.6341, 27.2762, 59.2224, 10.022, -4.41993, 123.294, 9.40792, -3.19768, 123.648, 7.54037, 23.9322, 57.511, 7.50856, 18.0306, 55.7996, 16.526, -6.46652, 122.438, 9.83987, -8.13857, 121.582, 8.58317, 21.3747, 57.511, 19.0394, -5.18779, 122.438, 4.07447, 92.0727, -106.869, 30.8093, 46.4486, -8.98503, 22.8289, 97.0136, -104.803, 29.7665, -3.51574, 123.294, 5.33117, 92.9085, -119.695, 33.8969, 104.711, -150.482, 36.5146, 89.9167, -107.352, 33.2333, 95.0397, -119.695, 24.2879, 106.842, -150.482, 26.9056, 92.0479, -107.352, 23.6243, 105.222, -111.965, 36.6278, 98.8201, -104.367, 25.1264, 96.6889, -104.367, 34.7354, 107.353, -111.965, 27.0188, 130.45, -150.482, 32.1416, 128.319, -150.482, 41.7507, 270.423, -150.482, -44.3825, 248.672, -150.482, -41.5961, 271.691, -143.677, -44.5449, 257.568, -133.809, -42.7357, 274.072, -143.677, -25.9567, 272.805, -150.482, -25.7942, 259.949, -133.809, -24.1475, 251.053, -150.482, -23.0078, 250.298, -150.482, -28.9019, 258.218, -136.794, -35.9854, 25.4375, 130.468, -6.16551, 255.256, -139.358, -35.6059, 28.4002, 133.033, -6.54505, 255.756, -139.358, -31.7008, 25.9378, 130.468, -2.26042, 252.644, -147.787, -33.1716, -1.81425, 119.522, -0.574805, 249.798, -150.482, -32.807, 1.03183, 122.217, -0.93938, 250.298, -150.482, -28.9019, -1.314, 119.522, 3.33031, -51.5631, -146.545, 113.939, -48.735, -146.545, 109.369, -48.2048, -146.545, 113.508, -52.0934, -146.545, 109.799, -61.8211, -121.509, 68.4438, -51.0583, -121.509, 67.065, -43.0242, -96.0609, 129.781, -53.2896, -129.804, 70.7167, -45.6797, -105.7, 130.121, -54.7115, -146.545, 89.3615, -55.2418, -124.113, 85.2221, -55.2418, -146.545, 85.2221, -54.7115, -122.433, 89.3615, -53.787, -96.0609, 131.16, -49.8191, -105.7, 130.651, -48.2048, -112.461, 113.508, -48.735, -114.14, 109.369, -51.5631, -112.461, 113.939, -52.0934, -114.14, 109.799, -51.8834, -124.113, 84.7919, -57.429, -129.804, 71.247, -51.3532, -122.433, 88.9313, -51.8834, -146.545, 84.7919, -51.3532, -146.545, 88.9313, -51.0583, -115.143, 67.065, -61.8211, -115.143, 68.4438, -53.787, -89.695, 131.16, -43.0242, -89.695, 129.781, -71.318, -121.509, 69.6604, -63.2839, -96.0609, 132.376, -63.2839, -89.695, 132.376, -71.318, -115.143, 69.6604, -55.5799, -95.3739, 117.164, -60.0282, -109.464, 82.4393, -44.8171, -95.3739, 115.785, -49.2655, -109.464, 81.0606, -60.0352, -103.926, 82.3854, -55.5868, -89.8362, 117.11, -44.824, -89.8362, 115.731, -49.2724, -103.926, 81.0067, 1.09089, -146.545, 107.299, -2.79777, -146.545, 103.59, -2.26749, -146.545, 107.73, 0.560631, -146.545, 103.16, -0.450233, -121.509, 60.6879, -11.213, -121.509, 62.0666, -3.17892, -96.0609, 124.782, -8.13333, -129.804, 65.038, -0.523453, -105.7, 124.442, -2.05751, -146.545, 82.7223, -2.58778, -124.113, 78.5829, -2.58778, -146.545, 78.5829, -2.0575, -122.433, 82.7223, 7.58386, -96.0609, 123.404, 3.61594, -105.7, 123.912, -2.26749, -112.461, 107.73, -2.79776, -114.14, 103.59, 1.0909, -112.461, 107.299, 0.560627, -114.14, 103.16, -5.94616, -124.113, 79.0131, -3.99393, -129.804, 64.5077, -5.41589, -122.433, 83.1525, -5.94616, -146.545, 79.0131, -5.4159, -146.545, 83.1525, -11.213, -115.143, 62.0666, -0.450226, -115.143, 60.6879, 7.58386, -89.695, 123.404, -3.17892, -89.695, 124.782, 9.04662, -121.509, 59.4713, 17.0807, -96.0609, 122.187, 17.0807, -89.695, 122.187, 9.04663, -115.143, 59.4713, 5.79099, -95.3739, 109.408, 1.34265, -109.464, 74.6834, -4.97179, -95.3739, 110.787, -9.42014, -109.464, 76.0622, 1.33573, -103.926, 74.6295, 5.78408, -89.8362, 109.354, -4.97871, -89.8362, 110.733, -9.42704, -103.926, 76.0082, -26.1813, -146.545, -105.594, -29.0095, -146.545, -101.024, -29.5397, -146.545, -105.163, -25.6511, -146.545, -101.454, -15.9234, -121.509, -60.0988, -26.6862, -121.509, -58.7201, -34.7203, -96.0609, -121.436, -24.4549, -129.804, -62.3718, -32.0648, -105.7, -121.776, -23.0329, -146.545, -81.0166, -22.5027, -124.113, -76.8772, -22.5027, -146.545, -76.8772, -23.033, -122.433, -81.0166, -23.9575, -96.0609, -122.815, -27.9254, -105.7, -122.306, -29.5397, -112.461, -105.163, -29.0095, -114.14, -101.024, -26.1814, -112.461, -105.594, -25.6511, -114.14, -101.454, -25.8611, -124.113, -76.447, -20.3155, -129.804, -62.9021, -26.3913, -122.433, -80.5864, -25.8611, -146.545, -76.447, -26.3913, -146.545, -80.5864, -26.6862, -115.143, -58.7201, -15.9234, -115.143, -60.0989, -23.9575, -89.695, -122.815, -34.7202, -89.695, -121.436, -6.42651, -121.509, -61.3154, -14.4606, -96.0609, -124.031, -14.4606, -89.695, -124.031, -6.42651, -115.143, -61.3154, -22.1646, -95.3739, -108.819, -17.7162, -109.464, -74.0944, -32.9274, -95.3739, -107.44, -28.479, -109.464, -72.7157, -17.7093, -103.926, -74.0405, -22.1577, -89.8362, -108.765, -32.9205, -89.8362, -107.386, -28.4721, -103.926, -72.6617, -59.6357, 132.982, -2.99082, -59.2669, 125.975, -0.111876, -58.3765, 123.073, 6.83852, -57.4861, 125.975, 13.7889, -57.1173, 132.982, 16.6679, -57.4861, 139.989, 13.7889, -58.3765, 142.892, 6.83852, -59.2669, 139.989, -0.111876, 4.21432, 132.982, -10.5253, 4.58313, 125.975, -7.64637, 5.47349, 123.073, -0.695967, 6.36385, 125.975, 6.25441, 6.73265, 132.982, 9.13335, 6.36385, 139.989, 6.25441, 5.47349, 142.892, -0.695967, 4.58313, 139.989, -7.64637, 31.2166, 132.982, -6.41569, 31.306, 131.283, -5.71777, 31.5218, 130.58, -4.03284, 31.7377, 131.283, -2.34791, 31.8271, 132.982, -1.64998, 31.7377, 134.681, -2.34791, 31.5218, 135.385, -4.03284, 31.306, 134.681, -5.71777, 5.69327, 127.077, 4.41724, 4.19249, 121.092, -7.29804, 5.69327, 121.092, 4.41724, 4.19249, 127.077, -7.29804, -9.63254, 127.077, -15.45, -9.63254, 121.092, -15.45, -21.3478, 121.092, -13.9492, -21.3478, 127.077, -13.9492, -17.8461, 121.092, 13.3865, -17.8461, 127.077, 13.3865, -6.13077, 127.077, 11.8857, -6.13077, 121.092, 11.8857, -44.9032, 357.867, -112.73, -44.9032, 372.828, -112.73, -46.8042, 357.867, -127.57, -46.8042, 372.828, -127.57, -62.5036, 357.867, -110.476, -62.5036, 372.828, -110.476, -64.4046, 357.867, -125.315, -64.4046, 372.828, -125.315, -37.6881, 365.347, -121.196, -71.6197, 365.347, -116.849, -58.647, 249.704, -220.017, -58.647, 264.664, -220.017, -60.5479, 249.704, -234.856, -60.5479, 264.664, -234.856, -76.2474, 249.704, -217.762, -76.2474, 264.664, -217.762, -78.1483, 249.704, -232.601, -78.1483, 264.664, -232.601, -51.4319, 257.184, -228.482, -85.3635, 257.184, -224.136, -61.1585, 201.985, -239.622, -61.1585, 216.945, -239.622, -63.0594, 201.985, -254.462, -63.0594, 216.945, -254.462, -78.7589, 201.985, -237.368, -78.7589, 216.945, -237.368, -80.6598, 201.985, -252.207, -80.6598, 216.945, -252.207, -53.9433, 209.465, -248.088, -87.875, 209.465, -243.741, -7.88306, -78.1678, 176.257, -7.88306, -63.2072, 176.257, -9.78403, -78.1678, 161.418, -9.78403, -63.2072, 161.418, -25.4835, -78.1678, 178.512, -25.4835, -63.2072, 178.512, -27.3844, -78.1678, 163.673, -27.3844, -63.2072, 163.673, -0.667938, -70.6875, 167.792, -34.5996, -70.6875, 172.138, -3.24237, -41.6456, 212.484, -3.24237, -26.685, 212.484, -5.14334, -41.6456, 197.644, -5.14334, -26.685, 197.644, -20.8428, -41.6456, 214.738, -20.8428, -26.685, 214.738, -22.7437, -41.6456, 199.899, -22.7437, -26.685, 199.899, 3.97275, -34.1653, 204.018, -29.9589, -34.1653, 208.365, 4.19567, 151.327, 270.547, 4.19567, 166.288, 270.547, 2.2947, 151.327, 255.707, 2.2947, 166.288, 255.707, -13.4047, 151.327, 272.801, -13.4047, 166.288, 272.801, -15.3057, 151.327, 257.962, -15.3057, 166.288, 257.962, 11.4108, 158.807, 262.081, -22.5208, 158.807, 266.428, -3.24237, 292.649, 212.484, -3.24237, 307.61, 212.484, -5.14334, 292.649, 197.644, -5.14334, 307.61, 197.644, -20.8428, 292.649, 214.738, -20.8428, 307.61, 214.738, -22.7437, 292.649, 199.899, -22.7437, 307.61, 199.899, 3.97275, 300.13, 204.018, -29.9589, 300.13, 208.365, 4.19567, 99.6767, 270.547, 4.19567, 114.637, 270.547, 2.2947, 99.6767, 255.707, 2.2947, 114.637, 255.707, -13.4047, 99.6767, 272.801, -13.4047, 114.637, 272.801, -15.3057, 99.6767, 257.962, -15.3057, 114.637, 257.962, 11.4108, 107.157, 262.081, -22.5208, 107.157, 266.428, -13.3399, -106.863, 133.66, -13.3399, -91.9027, 133.66, -15.2409, -106.863, 118.82, -15.2409, -91.9027, 118.82, -30.9403, -106.863, 135.914, -30.9403, -91.9027, 135.914, -32.8413, -106.863, 121.075, -32.8413, -91.9027, 121.075, -6.12479, -99.3831, 125.194, -40.0564, -99.3831, 129.541, -25.8401, -136.705, 36.0807, -25.8401, -121.745, 36.0807, -27.7411, -136.705, 21.2413, -27.7411, -121.745, 21.2413, -43.4405, -136.705, 38.3353, -43.4405, -121.745, 38.3353, -45.3415, -136.705, 23.496, -45.3415, -121.745, 23.496, -18.625, -129.225, 27.6149, -52.5566, -129.225, 31.9617, -7.88306, 329.172, 176.257, -7.88306, 344.132, 176.257, -9.78403, 329.172, 161.418, -9.78403, 344.132, 161.418, -25.4835, 329.172, 178.512, -25.4835, 344.132, 178.512, -27.3844, 329.172, 163.673, -27.3844, 344.132, 163.673, -0.667946, 336.652, 167.792, -34.5996, 336.652, 172.138, -55.0008, 292.649, -191.554, -55.0008, 307.61, -191.554, -56.9018, 292.649, -206.393, -56.9018, 307.61, -206.393, -72.6012, 292.649, -189.299, -72.6012, 307.61, -189.299, -74.5022, 292.649, -204.139, -74.5022, 307.61, -204.139, -47.7857, 300.13, -200.02, -81.7173, 300.13, -195.673, 0.403801, 249.704, 240.946, 0.403801, 264.664, 240.946, -1.49717, 249.704, 226.107, -1.49717, 264.664, 226.107, -17.1966, 249.704, 243.201, -17.1966, 264.664, 243.201, -19.0976, 249.704, 228.362, -19.0976, 264.664, 228.362, 7.61893, 257.184, 232.481, -26.3127, 257.184, 236.827, 2.91533, 201.985, 260.552, 2.91533, 216.945, 260.552, 1.01436, 201.985, 245.713, 1.01436, 216.945, 245.713, -14.6851, 201.985, 262.807, -14.6851, 216.945, 262.807, -16.586, 201.985, 247.967, -16.586, 216.945, 247.967, 10.1305, 209.465, 252.086, -23.8012, 209.465, 256.433, 2.91534, 49.019, 260.552, 2.91534, 63.9796, 260.552, 1.01437, 49.019, 245.713, 1.01437, 63.9796, 245.713, -14.6851, 49.019, 262.807, -14.6851, 63.9796, 262.807, -16.586, 49.019, 247.967, -16.586, 63.9796, 247.967, 10.1305, 56.4993, 252.086, -23.8012, 56.4993, 256.433, -55.0008, -41.6456, -191.554, -55.0008, -26.685, -191.554, -56.9018, -41.6456, -206.393, -56.9018, -26.685, -206.393, -72.6012, -41.6456, -189.299, -72.6012, -26.685, -189.299, -74.5022, -41.6456, -204.139, -74.5022, -26.685, -204.139, -47.7857, -34.1653, -200.02, -81.7173, -34.1653, -195.673, -50.3601, 329.172, -155.328, -50.3601, 344.132, -155.328, -52.2611, 329.172, -170.167, -52.2611, 344.132, -170.167, -67.9605, 329.172, -153.073, -67.9605, 344.132, -153.073, -69.8615, 329.172, -167.913, -69.8615, 344.132, -167.913, -43.145, 336.652, -163.794, -77.0766, 336.652, -159.447, -62.4388, 151.327, -249.617, -62.4388, 166.288, -249.617, -64.3398, 151.327, -264.456, -64.3398, 166.288, -264.456, -80.0392, 151.327, -247.362, -80.0392, 166.288, -247.362, -81.9402, 151.327, -262.202, -81.9402, 166.288, -262.202, -55.2237, 158.807, -258.083, -89.1553, 158.807, -253.736, -62.4388, 99.6767, -249.617, -62.4388, 114.637, -249.617, -64.3398, 99.6767, -264.456, -64.3398, 114.637, -264.456, -80.0392, 99.6767, -247.362, -80.0392, 114.637, -247.362, -81.9402, 99.6767, -262.202, -81.9402, 114.637, -262.202, -55.2237, 107.157, -258.083, -89.1553, 107.157, -253.736, -61.1585, 49.019, -239.622, -61.1585, 63.9796, -239.622, -63.0594, 49.019, -254.462, -63.0594, 63.9796, -254.462, -78.7589, 49.019, -237.367, -78.7589, 63.9796, -237.367, -80.6598, 49.019, -252.207, -80.6598, 63.9796, -252.207, -53.9433, 56.4993, -248.088, -87.8749, 56.4993, -243.741, -13.3399, 357.867, 133.66, -13.3399, 372.828, 133.66, -15.2409, 357.867, 118.82, -15.2409, 372.828, 118.82, -30.9403, 357.867, 135.914, -30.9403, 372.828, 135.914, -32.8413, 357.867, 121.075, -32.8413, 372.828, 121.075, -6.12479, 365.347, 125.194, -40.0564, 365.347, 129.541, 0.403801, 1.3002, 240.946, 0.403801, 16.2608, 240.946, -1.49717, 1.3002, 226.107, -1.49717, 16.2608, 226.107, -17.1966, 1.3002, 243.201, -17.1966, 16.2608, 243.201, -19.0976, 1.3002, 228.362, -19.0976, 16.2608, 228.362, 7.61892, 8.78052, 232.481, -26.3127, 8.78052, 236.827, -32.403, -136.705, -15.151, -32.403, -121.745, -15.151, -34.304, -136.705, -29.9904, -34.304, -121.745, -29.9904, -50.0034, -136.705, -12.8964, -50.0034, -121.745, -12.8964, -51.9044, -136.705, -27.7357, -51.9044, -121.745, -27.7357, -25.1879, -129.225, -23.6168, -59.1195, -129.225, -19.27, -19.4033, -126.629, 86.328, -19.4033, -111.668, 86.328, -21.3042, -126.629, 71.4886, -21.3042, -111.668, 71.4886, -37.0037, -126.629, 88.5826, -37.0037, -111.668, 88.5826, -38.9046, -126.629, 73.7433, -38.9046, -111.668, 73.7433, -12.1881, -119.149, 77.8622, -46.1198, -119.149, 82.209, -44.9032, -106.863, -112.73, -44.9032, -91.9027, -112.73, -46.8042, -106.863, -127.57, -46.8042, -91.9027, -127.57, -62.5036, -106.863, -110.476, -62.5036, -91.9027, -110.476, -64.4046, -106.863, -125.315, -64.4046, -91.9027, -125.315, -37.6881, -99.3831, -121.196, -71.6197, -99.3831, -116.849, -50.3601, -78.1678, -155.328, -50.3601, -63.2072, -155.328, -52.2611, -78.1678, -170.167, -52.2611, -63.2072, -170.167, -67.9605, -78.1678, -153.073, -67.9605, -63.2072, -153.073, -69.8615, -78.1678, -167.913, -69.8615, -63.2072, -167.913, -43.145, -70.6875, -163.794, -77.0766, -70.6875, -159.447, -38.8399, -126.629, -65.3983, -38.8399, -111.668, -65.3983, -40.7408, -126.629, -80.2377, -40.7408, -111.668, -80.2377, -56.4403, -126.629, -63.1436, -56.4403, -111.668, -63.1436, -58.3412, -126.629, -77.983, -58.3412, -111.668, -77.983, -31.6247, -119.149, -73.864, -65.5564, -119.149, -69.5173, -58.647, 1.3002, -220.017, -58.647, 16.2608, -220.017, -60.5479, 1.3002, -234.856, -60.5479, 16.2608, -234.856, -76.2474, 1.3002, -217.762, -76.2474, 16.2608, -217.762, -78.1483, 1.3002, -232.601, -78.1483, 16.2608, -232.601, -51.4319, 8.78052, -228.482, -85.3635, 8.78052, -224.136, -19.4033, 377.633, 86.3279, -19.4033, 392.593, 86.3279, -21.3042, 377.633, 71.4886, -21.3042, 392.593, 71.4886, -37.0037, 377.633, 88.5826, -37.0037, 392.593, 88.5826, -38.9046, 377.633, 73.7432, -38.9046, 392.593, 73.7432, -12.1881, 385.113, 77.8622, -46.1198, 385.113, 82.209, -25.8401, 387.709, 36.0806, -25.8401, 402.67, 36.0806, -27.7411, 387.709, 21.2413, -27.7411, 402.67, 21.2413, -43.4405, 387.709, 38.3353, -43.4405, 402.67, 38.3353, -45.3415, 387.709, 23.4959, -45.3415, 402.67, 23.4959, -18.625, 395.189, 27.6149, -52.5566, 395.189, 31.9617, -32.403, 387.709, -15.151, -32.403, 402.67, -15.151, -34.304, 387.709, -29.9904, -34.304, 402.67, -29.9904, -50.0034, 387.709, -12.8964, -50.0034, 402.67, -12.8964, -51.9044, 387.709, -27.7357, -51.9044, 402.67, -27.7357, -25.1879, 395.189, -23.6168, -59.1195, 395.189, -19.27, -38.8399, 377.633, -65.3983, -38.8399, 392.593, -65.3983, -40.7408, 377.633, -80.2377, -40.7408, 392.593, -80.2377, -56.4403, 377.633, -63.1436, -56.4403, 392.593, -63.1437, -58.3412, 377.633, -77.983, -58.3412, 392.593, -77.983, -31.6247, 385.113, -73.864, -65.5564, 385.113, -69.5173]; + uvs = new [0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.922873, 0.487559, 0.890615, 0.645691, 0.798752, 0.779749, 0.661271, 0.869323, 0.4991, 0.900777, 0.336929, 0.869323, 0.199448, 0.779748, 0.107585, 0.645691, 0.0753275, 0.487559, 0.107585, 0.329428, 0.199448, 0.19537, 0.336929, 0.105796, 0.4991, 0.0743412, 0.661271, 0.105796, 0.798753, 0.19537, 0.890615, 0.329428, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.4991, 0.487559, 0.975288, 0.487559, 0.939041, 0.66525, 0.835816, 0.815889, 0.681329, 0.916543, 0.4991, 0.951887, 0.316871, 0.916543, 0.162384, 0.815889, 0.0591594, 0.66525, 0.0229117, 0.487559, 0.0591594, 0.309869, 0.162384, 0.15923, 0.316871, 0.0585759, 0.4991, 0.023231, 0.68133, 0.058576, 0.835816, 0.15923, 0.939041, 0.309869, 0.975288, 0.487559, 0.939041, 0.66525, 0.835816, 0.815889, 0.681329, 0.916543, 0.4991, 0.951887, 0.316871, 0.916543, 0.162384, 0.815889, 0.0591594, 0.66525, 0.0229117, 0.487559, 0.0591594, 0.309869, 0.162384, 0.15923, 0.316871, 0.0585759, 0.4991, 0.023231, 0.68133, 0.058576, 0.835816, 0.15923, 0.939041, 0.309869, 0.922873, 0.487559, 0.890615, 0.645691, 0.798752, 0.779749, 0.661271, 0.869323, 0.4991, 0.900777, 0.336929, 0.869323, 0.199448, 0.779748, 0.107585, 0.645691, 0.0753275, 0.487559, 0.107585, 0.329428, 0.199448, 0.19537, 0.336929, 0.105796, 0.4991, 0.0743412, 0.661271, 0.105796, 0.798753, 0.19537, 0.890615, 0.329428, 0.716378, 0.999501, 0.283311, 0.99239, 0.716378, 0.99239, 0.283311, 0.9995, 0.283311, 0.99239, 0.716378, 0.99239, 0.283311, 0.9995, 0.716378, 0.999501, 0.698863, 0.99239, 0.691133, 0.99239, 0.698863, 0.99239, 0.691133, 0.99239, 0.612868, 0.947173, 0.612868, 0.947173, 0.729977, 0.901214, 0.619052, 0.962154, 0.729977, 0.918622, 0.65297, 0.99239, 0.645241, 0.951877, 0.645241, 0.99239, 0.65297, 0.948843, 0.729977, 0.901214, 0.729977, 0.918622, 0.698863, 0.930833, 0.691133, 0.933866, 0.698863, 0.930833, 0.691133, 0.933866, 0.645241, 0.951877, 0.619052, 0.962154, 0.65297, 0.948843, 0.645241, 0.99239, 0.65297, 0.99239, 0.612868, 0.935676, 0.612868, 0.935676, 0.729977, 0.889718, 0.729977, 0.889718, 0.612868, 0.947173, 0.729977, 0.901214, 0.729977, 0.889718, 0.612868, 0.935676, 0.703843, 0.899974, 0.639002, 0.92542, 0.703843, 0.899974, 0.639002, 0.92542, 0.638901, 0.915419, 0.703742, 0.889973, 0.703742, 0.889973, 0.638901, 0.915419, 0.584484, 0.943899, 0.591836, 0.999501, 0.582621, 0.921606, 0.567265, 0.943899, 0.574616, 0.999501, 0.565402, 0.921606, 0.592154, 0.929937, 0.56962, 0.916215, 0.586839, 0.916215, 0.574934, 0.929937, 0.589321, 0.999501, 0.60654, 0.999501, 0.544163, 0.737772, 0.570964, 0.919189, 0.538821, 0.740863, 0.573636, 0.917644, 0.545877, 0.745234, 0.571319, 0.920734, 0.574492, 0.921375, 0.539531, 0.743954, 0.512075, 0.508787, 0.52183, 0.626952, 0.528176, 0.628232, 0.508902, 0.508147, 0.552428, 0.736492, 0.541074, 0.62077, 0.558774, 0.737772, 0.534728, 0.61949, 0.581296, 0.919189, 0.559484, 0.740863, 0.580941, 0.917644, 0.526463, 0.62077, 0.518524, 0.505056, 0.51535, 0.504416, 0.521121, 0.623861, 0.536441, 0.626952, 0.518878, 0.506602, 0.516207, 0.508147, 0.541784, 0.623861, 0.508547, 0.506602, 0.578625, 0.920734, 0.554142, 0.743954, 0.577768, 0.917003, 0.511218, 0.505056, 0.455419, 0.737772, 0.427836, 0.919189, 0.460823, 0.740863, 0.425134, 0.917643, 0.453913, 0.745234, 0.427525, 0.920734, 0.424381, 0.921374, 0.4602, 0.743954, 0.488798, 0.508787, 0.478467, 0.626952, 0.47218, 0.628232, 0.491941, 0.508147, 0.447152, 0.736492, 0.459133, 0.62077, 0.440865, 0.737772, 0.465419, 0.61949, 0.417546, 0.919189, 0.440242, 0.740863, 0.417857, 0.917643, 0.473686, 0.62077, 0.482274, 0.505056, 0.485417, 0.504416, 0.479091, 0.623861, 0.463913, 0.626952, 0.481962, 0.506602, 0.484664, 0.508147, 0.458509, 0.623861, 0.492253, 0.506602, 0.420248, 0.920734, 0.445646, 0.743954, 0.421001, 0.917003, 0.489551, 0.505056, 0.414379, 0.943899, 0.406792, 0.999501, 0.416302, 0.921606, 0.43153, 0.943899, 0.423944, 0.999501, 0.433453, 0.921606, 0.406464, 0.929937, 0.4291, 0.916215, 0.411949, 0.916215, 0.423615, 0.929937, 0.408768, 0.999501, 0.391617, 0.999501, 0.516412, 0.999501, 0.516412, 0.999501, 0.516412, 0.987211, 0.516412, 0.969388, 0.481702, 0.987211, 0.481702, 0.999501, 0.481702, 0.969388, 0.481702, 0.999501, 0.492708, 0.999501, 0.503858, 0.974778, 0.503858, 0.4921, 0.503858, 0.97941, 0.503858, 0.487468, 0.496566, 0.97941, 0.496566, 0.4921, 0.5, 0.994632, 0.5, 0.511869, 0.5, 0.999501, 0.5, 0.507, 0.492708, 0.999501, 0.492708, 0.511869, 0.301332, 0.99239, 0.309061, 0.99239, 0.301332, 0.99239, 0.309061, 0.99239, 0.387326, 0.947173, 0.387326, 0.947173, 0.270218, 0.901214, 0.381142, 0.962154, 0.270218, 0.918622, 0.347224, 0.99239, 0.354953, 0.951877, 0.354953, 0.99239, 0.347224, 0.948843, 0.270218, 0.901214, 0.270218, 0.918622, 0.301332, 0.930833, 0.309061, 0.933866, 0.301332, 0.930833, 0.309061, 0.933866, 0.354953, 0.951877, 0.381142, 0.962154, 0.347224, 0.948843, 0.354953, 0.99239, 0.347224, 0.99239, 0.387326, 0.935676, 0.387326, 0.935676, 0.270218, 0.889717, 0.270218, 0.889717, 0.387326, 0.947173, 0.270218, 0.901214, 0.270218, 0.889717, 0.387326, 0.935676, 0.296352, 0.899974, 0.361192, 0.92542, 0.296351, 0.899974, 0.361192, 0.92542, 0.361293, 0.915419, 0.296452, 0.889973, 0.296452, 0.889973, 0.361293, 0.915419, 0.301137, 0.99239, 0.308867, 0.99239, 0.301137, 0.99239, 0.308867, 0.99239, 0.387131, 0.947173, 0.387131, 0.947173, 0.270023, 0.901214, 0.380948, 0.962154, 0.270023, 0.918622, 0.34703, 0.99239, 0.354759, 0.951877, 0.354759, 0.99239, 0.34703, 0.948843, 0.270023, 0.901214, 0.270023, 0.918622, 0.301137, 0.930833, 0.308867, 0.933866, 0.301137, 0.930833, 0.308867, 0.933866, 0.354759, 0.951877, 0.380948, 0.962154, 0.34703, 0.948843, 0.354759, 0.99239, 0.34703, 0.99239, 0.387131, 0.935676, 0.387131, 0.935676, 0.270023, 0.889717, 0.270023, 0.889717, 0.387131, 0.947173, 0.270023, 0.901214, 0.270023, 0.889717, 0.387131, 0.935676, 0.296157, 0.899974, 0.360998, 0.92542, 0.296157, 0.899974, 0.360998, 0.92542, 0.361098, 0.915419, 0.296258, 0.889973, 0.296258, 0.889973, 0.361098, 0.915419, 0.698668, 0.99239, 0.690939, 0.99239, 0.698668, 0.99239, 0.690939, 0.99239, 0.612674, 0.947173, 0.612674, 0.947173, 0.729782, 0.901214, 0.618858, 0.962155, 0.729782, 0.918622, 0.652776, 0.99239, 0.645046, 0.951877, 0.645046, 0.99239, 0.652776, 0.948843, 0.729782, 0.901214, 0.729782, 0.918622, 0.698668, 0.930833, 0.690939, 0.933866, 0.698668, 0.930833, 0.690939, 0.933866, 0.645046, 0.951877, 0.618858, 0.962155, 0.652776, 0.948843, 0.645046, 0.99239, 0.652776, 0.99239, 0.612674, 0.935676, 0.612674, 0.935676, 0.729782, 0.889718, 0.729782, 0.889718, 0.612674, 0.947173, 0.729782, 0.901214, 0.729782, 0.889718, 0.612674, 0.935676, 0.703649, 0.899974, 0.638808, 0.92542, 0.703649, 0.899974, 0.638808, 0.92542, 0.638707, 0.915419, 0.703548, 0.889973, 0.703548, 0.889973, 0.638707, 0.915419, 0.518046, 0.487559, 0.512671, 0.500214, 0.499692, 0.505456, 0.486714, 0.500214, 0.481338, 0.487559, 0.486714, 0.474904, 0.499692, 0.469662, 0.512671, 0.474904, 0.516862, 0.487559, 0.511486, 0.500214, 0.498508, 0.505456, 0.485529, 0.500214, 0.480154, 0.487559, 0.485529, 0.474904, 0.498508, 0.469662, 0.511486, 0.474904, 0.502957, 0.487559, 0.501654, 0.490627, 0.498508, 0.491898, 0.495361, 0.490627, 0.494058, 0.487559, 0.495361, 0.484491, 0.498508, 0.483221, 0.501654, 0.484491, 0.489062, 0.498225, 0.510938, 0.509032, 0.489062, 0.509032, 0.510938, 0.498225, 0.529168, 0.498225, 0.529168, 0.509032, 0.529168, 0.509032, 0.529168, 0.498225, 0.478124, 0.509032, 0.478124, 0.498225, 0.478124, 0.498225, 0.478124, 0.509032, 0.716185, 0.0814138, 0.716185, 0.0543947, 0.743894, 0.0814138, 0.743894, 0.0543947, 0.716185, 0.0814138, 0.716185, 0.0543947, 0.743894, 0.0814138, 0.743894, 0.0543947, 0.73004, 0.0679042, 0.73004, 0.0679042, 0.916519, 0.276759, 0.916519, 0.24974, 0.944228, 0.276759, 0.944228, 0.24974, 0.916519, 0.276759, 0.916519, 0.24974, 0.944228, 0.276759, 0.944228, 0.24974, 0.930374, 0.263249, 0.930374, 0.263249, 0.953128, 0.36294, 0.953128, 0.335921, 0.980837, 0.36294, 0.980837, 0.335921, 0.953128, 0.36294, 0.953128, 0.335921, 0.980837, 0.36294, 0.980837, 0.335921, 0.966983, 0.34943, 0.966983, 0.34943, 0.176564, 0.868899, 0.176564, 0.84188, 0.204274, 0.868899, 0.204274, 0.84188, 0.176564, 0.868899, 0.176564, 0.84188, 0.204273, 0.868899, 0.204273, 0.84188, 0.190419, 0.85539, 0.190419, 0.85539, 0.10892, 0.80294, 0.10892, 0.77592, 0.136629, 0.80294, 0.136629, 0.77592, 0.10892, 0.80294, 0.10892, 0.77592, 0.136629, 0.80294, 0.136629, 0.77592, 0.122774, 0.78943, 0.122774, 0.78943, 0.000499576, 0.454428, 0.000499576, 0.427409, 0.0282088, 0.454428, 0.0282088, 0.427409, 0.000499576, 0.454428, 0.000499576, 0.427409, 0.0282088, 0.454428, 0.0282088, 0.427409, 0.0143542, 0.440918, 0.0143542, 0.440918, 0.10892, 0.199198, 0.10892, 0.172179, 0.136629, 0.199198, 0.136629, 0.172179, 0.10892, 0.199198, 0.10892, 0.172179, 0.136629, 0.199198, 0.136629, 0.172179, 0.122774, 0.185688, 0.122774, 0.185688, 0.000499576, 0.547709, 0.000499576, 0.52069, 0.0282088, 0.547709, 0.0282088, 0.52069, 0.000499576, 0.547709, 0.000499576, 0.52069, 0.0282088, 0.547709, 0.0282088, 0.52069, 0.0143542, 0.5342, 0.0143542, 0.5342, 0.256106, 0.920724, 0.256106, 0.893705, 0.283815, 0.920724, 0.283815, 0.893705, 0.256106, 0.920724, 0.256106, 0.893705, 0.283815, 0.920724, 0.283815, 0.893705, 0.26996, 0.907214, 0.26996, 0.907214, 0.438313, 0.974619, 0.438313, 0.9476, 0.466023, 0.974619, 0.466023, 0.9476, 0.438313, 0.974619, 0.438313, 0.9476, 0.466023, 0.974619, 0.466023, 0.9476, 0.452168, 0.961109, 0.452168, 0.961109, 0.176564, 0.133238, 0.176564, 0.106219, 0.204274, 0.133238, 0.204274, 0.106219, 0.176564, 0.133238, 0.176564, 0.106219, 0.204274, 0.133238, 0.204274, 0.106219, 0.190419, 0.119729, 0.190419, 0.119729, 0.863371, 0.199198, 0.863371, 0.172179, 0.891081, 0.199198, 0.891081, 0.172179, 0.863371, 0.199198, 0.863371, 0.172179, 0.891081, 0.199198, 0.891081, 0.172179, 0.877226, 0.185688, 0.877226, 0.185688, 0.0557718, 0.276759, 0.0557718, 0.24974, 0.0834811, 0.276759, 0.0834811, 0.24974, 0.0557718, 0.276759, 0.0557718, 0.24974, 0.083481, 0.276759, 0.083481, 0.24974, 0.0696264, 0.263249, 0.0696264, 0.263249, 0.0191624, 0.362939, 0.0191624, 0.33592, 0.0468717, 0.362939, 0.0468717, 0.33592, 0.0191624, 0.362939, 0.0191624, 0.33592, 0.0468717, 0.362939, 0.0468717, 0.33592, 0.0330171, 0.34943, 0.033017, 0.34943, 0.0191623, 0.639198, 0.0191623, 0.612179, 0.0468716, 0.639198, 0.0468716, 0.612179, 0.0191623, 0.639198, 0.0191623, 0.612179, 0.0468715, 0.639198, 0.0468715, 0.612179, 0.0330169, 0.625688, 0.0330169, 0.625688, 0.863371, 0.80294, 0.863371, 0.775921, 0.891081, 0.80294, 0.891081, 0.775921, 0.863371, 0.80294, 0.863371, 0.775921, 0.89108, 0.80294, 0.891081, 0.775921, 0.877226, 0.78943, 0.877226, 0.78943, 0.795727, 0.133238, 0.795727, 0.106219, 0.823436, 0.133238, 0.823436, 0.106219, 0.795727, 0.133238, 0.795727, 0.106219, 0.823436, 0.133238, 0.823436, 0.106219, 0.809582, 0.119729, 0.809582, 0.119729, 0.971791, 0.454428, 0.971791, 0.427409, 0.9995, 0.454428, 0.9995, 0.427409, 0.971791, 0.454428, 0.971791, 0.427409, 0.9995, 0.454428, 0.9995, 0.427409, 0.985646, 0.440919, 0.985646, 0.440919, 0.971791, 0.54771, 0.971791, 0.52069, 0.9995, 0.54771, 0.9995, 0.52069, 0.971791, 0.54771, 0.971791, 0.52069, 0.9995, 0.54771, 0.9995, 0.52069, 0.985646, 0.5342, 0.985646, 0.5342, 0.953128, 0.639198, 0.953128, 0.612179, 0.980837, 0.639198, 0.980837, 0.612179, 0.953128, 0.639198, 0.953128, 0.612179, 0.980837, 0.639198, 0.980837, 0.612179, 0.966983, 0.625689, 0.966983, 0.625689, 0.256106, 0.0814137, 0.256106, 0.0543945, 0.283815, 0.0814137, 0.283815, 0.0543945, 0.256106, 0.0814137, 0.256106, 0.0543945, 0.283815, 0.0814137, 0.283815, 0.0543945, 0.269961, 0.0679041, 0.269961, 0.0679041, 0.0557717, 0.725379, 0.0557717, 0.69836, 0.083481, 0.725379, 0.083481, 0.69836, 0.0557716, 0.725379, 0.0557716, 0.69836, 0.0834809, 0.725379, 0.0834809, 0.69836, 0.0696263, 0.711869, 0.0696263, 0.711869, 0.533977, 0.974619, 0.533977, 0.9476, 0.561687, 0.974619, 0.561687, 0.9476, 0.533977, 0.974619, 0.533977, 0.9476, 0.561687, 0.974619, 0.561687, 0.9476, 0.547832, 0.961109, 0.547832, 0.961109, 0.344488, 0.956421, 0.344488, 0.929402, 0.372197, 0.956421, 0.372197, 0.929402, 0.344488, 0.956421, 0.344488, 0.929402, 0.372197, 0.956421, 0.372197, 0.929402, 0.358342, 0.942911, 0.358342, 0.942911, 0.716185, 0.920724, 0.716185, 0.893705, 0.743894, 0.920724, 0.743894, 0.893705, 0.716185, 0.920724, 0.716185, 0.893705, 0.743894, 0.920724, 0.743894, 0.893705, 0.73004, 0.907214, 0.73004, 0.907214, 0.795727, 0.868899, 0.795727, 0.84188, 0.823436, 0.868899, 0.823436, 0.84188, 0.795727, 0.868899, 0.795727, 0.84188, 0.823436, 0.868899, 0.823436, 0.84188, 0.809581, 0.85539, 0.809581, 0.85539, 0.627803, 0.956421, 0.627803, 0.929402, 0.655512, 0.956421, 0.655512, 0.929402, 0.627803, 0.956421, 0.627803, 0.929402, 0.655512, 0.956421, 0.655512, 0.929402, 0.641658, 0.942911, 0.641658, 0.942911, 0.916519, 0.725379, 0.916519, 0.69836, 0.944228, 0.725379, 0.944228, 0.69836, 0.916519, 0.725379, 0.916519, 0.69836, 0.944228, 0.725379, 0.944228, 0.69836, 0.930374, 0.711869, 0.930374, 0.711869, 0.344488, 0.0457167, 0.344488, 0.0186976, 0.372197, 0.0457167, 0.372197, 0.0186976, 0.344488, 0.0457167, 0.344488, 0.0186976, 0.372197, 0.0457167, 0.372197, 0.0186976, 0.358342, 0.0322071, 0.358342, 0.0322071, 0.438314, 0.0275186, 0.438314, 0.000499487, 0.466023, 0.0275186, 0.466023, 0.000499487, 0.438314, 0.0275186, 0.438314, 0.000499487, 0.466023, 0.0275186, 0.466023, 0.000499487, 0.452168, 0.014009, 0.452168, 0.014009, 0.533978, 0.0275186, 0.533978, 0.000499487, 0.561687, 0.0275186, 0.561687, 0.000499487, 0.533978, 0.0275186, 0.533978, 0.000499487, 0.561687, 0.0275186, 0.561687, 0.000499487, 0.547832, 0.014009, 0.547832, 0.014009, 0.627803, 0.0457168, 0.627803, 0.0186976, 0.655513, 0.0457168, 0.655513, 0.0186976, 0.627803, 0.0457168, 0.627803, 0.0186976, 0.655513, 0.0457168, 0.655513, 0.0186976, 0.641658, 0.0322072, 0.641658, 0.0322072]; + indices = new [0, 8, 24, 1, 9, 25, 1, 10, 25, 2, 11, 26, 2, 12, 26, 3, 13, 27, 3, 14, 27, 4, 15, 28, 4, 16, 28, 5, 17, 29, 5, 18, 29, 6, 19, 30, 6, 20, 30, 7, 21, 31, 7, 22, 31, 0, 23, 24, 49, 32, 48, 32, 49, 33, 50, 33, 49, 33, 50, 34, 51, 34, 50, 34, 51, 35, 52, 35, 51, 35, 52, 36, 53, 36, 52, 36, 53, 37, 54, 37, 53, 37, 54, 38, 55, 38, 54, 38, 55, 39, 56, 39, 55, 39, 56, 40, 57, 40, 56, 40, 57, 41, 58, 41, 57, 41, 58, 42, 59, 42, 58, 42, 59, 43, 60, 43, 59, 43, 60, 44, 61, 44, 60, 44, 61, 45, 62, 45, 61, 45, 62, 46, 63, 46, 62, 46, 63, 47, 48, 47, 63, 47, 48, 32, 64, 33, 65, 33, 64, 32, 65, 48, 64, 48, 65, 49, 65, 34, 66, 34, 65, 33, 66, 49, 65, 49, 66, 50, 66, 35, 67, 35, 66, 34, 67, 50, 66, 50, 67, 51, 67, 36, 68, 36, 67, 35, 68, 51, 67, 51, 68, 52, 68, 37, 69, 37, 68, 36, 69, 52, 68, 52, 69, 53, 69, 38, 70, 38, 69, 37, 70, 53, 69, 53, 70, 54, 70, 39, 71, 39, 70, 38, 71, 54, 70, 54, 71, 55, 71, 40, 72, 40, 71, 39, 72, 55, 71, 55, 72, 56, 72, 41, 73, 41, 72, 40, 73, 56, 72, 56, 73, 57, 73, 42, 74, 42, 73, 41, 74, 57, 73, 57, 74, 58, 74, 43, 75, 43, 74, 42, 75, 58, 74, 58, 75, 59, 75, 44, 76, 44, 75, 43, 76, 59, 75, 59, 76, 60, 76, 45, 77, 45, 76, 44, 77, 60, 76, 60, 77, 61, 77, 46, 78, 46, 77, 45, 78, 61, 77, 61, 78, 62, 78, 47, 79, 47, 78, 46, 79, 62, 78, 62, 79, 63, 79, 32, 64, 32, 79, 47, 64, 63, 79, 63, 64, 48, 80, 81, 83, 81, 80, 82, 82, 84, 81, 84, 82, 85, 84, 83, 81, 83, 84, 86, 80, 85, 82, 85, 80, 87, 84, 87, 86, 87, 84, 85, 88, 89, 91, 89, 88, 90, 94, 95, 96, 95, 94, 93, 97, 98, 100, 98, 97, 99, 96, 101, 94, 101, 96, 102, 102, 98, 108, 102, 100, 98, 100, 106, 109, 102, 106, 100, 102, 105, 106, 102, 103, 105, 96, 103, 102, 95, 103, 96, 95, 104, 103, 104, 109, 106, 104, 107, 109, 95, 107, 104, 107, 108, 98, 95, 108, 107, 92, 95, 93, 95, 92, 108, 108, 101, 102, 101, 108, 92, 99, 107, 98, 107, 99, 110, 107, 111, 109, 111, 107, 110, 97, 110, 99, 110, 97, 111, 88, 106, 105, 106, 88, 91, 111, 100, 109, 100, 111, 97, 106, 89, 104, 89, 106, 91, 104, 90, 103, 90, 104, 89, 90, 105, 103, 105, 90, 88, 125, 127, 126, 127, 125, 124, 93, 113, 92, 113, 93, 112, 116, 118, 117, 118, 116, 119, 101, 115, 94, 115, 101, 114, 94, 112, 93, 94, 123, 112, 94, 122, 123, 94, 115, 122, 92, 117, 101, 117, 92, 116, 101, 118, 114, 118, 101, 117, 121, 119, 113, 120, 119, 121, 114, 119, 120, 114, 118, 119, 113, 116, 92, 116, 113, 119, 114, 122, 115, 122, 114, 120, 112, 121, 113, 121, 112, 123, 121, 125, 120, 125, 121, 124, 120, 126, 122, 126, 120, 125, 122, 127, 123, 127, 122, 126, 123, 124, 121, 124, 123, 127, 139, 128, 134, 128, 139, 129, 131, 129, 132, 129, 131, 128, 136, 133, 135, 133, 136, 130, 133, 137, 135, 137, 133, 131, 130, 131, 133, 131, 130, 128, 134, 135, 137, 135, 134, 136, 138, 134, 137, 134, 138, 139, 131, 138, 137, 138, 131, 132, 134, 130, 136, 130, 134, 128, 140, 141, 143, 141, 140, 142, 144, 145, 147, 145, 144, 146, 148, 149, 151, 149, 148, 150, 152, 153, 155, 153, 152, 154, 156, 154, 158, 154, 156, 157, 159, 152, 155, 152, 159, 140, 155, 160, 161, 160, 155, 153, 159, 142, 140, 142, 159, 162, 163, 164, 166, 164, 163, 165, 167, 149, 162, 149, 167, 151, 168, 157, 156, 157, 168, 169, 162, 147, 142, 147, 162, 149, 169, 166, 157, 166, 169, 163, 150, 147, 149, 147, 150, 144, 170, 154, 152, 154, 170, 158, 157, 153, 154, 153, 157, 166, 140, 170, 152, 170, 140, 143, 169, 150, 163, 150, 169, 144, 171, 162, 159, 162, 171, 167, 171, 155, 161, 155, 171, 159, 166, 160, 153, 160, 166, 164, 142, 145, 141, 145, 142, 147, 168, 144, 169, 144, 168, 146, 163, 148, 165, 148, 163, 150, 172, 173, 174, 173, 172, 175, 176, 177, 178, 177, 176, 179, 180, 181, 182, 181, 180, 183, 184, 185, 186, 185, 184, 187, 188, 186, 189, 186, 188, 190, 191, 184, 172, 184, 191, 187, 187, 192, 185, 192, 187, 193, 191, 174, 194, 174, 191, 172, 195, 196, 197, 196, 195, 198, 199, 181, 183, 181, 199, 194, 200, 189, 201, 189, 200, 188, 194, 179, 181, 179, 194, 174, 201, 198, 195, 198, 201, 189, 182, 179, 176, 179, 182, 181, 202, 186, 190, 186, 202, 184, 189, 185, 198, 185, 189, 186, 172, 202, 175, 202, 172, 184, 201, 182, 176, 182, 201, 195, 203, 194, 199, 194, 203, 191, 203, 187, 191, 187, 203, 193, 198, 192, 196, 192, 198, 185, 174, 177, 179, 177, 174, 173, 200, 176, 178, 176, 200, 201, 195, 180, 182, 180, 195, 197, 215, 204, 205, 204, 215, 210, 207, 205, 204, 205, 207, 208, 212, 209, 206, 209, 212, 211, 209, 213, 207, 213, 209, 211, 206, 207, 204, 207, 206, 209, 210, 211, 212, 211, 210, 213, 214, 210, 215, 210, 214, 213, 207, 214, 208, 214, 207, 213, 210, 206, 204, 206, 210, 212, 216, 219, 218, 219, 216, 217, 216, 220, 221, 220, 216, 218, 223, 233, 224, 223, 217, 233, 223, 219, 217, 222, 219, 223, 218, 222, 220, 222, 218, 219, 220, 223, 221, 223, 220, 222, 225, 226, 228, 226, 225, 227, 226, 229, 230, 229, 226, 227, 231, 232, 234, 232, 231, 233, 232, 235, 236, 235, 232, 233, 237, 238, 239, 238, 237, 240, 243, 244, 242, 244, 243, 245, 246, 247, 248, 247, 246, 249, 245, 250, 251, 250, 245, 243, 0x0101, 0x0100, 247, 244, 0x0100, 0x0101, 258, 253, 0xFF, 0x0100, 253, 258, 244, 253, 0x0100, 244, 252, 253, 0xFF, 249, 258, 247, 251, 0x0101, 249, 251, 247, 0xFF, 251, 249, 254, 251, 0xFF, 252, 251, 254, 252, 245, 251, 244, 245, 252, 241, 244, 0x0101, 244, 241, 242, 0x0101, 250, 241, 250, 0x0101, 251, 248, 0x0100, 259, 0x0100, 248, 247, 0x0100, 260, 259, 260, 0x0100, 258, 246, 259, 260, 259, 246, 248, 237, 0xFF, 240, 0xFF, 237, 254, 260, 249, 246, 249, 260, 258, 0xFF, 238, 240, 238, 0xFF, 253, 253, 239, 238, 239, 253, 252, 239, 254, 237, 254, 239, 252, 274, 276, 273, 276, 274, 275, 242, 262, 261, 262, 242, 241, 265, 267, 268, 267, 265, 266, 250, 264, 263, 264, 250, 243, 243, 271, 264, 243, 272, 271, 243, 261, 272, 243, 242, 261, 241, 266, 265, 266, 241, 250, 250, 267, 266, 267, 250, 263, 263, 268, 267, 268, 270, 262, 268, 269, 270, 263, 269, 268, 262, 265, 268, 265, 262, 241, 263, 271, 269, 271, 263, 264, 261, 270, 272, 270, 261, 262, 270, 274, 273, 274, 270, 269, 269, 275, 274, 275, 269, 271, 271, 276, 275, 276, 271, 272, 272, 273, 276, 273, 272, 270, 277, 278, 280, 278, 277, 279, 283, 284, 285, 284, 283, 282, 286, 287, 289, 287, 286, 288, 285, 290, 283, 290, 285, 291, 291, 287, 297, 291, 289, 287, 289, 295, 298, 291, 295, 289, 291, 294, 295, 291, 292, 294, 285, 292, 291, 284, 292, 285, 284, 293, 292, 293, 298, 295, 293, 296, 298, 284, 296, 293, 296, 297, 287, 284, 297, 296, 281, 284, 282, 284, 281, 297, 297, 290, 291, 290, 297, 281, 288, 296, 287, 296, 288, 299, 296, 300, 298, 300, 296, 299, 286, 299, 288, 299, 286, 300, 277, 295, 294, 295, 277, 280, 300, 289, 298, 289, 300, 286, 295, 278, 293, 278, 295, 280, 293, 279, 292, 279, 293, 278, 279, 294, 292, 294, 279, 277, 314, 316, 315, 316, 314, 313, 282, 302, 281, 302, 282, 301, 305, 307, 306, 307, 305, 308, 290, 304, 283, 304, 290, 303, 283, 301, 282, 283, 312, 301, 283, 311, 312, 283, 304, 311, 281, 306, 290, 306, 281, 305, 290, 307, 303, 307, 290, 306, 310, 308, 302, 309, 308, 310, 303, 308, 309, 303, 307, 308, 302, 305, 281, 305, 302, 308, 303, 311, 304, 311, 303, 309, 301, 310, 302, 310, 301, 312, 310, 314, 309, 314, 310, 313, 309, 315, 311, 315, 309, 314, 311, 316, 312, 316, 311, 315, 312, 313, 310, 313, 312, 316, 317, 318, 319, 318, 317, 320, 323, 324, 322, 324, 323, 325, 326, 327, 328, 327, 326, 329, 325, 330, 331, 330, 325, 323, 337, 336, 327, 324, 336, 337, 338, 333, 335, 336, 333, 338, 324, 333, 336, 324, 332, 333, 335, 329, 338, 327, 331, 337, 329, 331, 327, 335, 331, 329, 334, 331, 335, 332, 331, 334, 332, 325, 331, 324, 325, 332, 321, 324, 337, 324, 321, 322, 337, 330, 321, 330, 337, 331, 328, 336, 339, 336, 328, 327, 336, 340, 339, 340, 336, 338, 326, 339, 340, 339, 326, 328, 317, 335, 320, 335, 317, 334, 340, 329, 326, 329, 340, 338, 335, 318, 320, 318, 335, 333, 333, 319, 318, 319, 333, 332, 319, 334, 317, 334, 319, 332, 354, 356, 353, 356, 354, 355, 322, 342, 341, 342, 322, 321, 345, 347, 348, 347, 345, 346, 330, 344, 343, 344, 330, 323, 323, 351, 344, 323, 352, 351, 323, 341, 352, 323, 322, 341, 321, 346, 345, 346, 321, 330, 330, 347, 346, 347, 330, 343, 343, 348, 347, 348, 350, 342, 348, 349, 350, 343, 349, 348, 342, 345, 348, 345, 342, 321, 343, 351, 349, 351, 343, 344, 341, 350, 352, 350, 341, 342, 350, 354, 353, 354, 350, 349, 349, 355, 354, 355, 349, 351, 351, 356, 355, 356, 351, 352, 352, 353, 356, 353, 352, 350, 357, 366, 358, 366, 357, 365, 358, 367, 359, 367, 358, 366, 359, 368, 360, 368, 359, 367, 360, 369, 361, 369, 360, 368, 361, 370, 362, 370, 361, 369, 362, 371, 363, 371, 362, 370, 363, 372, 364, 372, 363, 371, 364, 365, 357, 365, 364, 372, 363, 361, 362, 361, 359, 360, 359, 357, 358, 361, 357, 359, 363, 357, 361, 364, 357, 363, 374, 376, 375, 376, 378, 377, 378, 380, 379, 376, 380, 378, 374, 380, 376, 373, 380, 374, 365, 374, 366, 374, 365, 373, 366, 375, 367, 375, 366, 374, 367, 376, 368, 376, 367, 375, 368, 377, 369, 377, 368, 376, 369, 378, 370, 378, 369, 377, 370, 379, 371, 379, 370, 378, 371, 380, 372, 380, 371, 379, 372, 373, 365, 373, 372, 380, 381, 382, 384, 382, 381, 383, 385, 382, 386, 382, 385, 384, 385, 387, 388, 387, 385, 386, 388, 389, 390, 389, 388, 387, 389, 391, 390, 391, 389, 392, 381, 390, 391, 384, 390, 381, 385, 390, 384, 385, 388, 390, 392, 381, 391, 381, 392, 383, 389, 383, 392, 389, 382, 383, 389, 386, 382, 389, 387, 386, 393, 398, 397, 398, 393, 394, 394, 400, 398, 400, 394, 396, 396, 399, 400, 399, 396, 395, 395, 397, 399, 397, 395, 393, 393, 401, 394, 394, 401, 396, 396, 401, 395, 395, 401, 393, 397, 402, 399, 399, 402, 400, 400, 402, 398, 398, 402, 397, 403, 408, 407, 408, 403, 404, 404, 410, 408, 410, 404, 406, 406, 409, 410, 409, 406, 405, 405, 407, 409, 407, 405, 403, 403, 411, 404, 404, 411, 406, 406, 411, 405, 405, 411, 403, 407, 412, 409, 409, 412, 410, 410, 412, 408, 408, 412, 407, 413, 418, 417, 418, 413, 414, 414, 420, 418, 420, 414, 416, 416, 419, 420, 419, 416, 415, 415, 417, 419, 417, 415, 413, 413, 421, 414, 414, 421, 416, 416, 421, 415, 415, 421, 413, 417, 422, 419, 419, 422, 420, 420, 422, 418, 418, 422, 417, 423, 428, 427, 428, 423, 424, 424, 430, 428, 430, 424, 426, 426, 429, 430, 429, 426, 425, 425, 427, 429, 427, 425, 423, 423, 431, 424, 424, 431, 426, 426, 431, 425, 425, 431, 423, 427, 432, 429, 429, 432, 430, 430, 432, 428, 428, 432, 427, 433, 438, 437, 438, 433, 434, 434, 440, 438, 440, 434, 436, 436, 439, 440, 439, 436, 435, 435, 437, 439, 437, 435, 433, 433, 441, 434, 434, 441, 436, 436, 441, 435, 435, 441, 433, 437, 442, 439, 439, 442, 440, 440, 442, 438, 438, 442, 437, 443, 448, 447, 448, 443, 444, 444, 450, 448, 450, 444, 446, 446, 449, 450, 449, 446, 445, 445, 447, 449, 447, 445, 443, 443, 451, 444, 444, 451, 446, 446, 451, 445, 445, 451, 443, 447, 452, 449, 449, 452, 450, 450, 452, 448, 448, 452, 447, 453, 458, 457, 458, 453, 454, 454, 460, 458, 460, 454, 456, 456, 459, 460, 459, 456, 455, 455, 457, 459, 457, 455, 453, 453, 461, 454, 454, 461, 456, 456, 461, 455, 455, 461, 453, 457, 462, 459, 459, 462, 460, 460, 462, 458, 458, 462, 457, 463, 468, 467, 468, 463, 464, 464, 470, 468, 470, 464, 466, 466, 469, 470, 469, 466, 465, 465, 467, 469, 467, 465, 463, 463, 471, 464, 464, 471, 466, 466, 471, 465, 465, 471, 463, 467, 472, 469, 469, 472, 470, 470, 472, 468, 468, 472, 467, 473, 478, 477, 478, 473, 474, 474, 480, 478, 480, 474, 476, 476, 479, 480, 479, 476, 475, 475, 477, 479, 477, 475, 473, 473, 481, 474, 474, 481, 476, 476, 481, 475, 475, 481, 473, 477, 482, 479, 479, 482, 480, 480, 482, 478, 478, 482, 477, 483, 488, 487, 488, 483, 484, 484, 490, 488, 490, 484, 486, 486, 489, 490, 489, 486, 485, 485, 487, 489, 487, 485, 483, 483, 491, 484, 484, 491, 486, 486, 491, 485, 485, 491, 483, 487, 492, 489, 489, 492, 490, 490, 492, 488, 488, 492, 487, 493, 498, 497, 498, 493, 494, 494, 500, 498, 500, 494, 496, 496, 499, 500, 499, 496, 495, 495, 497, 499, 497, 495, 493, 493, 501, 494, 494, 501, 496, 496, 501, 495, 495, 501, 493, 497, 502, 499, 499, 502, 500, 500, 502, 498, 498, 502, 497, 503, 508, 507, 508, 503, 504, 504, 510, 508, 510, 504, 506, 506, 509, 510, 509, 506, 505, 505, 507, 509, 507, 505, 503, 503, 511, 504, 504, 511, 506, 506, 511, 505, 505, 511, 503, 507, 0x0200, 509, 509, 0x0200, 510, 510, 0x0200, 508, 508, 0x0200, 507, 513, 518, 517, 518, 513, 0x0202, 0x0202, 520, 518, 520, 0x0202, 516, 516, 519, 520, 519, 516, 515, 515, 517, 519, 517, 515, 513, 513, 521, 0x0202, 0x0202, 521, 516, 516, 521, 515, 515, 521, 513, 517, 522, 519, 519, 522, 520, 520, 522, 518, 518, 522, 517, 523, 528, 527, 528, 523, 524, 524, 530, 528, 530, 524, 526, 526, 529, 530, 529, 526, 525, 525, 527, 529, 527, 525, 523, 523, 531, 524, 524, 531, 526, 526, 531, 525, 525, 531, 523, 527, 532, 529, 529, 532, 530, 530, 532, 528, 528, 532, 527, 533, 538, 537, 538, 533, 534, 534, 540, 538, 540, 534, 536, 536, 539, 540, 539, 536, 535, 535, 537, 539, 537, 535, 533, 533, 541, 534, 534, 541, 536, 536, 541, 535, 535, 541, 533, 537, 542, 539, 539, 542, 540, 540, 542, 538, 538, 542, 537, 543, 548, 547, 548, 543, 544, 544, 550, 548, 550, 544, 546, 546, 549, 550, 549, 546, 545, 545, 547, 549, 547, 545, 543, 543, 551, 544, 544, 551, 546, 546, 551, 545, 545, 551, 543, 547, 552, 549, 549, 552, 550, 550, 552, 548, 548, 552, 547, 553, 558, 557, 558, 553, 554, 554, 560, 558, 560, 554, 556, 556, 559, 560, 559, 556, 555, 555, 557, 559, 557, 555, 553, 553, 561, 554, 554, 561, 556, 556, 561, 555, 555, 561, 553, 557, 562, 559, 559, 562, 560, 560, 562, 558, 558, 562, 557, 563, 568, 567, 568, 563, 564, 564, 570, 568, 570, 564, 566, 566, 569, 570, 569, 566, 565, 565, 567, 569, 567, 565, 563, 563, 571, 564, 564, 571, 566, 566, 571, 565, 565, 571, 563, 567, 572, 569, 569, 572, 570, 570, 572, 568, 568, 572, 567, 573, 578, 577, 578, 573, 574, 574, 580, 578, 580, 574, 576, 576, 579, 580, 579, 576, 575, 575, 577, 579, 577, 575, 573, 573, 581, 574, 574, 581, 576, 576, 581, 575, 575, 581, 573, 577, 582, 579, 579, 582, 580, 580, 582, 578, 578, 582, 577, 583, 588, 587, 588, 583, 584, 584, 590, 588, 590, 584, 586, 586, 589, 590, 589, 586, 585, 585, 587, 589, 587, 585, 583, 583, 591, 584, 584, 591, 586, 586, 591, 585, 585, 591, 583, 587, 592, 589, 589, 592, 590, 590, 592, 588, 588, 592, 587, 593, 598, 597, 598, 593, 594, 594, 600, 598, 600, 594, 596, 596, 599, 600, 599, 596, 595, 595, 597, 599, 597, 595, 593, 593, 601, 594, 594, 601, 596, 596, 601, 595, 595, 601, 593, 597, 602, 599, 599, 602, 600, 600, 602, 598, 598, 602, 597, 603, 608, 607, 608, 603, 604, 604, 610, 608, 610, 604, 606, 606, 609, 610, 609, 606, 605, 605, 607, 609, 607, 605, 603, 603, 611, 604, 604, 611, 606, 606, 611, 605, 605, 611, 603, 607, 612, 609, 609, 612, 610, 610, 612, 608, 608, 612, 607, 613, 618, 617, 618, 613, 614, 614, 620, 618, 620, 614, 616, 616, 619, 620, 619, 616, 615, 615, 617, 619, 617, 615, 613, 613, 621, 614, 614, 621, 616, 616, 621, 615, 615, 621, 613, 617, 622, 619, 619, 622, 620, 620, 622, 618, 618, 622, 617, 623, 628, 627, 628, 623, 624, 624, 630, 628, 630, 624, 626, 626, 629, 630, 629, 626, 625, 625, 627, 629, 627, 625, 623, 623, 631, 624, 624, 631, 626, 626, 631, 625, 625, 631, 623, 627, 632, 629, 629, 632, 630, 630, 632, 628, 628, 632, 627, 633, 638, 637, 638, 633, 634, 634, 640, 638, 640, 634, 636, 636, 639, 640, 639, 636, 635, 635, 637, 639, 637, 635, 633, 633, 641, 634, 634, 641, 636, 636, 641, 635, 635, 641, 633, 637, 642, 639, 639, 642, 640, 640, 642, 638, 638, 642, 637, 643, 648, 647, 648, 643, 644, 644, 650, 648, 650, 644, 646, 646, 649, 650, 649, 646, 645, 645, 647, 649, 647, 645, 643, 643, 651, 644, 644, 651, 646, 646, 651, 645, 645, 651, 643, 647, 652, 649, 649, 652, 650, 650, 652, 648, 648, 652, 647, 653, 658, 657, 658, 653, 654, 654, 660, 658, 660, 654, 656, 656, 659, 660, 659, 656, 655, 655, 657, 659, 657, 655, 653, 653, 661, 654, 654, 661, 656, 656, 661, 655, 655, 661, 653, 657, 662, 659, 659, 662, 660, 660, 662, 658, 658, 662, 657, 663, 668, 667, 668, 663, 664, 664, 670, 668, 670, 664, 666, 666, 669, 670, 669, 666, 665, 665, 667, 669, 667, 665, 663, 663, 671, 664, 664, 671, 666, 666, 671, 665, 665, 671, 663, 667, 672, 669, 669, 672, 670, 670, 672, 668, 668, 672, 667, 673, 678, 677, 678, 673, 674, 674, 680, 678, 680, 674, 676, 676, 679, 680, 679, 676, 675, 675, 677, 679, 677, 675, 673, 673, 681, 674, 674, 681, 676, 676, 681, 675, 675, 681, 673, 677, 682, 679, 679, 682, 680, 680, 682, 678, 678, 682, 677, 683, 688, 687, 688, 683, 684, 684, 690, 688, 690, 684, 686, 686, 689, 690, 689, 686, 685, 685, 687, 689, 687, 685, 683, 683, 691, 684, 684, 691, 686, 686, 691, 685, 685, 691, 683, 687, 692, 689, 689, 692, 690, 690, 692, 688, 688, 692, 687, 693, 698, 697, 698, 693, 694, 694, 700, 698, 700, 694, 696, 696, 699, 700, 699, 696, 695, 695, 697, 699, 697, 695, 693, 693, 701, 694, 694, 701, 696, 696, 701, 695, 695, 701, 693, 697, 702, 699, 699, 702, 700, 700, 702, 698, 698, 702, 697, 703, 708, 707, 708, 703, 704, 704, 710, 708, 710, 704, 706, 706, 709, 710, 709, 706, 705, 705, 707, 709, 707, 705, 703, 703, 711, 704, 704, 711, 706, 706, 711, 705, 705, 711, 703, 707, 712, 709, 709, 712, 710, 710, 712, 708, 708, 712, 707]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MI6.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MI6.as new file mode 100644 index 0000000..3d2a0c4 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MI6.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class MI6 extends Stage3DData { + + public function MI6(){ + vertices = new [-391.452, 282.8, -14.9717, -395.878, 282.8, -12.4371, -486.657, 282.8, -181.208, -473.184, 282.8, -169.555, -388.115, 282.8, -9.14427, -462.216, 282.8, -127.667, -400.297, 215, 16.0486, -498.873, 169.2, -155.234, -498.873, 215, -155.234, -495.496, 60.7, -196.643, -495.496, 169.2, -196.643, -493.011, 60.7, -192.304, -404.474, 60.7, -248.823, -404.474, 0, -248.823, -288.924, 0, -48.0484, -495.496, 0, -196.643, -422.616, 169.2, -238.433, -420.109, 169.2, -234.055, -457.53, 215, -130.35, -395.878, 215, -12.4371, -388.115, 215, -9.14427, -288.924, 215, -48.0484, -315.212, 215, -50.896, -387.365, 215, -219.095, -432.756, 215, -77.0315, -399.544, 215, -29.0996, -387.365, 169.2, -219.095, -387.428, 169.2, -219.059, -404.474, 169.2, -248.823, -515.846, 0, -184.726, -403.969, 282.8, -26.565, -399.544, 274.8, -29.0996, -394.25, 274.8, -32.1311, -394.25, 282.8, -32.1311, -414.974, 274.8, -68.3169, -432.756, 282.8, -77.0315, -428.418, 273.5, -79.5164, -422.864, 273.5, -82.6971, -422.864, 282.8, -82.6971, -443.588, 273.5, -118.883, -457.53, 274.4, -130.35, -452.411, 274.4, -133.282, -493.011, 255.272, -192.304, -473.184, 274.4, -169.555, -481.016, 255.272, -184.438, -487.371, 282.8, -195.534, -487.371, 255.272, -195.534, -481.016, 282.8, -184.438, -420.109, 60.7, -234.055, -405.57, 169.2, -208.669, -420.109, 282.8, -234.055, -315.212, 282.8, -50.896, -420.267, 215, -65.2854, -424.606, 282.8, -62.8005, -405.57, 215, -208.669, -391.452, 215, -14.9717, -478.473, 169.2, -166.917, -478.473, 215, -166.917, -478.304, 282.8, -166.623, -462.216, 215, -127.667, -453.827, 215, -113.019, -443.588, 282.8, -118.883, -453.827, 282.8, -113.019, -414.974, 282.8, -68.3169, -452.411, 282.8, -133.282, -424.606, 215, -62.8005, -493.011, 169.2, -192.304, -428.418, 215, -79.5164, -403.969, 215, -26.565, -449.141, 215, -115.702, -486.657, 255.272, -181.208, -449.141, 273.5, -115.702, -478.304, 274.4, -166.623, -420.267, 274.8, -65.2854, -422.605, 60.7, -238.413, -515.846, 169.2, -184.726, -368.751, 123.182, 210.198, -426.03, 123.182, 21.0197, -426.03, 7.32422E-5, 21.0197, -368.751, 7.32422E-5, 210.198, -489.986, 67.5001, -145.004, -610.276, 67.5001, -76.1136, -492.73, 67.5001, -149.795, -621.073, 67.5001, -76.2923, -326.518, 67.5001, 140.429, -335.59, 67.5001, 124.588, -335.59, 58.7001, 124.588, -394.49, 165.5, 12.7066, 67.898, 7.32422E-5, 236.021, 118.243, 360.24, 323.928, 118.243, 308.44, 323.928, 179.271, 7.32422E-5, 430.49, 161.705, 181.467, 399.817, 179.271, 181.467, 430.49, 161.705, 308.44, 399.817, 147.858, 7.32422E-5, 448.48, 147.858, 181.467, 448.48, -263.186, 301.44, -342.084, -294.599, 7.32422E-5, -324.094, -263.186, 7.32422E-5, -342.084, -294.599, 301.44, -324.094, -278.965, 252.14, -249.6, -247.339, 301.44, -241.573, -215.926, 301.44, -259.563, -247.339, 360.24, -241.573, 130.292, 308.44, 417.807, 86.8297, 308.44, 341.919, 86.8297, 360.24, 341.919, -176.174, 341.34, -117.313, -164.314, 341.34, -96.6025, -140.592, 341.34, -55.1824, -128.731, 341.34, -34.4725, -116.871, 341.34, -13.7624, -93.1493, 341.34, 27.6576, -67.444, 341.34, 72.5416, -55.5768, 341.34, 93.2629, -55.5768, 252.14, 93.2629, -19.9752, 341.34, 155.427, -19.9752, 252.14, 155.427, 27.4937, 341.34, 238.312, 39.3609, 341.34, 259.033, 63.0953, 341.34, 300.476, 51.2281, 252.14, 279.755, 74.9625, 341.34, 321.197, 130.292, 181.467, 417.807, 63.0953, 252.14, 300.476, 15.6265, 252.14, 217.591, -93.1493, 252.14, 27.6576, -116.871, 252.14, -13.7624, -235.478, 252.14, -220.863, -166.33, 7.32422E-5, -172.964, -166.33, 360.24, -172.964, -82.1568, 7.32422E-5, -221.171, -82.1568, 360.24, -221.171, 152.071, 7.32422E-5, 187.815, -47.7695, 252.14, 154.091, -47.7695, 157.44, 154.091, -154.981, 157.44, -33.1109, -225.27, 157.44, 7.14401, -225.27, 259.74, 7.14401, -154.981, 259.74, -33.1109, -118.059, 259.74, 194.345, -118.059, 157.44, 194.345, -47.7695, 259.74, 154.091, -192.057, 259.74, 112.424, -217.148, 157.44, 32.8876, -219.566, 259.74, 9.37294, -134.627, 259.74, -44.7673, -132.258, 259.74, -40.6293, -187.821, 259.74, 109.998, -117.095, 259.74, 188.298, -29.7861, 259.74, 138.296, -27.4161, 259.74, 142.434, -134.627, 252.14, -44.7673, -136.153, 157.44, 174.313, 224.435, 534.012, -287.025, 356.992, 534.012, -56.6494, 133.694, 204.674, -234.813, 357.03, 204.688, -56.6714, -231.946, 123.182, 361.731, -227.346, 123.182, 356.501, -231.946, 7.32422E-5, 361.731, -176.099, 238.437, 19.7519, -362.59, 117.882, 206.669, -419.201, 123.182, 19.7003, -362.59, 123.182, 206.669, -394.49, 157.44, 12.7066, -207.645, 165.5, 337.362, 12.8469, 157.44, 210.465, -173.998, 7.32422E-5, -114.19, -400.297, 117.882, 16.0486, -400.297, 165.5, 16.0486, 75.3225, 7.32422E-5, 369.021, -278.965, 7.32422E-5, -249.6, -211.757, 252.14, -179.443, -188.035, 252.14, -138.023, -176.174, 252.14, -117.313, -164.314, 252.14, -96.6025, -152.453, 252.14, -75.8925, -140.592, 252.14, -55.1824, -134.627, 252.14, -44.7673, -132.258, 252.14, -40.6293, -116.871, 252.14, -13.7624, -105.01, 252.14, 6.9476, -93.1493, 252.14, 27.6576, -55.5768, 252.14, 93.2629, -31.8423, 252.14, 134.706, -29.7861, 252.14, 138.296, -27.4161, 252.14, 142.434, -8.10797, 252.14, 176.148, 15.6265, 252.14, 217.591, 27.4937, 252.14, 238.312, 39.3609, 252.14, 259.033, 63.0953, 252.14, 300.476, 95.6758, 252.14, 357.365, 67.7813, 252.14, 297.792, 79.6485, 252.14, 318.514, 55.914, 252.14, 277.071, 51.2281, 341.34, 279.755, 55.914, 341.34, 277.071, 15.6265, 341.34, 217.591, 18.6636, 341.34, 215.851, 30.5309, 341.34, 236.573, 7.75098, 252.14, 194.583, -8.10797, 341.34, 176.148, 3.75928, 341.34, 196.869, 7.75098, 341.34, 194.583, -16.157, 252.14, 153.24, -31.8423, 341.34, 134.706, -28.0242, 341.34, 132.519, -16.157, 341.34, 153.24, -51.2379, 252.14, 90.778, -43.7096, 341.34, 113.984, -63.539, 341.34, 70.3052, -63.539, 252.14, 70.3052, -89.2443, 252.14, 25.4212, -100.151, 252.14, 4.16455, -112.011, 341.34, -16.5455, -105.01, 341.34, 6.9476, -100.151, 341.34, 4.16455, -122.744, 252.14, -37.9016, -148.201, 252.14, -78.3277, -152.453, 341.34, -75.8925, -148.201, 341.34, -78.3277, -183.002, 252.14, -140.905, -171.141, 252.14, -120.195, -188.035, 341.34, -138.023, -171.141, 341.34, -120.195, -211.757, 341.34, -179.443, -199.896, 341.34, -158.733, -230.532, 252.14, -223.695, -235.478, 341.34, -220.863, -223.617, 341.34, -200.153, -350.241, 113.582, 190.462, -347.279, 113.582, 201.672, -338.973, 113.582, 171.102, -339.108, 113.582, 209.9, -316.709, 113.582, 209.978, -306.019, 113.582, 178.042, -295.633, 113.582, 197.908, -294.886, 113.582, 197.48, -317.151, 158.582, 158.604, -294.886, 158.582, 197.48, -296.452, 158.582, 194.747, -192.057, 238.437, 112.424, -217.148, 238.437, 32.8876, -136.153, 238.437, 174.313, -103.092, 238.437, 146.818, 338.911, 204.688, -88.1621, 224.474, 204.688, -287.047, 258.871, 7.32422E-5, -241.497, 264.651, 208.298, -244.807, 338.238, 7.32422E-5, -102.914, 375.447, 214.103, -308.261, 375.448, 7.32422E-5, -308.261, 454.815, 7.32422E-5, -169.678, 448.933, 204.891, -166.31, 454.815, 214.103, -169.678, 449.163, 214.287, -166.441, 370.784, 144.6, -161.891, 327, 144.6, -238.342, -347.279, 113.582, 201.672, -348.524, 113.582, 196.958, -610.276, 58.7001, -76.1136, -489.986, 58.7001, -145.004, 152.071, 360.24, 187.815, 67.898, 360.24, 236.021, -215.926, 360.24, -259.563, -27.4161, 252.14, 142.434, 75.3225, 252.14, 369.021, -8.10797, 252.14, 176.148, 3.75928, 252.14, 196.869, 39.3609, 252.14, 259.033, 74.9625, 252.14, 321.197, 95.6758, 252.14, 357.365, -344.478, 155.082, 180.857, -344.546, 155.082, 200.107, -337.524, 155.082, 207.178, -337.408, 155.082, 173.835, -327.908, 155.082, 209.79, -315.586, 155.082, 161.337, -318.274, 155.082, 207.245, -258.612, 252.14, -261.256, -154.981, 252.14, -33.1109, -223.617, 252.14, -200.153, -211.757, 252.14, -179.443, -199.896, 252.14, -158.733, -188.035, 252.14, -138.023, -164.314, 252.14, -96.6025, -140.592, 252.14, -55.1824, 369.566, 204.891, -304.892, 344.018, 208.298, -106.224, 369.796, 214.287, -305.024, -213.452, 117.882, 340.704, -227.346, 117.882, 356.501, 12.8469, 157.44, 210.465, -187.821, 252.14, 109.998, -219.566, 252.14, 9.37294, -117.095, 252.14, 188.298, -132.258, 252.14, -40.6293, -128.731, 252.14, -34.4725, -67.444, 252.14, 72.5416, -43.7096, 252.14, 113.984, -29.7861, 252.14, 138.296, -31.8423, 252.14, 134.706, 67.7813, 341.34, 297.792, 79.6485, 341.34, 318.514, 44.0468, 252.14, 256.35, 44.0468, 341.34, 256.35, 18.6636, 252.14, 215.851, 30.5309, 252.14, 236.573, -4.11624, 341.34, 173.862, -4.11624, 252.14, 173.862, -28.0242, 252.14, 132.519, -51.2379, 341.34, 90.778, -39.3707, 252.14, 111.499, -39.3707, 341.34, 111.499, -76.3952, 341.34, 47.8571, -89.2443, 341.34, 25.4212, -112.011, 252.14, -16.5455, -122.744, 341.34, -37.9016, -134.605, 252.14, -58.6116, -134.605, 341.34, -58.6116, -160.062, 252.14, -99.0377, -160.062, 341.34, -99.0377, -183.002, 341.34, -140.905, -195.644, 341.34, -161.168, -207.505, 252.14, -181.878, -207.505, 341.34, -181.878, -195.644, 252.14, -161.168, -218.671, 341.34, -202.985, -230.532, 341.34, -223.695, -218.671, 252.14, -202.985, -327.919, 158.582, 212.94, -316.709, 113.582, 209.978, -327.919, 113.582, 212.94, -316.709, 158.582, 209.978, -339.108, 158.582, 209.9, -339.108, 113.582, 209.9, -347.279, 158.582, 201.672, -350.241, 113.582, 190.462, -350.241, 158.582, 190.462, -347.201, 113.582, 179.272, -347.201, 158.582, 179.272, -338.973, 158.582, 171.102, -338.973, 113.582, 171.102, -318.274, 158.582, 207.245, -327.908, 158.582, 209.79, -337.524, 158.582, 207.178, -344.546, 158.582, 200.107, -347.091, 155.082, 190.473, -347.091, 158.582, 190.473, -344.478, 158.582, 180.857, -337.408, 158.582, 173.835, -315.586, 158.582, 161.337, -296.452, 155.082, 194.747, 133.655, 533.998, -234.791, 266.251, 204.674, -4.43732, 266.212, 533.998, -4.41525, -315.272, 193.382, 213.02, -340.965, 193.382, 168.157, -315.272, 190.782, 213.02, -256.003, 190.782, 179.077, -281.697, 193.382, 134.214, -281.697, 190.782, 134.214, -256.003, 193.382, 179.077, -176.099, 157.44, 19.7519, -103.092, 157.44, 146.818, -191.151, 237.54, 102.045, -189.974, 237.54, 111.231, -185.487, 237.54, 94.7175, -182.647, 237.54, 116.894, -173.461, 237.54, 115.717, -173.461, 157.44, 115.717, -182.647, 157.44, 116.894, -189.974, 157.44, 111.231, -191.151, 157.44, 102.045, -185.487, 157.44, 94.7175, 338.879, 482.312, -88.1435, 391.884, 7.32422E-5, -275.5, 435.667, 142.492, -199.05, 435.667, 7.32422E-5, -199.05, 355.166, 204.698, -206.484, 244.669, 482.312, -251.874, 244.701, 204.688, -251.893, 355.134, 482.322, -206.466, 323.515, 0, -236.346, 367.299, 0, -159.895, 391.883, 142.492, -275.5, -207.645, 165.5, 337.362, 12.8469, 7.32422E-5, 210.465, -258.612, 7.32422E-5, -261.256, -317.151, 113.582, 158.604, -306.019, 113.582, 178.042, -173.998, 157.44, -114.19, -284.581, 67.5, 215.475, -246.711, 0, 579.201, -246.711, 67.5, 579.201, -284.581, -2.44141E-5, 215.475, -118.368, 67.5, 505.698, -118.368, 0, 505.698, -275.509, 58.7, 231.316, -241.402, 67.5, 569.798, -241.402, 58.7, 569.798, -275.509, 67.5, 231.316, -121.112, 58.7, 500.907, -121.112, 67.5, 500.907, -337.609, 190.782, 174.017, -337.609, 113.582, 174.017, -326.936, 190.782, 167.904, -330.365, 190.782, 161.916, -340.965, 154.278, 168.157, -340.965, 161.282, 168.157, -340.965, 190.782, 168.157, -332.751, 154.278, 157.751, -341.039, 154.278, 168.029, -343.424, 154.278, 163.864, -341.994, 127.948, 141.61, -352.668, 113.582, 147.723, -341.994, 113.582, 141.61, -352.668, 127.948, 147.723, -330.292, 190.782, 162.044, -346.456, 136.3, 158.57, -349.736, 127.948, 152.843, -349.736, 136.3, 152.843, -343.424, 145.643, 163.864, -346.456, 145.643, 158.57, -339.062, 127.948, 146.73, -339.062, 136.3, 146.73, -335.782, 136.3, 152.457, -332.751, 145.643, 157.751, -330.292, 161.282, 162.044, -335.782, 145.643, 152.457, -326.936, 113.582, 167.904, -308.095, 190.817, 201.323, -318.768, 190.817, 207.436, -315.339, 190.817, 213.423, -304.739, 154.313, 207.183, -315.339, 154.313, 213.423, -304.739, 161.317, 207.183, -304.739, 190.817, 207.183, -312.954, 154.313, 217.589, -304.666, 154.313, 207.311, -302.28, 154.313, 211.476, -303.71, 127.983, 233.729, -293.037, 113.617, 227.616, -293.037, 127.983, 227.616, -315.413, 190.817, 213.295, -299.249, 136.335, 216.769, -295.969, 127.983, 222.496, -295.969, 136.335, 222.496, -302.28, 145.678, 211.476, -299.249, 145.678, 216.769, -306.642, 127.983, 228.609, -306.642, 136.335, 228.609, -309.922, 136.335, 222.882, -312.954, 145.678, 217.589, -315.413, 161.317, 213.295, -309.922, 145.678, 222.882, -303.71, 113.617, 233.729, -318.768, 113.617, 207.436, -308.095, 113.617, 201.323, -288.16, 190.782, 197.502, -278.702, 190.782, 192.085, -282.23, 190.782, 185.924, -291.689, 190.782, 191.341, -278.702, 157.439, 192.085, -291.689, 157.439, 191.341, -288.16, 157.439, 197.502, -282.23, 157.439, 185.924, -310.321, 190.782, 158.985, -310.321, 157.439, 158.985, -300.862, 190.782, 153.568, -304.391, 190.782, 147.407, -313.85, 190.782, 152.824, -300.862, 157.439, 153.568, -313.85, 157.439, 152.824, -304.391, 157.439, 147.407, -287.736, 190.782, 145.842, -287.736, 157.439, 145.842, -278.277, 190.782, 140.425, -281.805, 190.782, 134.264, -291.264, 190.782, 139.681, -291.264, 157.439, 139.681, -281.805, 157.439, 134.264, -278.277, 157.439, 140.425, -265.769, 190.782, 184.561, -256.31, 157.439, 179.144, -265.769, 157.439, 184.561, -256.31, 190.782, 179.144, -259.839, 190.782, 172.983, -269.298, 190.782, 178.4, -269.298, 157.439, 178.4, -259.839, 157.439, 172.983, -419.408, 113.582, 19.0146, -426.03, 123.182, 21.0197, -426.03, 113.582, 21.0197, -419.408, 123.182, 19.0146, -398.943, 113.582, 15.7872, -419.201, 123.182, 19.7004, -398.943, 117.882, 15.7872, -400.297, 117.882, 16.0487, -326.517, -4.27246E-5, 140.429, -492.73, -4.27246E-5, -149.795, -621.073, -4.27246E-5, -76.2923, -63.2631, 402.161, -174.584, 125.941, 631.344, -214.658, 171.407, 631.344, -135.27, -71.2072, 318.14, -188.456, -71.2072, 381.2, -188.456, -55.3189, 423.122, -160.713, -55.3189, 402.161, -160.713, 23.4526, 318.14, -50.536, 4.22705, 318.14, -84.1056, -5.63007, 318.14, -88.0367, -1.50018, 318.14, -80.8256, 120.325, 444.083, -224.463, -39.4306, 444.083, -132.97, -33.3562, 565.975, -136.449, -33.3562, 583.761, -136.449, 148.051, 318.14, -176.051, -66.774, 349.67, -221.763, -66.774, 318.14, -221.763, -39.4306, 565.975, -132.971, -15.6255, 318.14, -91.4045, -15.6255, 565.975, -91.4045, -47.3748, 423.122, -146.842, -47.3748, 444.083, -146.842, -63.2631, 381.2, -174.584, 125.941, 583.761, -214.658, 104.437, 402.161, -252.206, 96.4926, 381.2, -266.077, 88.5483, 381.2, -279.949, 96.4926, 402.161, -266.077, 104.437, 423.122, -252.206, 120.325, 583.761, -224.463, -9.55115, 565.975, -94.8834, -9.55115, 318.14, -94.8834, 23.4525, 631.344, -50.536, -22.0132, 631.344, -129.924, -22.0132, 583.761, -129.924, 88.5483, 349.67, -279.949, 112.381, 423.122, -238.335, 112.381, 444.083, -238.335, 75.2792, 318.14, -303.118, 75.2792, 349.67, -303.118, 171.407, 318.14, -135.27, -53.5048, 349.67, -198.594, -53.5049, 318.14, -198.594, -1.50018, 583.761, -80.8256, 4.22705, 583.761, -84.1056, 115.522, 402.161, 137.593, 245.83, 631.344, -5.31989, 200.364, 631.344, -84.7075, 123.467, 318.14, 151.464, 123.467, 381.2, 151.464, 107.578, 423.122, 123.721, 107.578, 402.161, 123.721, 52.41, 318.14, 0.0265961, 71.6354, 318.14, 33.5961, 65.9082, 318.14, 36.8762, 251.445, 444.083, 4.48587, 91.6899, 444.083, 95.9788, 97.7642, 565.975, 92.5, 97.7642, 583.761, 92.5, 223.719, 318.14, -43.9267, 154.438, 349.67, 164.495, 154.438, 318.14, 164.495, 91.6899, 565.975, 95.9788, 67.8848, 318.14, 54.4129, 67.8848, 565.975, 54.4128, 99.6341, 423.122, 109.85, 99.6341, 444.083, 109.85, 115.522, 381.2, 137.593, 245.83, 583.761, -5.31989, 267.334, 402.161, 32.2285, 275.278, 381.2, 46.0998, 283.222, 381.2, 59.9711, 275.278, 402.161, 46.0998, 267.334, 423.122, 32.2285, 251.445, 583.761, 4.48587, 73.9592, 565.975, 50.934, 73.9592, 318.14, 50.934, 52.41, 631.344, 0.0265961, 97.8757, 631.344, 79.4142, 97.8757, 583.761, 79.4142, 283.222, 349.67, 59.9711, 259.39, 423.122, 18.3572, 259.39, 444.083, 18.3572, 296.491, 318.14, 83.1405, 296.491, 349.67, 83.1405, 200.364, 318.14, -84.7075, 70.0381, 318.14, 44.0874, 141.169, 349.67, 141.326, 141.169, 318.14, 141.326, 65.9082, 583.761, 36.8762, 71.6354, 583.761, 33.5961, 255.864, 64.6739, 340.49, 255.864, 59.6739, 340.49, 390.523, 59.6739, 261.791, 388.389, 59.6739, 264.591, 390.523, 64.6739, 261.791, 376.43, 59.6739, 280.288, 376.43, 64.6739, 280.288, 393.703, 64.6739, 267.524, 393.781, -1.22608, 267.479, 275.454, 59.6739, 338.118, 313.061, 64.6739, 326.687, 294.483, 64.6739, 333.508, 294.483, 59.6739, 333.508, 347.541, 59.6739, 306.94, 341.96, 317.674, 177.706, 203.985, 213.774, 256.725, 203.985, 317.674, 256.725, 278.803, 317.674, 67.4275, 140.625, 317.674, 146.563, 362.824, 59.6739, 294.368, 330.853, 59.6739, 317.777, 313.061, 59.6739, 326.687, 252.465, 59.6739, 340.901, 341.96, 213.774, 177.706, 393.781, 64.6739, 267.479, 388.389, 64.6739, 264.591, 381.469, 64.6739, 283.581, 367.223, 64.6739, 298.323, 362.824, 64.6739, 294.368, 351.221, 64.6739, 311.486, 347.541, 64.6739, 306.94, 333.748, 64.6739, 322.833, 330.853, 64.6739, 317.777, 315.12, 64.6739, 332.162, 295.669, 64.6739, 339.303, 275.454, 64.6739, 338.118, 275.744, 64.6739, 344.13, 255.704, 64.6739, 346.556, 252.465, 64.6739, 340.901, 315.12, -1.22608, 332.162, 333.748, -1.22608, 322.833, 393.703, -1.22608, 267.524, 381.469, -1.22608, 283.581, 295.669, -1.22608, 339.303, 275.744, -1.22608, 344.13, 255.704, -1.22608, 346.556, 351.221, -1.22608, 311.486, 367.223, -1.22608, 298.323, 250.328, 213.774, 337.169, 388.405, 59.6739, 258.091, 250.328, 59.6739, 337.169, 388.163, 213.774, 257.907, -25.3028, 65.9, -471.51, -25.3028, 60.9, -471.51, -162.218, 60.9, -391.519, -160.037, 60.9, -394.347, -162.218, 65.9, -391.519, -147.815, 60.9, -410.194, -147.815, 65.9, -410.194, -165.396, 65.9, -397.253, -165.476, 0, -397.207, -45.1559, 60.9, -468.988, -83.3169, 65.9, -457.239, -64.4573, 65.9, -464.222, -64.4573, 60.9, -464.222, -118.371, 60.9, -437.163, -113.65, 318.9, -307.437, 26.6247, 318.9, -387.773, -50.493, 318.9, -197.159, 89.9883, 318.9, -277.613, -133.937, 60.9, -424.43, -101.396, 60.9, -448.165, -83.3169, 60.9, -457.239, -21.8586, 60.9, -471.947, -113.65, 215, -307.437, 26.6247, 215, -387.773, -165.476, 65.9, -397.207, -160.037, 65.9, -394.347, -152.894, 65.9, -413.464, -138.363, 65.9, -428.37, -133.937, 65.9, -424.43, -122.065, 65.9, -441.702, -118.371, 65.9, -437.163, -104.292, 65.9, -453.221, -101.396, 65.9, -448.165, -85.3622, 65.9, -462.722, -65.6158, 65.9, -470.032, -45.1559, 65.9, -468.988, -45.4067, 65.9, -475.023, -25.0975, 65.9, -477.603, -21.8586, 65.9, -471.947, -85.3622, 0, -462.722, -104.292, 0, -453.221, -165.396, 0, -397.253, -152.894, 0, -413.464, -65.6158, 0, -470.032, -45.4067, 0, -475.023, -25.0975, 0, -477.603, -122.065, 0, -441.702, -138.363, 0, -428.37, -19.7211, 215, -468.215, -160.099, 60.9, -387.82, -19.7211, 60.9, -468.215, -159.856, 215, -387.636, -356.818, 60.9, -181.844, -356.622, 60.9, -175.465, -346.042, 60.9, -196.864, -333.66, 60.9, -210.243, -319.646, 60.9, -222.087, -304.251, 60.9, -232.184, -270.445, 60.9, -246.447, -289.872, 0, -245.793, -307.147, 65.9, -237.24, -307.147, 0, -237.24, -289.872, 65.9, -245.793, -271.75, 65.9, -252.173, -253.107, 0, -256.267, -253.107, 65.9, -256.267, -361.926, 65.9, -184.894, -358.741, 65.9, -179.164, -361.999, 65.9, -184.853, -356.818, 65.9, -181.844, -350.903, 65.9, -200.258, -337.939, 65.9, -214.267, -323.265, 65.9, -226.668, -319.646, 65.9, -222.087, -270.445, 65.9, -246.447, -252.639, 65.9, -250.356, -234.277, 65.9, -258, -231.038, 65.9, -252.344, -361.926, 0, -184.894, -333.66, 65.9, -210.243, -346.042, 65.9, -196.864, -361.999, 0, -184.853, -356.622, 0, -175.465, -350.903, 0, -200.258, -337.939, 0, -214.267, -323.265, 0, -226.668, -271.75, 0, -252.173, -234.277, 0, -258, -287.752, 65.9, -240.353, -287.752, 60.9, -240.353, -358.741, 60.9, -179.164, -304.251, 65.9, -232.184, -234.232, 60.9, -252.05, -252.639, 60.9, -250.356, -234.232, 65.9, -252.05, -264.014, 61.2409, -14.8568, -228.901, 61.2409, -248.612, -356.388, 61.2409, -175.276, -136.527, 61.2409, -88.1923, -228.901, 60.9, -248.612, -356.388, 0, -175.276, -231.038, 60.9, -252.344, -228.901, 215, -248.612, -136.527, 215, -88.1923, -228.901, 61.2409, -248.612, -228.901, 0, -248.612, -228.901, 60.9, -248.612, 43.4348, 65.9, 432.412, 27.6793, 60.9, 437.617, 43.4348, 60.9, 432.412, -5.59167, 60.9, 441.536, 11.3694, 65.9, 440.67, 106.511, 65.9, 375.755, 109.769, 0, 381.444, 109.769, 65.9, 381.444, 104.392, 0, 372.056, 58.3536, 60.9, 425.149, 95.5165, 65.9, 392.479, 84.6301, 60.9, 405.001, 84.6301, 65.9, 405.001, 72.168, 65.9, 415.957, -8.53421, 65.9, 441.686, -8.53421, 60.9, 441.686, 109.704, 0, 381.481, -5.29529, 0, 447.342, 12.0555, 65.9, 446.456, 12.0555, 0, 446.456, -5.29529, 65.9, 447.342, 29.1323, 65.9, 443.26, 29.1323, 0, 443.26, 109.704, 65.9, 381.481, 104.846, 65.9, 378.288, 100.16, 65.9, 395.998, 88.7614, 65.9, 409.11, 75.7131, 65.9, 420.58, 61.2491, 65.9, 430.205, 58.3536, 65.9, 425.149, 45.6288, 65.9, 437.81, 27.6793, 65.9, 437.617, -5.59167, 65.9, 441.536, 100.16, 0, 395.998, 45.6288, 0, 437.81, 61.2491, 0, 430.205, 75.7131, 0, 420.58, 88.7614, 0, 409.11, 104.392, 60.9, 372.056, -10.6718, 60.9, 437.954, 104.168, 215, 371.862, 11.8309, 61.2409, 211.421, -103.008, 61.2409, 277.513, 106.511, 60.9, 375.755, 104.846, 60.9, 378.288, 95.5165, 60.9, 392.479, 72.168, 60.9, 415.957, 11.3694, 60.9, 440.67, -10.6718, 215, 437.954, 11.8309, 215, 211.421, -103.008, 215, 277.513, -320.528, 65.9, -269.04, -304.773, 60.9, -274.245, -320.528, 60.9, -269.04, -271.502, 60.9, -278.164, -288.463, 65.9, -277.298, -383.604, 65.9, -212.383, -386.862, 0, -218.071, -386.862, 65.9, -218.071, -381.486, 0, -208.684, -335.447, 60.9, -261.776, -372.61, 65.9, -229.106, -361.723, 60.9, -241.629, -361.723, 65.9, -241.629, -349.261, 65.9, -252.584, -268.559, 65.9, -278.314, -268.559, 60.9, -278.314, -386.797, 0, -218.109, -271.798, 0, -283.969, -289.149, 65.9, -283.083, -289.149, 0, -283.083, -271.798, 65.9, -283.969, -306.226, 65.9, -279.887, -306.226, 0, -279.887, -386.797, 65.9, -218.109, -381.94, 65.9, -214.915, -377.253, 65.9, -232.626, -365.855, 65.9, -245.737, -352.806, 65.9, -257.208, -338.342, 65.9, -266.832, -335.447, 65.9, -261.776, -322.722, 65.9, -274.437, -304.773, 65.9, -274.245, -271.502, 65.9, -278.164, -377.253, 0, -232.626, -322.722, 0, -274.437, -338.342, 0, -266.832, -352.806, 0, -257.208, -365.855, 0, -245.737, -381.486, 60.9, -208.684, -266.422, 60.9, -274.581, -381.261, 215, -208.489, -288.924, 61.2409, -48.0485, -174.085, 61.2409, -114.141, -383.604, 60.9, -212.383, -381.94, 60.9, -214.915, -372.61, 60.9, -229.106, -349.261, 60.9, -252.584, -288.463, 60.9, -277.298, -266.422, 215, -274.581, -288.924, 215, -48.0485, -174.085, 215, -114.141, 50.2236, 429.494, 222.283, 45.0457, 429.494, 225.249, 160.661, 429.494, 415.118, 157.273, 429.494, 394.59, 46.2739, 429.494, 215.387, 121.391, 429.494, 359.262, 127.288, 181.467, 412.216, 170.761, 92.1863, 432.754, 170.761, 181.467, 432.754, 167.954, 92.1863, 427.852, 277.462, 92.1863, 372.06, 277.462, 0, 372.06, 144.416, 0, 138.594, 170.914, 0, 433.022, 256.236, 181.467, 384.217, 253.328, 181.467, 379.139, 126.874, 256.967, 356.123, 45.0457, 256.967, 225.249, 46.2738, 256.967, 215.387, 144.479, 359.767, 138.872, 131.727, 359.767, 166.811, 257.752, 359.767, 337.499, 88.0267, 256.967, 300.063, 59.6093, 256.967, 238.672, 257.752, 181.467, 337.499, 257.689, 181.467, 337.535, 277.462, 181.467, 372.06, 146.842, 0, 446.504, 54.4313, 429.494, 241.637, 59.6094, 417.344, 238.672, 65.8026, 417.344, 235.125, 65.8026, 429.494, 235.125, 90.1243, 417.344, 276.939, 88.0267, 429.494, 300.063, 93.1031, 415.37, 297.155, 99.8389, 415.37, 293.298, 99.8389, 429.494, 293.298, 123.878, 415.37, 335.273, 126.874, 416.737, 356.123, 133.176, 416.737, 352.513, 168.032, 387.686, 427.989, 157.273, 416.737, 394.59, 167.483, 387.686, 411.21, 174.855, 429.494, 424.081, 174.855, 387.686, 424.081, 167.483, 429.494, 411.21, 253.406, 92.1863, 379.276, 236.463, 181.467, 349.691, 253.729, 429.494, 379.84, 131.727, 429.494, 166.811, 83.6489, 256.967, 280.647, 78.5724, 429.494, 283.555, 236.463, 359.767, 349.691, 50.2236, 256.967, 222.283, 151.167, 181.467, 398.54, 151.167, 256.967, 398.54, 150.971, 429.494, 398.199, 121.391, 256.967, 359.262, 111.66, 256.967, 342.271, 123.878, 429.494, 335.273, 111.66, 429.494, 342.271, 90.1243, 429.494, 276.939, 133.176, 429.494, 352.513, 78.5724, 256.967, 283.555, 168.276, 181.467, 428.415, 93.1031, 256.967, 297.155, 54.4313, 256.967, 241.637, 117.143, 256.967, 339.131, 160.661, 387.686, 415.118, 117.143, 415.37, 339.131, 150.971, 416.737, 398.199, 83.6489, 417.344, 280.647, 256.225, 92.1863, 384.197, 146.706, 181.467, 446.268, 122.696, 359.767, 151.234, 122.657, 256.967, 150.975, 131.648, 256.967, 166.674, 127.256, 0, 412.136, -169.628, 429.494, -161.598, -174.806, 429.494, -158.633, -280.065, 429.494, -354.432, -264.073, 429.494, -341.123, -165.678, 429.494, -154.702, -251.76, 429.494, -292.298, -294.45, 181.467, -324.18, -290.165, 92.1863, -372.069, -290.165, 181.467, -372.069, -287.358, 92.1863, -367.167, -183.822, 92.1863, -433.387, -183.822, 0, -433.387, -49.7802, 0, -200.491, -290.318, 0, -372.336, -205.048, 181.467, -421.23, -202.14, 181.467, -416.153, -246.278, 256.967, -295.437, -174.806, 256.967, -158.633, -165.678, 256.967, -154.702, -49.9877, 359.767, -200.686, -80.5387, 359.767, -203.825, -163.986, 359.767, -398.897, -217.584, 256.967, -233.563, -179.013, 256.967, -177.987, -163.986, 181.467, -398.897, -164.049, 181.467, -398.861, -183.822, 181.467, -433.387, -314.129, 0, -358.396, -184.191, 429.494, -175.021, -179.013, 417.344, -177.987, -172.82, 417.344, -181.534, -172.82, 429.494, -181.534, -196.578, 417.344, -223.671, -217.584, 429.494, -233.563, -212.507, 415.37, -236.47, -205.771, 415.37, -240.328, -205.771, 429.494, -240.328, -229.811, 415.37, -282.303, -246.278, 416.737, -295.437, -239.976, 416.737, -299.047, -287.436, 387.686, -367.303, -264.073, 416.737, -341.123, -273.242, 387.686, -358.34, -280.614, 429.494, -371.211, -280.614, 387.686, -371.211, -273.242, 429.494, -358.34, -202.218, 92.1863, -416.29, -185.275, 181.467, -386.705, -202.541, 429.494, -416.853, -80.5386, 429.494, -203.825, -203.053, 256.967, -219.962, -208.129, 429.494, -217.055, -185.275, 359.767, -386.705, -169.628, 256.967, -161.598, -270.571, 181.467, -337.855, -270.571, 256.967, -337.855, -270.375, 429.494, -337.514, -251.76, 256.967, -292.298, -242.029, 256.967, -275.306, -229.811, 429.494, -282.303, -242.029, 429.494, -275.306, -196.578, 429.494, -223.671, -239.976, 429.494, -299.047, -208.129, 256.967, -217.055, -287.68, 181.467, -367.73, -212.507, 256.967, -236.47, -184.191, 256.967, -175.021, -236.547, 256.967, -278.446, -280.065, 387.686, -354.432, -236.547, 415.37, -278.446, -270.375, 416.737, -337.514, -203.053, 417.344, -219.962, -205.037, 92.1863, -421.211, -313.994, 181.467, -358.16, -71.6734, 359.767, -188.153, -71.469, 256.967, -187.988, -80.4603, 256.967, -203.688, -294.397, 0, -324.111, -182.884, 282.8, 348.14, -187.309, 282.8, 350.674, -87.6794, 282.8, 514.376, -90.9126, 282.8, 496.859, -186.221, 282.8, 342.312, -121.492, 282.8, 466.202, -214.115, 215, 340.071, -116.264, 169.2, 511.769, -116.264, 215, 511.769, -214.115, 0, 340.071, -78.8399, 60.7, 529.811, -78.8399, 169.2, 529.811, -81.3248, 60.7, 525.472, 12.2267, 60.7, 477.707, 12.2267, 0, 477.707, -102.472, 0, 276.446, -78.8399, 0, 529.811, -5.91541, 169.2, 488.097, -8.42227, 169.2, 483.72, -116.806, 215, 463.518, -187.309, 215, 350.674, -186.221, 215, 342.312, -102.472, 215, 276.446, -113.319, 215, 300.561, -4.75604, 215, 447.908, -150.258, 215, 415.169, -174.793, 215, 362.268, -4.75604, 169.2, 447.908, -4.81903, 169.2, 447.944, 12.2267, 169.2, 477.707, -99.416, 0, 541.332, -179.218, 282.8, 364.802, -174.793, 274.8, 362.268, -169.499, 274.8, 359.236, -169.499, 282.8, 359.236, -148.776, 274.8, 395.422, -150.258, 282.8, 415.169, -145.919, 273.5, 412.684, -140.365, 273.5, 409.504, -140.365, 282.8, 409.504, -119.641, 273.5, 445.69, -116.806, 274.4, 463.518, -111.686, 274.4, 460.586, -81.3248, 255.272, 525.472, -90.9126, 274.4, 496.859, -82.0388, 255.272, 511.146, -75.6843, 282.8, 522.241, -75.6843, 255.272, 522.241, -82.0388, 282.8, 511.146, -8.42227, 60.7, 483.72, -22.9611, 169.2, 458.334, -8.42227, 282.8, 483.72, -113.319, 282.8, 300.561, -154.069, 215, 398.454, -158.408, 282.8, 400.938, -22.9611, 215, 458.334, -182.884, 215, 348.14, -95.8636, 169.2, 500.086, -95.8636, 215, 500.086, -96.0324, 282.8, 499.791, -121.492, 215, 466.202, -129.881, 215, 451.554, -119.641, 282.8, 445.69, -129.881, 282.8, 451.554, -148.776, 282.8, 395.422, -111.686, 282.8, 460.586, -158.408, 215, 400.938, -81.3248, 169.2, 525.472, -145.919, 215, 412.684, -179.218, 215, 364.802, -125.195, 215, 448.87, -87.6794, 255.272, 514.376, -125.195, 273.5, 448.87, -96.0324, 274.4, 499.791, -154.069, 274.8, 398.454, -5.92636, 60.7, 488.078, -99.416, 169.2, 541.332, -144.561, 171.069, 459.962, -144.561, 58.7, 459.962, -223.374, 171.069, 442.089, -172.588, 171.069, 465.376, -237.56, 171.069, 417.319, -240.587, 58.7, 388.936, -240.587, 171.069, 388.936, -237.56, 58.7, 417.319, -172.588, 58.7, 465.376, -200.425, 171.069, 459.063, -200.425, 58.7, 459.063, -223.374, 58.7, 442.089, -231.946, 171.069, 361.731, -231.946, 58.7, 361.731, -213.094, 171.069, 340.297, -213.094, 58.7, 340.297, -158.472, 171.069, 435.673, -205.29, 171.069, 425.055, -175.121, 171.069, 438.889, -213.717, 171.069, 410.341, -215.516, 171.069, 393.48, -191.658, 171.069, 435.139, -210.382, 171.069, 377.319, -199.184, 171.069, 364.587, -158.472, 215, 435.673, -205.29, 215, 425.055, -175.121, 215, 438.889, -213.717, 215, 410.341, -215.516, 215, 393.48, -191.658, 215, 435.139, -210.382, 215, 377.319, -199.184, 215, 364.587, -398.004, 171.069, 15.6058, -398.004, 58.7, 15.6058, -476.817, 171.069, -2.26779, -426.031, 171.069, 21.0197, -491.003, 171.069, -27.0376, -494.03, 58.7, -55.4208, -494.03, 171.069, -55.4208, -491.003, 58.7, -27.0376, -426.031, 58.7, 21.0197, -453.868, 171.069, 14.7066, -453.868, 58.7, 14.7066, -476.817, 58.7, -2.26779, -485.389, 171.069, -82.6257, -485.389, 58.7, -82.6256, -466.537, 171.069, -104.059, -466.537, 58.7, -104.059, -411.915, 171.069, -8.6835, -458.733, 171.069, -19.3012, -428.564, 171.069, -5.46742, -467.16, 171.069, -34.0156, -468.959, 171.069, -50.8765, -445.1, 171.069, -9.21771, -463.825, 171.069, -67.0373, -452.626, 171.069, -79.7697, -411.915, 215, -8.68349, -458.733, 215, -19.3012, -428.564, 215, -5.46742, -467.16, 215, -34.0155, -468.959, 215, -50.8765, -445.1, 215, -9.21771, -463.825, 215, -67.0373, -452.626, 215, -79.7697, -400.297, 3.66211E-5, 16.0486, -213.452, 7.32422E-5, 340.704, -213.452, 165.5, 340.704, -400.297, 117.882, 16.0486, -343.194, 113.582, 205.786, -294.886, 113.582, 197.48, -258.612, 252.14, -261.256, -223.617, 252.14, -200.153, -199.896, 252.14, -158.733, -213.452, 117.882, 340.704, -43.7096, 252.14, 113.984, -207.645, 157.44, 337.362, -330.365, 154.278, 161.916, -419.201, 117.882, 19.7004, 95.6759, 7.32422E-5, 357.365, -29.6378, 223.205, -521.905, -37.0091, 223.205, -534.776, -29.6378, 476.854, -521.905, -20.144, 223.205, -505.328, -23.3769, 476.854, -525.491, -30.7481, 528.278, -538.362, 66.5013, 528.278, -342.646, 47.374, 513.333, -387.435, -29.6378, 528.278, -521.905, 80.7994, 528.278, -329.071, 96.6478, 528.278, -301.398, 44.0845, 510.905, -407.473, 20.0448, 528.278, -449.449, 71.4137, 513.333, -345.459, 77.2893, 513.333, -348.824, 77.2893, 528.278, -348.824, 13.8802, 510.905, -445.918, 37.9199, 510.905, -403.943, -14.2653, 528.278, -508.241, -14.2653, 512.586, -508.241, -1.05243, 528.278, -459.931, 80.7994, 442.495, -329.071, 4.14899, 512.586, -462.91, 61.1425, 223.205, -597.731, 41.0048, 223.205, -586.198, 9.83197, 512.586, -466.165, 42.5579, 528.278, -384.677, -42.7886, 223.205, -492.359, 53.2496, 528.278, -390.8, 37.9199, 401.626, -403.943, 80.9155, 395.036, -563.205, 71.4137, 442.495, -345.459, 42.5579, 401.626, -384.677, 39.0192, 442.495, -350.199, 376.177, 301.227, -306.236, 267.134, 301.227, -320.412, 367.754, 301.227, -320.944, 343.132, 301.227, -363.936, 259.487, 301.227, -335.998, 334.522, 301.227, -378.971, 149.685, 301.227, -527.723, 149.685, 108.463, -527.723, 140.292, 0, -544.124, 259.487, 0, -335.998, 334.522, 108.187, -378.971, 351.089, 108.187, -388.459, 343.132, 108.187, -363.936, 392.745, 108.187, -315.724, 359.699, 108.187, -373.424, 351.089, 0, -388.459, 359.699, 66.6131, -373.424, 392.745, 0, -315.724, 362.846, 66.6131, -367.931, 380.901, 66.6131, -336.405, 357.677, 108.187, -372.266, 367.754, 108.187, -320.944, 382.299, 312.174, -329.273, 378.878, 312.174, -335.246, 357.677, 312.174, -372.266, 360.823, 312.174, -366.772, 357.677, 301.227, -372.266, 357.677, 66.6131, -372.266, 382.299, 66.6131, -329.273, 384.561, 332.469, -338.501, 378.878, 332.469, -335.246, 366.506, 66.6131, -370.027, 366.506, 332.469, -370.027, 360.823, 332.469, -366.772, 41.0303, 113.389, -586.154, -39.8916, 0, -539.809, -39.8916, 113.389, -539.809, -62.4742, 223.205, -526.572, -39.8259, 223.205, -539.695, -62.4742, 0, -526.572, -42.7886, 395.47, -492.359, 61.3466, 442.498, -363.037, 61.3511, 395.473, -363.04, -30.7481, 476.854, -538.362, 43.9128, 528.278, -581.12, -37.0091, 113.389, -534.776, 43.9128, 113.389, -581.12, -37.0091, 476.854, -534.776, 177.57, 528.278, -347.742, 33.1038, 528.278, -401.185, 44.0845, 528.278, -407.473, -23.3769, 528.278, -525.491, -19.9483, 528.278, -504.986, 9.83197, 528.278, -466.165, 8.67883, 528.278, -442.939, 177.57, 442.495, -347.742, 43.9128, 223.205, -581.12, 60.7778, 223.205, -551.672, 96.6478, 442.495, -301.398, -1.05243, 395.47, -459.931, -19.9483, 395.47, -504.986, 60.7778, 395.036, -551.672, -19.9483, 512.586, -504.986, 75.887, 528.278, -326.258, 20.0448, 510.905, -449.449, 53.2496, 513.333, -390.8, 75.887, 442.495, -326.258, 66.5013, 442.495, -342.646, 142.195, 395.036, -409.51, 80.9155, 223.205, -563.205, 162.643, 395.036, -421.285, 162.643, 442.514, -421.285, 384.561, 66.6131, -338.501, 299.894, 332.469, -290.012, 61.1425, 0, -597.731, 142.195, 442.514, -409.51, 114.152, 301.227, -507.374, 104.76, 108.463, -523.775, 104.76, 0, -523.775, 114.152, 108.463, -507.374, 265.61, 0, -242.913, 291.756, 312.174, -277.419, 267.134, 312.174, -320.412, 384.321, 108.187, -330.432, 360.823, 66.6131, -366.772, 281.839, 332.469, -321.538, 281.839, 312.174, -321.538, 8.67883, 395.47, -442.939, 265.61, 301.227, -242.913, 33.1038, 401.626, -401.185, 47.374, 401.626, -387.435, 291.756, 301.227, -277.419, 140.292, 108.463, -544.124, 382.299, 108.187, -329.273, 299.894, 312.174, -290.012, 376.177, 108.187, -306.236, 13.8802, 395.47, -445.918, 378.878, 66.6131, -335.246, 4.14899, 395.47, -462.91, 382.299, 301.227, -329.273, 384.321, 66.6131, -330.432, 39.0198, 395.47, -350.199, 435.153, 223.205, 289.665, 442.524, 223.205, 302.535, 435.153, 476.854, 289.665, 425.659, 223.205, 273.087, 441.414, 476.854, 286.079, 448.785, 528.278, 298.95, 329.189, 528.278, 116.032, 358.141, 513.333, 155.194, 435.153, 528.278, 289.665, 324.715, 528.278, 96.8303, 308.867, 528.278, 69.1573, 373.759, 510.905, 168.172, 397.799, 528.278, 210.147, 334.101, 513.333, 113.219, 339.977, 513.333, 109.854, 339.977, 528.278, 109.854, 391.634, 510.905, 213.678, 367.595, 510.905, 171.702, 431.146, 528.278, 269.491, 431.146, 512.586, 269.491, 396.164, 528.278, 233.648, 324.715, 442.495, 96.8303, 401.366, 512.586, 230.669, 546.491, 223.205, 249.736, 526.354, 223.205, 261.269, 407.049, 512.586, 227.415, 353.325, 528.278, 157.952, 403.014, 223.205, 286.056, 364.016, 528.278, 151.829, 367.595, 401.625, 171.702, 526.718, 395.036, 215.21, 334.101, 442.495, 113.219, 353.325, 401.625, 157.952, 321.796, 442.495, 143.558, 454.491, 301.227, -169.493, 411.538, 301.227, -68.2677, 462.914, 301.227, -154.785, 487.536, 301.227, -111.792, 421.112, 301.227, -53.7849, 496.146, 301.227, -96.7578, 530.914, 301.227, 137.941, 530.914, 108.463, 137.941, 540.307, 0, 154.341, 421.112, 0, -53.7849, 496.146, 108.187, -96.7578, 512.714, 108.187, -106.246, 487.536, 108.187, -111.792, 471.058, 108.187, -178.981, 504.104, 108.187, -121.28, 512.714, 0, -106.246, 504.104, 66.6131, -121.28, 471.058, 0, -178.981, 500.957, 66.6131, -126.774, 482.902, 66.6131, -158.3, 502.081, 108.187, -120.122, 462.914, 108.187, -154.785, 477.459, 312.174, -163.115, 480.879, 312.174, -157.142, 502.081, 312.174, -120.122, 498.934, 312.174, -125.616, 502.081, 301.227, -120.122, 502.081, 66.6131, -120.122, 477.459, 66.6131, -163.115, 486.562, 332.469, -160.397, 480.879, 332.469, -157.142, 504.617, 66.6131, -128.871, 504.617, 332.469, -128.871, 498.934, 332.469, -125.616, 526.328, 113.389, 261.224, 445.406, 0, 307.568, 445.406, 113.389, 307.568, 422.561, 223.205, 320.348, 445.341, 223.205, 307.454, 422.561, 0, 320.348, 403.014, 395.47, 286.056, 344.168, 442.498, 130.797, 344.173, 395.473, 130.794, 448.785, 476.854, 298.95, 523.446, 528.278, 256.191, 442.524, 113.389, 302.535, 523.446, 113.389, 256.191, 442.524, 476.854, 302.535, 389.789, 528.278, 22.8129, 362.779, 528.278, 174.46, 373.759, 528.278, 168.172, 441.414, 528.278, 286.079, 425.463, 528.278, 272.746, 407.049, 528.278, 227.415, 386.433, 528.278, 216.657, 180.994, 442.495, -103.656, 389.789, 442.495, 22.8129, 523.446, 223.205, 256.191, 506.581, 223.205, 226.743, 308.867, 442.495, 69.1573, 396.164, 395.47, 233.648, 304.767, 442.504, -174.542, 180.994, 0, -103.656, 425.463, 395.47, 272.746, 506.581, 395.036, 226.743, 425.463, 512.586, 272.746, 319.803, 528.278, 99.6437, 397.799, 510.905, 210.147, 364.016, 513.333, 151.829, 319.803, 442.495, 99.6437, 329.189, 442.495, 116.032, 425.163, 395.036, 84.5803, 526.718, 223.205, 215.21, 445.667, 395.036, 72.9026, 445.667, 442.514, 72.9026, 486.562, 66.6131, -160.397, 401.895, 332.469, -111.907, 546.491, 0, 249.736, 425.163, 442.514, 84.5804, 495.382, 301.227, 158.29, 504.775, 108.463, 174.691, 504.775, 0, 174.691, 495.382, 108.463, 158.29, 304.767, 0, -174.542, 343.924, 0, -106.17, 386.916, 312.174, -111.26, 411.538, 312.174, -68.2677, 479.482, 108.187, -164.273, 498.934, 66.6131, -125.616, 419.951, 332.469, -80.3813, 419.951, 312.174, -80.3813, 386.433, 395.47, 216.657, 343.924, 301.227, -106.17, 362.779, 401.625, 174.46, 358.141, 401.625, 155.194, 386.916, 301.227, -111.26, 540.307, 108.463, 154.341, 477.459, 108.187, -163.115, 401.895, 312.174, -111.907, 454.491, 108.187, -169.493, 391.634, 395.47, 213.678, 480.879, 66.6131, -157.142, 401.366, 395.47, 230.669, 477.459, 301.227, -163.115, 479.482, 66.6131, -164.273, 321.797, 395.47, 143.557]; + uvs = new [0.169363, 0.712292, 0.164288, 0.712292, 0.169363, 0.908253, 0.175234, 0.89106, 0.169363, 0.705423, 0.163989, 0.848301, 0.146384, 0.689253, 0.145968, 0.891407, 0.145968, 0.891407, 0.169363, 0.926447, 0.169363, 0.926447, 0.169363, 0.921332, 0.273773, 0.926492, 0.273773, 0.926492, 0.27426, 0.689531, 0.169363, 0.926447, 0.252967, 0.926492, 0.252967, 0.921332, 0.169363, 0.848301, 0.164288, 0.712292, 0.169363, 0.705423, 0.27426, 0.689531, 0.252967, 0.705423, 0.273845, 0.891407, 0.164387, 0.788378, 0.169363, 0.728946, 0.273845, 0.891407, 0.273773, 0.891407, 0.273773, 0.926492, 0.145896, 0.926214, 0.164288, 0.728946, 0.169363, 0.728946, 0.175433, 0.728946, 0.175433, 0.728946, 0.175433, 0.771602, 0.164387, 0.788378, 0.169363, 0.788378, 0.175732, 0.788378, 0.175732, 0.788378, 0.175732, 0.831034, 0.169363, 0.848301, 0.175234, 0.848301, 0.169363, 0.921332, 0.175234, 0.89106, 0.175831, 0.908253, 0.175831, 0.921332, 0.175831, 0.921332, 0.175831, 0.908253, 0.252967, 0.921332, 0.252967, 0.891407, 0.252967, 0.921332, 0.252967, 0.705423, 0.169363, 0.771602, 0.164387, 0.771602, 0.252967, 0.891407, 0.169363, 0.712292, 0.169363, 0.891407, 0.169363, 0.891407, 0.169363, 0.89106, 0.163989, 0.848301, 0.163989, 0.831034, 0.175732, 0.831034, 0.163989, 0.831034, 0.175433, 0.771602, 0.175234, 0.848301, 0.164387, 0.771602, 0.169363, 0.921332, 0.169363, 0.788378, 0.164288, 0.728946, 0.169363, 0.831034, 0.169363, 0.908253, 0.169363, 0.831034, 0.169363, 0.89106, 0.169363, 0.771602, 0.252967, 0.92647, 0.145896, 0.926214, 0.0776064, 0.500877, 0.121703, 0.697922, 0.121703, 0.697922, 0.0776064, 0.500877, 0.148582, 0.877808, 0.010635, 0.877808, 0.148582, 0.883456, 0.00139979, 0.883456, 0.148583, 0.541338, 0.148582, 0.560012, 0.148582, 0.560012, 0.153051, 0.689267, 0.441906, 0.255975, 0.441906, 0.15235, 0.441906, 0.15235, 0.441906, 0.0267342, 0.441906, 0.0628917, 0.441906, 0.0267342, 0.441906, 0.0628917, 0.405882, 0.0267342, 0.405882, 0.0267342, 0.441906, 0.937451, 0.405882, 0.937451, 0.441906, 0.937451, 0.405882, 0.937451, 0.382541, 0.863378, 0.405882, 0.840174, 0.441906, 0.840174, 0.405882, 0.840174, 0.405882, 0.0628917, 0.405882, 0.15235, 0.405882, 0.15235, 0.405882, 0.693695, 0.405882, 0.669282, 0.405882, 0.620456, 0.405882, 0.596043, 0.405882, 0.57163, 0.405882, 0.522803, 0.405882, 0.469894, 0.405882, 0.445467, 0.405882, 0.445467, 0.405882, 0.372188, 0.405882, 0.372188, 0.405882, 0.274482, 0.405882, 0.250056, 0.405882, 0.201203, 0.405882, 0.225629, 0.405882, 0.176776, 0.405882, 0.0628917, 0.405882, 0.201203, 0.405882, 0.298909, 0.405882, 0.522803, 0.405882, 0.57163, 0.405882, 0.815761, 0.441906, 0.738091, 0.441906, 0.738091, 0.538436, 0.738091, 0.538436, 0.738091, 0.538436, 0.255975, 0.382541, 0.387504, 0.382541, 0.387504, 0.382541, 0.608179, 0.301934, 0.608178, 0.301934, 0.608178, 0.382541, 0.608179, 0.301934, 0.387504, 0.301934, 0.387504, 0.382541, 0.387504, 0.278547, 0.497841, 0.296215, 0.581198, 0.305756, 0.603301, 0.405882, 0.608179, 0.405882, 0.603301, 0.283404, 0.497841, 0.305757, 0.392382, 0.405882, 0.392382, 0.405882, 0.387504, 0.405882, 0.608179, 0.296215, 0.414484, 0.835764, 0.640685, 0.8363, 0.368802, 0.731582, 0.640469, 0.836344, 0.368802, 0.120802, 0.296819, 0.127361, 0.299123, 0.120802, 0.296819, 0.33816, 0.57199, 0.0846716, 0.500877, 0.128253, 0.695621, 0.0846716, 0.500877, 0.153051, 0.689267, 0.15384, 0.306096, 0.407006, 0.306647, 0.406217, 0.689818, 0.146384, 0.689253, 0.146384, 0.689252, 0.382541, 0.134142, 0.382541, 0.863378, 0.405882, 0.766935, 0.405882, 0.718109, 0.405882, 0.693695, 0.405882, 0.669282, 0.405882, 0.644869, 0.405882, 0.620456, 0.405882, 0.608179, 0.405882, 0.603301, 0.405882, 0.57163, 0.405882, 0.547217, 0.405882, 0.522803, 0.405882, 0.445467, 0.405882, 0.396614, 0.405882, 0.392382, 0.405882, 0.387504, 0.405882, 0.347762, 0.405882, 0.298909, 0.405882, 0.274482, 0.405882, 0.250056, 0.405882, 0.201203, 0.405882, 0.134142, 0.411256, 0.201203, 0.411256, 0.176776, 0.411256, 0.225629, 0.405882, 0.225629, 0.411256, 0.225629, 0.405882, 0.298909, 0.409365, 0.298909, 0.409365, 0.274482, 0.41046, 0.323335, 0.405882, 0.347762, 0.405882, 0.323335, 0.41046, 0.323335, 0.41026, 0.372188, 0.405882, 0.396614, 0.41026, 0.396614, 0.41026, 0.372188, 0.410858, 0.445467, 0.405882, 0.421041, 0.41036, 0.469894, 0.41036, 0.469894, 0.41036, 0.522803, 0.411455, 0.547217, 0.411455, 0.57163, 0.405882, 0.547217, 0.411455, 0.547217, 0.412748, 0.596043, 0.410758, 0.644869, 0.405882, 0.644869, 0.410758, 0.644869, 0.411654, 0.718109, 0.411654, 0.693695, 0.405882, 0.718109, 0.411654, 0.693695, 0.405882, 0.766935, 0.405882, 0.742522, 0.411554, 0.815761, 0.405882, 0.815761, 0.405882, 0.791348, 0.103352, 0.508986, 0.100365, 0.497529, 0.122657, 0.520442, 0.103352, 0.486072, 0.122657, 0.474615, 0.147682, 0.497529, 0.146826, 0.474615, 0.147682, 0.474615, 0.147682, 0.520442, 0.147682, 0.474615, 0.147682, 0.477837, 0.278547, 0.497841, 0.296215, 0.581198, 0.296215, 0.414484, 0.338363, 0.422084, 0.836271, 0.405966, 0.835809, 0.640685, 0.842985, 0.582766, 0.849613, 0.582766, 0.842985, 0.419403, 0.976675, 0.582766, 0.976675, 0.582766, 0.976675, 0.419403, 0.96993, 0.419403, 0.976675, 0.419403, 0.970193, 0.419403, 0.900258, 0.45521, 0.900258, 0.54533, 0.100365, 0.497529, 0.101621, 0.502346, 0.010635, 0.877808, 0.148582, 0.877808, 0.538436, 0.255975, 0.441906, 0.255975, 0.441906, 0.840174, 0.405882, 0.387504, 0.382541, 0.134142, 0.405882, 0.347762, 0.405882, 0.323335, 0.405882, 0.250056, 0.405882, 0.176776, 0.405882, 0.134142, 0.113078, 0.514582, 0.1035, 0.497529, 0.106066, 0.487683, 0.122657, 0.517221, 0.113078, 0.480475, 0.147682, 0.517221, 0.122657, 0.477837, 0.405882, 0.863378, 0.382541, 0.608179, 0.405882, 0.791348, 0.405882, 0.766935, 0.405882, 0.742522, 0.405882, 0.718109, 0.405882, 0.669282, 0.405882, 0.620456, 0.96993, 0.582766, 0.849613, 0.419403, 0.970194, 0.582766, 0.147173, 0.306082, 0.127361, 0.299123, 0.407006, 0.306647, 0.283404, 0.497841, 0.305756, 0.603301, 0.305757, 0.392382, 0.405882, 0.603301, 0.405882, 0.596043, 0.405882, 0.469894, 0.405882, 0.421041, 0.405882, 0.392382, 0.405882, 0.396614, 0.411256, 0.201203, 0.411256, 0.176776, 0.411256, 0.250056, 0.411256, 0.250056, 0.409365, 0.298909, 0.409365, 0.274482, 0.41046, 0.347762, 0.41046, 0.347762, 0.41026, 0.396614, 0.410858, 0.445467, 0.410858, 0.421041, 0.410858, 0.421041, 0.41036, 0.496356, 0.41036, 0.522803, 0.411455, 0.57163, 0.412748, 0.596043, 0.412748, 0.620456, 0.412748, 0.620456, 0.410758, 0.669282, 0.410758, 0.669282, 0.411654, 0.718109, 0.410758, 0.742522, 0.410758, 0.766935, 0.410758, 0.766935, 0.410758, 0.742522, 0.411554, 0.791348, 0.411554, 0.815761, 0.411554, 0.791348, 0.111511, 0.477685, 0.122657, 0.474615, 0.111511, 0.477685, 0.122657, 0.474615, 0.103352, 0.486072, 0.103352, 0.486072, 0.100365, 0.497529, 0.103352, 0.508986, 0.103352, 0.508986, 0.111511, 0.517372, 0.111511, 0.517372, 0.122657, 0.520442, 0.122657, 0.520442, 0.122657, 0.477837, 0.113078, 0.480475, 0.106066, 0.487683, 0.1035, 0.497529, 0.106066, 0.507375, 0.106066, 0.507375, 0.113078, 0.514582, 0.122657, 0.517221, 0.147682, 0.517221, 0.147682, 0.477837, 0.731538, 0.640469, 0.732117, 0.368585, 0.732073, 0.368585, 0.122393, 0.471184, 0.122393, 0.524069, 0.122393, 0.471184, 0.190362, 0.471184, 0.190362, 0.524069, 0.190362, 0.524069, 0.190362, 0.471184, 0.33816, 0.57199, 0.338363, 0.422084, 0.284463, 0.506593, 0.280936, 0.497841, 0.292977, 0.510219, 0.284463, 0.489089, 0.292977, 0.485464, 0.292977, 0.485464, 0.284463, 0.489089, 0.280936, 0.497841, 0.284463, 0.506593, 0.292977, 0.510219, 0.836233, 0.405966, 0.974666, 0.54533, 0.974666, 0.45521, 0.974666, 0.45521, 0.908826, 0.502733, 0.835853, 0.599197, 0.83589, 0.599197, 0.908788, 0.502733, 0.896262, 0.54533, 0.896262, 0.45521, 0.974666, 0.54533, 0.15384, 0.306096, 0.407006, 0.306647, 0.405882, 0.863378, 0.147682, 0.520442, 0.147682, 0.497529, 0.406217, 0.689818, 0.147682, 0.453403, 0.000499517, 0.111285, 0.000499517, 0.111285, 0.147682, 0.453403, 0.147682, 0.111285, 0.147682, 0.111285, 0.147682, 0.434729, 0.00973475, 0.116933, 0.00973475, 0.116933, 0.147682, 0.434729, 0.147682, 0.116933, 0.147682, 0.116933, 0.122393, 0.517162, 0.122393, 0.517162, 0.134633, 0.517162, 0.134633, 0.52422, 0.122393, 0.524069, 0.122393, 0.524069, 0.122393, 0.524069, 0.134633, 0.52913, 0.122393, 0.52422, 0.122393, 0.52913, 0.134633, 0.548157, 0.122393, 0.548157, 0.134633, 0.548157, 0.122393, 0.548157, 0.134633, 0.524069, 0.122393, 0.53537, 0.122393, 0.542122, 0.122393, 0.542122, 0.122393, 0.52913, 0.122393, 0.53537, 0.134633, 0.542122, 0.134633, 0.542122, 0.134633, 0.53537, 0.134633, 0.52913, 0.134633, 0.524069, 0.134633, 0.53537, 0.134633, 0.517162, 0.134375, 0.477919, 0.122135, 0.477919, 0.122135, 0.470861, 0.134375, 0.471012, 0.122135, 0.470861, 0.134375, 0.471012, 0.134375, 0.471012, 0.122135, 0.465951, 0.134375, 0.470861, 0.134375, 0.465951, 0.122135, 0.446924, 0.134375, 0.446924, 0.134375, 0.446924, 0.122135, 0.471012, 0.134375, 0.459711, 0.134375, 0.452959, 0.134375, 0.452959, 0.134375, 0.465951, 0.134375, 0.459711, 0.122135, 0.452959, 0.122135, 0.452959, 0.122135, 0.459711, 0.122135, 0.465951, 0.122135, 0.471012, 0.122135, 0.459711, 0.122135, 0.446924, 0.122135, 0.477919, 0.134375, 0.477919, 0.15348, 0.471176, 0.164327, 0.471176, 0.164327, 0.478439, 0.15348, 0.478439, 0.164327, 0.471176, 0.15348, 0.478439, 0.15348, 0.471176, 0.164327, 0.478439, 0.153392, 0.516632, 0.153392, 0.516632, 0.164239, 0.516632, 0.164239, 0.523895, 0.153392, 0.523895, 0.164239, 0.516632, 0.153392, 0.523895, 0.164239, 0.523895, 0.179396, 0.516817, 0.179396, 0.516817, 0.190243, 0.516817, 0.190243, 0.52408, 0.179396, 0.52408, 0.179396, 0.52408, 0.190243, 0.52408, 0.190243, 0.516817, 0.179216, 0.471281, 0.190063, 0.471281, 0.179216, 0.471281, 0.190063, 0.471281, 0.190063, 0.478543, 0.179216, 0.478543, 0.179216, 0.478543, 0.190063, 0.478543, 0.128413, 0.696335, 0.121703, 0.697922, 0.121703, 0.697922, 0.128413, 0.696335, 0.147682, 0.688796, 0.128253, 0.695621, 0.147682, 0.688796, 0.146384, 0.689252, 0.148583, 0.541338, 0.148583, 0.883456, 0.00139982, 0.883456, 0.531712, 0.687133, 0.714919, 0.626519, 0.714919, 0.532936, 0.531712, 0.703485, 0.531712, 0.703485, 0.531712, 0.670781, 0.531712, 0.670781, 0.545246, 0.532936, 0.545246, 0.572508, 0.538678, 0.581009, 0.538678, 0.572508, 0.714919, 0.638078, 0.531712, 0.638078, 0.538678, 0.638078, 0.538678, 0.638078, 0.714919, 0.581009, 0.552013, 0.730797, 0.552013, 0.730797, 0.531712, 0.638078, 0.531712, 0.58908, 0.531712, 0.58908, 0.531712, 0.65443, 0.531712, 0.65443, 0.531712, 0.687133, 0.714919, 0.626519, 0.714919, 0.670781, 0.714919, 0.687133, 0.714919, 0.703485, 0.714919, 0.687133, 0.714919, 0.670781, 0.714919, 0.638078, 0.538678, 0.58908, 0.538678, 0.58908, 0.545246, 0.532936, 0.545246, 0.626519, 0.545246, 0.626519, 0.714919, 0.703485, 0.714919, 0.65443, 0.714919, 0.65443, 0.714919, 0.730797, 0.714919, 0.730797, 0.714919, 0.532936, 0.552013, 0.703485, 0.552013, 0.703485, 0.538678, 0.572508, 0.545246, 0.572508, 0.531712, 0.319136, 0.714919, 0.37975, 0.714919, 0.473333, 0.531712, 0.302784, 0.531712, 0.302784, 0.531712, 0.335488, 0.531712, 0.335488, 0.545246, 0.473333, 0.545246, 0.433761, 0.538678, 0.433761, 0.714919, 0.368191, 0.531712, 0.368191, 0.538678, 0.368191, 0.538678, 0.368191, 0.714919, 0.42526, 0.552013, 0.275472, 0.552013, 0.275472, 0.531712, 0.368191, 0.531712, 0.417189, 0.531712, 0.417189, 0.531712, 0.351839, 0.531712, 0.351839, 0.531712, 0.319136, 0.714919, 0.37975, 0.714919, 0.335488, 0.714919, 0.319136, 0.714919, 0.302784, 0.714919, 0.319136, 0.714919, 0.335488, 0.714919, 0.368191, 0.538678, 0.417189, 0.538678, 0.417189, 0.545246, 0.473333, 0.545246, 0.37975, 0.545246, 0.37975, 0.714919, 0.302784, 0.714919, 0.351839, 0.714919, 0.351839, 0.714919, 0.275472, 0.714919, 0.275472, 0.714919, 0.473333, 0.538678, 0.42526, 0.552013, 0.302784, 0.552013, 0.302784, 0.538678, 0.433761, 0.545246, 0.433761, 0.552559, 0.0676867, 0.552559, 0.0676867, 0.707767, 0.0690882, 0.704539, 0.0676867, 0.707767, 0.0690882, 0.686449, 0.0598329, 0.686449, 0.0598329, 0.707677, 0.0623826, 0.707767, 0.0623826, 0.570649, 0.0598329, 0.608778, 0.0508618, 0.589362, 0.0542513, 0.589362, 0.0542513, 0.64832, 0.0508618, 0.707415, 0.168415, 0.549186, 0.168415, 0.549186, 0.168415, 0.707415, 0.298412, 0.548953, 0.298412, 0.667736, 0.0542513, 0.628549, 0.0497252, 0.608778, 0.0508618, 0.549421, 0.0690493, 0.707415, 0.168415, 0.707767, 0.0623826, 0.704539, 0.0676867, 0.689172, 0.0543482, 0.669578, 0.0485042, 0.667736, 0.0542513, 0.649249, 0.0449553, 0.64832, 0.0508618, 0.628549, 0.0437653, 0.628549, 0.0497252, 0.607849, 0.0449553, 0.58752, 0.0485042, 0.570649, 0.0598329, 0.567927, 0.0543483, 0.549421, 0.0623826, 0.549421, 0.0690493, 0.607849, 0.0449553, 0.628549, 0.0437653, 0.707677, 0.0623826, 0.689172, 0.0543482, 0.58752, 0.0485042, 0.567927, 0.0543483, 0.549421, 0.0623826, 0.649249, 0.0449553, 0.669578, 0.0485042, 0.549421, 0.073449, 0.707767, 0.073449, 0.549421, 0.073449, 0.707649, 0.0737358, 0.711341, 0.931405, 0.711341, 0.931405, 0.553547, 0.930003, 0.556828, 0.931405, 0.553547, 0.930003, 0.57522, 0.939259, 0.57522, 0.939259, 0.553638, 0.936709, 0.553547, 0.936709, 0.692949, 0.939259, 0.654185, 0.94823, 0.673924, 0.94484, 0.673924, 0.94484, 0.613984, 0.94823, 0.553904, 0.830676, 0.71477, 0.830676, 0.553904, 0.700679, 0.715007, 0.700679, 0.594245, 0.94484, 0.634085, 0.949366, 0.654185, 0.94823, 0.714532, 0.930042, 0.553904, 0.830676, 0.71477, 0.830676, 0.553547, 0.936709, 0.556828, 0.931405, 0.572452, 0.944743, 0.592371, 0.950587, 0.594245, 0.94484, 0.613039, 0.954136, 0.613984, 0.94823, 0.634085, 0.955326, 0.634085, 0.949366, 0.65513, 0.954136, 0.675798, 0.950587, 0.692949, 0.939259, 0.695718, 0.944743, 0.714532, 0.936709, 0.714532, 0.930042, 0.65513, 0.954136, 0.634085, 0.955326, 0.553638, 0.936709, 0.572452, 0.944743, 0.675798, 0.950587, 0.695718, 0.944743, 0.714532, 0.936709, 0.613039, 0.954136, 0.592371, 0.950587, 0.714532, 0.925642, 0.553547, 0.925642, 0.714532, 0.925642, 0.553666, 0.925356, 0.281801, 0.842812, 0.278815, 0.837049, 0.298534, 0.850666, 0.315844, 0.856247, 0.333804, 0.859637, 0.352092, 0.860773, 0.388339, 0.856247, 0.371239, 0.865543, 0.352092, 0.866733, 0.352092, 0.866733, 0.371239, 0.865543, 0.390044, 0.861994, 0.408167, 0.85615, 0.408167, 0.85615, 0.278898, 0.848116, 0.278815, 0.84141, 0.278815, 0.848116, 0.281801, 0.842812, 0.296016, 0.85615, 0.314139, 0.861994, 0.332944, 0.865543, 0.333804, 0.859637, 0.388339, 0.856247, 0.405649, 0.850666, 0.425285, 0.848116, 0.425285, 0.841449, 0.278898, 0.848116, 0.315844, 0.856247, 0.298534, 0.850666, 0.278815, 0.848116, 0.278815, 0.837049, 0.296016, 0.85615, 0.314139, 0.861994, 0.332944, 0.865543, 0.390044, 0.861994, 0.425285, 0.848116, 0.370379, 0.859637, 0.370379, 0.859637, 0.278815, 0.84141, 0.352092, 0.860773, 0.422382, 0.842812, 0.405649, 0.850666, 0.422382, 0.842812, 0.279357, 0.647404, 0.425285, 0.837049, 0.278924, 0.836763, 0.425718, 0.647691, 0.425285, 0.837049, 0.278924, 0.836763, 0.425285, 0.841449, 0.425285, 0.837049, 0.425718, 0.647691, 0.425285, 0.837049, 0.425285, 0.837049, 0.425285, 0.837049, 0.323653, 0.0940825, 0.307473, 0.097472, 0.323653, 0.0940825, 0.276804, 0.110907, 0.291879, 0.103054, 0.406143, 0.112309, 0.406143, 0.105603, 0.406143, 0.105603, 0.406143, 0.11667, 0.340128, 0.0929459, 0.388378, 0.103054, 0.372784, 0.097472, 0.372784, 0.097472, 0.356604, 0.0940825, 0.274188, 0.11227, 0.274188, 0.11227, 0.406069, 0.105603, 0.274188, 0.105603, 0.28961, 0.0975689, 0.28961, 0.0975689, 0.274188, 0.105603, 0.305937, 0.0917249, 0.305937, 0.0917249, 0.406069, 0.105603, 0.403453, 0.110907, 0.390647, 0.0975689, 0.37432, 0.0917249, 0.357379, 0.088176, 0.340128, 0.086986, 0.340128, 0.0929459, 0.322878, 0.088176, 0.307473, 0.097472, 0.276804, 0.110907, 0.390647, 0.0975689, 0.322878, 0.088176, 0.340128, 0.086986, 0.357379, 0.088176, 0.37432, 0.0917249, 0.406143, 0.11667, 0.274188, 0.11667, 0.406045, 0.116957, 0.405656, 0.306315, 0.273798, 0.306028, 0.406143, 0.112309, 0.403453, 0.110907, 0.388378, 0.103054, 0.356604, 0.0940825, 0.291879, 0.103054, 0.274188, 0.11667, 0.405656, 0.306315, 0.273798, 0.306028, 0.356263, 0.901763, 0.372443, 0.898374, 0.356263, 0.901763, 0.403112, 0.884938, 0.388037, 0.892792, 0.273773, 0.883537, 0.273773, 0.890242, 0.273773, 0.890242, 0.273773, 0.879176, 0.339787, 0.9029, 0.291538, 0.892792, 0.307132, 0.898374, 0.307132, 0.898374, 0.323312, 0.901763, 0.405728, 0.883576, 0.405728, 0.883576, 0.273847, 0.890242, 0.405728, 0.890242, 0.390306, 0.898277, 0.390306, 0.898277, 0.405728, 0.890242, 0.373979, 0.904121, 0.373979, 0.904121, 0.273847, 0.890242, 0.276463, 0.884938, 0.289269, 0.898277, 0.305596, 0.904121, 0.322537, 0.90767, 0.339787, 0.90886, 0.339787, 0.9029, 0.357038, 0.90767, 0.372443, 0.898374, 0.403112, 0.884938, 0.289269, 0.898277, 0.357038, 0.90767, 0.339787, 0.90886, 0.322537, 0.90767, 0.305596, 0.904121, 0.273773, 0.879176, 0.405728, 0.879176, 0.273871, 0.878889, 0.27426, 0.689531, 0.406118, 0.689818, 0.273773, 0.883537, 0.276463, 0.884938, 0.291538, 0.892792, 0.323312, 0.901763, 0.388037, 0.892792, 0.405728, 0.879176, 0.27426, 0.689531, 0.406118, 0.689818, 0.433438, 0.277155, 0.4275, 0.277155, 0.433438, 0.0498405, 0.440665, 0.0697845, 0.433438, 0.285285, 0.42715, 0.119384, 0.406053, 0.0693816, 0.433438, 0.0290504, 0.433438, 0.0290504, 0.433438, 0.0348293, 0.555597, 0.0286826, 0.555597, 0.0286826, 0.556168, 0.303558, 0.433438, 0.028735, 0.531255, 0.0286826, 0.531255, 0.034668, 0.433438, 0.119384, 0.4275, 0.277155, 0.433438, 0.285285, 0.556085, 0.30328, 0.531255, 0.284962, 0.555669, 0.0693817, 0.427616, 0.188895, 0.433438, 0.257836, 0.555669, 0.0693818, 0.555597, 0.0693818, 0.555597, 0.0286826, 0.405981, 0.0290052, 0.4275, 0.257836, 0.433438, 0.257836, 0.44054, 0.257836, 0.44054, 0.257836, 0.440864, 0.208355, 0.427616, 0.188895, 0.433438, 0.188895, 0.441162, 0.188895, 0.441162, 0.188895, 0.441162, 0.139414, 0.433438, 0.119384, 0.440665, 0.119384, 0.433438, 0.034668, 0.440665, 0.0697845, 0.441262, 0.0498403, 0.441262, 0.034668, 0.441262, 0.034668, 0.441262, 0.0498403, 0.531255, 0.0345068, 0.531255, 0.0693817, 0.531255, 0.0338424, 0.531255, 0.284962, 0.433438, 0.208355, 0.427616, 0.208355, 0.531255, 0.0693817, 0.433438, 0.277155, 0.433438, 0.0693816, 0.433438, 0.0693816, 0.433438, 0.0697845, 0.42715, 0.119384, 0.42715, 0.139414, 0.441162, 0.139414, 0.42715, 0.139414, 0.440864, 0.208355, 0.440665, 0.119384, 0.427616, 0.208355, 0.433438, 0.0341651, 0.433438, 0.188895, 0.4275, 0.257836, 0.433438, 0.139414, 0.433438, 0.0498405, 0.433438, 0.139414, 0.433438, 0.0697845, 0.433438, 0.208355, 0.531255, 0.0287052, 0.405981, 0.0292833, 0.53116, 0.30338, 0.531255, 0.30363, 0.531255, 0.285124, 0.406065, 0.0694694, 0.433437, 0.729678, 0.427499, 0.729678, 0.433437, 0.956993, 0.440664, 0.937049, 0.433437, 0.721548, 0.42715, 0.887449, 0.406053, 0.937451, 0.433437, 0.977783, 0.433437, 0.977783, 0.433437, 0.972004, 0.555597, 0.978151, 0.555597, 0.978151, 0.556167, 0.703275, 0.433437, 0.978098, 0.531255, 0.978151, 0.531255, 0.972165, 0.433437, 0.887449, 0.427499, 0.729678, 0.433437, 0.721548, 0.556085, 0.703553, 0.531255, 0.721871, 0.555669, 0.937451, 0.427616, 0.817938, 0.433437, 0.748997, 0.555669, 0.937451, 0.555597, 0.937451, 0.555597, 0.978151, 0.405981, 0.977828, 0.427499, 0.748997, 0.433437, 0.748997, 0.44054, 0.748997, 0.44054, 0.748997, 0.440863, 0.798478, 0.427616, 0.817938, 0.433437, 0.817938, 0.441162, 0.817938, 0.441162, 0.817938, 0.441162, 0.867419, 0.433437, 0.887449, 0.440664, 0.887449, 0.433437, 0.972165, 0.440664, 0.937049, 0.441261, 0.956993, 0.441261, 0.972165, 0.441261, 0.972165, 0.441261, 0.956993, 0.531255, 0.972326, 0.531255, 0.937451, 0.531255, 0.972991, 0.531255, 0.721871, 0.433437, 0.798478, 0.427616, 0.798478, 0.531254, 0.937451, 0.433438, 0.729678, 0.433437, 0.937451, 0.433437, 0.937451, 0.433437, 0.937049, 0.42715, 0.887449, 0.42715, 0.867419, 0.441162, 0.867419, 0.42715, 0.867419, 0.440863, 0.798478, 0.440664, 0.887449, 0.427616, 0.798478, 0.433437, 0.972668, 0.433437, 0.817938, 0.427499, 0.748997, 0.433437, 0.867419, 0.433437, 0.956993, 0.433437, 0.867419, 0.433437, 0.937049, 0.433437, 0.798478, 0.531255, 0.978128, 0.405981, 0.97755, 0.53116, 0.703453, 0.531255, 0.703203, 0.531255, 0.72171, 0.406065, 0.937364, 0.169892, 0.283942, 0.164817, 0.283942, 0.169892, 0.0879808, 0.175763, 0.105174, 0.169892, 0.290811, 0.164518, 0.147932, 0.146913, 0.306981, 0.146497, 0.104827, 0.146497, 0.104827, 0.146913, 0.306981, 0.169892, 0.0697864, 0.169892, 0.0697864, 0.169892, 0.074901, 0.274302, 0.0697412, 0.274302, 0.0697412, 0.27479, 0.306703, 0.169892, 0.0697864, 0.253496, 0.0697412, 0.253496, 0.074901, 0.169892, 0.147932, 0.164817, 0.283942, 0.169892, 0.290811, 0.27479, 0.306703, 0.253496, 0.290811, 0.274374, 0.104827, 0.164916, 0.207856, 0.169892, 0.267287, 0.274374, 0.104827, 0.274302, 0.104827, 0.274302, 0.0697412, 0.146425, 0.0700193, 0.164817, 0.267287, 0.169892, 0.267287, 0.175963, 0.267287, 0.175963, 0.267287, 0.175963, 0.224631, 0.164916, 0.207856, 0.169892, 0.207856, 0.176261, 0.207856, 0.176261, 0.207856, 0.176261, 0.1652, 0.169892, 0.147932, 0.175763, 0.147932, 0.169892, 0.074901, 0.175763, 0.105174, 0.176361, 0.0879807, 0.176361, 0.074901, 0.176361, 0.074901, 0.176361, 0.0879807, 0.253496, 0.074901, 0.253496, 0.104827, 0.253496, 0.074901, 0.253496, 0.290811, 0.169892, 0.224631, 0.164916, 0.224631, 0.253496, 0.104827, 0.169892, 0.283942, 0.169892, 0.104827, 0.169892, 0.104827, 0.169892, 0.105174, 0.164518, 0.147932, 0.164518, 0.1652, 0.176261, 0.1652, 0.164518, 0.1652, 0.175963, 0.224631, 0.175763, 0.147932, 0.164916, 0.224631, 0.169892, 0.074901, 0.169892, 0.207856, 0.164817, 0.267287, 0.169892, 0.1652, 0.169892, 0.0879808, 0.169892, 0.1652, 0.169892, 0.105174, 0.169892, 0.224631, 0.253496, 0.0697637, 0.146425, 0.0700193, 0.147682, 0.165199, 0.147682, 0.165199, 0.088463, 0.221131, 0.120803, 0.174641, 0.0884629, 0.250329, 0.0998856, 0.277063, 0.0998857, 0.277063, 0.0884629, 0.250329, 0.120803, 0.174641, 0.0998857, 0.194397, 0.0998857, 0.194397, 0.0884629, 0.221131, 0.120803, 0.296819, 0.120803, 0.296819, 0.147682, 0.306261, 0.147682, 0.306261, 0.147682, 0.193832, 0.112503, 0.227057, 0.131715, 0.199441, 0.112503, 0.244403, 0.119289, 0.260284, 0.119289, 0.211176, 0.131715, 0.27202, 0.147682, 0.277629, 0.147682, 0.193832, 0.112503, 0.227057, 0.131715, 0.199441, 0.112503, 0.244403, 0.119289, 0.260284, 0.119289, 0.211176, 0.131715, 0.27202, 0.147682, 0.277629, 0.148582, 0.68848, 0.148582, 0.68848, 0.089363, 0.744412, 0.121703, 0.697922, 0.089363, 0.773611, 0.100786, 0.800345, 0.100786, 0.800345, 0.089363, 0.773611, 0.121703, 0.697922, 0.100786, 0.717678, 0.100786, 0.717678, 0.089363, 0.744412, 0.121703, 0.8201, 0.121703, 0.8201, 0.148582, 0.829542, 0.148582, 0.829542, 0.148582, 0.717113, 0.113403, 0.750339, 0.132615, 0.722722, 0.113403, 0.767684, 0.120189, 0.783565, 0.120189, 0.734457, 0.132615, 0.795301, 0.148582, 0.80091, 0.148582, 0.717113, 0.113403, 0.750339, 0.132615, 0.722722, 0.113403, 0.767684, 0.120189, 0.783565, 0.120189, 0.734457, 0.132615, 0.795301, 0.148582, 0.80091, 0.146384, 0.689252, 0.147173, 0.306082, 0.147173, 0.306082, 0.146384, 0.689253, 0.101859, 0.4918, 0.147682, 0.474615, 0.405882, 0.863378, 0.405882, 0.791348, 0.405882, 0.742522, 0.147173, 0.306082, 0.405882, 0.421041, 0.15384, 0.306096, 0.134633, 0.52422, 0.128253, 0.695621, 0.405882, 0.134142, 0.732521, 0.978343, 0.732521, 0.993515, 0.732521, 0.978343, 0.732521, 0.958801, 0.739701, 0.978343, 0.739701, 0.993515, 0.726888, 0.770347, 0.732521, 0.819828, 0.732521, 0.978343, 0.732521, 0.751028, 0.732521, 0.718407, 0.739591, 0.839288, 0.739591, 0.888769, 0.732521, 0.770347, 0.739259, 0.770347, 0.739259, 0.770347, 0.732521, 0.888769, 0.732521, 0.839288, 0.739038, 0.958398, 0.739038, 0.958398, 0.726556, 0.908799, 0.732521, 0.751028, 0.732521, 0.908799, 0.848416, 0.999501, 0.825322, 0.9995, 0.739038, 0.908799, 0.726998, 0.819828, 0.706553, 0.958801, 0.739259, 0.819828, 0.732521, 0.839288, 0.848416, 0.958801, 0.732521, 0.770347, 0.726998, 0.819828, 0.706891, 0.791022, 0.976303, 0.580597, 0.889149, 0.648615, 0.976303, 0.597935, 0.976303, 0.648615, 0.890254, 0.666337, 0.976303, 0.666337, 0.890254, 0.892345, 0.890254, 0.892345, 0.890254, 0.911679, 0.890254, 0.666337, 0.976303, 0.666337, 0.995303, 0.666337, 0.976303, 0.648615, 0.995303, 0.580597, 0.995303, 0.648615, 0.995303, 0.666337, 0.995303, 0.648615, 0.995303, 0.580597, 0.995303, 0.642139, 0.995303, 0.604975, 0.992983, 0.648615, 0.976303, 0.597935, 0.992983, 0.597935, 0.992983, 0.604975, 0.992983, 0.648615, 0.992983, 0.642139, 0.992983, 0.648615, 0.992983, 0.648615, 0.992983, 0.597935, 0.9995, 0.604975, 0.992983, 0.604975, 0.9995, 0.642139, 0.9995, 0.642139, 0.992983, 0.642139, 0.825322, 0.999448, 0.732521, 0.999448, 0.732521, 0.999448, 0.706473, 0.999178, 0.732521, 0.999313, 0.706473, 0.999178, 0.706553, 0.958801, 0.732521, 0.791068, 0.732526, 0.791068, 0.739701, 0.993515, 0.825322, 0.993515, 0.732521, 0.993515, 0.825322, 0.993515, 0.732521, 0.993515, 0.825322, 0.718407, 0.726998, 0.839288, 0.739591, 0.839288, 0.739701, 0.978343, 0.732521, 0.958398, 0.739038, 0.908799, 0.726556, 0.888769, 0.825322, 0.718407, 0.825322, 0.993515, 0.825322, 0.958801, 0.732521, 0.718407, 0.726556, 0.908799, 0.732521, 0.958398, 0.825322, 0.958801, 0.732521, 0.958398, 0.726888, 0.751028, 0.739591, 0.888769, 0.739259, 0.819828, 0.726888, 0.751028, 0.726888, 0.770347, 0.825322, 0.791219, 0.848416, 0.958801, 0.848803, 0.791276, 0.848803, 0.791276, 0.9995, 0.604975, 0.902405, 0.604975, 0.848416, 0.999501, 0.825322, 0.791219, 0.849506, 0.892345, 0.849506, 0.911679, 0.849506, 0.911679, 0.849506, 0.892345, 0.849506, 0.580597, 0.889149, 0.597935, 0.889149, 0.648615, 0.995303, 0.597935, 0.992983, 0.642139, 0.902405, 0.642139, 0.902405, 0.642139, 0.726556, 0.888769, 0.849506, 0.580597, 0.726998, 0.839288, 0.732521, 0.819828, 0.889149, 0.597935, 0.890254, 0.911679, 0.992983, 0.597935, 0.902405, 0.604975, 0.976303, 0.580597, 0.732521, 0.888769, 0.992983, 0.604975, 0.732521, 0.908799, 0.992983, 0.597935, 0.995303, 0.597935, 0.706891, 0.791022, 0.732521, 0.0216573, 0.732521, 0.00648499, 0.732521, 0.0216573, 0.732521, 0.0411986, 0.739702, 0.0216573, 0.739702, 0.00648499, 0.726888, 0.229653, 0.732521, 0.180172, 0.732521, 0.0216573, 0.732521, 0.248972, 0.732521, 0.281593, 0.739591, 0.160712, 0.739591, 0.111231, 0.732521, 0.229653, 0.73926, 0.229653, 0.73926, 0.229653, 0.732521, 0.111231, 0.732521, 0.160712, 0.739039, 0.0416014, 0.739039, 0.0416014, 0.726556, 0.0912012, 0.732521, 0.248972, 0.732521, 0.0912012, 0.848416, 0.000499547, 0.825322, 0.000499547, 0.739039, 0.0912012, 0.726998, 0.180172, 0.706553, 0.0411986, 0.73926, 0.180172, 0.732521, 0.160712, 0.848416, 0.0411986, 0.732521, 0.229653, 0.726998, 0.180172, 0.706891, 0.208978, 0.976303, 0.419403, 0.889149, 0.351385, 0.976303, 0.402065, 0.976303, 0.351385, 0.890254, 0.333663, 0.976303, 0.333663, 0.890254, 0.107655, 0.890254, 0.107655, 0.890254, 0.0883214, 0.890254, 0.333663, 0.976303, 0.333663, 0.995303, 0.333663, 0.976303, 0.351385, 0.995303, 0.419403, 0.995303, 0.351385, 0.995303, 0.333663, 0.995303, 0.351385, 0.995303, 0.419403, 0.995303, 0.357861, 0.995303, 0.395025, 0.992983, 0.351385, 0.976303, 0.402065, 0.992983, 0.402065, 0.992983, 0.395025, 0.992983, 0.351385, 0.992983, 0.357861, 0.992983, 0.351385, 0.992983, 0.351385, 0.992983, 0.402065, 0.999501, 0.395025, 0.992983, 0.395025, 0.999501, 0.357862, 0.999501, 0.357862, 0.992983, 0.357861, 0.825322, 0.000551999, 0.732521, 0.000551999, 0.732521, 0.000551999, 0.706473, 0.000822127, 0.732521, 0.000687063, 0.706473, 0.000822127, 0.706553, 0.0411986, 0.732521, 0.208932, 0.732527, 0.208932, 0.739702, 0.00648499, 0.825322, 0.00648499, 0.732521, 0.00648499, 0.825322, 0.00648499, 0.732521, 0.00648499, 0.825322, 0.281593, 0.726998, 0.160712, 0.739591, 0.160712, 0.739702, 0.0216573, 0.732521, 0.0416014, 0.739039, 0.0912012, 0.726556, 0.111231, 0.707563, 0.5, 0.825322, 0.281593, 0.825322, 0.00648499, 0.825322, 0.0411986, 0.732521, 0.281593, 0.726556, 0.0912012, 0.849506, 0.5, 0.707563, 0.5, 0.732521, 0.0416014, 0.825322, 0.0411986, 0.732521, 0.0416014, 0.726888, 0.248972, 0.739591, 0.111231, 0.73926, 0.180172, 0.726888, 0.248972, 0.726888, 0.229653, 0.825322, 0.208781, 0.848416, 0.0411986, 0.848804, 0.208724, 0.848804, 0.208724, 0.999501, 0.395025, 0.902405, 0.395025, 0.848416, 0.000499547, 0.825322, 0.208781, 0.849506, 0.107655, 0.849506, 0.0883214, 0.849506, 0.0883214, 0.849506, 0.107655, 0.849506, 0.5, 0.849506, 0.419403, 0.889149, 0.402065, 0.889149, 0.351385, 0.995303, 0.402065, 0.992983, 0.357861, 0.902405, 0.357861, 0.902405, 0.357861, 0.726556, 0.111231, 0.849506, 0.419403, 0.726998, 0.160712, 0.732521, 0.180172, 0.889149, 0.402065, 0.890254, 0.0883214, 0.992983, 0.402065, 0.902405, 0.395025, 0.976303, 0.419403, 0.732521, 0.111231, 0.992983, 0.395025, 0.732521, 0.0912012, 0.992983, 0.402065, 0.995303, 0.402065, 0.706892, 0.208978]; + indices = new [47, 58, 3, 58, 47, 2, 7, 6, 8, 7, 1155, 6, 7, 29, 1155, 7, 75, 29, 10, 11, 9, 11, 10, 66, 23, 49, 54, 23, 27, 49, 23, 26, 27, 14, 23, 21, 14, 26, 23, 26, 12, 28, 26, 13, 12, 14, 13, 26, 9, 75, 10, 9, 29, 75, 9, 15, 29, 74, 15, 9, 15, 74, 13, 74, 28, 12, 28, 74, 16, 48, 9, 11, 9, 48, 74, 17, 28, 16, 21, 1155, 14, 1155, 21, 6, 20, 19, 6, 19, 20, 55, 26, 28, 27, 13, 29, 15, 0, 20, 4, 20, 0, 55, 56, 8, 57, 8, 56, 7, 75, 66, 10, 25, 73, 52, 73, 25, 31, 19, 30, 68, 30, 19, 1, 31, 68, 30, 68, 31, 25, 19, 0, 1, 0, 19, 55, 67, 71, 69, 71, 67, 36, 63, 32, 33, 32, 63, 34, 73, 63, 53, 63, 73, 34, 73, 32, 34, 32, 73, 31, 35, 65, 53, 65, 35, 24, 36, 24, 35, 24, 36, 67, 73, 65, 52, 65, 73, 53, 61, 37, 38, 37, 61, 39, 71, 61, 62, 61, 71, 39, 71, 37, 39, 37, 71, 36, 5, 60, 62, 60, 5, 59, 18, 5, 40, 5, 18, 59, 71, 60, 69, 60, 71, 62, 56, 42, 66, 56, 70, 42, 72, 18, 40, 70, 18, 72, 70, 57, 18, 56, 57, 70, 3, 41, 64, 41, 3, 43, 72, 3, 58, 3, 72, 43, 72, 41, 43, 41, 72, 40, 70, 58, 2, 58, 70, 72, 45, 44, 47, 44, 45, 46, 42, 44, 46, 44, 42, 70, 44, 2, 47, 2, 44, 70, 17, 42, 46, 17, 66, 42, 17, 11, 66, 17, 48, 11, 22, 4, 20, 4, 22, 51, 54, 51, 22, 54, 50, 51, 50, 49, 17, 54, 49, 50, 6, 59, 8, 59, 6, 60, 65, 25, 52, 65, 68, 25, 19, 60, 6, 68, 60, 19, 69, 24, 67, 60, 24, 69, 68, 24, 60, 65, 24, 68, 22, 23, 54, 21, 20, 6, 21, 22, 20, 21, 23, 22, 59, 57, 8, 57, 59, 18, 66, 7, 56, 7, 66, 75, 64, 62, 61, 62, 64, 5, 63, 35, 53, 35, 63, 38, 30, 0, 33, 0, 30, 1, 0, 51, 33, 51, 0, 4, 61, 3, 64, 61, 50, 3, 50, 33, 51, 33, 38, 63, 50, 38, 33, 61, 38, 50, 47, 50, 45, 50, 47, 3, 41, 5, 64, 5, 41, 40, 37, 35, 38, 35, 37, 36, 32, 30, 33, 30, 32, 31, 46, 50, 17, 50, 46, 45, 27, 17, 49, 17, 27, 28, 16, 48, 17, 48, 16, 74, 13, 74, 12, 164, 76, 165, 76, 164, 77, 263, 80, 81, 80, 263, 264, 82, 504, 83, 504, 82, 503, 81, 84, 85, 81, 83, 84, 81, 82, 83, 81, 80, 82, 86, 81, 85, 81, 86, 263, 87, 1157, 167, 1157, 87, 171, 1164, 1155, 1156, 1155, 1164, 1158, 90, 91, 88, 91, 92, 93, 90, 92, 91, 90, 94, 92, 95, 93, 96, 93, 95, 91, 172, 274, 269, 274, 172, 1169, 97, 98, 100, 98, 97, 99, 1161, 173, 101, 173, 1161, 391, 267, 102, 104, 102, 267, 103, 97, 102, 103, 102, 97, 100, 90, 105, 94, 105, 90, 106, 107, 90, 89, 90, 107, 106, 274, 124, 105, 124, 95, 96, 274, 95, 124, 274, 1169, 95, 92, 96, 93, 96, 92, 124, 105, 92, 94, 92, 105, 124, 130, 267, 131, 267, 130, 103, 132, 265, 134, 265, 132, 133, 132, 131, 133, 131, 132, 130, 266, 134, 265, 134, 266, 88, 283, 139, 140, 283, 138, 139, 283, 137, 138, 141, 135, 143, 141, 136, 135, 141, 142, 136, 245, 138, 145, 245, 139, 138, 245, 144, 139, 245, 244, 144, 140, 148, 147, 140, 146, 148, 151, 143, 152, 150, 143, 151, 150, 141, 143, 149, 141, 150, 149, 144, 141, 146, 144, 149, 146, 139, 144, 140, 139, 146, 299, 147, 148, 147, 299, 153, 299, 146, 297, 146, 299, 148, 296, 146, 149, 146, 296, 297, 298, 149, 150, 149, 298, 296, 298, 151, 303, 151, 298, 150, 268, 151, 152, 151, 268, 303, 143, 268, 152, 268, 143, 135, 147, 283, 140, 283, 147, 153, 142, 246, 154, 244, 141, 144, 246, 141, 244, 142, 141, 246, 247, 154, 246, 154, 247, 367, 249, 356, 155, 356, 249, 157, 358, 158, 156, 158, 358, 357, 165, 159, 160, 159, 165, 76, 245, 366, 162, 366, 245, 145, 163, 164, 165, 164, 163, 1168, 1166, 87, 167, 87, 1166, 166, 1156, 168, 390, 1166, 293, 1157, 168, 293, 1166, 1156, 293, 168, 1157, 389, 1166, 1155, 394, 169, 166, 171, 87, 166, 1158, 171, 394, 1158, 166, 1155, 1158, 394, 390, 169, 394, 394, 295, 390, 282, 391, 1169, 1169, 129, 282, 1169, 1162, 129, 1169, 174, 1162, 1169, 1163, 174, 1169, 175, 1163, 1169, 176, 175, 1169, 177, 176, 1169, 178, 177, 1169, 179, 178, 1169, 180, 179, 1169, 181, 180, 1169, 300, 181, 1169, 182, 300, 1169, 183, 182, 1169, 184, 183, 1169, 301, 184, 1169, 185, 301, 1169, 1165, 185, 1169, 186, 1165, 1169, 187, 186, 1169, 188, 187, 1169, 118, 188, 1169, 189, 118, 1169, 271, 189, 1169, 190, 271, 1169, 191, 190, 1169, 192, 191, 1169, 122, 192, 1169, 193, 122, 1169, 273, 193, 1169, 194, 273, 195, 273, 196, 273, 195, 193, 121, 195, 305, 195, 121, 193, 123, 305, 306, 305, 123, 121, 306, 273, 123, 273, 306, 196, 307, 122, 197, 122, 307, 192, 120, 307, 308, 307, 120, 192, 198, 308, 199, 308, 198, 120, 199, 122, 198, 122, 199, 197, 309, 191, 310, 191, 309, 190, 200, 309, 201, 309, 200, 190, 119, 201, 202, 201, 119, 200, 202, 191, 119, 191, 202, 310, 312, 271, 203, 271, 312, 189, 204, 312, 311, 312, 204, 189, 205, 311, 206, 311, 205, 204, 206, 271, 205, 271, 206, 203, 187, 313, 186, 207, 188, 118, 313, 188, 207, 187, 188, 313, 208, 313, 209, 313, 208, 186, 117, 209, 210, 209, 117, 208, 210, 118, 117, 118, 210, 207, 211, 1165, 315, 1165, 211, 185, 115, 211, 314, 211, 115, 185, 212, 314, 316, 314, 212, 115, 316, 1165, 212, 1165, 316, 315, 317, 113, 318, 114, 317, 213, 317, 114, 113, 213, 301, 114, 301, 213, 214, 215, 301, 214, 301, 215, 184, 113, 215, 318, 215, 113, 184, 319, 183, 216, 183, 319, 182, 112, 319, 217, 319, 112, 182, 218, 217, 219, 217, 218, 112, 219, 183, 218, 183, 219, 216, 180, 321, 179, 220, 181, 300, 321, 181, 220, 180, 181, 321, 110, 321, 322, 321, 110, 179, 111, 322, 320, 322, 111, 110, 320, 300, 111, 300, 320, 220, 323, 178, 221, 178, 323, 177, 109, 323, 324, 323, 109, 177, 222, 324, 223, 324, 222, 109, 223, 178, 222, 178, 223, 221, 224, 176, 225, 176, 224, 175, 226, 224, 325, 224, 226, 175, 108, 325, 227, 325, 108, 226, 227, 176, 108, 176, 227, 225, 327, 1163, 329, 1163, 327, 174, 228, 327, 328, 327, 228, 174, 229, 328, 326, 328, 229, 228, 326, 1163, 229, 1163, 326, 329, 230, 1162, 332, 1162, 230, 129, 231, 230, 331, 230, 231, 129, 232, 331, 330, 331, 232, 231, 330, 1162, 232, 1162, 330, 332, 262, 342, 233, 238, 239, 240, 238, 237, 239, 392, 237, 238, 392, 335, 237, 235, 335, 392, 235, 236, 335, 235, 1159, 236, 342, 1159, 235, 342, 234, 1159, 262, 234, 342, 392, 354, 280, 354, 392, 241, 280, 393, 392, 280, 355, 393, 355, 1160, 393, 355, 242, 1160, 242, 355, 243, 162, 244, 245, 162, 246, 244, 162, 247, 246, 248, 384, 382, 291, 250, 252, 250, 291, 251, 253, 290, 292, 290, 253, 254, 291, 0xFF, 0x0100, 0xFF, 291, 252, 259, 388, 380, 388, 259, 260, 294, 165, 160, 165, 294, 163, 79, 77, 78, 77, 79, 76, 161, 76, 79, 76, 161, 159, 83, 502, 84, 502, 83, 504, 1159, 339, 261, 1159, 337, 339, 1159, 338, 337, 339, 262, 261, 339, 340, 262, 339, 341, 340, 86, 264, 263, 267, 104, 131, 269, 268, 135, 269, 118, 268, 269, 270, 118, 269, 271, 270, 269, 126, 271, 269, 191, 126, 269, 272, 191, 269, 122, 272, 269, 125, 122, 269, 273, 125, 276, 275, 350, 280, 281, 355, 280, 279, 281, 278, 279, 280, 278, 277, 279, 275, 277, 278, 276, 277, 275, 283, 1161, 101, 283, 129, 1161, 283, 284, 129, 283, 285, 284, 283, 286, 285, 283, 287, 286, 283, 176, 287, 283, 288, 176, 283, 178, 288, 178, 153, 289, 283, 153, 178, 385, 383, 378, 290, 291, 0x0100, 291, 290, 251, 253, 258, 0x0101, 258, 253, 292, 258, 290, 0x0100, 290, 258, 292, 163, 170, 1168, 163, 1164, 170, 163, 294, 1164, 394, 1166, 295, 1166, 394, 166, 296, 299, 297, 302, 303, 304, 116, 303, 302, 301, 303, 116, 127, 303, 301, 183, 303, 127, 128, 303, 183, 128, 298, 303, 300, 298, 128, 299, 298, 300, 296, 298, 299, 305, 196, 306, 196, 305, 195, 199, 307, 197, 307, 199, 308, 202, 309, 310, 309, 202, 201, 311, 203, 206, 203, 311, 312, 210, 313, 207, 313, 210, 209, 314, 315, 316, 315, 314, 211, 317, 214, 213, 317, 215, 214, 317, 318, 215, 219, 319, 216, 319, 219, 217, 320, 321, 220, 321, 320, 322, 223, 323, 221, 323, 223, 324, 227, 224, 225, 224, 227, 325, 326, 327, 329, 327, 326, 328, 330, 230, 332, 230, 330, 331, 333, 334, 336, 334, 333, 335, 337, 335, 333, 335, 337, 338, 341, 342, 340, 342, 341, 343, 344, 342, 343, 342, 344, 345, 346, 279, 347, 279, 346, 281, 347, 277, 348, 277, 347, 279, 277, 349, 348, 349, 277, 276, 350, 349, 276, 349, 350, 351, 275, 351, 350, 351, 275, 352, 352, 278, 353, 278, 352, 275, 348, 339, 337, 339, 348, 349, 353, 280, 354, 280, 353, 278, 241, 345, 344, 345, 241, 392, 336, 1160, 242, 336, 239, 1160, 336, 334, 239, 243, 281, 346, 281, 243, 355, 356, 357, 358, 357, 356, 157, 359, 413, 361, 413, 359, 360, 362, 363, 365, 363, 362, 364, 363, 413, 360, 413, 363, 364, 363, 359, 365, 359, 363, 360, 359, 362, 365, 362, 359, 361, 247, 366, 367, 366, 247, 162, 370, 371, 372, 370, 369, 371, 370, 368, 369, 373, 371, 374, 371, 373, 372, 371, 375, 374, 375, 371, 369, 369, 376, 375, 376, 369, 368, 368, 377, 376, 377, 368, 370, 135, 172, 269, 101, 137, 283, 173, 137, 101, 172, 137, 173, 172, 136, 137, 135, 136, 172, 1164, 171, 1158, 171, 1164, 1157, 384, 155, 383, 155, 384, 249, 254, 388, 379, 388, 254, 253, 382, 383, 385, 383, 382, 384, 248, 385, 378, 385, 248, 382, 386, 259, 387, 259, 386, 260, 386, 388, 260, 388, 386, 379, 380, 387, 259, 387, 380, 381, 241, 353, 354, 353, 241, 344, 344, 352, 353, 352, 344, 343, 343, 351, 352, 351, 343, 341, 351, 339, 349, 339, 351, 341, 348, 333, 347, 333, 348, 337, 333, 346, 347, 346, 242, 243, 333, 242, 346, 333, 336, 242, 395, 396, 397, 396, 395, 398, 399, 396, 400, 396, 399, 397, 401, 402, 403, 402, 401, 404, 402, 405, 403, 405, 402, 406, 402, 399, 406, 402, 397, 399, 402, 395, 397, 402, 404, 395, 401, 403, 405, 107, 121, 123, 107, 198, 121, 107, 120, 198, 107, 119, 120, 107, 200, 119, 107, 205, 200, 107, 204, 205, 107, 117, 204, 107, 208, 117, 107, 212, 208, 107, 115, 212, 107, 114, 115, 107, 113, 114, 107, 218, 113, 107, 112, 218, 107, 111, 112, 107, 110, 111, 107, 222, 110, 107, 109, 222, 107, 108, 109, 107, 226, 108, 107, 229, 226, 107, 228, 229, 107, 232, 228, 107, 231, 232, 107, 104, 231, 121, 122, 125, 122, 121, 198, 120, 191, 272, 191, 120, 119, 200, 271, 126, 271, 200, 205, 204, 118, 270, 118, 204, 117, 208, 1165, 186, 1165, 208, 212, 115, 301, 116, 301, 115, 114, 113, 183, 127, 183, 113, 218, 112, 300, 128, 300, 112, 111, 110, 178, 289, 178, 110, 222, 109, 176, 288, 176, 109, 108, 226, 1163, 175, 1163, 226, 229, 228, 1162, 174, 1162, 228, 232, 102, 231, 104, 102, 129, 231, 102, 1161, 129, 133, 266, 265, 266, 133, 131, 266, 107, 89, 266, 104, 107, 104, 266, 131, 1161, 102, 100, 1161, 98, 391, 98, 1161, 100, 273, 107, 123, 273, 106, 107, 273, 274, 106, 274, 105, 106, 290, 250, 251, 250, 290, 254, 0x0100, 0x0101, 258, 0x0101, 0x0100, 0xFF, 388, 0x0101, 380, 0x0101, 388, 253, 381, 0x0101, 0xFF, 0x0101, 381, 380, 383, 156, 378, 156, 383, 155, 378, 158, 248, 158, 378, 156, 156, 356, 358, 356, 156, 155, 273, 269, 274, 357, 248, 158, 248, 157, 384, 157, 248, 357, 384, 157, 249, 130, 97, 103, 97, 130, 99, 88, 89, 90, 89, 88, 266, 407, 433, 409, 433, 407, 408, 410, 412, 413, 410, 411, 412, 410, 1167, 411, 414, 415, 1167, 415, 414, 416, 417, 418, 420, 418, 417, 419, 425, 415, 416, 412, 407, 413, 412, 408, 407, 415, 408, 412, 425, 408, 415, 418, 423, 420, 408, 423, 418, 423, 422, 424, 408, 422, 423, 425, 422, 408, 425, 426, 422, 433, 421, 409, 433, 431, 421, 433, 1167, 431, 433, 414, 1167, 433, 430, 414, 430, 429, 432, 433, 429, 430, 433, 428, 429, 433, 427, 428, 433, 417, 427, 433, 419, 417, 417, 423, 427, 423, 417, 420, 428, 423, 424, 423, 428, 427, 428, 422, 429, 422, 428, 424, 432, 422, 426, 422, 432, 429, 432, 425, 430, 425, 432, 426, 414, 425, 416, 425, 414, 430, 434, 460, 435, 460, 434, 461, 436, 439, 440, 436, 437, 439, 436, 438, 437, 441, 442, 438, 442, 441, 443, 444, 445, 446, 445, 444, 459, 451, 442, 443, 439, 434, 440, 439, 461, 434, 442, 461, 439, 451, 461, 442, 445, 449, 446, 461, 449, 445, 449, 448, 450, 461, 448, 449, 451, 448, 461, 451, 452, 448, 460, 447, 435, 460, 457, 447, 460, 438, 457, 460, 441, 438, 460, 456, 441, 456, 455, 458, 460, 455, 456, 460, 454, 455, 460, 453, 454, 460, 444, 453, 460, 459, 444, 444, 449, 453, 449, 444, 446, 454, 449, 450, 449, 454, 453, 454, 448, 455, 448, 454, 450, 458, 448, 452, 448, 458, 455, 458, 451, 456, 451, 458, 452, 441, 451, 443, 451, 441, 456, 462, 466, 463, 466, 462, 468, 462, 467, 468, 467, 462, 465, 464, 467, 465, 467, 464, 469, 466, 464, 463, 464, 466, 469, 466, 467, 469, 467, 466, 468, 470, 475, 472, 475, 470, 471, 470, 476, 471, 476, 470, 474, 473, 476, 474, 476, 473, 477, 475, 473, 472, 473, 475, 477, 475, 476, 477, 476, 475, 471, 478, 485, 480, 485, 478, 479, 478, 483, 479, 483, 478, 482, 481, 483, 482, 483, 481, 484, 485, 481, 480, 481, 485, 484, 485, 483, 484, 483, 485, 479, 486, 487, 489, 487, 486, 488, 486, 492, 488, 492, 486, 491, 490, 492, 491, 492, 490, 493, 487, 490, 489, 490, 487, 493, 487, 492, 493, 492, 487, 488, 494, 495, 497, 495, 494, 496, 1168, 500, 501, 1168, 498, 500, 1168, 496, 498, 1168, 495, 496, 1168, 499, 495, 499, 497, 495, 508, 547, 548, 547, 508, 509, 546, 538, 0x0200, 538, 546, 507, 548, 521, 522, 521, 548, 547, 540, 535, 519, 535, 540, 529, 540, 506, 529, 506, 540, 539, 517, 508, 524, 508, 528, 509, 528, 511, 505, 508, 511, 528, 511, 526, 510, 508, 526, 511, 517, 526, 508, 517, 527, 526, 507, 529, 506, 549, 0x0202, 515, 536, 519, 518, 536, 549, 519, 536, 0x0202, 549, 536, 537, 0x0202, 524, 536, 525, 536, 524, 537, 523, 536, 518, 536, 523, 525, 550, 0x0200, 538, 0x0200, 550, 513, 550, 515, 513, 515, 550, 549, 519, 550, 540, 550, 519, 549, 541, 509, 532, 509, 541, 547, 509, 531, 532, 531, 509, 528, 531, 505, 533, 505, 531, 528, 505, 530, 533, 530, 505, 511, 530, 510, 534, 510, 530, 511, 510, 542, 534, 542, 510, 526, 542, 527, 543, 527, 542, 526, 527, 516, 543, 516, 527, 517, 544, 521, 545, 521, 544, 522, 545, 547, 541, 547, 545, 521, 519, 516, 518, 516, 519, 535, 517, 518, 516, 518, 517, 523, 539, 550, 538, 550, 539, 540, 529, 507, 546, 542, 530, 534, 530, 531, 533, 531, 541, 532, 530, 541, 531, 541, 544, 545, 541, 520, 544, 530, 520, 541, 530, 516, 520, 542, 516, 530, 542, 543, 516, 529, 516, 535, 529, 520, 516, 529, 546, 520, 524, 523, 517, 523, 524, 525, 539, 507, 506, 507, 539, 538, 554, 593, 555, 593, 554, 594, 591, 583, 553, 583, 591, 558, 594, 566, 593, 566, 594, 567, 585, 580, 574, 580, 585, 564, 585, 552, 584, 552, 585, 574, 557, 573, 551, 573, 554, 555, 557, 554, 573, 554, 562, 569, 562, 571, 572, 554, 571, 562, 557, 571, 554, 557, 556, 571, 553, 552, 574, 595, 560, 592, 581, 592, 582, 581, 595, 592, 581, 564, 595, 581, 563, 564, 569, 581, 582, 581, 569, 570, 568, 581, 570, 581, 568, 563, 596, 558, 559, 558, 596, 583, 560, 596, 559, 596, 560, 595, 564, 596, 595, 596, 564, 585, 586, 555, 593, 555, 586, 577, 555, 576, 573, 576, 555, 577, 576, 551, 573, 551, 576, 578, 551, 575, 557, 575, 551, 578, 575, 556, 557, 556, 575, 579, 556, 587, 571, 587, 556, 579, 587, 572, 571, 572, 587, 588, 572, 561, 562, 561, 572, 588, 589, 566, 567, 566, 589, 590, 590, 593, 566, 593, 590, 586, 564, 561, 580, 561, 564, 563, 562, 563, 568, 563, 562, 561, 584, 596, 585, 596, 584, 583, 574, 591, 553, 576, 575, 578, 575, 587, 579, 587, 561, 588, 575, 561, 587, 575, 565, 561, 589, 586, 590, 565, 586, 589, 575, 586, 565, 576, 586, 575, 576, 577, 586, 574, 565, 591, 574, 561, 565, 574, 580, 561, 569, 568, 570, 568, 569, 562, 584, 553, 583, 553, 584, 552, 597, 619, 635, 619, 597, 598, 599, 622, 601, 622, 599, 600, 602, 625, 603, 625, 602, 616, 604, 605, 621, 605, 604, 638, 600, 603, 622, 603, 600, 602, 632, 598, 597, 598, 632, 606, 629, 618, 607, 618, 629, 617, 608, 606, 632, 606, 608, 609, 616, 627, 625, 627, 616, 610, 607, 609, 608, 609, 607, 618, 610, 629, 627, 629, 610, 617, 611, 612, 620, 612, 611, 613, 614, 613, 611, 613, 614, 615, 647, 600, 646, 647, 602, 600, 647, 616, 602, 647, 610, 616, 647, 617, 610, 647, 618, 617, 647, 609, 618, 647, 606, 609, 647, 598, 606, 645, 620, 612, 620, 645, 648, 622, 621, 601, 636, 628, 630, 628, 636, 637, 623, 638, 604, 638, 623, 639, 640, 630, 631, 630, 640, 636, 641, 631, 633, 631, 641, 640, 642, 633, 634, 633, 642, 641, 628, 643, 626, 643, 628, 637, 626, 644, 624, 644, 626, 643, 624, 639, 623, 639, 624, 644, 645, 646, 648, 646, 645, 647, 604, 603, 623, 604, 622, 603, 604, 621, 622, 626, 625, 627, 625, 626, 624, 603, 624, 623, 624, 603, 625, 628, 627, 629, 627, 628, 626, 633, 608, 632, 608, 633, 631, 629, 630, 628, 630, 629, 607, 607, 631, 630, 631, 607, 608, 634, 597, 635, 634, 632, 597, 632, 634, 633, 598, 647, 619, 646, 600, 599, 649, 670, 687, 670, 649, 650, 651, 674, 653, 674, 651, 652, 654, 677, 655, 677, 654, 667, 656, 657, 673, 657, 656, 690, 652, 655, 674, 655, 652, 654, 684, 650, 649, 650, 684, 658, 681, 669, 659, 669, 681, 668, 660, 658, 684, 658, 660, 661, 667, 679, 677, 679, 667, 662, 659, 661, 660, 661, 659, 669, 662, 681, 679, 681, 662, 668, 663, 672, 671, 672, 663, 664, 665, 664, 663, 664, 665, 666, 699, 652, 698, 699, 654, 652, 699, 667, 654, 699, 662, 667, 699, 668, 662, 699, 669, 668, 699, 661, 669, 699, 658, 661, 699, 650, 658, 697, 671, 672, 671, 697, 700, 674, 673, 653, 688, 680, 682, 680, 688, 689, 675, 690, 656, 690, 675, 691, 692, 682, 683, 682, 692, 688, 693, 683, 685, 683, 693, 692, 694, 685, 686, 685, 694, 693, 680, 695, 678, 695, 680, 689, 678, 696, 676, 696, 678, 695, 676, 691, 675, 691, 676, 696, 697, 698, 700, 698, 697, 699, 656, 655, 675, 656, 674, 655, 656, 673, 674, 678, 677, 679, 677, 678, 676, 655, 676, 675, 676, 655, 677, 680, 679, 681, 679, 680, 678, 685, 660, 684, 660, 685, 683, 681, 682, 680, 682, 681, 659, 659, 683, 682, 683, 659, 660, 686, 649, 687, 686, 684, 649, 684, 686, 685, 650, 699, 670, 698, 652, 651, 702, 701, 739, 741, 748, 750, 742, 748, 741, 707, 748, 742, 738, 748, 707, 706, 748, 738, 705, 748, 706, 704, 748, 705, 703, 748, 704, 701, 748, 703, 702, 748, 701, 708, 709, 711, 709, 708, 710, 735, 711, 712, 711, 735, 708, 713, 712, 714, 712, 713, 735, 716, 715, 717, 725, 743, 726, 714, 743, 725, 714, 724, 743, 712, 724, 714, 712, 723, 724, 711, 723, 712, 711, 737, 723, 711, 740, 737, 709, 740, 711, 709, 722, 740, 721, 722, 709, 721, 728, 722, 720, 728, 721, 720, 729, 728, 719, 729, 720, 719, 718, 729, 715, 718, 719, 716, 718, 715, 719, 727, 715, 727, 719, 732, 721, 733, 720, 733, 721, 734, 709, 734, 721, 734, 709, 710, 720, 732, 719, 732, 720, 733, 736, 714, 725, 714, 736, 713, 703, 728, 729, 728, 703, 704, 754, 713, 736, 754, 735, 713, 754, 708, 735, 754, 710, 708, 754, 734, 710, 754, 733, 734, 754, 732, 733, 754, 727, 732, 754, 730, 727, 754, 731, 730, 737, 707, 723, 707, 737, 738, 739, 718, 716, 718, 739, 701, 701, 729, 718, 729, 701, 703, 740, 738, 737, 738, 740, 706, 724, 741, 743, 741, 724, 742, 744, 745, 747, 745, 744, 746, 730, 716, 717, 730, 739, 716, 739, 731, 702, 730, 731, 739, 723, 742, 724, 742, 723, 707, 705, 740, 722, 740, 705, 706, 704, 722, 728, 722, 704, 705, 748, 749, 746, 749, 748, 754, 746, 753, 748, 741, 726, 743, 726, 741, 750, 750, 755, 754, 736, 750, 754, 736, 726, 750, 736, 725, 726, 747, 751, 752, 751, 747, 745, 702, 754, 748, 754, 702, 731, 727, 717, 715, 717, 727, 730, 756, 757, 787, 757, 756, 758, 803, 788, 760, 788, 803, 759, 761, 762, 799, 762, 761, 763, 785, 758, 756, 758, 785, 765, 787, 803, 760, 803, 787, 757, 766, 767, 0x0300, 767, 766, 801, 802, 785, 769, 785, 802, 765, 799, 780, 761, 780, 799, 800, 767, 769, 0x0300, 769, 767, 802, 759, 770, 788, 770, 759, 0x0303, 772, 763, 779, 763, 772, 762, 800, 766, 780, 766, 800, 801, 773, 774, 776, 774, 773, 775, 775, 777, 774, 777, 775, 778, 779, 766, 781, 779, 780, 766, 779, 763, 780, 781, 772, 779, 772, 781, 789, 790, 784, 786, 784, 790, 791, 784, 792, 783, 792, 784, 791, 778, 786, 777, 786, 778, 790, 783, 793, 782, 793, 783, 792, 782, 789, 781, 789, 782, 793, 804, 794, 796, 794, 804, 795, 806, 797, 798, 797, 806, 805, 795, 799, 794, 795, 800, 799, 795, 801, 800, 795, 767, 801, 795, 802, 767, 795, 765, 802, 795, 758, 765, 795, 757, 758, 795, 803, 757, 795, 759, 803, 795, 0x0303, 759, 804, 805, 806, 805, 804, 796, 799, 764, 794, 764, 799, 762, 782, 766, 0x0300, 766, 782, 781, 776, 788, 770, 783, 0x0300, 769, 0x0300, 783, 782, 784, 769, 785, 769, 784, 783, 786, 785, 756, 785, 786, 784, 786, 787, 777, 787, 786, 756, 777, 760, 774, 760, 777, 787, 780, 763, 761, 774, 788, 776, 788, 774, 760, 807, 808, 838, 808, 807, 809, 854, 839, 811, 839, 854, 810, 812, 813, 850, 813, 812, 814, 836, 809, 807, 809, 836, 816, 838, 854, 811, 854, 838, 808, 817, 818, 819, 818, 817, 852, 853, 836, 820, 836, 853, 816, 850, 831, 812, 831, 850, 851, 818, 820, 819, 820, 818, 853, 810, 821, 839, 821, 810, 822, 823, 814, 830, 814, 823, 813, 851, 817, 831, 817, 851, 852, 824, 825, 827, 825, 824, 826, 826, 828, 825, 828, 826, 829, 830, 817, 832, 830, 831, 817, 830, 814, 831, 832, 823, 830, 823, 832, 840, 841, 835, 837, 835, 841, 842, 835, 843, 834, 843, 835, 842, 829, 837, 828, 837, 829, 841, 834, 844, 833, 844, 834, 843, 833, 840, 832, 840, 833, 844, 855, 845, 847, 845, 855, 846, 857, 848, 849, 848, 857, 856, 846, 850, 845, 846, 851, 850, 846, 852, 851, 846, 818, 852, 846, 853, 818, 846, 816, 853, 846, 809, 816, 846, 808, 809, 846, 854, 808, 846, 810, 854, 846, 822, 810, 855, 856, 857, 856, 855, 847, 850, 815, 845, 815, 850, 813, 833, 817, 819, 817, 833, 832, 827, 839, 821, 834, 819, 820, 819, 834, 833, 835, 820, 836, 820, 835, 834, 837, 836, 807, 836, 837, 835, 837, 838, 828, 838, 837, 807, 828, 811, 825, 811, 828, 838, 831, 814, 812, 825, 839, 827, 839, 825, 811, 903, 914, 860, 914, 903, 861, 864, 885, 931, 885, 864, 935, 866, 867, 922, 867, 866, 865, 879, 883, 882, 879, 905, 883, 879, 910, 905, 879, 870, 877, 868, 882, 884, 869, 882, 868, 870, 882, 869, 879, 882, 870, 865, 885, 871, 865, 931, 885, 865, 866, 931, 930, 871, 869, 871, 930, 865, 930, 884, 872, 884, 930, 868, 904, 865, 930, 865, 904, 867, 873, 872, 884, 882, 883, 884, 869, 871, 885, 858, 876, 911, 876, 858, 862, 931, 866, 922, 881, 908, 929, 929, 887, 881, 875, 886, 859, 886, 875, 924, 887, 924, 881, 924, 887, 886, 875, 858, 911, 858, 875, 859, 923, 927, 892, 927, 923, 925, 919, 888, 890, 888, 919, 889, 929, 919, 890, 919, 929, 909, 929, 888, 887, 888, 929, 890, 891, 921, 880, 921, 891, 909, 892, 880, 923, 880, 892, 891, 929, 921, 909, 921, 929, 908, 917, 893, 895, 893, 917, 894, 927, 917, 895, 917, 927, 918, 927, 893, 892, 893, 927, 895, 863, 916, 915, 916, 863, 918, 874, 863, 915, 863, 874, 896, 927, 916, 918, 916, 927, 925, 898, 912, 922, 874, 928, 896, 874, 926, 928, 913, 926, 874, 912, 926, 913, 898, 926, 912, 861, 897, 899, 897, 861, 920, 928, 861, 899, 861, 928, 914, 928, 897, 896, 897, 928, 899, 926, 914, 928, 914, 926, 860, 901, 900, 902, 900, 901, 903, 898, 900, 926, 900, 898, 902, 900, 860, 926, 860, 900, 903, 873, 867, 904, 873, 922, 867, 873, 898, 922, 873, 902, 898, 862, 934, 876, 862, 878, 934, 862, 907, 878, 907, 910, 878, 905, 906, 873, 910, 906, 905, 907, 906, 910, 878, 910, 879, 932, 934, 878, 934, 932, 933, 922, 912, 864, 864, 931, 922, 920, 918, 863, 918, 920, 917, 919, 891, 894, 891, 919, 909, 886, 858, 859, 858, 886, 889, 858, 907, 862, 907, 858, 889, 861, 917, 920, 894, 889, 919, 889, 906, 907, 894, 906, 889, 917, 906, 894, 861, 906, 917, 903, 906, 861, 906, 903, 901, 897, 863, 896, 863, 897, 920, 893, 891, 892, 891, 893, 894, 888, 886, 887, 886, 888, 889, 902, 906, 901, 906, 902, 873, 883, 873, 884, 873, 883, 905, 872, 904, 930, 904, 872, 873, 869, 868, 930, 878, 877, 932, 877, 878, 879, 981, 992, 939, 992, 981, 938, 942, 963, 1013, 963, 942, 1009, 944, 945, 943, 945, 944, 1000, 957, 983, 988, 957, 961, 983, 957, 960, 961, 948, 957, 955, 948, 960, 957, 960, 946, 962, 960, 947, 946, 948, 947, 960, 943, 1009, 944, 943, 963, 1009, 943, 949, 963, 1008, 949, 943, 949, 1008, 947, 1008, 962, 946, 962, 1008, 950, 982, 943, 945, 943, 982, 1008, 951, 962, 950, 960, 962, 961, 947, 963, 949, 936, 954, 940, 954, 936, 989, 1009, 1000, 944, 959, 1007, 986, 1007, 959, 965, 953, 964, 1002, 964, 953, 937, 965, 1002, 964, 1002, 965, 959, 953, 936, 937, 936, 953, 989, 1001, 1005, 1003, 1005, 1001, 970, 997, 966, 967, 966, 997, 968, 1007, 997, 987, 997, 1007, 968, 1007, 966, 968, 966, 1007, 965, 969, 999, 987, 999, 969, 958, 970, 958, 969, 958, 970, 1001, 1007, 999, 986, 999, 1007, 987, 995, 971, 972, 971, 995, 973, 1005, 995, 996, 995, 1005, 973, 1005, 971, 973, 971, 1005, 970, 941, 994, 996, 994, 941, 993, 952, 941, 974, 941, 952, 993, 1005, 994, 1003, 994, 1005, 996, 990, 976, 1000, 990, 1004, 976, 1006, 952, 974, 1004, 952, 1006, 1004, 991, 952, 990, 991, 1004, 939, 975, 998, 975, 939, 977, 1006, 939, 992, 939, 1006, 977, 1006, 975, 977, 975, 1006, 974, 1004, 992, 938, 992, 1004, 1006, 979, 978, 981, 978, 979, 980, 976, 978, 980, 978, 976, 1004, 978, 938, 981, 938, 978, 1004, 951, 976, 980, 951, 1000, 976, 951, 945, 1000, 951, 982, 945, 940, 956, 985, 940, 1012, 956, 940, 954, 1012, 988, 985, 956, 988, 984, 985, 984, 983, 951, 988, 983, 984, 956, 957, 988, 1010, 1012, 1011, 1012, 1010, 956, 1000, 942, 990, 942, 1000, 1009, 998, 996, 995, 996, 998, 941, 997, 969, 987, 969, 997, 972, 964, 936, 967, 936, 964, 937, 936, 985, 967, 985, 936, 940, 995, 939, 998, 995, 984, 939, 984, 967, 985, 967, 972, 997, 984, 972, 967, 995, 972, 984, 981, 984, 979, 984, 981, 939, 975, 941, 998, 941, 975, 974, 971, 969, 972, 969, 971, 970, 966, 964, 967, 964, 966, 965, 980, 984, 951, 984, 980, 979, 961, 951, 983, 951, 961, 962, 950, 982, 951, 982, 950, 1008, 947, 1008, 946, 956, 955, 957, 955, 956, 1010, 1062, 1073, 1016, 1073, 1062, 1017, 1021, 1044, 1090, 1021, 1023, 1044, 1021, 1020, 1023, 1021, 1022, 1020, 1025, 1026, 1081, 1026, 1025, 0x0400, 1038, 1042, 1041, 1038, 1064, 1042, 1038, 1069, 1064, 1038, 1029, 1036, 1027, 1041, 1043, 0x0404, 1041, 1027, 1029, 1041, 0x0404, 1038, 1041, 1029, 0x0400, 1044, 1030, 0x0400, 1090, 1044, 0x0400, 1025, 1090, 1089, 1030, 0x0404, 1030, 1089, 0x0400, 1089, 1043, 1031, 1043, 1089, 1027, 1063, 0x0400, 1089, 0x0400, 1063, 1026, 1032, 1031, 1043, 1036, 1023, 1020, 1023, 1036, 1029, 1035, 1034, 1070, 1034, 1035, 1020, 1041, 1042, 1043, 0x0404, 1030, 1044, 1014, 1035, 1070, 1035, 1014, 1018, 1071, 1022, 1021, 1022, 1071, 1072, 1090, 1025, 1081, 1040, 1067, 1088, 1088, 1046, 1040, 1034, 1045, 1015, 1045, 1034, 1083, 1046, 1083, 1040, 1083, 1046, 1045, 1034, 1014, 1070, 1014, 1034, 1015, 1082, 1086, 1051, 1086, 1082, 1084, 1078, 1047, 1049, 1047, 1078, 1048, 1088, 1078, 1049, 1078, 1088, 1068, 1088, 1047, 1046, 1047, 1088, 1049, 1050, 1080, 1039, 1080, 1050, 1068, 1051, 1039, 1082, 1039, 1051, 1050, 1088, 1080, 1068, 1080, 1088, 1067, 1076, 1052, 1054, 1052, 1076, 1053, 1086, 1076, 1054, 1076, 1086, 1077, 1086, 1052, 1051, 1052, 1086, 1054, 1019, 1075, 1074, 1075, 1019, 1077, 1033, 1019, 1074, 1019, 1033, 1055, 1086, 1075, 1077, 1075, 1086, 1084, 1057, 1071, 1081, 1033, 1087, 1055, 1033, 1085, 1087, 1072, 1085, 1033, 1071, 1085, 1072, 1057, 1085, 1071, 1017, 1056, 1058, 1056, 1017, 1079, 1087, 1017, 1058, 1017, 1087, 1073, 1087, 1056, 1055, 1056, 1087, 1058, 1085, 1073, 1087, 1073, 1085, 1016, 1060, 1059, 1061, 1059, 1060, 1062, 1057, 1059, 1085, 1059, 1057, 1061, 1059, 1016, 1085, 1016, 1059, 1062, 1032, 1026, 1063, 1032, 1081, 1026, 1032, 1057, 1081, 1032, 1061, 1057, 1037, 1018, 1066, 1018, 1037, 1035, 1066, 1069, 1037, 1064, 1065, 1032, 1069, 1065, 1064, 1066, 1065, 1069, 1020, 1074, 1075, 1074, 1020, 1022, 1075, 1034, 1020, 1075, 1083, 1034, 1040, 1080, 1067, 1083, 1080, 1040, 1083, 1039, 1080, 1075, 1039, 1083, 1039, 1084, 1082, 1075, 1084, 1039, 1037, 1069, 1038, 1036, 1037, 1038, 1036, 1035, 1037, 1036, 1020, 1035, 1074, 1072, 1033, 1072, 1074, 1022, 1081, 1071, 1021, 1021, 1090, 1081, 1079, 1077, 1019, 1077, 1079, 1076, 1078, 1050, 1053, 1050, 1078, 1068, 1045, 1014, 1015, 1014, 1045, 1048, 1014, 1066, 1018, 1066, 1014, 1048, 1017, 1076, 1079, 1053, 1048, 1078, 1048, 1065, 1066, 1053, 1065, 1048, 1076, 1065, 1053, 1017, 1065, 1076, 1062, 1065, 1017, 1065, 1062, 1060, 1056, 1019, 1055, 1019, 1056, 1079, 1052, 1050, 1051, 1050, 1052, 1053, 1047, 1045, 1046, 1045, 1047, 1048, 1061, 1065, 1060, 1065, 1061, 1032, 1042, 1032, 1043, 1032, 1042, 1064, 1031, 1063, 1089, 1063, 1031, 1032, 0x0404, 1027, 1089, 1096, 1095, 1097, 1095, 1096, 1098, 1092, 1094, 1099, 1094, 1092, 1091, 1099, 1100, 1101, 1100, 1099, 1094, 1102, 1100, 1093, 1100, 1102, 1101, 1096, 1103, 1104, 1103, 1096, 1097, 1098, 1093, 1095, 1093, 1098, 1102, 1104, 1105, 1106, 1105, 1104, 1103, 1095, 1111, 1097, 1111, 1095, 1110, 1091, 1109, 1094, 1109, 1091, 1107, 1094, 1112, 1100, 1112, 1094, 1109, 1100, 1108, 1093, 1108, 1100, 1112, 1097, 1113, 1103, 1113, 1097, 1111, 1093, 1110, 1095, 1110, 1093, 1108, 1103, 1114, 1105, 1114, 1103, 1113, 1110, 1119, 1111, 1119, 1110, 1118, 1107, 1117, 1109, 1117, 1107, 1115, 1109, 1120, 1112, 1120, 1109, 1117, 1112, 1116, 1108, 1116, 1112, 1120, 1111, 1121, 1113, 1121, 1111, 1119, 1108, 1118, 1110, 1118, 1108, 1116, 1113, 1122, 1114, 1122, 1113, 1121, 1117, 1116, 1120, 1116, 1119, 1118, 1119, 1122, 1121, 1116, 1122, 1119, 1117, 1122, 1116, 1117, 1115, 1122, 1128, 1127, 1129, 1127, 1128, 1130, 1124, 1126, 1131, 1126, 1124, 1123, 1131, 1132, 1133, 1132, 1131, 1126, 1134, 1132, 1125, 1132, 1134, 1133, 1128, 1135, 1136, 1135, 1128, 1129, 1130, 1125, 1127, 1125, 1130, 1134, 1136, 1137, 1138, 1137, 1136, 1135, 1127, 1143, 1129, 1143, 1127, 1142, 1123, 1141, 1126, 1141, 1123, 1139, 1126, 1144, 1132, 1144, 1126, 1141, 1132, 1140, 1125, 1140, 1132, 1144, 1129, 1145, 1135, 1145, 1129, 1143, 1125, 1142, 1127, 1142, 1125, 1140, 1135, 1146, 1137, 1146, 1135, 1145, 1142, 1151, 1143, 1151, 1142, 1150, 1139, 1149, 1141, 1149, 1139, 1147, 1141, 1152, 1144, 1152, 1141, 1149, 1144, 1148, 1140, 1148, 1144, 1152, 1143, 1153, 1145, 1153, 1143, 1151, 1140, 1150, 1142, 1150, 1140, 1148, 1145, 1154, 1146, 1154, 1145, 1153, 1149, 1148, 1152, 1148, 1151, 1150, 1151, 1154, 1153, 1148, 1154, 1151, 1149, 1154, 1148, 1149, 1147, 1154, 1170, 1251, 1171, 1251, 1170, 1172, 1173, 1172, 1170, 1178, 1266, 1256, 1172, 1266, 1178, 1172, 1264, 1266, 1173, 1264, 1172, 1174, 1175, 1247, 1175, 1174, 1255, 1176, 1270, 1267, 1270, 1176, 1271, 1177, 1202, 1294, 1202, 1177, 1196, 1178, 1174, 1172, 1174, 1178, 1255, 1191, 1180, 1179, 1180, 1191, 1262, 1181, 1182, 1268, 1182, 1181, 1254, 1201, 1176, 1183, 1176, 1201, 1271, 1181, 1186, 1187, 1186, 1181, 1268, 1188, 1266, 1189, 1266, 1188, 1256, 1179, 1270, 1191, 1270, 1179, 1267, 1190, 1291, 1258, 1291, 1190, 1263, 1302, 1266, 1264, 1266, 1302, 1192, 1253, 1202, 1196, 1202, 1253, 1293, 1260, 1193, 1194, 1260, 1273, 1193, 1260, 1261, 1273, 1302, 1190, 1192, 1190, 1302, 1263, 1244, 1173, 1197, 1173, 1244, 1264, 1186, 1182, 1258, 1182, 1186, 1268, 1177, 1198, 1196, 1198, 1177, 1269, 1195, 1188, 1189, 1188, 1195, 1257, 1184, 1198, 1269, 1198, 1184, 1185, 1186, 1291, 1300, 1291, 1186, 1258, 1195, 1266, 1192, 1266, 1195, 1189, 1183, 1269, 1177, 1269, 1183, 1184, 1177, 1201, 1183, 1172, 1247, 1251, 1247, 1172, 1174, 1265, 1273, 1261, 1273, 1265, 1200, 1242, 1170, 1171, 1170, 1197, 1173, 1242, 1197, 1170, 1242, 1241, 1197, 1253, 1199, 1293, 1199, 1253, 1187, 1279, 1274, 1272, 1274, 1279, 1275, 1274, 1265, 1272, 1265, 1274, 1200, 1207, 1208, 1205, 1208, 1207, 1209, 1208, 1211, 1210, 1211, 1208, 1213, 0x0500, 1211, 1283, 1211, 0x0500, 1210, 1208, 1214, 1213, 1214, 1208, 1209, 1207, 1214, 1209, 1214, 1207, 1216, 1218, 1219, 1215, 1217, 1304, 1287, 1221, 1304, 1217, 1221, 1223, 1304, 1221, 1222, 1223, 1221, 1220, 1222, 1219, 1220, 1221, 1218, 1220, 1219, 1224, 1214, 1216, 1224, 1215, 1214, 1224, 1218, 1215, 1282, 1296, 1212, 1296, 1282, 1281, 1211, 1281, 1283, 1281, 1211, 1296, 1423, 1292, 1401, 1292, 1423, 1284, 1217, 1284, 1221, 1284, 1217, 1299, 1284, 1299, 1292, 1292, 1299, 1204, 1204, 1225, 1206, 1225, 1204, 1299, 1297, 1217, 1287, 1297, 1299, 1217, 1297, 1225, 1299, 1228, 1290, 1229, 1298, 1226, 1227, 1298, 0x0505, 1226, 1290, 0x0505, 1298, 1290, 1286, 0x0505, 1228, 1286, 1290, 1286, 1207, 1205, 1286, 1230, 1207, 1286, 1228, 1230, 1295, 0x0505, 1286, 1286, 1205, 1295, 1226, 1206, 1303, 1226, 1295, 1206, 1226, 0x0505, 1295, 1229, 1230, 1228, 1229, 1224, 1230, 1229, 1231, 1224, 1229, 1288, 1231, 1216, 1230, 1224, 1230, 1216, 1207, 1303, 1225, 1297, 1225, 1303, 1206, 1297, 1287, 1304, 1304, 1232, 1297, 1304, 1223, 1301, 1301, 1232, 1304, 1218, 1224, 1231, 1231, 1220, 1218, 1226, 1301, 1227, 1301, 1226, 1303, 1232, 1303, 1297, 1301, 1303, 1232, 1233, 1223, 1276, 1233, 1301, 1223, 1233, 1227, 1301, 1233, 1234, 1227, 1229, 1222, 1288, 1229, 1235, 1222, 1229, 1236, 1235, 1229, 1237, 1236, 1288, 1222, 1220, 1220, 1231, 1288, 1233, 1235, 1236, 1235, 1233, 1276, 1235, 1223, 1222, 1223, 1235, 1276, 1237, 1233, 1236, 1237, 1234, 1233, 1237, 1277, 1234, 1237, 1289, 1277, 1234, 1298, 1227, 1298, 1234, 1277, 1289, 1229, 1290, 1229, 1289, 1237, 1298, 1277, 1289, 1289, 1290, 1298, 1193, 1238, 1194, 1238, 1193, 1278, 1240, 1278, 1239, 1240, 1241, 1242, 1240, 1243, 1241, 1240, 1239, 1243, 1278, 1240, 1238, 1263, 1264, 1244, 1264, 1263, 1302, 1300, 1305, 1246, 1291, 1305, 1300, 1263, 1305, 1291, 1197, 1305, 1244, 1395, 1243, 1402, 1305, 1243, 1395, 1197, 1243, 1305, 1197, 1241, 1243, 1246, 1203, 1245, 1203, 1246, 1305, 1238, 1249, 1250, 1249, 1238, 1240, 1248, 1247, 1175, 1180, 1259, 1252, 1259, 1180, 1262, 1188, 1252, 1248, 1185, 1254, 1198, 1252, 1254, 1185, 1252, 1182, 1254, 1188, 1182, 1252, 1188, 1257, 1182, 1273, 1278, 1193, 1305, 1395, 1203, 1214, 1219, 1213, 1219, 1214, 1215, 1295, 1204, 1206, 1204, 1295, 1292, 1295, 0x0500, 1292, 1205, 0x0500, 1295, 1205, 1210, 0x0500, 1205, 1208, 1210, 1198, 1253, 1196, 1253, 1198, 1254, 1257, 1258, 1182, 1258, 1257, 1190, 1256, 1255, 1178, 1255, 1256, 1188, 1248, 1255, 1188, 1255, 1248, 1175, 1180, 1185, 1179, 1185, 1180, 1252, 1179, 1176, 1267, 1176, 1179, 1185, 1247, 1248, 1260, 1171, 1250, 1249, 1250, 1247, 1260, 1171, 1247, 1250, 1171, 1251, 1247, 1240, 1171, 1249, 1171, 1240, 1242, 1245, 1271, 1201, 1271, 1245, 1203, 1294, 1245, 1177, 1245, 1294, 1246, 1259, 1248, 1252, 1248, 1259, 1279, 1265, 1279, 1272, 1279, 1265, 1248, 1260, 1265, 1261, 1265, 1260, 1248, 1401, 1262, 1395, 1262, 1401, 1259, 1259, 1275, 1279, 1275, 1259, 1401, 1270, 1262, 1191, 1270, 1395, 1262, 1270, 1203, 1395, 1270, 1271, 1203, 1238, 1260, 1194, 1260, 1238, 1250, 1263, 1244, 1305, 1184, 1176, 1185, 1176, 1184, 1183, 1253, 1181, 1187, 1181, 1253, 1254, 1195, 1190, 1257, 1190, 1195, 1192, 1202, 1199, 1294, 1199, 1202, 1293, 1199, 1246, 1294, 1246, 1199, 1300, 1187, 1300, 1199, 1300, 1187, 1186, 1201, 1177, 1245, 1278, 1281, 1282, 1281, 1278, 1273, 1281, 0x0500, 1283, 1281, 1200, 0x0500, 1281, 1273, 1200, 1275, 1292, 1274, 1292, 1275, 1401, 1274, 0x0500, 1200, 0x0500, 1274, 1292, 1212, 1211, 1213, 1211, 1212, 1296, 1306, 1387, 1308, 1387, 1306, 1307, 1308, 1309, 1306, 1308, 1403, 1309, 1308, 1405, 1403, 1405, 1314, 1392, 1308, 1314, 1405, 1310, 1311, 1391, 1311, 1310, 1383, 1312, 1409, 1410, 1409, 1312, 1406, 1313, 1338, 1332, 1338, 1313, 1434, 1314, 1310, 1391, 1310, 1314, 1308, 1327, 1316, 1399, 1316, 1327, 1315, 1317, 1318, 1390, 1318, 1317, 1407, 1337, 1312, 1410, 1312, 1337, 1319, 1317, 1322, 1407, 1322, 1317, 1323, 1324, 1405, 1392, 1405, 1324, 1325, 1315, 1409, 1406, 1409, 1315, 1327, 1326, 1431, 1400, 1431, 1326, 1394, 1442, 1405, 1328, 1405, 1442, 1403, 1389, 1338, 1433, 1338, 1389, 1332, 1397, 1412, 1398, 1397, 1329, 1412, 1397, 1330, 1329, 1442, 1326, 1400, 1326, 1442, 1328, 1380, 1309, 1403, 1309, 1380, 1333, 1322, 1318, 1407, 1318, 1322, 1394, 1313, 1334, 1408, 1334, 1313, 1332, 1331, 1324, 1393, 1324, 1331, 1325, 1320, 1334, 1321, 1334, 1320, 1408, 1322, 1431, 1394, 1431, 1322, 1440, 1331, 1405, 1325, 1405, 1331, 1328, 1319, 1408, 1320, 1408, 1319, 1313, 1313, 1319, 1337, 1308, 1383, 1310, 1383, 1308, 1387, 1404, 1412, 1336, 1412, 1404, 1398, 1378, 1333, 1377, 1333, 1306, 1309, 1378, 1306, 1333, 1378, 1307, 1306, 1389, 1335, 1323, 1335, 1389, 1433, 1418, 1413, 1414, 1413, 1418, 1411, 1413, 1404, 1336, 1404, 1413, 1411, 1343, 1344, 1345, 1344, 1343, 1341, 1344, 1347, 1349, 1347, 1344, 1346, 1419, 1422, 1347, 1347, 1346, 1419, 1344, 1350, 1345, 1350, 1344, 1349, 1343, 1350, 1352, 1350, 1343, 1345, 1355, 1354, 1351, 1355, 1356, 1354, 1444, 1353, 1427, 1444, 1357, 1353, 1359, 1357, 1444, 1358, 1357, 1359, 1356, 1357, 1358, 1355, 1357, 1356, 1360, 1351, 1354, 1360, 1350, 1351, 1360, 1352, 1350, 1421, 1348, 1436, 1436, 1420, 1421, 1347, 1422, 1420, 1420, 1436, 1347, 1423, 1401, 1432, 1432, 1424, 1423, 1353, 1424, 1439, 1424, 1353, 1357, 1424, 1432, 1439, 1432, 1340, 1439, 1340, 1361, 1439, 1361, 1340, 1342, 1437, 1439, 1361, 1437, 1353, 1439, 1437, 1427, 1353, 1430, 1364, 1365, 1430, 1426, 1364, 1430, 1425, 1426, 1362, 1438, 1363, 1425, 1438, 1362, 1430, 1438, 1425, 1426, 1366, 1364, 1426, 1343, 1366, 1426, 1341, 1343, 1435, 1426, 1425, 1426, 1435, 1341, 1362, 1435, 1425, 1362, 1342, 1435, 1362, 1443, 1342, 1365, 1367, 1428, 1365, 1360, 1367, 1365, 1366, 1360, 1365, 1364, 1366, 1352, 1366, 1343, 1366, 1352, 1360, 1443, 1361, 1342, 1361, 1443, 1437, 1437, 1444, 1427, 1444, 1437, 1368, 1444, 1441, 1359, 1441, 1444, 1368, 1354, 1367, 1360, 1367, 1354, 1356, 1362, 1441, 1443, 1441, 1362, 1363, 1368, 1437, 1443, 1441, 1368, 1443, 1369, 1363, 1370, 1369, 1441, 1363, 1369, 1359, 1441, 1369, 1415, 1359, 1365, 1372, 1373, 1365, 1371, 1372, 1365, 1358, 1371, 1365, 1428, 1358, 1428, 1356, 1358, 1356, 1428, 1367, 1369, 1371, 1415, 1371, 1369, 1372, 1371, 1359, 1415, 1359, 1371, 1358, 1373, 1416, 1429, 1373, 1370, 1416, 1373, 1369, 1370, 1373, 1372, 1369, 1370, 1438, 1416, 1438, 1370, 1363, 1429, 1365, 1373, 1365, 1429, 1430, 1438, 1429, 1416, 1429, 1438, 1430, 1329, 1374, 1417, 1374, 1329, 1330, 1376, 1375, 1417, 1376, 1379, 1375, 1376, 1377, 1379, 1376, 1378, 1377, 1417, 1374, 1376, 1400, 1403, 1442, 1403, 1400, 1380, 1440, 1382, 1445, 1431, 1440, 1445, 1400, 1431, 1445, 1445, 1333, 1380, 1333, 1379, 1377, 1445, 1379, 1333, 1379, 1395, 1402, 1445, 1395, 1379, 1382, 1339, 1445, 1339, 1382, 1381, 1374, 1385, 1376, 1385, 1374, 1386, 1384, 1311, 1383, 1316, 1396, 1399, 1396, 1316, 1388, 1324, 1318, 1393, 1390, 1321, 1334, 1390, 1388, 1321, 1318, 1388, 1390, 1324, 1388, 1318, 1324, 1384, 1388, 1412, 1329, 1417, 1445, 1339, 1395, 1350, 1355, 1351, 1355, 1350, 1349, 1435, 1340, 1432, 1340, 1435, 1342, 1435, 1432, 1419, 1341, 1346, 1344, 1341, 1419, 1346, 1341, 1435, 1419, 1334, 1389, 1390, 1389, 1334, 1332, 1393, 1394, 1326, 1394, 1393, 1318, 1392, 1391, 1324, 1391, 1392, 1314, 1384, 1391, 1311, 1391, 1384, 1324, 1316, 1321, 1388, 1321, 1316, 1315, 1315, 1312, 1321, 1312, 1315, 1406, 1383, 1397, 1384, 1307, 1383, 1387, 1383, 1386, 1397, 1307, 1386, 1383, 1307, 1385, 1386, 1376, 1307, 1378, 1307, 1376, 1385, 1381, 1410, 1339, 1410, 1381, 1337, 1434, 1381, 1382, 1381, 1434, 1313, 1396, 1384, 1418, 1384, 1396, 1388, 1404, 1418, 1384, 1418, 1404, 1411, 1397, 1404, 1384, 1404, 1397, 1398, 1399, 1401, 1395, 1401, 1399, 1396, 1396, 1414, 1401, 1414, 1396, 1418, 1409, 1339, 1410, 1409, 1395, 1339, 1409, 1399, 1395, 1409, 1327, 1399, 1374, 1397, 1386, 1397, 1374, 1330, 1400, 1445, 1380, 1320, 1312, 1319, 1312, 1320, 1321, 1389, 1317, 1390, 1317, 1389, 1323, 1331, 1326, 1328, 1326, 1331, 1393, 1338, 1335, 1433, 1335, 1338, 1434, 1335, 1382, 1440, 1382, 1335, 1434, 1323, 1440, 1322, 1440, 1323, 1335, 1337, 1381, 1313, 1417, 1420, 1412, 1420, 1417, 1421, 1420, 1336, 1412, 1420, 1419, 1336, 1420, 1422, 1419, 1414, 1432, 1401, 1432, 1414, 1413, 1413, 1419, 1432, 1419, 1413, 1336, 1348, 1347, 1436, 1347, 1348, 1349]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MarbleArch.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MarbleArch.as new file mode 100644 index 0000000..93d81e0 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/MarbleArch.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class MarbleArch extends Stage3DData { + + public function MarbleArch(){ + vertices = new [31.0661, 46.2301, 1.88585, 32.4455, 40.6136, -1.82255, 32.4455, 37.471, -1.82255, 28.9747, 37.471, -2.73266, 28.9747, 40.6136, -2.73266, 31.8757, 42.3458, 2.91217, 33.8686, 42.3458, -2.6704, -12.9423, 42.3458, -10.0611, -11.7186, 42.3458, -8.51922, -13.2419, 42.3458, -8.91866, -11.744, 42.3458, -14.631, -10.5203, 42.3458, -13.0891, 33.1665, 40.6136, -2.24399, 31.8184, 41.5584, 2.89715, 33.1665, 41.5584, -2.24399, 31.8184, 40.6136, 2.89715, -12.0994, 40.6136, -8.61908, -12.6707, 40.6136, -8.76887, -10.9011, 40.6136, -13.189, -11.3225, 40.6136, -13.91, 31.2472, 40.6136, 2.74736, 33.8686, 41.5584, -2.6704, 32.3707, 41.5584, 3.04199, -27.7916, 42.3458, -17.618, -28.9105, 42.3458, -19.1325, -23.8075, 42.3458, -17.7944, -23.8075, 41.5584, -17.7944, -25.2495, 40.6136, -16.9515, -28.1724, 38.9994, -17.7179, -25.2495, 38.9994, -16.9515, -28.1724, 40.6136, -17.7179, -28.5938, 40.6136, -18.4389, -24.5285, 40.6136, -17.3729, -28.8401, 47.0175, -13.6194, -28.0911, 44.8915, -16.4756, -28.0911, 47.0175, -16.4756, -27.7916, 44.8915, -17.618, -28.8401, 46.2301, -13.6194, -28.9899, 42.3458, -13.0481, -28.9899, 46.2301, -13.0481, 27.1915, 5.67894, 1.68388, -29.5874, 37.471, -13.2048, -26.1645, 37.471, -12.3073, -28.3891, 37.471, -17.7747, 27.7764, 37.471, 1.83725, -25.9299, 47.0175, -15.9089, -11.5189, 47.0175, -9.28087, -10.8198, 47.0175, -11.9466, -8.08956, 47.0175, -11.2307, 14.7575, 37.471, -1.57659, 11.3301, 37.471, -2.47533, 15.9559, 37.471, -6.1465, 12.5285, 37.471, -7.04523, 11.9107, 47.0175, -3.13712, 12.6097, 47.0175, -5.8029, 15.2754, 47.0175, -5.10388, 29.056, 44.8915, -1.49032, 29.056, 47.0175, -1.49032, 28.3569, 46.2301, 1.17546, 29.3556, 42.3458, -2.6328, 29.3556, 44.8915, -2.6328, 28.1572, 46.2301, 1.93711, 28.1572, 42.3458, 1.93711, 31.2472, 37.471, 2.74736, 28.3569, 47.0175, 1.17546, 31.7651, 47.0175, -0.779929, -7.40915, 37.471, -12.2733, -10.5203, 44.8915, -13.0891, -8.08956, 44.8915, -11.2307, -10.8198, 44.8915, -11.9466, -7.78998, 44.8915, -12.3732, -5.96709, 42.3458, -13.1162, -11.744, 41.5584, -14.631, -5.96709, 41.5584, -13.1162, -7.40915, 40.6136, -12.2733, -6.68812, 40.6136, -12.6948, -12.6707, 41.5584, -8.76887, -25.0058, 41.5584, -13.2245, -25.3054, 41.5584, -12.082, -12.9423, 41.5584, -10.0611, -25.0058, 42.3458, -13.2245, -26.8287, 42.3458, -12.4814, 14.3767, 42.3458, -1.67645, 14.3767, 46.2301, -1.67645, 14.5764, 46.2301, -2.4381, 11.9107, 46.2301, -3.13712, -8.78859, 46.2301, -8.56493, 11.711, 46.2301, -2.37546, -8.98831, 46.2301, -7.80328, 31.8757, 46.2301, 2.91217, 30.8663, 42.3458, 2.6475, 30.8663, 46.2301, 2.6475, 32.5704, 46.2301, 2.28033, -33.7191, 47.0175, 13.7955, -35.8803, 47.0175, 13.2288, -35.1313, 47.0175, 10.3726, -35.9336, 5.67894, 9.55174, -29.3707, 40.6136, -13.148, -29.3707, 38.9994, -13.148, -25.9299, 44.8915, -15.9089, -25.6304, 44.8915, -17.0513, 12.9093, 44.8915, -6.94537, 15.2754, 44.8915, -5.10388, 12.6097, 44.8915, -5.8029, 15.575, 44.8915, -6.24636, -25.6304, 42.3458, -17.0513, -26.629, 46.2301, -13.2431, -26.8287, 46.2301, -12.4814, -24.9662, 38.9994, -16.8772, -24.9662, 37.471, -16.8772, -29.5874, 38.9994, -13.2048, -28.3891, 38.9994, -17.7747, -26.1645, 38.9994, -12.3073, -25.8766, 40.6136, -12.2318, -26.4479, 40.6136, -12.3816, -25.8766, 41.5584, -12.2318, -26.4479, 38.9994, -12.3816, -29.8372, 42.3458, -13.2703, -7.78998, 42.3458, -12.3732, -8.98831, 42.3458, -7.80328, 12.9093, 42.3458, -6.94537, 11.711, 42.3458, -2.37546, 15.575, 42.3458, -6.24636, 32.0647, 42.3458, -1.92241, 15.9559, 40.6136, -6.1465, 14.7575, 40.6136, -1.57659, 31.7651, 44.8915, -0.779929, -29.942, 41.5584, -13.2978, -28.5938, 41.5584, -18.4389, -30.2587, 46.2301, -13.9914, -24.5285, 41.5584, -17.3729, -7.46501, 42.3458, -7.40383, -7.16542, 42.3458, -8.54631, 10.4872, 42.3458, -3.91739, 9.89562, 5.67894, -2.85149, 9.89562, 25.7317, -2.85149, 8.26107, 29.4167, -3.28011, 6.88409, 30.8783, -3.64118, 5.22301, 31.98, -4.07675, 3.36393, 32.6648, -4.56424, 1.40321, 32.897, -5.07839, 10.7589, 41.5584, -2.62512, -8.03625, 40.6136, -7.55362, 10.7589, 40.6136, -2.62512, -8.03625, 41.5584, -7.55362, -7.46501, 41.5584, -7.40383, 11.3301, 40.6136, -2.47533, -8.60748, 40.6136, -7.70342, -6.47613, 27.671, -7.14453, -5.45464, 29.4167, -6.87667, -4.07767, 30.8783, -6.5156, -2.41658, 31.98, -6.08002, -0.557501, 32.6648, -5.59253, -11.7186, 46.2301, -8.51922, -11.5189, 46.2301, -9.28087, -7.16542, 41.5584, -8.54631, 10.4872, 41.5584, -3.91739, 12.5285, 40.6136, -7.04523, 25.7514, 19.0463, 1.30625, 25.2311, 20.0967, 1.16981, 23.5449, 21.662, 0.727664, 22.4789, 22.0842, 0.448131, 27.2052, 41.5584, 1.68746, 15.3288, 40.6136, -1.4268, 27.2052, 40.6136, 1.68746, 15.3288, 41.5584, -1.4268, 16.6807, 17.897, -1.07229, 16.6807, 5.67894, -1.07229, 17.4606, 20.0967, -0.867786, 20.2127, 22.0842, -0.146109, 27.7764, 40.6136, 1.83725, 12.107, 41.5584, -7.76626, 11.6856, 41.5584, -8.48729, 16.6769, 41.5584, -6.56794, 17.3979, 41.5584, -6.98939, 11.6856, 42.3458, -8.48729, 17.3979, 42.3458, -6.98939, 12.107, 40.6136, -7.76626, 16.6769, 40.6136, -6.56794, 16.1996, 41.5584, -2.41948, 16.1996, 42.3458, -2.41948, 28.5533, 40.6136, -3.45369, 28.5533, 41.5584, -3.45369, 28.1318, 41.5584, -4.17472, 28.1318, 42.3458, -4.17472, 26.9335, 41.5584, 0.395191, 26.9335, 42.3458, 0.395191, 32.0647, 44.8915, -1.92241, -11.3225, 41.5584, -13.91, -6.68812, 41.5584, -12.6948, 7.48629, 47.0175, 24.6005, 4.82056, 47.0175, 23.9015, 5.51959, 47.0175, 21.2357, 21.2668, 47.0175, 28.2141, 21.9658, 46.2301, 25.5483, 21.9658, 47.0175, 25.5483, 21.2668, 44.8915, 28.2141, 22.1656, 46.2301, 24.7866, 22.1656, 42.3458, 24.7866, 20.9672, 42.3458, 29.3566, 20.9672, 44.8915, 29.3566, 25.2555, 37.471, 25.5969, 24.0572, 37.471, 30.1668, 23.9759, 47.0175, 28.9245, 24.675, 47.0175, 26.2587, -14.5991, 37.471, 15.1461, -15.7975, 37.471, 19.716, -18.609, 44.8915, 17.7577, -16.1783, 44.8915, 19.6162, -18.9086, 44.8915, 18.9002, -15.8787, 44.8915, 18.4737, -20.7315, 42.3458, 19.6433, -15.376, 40.6136, 20.4371, -19.2894, 40.6136, 18.8004, -15.7975, 40.6136, 19.716, -18.9086, 42.3458, 18.9002, -16.1783, 42.3458, 19.6162, -14.9546, 42.3458, 21.1581, -18.609, 47.0175, 17.7577, -15.8787, 47.0175, 18.4737, -35.8803, 44.8915, 13.2288, -34.0187, 44.8915, 14.938, -36.1799, 44.8915, 14.3713, -33.7191, 44.8915, 13.7955, 4.82056, 44.8915, 23.9015, 7.18671, 44.8915, 25.743, 4.52098, 44.8915, 25.044, 7.48629, 44.8915, 24.6005, 20.5864, 40.6136, 29.2567, 20.5864, 37.471, 29.2567, 24.0572, 40.6136, 30.1668, 25.884, 42.3458, 25.7617, 24.8812, 42.3458, 31.6039, -19.5331, 42.3458, 15.0733, -19.2336, 42.3458, 13.9309, -17.7102, 42.3458, 14.3303, 24.4786, 40.6136, 30.8878, 25.8267, 41.5584, 25.7467, 25.8267, 40.6136, 25.7467, 24.4786, 41.5584, 30.8878, -18.6623, 40.6136, 14.0807, -20.0104, 40.6136, 19.2218, -18.0911, 40.6136, 14.2305, 25.2555, 40.6136, 25.5969, 24.8812, 41.5584, 31.6039, -36.1799, 42.3458, 14.3713, -34.0187, 42.3458, 14.938, -32.795, 42.3458, 16.4799, -13.6117, 17.897, -9.01565, -13.9424, 19.0813, -9.10236, -16.3363, 21.7376, -9.73009, -18.6398, 22.3065, -10.3341, -22.7493, 20.1537, -11.4117, -36.5607, 40.6136, 14.2714, -35.3624, 38.9994, 9.70153, -35.3624, 40.6136, 9.70153, -36.5607, 38.9994, 14.2714, -32.8203, 42.3458, 10.3681, -33.0201, 46.2301, 11.1298, -34.0187, 42.4436, 14.938, -32.8203, 46.2301, 10.3681, -33.3545, 38.9994, 15.1122, -33.6378, 38.9994, 15.0379, -35.5791, 38.9994, 9.64471, -35.9336, 40.6136, 9.55174, -36.7774, 38.9994, 14.2146, -35.5791, 37.471, 9.64471, -36.7774, 37.471, 14.2146, -32.4395, 40.6136, 10.468, -32.1562, 38.9994, 10.5423, -32.4395, 38.9994, 10.468, -31.8683, 40.6136, 10.6178, -31.8683, 41.5584, 10.6178, -33.2804, 38.9994, 13.6748, -33.3545, 37.471, 15.1122, -32.1562, 37.471, 10.5423, -35.8289, 42.3458, 9.57921, -34.9816, 42.3458, 9.80139, -14.98, 46.2301, 15.0463, -14.98, 42.3458, 15.0463, -15.1797, 46.2301, 15.8079, 5.51959, 46.2301, 21.2357, 5.71931, 46.2301, 20.4741, 5.71931, 42.3458, 20.4741, 4.52098, 42.3458, 25.044, 8.76586, 40.6136, 21.2729, 8.76586, 37.471, 21.2729, 7.56753, 40.6136, 25.8428, 7.56753, 37.471, 25.8428, 23.9759, 44.8915, 28.9245, 23.6763, 44.8915, 30.0669, 21.7847, 37.471, 24.6868, -14.9546, 41.5584, 21.1581, -13.7562, 42.3458, 16.5882, -13.7562, 41.5584, 16.5882, -14.5991, 40.6136, 15.1461, -14.0279, 40.6136, 15.2959, 21.7847, 40.6136, 24.6868, 23.6763, 42.3458, 30.0669, 24.8747, 46.2301, 25.497, 24.8747, 42.3458, 25.497, 24.675, 46.2301, 26.2587, -20.7315, 41.5584, 19.6433, -20.0104, 41.5584, 19.2218, -15.376, 41.5584, 20.4371, 7.18671, 42.3458, 25.743, -14.0279, 41.5584, 15.2959, -13.4567, 41.5584, 15.4457, -19.5331, 41.5584, 15.0733, -18.6623, 41.5584, 14.0807, -19.2336, 41.5584, 13.9309, -17.91, 46.2301, 15.092, -17.91, 47.0175, 15.092, -17.7102, 42.4436, 14.3303, -17.7102, 46.2301, 14.3303, 8.38504, 46.2301, 21.1731, 8.38504, 42.3458, 21.1731, 8.18532, 46.2301, 21.9347, -33.6378, 40.6136, 15.0379, -29.6595, 5.67894, 11.197, -29.3288, 19.0813, 11.2837, -26.9349, 21.7376, 11.9114, -24.6314, 22.3065, 12.5154, -19.6034, 5.67894, 13.8339, -19.9341, 19.0813, 13.7472, -20.5219, 20.1537, 13.593, -22.328, 21.7376, 13.1194, -23.4473, 22.1623, 12.8259, 20.3427, 41.5584, 25.5297, 9.90834, 41.5584, 21.5725, 9.60876, 41.5584, 22.715, 20.6423, 41.5584, 24.3872, 20.3427, 42.3458, 25.5297, 9.60876, 42.3458, 22.715, -31.5966, 41.5584, 11.91, -31.5966, 42.3458, 11.91, 25.884, 46.2301, 25.7617, 26.1793, 46.2301, 26.6532, 5.33848, 37.471, 20.3742, 4.14015, 37.471, 24.9441, -37.898, 41.5584, 15.1418, -37.2817, 41.5584, 14.6929, -33.7876, 41.5584, 15.6091, -33.7876, 41.3616, 15.6091, -33.6378, 41.5584, 15.0379, -33.6378, 41.3616, 15.0379, -33.2164, 40.6136, 15.7589, -33.2164, 41.3616, 15.7589, -37.2817, 40.6136, 14.6929, -33.0666, 40.6136, 15.1877, -35.1313, 46.2301, 10.3726, -34.9816, 46.2301, 9.80139, -35.9336, 41.5584, 9.55174, -36.5499, 46.2301, 10.0007, -33.0666, 41.3616, 15.1877, -33.0666, 41.5584, 15.1877, -32.795, 41.5584, 16.4799, 3.89643, 42.3458, 21.2171, -13.0809, 5.67894, 15.5442, -12.4678, 27.671, 15.705, -10.0693, 30.8783, 16.3339, -8.40824, 31.98, 16.7695, 5.33848, 40.6136, 20.3742, 4.76724, 40.6136, 20.2244, 0.892435, 30.8783, 19.2084, -2.62773, 32.6648, 18.2853, 4.19601, 41.5584, 20.0746, 4.76724, 41.5584, 20.2244, 3.89643, 41.5584, 21.2171, 4.14015, 40.6136, 24.9441, 10.6891, 17.897, 21.7772, 12.2192, 20.9862, 22.1785, 20.0193, 5.67894, 24.2238, 19.7597, 19.0463, 24.1558, 9.3371, 40.6136, 21.4227, 9.3371, 41.5584, 21.4227, 21.2135, 40.6136, 24.537, 21.2135, 41.5584, 24.537, 8.41043, 41.5584, 27.2849, 2.69809, 41.5584, 25.787, 3.41912, 41.5584, 25.3656, 7.98898, 41.5584, 26.5639, 2.69809, 42.3458, 25.787, 8.41043, 42.3458, 27.2849, 7.98898, 40.6136, 26.5639, 3.41912, 40.6136, 25.3656, 19.8654, 41.5584, 29.6781, 19.8654, 40.6136, 29.6781, 19.1444, 42.3458, 30.0996, 19.1444, 41.5584, 30.0996, 26.0109, 5.67894, 1.37431, 26.0109, 17.897, 1.37431, 18.2109, 20.9862, -0.671044, 19.1467, 21.662, -0.425642, 16.9403, 19.0463, -1.00423, -7.08919, 25.7317, -7.30529, -7.08919, 5.67894, -7.30529, 21.3458, 22.2277, 0.15101, 24.4808, 20.9862, 0.973066, 9.28256, 27.671, -3.01225, -23.3371, 19.0813, -11.5659, -23.6678, 17.897, -11.6526, -17.4556, 22.1623, -10.0236, -14.5303, 20.1537, -9.25651, -15.3431, 21.0556, -9.46964, -21.9365, 21.0556, -11.1986, -20.9433, 21.7376, -10.9381, -19.8239, 22.1623, -10.6446, -23.6678, 5.67894, -11.6526, -13.6117, 5.67894, -9.01565, 11.4689, 20.0967, 21.9817, 10.9486, 19.0463, 21.8453, 13.1551, 21.662, 22.4239, 20.0193, 17.897, 24.2238, 10.6891, 5.67894, 21.7772, 17.5533, 21.662, 23.5772, 16.4873, 22.0842, 23.2977, 15.3542, 22.2277, 23.0005, 19.2394, 20.0967, 24.0193, 18.4891, 20.9862, 23.8226, 14.2211, 22.0842, 22.7034, -0.768644, 31.98, 18.7728, -13.0809, 25.7317, 15.5442, 3.90397, 25.7317, 19.998, 3.90397, 5.67894, 19.998, -11.4463, 29.4167, 15.9729, 3.2909, 27.671, 19.8373, -4.58844, 32.897, 17.7711, -6.54916, 32.6648, 17.257, 2.26941, 29.4167, 19.5694, -29.6595, 17.897, 11.197, -21.3347, 21.0556, 13.3799, -28.741, 20.1537, 11.4378, -27.9282, 21.0556, 11.6509, -25.8156, 22.1623, 12.2049, -19.6034, 17.897, 13.8339, -28.9105, 41.5584, -19.1325, -29.8372, 46.2301, -13.2703, -29.942, 40.6136, -13.2978, -29.942, 5.67894, -13.2978, 32.3707, 42.3458, 3.04199, -35.8289, 46.2301, 9.57921, -36.5499, 47.0175, 10.0007, -37.898, 42.3458, 15.1418, -33.0201, 47.0175, 11.1298, -30.2587, 47.0175, -13.9914, -26.629, 47.0175, -13.2431, -15.1797, 47.0175, 15.8079, -8.78859, 47.0175, -8.56493, 8.18532, 47.0175, 21.9347, 14.5764, 47.0175, -2.4381, 26.1793, 47.0175, 26.6532, 31.0661, 47.0175, 1.88585, 32.5704, 47.0175, 2.28033, 31.8757, 41.5584, 2.91217, 25.884, 41.5584, 25.7617, -8.60748, 37.471, -7.70342, -10.9011, 37.471, -13.189, -19.2894, 37.471, 18.8004, 25.884, 5.67894, 25.7617, 21.1998, 5.67894, 24.5334, 31.8757, 5.67894, 2.91217, -12.0994, 37.471, -8.61908, -18.0911, 37.471, 14.2305, -37.2938, 5.67894, 14.0792, -43.2486, 2.9103, 17.9369, -49.7324, 1.87315, 4.02005, 44.8242, 6.4025, 32.3844, 33.074, 5.67894, -1.65771, 19.758, 2.05623, -26.1271, -35.9336, 5.67894, 9.55177, -46.6015, 1.13814, -9.87117, 49.7324, 4.34088, -2.38457, 41.0569, 2.95207, -20.7114, -29.1299, -3.33786E-6, -38.5578, -42.3482, -0.0773935, -33.9965, -15.3963, 5.67894, 19.8212, -16.8525, 4.23233, 27.0599, 24.0061, 6.15307, 38.5578, -28.9055, 5.67894, -17.9101, 24.6857, 5.67894, 30.3316, 12.0143, 5.67894, -7.18003, -32.8008, 13.3559, 12.8153, -33.6523, 13.3559, 13.9374, -35.0479, 13.3559, 14.1288, -36.17, 13.3559, 13.2772, -36.3613, 13.3559, 11.8817, -35.5098, 13.3559, 10.7596, -34.1142, 13.3559, 10.5682, -32.9921, 13.3559, 11.4197, -32.9434, 37.471, 12.7779, -33.7267, 37.471, 13.8101, -35.0105, 37.471, 13.9862, -36.0427, 37.471, 13.2028, -36.2187, 37.471, 11.9191, -35.4354, 37.471, 10.8868, -34.1516, 37.471, 10.7108, -33.1194, 37.471, 11.4941, -15.1305, 13.3559, 17.4489, -15.982, 13.3559, 18.571, -17.3776, 13.3559, 18.7623, -18.4997, 13.3559, 17.9108, -18.691, 13.3559, 16.5152, -17.8395, 13.3559, 15.3931, -16.4439, 13.3559, 15.2018, -15.3218, 13.3559, 16.0533, -15.2731, 37.471, 17.4115, -16.0564, 37.471, 18.4437, -17.3402, 37.471, 18.6197, -18.3724, 37.471, 17.8364, -18.5484, 37.471, 16.5526, -17.7651, 37.471, 15.5204, -16.4813, 37.471, 15.3444, -15.4491, 37.471, 16.1277, 24.723, 13.3559, 27.8993, 23.8715, 13.3559, 29.0214, 22.4759, 13.3559, 29.2128, 21.3538, 13.3559, 28.3612, 21.1625, 13.3559, 26.9657, 22.014, 13.3559, 25.8436, 23.4096, 13.3559, 25.6522, 24.5317, 13.3559, 26.5038, 24.5804, 37.471, 27.8619, 23.7971, 37.471, 28.8942, 22.5133, 37.471, 29.0702, 21.4811, 37.471, 28.2869, 21.3051, 37.471, 27.0031, 22.0884, 37.471, 25.9708, 23.3722, 37.471, 25.7948, 24.4044, 37.471, 26.5782, 8.23327, 13.3559, 23.5754, 7.38175, 13.3559, 24.6975, 5.98618, 13.3559, 24.8888, 4.86407, 13.3559, 24.0373, 4.67274, 13.3559, 22.6417, 5.52426, 13.3559, 21.5196, 6.91983, 13.3559, 21.3283, 8.04194, 13.3559, 22.1798, 8.09067, 37.471, 23.538, 7.30735, 37.471, 24.5702, 6.02357, 37.471, 24.7462, 4.99134, 37.471, 23.9629, 4.81534, 37.471, 22.6791, 5.59865, 37.471, 21.6469, 6.88243, 37.471, 21.4709, 7.91466, 37.471, 22.2542, -25.6108, 13.3559, -14.6041, -26.4623, 13.3559, -13.482, -27.8579, 13.3559, -13.2907, -28.98, 13.3559, -14.1422, -29.1713, 13.3559, -15.5378, -28.3198, 13.3559, -16.6599, -26.9242, 13.3559, -16.8512, -25.8021, 13.3559, -15.9997, -25.7534, 37.471, -14.6415, -26.5367, 37.471, -13.6093, -27.8205, 37.471, -13.4333, -28.8527, 37.471, -14.2166, -29.0287, 37.471, -15.5004, -28.2454, 37.471, -16.5326, -26.9616, 37.471, -16.7086, -25.9294, 37.471, -15.9253, -7.94047, 13.3559, -9.97057, -8.79199, 13.3559, -8.84846, -10.1876, 13.3559, -8.65713, -11.3097, 13.3559, -9.50865, -11.501, 13.3559, -10.9042, -10.6495, 13.3559, -12.0263, -9.25391, 13.3559, -12.2177, -8.1318, 13.3559, -11.3661, -8.08307, 37.471, -10.008, -8.86638, 37.471, -8.97573, -10.1502, 37.471, -8.79973, -11.1824, 37.471, -9.58304, -11.3584, 37.471, -10.8668, -10.5751, 37.471, -11.8991, -9.29131, 37.471, -12.0751, -8.25908, 37.471, -11.2917, 15.4233, 13.3559, -3.84407, 14.5717, 13.3559, -2.72196, 13.1762, 13.3559, -2.53063, 12.0541, 13.3559, -3.38215, 11.8627, 13.3559, -4.77772, 12.7143, 13.3559, -5.89983, 14.1098, 13.3559, -6.09116, 15.2319, 13.3559, -5.23964, 15.2807, 37.471, -3.88146, 14.4973, 37.471, -2.84924, 13.2136, 37.471, -2.67323, 12.1813, 37.471, -3.45654, 12.0053, 37.471, -4.74033, 12.7886, 37.471, -5.77256, 14.0724, 37.471, -5.94856, 15.1047, 37.471, -5.16525, 31.913, 13.3559, 0.4799, 31.0615, 13.3559, 1.60201, 29.6659, 13.3559, 1.79334, 28.5438, 13.3559, 0.941818, 28.3525, 13.3559, -0.453751, 29.204, 13.3559, -1.57586, 30.5996, 13.3559, -1.76719, 31.7217, 13.3559, -0.915669, 31.7704, 37.471, 0.442507, 30.9871, 37.471, 1.47473, 29.7033, 37.471, 1.65074, 28.6711, 37.471, 0.867425, 28.4951, 37.471, -0.416358, 29.2784, 37.471, -1.44859, 30.5622, 37.471, -1.62459, 31.5944, 37.471, -0.841276, 4.82434, 5.67894, 20.2394, 9.27999, 5.67894, 21.4078, 3.62601, 5.67894, 24.8093, 8.08167, 5.67894, 25.9777, 4.82434, 13.3561, 20.2394, 9.27999, 13.3561, 21.4078, 3.62601, 13.3561, 24.8093, 8.08167, 13.3561, 25.9777, -36.0955, 5.67894, 9.50932, -31.8683, 5.67894, 10.6178, -37.2938, 5.67894, 14.0792, -33.0666, 5.67894, 15.1877, -36.0955, 13.3561, 9.50932, -31.8683, 13.3561, 10.6178, -37.2938, 13.3561, 14.0792, -33.0666, 13.3561, 15.1877, -18.4251, 5.67894, 14.1429, -14.198, 5.67894, 15.2513, -19.6235, 5.67894, 18.7128, -15.3963, 5.67894, 19.8212, -18.4251, 13.3561, 14.1429, -14.198, 13.3561, 15.2513, -19.6235, 13.3561, 18.7128, -15.3963, 13.3561, 19.8212, 21.1998, 5.67894, 24.5334, 25.884, 5.67894, 25.7617, 20.0015, 5.67894, 29.1033, 24.6857, 5.67894, 30.3316, 21.1998, 13.3561, 24.5334, 25.884, 13.3561, 25.7617, 20.0015, 13.3561, 29.1033, 24.6857, 13.3561, 30.3316, -28.9055, 5.67894, -17.9101, -24.6783, 5.67894, -16.8017, -30.1038, 5.67894, -13.3402, -25.8766, 5.67894, -12.2318, -28.9055, 13.3561, -17.9101, -24.6783, 13.3561, -16.8017, -30.1038, 13.3561, -13.3402, -25.8766, 13.3561, -12.2318, -11.2352, 5.67894, -13.2766, -7.00799, 5.67894, -12.1681, -12.4335, 5.67894, -8.70668, -8.20632, 5.67894, -7.59822, -11.2352, 13.3561, -13.2766, -7.00799, 13.3561, -12.1681, -12.4335, 13.3561, -8.70668, -8.20632, 13.3561, -7.59822, 28.3898, 5.67894, -2.88602, 33.074, 5.67894, -1.65773, 27.1915, 5.67894, 1.68388, 31.8757, 5.67894, 2.91217, 28.3898, 13.3561, -2.88602, 33.074, 13.3561, -1.65773, 27.1915, 13.3561, 1.68388, 31.8757, 13.3561, 2.91217, 12.0143, 5.67893, -7.18002, 16.47, 5.67893, -6.01165, 10.816, 5.67893, -2.61014, 15.2717, 5.67893, -1.44177, 12.0143, 13.3561, -7.18002, 16.47, 13.3561, -6.01165, 10.816, 13.3561, -2.61014, 15.2717, 13.3561, -1.44177]; + uvs = new [0.81202, 0.47557, 0.825875, 0.52361, 0.825875, 0.52361, 0.791015, 0.535401, 0.791015, 0.535401, 0.820151, 0.462274, 0.840168, 0.534594, 0.370011, 0.630338, 0.382301, 0.610363, 0.367002, 0.615538, 0.382046, 0.689539, 0.394337, 0.669564, 0.833117, 0.52907, 0.819576, 0.462469, 0.833117, 0.52907, 0.819576, 0.462469, 0.378476, 0.611657, 0.372739, 0.613597, 0.390512, 0.670858, 0.386279, 0.680198, 0.813839, 0.464409, 0.840168, 0.534594, 0.825124, 0.460592, 0.220868, 0.728234, 0.20963, 0.747854, 0.260883, 0.730519, 0.260883, 0.730519, 0.2464, 0.719599, 0.217043, 0.729528, 0.2464, 0.719599, 0.217043, 0.729528, 0.21281, 0.738869, 0.253642, 0.725059, 0.210337, 0.676433, 0.217859, 0.713434, 0.217859, 0.713434, 0.220868, 0.728234, 0.210337, 0.676433, 0.208833, 0.669033, 0.208833, 0.669033, 0.773105, 0.478186, 0.202831, 0.671063, 0.23721, 0.659435, 0.214867, 0.730264, 0.778979, 0.476199, 0.239566, 0.706093, 0.384307, 0.62023, 0.391328, 0.654764, 0.41875, 0.645489, 0.648221, 0.520424, 0.613797, 0.532067, 0.660257, 0.579625, 0.625833, 0.591268, 0.619628, 0.54064, 0.626649, 0.575174, 0.653423, 0.566119, 0.791831, 0.519307, 0.791831, 0.519307, 0.78481, 0.484773, 0.79484, 0.534107, 0.79484, 0.534107, 0.782804, 0.474906, 0.782804, 0.474906, 0.813839, 0.464409, 0.78481, 0.484773, 0.819041, 0.510104, 0.425584, 0.658996, 0.394337, 0.669564, 0.41875, 0.645489, 0.391328, 0.654764, 0.421759, 0.660289, 0.440068, 0.669915, 0.382046, 0.689539, 0.440068, 0.669915, 0.425584, 0.658996, 0.432826, 0.664456, 0.372739, 0.613597, 0.248848, 0.671317, 0.245839, 0.656517, 0.370011, 0.630338, 0.248848, 0.671317, 0.230539, 0.661692, 0.644396, 0.521718, 0.644396, 0.521718, 0.646402, 0.531585, 0.619628, 0.54064, 0.41173, 0.610955, 0.617622, 0.530773, 0.409724, 0.601088, 0.820151, 0.462274, 0.810014, 0.465703, 0.810014, 0.465703, 0.82713, 0.470459, 0.161334, 0.321284, 0.139627, 0.328626, 0.147149, 0.365627, 0.139091, 0.376261, 0.205008, 0.670327, 0.205008, 0.670327, 0.239566, 0.706093, 0.242575, 0.720893, 0.629658, 0.589975, 0.653423, 0.566119, 0.626649, 0.575174, 0.656432, 0.580919, 0.242575, 0.720893, 0.232545, 0.671558, 0.230539, 0.661692, 0.249246, 0.718637, 0.249246, 0.718637, 0.202831, 0.671063, 0.214867, 0.730264, 0.23721, 0.659435, 0.240101, 0.658457, 0.234364, 0.660398, 0.240101, 0.658457, 0.234364, 0.660398, 0.200322, 0.671911, 0.421759, 0.660289, 0.409724, 0.601088, 0.629658, 0.589975, 0.617622, 0.530773, 0.656432, 0.580919, 0.82205, 0.524904, 0.660257, 0.579625, 0.648221, 0.520424, 0.819041, 0.510104, 0.19927, 0.672267, 0.21281, 0.738869, 0.196089, 0.681252, 0.253642, 0.725059, 0.425023, 0.595914, 0.428032, 0.610714, 0.605331, 0.550748, 0.599389, 0.53694, 0.599389, 0.53694, 0.582972, 0.542492, 0.569142, 0.54717, 0.552459, 0.552813, 0.533787, 0.559128, 0.514094, 0.565788, 0.60806, 0.534007, 0.419286, 0.597854, 0.60806, 0.534007, 0.419286, 0.597854, 0.425023, 0.595914, 0.613797, 0.532067, 0.413549, 0.599795, 0.434955, 0.592554, 0.445215, 0.589084, 0.459045, 0.584407, 0.475728, 0.578764, 0.494401, 0.572449, 0.382301, 0.610363, 0.384307, 0.62023, 0.428032, 0.610714, 0.605331, 0.550748, 0.625833, 0.591268, 0.758641, 0.483078, 0.753415, 0.484846, 0.73648, 0.490574, 0.725773, 0.494195, 0.773242, 0.47814, 0.653958, 0.518484, 0.773242, 0.47814, 0.653958, 0.518484, 0.667537, 0.513891, 0.667537, 0.513891, 0.67537, 0.511242, 0.703012, 0.501893, 0.778979, 0.476199, 0.6216, 0.600609, 0.617367, 0.609949, 0.667499, 0.585085, 0.67474, 0.590545, 0.617367, 0.609949, 0.67474, 0.590545, 0.6216, 0.600609, 0.667499, 0.585085, 0.662705, 0.531343, 0.662705, 0.531343, 0.786782, 0.544741, 0.786782, 0.544741, 0.782549, 0.554082, 0.782549, 0.554082, 0.770514, 0.494881, 0.770514, 0.494881, 0.82205, 0.524904, 0.386279, 0.680198, 0.432826, 0.664456, 0.575191, 0.18131, 0.548417, 0.190366, 0.555438, 0.2249, 0.713599, 0.134498, 0.72062, 0.169032, 0.72062, 0.169032, 0.713599, 0.134498, 0.722626, 0.178899, 0.722626, 0.178899, 0.71059, 0.119698, 0.71059, 0.119698, 0.75366, 0.168403, 0.741625, 0.109202, 0.740809, 0.125296, 0.747829, 0.15983, 0.35337, 0.303788, 0.341334, 0.244587, 0.313096, 0.269956, 0.337509, 0.245881, 0.310087, 0.255155, 0.340518, 0.260681, 0.291778, 0.24553, 0.345567, 0.235246, 0.306262, 0.256449, 0.341334, 0.244587, 0.310087, 0.255155, 0.337509, 0.245881, 0.3498, 0.225906, 0.313096, 0.269956, 0.340518, 0.260681, 0.139627, 0.328626, 0.158325, 0.306484, 0.136618, 0.313826, 0.161334, 0.321284, 0.548417, 0.190366, 0.572182, 0.16651, 0.545408, 0.175566, 0.575191, 0.18131, 0.706765, 0.120992, 0.706765, 0.120992, 0.741625, 0.109202, 0.759973, 0.166268, 0.7499, 0.0905845, 0.303814, 0.304731, 0.306823, 0.319531, 0.322123, 0.314357, 0.745857, 0.0998609, 0.759398, 0.166462, 0.759398, 0.166462, 0.745857, 0.0998609, 0.31256, 0.317591, 0.29902, 0.250989, 0.318298, 0.31565, 0.75366, 0.168403, 0.7499, 0.0905845, 0.136618, 0.313826, 0.158325, 0.306484, 0.170615, 0.286509, 0.363287, 0.616794, 0.359965, 0.617917, 0.335922, 0.626049, 0.312786, 0.633874, 0.271512, 0.647834, 0.132793, 0.315119, 0.144829, 0.37432, 0.144829, 0.37432, 0.132793, 0.315119, 0.17036, 0.365685, 0.168355, 0.355818, 0.158325, 0.306484, 0.17036, 0.365685, 0.164996, 0.304228, 0.16215, 0.30519, 0.142652, 0.375057, 0.139091, 0.376261, 0.130617, 0.315855, 0.142652, 0.375057, 0.130617, 0.315855, 0.174185, 0.364392, 0.177031, 0.363429, 0.174185, 0.364392, 0.179923, 0.362451, 0.179923, 0.362451, 0.16574, 0.322848, 0.164996, 0.304228, 0.177031, 0.363429, 0.140144, 0.375905, 0.148654, 0.373027, 0.349545, 0.305082, 0.349545, 0.305082, 0.347539, 0.295215, 0.555438, 0.2249, 0.557443, 0.234767, 0.557443, 0.234767, 0.545408, 0.175566, 0.588042, 0.224418, 0.588042, 0.224418, 0.576007, 0.165217, 0.576007, 0.165217, 0.740809, 0.125296, 0.7378, 0.110495, 0.718801, 0.180193, 0.3498, 0.225906, 0.361836, 0.285107, 0.361836, 0.285107, 0.35337, 0.303788, 0.359107, 0.301848, 0.718801, 0.180193, 0.7378, 0.110495, 0.749835, 0.169697, 0.749835, 0.169697, 0.747829, 0.15983, 0.291778, 0.24553, 0.29902, 0.250989, 0.345567, 0.235246, 0.572182, 0.16651, 0.359107, 0.301848, 0.364845, 0.299907, 0.303814, 0.304731, 0.31256, 0.317591, 0.306823, 0.319531, 0.320117, 0.30449, 0.320117, 0.30449, 0.322123, 0.314357, 0.322123, 0.314357, 0.584217, 0.225711, 0.584217, 0.225711, 0.582211, 0.215845, 0.16215, 0.30519, 0.202107, 0.354948, 0.205429, 0.353824, 0.229472, 0.345693, 0.252608, 0.337868, 0.303108, 0.320788, 0.299787, 0.321911, 0.293883, 0.323908, 0.275743, 0.330043, 0.264501, 0.333845, 0.704317, 0.169274, 0.599517, 0.220537, 0.596508, 0.205737, 0.707326, 0.184074, 0.704317, 0.169274, 0.596508, 0.205737, 0.182651, 0.34571, 0.182651, 0.34571, 0.759973, 0.166268, 0.762939, 0.154719, 0.553619, 0.236061, 0.541583, 0.176859, 0.119362, 0.303844, 0.125551, 0.309659, 0.160645, 0.29779, 0.160645, 0.29779, 0.16215, 0.30519, 0.16215, 0.30519, 0.166383, 0.29585, 0.166383, 0.29585, 0.125551, 0.309659, 0.167887, 0.30325, 0.147149, 0.365627, 0.148654, 0.373027, 0.139091, 0.376261, 0.132902, 0.370445, 0.167887, 0.30325, 0.167887, 0.30325, 0.170615, 0.286509, 0.539135, 0.225141, 0.368619, 0.298631, 0.374777, 0.296548, 0.398866, 0.288401, 0.41555, 0.282758, 0.553619, 0.236061, 0.547881, 0.238001, 0.508963, 0.251164, 0.473608, 0.263122, 0.542144, 0.239941, 0.547881, 0.238001, 0.539135, 0.225141, 0.541583, 0.176859, 0.607358, 0.217885, 0.622727, 0.212687, 0.701069, 0.18619, 0.698462, 0.187072, 0.59378, 0.222477, 0.59378, 0.222477, 0.713063, 0.182133, 0.713063, 0.182133, 0.584472, 0.146535, 0.527099, 0.16594, 0.534341, 0.1714, 0.58024, 0.155876, 0.527099, 0.16594, 0.584472, 0.146535, 0.58024, 0.155876, 0.534341, 0.1714, 0.699523, 0.115532, 0.699523, 0.115532, 0.692281, 0.110072, 0.692281, 0.110072, 0.761248, 0.482197, 0.761248, 0.482197, 0.682906, 0.508693, 0.692305, 0.505514, 0.670144, 0.513009, 0.428798, 0.594637, 0.428798, 0.594637, 0.714392, 0.498044, 0.745879, 0.487394, 0.593232, 0.539022, 0.265608, 0.649831, 0.262286, 0.650954, 0.32468, 0.629852, 0.354061, 0.619914, 0.345898, 0.622675, 0.279675, 0.645073, 0.289651, 0.641699, 0.300893, 0.637897, 0.262286, 0.650954, 0.363287, 0.616794, 0.615191, 0.215235, 0.609965, 0.217003, 0.632126, 0.209508, 0.701069, 0.18619, 0.607358, 0.217885, 0.676301, 0.194567, 0.665594, 0.198188, 0.654214, 0.202037, 0.693236, 0.188839, 0.6857, 0.191388, 0.642833, 0.205886, 0.49228, 0.256806, 0.368619, 0.298631, 0.539211, 0.240934, 0.539211, 0.240934, 0.385036, 0.293078, 0.533053, 0.243016, 0.453915, 0.269782, 0.434222, 0.276443, 0.522794, 0.246486, 0.202107, 0.354948, 0.285719, 0.326669, 0.211333, 0.351828, 0.219496, 0.349067, 0.240714, 0.34189, 0.303108, 0.320788, 0.20963, 0.747854, 0.200322, 0.671911, 0.19927, 0.672267, 0.19927, 0.672267, 0.825124, 0.460592, 0.140144, 0.375905, 0.132902, 0.370445, 0.119362, 0.303844, 0.168355, 0.355818, 0.196089, 0.681252, 0.232545, 0.671558, 0.347539, 0.295215, 0.41173, 0.610955, 0.582211, 0.215845, 0.646402, 0.531585, 0.762939, 0.154719, 0.81202, 0.47557, 0.82713, 0.470459, 0.820151, 0.462274, 0.759973, 0.166268, 0.413548, 0.599795, 0.390512, 0.670858, 0.306262, 0.256449, 0.759973, 0.166268, 0.712926, 0.18218, 0.820151, 0.462274, 0.378476, 0.611657, 0.318298, 0.31565, 0.12543, 0.317609, 0.0656212, 0.267634, 0.000499487, 0.447922, 0.950204, 0.0804735, 0.832187, 0.521475, 0.698445, 0.838466, 0.139091, 0.376261, 0.0319458, 0.627877, 0.9995, 0.530891, 0.912366, 0.768308, 0.207427, 0.999501, 0.0746651, 0.940411, 0.345363, 0.243224, 0.330738, 0.14945, 0.741112, 0.000499487, 0.20968, 0.732018, 0.747937, 0.107066, 0.620669, 0.593014, 0.170557, 0.333983, 0.162005, 0.319446, 0.147988, 0.316968, 0.136718, 0.327999, 0.134796, 0.346078, 0.143348, 0.360614, 0.157365, 0.363093, 0.168635, 0.352062, 0.169125, 0.334467, 0.161257, 0.321095, 0.148363, 0.318815, 0.137996, 0.328963, 0.136228, 0.345593, 0.144096, 0.358966, 0.15699, 0.361246, 0.167357, 0.351098, 0.348033, 0.273957, 0.339481, 0.259421, 0.325464, 0.256942, 0.314194, 0.267973, 0.312272, 0.286052, 0.320825, 0.300589, 0.334841, 0.303067, 0.346112, 0.292036, 0.346601, 0.274441, 0.338734, 0.261069, 0.32584, 0.258789, 0.315472, 0.268937, 0.313704, 0.285568, 0.321572, 0.29894, 0.334466, 0.30122, 0.344833, 0.291072, 0.748312, 0.138576, 0.73976, 0.124039, 0.725743, 0.121561, 0.714473, 0.132592, 0.712551, 0.150671, 0.721103, 0.165207, 0.73512, 0.167686, 0.74639, 0.156655, 0.74688, 0.13906, 0.739012, 0.125688, 0.726118, 0.123408, 0.715751, 0.133556, 0.713983, 0.150186, 0.721851, 0.163558, 0.734745, 0.165839, 0.745112, 0.155691, 0.582693, 0.194591, 0.574141, 0.180054, 0.560124, 0.177576, 0.548854, 0.188607, 0.546932, 0.206686, 0.555484, 0.221222, 0.569501, 0.223701, 0.580771, 0.21267, 0.581261, 0.195075, 0.573393, 0.181703, 0.560499, 0.179423, 0.550132, 0.189571, 0.548364, 0.206202, 0.556232, 0.219574, 0.569126, 0.221854, 0.579493, 0.211706, 0.242772, 0.68919, 0.234219, 0.674654, 0.220202, 0.672175, 0.208932, 0.683206, 0.20701, 0.701285, 0.215563, 0.715822, 0.22958, 0.7183, 0.24085, 0.707269, 0.241339, 0.689675, 0.233472, 0.676303, 0.220578, 0.674022, 0.21021, 0.68417, 0.208443, 0.700801, 0.21631, 0.714173, 0.229204, 0.716453, 0.239571, 0.706306, 0.420248, 0.629165, 0.411695, 0.614628, 0.397679, 0.612149, 0.386408, 0.623181, 0.384487, 0.64126, 0.393039, 0.655796, 0.407056, 0.658275, 0.418326, 0.647244, 0.418816, 0.629649, 0.410948, 0.616277, 0.398054, 0.613997, 0.387687, 0.624144, 0.385919, 0.640775, 0.393786, 0.654147, 0.40668, 0.656427, 0.417048, 0.64628, 0.654908, 0.549798, 0.646355, 0.535262, 0.632338, 0.532783, 0.621068, 0.543814, 0.619146, 0.561893, 0.627699, 0.57643, 0.641716, 0.578909, 0.652986, 0.567877, 0.653475, 0.550283, 0.645608, 0.536911, 0.632714, 0.534631, 0.622346, 0.544778, 0.620579, 0.561409, 0.628446, 0.574781, 0.64134, 0.577061, 0.651708, 0.566914, 0.820527, 0.493783, 0.811974, 0.479247, 0.797957, 0.476768, 0.786687, 0.487799, 0.784765, 0.505878, 0.793318, 0.520415, 0.807335, 0.522893, 0.818605, 0.511862, 0.819094, 0.494268, 0.811227, 0.480896, 0.798333, 0.478615, 0.787965, 0.488763, 0.786198, 0.505394, 0.794065, 0.518766, 0.806959, 0.521046, 0.817327, 0.510899, 0.548455, 0.237807, 0.593206, 0.222671, 0.536419, 0.178606, 0.58117, 0.16347, 0.548455, 0.237807, 0.593206, 0.222671, 0.536419, 0.178606, 0.58117, 0.16347, 0.137466, 0.376811, 0.179923, 0.362451, 0.12543, 0.317609, 0.167887, 0.30325, 0.137466, 0.376811, 0.179923, 0.362451, 0.12543, 0.317609, 0.167887, 0.30325, 0.314942, 0.316785, 0.357399, 0.302425, 0.302907, 0.257584, 0.345363, 0.243224, 0.314942, 0.316785, 0.357399, 0.302425, 0.302907, 0.257584, 0.345363, 0.243224, 0.712926, 0.18218, 0.759973, 0.166268, 0.70089, 0.122979, 0.747937, 0.107067, 0.712926, 0.18218, 0.759973, 0.166268, 0.70089, 0.122979, 0.747937, 0.107067, 0.20968, 0.732018, 0.252137, 0.717659, 0.197645, 0.672817, 0.240102, 0.658457, 0.20968, 0.732018, 0.252137, 0.717659, 0.197645, 0.672817, 0.240102, 0.658457, 0.387157, 0.671992, 0.429613, 0.657633, 0.375121, 0.612791, 0.417578, 0.598432, 0.387157, 0.671992, 0.429613, 0.657633, 0.375121, 0.612791, 0.417578, 0.598432, 0.785141, 0.537387, 0.832187, 0.521475, 0.773105, 0.478186, 0.820151, 0.462274, 0.785141, 0.537387, 0.832187, 0.521475, 0.773105, 0.478186, 0.820151, 0.462274, 0.620669, 0.593014, 0.665421, 0.577879, 0.608633, 0.533813, 0.653385, 0.518678, 0.620669, 0.593014, 0.665421, 0.577879, 0.608633, 0.533813, 0.653385, 0.518678]; + indices = new [92, 452, 453, 452, 92, 0, 1, 3, 4, 3, 1, 2, 123, 440, 6, 123, 5, 440, 123, 90, 5, 10, 8, 11, 7, 8, 10, 7, 9, 8, 12, 13, 15, 13, 12, 14, 16, 19, 18, 19, 16, 17, 15, 1, 12, 1, 15, 20, 22, 6, 440, 6, 22, 21, 22, 14, 21, 454, 14, 22, 454, 13, 14, 25, 23, 105, 23, 25, 24, 26, 24, 25, 24, 26, 436, 27, 28, 30, 28, 27, 29, 32, 128, 130, 128, 32, 31, 30, 32, 27, 32, 30, 31, 34, 23, 38, 23, 34, 36, 35, 446, 45, 446, 35, 33, 47, 448, 48, 448, 47, 46, 54, 450, 55, 450, 54, 53, 56, 59, 62, 59, 56, 60, 57, 452, 65, 452, 57, 64, 67, 68, 70, 68, 67, 69, 71, 72, 10, 72, 71, 73, 74, 19, 75, 19, 74, 18, 76, 77, 79, 77, 76, 78, 80, 9, 7, 9, 80, 81, 61, 82, 83, 82, 61, 62, 61, 84, 58, 84, 61, 83, 79, 80, 7, 80, 79, 77, 85, 448, 53, 448, 85, 86, 87, 86, 85, 86, 87, 88, 89, 90, 91, 90, 89, 5, 89, 0, 92, 0, 89, 91, 95, 93, 444, 93, 95, 94, 97, 28, 98, 28, 97, 30, 36, 99, 100, 99, 36, 34, 45, 34, 35, 34, 45, 99, 101, 102, 104, 102, 101, 103, 55, 103, 54, 103, 55, 102, 107, 99, 106, 99, 107, 81, 18, 462, 16, 462, 18, 457, 108, 28, 29, 111, 109, 43, 28, 109, 111, 108, 109, 28, 248, 396, 409, 396, 248, 395, 111, 98, 28, 98, 111, 110, 110, 43, 41, 43, 110, 111, 114, 112, 116, 112, 114, 113, 29, 112, 108, 112, 29, 116, 42, 108, 112, 108, 42, 109, 88, 68, 86, 68, 88, 119, 103, 120, 121, 120, 103, 101, 454, 15, 13, 461, 15, 454, 15, 63, 20, 461, 63, 15, 49, 124, 125, 124, 49, 51, 63, 1, 20, 1, 63, 2, 65, 56, 57, 56, 65, 126, 71, 11, 118, 11, 71, 10, 48, 69, 47, 69, 48, 68, 39, 117, 437, 117, 39, 38, 127, 436, 128, 24, 38, 23, 38, 24, 117, 97, 31, 30, 31, 97, 438, 128, 438, 127, 438, 128, 31, 33, 129, 445, 129, 33, 37, 39, 129, 37, 129, 39, 437, 113, 130, 115, 130, 113, 32, 121, 88, 87, 121, 119, 88, 121, 131, 119, 77, 25, 80, 25, 77, 26, 132, 121, 133, 121, 132, 131, 77, 130, 26, 78, 130, 77, 78, 115, 130, 25, 81, 80, 81, 25, 105, 113, 27, 32, 27, 113, 114, 153, 106, 154, 106, 153, 107, 141, 155, 156, 155, 141, 145, 133, 155, 132, 155, 133, 156, 124, 52, 157, 52, 124, 51, 8, 107, 153, 8, 81, 107, 9, 81, 8, 154, 446, 46, 446, 154, 106, 146, 52, 50, 52, 146, 157, 171, 174, 173, 174, 171, 172, 176, 120, 122, 120, 176, 175, 157, 178, 124, 178, 157, 177, 173, 177, 171, 177, 173, 178, 176, 172, 175, 172, 176, 174, 175, 156, 133, 156, 175, 172, 141, 172, 171, 172, 141, 156, 175, 121, 120, 121, 175, 133, 146, 177, 157, 177, 146, 143, 141, 177, 143, 177, 141, 171, 179, 176, 180, 176, 179, 174, 122, 180, 176, 180, 122, 82, 179, 173, 174, 173, 179, 165, 163, 124, 178, 124, 163, 125, 178, 165, 163, 165, 178, 173, 14, 181, 182, 181, 14, 12, 4, 12, 1, 12, 4, 181, 6, 183, 184, 183, 6, 21, 182, 21, 14, 21, 182, 183, 6, 59, 123, 59, 6, 184, 184, 185, 186, 185, 184, 183, 162, 183, 182, 183, 162, 185, 184, 62, 59, 62, 184, 186, 162, 181, 164, 181, 162, 182, 170, 181, 4, 181, 170, 164, 456, 74, 147, 74, 456, 66, 155, 71, 132, 71, 155, 73, 142, 74, 75, 74, 142, 147, 118, 132, 71, 118, 131, 132, 118, 119, 131, 4, 44, 170, 44, 4, 3, 90, 0, 91, 0, 90, 126, 188, 73, 189, 73, 188, 72, 123, 60, 187, 60, 123, 59, 189, 19, 188, 19, 189, 75, 122, 101, 104, 101, 122, 120, 70, 11, 67, 11, 70, 118, 75, 144, 142, 144, 75, 189, 155, 189, 73, 145, 189, 155, 145, 144, 189, 105, 36, 100, 36, 105, 23, 7, 72, 79, 72, 7, 10, 76, 19, 17, 19, 76, 188, 72, 76, 79, 76, 72, 188, 69, 11, 8, 11, 69, 67, 82, 84, 83, 84, 82, 102, 29, 114, 116, 114, 29, 27, 60, 126, 187, 126, 60, 56, 74, 457, 18, 457, 74, 66, 192, 190, 449, 190, 192, 191, 194, 193, 195, 194, 196, 193, 197, 196, 194, 197, 198, 196, 195, 203, 204, 203, 195, 193, 207, 208, 210, 208, 207, 209, 211, 292, 217, 292, 211, 302, 212, 213, 214, 213, 212, 241, 215, 217, 216, 217, 215, 211, 218, 210, 219, 210, 218, 207, 220, 221, 223, 221, 220, 222, 220, 93, 94, 93, 220, 223, 224, 225, 227, 225, 224, 226, 191, 227, 190, 227, 191, 224, 228, 202, 230, 202, 228, 229, 234, 215, 235, 233, 215, 234, 233, 211, 215, 236, 237, 239, 237, 236, 238, 213, 240, 242, 240, 213, 241, 236, 243, 238, 243, 236, 230, 244, 237, 455, 237, 244, 239, 245, 247, 246, 247, 245, 443, 443, 356, 247, 356, 443, 340, 162, 179, 185, 179, 162, 165, 180, 62, 186, 62, 180, 82, 186, 179, 180, 179, 186, 185, 58, 450, 64, 450, 58, 84, 253, 254, 0x0100, 254, 253, 0xFF, 259, 223, 221, 246, 223, 259, 246, 0x0101, 223, 213, 463, 458, 463, 213, 242, 0x0100, 261, 262, 0x0100, 274, 261, 0x0100, 267, 274, 0x0100, 265, 267, 263, 0x0100, 254, 0x0100, 263, 265, 265, 266, 267, 266, 265, 263, 201, 413, 459, 413, 201, 291, 270, 261, 269, 261, 270, 273, 274, 269, 261, 269, 274, 275, 273, 262, 261, 216, 210, 208, 210, 216, 279, 281, 191, 192, 281, 224, 191, 282, 224, 281, 282, 283, 224, 237, 459, 455, 238, 459, 237, 243, 459, 238, 243, 201, 459, 288, 285, 287, 285, 288, 286, 202, 243, 230, 243, 202, 201, 193, 289, 203, 289, 193, 196, 196, 290, 289, 290, 196, 200, 213, 206, 214, 206, 213, 458, 292, 293, 217, 293, 292, 294, 212, 295, 296, 295, 212, 214, 279, 217, 293, 217, 279, 216, 228, 291, 229, 291, 228, 297, 298, 289, 290, 289, 298, 300, 292, 303, 304, 303, 292, 302, 199, 232, 298, 241, 304, 303, 304, 241, 212, 226, 305, 225, 305, 226, 284, 209, 216, 208, 216, 209, 215, 212, 306, 304, 306, 212, 296, 294, 306, 307, 292, 306, 294, 292, 304, 306, 300, 232, 231, 232, 300, 298, 222, 259, 221, 245, 259, 222, 245, 246, 259, 211, 308, 302, 308, 211, 233, 303, 240, 241, 240, 303, 309, 309, 308, 310, 303, 308, 309, 303, 302, 308, 311, 218, 312, 218, 313, 207, 311, 313, 218, 311, 314, 313, 305, 227, 225, 227, 305, 316, 273, 318, 262, 273, 268, 318, 273, 270, 268, 328, 329, 331, 329, 328, 330, 316, 332, 198, 332, 316, 333, 330, 332, 333, 332, 330, 328, 449, 194, 195, 194, 449, 317, 308, 272, 310, 272, 308, 334, 0x0101, 233, 234, 233, 0x0101, 335, 315, 198, 197, 198, 315, 316, 194, 315, 197, 315, 194, 317, 335, 308, 233, 308, 335, 334, 447, 281, 192, 281, 447, 280, 281, 278, 282, 278, 281, 280, 299, 231, 336, 231, 299, 300, 337, 299, 336, 299, 337, 301, 204, 337, 451, 337, 204, 301, 312, 219, 447, 219, 312, 218, 356, 341, 342, 341, 356, 340, 253, 262, 318, 262, 253, 0x0100, 343, 344, 342, 344, 343, 345, 341, 343, 342, 343, 346, 347, 341, 346, 343, 341, 348, 346, 346, 318, 349, 346, 253, 318, 346, 348, 253, 220, 351, 277, 351, 220, 350, 276, 351, 441, 351, 276, 277, 341, 340, 352, 276, 245, 277, 245, 276, 443, 253, 264, 0xFF, 264, 253, 348, 341, 264, 348, 264, 341, 352, 442, 350, 95, 350, 442, 353, 350, 441, 351, 441, 350, 353, 272, 349, 271, 272, 354, 349, 272, 355, 354, 278, 283, 282, 283, 278, 279, 356, 335, 247, 335, 356, 334, 279, 357, 283, 357, 279, 293, 356, 272, 334, 272, 356, 355, 0x0101, 247, 335, 247, 0x0101, 246, 349, 268, 271, 268, 349, 318, 344, 354, 355, 354, 344, 345, 356, 344, 355, 344, 356, 342, 311, 260, 314, 260, 311, 258, 349, 347, 346, 347, 349, 354, 345, 347, 354, 347, 345, 343, 368, 307, 366, 307, 368, 294, 294, 357, 293, 357, 294, 368, 369, 288, 287, 288, 369, 339, 260, 313, 314, 0x0101, 313, 260, 0x0101, 235, 313, 0x0101, 234, 235, 444, 311, 312, 311, 444, 258, 372, 460, 413, 460, 459, 413, 369, 338, 339, 338, 369, 362, 378, 380, 381, 380, 378, 379, 284, 383, 305, 383, 284, 382, 384, 369, 287, 369, 384, 385, 380, 384, 381, 384, 380, 385, 379, 383, 382, 383, 379, 378, 382, 368, 379, 368, 382, 357, 367, 368, 366, 380, 368, 367, 380, 379, 368, 357, 284, 283, 284, 357, 382, 369, 363, 362, 363, 369, 385, 380, 363, 385, 363, 380, 367, 378, 333, 383, 333, 378, 330, 316, 383, 333, 383, 316, 305, 330, 375, 329, 378, 375, 330, 378, 381, 375, 384, 285, 374, 285, 384, 287, 384, 375, 381, 375, 384, 374, 386, 236, 239, 236, 386, 387, 236, 228, 230, 228, 236, 387, 388, 244, 232, 244, 388, 389, 244, 386, 239, 386, 244, 389, 199, 388, 232, 388, 328, 389, 328, 388, 332, 377, 328, 331, 386, 328, 377, 386, 389, 328, 332, 199, 198, 199, 332, 388, 386, 376, 387, 376, 386, 377, 228, 376, 297, 376, 228, 387, 206, 295, 214, 295, 206, 205, 413, 390, 372, 390, 413, 391, 167, 370, 414, 370, 167, 166, 161, 415, 416, 415, 161, 160, 392, 412, 371, 412, 392, 393, 370, 394, 411, 394, 370, 166, 138, 364, 421, 364, 138, 137, 358, 395, 422, 395, 358, 396, 423, 134, 424, 134, 423, 135, 422, 148, 359, 148, 422, 395, 410, 392, 371, 392, 410, 168, 397, 416, 417, 416, 397, 161, 373, 391, 413, 391, 373, 158, 418, 158, 373, 158, 418, 159, 419, 159, 418, 159, 419, 398, 160, 419, 415, 419, 160, 398, 169, 417, 420, 417, 169, 397, 393, 420, 412, 420, 393, 169, 411, 168, 410, 168, 411, 394, 359, 149, 425, 149, 359, 148, 426, 135, 423, 135, 426, 399, 150, 361, 360, 361, 150, 151, 149, 360, 425, 360, 149, 150, 152, 427, 428, 427, 152, 140, 137, 429, 364, 429, 137, 136, 151, 428, 361, 428, 151, 152, 429, 399, 426, 399, 429, 136, 139, 421, 365, 421, 139, 138, 140, 365, 427, 365, 140, 139, 430, 400, 320, 400, 430, 401, 251, 327, 322, 327, 251, 402, 431, 403, 325, 403, 431, 404, 320, 252, 432, 252, 320, 400, 432, 405, 433, 405, 432, 252, 405, 321, 433, 321, 405, 406, 407, 322, 434, 322, 407, 251, 406, 434, 321, 434, 406, 407, 250, 431, 326, 431, 250, 404, 324, 248, 435, 248, 324, 249, 325, 249, 324, 249, 325, 403, 319, 401, 430, 401, 319, 408, 402, 326, 327, 326, 402, 250, 435, 409, 323, 409, 435, 248, 442, 129, 353, 129, 442, 445, 443, 436, 340, 436, 443, 24, 5, 336, 231, 336, 5, 89, 92, 451, 337, 451, 92, 453, 89, 337, 336, 337, 89, 92, 436, 352, 340, 352, 436, 127, 129, 441, 353, 441, 129, 437, 352, 96, 264, 352, 439, 96, 127, 439, 352, 438, 439, 127, 24, 276, 117, 276, 24, 443, 441, 117, 276, 117, 441, 437, 244, 440, 232, 440, 244, 22, 454, 244, 455, 244, 454, 22, 5, 232, 440, 232, 5, 231, 95, 446, 33, 446, 95, 444, 134, 166, 167, 166, 134, 135, 40, 391, 461, 391, 40, 390, 370, 424, 414, 424, 370, 423, 358, 435, 323, 435, 358, 422, 430, 96, 319, 455, 461, 454, 461, 455, 459, 463, 206, 458, 206, 463, 205, 338, 288, 339, 288, 338, 286, 291, 202, 229, 202, 291, 201, 44, 2, 63, 2, 44, 3, 51, 50, 52, 50, 51, 49, 66, 462, 457, 462, 66, 456, 109, 41, 43, 41, 109, 42, 26, 128, 436, 128, 26, 130, 105, 99, 81, 99, 105, 100, 110, 97, 98, 97, 110, 438, 391, 63, 461, 63, 391, 44, 200, 298, 290, 298, 200, 199, 275, 267, 266, 267, 275, 274, 44, 164, 170, 44, 163, 164, 44, 125, 163, 44, 49, 125, 143, 145, 141, 145, 142, 144, 143, 142, 145, 146, 142, 143, 462, 17, 16, 17, 112, 113, 462, 112, 17, 462, 42, 112, 269, 268, 270, 269, 271, 268, 275, 271, 269, 275, 240, 271, 275, 242, 240, 275, 463, 242, 205, 296, 295, 205, 363, 296, 205, 362, 363, 205, 338, 362, 286, 374, 285, 286, 376, 374, 286, 297, 376, 286, 291, 297, 350, 94, 95, 94, 350, 220, 301, 203, 289, 203, 301, 204, 126, 452, 0, 452, 126, 65, 102, 450, 84, 450, 102, 55, 86, 48, 448, 48, 86, 68, 106, 45, 446, 45, 106, 99, 47, 154, 46, 154, 47, 69, 34, 33, 35, 33, 34, 37, 103, 53, 54, 53, 103, 85, 56, 64, 57, 64, 56, 58, 93, 258, 444, 258, 93, 223, 219, 280, 447, 280, 219, 210, 317, 190, 227, 190, 317, 449, 374, 329, 375, 374, 331, 329, 374, 377, 331, 374, 376, 377, 296, 307, 306, 296, 366, 307, 296, 367, 366, 296, 363, 367, 271, 310, 272, 271, 309, 310, 271, 240, 309, 17, 78, 76, 17, 115, 78, 17, 113, 115, 142, 456, 147, 142, 50, 456, 142, 146, 50, 162, 163, 165, 163, 162, 164, 85, 121, 87, 121, 85, 103, 58, 62, 61, 62, 58, 56, 69, 153, 154, 153, 69, 8, 37, 38, 39, 38, 37, 34, 68, 118, 70, 118, 68, 119, 104, 82, 122, 82, 104, 102, 187, 90, 123, 90, 187, 126, 289, 299, 301, 299, 289, 300, 210, 278, 280, 278, 210, 279, 224, 284, 226, 284, 224, 283, 215, 313, 235, 209, 313, 215, 207, 313, 209, 220, 245, 222, 245, 220, 277, 196, 199, 200, 199, 196, 198, 227, 315, 317, 315, 227, 316, 223, 260, 258, 260, 223, 0x0101, 264, 254, 0xFF, 264, 263, 254, 96, 263, 264, 96, 266, 263, 320, 275, 430, 432, 275, 320, 433, 275, 432, 321, 275, 433, 434, 275, 321, 322, 275, 434, 327, 275, 322, 326, 275, 327, 431, 275, 326, 325, 275, 431, 325, 463, 275, 324, 463, 325, 435, 463, 324, 422, 463, 435, 463, 422, 205, 359, 205, 422, 425, 205, 359, 360, 205, 425, 361, 205, 360, 428, 205, 361, 427, 205, 428, 365, 205, 427, 421, 205, 365, 421, 338, 205, 364, 338, 421, 429, 338, 364, 426, 338, 429, 423, 338, 426, 423, 286, 338, 286, 423, 370, 411, 286, 370, 410, 286, 411, 371, 286, 410, 412, 286, 371, 420, 286, 412, 417, 286, 420, 416, 286, 417, 415, 286, 416, 419, 286, 415, 418, 286, 419, 418, 291, 286, 373, 291, 418, 413, 291, 373, 49, 394, 166, 49, 168, 394, 44, 168, 49, 44, 392, 168, 44, 393, 392, 44, 169, 393, 44, 397, 169, 44, 161, 397, 44, 160, 161, 44, 398, 160, 44, 159, 398, 44, 158, 159, 44, 391, 158, 49, 135, 50, 135, 49, 166, 456, 148, 395, 456, 149, 148, 456, 150, 149, 456, 151, 150, 50, 151, 456, 50, 152, 151, 50, 140, 152, 50, 139, 140, 50, 138, 139, 50, 137, 138, 50, 136, 137, 50, 399, 136, 50, 135, 399, 462, 395, 248, 395, 462, 456, 42, 439, 41, 42, 408, 439, 42, 401, 408, 249, 462, 248, 403, 462, 249, 404, 462, 403, 250, 462, 404, 402, 462, 250, 251, 462, 402, 407, 462, 251, 406, 462, 407, 405, 462, 406, 252, 462, 405, 252, 42, 462, 400, 42, 252, 401, 42, 400, 41, 438, 110, 438, 41, 439, 430, 266, 96, 266, 430, 275, 53, 447, 192, 447, 53, 448, 312, 448, 46, 448, 312, 447, 46, 444, 312, 444, 46, 446, 442, 33, 445, 33, 442, 95, 64, 449, 195, 449, 64, 450, 192, 450, 53, 450, 192, 449, 453, 204, 451, 204, 453, 452, 195, 452, 64, 452, 195, 204, 466, 464, 470, 464, 466, 465, 468, 467, 472, 467, 468, 480, 470, 471, 466, 471, 470, 479, 468, 469, 481, 469, 468, 473, 472, 473, 468, 479, 469, 474, 469, 479, 481, 475, 479, 474, 479, 475, 471, 477, 464, 465, 464, 477, 476, 478, 476, 477, 476, 478, 480, 476, 470, 464, 476, 479, 470, 481, 480, 468, 479, 480, 481, 476, 480, 479, 478, 467, 480, 482, 491, 483, 491, 482, 490, 483, 492, 484, 492, 483, 491, 484, 493, 485, 493, 484, 492, 485, 494, 486, 494, 485, 493, 486, 495, 487, 495, 486, 494, 487, 496, 488, 496, 487, 495, 488, 497, 489, 497, 488, 496, 489, 490, 482, 490, 489, 497, 488, 486, 487, 486, 484, 485, 484, 482, 483, 486, 482, 484, 488, 482, 486, 489, 482, 488, 491, 493, 492, 493, 495, 494, 495, 497, 496, 493, 497, 495, 491, 497, 493, 490, 497, 491, 498, 507, 499, 507, 498, 506, 499, 508, 500, 508, 499, 507, 500, 509, 501, 509, 500, 508, 501, 510, 502, 510, 501, 509, 502, 511, 503, 511, 502, 510, 503, 0x0200, 504, 0x0200, 503, 511, 504, 513, 505, 513, 504, 0x0200, 505, 506, 498, 506, 505, 513, 504, 502, 503, 502, 500, 501, 500, 498, 499, 502, 498, 500, 504, 498, 502, 505, 498, 504, 507, 509, 508, 509, 511, 510, 511, 513, 0x0200, 509, 513, 511, 507, 513, 509, 506, 513, 507, 0x0202, 523, 515, 523, 0x0202, 522, 515, 524, 516, 524, 515, 523, 516, 525, 517, 525, 516, 524, 517, 526, 518, 526, 517, 525, 518, 527, 519, 527, 518, 526, 519, 528, 520, 528, 519, 527, 520, 529, 521, 529, 520, 528, 521, 522, 0x0202, 522, 521, 529, 520, 518, 519, 518, 516, 517, 516, 0x0202, 515, 518, 0x0202, 516, 520, 0x0202, 518, 521, 0x0202, 520, 523, 525, 524, 525, 527, 526, 527, 529, 528, 525, 529, 527, 523, 529, 525, 522, 529, 523, 530, 539, 531, 539, 530, 538, 531, 540, 532, 540, 531, 539, 532, 541, 533, 541, 532, 540, 533, 542, 534, 542, 533, 541, 534, 543, 535, 543, 534, 542, 535, 544, 536, 544, 535, 543, 536, 545, 537, 545, 536, 544, 537, 538, 530, 538, 537, 545, 536, 534, 535, 534, 532, 533, 532, 530, 531, 534, 530, 532, 536, 530, 534, 537, 530, 536, 539, 541, 540, 541, 543, 542, 543, 545, 544, 541, 545, 543, 539, 545, 541, 538, 545, 539, 546, 555, 547, 555, 546, 554, 547, 556, 548, 556, 547, 555, 548, 557, 549, 557, 548, 556, 549, 558, 550, 558, 549, 557, 550, 559, 551, 559, 550, 558, 551, 560, 552, 560, 551, 559, 552, 561, 553, 561, 552, 560, 553, 554, 546, 554, 553, 561, 552, 550, 551, 550, 548, 549, 548, 546, 547, 550, 546, 548, 552, 546, 550, 553, 546, 552, 555, 557, 556, 557, 559, 558, 559, 561, 560, 557, 561, 559, 555, 561, 557, 554, 561, 555, 562, 571, 563, 571, 562, 570, 563, 572, 564, 572, 563, 571, 564, 573, 565, 573, 564, 572, 565, 574, 566, 574, 565, 573, 566, 575, 567, 575, 566, 574, 567, 576, 568, 576, 567, 575, 568, 577, 569, 577, 568, 576, 569, 570, 562, 570, 569, 577, 568, 566, 567, 566, 564, 565, 564, 562, 563, 566, 562, 564, 568, 562, 566, 569, 562, 568, 571, 573, 572, 573, 575, 574, 575, 577, 576, 573, 577, 575, 571, 577, 573, 570, 577, 571, 578, 587, 579, 587, 578, 586, 579, 588, 580, 588, 579, 587, 580, 589, 581, 589, 580, 588, 581, 590, 582, 590, 581, 589, 582, 591, 583, 591, 582, 590, 583, 592, 584, 592, 583, 591, 584, 593, 585, 593, 584, 592, 585, 586, 578, 586, 585, 593, 584, 582, 583, 582, 580, 581, 580, 578, 579, 582, 578, 580, 584, 578, 582, 585, 578, 584, 587, 589, 588, 589, 591, 590, 591, 593, 592, 589, 593, 591, 587, 593, 589, 586, 593, 587, 594, 603, 595, 603, 594, 602, 595, 604, 596, 604, 595, 603, 596, 605, 597, 605, 596, 604, 597, 606, 598, 606, 597, 605, 598, 607, 599, 607, 598, 606, 599, 608, 600, 608, 599, 607, 600, 609, 601, 609, 600, 608, 601, 602, 594, 602, 601, 609, 600, 598, 599, 598, 596, 597, 596, 594, 595, 598, 594, 596, 600, 594, 598, 601, 594, 600, 603, 605, 604, 605, 607, 606, 607, 609, 608, 605, 609, 607, 603, 609, 605, 602, 609, 603, 610, 613, 612, 613, 610, 611, 614, 617, 615, 617, 614, 616, 610, 615, 611, 615, 610, 614, 611, 617, 613, 617, 611, 615, 613, 616, 612, 616, 613, 617, 612, 614, 610, 614, 612, 616, 618, 621, 620, 621, 618, 619, 622, 625, 623, 625, 622, 624, 618, 623, 619, 623, 618, 622, 619, 625, 621, 625, 619, 623, 621, 624, 620, 624, 621, 625, 620, 622, 618, 622, 620, 624, 626, 629, 628, 629, 626, 627, 630, 633, 631, 633, 630, 632, 626, 631, 627, 631, 626, 630, 627, 633, 629, 633, 627, 631, 629, 632, 628, 632, 629, 633, 628, 630, 626, 630, 628, 632, 634, 637, 636, 637, 634, 635, 638, 641, 639, 641, 638, 640, 634, 639, 635, 639, 634, 638, 635, 641, 637, 641, 635, 639, 637, 640, 636, 640, 637, 641, 636, 638, 634, 638, 636, 640, 642, 645, 644, 645, 642, 643, 646, 649, 647, 649, 646, 648, 642, 647, 643, 647, 642, 646, 643, 649, 645, 649, 643, 647, 645, 648, 644, 648, 645, 649, 644, 646, 642, 646, 644, 648, 650, 653, 652, 653, 650, 651, 654, 657, 655, 657, 654, 656, 650, 655, 651, 655, 650, 654, 651, 657, 653, 657, 651, 655, 653, 656, 652, 656, 653, 657, 652, 654, 650, 654, 652, 656, 658, 661, 660, 661, 658, 659, 662, 665, 663, 665, 662, 664, 658, 663, 659, 663, 658, 662, 659, 665, 661, 665, 659, 663, 661, 664, 660, 664, 661, 665, 660, 662, 658, 662, 660, 664, 666, 669, 668, 669, 666, 667, 670, 673, 671, 673, 670, 672, 666, 671, 667, 671, 666, 670, 667, 673, 669, 673, 667, 671, 669, 672, 668, 672, 669, 673, 668, 670, 666, 670, 668, 672]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/NationalGallery.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/NationalGallery.as new file mode 100644 index 0000000..cb679c7 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/NationalGallery.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class NationalGallery extends Stage3DData { + + public function NationalGallery(){ + vertices = new [97.6863, -21.6821, -179.333, 170.807, -21.6821, -158.918, 170.807, -16.9099, -158.918, 97.6863, -16.9099, -179.333, 88.4107, -16.9099, -146.112, 88.4107, -21.6821, -146.112, 161.531, -21.6821, -125.696, 161.531, -16.9099, -125.696, 134.247, -13.7563, -169.126, 189.28, -49.1736, -119.87, 69.1569, -54.5713, -153.409, 189.28, -54.5713, -119.87, 69.1569, -49.1736, -153.409, 189.281, -49.1736, -119.87, 186.441, -49.1736, -120.663, 177.673, -49.1736, -123.111, 175.099, -49.1736, -123.829, 77.4648, -54.5713, -183.164, 197.591, -54.5713, -149.625, 160.005, -49.1736, -160.119, 108.892, -49.1736, -174.39, -101.477, -3.82325, -123.478, -98.2948, 0.733321, -134.875, -94.9105, 2.28305, -146.996, -91.5262, 0.733321, -159.117, -88.3442, -3.82325, -170.514, -88.3745, -3.82325, -170.522, -101.507, -3.82325, -123.486, -79.3749, -7.67758, -185.586, -84.0238, -7.67758, -168.935, -68.215, -7.67758, -164.521, -63.5661, -7.67758, -181.172, 27.4576, -1.04766, -102.95, 39.2033, -1.04766, -145.018, 44.2162, -7.39412, -98.271, 22.4446, -7.39412, -149.698, 62.6742, -7.67758, -126.505, 69.7276, -7.67758, -151.767, 66.2009, 0.763363, -139.136, 102.384, 0.763363, -129.033, 98.8573, -7.67758, -116.402, 105.911, -7.67758, -141.664, -12.8188, -4.20514, -60.6227, -41.5241, -4.20514, -68.6375, -3.13871, -4.20514, -95.2928, -17.4914, 1.00745, -99.3002, -31.844, -4.20514, -103.307, -27.1714, 1.00745, -64.6301, -12.8188, -4.20514, -60.6227, -41.5241, -4.20514, -68.6375, -65.5295, -1.11065, 6.47315, -131.883, -1.11065, -12.053, -131.883, -4.03585, -12.053, -120.319, -4.03585, -8.82435, -65.5294, -4.03585, 6.47315, -110.979, -1.11065, -86.9226, -101.904, -1.11065, -119.424, -101.904, -4.03585, -119.424, -98.0137, -1.11065, -118.338, -35.5508, -1.11065, -100.898, -35.5508, -4.03585, -100.898, -59.1026, -1.11065, -16.5454, -57.5271, -4.03585, -22.188, -63.954, -1.11065, 0.830528, -107.088, 7.40903, -85.8364, -119.377, 7.40903, -89.2675, -109.222, 7.40903, -125.64, -103.16, 7.40903, -123.948, -103.589, 7.40903, -122.414, -97.3612, 7.40903, -120.675, -103.589, -1.11065, -122.414, -97.3612, -1.11065, -120.675, -107.088, -1.11065, -85.8364, -158.223, 3.3136, -18.4161, -138.719, -7.39412, -12.9706, -178.22, -7.39412, -23.9994, -147.142, -7.39412, -135.308, -107.6, -7.39412, -124.426, -127.365, 3.49238, -129.944, -19.7766, -0.307505, -53.6389, -13.5224, -0.307505, -41.8051, -0.308831, -7.67758, -52.7448, 39.5676, -18.4335, -41.6111, -0.308831, -18.4335, -52.7448, 12.0137, -18.4335, -96.879, 80.7321, -18.4335, -77.6924, 83.4243, -18.4335, -76.9408, 71.1018, -18.4335, -32.8066, 80.7321, -7.67758, -77.6924, 83.4243, -7.67758, -76.9408, 122.151, -14.9965, -38.9667, 77.9629, -14.9965, -51.3042, 84.6732, -14.9965, -75.3378, 128.861, -14.9965, -63.0003, 81.3181, -7.67758, -63.321, 125.506, -7.67758, -50.9835, 84.6732, -14.9965, -75.3378, 128.861, -14.9965, -63.0003, 125.506, -7.67758, -50.9835, -12.8188, -7.67758, -60.6227, -41.5241, -7.67758, -68.6375, -31.844, -7.39412, -103.307, -12.8188, 0.31848, -60.6227, -41.5241, 0.31848, -68.6375, -41.3973, -1.08188, -12.8513, -48.6272, 0.586893, 23.6351, 84.9107, 3.08594, 22.5544, 72.7024, -0.346872, 19.1458, 88.8165, -0.346872, -38.5682, 101.025, 3.08594, -35.1595, 113.233, -0.346872, -31.7509, 97.119, -0.346872, 25.963, 263.471, 8.77124, 85.0392, 268.794, 8.77124, 65.9735, 360.817, -7.39412, 91.734, 351.726, -7.39412, 91.0425, 364.293, -7.39412, 46.0317, 372.427, -7.39412, 50.1494, 378.366, -7.39412, 57.0666, 381.206, -7.39412, 65.73, 380.515, -7.39412, 74.8207, 376.397, -7.39412, 82.9548, 369.48, -7.39412, 88.894, 351.726, -54.5713, 91.0425, 364.293, -54.5713, 46.0317, 360.817, -54.5713, 91.734, 369.48, -54.5713, 88.894, 376.397, -54.5713, 82.9548, 380.515, -54.5713, 74.8207, 381.206, -54.5713, 65.73, 378.366, -54.5713, 57.0666, 372.427, -54.5713, 50.1494, 124.433, -7.67758, 25.5754, 113.363, -13.1697, 22.4844, 135.504, -13.1697, 28.6664, 136.13, -7.67758, -16.3184, 147.201, -13.1697, -13.2274, 125.06, -13.1697, -19.4093, 96.8763, 8.56651, 91.3152, 39.2181, 8.56651, 75.2168, 111.517, -2.56734, 124.729, 9.27962, -12.0595, 91.1707, -129.723, -12.0595, 52.3604, -118.295, -12.0595, 11.4283, 20.708, -12.0595, 50.2387, 14.9938, -2.56734, 70.7047, 11.9175, -7.67758, 81.7229, 18.0702, -7.67758, 59.6865, -129.723, -12.0595, 52.3604, -124.009, -2.56734, 31.8944, -183.099, -3.19727, 36.9601, -156.822, 7.60588, 21.9131, -145.937, 7.60588, 24.9523, -130.819, -3.19727, 51.5569, -171.503, -3.19727, -4.56972, -119.223, -3.19727, 10.0272, 259.355, 14.5783, 130.703, 122.586, 14.5783, 92.5169, 128.329, 5.71218, 71.9473, 265.098, 5.71218, 110.134, 253.612, 5.71218, 151.273, 116.843, 5.71218, 113.086, 262.576, -54.5713, 172.114, 243.462, -54.5713, 270.45, 269.805, -54.5713, 275.571, 280.325, -54.5713, 221.45, 318.415, -54.5713, 228.854, 327.009, -54.5713, 184.638, 327.009, -19.8862, 184.638, 298.902, -19.8862, 179.175, 298.902, -11.8547, 179.175, 262.576, -11.8547, 172.114, 290.307, -19.8862, 223.39, 294.604, -7.22876, 201.282, 294.604, -1.60278, 201.282, 258.279, -1.60278, 194.221, 290.307, -11.8547, 223.39, 253.982, -11.8547, 216.329, 244.904, -28.3717, 268.661, 258.453, -28.3717, 220.135, 268.081, -24.1985, 221.9, 277.711, -28.3717, 223.664, 268.081, -28.3717, 221.9, 268.585, -28.3717, 273.453, 93.0928, -7.67758, 124.017, 84.5722, -7.67758, 158.706, 234.372, -7.67758, 195.501, 242.892, -7.67758, 160.811, 253.982, -26.7221, 216.329, 243.462, -26.7221, 270.45, 253.982, -19.8862, 216.329, 70.9792, -7.39412, 144.421, 59.4364, -7.39412, 239.767, 239.035, -7.39412, 277.821, 263.633, -7.39412, 189.72, 264.363, -7.39412, 186.615, 264.682, -7.39412, 170.485, 259.599, -7.39412, 192.104, 253.785, -7.39412, 212.925, 236.729, -7.39412, 274.015, 229.975, -7.39412, 272.584, 221.91, -7.39412, 270.875, 63.0148, -7.39412, 237.209, 66.7271, -7.39412, 206.544, 73.7649, -7.39412, 148.409, 78.8482, -7.39412, 126.79, 134.054, -7.39412, 139.771, 268.695, -7.39412, 168.193, 76.0409, -7.39412, 122.893, 71.7091, -7.39412, 141.316, 59.4364, 1.49958, 239.767, 239.035, 1.49958, 277.821, 68.2414, -7.39412, 140.501, 59.4364, -7.39412, 239.767, 55.9197, -7.39412, 242.282, 70.9792, -7.39412, 144.421, 71.7091, -7.39412, 141.316, 153.662, -7.39412, 249.538, 157.641, -7.39412, 229.44, 155.651, 7.9051, 239.489, 171.424, 7.9051, 242.613, 169.434, -7.39412, 252.661, 173.414, -7.39412, 232.564, 236.749, -7.39412, 200.84, 252.879, -7.39412, 204.257, 244.814, 5.49565, 202.549, 238.04, -7.39412, 274.293, 229.975, 5.49565, 272.584, 23.1729, -7.39412, 41.4104, 21.7203, -7.39412, 46.6131, 34.6467, -7.39412, 50.2222, 36.0993, -7.39412, 45.0196, -113.316, -1.11065, -87.5751, -113.316, -7.39412, -87.5751, -119.377, -7.39412, -89.2675, -109.222, -7.39412, -125.64, -103.16, -7.39412, -123.948, 185.92, -24.3902, 43.2873, 185.92, -7.39412, 43.2873, 175.355, -7.39412, 81.1274, 175.355, -24.3902, 81.1274, -3.14039, -7.39412, -95.2933, 135.504, -7.39412, 28.6664, 124.433, -7.39412, 25.5754, 46.121, -1.13427, 9.12599, 46.121, -7.39412, 9.12599, 48.6606, -7.39412, 0.0298691, 48.6606, 9.18069, 0.0298691, 36.6969, 9.18069, 42.8792, 36.6969, -1.13427, 42.8792, 60.6414, -7.39412, 3.37496, 63.6238, -7.39412, 4.20768, 63.6238, 9.18069, 4.20768, -103.589, -7.39412, -122.414, -12.8188, -7.39412, -60.6227, -41.5241, -7.39412, -68.6375, -192.697, -54.5713, 49.8195, -216.83, -54.5713, 43.0817, -216.83, -7.39412, 43.0817, -192.697, -7.39412, 49.8195, 125.06, -7.39412, -19.4093, 136.13, -7.39412, -16.3184, 113.363, -7.39412, 22.4844, -28.8689, -7.39412, 32.4883, -28.8689, -1.13427, 32.4883, 34.6467, -1.13427, 50.2222, -32.5613, -7.39412, -102.583, -63.8449, -7.39412, 9.46273, 55.9619, -7.39412, -140.339, -17.3947, -7.39412, -8.60792, -17.3947, -1.13427, -8.60792, -23.1318, 5.99958, 11.9402, 325.933, -54.5713, 183.421, 272.842, -54.5713, 168.598, 272.842, -7.39412, 168.598, 337.256, -7.39412, 186.583, 337.256, -54.5713, 186.583, 102.747, -7.39412, -112.497, 104.345, -7.39412, -118.219, 351.726, -7.39412, 91.0425, 364.293, -7.39412, 46.0317, 51.66, 9.18069, 47.057, 51.66, -7.39412, 47.057, 36.6969, -7.39412, 42.8792, 135.433, -24.3902, 29.1912, 135.433, -7.39412, 29.1912, 10.6989, -7.39412, -107.629, -12.4851, 0.31848, -60.5296, -12.4851, -7.39412, -60.5296, 290.257, 8.77124, 71.966, 290.257, -7.39412, 71.966, 279.544, -7.39412, 110.333, 279.544, 8.77124, 110.333, 147.201, -7.39412, -13.2274, -101.507, -3.82325, -123.486, -103.16, -3.82325, -123.948, -103.16, -7.67758, -123.948, -101.507, -7.67758, -123.486, -109.222, -3.82325, -125.64, -162.217, -3.82325, -140.437, -162.217, -7.67758, -140.437, -146.904, -7.67758, -136.161, -109.222, -7.67758, -125.64, 258.147, -7.39412, 104.106, 258.147, 8.77124, 104.106, 258.082, 8.77124, 104.341, 258.082, -7.39412, 104.341, 87.0694, -7.39412, -116.875, 6.36653, -7.39412, -110.162, -30.9504, -7.39412, -120.581, -30.9504, -1.97286, -120.581, 6.36653, -1.97286, -110.162, 46.121, -7.39412, 9.12599, -81.0548, -7.67758, 132, -250.59, -7.67758, 84.6645, -81.0548, -7.39412, 132, -112.954, -22.809, 246.248, -111.741, -22.809, 241.906, -245.735, -22.809, 204.495, -282.489, -22.809, 198.913, -52.2164, -54.5201, 171.666, -50.7943, -54.5201, 159.919, -50.7736, -7.34294, 159.922, -52.1957, -7.34294, 171.669, -68.9251, -54.5127, 169.644, -75.7584, -54.5127, 226.088, 31.8614, -54.5606, 239.117, 33.4309, -54.5606, 226.152, -68.9044, -7.33551, 169.646, -168.929, -10.028, -71.1173, -165.644, -10.028, -82.7811, -165.644, -54.5201, -82.7811, -168.929, -54.5201, -71.1173, -168.631, -10.028, -94.5249, -168.631, -54.5201, -94.5249, -335.012, 7.75943, -77.4846, -331.331, 7.75944, -86.639, -331.331, 21.7949, -86.6391, -342.02, 21.7949, -60.058, -342.02, -10.3508, -60.058, -335.012, -10.3508, -77.4846, -341.147, 7.75943, -79.9512, -337.96, 4.59632, -88.9789, -337.96, 7.75944, -88.9789, 194.973, -48.6146, -147.727, 76.7466, -48.6146, -180.736, 79.0303, -48.6146, -188.915, 197.257, -48.6146, -155.906, 197.257, -54.5713, -155.906, 194.973, -54.5713, -147.727, 79.0303, -54.5713, -188.915, 76.7466, -54.5713, -180.736, 186.441, -49.1736, -120.663, 177.673, -49.1736, -123.111, 178.136, -49.1736, -124.768, 175.562, -49.1736, -125.486, 69.1569, -49.1736, -153.409, 71.0553, -49.1736, -160.208, 102.482, -49.1736, -151.433, 153.595, -49.1736, -137.162, 191.181, -49.1736, -126.668, 189.28, -49.1736, -119.87, 189.712, -49.1736, -121.421, 186.874, -49.1736, -122.214, 71.0553, -54.5713, -160.208, 191.181, -54.5713, -126.668, 69.6323, -18.8566, -155.112, 69.6323, -14.1271, -155.112, 69.1569, -14.1271, -153.409, 69.1569, -18.8566, -153.409, -18.8225, -7.39412, -164.018, -18.8225, -1.97286, -164.018, 18.4944, -1.97286, -153.599, 18.4944, -7.39412, -153.599, 189.712, -18.8566, -121.421, 185.646, -54.5713, -106.856, 185.646, -7.39412, -106.856, 189.279, -7.39412, -119.87, 189.279, -14.1271, -119.87, 189.755, -14.1271, -121.573, 189.755, -18.8566, -121.573, 65.5424, -54.5713, -140.463, 65.5424, -7.39412, -140.463, -20.2663, -7.39412, -164.421, -54.9724, -7.39412, -174.111, -54.9724, -54.5713, -174.111, 124.971, -13.7563, -135.904, -81.0548, -22.809, 132, -81.0548, -54.5713, 132, -111.741, -54.5713, 241.906, -196.208, -7.39412, 62.3937, -196.208, -54.5713, 62.3937, -240.889, -7.39412, 49.9185, -282.489, -7.67758, 198.913, -240.889, -22.809, 49.9185, -236.274, -22.809, 51.207, -236.274, -54.5713, 51.207, -242.762, -54.5713, 193.85, -242.762, -22.809, 193.85, -245.735, -54.5713, 204.495, -273.69, -54.5713, 185.214, -273.69, -22.809, 185.214, -112.954, -7.67758, 246.248, 64.2052, -54.5713, 173.841, 64.2259, -7.39413, 173.844, 241.302, -54.5713, 281.561, 241.302, -7.39412, 281.561, 267.599, -7.39412, 187.376, -68.497, 9.64132, 22.9986, -157.191, 9.64132, -1.76532, -154.531, 9.64132, -11.2951, -130.669, 9.64132, -4.6327, -129.631, 9.64132, -8.34833, -64.7988, 9.64132, 9.75321, 196.679, -14.1855, -1.08466, 124.749, -14.1855, -21.1679, 136.675, -14.1855, -63.8845, 139.359, -14.1855, -56.5078, 131.126, -14.1855, -27.0214, 191.066, -14.1855, -10.2859, 199.299, -14.1855, -39.7723, 208.606, -14.1855, -43.8013, 199.299, -0.366556, -39.7723, 139.359, -0.366556, -56.5078, 191.066, -0.366556, -10.2859, 131.126, -0.366556, -27.0214, 136.675, -7.39412, -63.8845, 124.749, -7.39412, -21.1679, 196.679, -7.39412, -1.08466, 208.606, -7.39412, -43.8013, -232.862, -54.5201, -16.1647, -381.084, -54.5201, -75.7661, -381.084, -10.3508, -75.7661, -89.6785, -7.39412, -183.802, -87.1968, -7.39412, -192.69, -52.4907, -7.39412, -183, 340.315, -7.39412, -57.3769, 304.958, -7.39412, -73.5435, 308.063, -7.39412, -84.6653, 345.05, -7.39412, -74.3384, 274.207, -7.39412, 149.226, 304.368, -7.39412, 157.647, 178.136, -18.8566, -124.768, 177.673, -18.8566, -123.111, 186.441, -18.8566, -120.663, 186.874, -18.8566, -122.214, 175.099, -18.8566, -123.829, 175.562, -18.8566, -125.486, 189.712, -49.1736, -121.421, 175.562, -49.1736, -125.486, 177.673, -49.1736, -123.111, 178.136, -49.1736, -124.768, 380.838, -54.5713, 10.8282, 374.608, -54.5713, 9.08871, 374.608, -7.39412, 9.08871, 380.838, -7.39412, 10.8282, 304.958, -54.5713, -73.5435, 340.315, -54.5713, -57.3769, 395.573, -54.5713, -41.9483, 395.573, -7.39412, -41.9483, 69.1569, -7.39412, -153.409, 342.999, -54.5713, 122.298, 342.999, -7.39412, 122.298, -151.41, -54.5713, -191.225, -92.2201, -54.5713, -174.699, -92.2201, -7.39412, -174.699, -151.41, -7.39412, -191.225, -52.4907, -54.5713, -183, 308.063, -54.5713, -84.6653, 345.05, -54.5713, -74.3384, -87.1968, -54.5713, -192.69, 354.322, -7.39412, 125.46, 354.322, -54.5713, 125.46, -149.084, -3.82325, -187.472, -149.084, -7.67758, -187.472, -88.3745, -7.67758, -170.522, -152.266, 0.733321, -176.076, -155.65, 2.28305, -163.955, -159.035, 0.733321, -151.834, -31.4616, -4.01962, -166.013, -42.1557, -2.77995, -168.999, -52.8498, -4.01962, -171.984, -63.0173, -7.67758, -174.823, -21.2941, -7.67758, -163.174, -64.7416, -4.01962, -129.393, -54.0474, -2.77995, -126.407, -43.3533, -4.01962, -123.421, -33.1859, -7.67758, -120.582, -74.909, -7.67758, -132.232, -68.215, -1.54766, -164.521, -84.0238, -1.54766, -168.935, -79.3749, -1.54766, -185.586, -63.5661, -1.54766, -181.172, -15.7919, -7.39412, 145.553, -56.0665, -7.39412, 134.308, -56.0665, 2.10982, 134.308, -15.7919, 2.10982, 145.553, -13.4142, 2.10982, 137.037, -13.4142, -7.39412, 137.037, 68.2414, -54.5713, 140.501, 24.1104, -54.5713, 128.179, 24.1104, -7.39412, 128.179, 17.6785, -54.5713, 151.216, -12.881, -54.5713, 142.683, -12.881, -7.39412, 142.683, 17.6785, -7.39412, 151.216, -15.044, -54.5713, 150.43, -15.044, -7.39412, 150.43, 16.8647, -7.39412, 145.491, 16.8647, 2.10982, 145.491, 29.0872, -7.39412, 101.715, 29.8863, 2.10982, 98.8525, 29.8863, -7.39412, 98.8525, -40.6672, -7.39412, 79.1536, -40.6672, 2.10982, 79.1536, 8.78016, -7.39412, 92.9596, 57.54, -7.39413, 229.071, 55.9197, -54.5713, 242.282, 57.5193, -54.5713, 229.069, -64.7988, -7.39412, 9.75321, -129.631, -7.39412, -8.34833, -134.872, -7.39412, -10.3685, -134.872, -1.11065, -10.3685, -63.8449, -1.11065, 9.46273, -157.191, -7.39412, -1.76532, -68.497, -7.39412, 22.9986, 77.9629, -14.9965, -51.3042, 98.2267, -0.346872, 29.3696, 69.347, -0.346872, 21.3062, 87.0152, -0.346872, -41.9743, 115.895, -0.346872, -33.911, 181.083, -7.39412, -121.455, 158.032, 1.14919, -112.198, 143.111, -7.39412, -132.057, 134.982, -7.39412, -102.942, 172.954, -7.39412, -92.3397, 179.145, 3.61375, 40.8512, 135.504, 3.61375, 28.6664, 141.534, 13.0565, 7.07108, 289.899, 13.0565, 48.4954, 283.869, 3.61375, 70.0907, 240.131, 3.61375, 57.8789, 147.563, 3.61375, -14.5242, 191.204, 3.61375, -2.33942, 252.19, 3.61375, 14.6883, 295.928, 3.61375, 26.9, 233.476, 13.134, -35.3873, 256.617, 3.53108, -28.9264, 247.144, 3.53108, 5.00187, 230.827, 3.53108, 63.4439, 222.153, 3.53108, 94.5101, 199.012, 13.134, 88.0492, 175.872, 3.53108, 81.5882, 184.546, 3.53108, 50.522, 200.863, 3.53108, -7.92006, 210.336, 3.53108, -41.8483, 40.3838, 5.99958, 29.6741, -118.295, -7.39412, 11.4284, 20.708, -7.39412, 50.2387, 9.27962, -7.39412, 91.1707, -129.723, -7.39412, 52.3604, -32.5613, -1.11065, -102.583, -3.14252, 1.10588, -95.2939, -31.844, 1.10588, -103.307, -29.772, 1.10588, -110.728, -1.07057, 1.10588, -102.715, -14.7593, 0.31848, -52.3844, -43.7982, 0.31848, -60.4922, -35.0406, -7.39412, 27.4285, -62.2139, -7.39412, 19.8416, -52.2406, -7.39412, -15.8788, -25.0673, -7.39412, -8.29191, -38.6539, 0.586893, -12.0854, -103.011, 5.70824, 188.913, -103.011, -7.67758, 188.913, -109.48, -7.67758, 212.082, -109.48, 5.70824, 212.082, -166.735, -7.67758, 196.096, -166.735, 5.70824, 196.096, -160.267, -7.67758, 172.927, -160.267, 5.70824, 172.927, 277.711, -26.7221, 223.664, 268.585, -26.7221, 273.453, 69.7208, 9.91297, 181.815, 73.7649, 9.91297, 148.409, 95.0982, 9.91297, 153.425, 91.2936, 9.91297, 187.286, -29.772, -7.39412, -110.728, -1.07057, -7.39412, -102.715, -14.7593, -7.39412, -52.3844, -43.7982, -7.39412, -60.4922, -119.223, -7.39412, 10.0272, -130.819, -7.39412, 51.5569, -183.099, -7.39412, 36.9601, -171.503, -7.39412, -4.56972, -31.844, -4.20514, -103.307, -209.472, -10.028, -71.6346, -212.459, -10.028, -83.3784, -209.174, -10.028, -95.0421, -200.497, -10.028, -103.501, -188.753, -10.028, -106.487, -177.089, -10.028, -103.202, -172.511, -10.028, -79.7503, -185.68, -10.028, -100.264, -206.119, -10.028, -87.1427, -192.949, -10.028, -66.6292, -177.606, -10.028, -62.6589, -189.35, -10.028, -59.6722, -201.014, -10.028, -62.9575, -101.281, -4.03585, -73.2754, -109.899, -4.03585, -42.4088, -62.0749, -4.03585, -29.0559, -53.4568, -4.03585, -59.9226, -112.316, -4.03585, -37.4855, -90.6991, 2.91297, -53.6844, -71.0424, 2.91297, -48.1962, 124.868, -24.3902, 67.0314, 242.892, 6.13344, 160.811, 234.372, 6.13344, 195.501, 93.0928, 6.13344, 124.017, 84.5722, 6.13344, 158.706, 70.9792, 1.49958, 144.421, 76.0409, 1.49958, 122.893, 78.8482, 1.49958, 126.79, 73.7649, 1.49958, 148.409, 63.0148, 1.49958, 237.209, 236.729, 1.49958, 274.015, 264.682, 1.49958, 170.485, 268.695, 1.49958, 168.193, 66.7271, -7.39412, 206.544, 63.0148, -7.39412, 237.209, 73.7649, -7.39412, 148.409, 118.8, 2.96415, 219.559, 66.7271, 2.96415, 206.544, 69.7208, 2.96415, 181.815, 91.2936, 2.96415, 187.286, 95.0982, 2.96415, 153.425, 128.971, 2.96415, 161.39, 73.7649, -7.39412, 148.409, 128.971, -7.39412, 161.39, 264.682, -7.39412, 170.485, 134.054, -7.39412, 139.771, 118.8, -7.39412, 219.559, 242.411, -7.39412, 253.663, 218.869, -7.39412, 241.898, 180.322, -7.39412, 234.126, 175.833, -7.39412, 256.386, 175.416, -7.39412, 228.549, 219.027, -7.39412, 237.58, 222.352, -7.39412, 221.523, 178.742, -7.39412, 212.492, 173.414, -7.39412, 232.564, 214.38, -7.39412, 264.159, 229.975, 1.49958, 272.584, 227.475, 1.49958, 272.055, -0.308831, -7.39412, -52.7448, 12.0137, -7.39412, -96.879, 80.7321, -7.39412, -77.6925, 78.3554, -1.52797, -85.6647, 78.3554, -7.39412, -85.6647, 87.0694, -1.52797, -116.875, 139.667, -1.52797, -94.5145, 139.667, -7.39412, -94.5145, 135.693, -7.39412, -80.2794, 135.693, -1.52797, -80.2794, 130.668, -1.52797, -81.6823, 130.668, -7.39412, -81.6823, 126.024, -7.39412, -65.0469, 126.024, -1.52797, -65.0469, 125.4, -7.39412, -106.173, 129.507, -7.39412, -105.026, 129.507, -1.52797, -105.026, 125.4, -1.52797, -106.173, 81.3181, -7.39412, -63.321, 77.9629, -7.39412, -51.3042, 126.998, -1.52797, -111.895, 126.998, -7.39412, -111.895, 71.1018, -7.39412, -32.8066, 83.4243, -7.39412, -76.9408, 82.6251, -7.39412, -84.4725, 82.6251, -1.52797, -84.4725, 80.7321, -1.52797, -77.6924, 134.643, -7.39412, -95.9174, 134.643, -1.52797, -95.9174, 104.345, -1.52797, -118.219, 122.151, -7.39412, -38.9667, 102.747, -1.52797, -112.497, 128.861, -7.39412, -63.0003, 125.506, -7.39412, -50.9835, 124.868, -7.39412, 67.0314, 84.6732, -7.39412, -75.3378, 39.5676, -7.39412, -41.6111, -192.949, -4.53979, -66.6292, -206.119, -4.53979, -87.1427, -185.68, -4.53979, -100.264, -172.511, -4.53979, -79.7503, -212.715, -54.5201, -81.0231, -232.862, 21.7949, -16.1647, -212.715, 21.7949, -81.0231, -212.715, -10.3508, -81.0231, 14.9938, -2.56734, 70.7047, 23.1729, -2.56734, 41.4104, 7.98105, -2.56734, 95.8216, 126.709, -2.56734, 70.3183, -29.3017, -0.307505, -22.7607, -42.0919, -0.307505, -26.7061, -30.9343, 9.54289, -40.1725, -17.4678, -0.307505, -29.0149, -32.5668, -0.307505, -57.5843, -44.4007, -0.307505, -51.3301, -48.3461, -0.307505, -38.5399, 28.8553, 0.314543, -3.24384, -11.0211, 0.314543, -14.3776, -0.308831, 0.314543, -52.7448, 39.5676, 0.314543, -41.6111, 60.6414, -0.3705, 3.37496, 36.6799, -0.3705, -3.31522, 45.8591, -0.3705, -36.1917, 69.8207, -0.3705, -29.5015, 312.187, 6.09013, 129.643, 312.187, -7.39412, 129.643, 304.368, 6.09013, 157.647, 282.026, -7.39412, 121.222, 282.026, 6.09013, 121.222, 274.207, 6.09013, 149.226, 263.471, -50.3981, 85.0392, 258.147, -50.3981, 104.106, 222.374, -50.3981, 94.1176, 233.02, -50.3981, 55.9854, 268.794, -50.3981, 65.9735, 252.19, -7.39412, 14.6883, 252.19, 3.61375, 14.6883, 252.19, 13.6571, 14.6883, 247.144, 13.6571, 5.00187, 247.144, 3.53108, 5.00187, 247.144, -7.39412, 5.00187, 230.827, -7.39412, 63.4439, 184.546, -7.39412, 50.522, 184.546, 3.53108, 50.522, 184.546, 13.6571, 50.522, 230.827, 13.6571, 63.4439, 230.827, 3.53108, 63.4439, 222.374, -7.39412, 94.1176, 268.794, -7.39412, 65.9735, 179.145, 13.6571, 40.8512, 179.145, 3.61375, 40.8512, 179.145, -7.39412, 40.8512, 191.239, -7.39412, -2.46559, 191.239, 13.6571, -2.46559, 240.151, -7.39412, 57.8074, 240.151, 13.6571, 57.8074, 233.02, -7.39412, 55.9854, 200.863, 3.53108, -7.92006, 200.863, 13.6571, -7.92006, 200.863, -7.39412, -7.92006, 263.471, 30.7555, 85.0392, 268.794, 30.7555, 65.9735, 287.859, 30.7555, 71.2968, 287.859, 8.77124, 71.2968, 282.536, 8.77124, 90.3624, 282.536, 30.7555, 90.3624, -237.8, -7.67758, 154, -237.8, 9.65706, 154, -244.128, 9.65706, 176.665, -244.128, -7.67758, 176.665, -162.719, -7.67758, 174.963, -162.719, 9.65706, 174.963, -169.047, -7.67758, 197.628, -169.047, 9.65706, 197.628, 256.617, -7.39412, -28.9264, 222.153, -7.39412, 94.5101, 210.336, -7.39412, -41.8483, 175.872, -7.39412, 81.5882, 283.869, -7.39412, 70.0907, 147.563, -7.39412, -14.5242, 295.928, -7.39412, 26.9, 299.21, 21.039, 107.669, 283.113, 10.472, 103.175, 314.135, 10.472, -7.9339, 330.232, 21.039, -3.43952, 315.307, 10.472, 112.164, 346.329, 10.472, 1.0548, 124.433, -7.67758, 25.5754, 136.13, -7.67758, -16.3184, 218.869, -0.405931, 241.898, 180.322, -0.405931, 234.126, 214.38, -0.405931, 264.159, 216.624, 9.32635, 253.028, 175.833, -0.405931, 256.386, 141.583, -10.7081, 249.705, 141.583, -3.71996, 249.705, 143.828, 6.01233, 238.575, 146.072, -3.71996, 227.444, 146.072, -10.7081, 227.444, 103.036, -10.7081, 241.933, 103.036, -3.71996, 241.933, 107.525, -3.71996, 219.672, 107.525, -10.7081, 219.672, 220.689, -0.163023, 229.552, 177.079, -0.163023, 220.521, 224.043, -7.30574, 212.357, 225.706, -0.0746374, 204.329, 227.369, -7.30574, 196.3, 180.433, -7.30574, 203.326, 183.758, -7.30574, 187.269, 182.096, -0.0746374, 195.297, 171.761, -7.30574, 201.585, 173.424, -0.0746374, 193.557, 175.087, -7.30574, 185.528, 128.151, -7.30574, 192.554, 131.476, -7.30574, 176.497, 129.814, -0.0746374, 184.526, 126.709, -7.39412, 70.3183, 111.517, -7.39412, 124.729, 7.98105, -7.39412, 95.8216, -154.531, -7.39412, -11.2951, 102.227, -7.39412, 63.4828, 102.227, -4.75632, 63.4828, 122.761, -4.75632, 69.2159, 122.761, -7.39412, 69.2159, 112.594, -4.75632, 26.3517, 112.594, -7.39412, 26.3517, 133.128, -7.39412, 32.0848, 133.128, -4.75632, 32.0848, 20.708, -12.0595, 50.2386, 9.27962, -12.0595, 91.1707, 153.662, -7.39412, 249.538, 178.077, 9.32635, 245.256, 105.281, 6.01233, 230.802, 128.329, -7.39412, 71.9473, 265.098, -7.39412, 110.134, 116.843, -7.39412, 113.086, 253.612, -7.39412, 151.273, 318.415, -19.8862, 228.854, 322.712, -7.22876, 206.746, 269.805, -26.7221, 275.571, 280.325, -26.7221, 221.45, 256.744, -24.1985, 271.057, 263.905, -26.7221, 272.506, 249.584, -26.7221, 269.608, 268.081, -24.1985, 221.9, 273.904, -26.7221, 222.967, 262.259, -26.7221, 220.832, 314.135, -7.39412, -7.9339, 283.113, -7.39412, 103.175, 346.329, -7.39412, 1.0548, 315.307, -7.39412, 112.164, 115.895, -7.39412, -33.911, 98.2267, -7.39412, 29.3696, 45.8591, -7.39412, -36.1917, 69.8207, -7.39412, -29.5015, 39.5676, -7.67758, -41.6111, 69.347, -7.39412, 21.3062, 28.8553, -7.39412, -3.24384, -11.0211, -7.39412, -14.3776, 36.6799, -7.39412, -3.31522, 87.0152, -7.39412, -41.9743, 36.6969, -1.13427, 42.8792, -169.644, -7.39412, -125.919, -169.644, -54.5713, -125.919, -199.134, -54.5713, -20.2975, -199.134, -7.39412, -20.2975, -153.854, -54.5713, -121.511, -153.854, -7.39412, -121.511, -183.344, -7.39412, -15.8889, -183.344, -54.5713, -15.8889, -17.4678, -7.39412, -29.0149, -29.3017, -7.39412, -22.7607, -13.5225, -7.39412, -41.8051, -48.3461, -7.39412, -38.5399, -42.0919, -7.39412, -26.7061, -44.4007, -7.39412, -51.3301, -19.7767, -7.39412, -53.6389, -32.5668, -7.39412, -57.5843, 32.9208, -7.38317, 226.091, 31.3513, -7.38317, 239.055, -75.7377, -7.33551, 226.091, -177.089, -54.5201, -103.202, -188.753, -54.5201, -106.487, -200.497, -54.5201, -103.501, -209.472, -54.5201, -71.6346, -201.014, -54.5201, -62.9575, -189.35, -54.5201, -59.6722, -177.606, -54.5201, -62.6589, -209.174, -54.5201, -95.0421, -212.459, -54.5201, -83.3784, -266.879, -54.5201, -316.359, -266.879, -10.3508, -316.359, -331.282, -10.3508, -221.936, -331.282, -54.5201, -221.936, -184.084, -54.5201, -216.114, -174.946, -54.5201, -202.606, -174.946, -10.3508, -202.606, -184.084, -10.3508, -216.114, -190.882, -10.3508, -258.303, -190.882, -54.5201, -258.303, -205.514, -10.3508, -281.507, -205.514, -54.5201, -281.507, -293.587, 1.43266, -71.4618, -280.348, 1.43266, -81.0231, -280.348, 21.7949, -81.0231, -293.587, 21.7949, -71.4618, -260.972, 1.43266, -74.8159, -260.972, 21.7949, -74.8159, -244.52, 1.43266, -91.3196, -244.52, 21.7949, -91.3196, -231.658, -10.3508, -87.1559, -238.986, 1.43266, -89.5281, -231.658, -4.45908, -87.1558, -331.331, 1.43266, -86.6391, -322.12, 1.43266, -82.9353, -187.707, -10.3508, -207.483, -194.936, -10.3508, -210.124, -190.448, -10.3508, -222.413, -195.182, -10.3508, -250.968, -205.716, -10.3508, -268.811, -251.307, -10.3508, -282.087, -268.073, -10.3508, -286.969, -279.124, -10.3508, -290.187, -324.606, -10.3508, -218.655, -364.724, -10.3508, -89.4319, -194.936, 1.43266, -210.124, -187.707, -4.45908, -207.483, -321.568, 1.43267, -84.4885, -251.307, 1.43267, -282.087, -205.716, 1.43266, -268.811, -195.182, 1.43266, -250.968, -190.448, 1.43266, -222.413, -279.124, -2.44629, -290.187, -268.073, 1.43267, -286.969, -273.598, 1.43266, -288.578, -341.147, 1.43266, -79.9512, -359.622, 1.43266, -87.3803, -318.61, 1.43266, -216.754, -364.724, -2.44629, -89.4319, -268.073, 4.59619, -286.969, -324.606, -2.44629, -218.655, -107.891, -6.70908, 186.417, -103.953, -3.69333, 172.313, -100.015, -6.70908, 158.209, -168.904, -6.70908, 169.382, -164.966, -3.69333, 155.278, -161.028, -6.70908, 141.174, -99.3777, -6.70908, 153.198, -95.4398, -3.69336, 139.094, -91.5018, -6.70908, 124.989, -160.391, -6.70908, 136.163, -156.453, -3.69336, 122.058, -152.515, -6.70908, 107.954, -90.9305, -6.70908, 119.911, -86.9925, -3.69333, 105.807, -83.0545, -6.70908, 91.7029, -151.943, -6.70908, 102.876, -148.005, -3.69333, 88.772, -144.067, -6.70908, 74.6678, -87.237, -6.70908, 126.482, -73.047, -2.72482, 130.099, -58.857, -6.70908, 133.716, -74.0939, -6.70908, 74.9197, -59.904, -2.72482, 78.5367, -45.714, -6.70908, 82.1537, -200.307, -6.70908, 159.832, -186.117, -3.69333, 163.449, -171.927, -6.70908, 167.066, -176.837, -6.70908, 67.7563, -162.647, -3.69333, 71.3733, -148.457, -6.70908, 74.9902, -187.752, -6.70908, 95.1622, -183.814, -3.69333, 81.0579, -179.876, -6.70908, 66.9536, -248.765, -6.70908, 78.1271, -244.827, -3.69333, 64.0228, -240.889, -6.70908, 49.9185, -197.015, -6.70908, 128.339, -193.077, -3.69333, 114.235, -189.139, -6.70908, 100.131, -258.028, -6.70908, 111.304, -254.09, -3.69333, 97.2001, -250.152, -6.70908, 83.0958, -206.47, -6.70908, 162.201, -202.532, -3.69333, 148.097, -198.594, -6.70908, 133.992, -267.483, -6.70908, 145.166, -263.545, -3.69333, 131.062, -259.607, -6.70908, 116.957, -116.318, 3.39327, -23.1549, -61.5283, 3.39327, -7.85748, -281.828, 4.54071, -72.801, -289.821, 7.70409, -75.6222, -219.95, 7.70409, -272.841, -211.567, 4.54071, -270.399, -211.567, 1.37732, -270.399, -228.333, 4.54084, -275.282, -228.333, 1.37732, -275.282, -281.828, 1.37732, -72.801, -290.228, 7.70409, -74.4701, -298.22, 4.54097, -77.2914, -291.591, 7.70409, -74.9515, -298.22, 7.70409, -77.2914, -297.814, 4.54071, -78.4435, -298.22, 1.37732, -77.2914, -321.568, 4.59607, -84.4885, -329.561, 7.75945, -87.3097, -259.69, 7.75945, -284.528, -251.307, 4.59607, -282.087, -329.967, 7.75945, -86.1576, -337.553, 4.59607, -90.1309, -337.96, 4.59632, -88.9789, -268.073, 4.59619, -286.969, 0.714459, -18.4335, -53.8337, 6.50842, -5.40594, -74.5853, 76.4894, -5.40594, -55.0462, 70.6954, -18.4335, -34.2946, 82.2833, -18.4335, -75.7978, 12.3024, -18.4335, -95.3368, -130.669, -7.39412, -4.6327, 258.453, -26.7221, 220.135, 244.904, -26.7221, 268.661, -126.079, -7.39412, -129.511, -128.692, -7.39412, -130.231, 239.96, -7.39412, 57.923, 240.064, -7.39412, 57.8601, 198.16, -7.39412, -6.38776, 191.402, -7.39412, -2.55792, 191.204, -7.39412, -2.33942, 179.505, -7.39412, 41.4963, 184.115, -7.39412, 49.751, 230.961, -7.39412, 63.3631, 268.695, -7.39412, 168.193, -117.559, -7.39412, -88.7597, -32.849, -7.39412, -57.4352, -24.7789, -7.39412, -55.1819, -109.421, -7.39412, -124.927, -68.8726, -12.2285, 218.848, -67.0592, -4.80014, 204.079, -65.2461, -12.2301, 189.312, -17.2544, -12.2302, 195.205, -20.8809, -12.2286, 224.74, -19.0676, -4.80029, 209.972, 246.377, 22.3237, 24.8033, 215.234, 36.0414, 28.2272, 211.81, 22.3237, -2.91591, 195.634, 22.3237, 52.6697, 184.091, 0.0940504, 31.6511, 184.091, 22.3237, 31.6511, 195.634, 0.0940523, 52.6697, 246.377, 0.0940514, 24.8033, 234.835, 22.3237, 3.78464, 234.835, 0.0940552, 3.78465, 218.658, 0.0940552, 59.3703, 218.658, 22.3237, 59.3703, 190.792, 0.0940514, 8.62672, 211.81, 0.0940523, -2.91589, 190.792, 22.3237, 8.62671, 239.677, 0.0940495, 47.8277, 184.091, 22.3237, 31.6511, 211.81, 22.3237, -2.91591, 218.658, 22.3237, 59.3703, 239.677, 22.3237, 47.8277, 246.377, 22.3237, 24.8033, -97.3609, -4.03586, -87.3163, -93.3597, 3.39328, -101.647, -89.3585, -4.03586, -115.978, -34.5692, -4.03586, -100.68, -42.5715, -4.03586, -72.0189, -38.5703, 3.39328, -86.3495, 322.873, 1.43845, -33.756, 329.758, -7.39413, -58.4162, 315.988, -7.39413, -9.09586, 371.095, -7.39413, 6.29048, 384.866, -7.39413, -43.0299, 365.37, 1.43845, -21.8906, 276.433, -0.59981, -33.0525, 257.464, -7.3941, -38.3488, 295.403, -7.3941, -27.7561, 307.238, -7.3941, -70.1466, 269.3, -7.3941, -80.7393, 285.561, -0.59981, -65.7428, 232.993, -0.599841, -45.5285, 214.024, -7.39413, -50.8249, 251.962, -7.39413, -40.2322, 263.798, -7.39413, -82.6227, 225.859, -7.39413, -93.2154, 242.12, -0.599841, -78.2189, 191.123, -0.599842, -57.6542, 172.154, -7.39413, -62.9505, 210.092, -7.39413, -52.3578, 221.928, -7.39413, -94.7484, 183.989, -7.39413, -105.341, 200.25, -0.599842, -90.3445, 98.2118, -21.8075, -164.501, 96.9801, -21.8075, -160.089, 92.5684, -21.8075, -161.321, 93.8001, -21.8075, -165.733, 93.2364, -24.2642, -161.697, 96.6037, -24.2642, -160.757, 94.1765, -24.2642, -165.065, 97.5438, -24.2642, -164.124, 93.2364, -54.5713, -161.697, 96.6037, -54.5713, -160.757, 94.1765, -54.5713, -165.065, 97.5438, -54.5713, -164.124, 101.994, -21.8075, -178.048, 100.762, -21.8075, -173.636, 96.3508, -21.8075, -174.868, 97.5826, -21.8075, -179.279, 97.0188, -24.2642, -175.244, 100.386, -24.2642, -174.304, 97.959, -24.2642, -178.611, 101.326, -24.2642, -177.671, 97.0188, -54.5713, -175.244, 100.386, -54.5713, -174.304, 97.959, -54.5713, -178.611, 101.326, -54.5713, -177.671, 93.8851, -21.8075, -149.004, 92.6533, -21.8075, -144.592, 88.2417, -21.8075, -145.824, 89.4734, -21.8075, -150.236, 88.9097, -24.2642, -146.201, 92.2769, -24.2642, -145.26, 89.8498, -24.2642, -149.568, 93.2171, -24.2642, -148.628, 88.9097, -54.5713, -146.201, 92.2769, -54.5713, -145.26, 89.8498, -54.5713, -149.568, 93.2171, -54.5713, -148.628, 110.267, -21.8075, -175.464, 109.036, -21.8075, -171.052, 104.624, -21.8075, -172.284, 105.856, -21.8075, -176.696, 105.292, -24.2642, -172.66, 108.659, -24.2642, -171.72, 106.232, -24.2642, -176.028, 109.599, -24.2642, -175.088, 105.292, -54.5713, -172.66, 108.659, -54.5713, -171.72, 106.232, -54.5713, -176.028, 109.599, -54.5713, -175.088, 130.833, -21.8075, -169.996, 129.601, -21.8075, -165.584, 125.19, -21.8075, -166.816, 126.421, -21.8075, -171.227, 125.858, -24.2642, -167.192, 129.225, -24.2642, -166.252, 126.798, -24.2642, -170.559, 130.165, -24.2642, -169.619, 125.858, -54.5713, -167.192, 129.225, -54.5713, -166.252, 126.798, -54.5713, -170.559, 130.165, -54.5713, -169.619, 170.504, -21.8075, -158.919, 169.272, -21.8075, -154.508, 164.861, -21.8075, -155.739, 166.093, -21.8075, -160.151, 165.529, -24.2642, -156.116, 168.896, -24.2642, -155.176, 166.469, -24.2642, -159.483, 169.836, -24.2642, -158.543, 165.529, -54.5713, -156.116, 168.896, -54.5713, -155.176, 166.469, -54.5713, -159.483, 169.836, -54.5713, -158.543, 166.702, -21.8075, -145.319, 165.47, -21.8075, -140.907, 161.058, -21.8075, -142.139, 162.29, -21.8075, -146.55, 161.726, -24.2642, -142.515, 165.093, -24.2642, -141.575, 162.666, -24.2642, -145.882, 166.033, -24.2642, -144.942, 161.726, -54.5713, -142.515, 165.093, -54.5713, -141.575, 162.666, -54.5713, -145.882, 166.033, -54.5713, -144.942, 163.037, -21.8075, -129.734, 161.806, -21.8075, -125.323, 157.394, -21.8075, -126.554, 158.626, -21.8075, -130.966, 158.062, -24.2642, -126.931, 161.429, -24.2642, -125.991, 159.002, -24.2642, -130.298, 162.369, -24.2642, -129.358, 158.062, -54.5713, -126.931, 161.429, -54.5713, -125.991, 159.002, -54.5713, -130.298, 162.369, -54.5713, -129.358, 162.75, -21.8075, -161.084, 161.518, -21.8075, -156.673, 157.106, -21.8075, -157.905, 158.338, -21.8075, -162.316, 157.774, -24.2642, -158.281, 161.142, -24.2642, -157.341, 158.714, -24.2642, -161.648, 162.082, -24.2642, -160.708, 157.774, -54.5713, -158.281, 161.142, -54.5713, -157.341, 158.714, -54.5713, -161.648, 162.082, -54.5713, -160.708, 152.114, -21.8075, -164.054, 150.882, -21.8075, -159.642, 146.47, -21.8075, -160.874, 147.702, -21.8075, -165.286, 147.138, -24.2642, -161.251, 150.506, -24.2642, -160.31, 148.079, -24.2642, -164.618, 151.446, -24.2642, -163.678, 147.138, -54.5713, -161.251, 150.506, -54.5713, -160.31, 148.079, -54.5713, -164.618, 151.446, -54.5713, -163.678, 141.673, -21.8075, -166.969, 140.442, -21.8075, -162.557, 136.03, -21.8075, -163.789, 137.262, -21.8075, -168.201, 136.698, -24.2642, -164.166, 140.065, -24.2642, -163.225, 137.638, -24.2642, -167.533, 141.005, -24.2642, -166.593, 136.698, -54.5713, -164.166, 140.065, -54.5713, -163.225, 137.638, -54.5713, -167.533, 141.005, -54.5713, -166.593, 120.722, -21.8075, -172.663, 119.49, -21.8075, -168.252, 115.079, -21.8075, -169.484, 116.31, -21.8075, -173.895, 115.747, -24.2642, -169.86, 119.114, -24.2642, -168.92, 116.687, -24.2642, -173.227, 120.054, -24.2642, -172.287, 115.747, -54.5713, -169.86, 119.114, -54.5713, -168.92, 116.687, -54.5713, -173.227, 120.054, -54.5713, -172.287, 31.1263, -13.0582, -168.962, 29.8945, -13.0582, -164.551, 25.4829, -13.0582, -165.783, 26.7146, -13.0582, -170.194, 26.1509, -15.5149, -166.159, 29.5181, -15.5149, -165.219, 27.091, -15.5149, -169.526, 30.4583, -15.5149, -168.586, 26.1509, -45.822, -166.159, 29.5181, -45.822, -165.219, 27.091, -45.822, -169.526, 30.4583, -45.822, -168.586, 18.9559, -13.2779, -171.713, 17.7242, -13.2779, -167.301, 13.3125, -13.2779, -168.533, 14.5443, -13.2779, -172.945, 13.9805, -15.7346, -168.909, 17.3478, -15.7346, -167.969, 14.9207, -15.7346, -172.277, 18.2879, -15.7346, -171.337, 13.9805, -46.0417, -168.909, 17.3478, -46.0417, -167.969, 14.9207, -46.0417, -172.277, 18.2879, -46.0417, -171.337, 1.93955, -13.2327, -177.079, 0.707782, -13.2327, -172.668, -3.7039, -13.2327, -173.9, -2.47214, -13.2327, -178.311, -3.03589, -15.6894, -174.276, 0.331385, -15.6894, -173.336, -2.09573, -15.6894, -177.643, 1.27155, -15.6894, -176.703, -3.0359, -45.9965, -174.276, 0.331385, -45.9965, -173.336, -2.09573, -45.9965, -177.643, 1.27154, -45.9965, -176.703, -10.6072, -12.96, -180.794, -11.839, -12.96, -176.382, -16.2507, -12.96, -177.614, -15.0189, -12.96, -182.026, -15.5827, -15.4167, -177.991, -12.2154, -15.4167, -177.05, -14.6425, -15.4167, -181.358, -11.2752, -15.4167, -180.418, -15.5827, -45.7238, -177.991, -12.2154, -45.7238, -177.05, -14.6425, -45.7238, -181.358, -11.2752, -45.7238, -180.418, 274.673, -13.0582, -100.778, 273.441, -13.0582, -96.3665, 269.029, -13.0582, -97.5983, 270.261, -13.0582, -102.01, 269.697, -15.5149, -97.9747, 273.064, -15.5149, -97.0345, 270.637, -15.5149, -101.342, 274.005, -15.5149, -100.402, 269.697, -45.822, -97.9747, 273.064, -45.822, -97.0346, 270.637, -45.822, -101.342, 274.005, -45.822, -100.402, 262.502, -13.2779, -103.529, 261.27, -13.2779, -99.1171, 256.859, -13.2779, -100.349, 258.091, -13.2779, -104.76, 257.527, -15.7346, -100.725, 260.894, -15.7346, -99.785, 258.467, -15.7346, -104.092, 261.834, -15.7346, -103.152, 257.527, -46.0417, -100.725, 260.894, -46.0417, -99.7851, 258.467, -46.0417, -104.093, 261.834, -46.0417, -103.152, 245.486, -13.2327, -108.895, 244.254, -13.2327, -104.483, 239.842, -13.2327, -105.715, 241.074, -13.2327, -110.127, 240.51, -15.6894, -106.092, 243.878, -15.6894, -105.151, 241.451, -15.6894, -109.459, 244.818, -15.6894, -108.519, 240.51, -45.9965, -106.092, 243.878, -45.9965, -105.151, 241.451, -45.9965, -109.459, 244.818, -45.9965, -108.519, 232.939, -12.96, -112.61, 231.707, -12.96, -108.198, 227.296, -12.96, -109.43, 228.527, -12.96, -113.842, 227.964, -15.4167, -109.806, 231.331, -15.4167, -108.866, 228.904, -15.4167, -113.174, 232.271, -15.4167, -112.233, 227.964, -45.7238, -109.806, 231.331, -45.7238, -108.866, 228.904, -45.7238, -113.174, 232.271, -45.7238, -112.233, 228.295, -46.0417, -114.2, 275.001, -46.0417, -101.159, 275.001, -12.8415, -101.159, 228.295, -12.8415, -114.2, 223.328, -54.5713, -96.4078, 270.033, -12.8415, -83.3673, 270.033, -7.67759, -83.3673, 223.328, -7.67759, -96.4078, 223.328, -12.8415, -96.4078, 275.001, -7.67759, -101.159, 275.001, -54.5713, -101.159, 270.033, -54.5713, -83.3673, 228.295, -54.5713, -114.2, 228.295, -7.67759, -114.2, 270.033, -46.0417, -83.3673, 223.328, -46.0417, -96.4078, -15.251, -46.0417, -182.384, 31.4548, -46.0417, -169.343, 31.4548, -12.8415, -169.343, -15.251, -12.8415, -182.384, -20.2186, -54.5713, -164.592, 26.4872, -12.8415, -151.551, 26.4872, -7.67759, -151.551, -20.2186, -7.67759, -164.592, -15.251, -7.67759, -182.384, -20.2186, -12.8415, -164.592, 31.4548, -7.67759, -169.343, 31.4548, -54.5713, -169.343, 26.4872, -54.5713, -151.551, -15.251, -54.5713, -182.384, 26.4872, -46.0417, -151.551, -20.2186, -46.0417, -164.592, 189.28, -49.1736, -119.87, 69.1569, -54.5713, -153.409, 189.28, -54.5713, -119.87, 186.441, -49.1736, -120.663, 175.099, -49.1736, -123.829, -41.5241, -4.20514, -68.6375, -41.5241, -4.20514, -68.6375, -129.723, -12.0595, 52.3604, 14.9938, -2.56734, 70.7047, 244.904, -28.3717, 268.661, 221.91, -7.39412, 270.875, -109.222, -7.39412, -125.64, -103.16, -7.39412, -123.948, -101.507, -7.67758, -123.486, 230.827, -7.39412, 63.4439, 184.546, -7.39412, 50.522, 268.794, -7.39412, 65.9735, 179.145, -7.39412, 40.8512, 191.239, -7.39412, -2.46559, 200.863, -7.39412, -7.92006, 9.27962, -12.0595, 91.1707, 256.744, -24.1985, 271.057, 263.905, -26.7221, 272.506, 249.584, -26.7221, 269.608, 244.904, -26.7221, 268.661, 195.634, 22.3237, 52.6697, 234.835, 22.3237, 3.78464, 190.792, 22.3237, 8.62671, 239.677, 22.3237, 47.8277, 69.1569, -54.5713, -153.409, 14.9938, -2.56734, 70.7047, 327.323, 12.0916, -59.8838, 328.315, 6.59109, -58.1223, 329.285, 12.0916, -66.9113, 320.295, 12.0916, -61.8459, 331.046, 6.59109, -67.9038, 324.79, 14.871, -64.3786, 322.257, 12.0916, -68.8735, 321.265, 6.59109, -70.6349, 318.534, -7.3941, -60.8534, 321.265, -7.3941, -70.6349, 328.315, -7.3941, -58.1223, 331.046, -7.3941, -67.9038, 318.534, 6.59109, -60.8534, 117.403, -15.2029, -115.653, 141.863, -15.2029, -139.103, 118.117, -15.2029, -149.53, 107.985, 3.74197, -139.817, 107.985, -15.2029, -139.817, 131.435, 3.74197, -115.357, 130.55, 13.2425, -117.629, 118.383, 13.2425, -117.886, 131.169, 13.2425, -147.001, 121.413, 20.4639, -141.073, 124.776, 23.6928, -132.443, 116.296, 20.4639, -136.167, 119.002, 13.2425, -147.258, 121.052, 20.4639, -123.963, 118.117, 3.74197, -149.53, 128.139, 20.4639, -123.814, 107.689, 3.74197, -125.784, 139.59, 13.2425, -138.217, 116.146, 20.4639, -129.08, 141.863, 3.74197, -139.103, 110.218, 13.2425, -138.836, 132.15, 3.74197, -149.234, 109.962, 13.2425, -126.67, 139.334, 13.2425, -126.051, 128.5, 20.4639, -140.924, 133.406, 20.4639, -135.807, 117.403, 3.74197, -115.653, 133.256, 20.4639, -128.719, 141.567, -15.2029, -125.07, 141.567, 3.74197, -125.07, 131.435, -15.2029, -115.357, 132.149, -15.2029, -149.234, 107.689, -15.2029, -125.784, -71.4269, 15.4774, -170.781, -70.4344, 9.9769, -169.02, -69.4648, 15.4774, -177.809, -78.4544, 15.4774, -172.743, -67.7033, 9.9769, -178.801, -73.9596, 18.2568, -175.276, -76.4923, 15.4774, -179.771, -77.4848, 9.9769, -181.532, -80.2159, -4.0083, -171.751, -77.4848, -4.0083, -181.532, -70.4344, -4.0083, -169.02, -67.7033, -4.0083, -178.801, -80.2159, 9.9769, -171.751, 109.198, 12.667, -91.0166, 103.376, 9.8555, -85.4354, 108.861, -4.70514, -75.0518, 97.6707, -4.70514, -79.9658, 101.135, 9.8555, -91.1866, 95.356, 3.56749, -91.3085, 117.261, 9.8555, -90.8466, 118.779, 3.56749, -81.0227, 99.2037, 3.56749, -81.4355, 99.6165, 3.56749, -101.01, 109.028, 9.8555, -82.9536, 103.616, 9.8555, -96.8382, 115.019, 9.8555, -96.5978, 109.368, 9.8555, -99.0796, 109.489, 3.56749, -104.858, 120.248, -4.70514, -79.4897, 123.039, 3.56749, -90.7247, 108.906, 3.56749, -77.175, 109.534, -4.70514, -106.981, 93.2328, -4.70514, -91.3532, 114.779, 9.8555, -85.1949, 98.1468, -4.70514, -102.543, 119.191, 3.56749, -100.598, 125.162, -4.70514, -90.6799, 120.724, -4.70514, -102.067]; + uvs = new [0.616333, 0.770559, 0.710387, 0.736449, 0.710387, 0.736449, 0.616333, 0.770559, 0.604402, 0.715053, 0.604402, 0.715053, 0.698456, 0.680942, 0.698456, 0.680942, 0.66336, 0.753504, 0.734149, 0.671208, 0.579637, 0.727245, 0.734149, 0.671208, 0.579637, 0.727245, 0.73415, 0.671207, 0.730497, 0.672532, 0.719219, 0.676623, 0.715908, 0.677823, 0.590323, 0.77696, 0.744839, 0.720922, 0.696493, 0.738455, 0.630747, 0.762299, 0.360153, 0.677236, 0.364246, 0.696278, 0.368599, 0.71653, 0.372953, 0.736781, 0.377046, 0.755823, 0.377007, 0.755837, 0.360114, 0.67725, 0.388583, 0.781005, 0.382603, 0.753186, 0.402937, 0.745811, 0.408917, 0.773631, 0.525999, 0.642938, 0.541108, 0.713226, 0.547556, 0.635121, 0.519551, 0.721044, 0.571298, 0.682293, 0.580371, 0.724501, 0.575834, 0.703397, 0.622376, 0.686518, 0.61784, 0.665414, 0.626912, 0.707622, 0.474193, 0.572218, 0.43727, 0.585609, 0.486644, 0.630145, 0.468182, 0.63684, 0.449721, 0.643535, 0.455731, 0.578913, 0.474193, 0.572218, 0.43727, 0.585609, 0.406392, 0.460115, 0.321043, 0.491068, 0.321043, 0.491068, 0.335917, 0.485674, 0.406392, 0.460115, 0.347931, 0.61616, 0.359603, 0.670463, 0.359603, 0.670463, 0.364608, 0.668648, 0.444953, 0.63951, 0.444953, 0.63951, 0.414659, 0.498574, 0.416685, 0.508002, 0.408418, 0.469542, 0.352935, 0.614345, 0.337128, 0.620077, 0.350191, 0.680849, 0.357988, 0.678021, 0.357437, 0.675458, 0.365447, 0.672553, 0.357437, 0.675458, 0.365447, 0.672553, 0.352935, 0.614345, 0.287162, 0.501699, 0.312249, 0.492601, 0.26144, 0.511028, 0.301415, 0.697002, 0.352277, 0.67882, 0.326854, 0.68804, 0.465243, 0.560549, 0.473288, 0.540778, 0.490284, 0.559056, 0.541576, 0.540453, 0.490284, 0.559056, 0.506134, 0.632795, 0.594526, 0.600738, 0.597988, 0.599482, 0.582138, 0.525743, 0.594526, 0.600738, 0.597988, 0.599482, 0.647802, 0.536035, 0.590964, 0.556649, 0.599595, 0.596804, 0.656433, 0.57619, 0.595279, 0.576726, 0.652117, 0.556113, 0.599595, 0.596804, 0.656433, 0.57619, 0.652117, 0.556113, 0.474193, 0.572218, 0.43727, 0.585609, 0.449721, 0.643535, 0.474193, 0.572218, 0.43727, 0.585609, 0.437432, 0.492402, 0.428133, 0.431441, 0.5999, 0.433246, 0.584197, 0.438941, 0.604924, 0.535369, 0.620628, 0.529674, 0.636331, 0.523979, 0.615604, 0.427551, 0.829579, 0.328847, 0.836426, 0.360702, 0.954793, 0.317661, 0.9431, 0.318817, 0.959265, 0.394021, 0.969728, 0.387141, 0.977367, 0.375584, 0.98102, 0.361109, 0.980131, 0.34592, 0.974834, 0.33233, 0.965937, 0.322406, 0.9431, 0.318817, 0.959265, 0.394021, 0.954793, 0.317661, 0.965937, 0.322406, 0.974834, 0.33233, 0.980131, 0.34592, 0.98102, 0.361109, 0.977367, 0.375584, 0.969728, 0.387141, 0.650738, 0.428199, 0.636498, 0.433363, 0.664978, 0.423034, 0.665783, 0.498195, 0.680023, 0.49303, 0.651543, 0.503359, 0.615291, 0.318361, 0.541127, 0.345258, 0.634124, 0.262533, 0.502617, 0.318602, 0.323821, 0.383446, 0.338521, 0.451835, 0.517318, 0.386991, 0.509968, 0.352797, 0.50601, 0.334388, 0.513925, 0.371206, 0.323821, 0.383446, 0.331171, 0.417641, 0.255165, 0.409177, 0.288964, 0.434318, 0.302966, 0.42924, 0.322411, 0.384789, 0.270079, 0.478565, 0.337326, 0.454176, 0.824285, 0.252551, 0.648362, 0.316353, 0.655749, 0.350721, 0.831673, 0.286919, 0.816898, 0.218184, 0.640974, 0.281986, 0.828429, 0.183364, 0.803842, 0.0190632, 0.837727, 0.0105078, 0.851259, 0.100933, 0.900253, 0.0885623, 0.911308, 0.162438, 0.911308, 0.162438, 0.875153, 0.171566, 0.875153, 0.171566, 0.828429, 0.183364, 0.864098, 0.0976909, 0.869626, 0.134629, 0.869626, 0.134629, 0.822901, 0.146426, 0.864098, 0.0976909, 0.817373, 0.109488, 0.805697, 0.0220529, 0.823124, 0.10313, 0.83551, 0.100182, 0.847896, 0.0972329, 0.83551, 0.100182, 0.836158, 0.0140461, 0.610425, 0.263723, 0.599465, 0.205764, 0.792149, 0.144289, 0.803109, 0.202247, 0.817373, 0.109488, 0.803842, 0.0190632, 0.817373, 0.109488, 0.581981, 0.229633, 0.567133, 0.0703279, 0.798148, 0.0067485, 0.829788, 0.153947, 0.830727, 0.159134, 0.831137, 0.186084, 0.824598, 0.149963, 0.817121, 0.115176, 0.795181, 0.0131068, 0.786494, 0.0154977, 0.77612, 0.0183529, 0.571736, 0.0746032, 0.576511, 0.125838, 0.585564, 0.222969, 0.592102, 0.25909, 0.663113, 0.237402, 0.836299, 0.189915, 0.588491, 0.2656, 0.582919, 0.23482, 0.567133, 0.0703279, 0.798148, 0.0067485, 0.578459, 0.236182, 0.567133, 0.0703279, 0.56261, 0.0661265, 0.581981, 0.229633, 0.582919, 0.23482, 0.688334, 0.0540026, 0.693452, 0.0875821, 0.690893, 0.0707923, 0.711181, 0.0655744, 0.708622, 0.0487846, 0.71374, 0.0823642, 0.795208, 0.135368, 0.815955, 0.129658, 0.805581, 0.132513, 0.796868, 0.0126427, 0.786494, 0.0154978, 0.520488, 0.401742, 0.51862, 0.393049, 0.535247, 0.387019, 0.537115, 0.395711, 0.344925, 0.61725, 0.344925, 0.61725, 0.337128, 0.620077, 0.350191, 0.680849, 0.357988, 0.678021, 0.729827, 0.398606, 0.729827, 0.398606, 0.716237, 0.335383, 0.716237, 0.335383, 0.486642, 0.630145, 0.664978, 0.423034, 0.650738, 0.428199, 0.550006, 0.455682, 0.550006, 0.455682, 0.553273, 0.47088, 0.553273, 0.47088, 0.537884, 0.399288, 0.537884, 0.399288, 0.568683, 0.465291, 0.572519, 0.4639, 0.572519, 0.4639, 0.357437, 0.675458, 0.474193, 0.572218, 0.43727, 0.585609, 0.242818, 0.387692, 0.211777, 0.398949, 0.211777, 0.398949, 0.242818, 0.387692, 0.651543, 0.503359, 0.665783, 0.498195, 0.636498, 0.433363, 0.453548, 0.416649, 0.453548, 0.416649, 0.535247, 0.387019, 0.448798, 0.642324, 0.408559, 0.45512, 0.562664, 0.705408, 0.468307, 0.485312, 0.468307, 0.485312, 0.460927, 0.45098, 0.909923, 0.164471, 0.841633, 0.189238, 0.841633, 0.189238, 0.924488, 0.159189, 0.924488, 0.159189, 0.622843, 0.65889, 0.624898, 0.66845, 0.9431, 0.318817, 0.959265, 0.394021, 0.557131, 0.392307, 0.557131, 0.392307, 0.537884, 0.399288, 0.664887, 0.422157, 0.664887, 0.422157, 0.504443, 0.650756, 0.474622, 0.572062, 0.474622, 0.572062, 0.864033, 0.35069, 0.864033, 0.35069, 0.850254, 0.286586, 0.850254, 0.286586, 0.680023, 0.49303, 0.360114, 0.67725, 0.357988, 0.678022, 0.357988, 0.678021, 0.360114, 0.67725, 0.350191, 0.680849, 0.282025, 0.705571, 0.282025, 0.705571, 0.301721, 0.698428, 0.350191, 0.680849, 0.822732, 0.296991, 0.822732, 0.296991, 0.822647, 0.296598, 0.822647, 0.296598, 0.602677, 0.666203, 0.49887, 0.654988, 0.45087, 0.672396, 0.45087, 0.672396, 0.49887, 0.654988, 0.550006, 0.455682, 0.386422, 0.250386, 0.168351, 0.329473, 0.386422, 0.250386, 0.345391, 0.0594999, 0.34695, 0.0667541, 0.174597, 0.129261, 0.12732, 0.138587, 0.423516, 0.184111, 0.425345, 0.203738, 0.425372, 0.203734, 0.423543, 0.184107, 0.402024, 0.18749, 0.393235, 0.0931828, 0.531664, 0.0714148, 0.533683, 0.0930757, 0.402051, 0.187486, 0.27339, 0.589752, 0.277616, 0.60924, 0.277616, 0.60924, 0.27339, 0.589752, 0.273774, 0.628861, 0.273774, 0.628861, 0.0597607, 0.600391, 0.0644957, 0.615686, 0.0644957, 0.615686, 0.0507472, 0.571274, 0.0507472, 0.571274, 0.0597607, 0.600391, 0.0518703, 0.604512, 0.0559692, 0.619595, 0.0559692, 0.619595, 0.741471, 0.717751, 0.589399, 0.772903, 0.592336, 0.786569, 0.744409, 0.731417, 0.744409, 0.731417, 0.741471, 0.717751, 0.592336, 0.786569, 0.589399, 0.772903, 0.730497, 0.672532, 0.719219, 0.676623, 0.719814, 0.679391, 0.716503, 0.680592, 0.579637, 0.727245, 0.582078, 0.738604, 0.622502, 0.723944, 0.688248, 0.7001, 0.736594, 0.682566, 0.734149, 0.671208, 0.734705, 0.6738, 0.731054, 0.675124, 0.582078, 0.738604, 0.736594, 0.682566, 0.580248, 0.730089, 0.580248, 0.730089, 0.579637, 0.727245, 0.579637, 0.727245, 0.46647, 0.744971, 0.46647, 0.744971, 0.51447, 0.727563, 0.51447, 0.727563, 0.734705, 0.6738, 0.729474, 0.649465, 0.729474, 0.649465, 0.734148, 0.671208, 0.734148, 0.671208, 0.734759, 0.674053, 0.734759, 0.674053, 0.574987, 0.705615, 0.574987, 0.705615, 0.464613, 0.745644, 0.419971, 0.761834, 0.419971, 0.761834, 0.651429, 0.697998, 0.386422, 0.250386, 0.386422, 0.250386, 0.34695, 0.0667541, 0.238302, 0.366683, 0.238302, 0.366683, 0.18083, 0.387526, 0.12732, 0.138587, 0.18083, 0.387526, 0.186766, 0.385373, 0.186766, 0.385373, 0.17842, 0.147047, 0.17842, 0.147047, 0.174597, 0.129261, 0.138639, 0.161475, 0.138639, 0.161475, 0.345391, 0.0594999, 0.573267, 0.180477, 0.573294, 0.180473, 0.801064, 0.000499547, 0.801064, 0.000499547, 0.834889, 0.157863, 0.402575, 0.432504, 0.288489, 0.473879, 0.291911, 0.489802, 0.322604, 0.47867, 0.323939, 0.484878, 0.407332, 0.454634, 0.743666, 0.472742, 0.651143, 0.506297, 0.666484, 0.577668, 0.669936, 0.565343, 0.659347, 0.516077, 0.736446, 0.488116, 0.747036, 0.537381, 0.759007, 0.544113, 0.747036, 0.537381, 0.669936, 0.565343, 0.736446, 0.488116, 0.659347, 0.516077, 0.666484, 0.577668, 0.651143, 0.506297, 0.743666, 0.472742, 0.759007, 0.544113, 0.191154, 0.497938, 0.000499547, 0.597519, 0.000499547, 0.597519, 0.375329, 0.778024, 0.378521, 0.792875, 0.423163, 0.776685, 0.928422, 0.566795, 0.882944, 0.593806, 0.886938, 0.612388, 0.934513, 0.595134, 0.843389, 0.221605, 0.882185, 0.207535, 0.719814, 0.679391, 0.719219, 0.676623, 0.730497, 0.672532, 0.731054, 0.675124, 0.715908, 0.677823, 0.716503, 0.680592, 0.734705, 0.6738, 0.716503, 0.680592, 0.719219, 0.676623, 0.719814, 0.679391, 0.980546, 0.452838, 0.972533, 0.455745, 0.972533, 0.455745, 0.980546, 0.452838, 0.882944, 0.593806, 0.928422, 0.566795, 0.9995, 0.541017, 0.9995, 0.541017, 0.579637, 0.727245, 0.931875, 0.266595, 0.931875, 0.266595, 0.295925, 0.790427, 0.37206, 0.762815, 0.37206, 0.762815, 0.295925, 0.790427, 0.423163, 0.776685, 0.886938, 0.612388, 0.934513, 0.595134, 0.378521, 0.792875, 0.946439, 0.261312, 0.946439, 0.261312, 0.298917, 0.784158, 0.298917, 0.784158, 0.377007, 0.755837, 0.294824, 0.765116, 0.290471, 0.744864, 0.286118, 0.724613, 0.450213, 0.748303, 0.436457, 0.753292, 0.422701, 0.75828, 0.409623, 0.763023, 0.463291, 0.74356, 0.407405, 0.687119, 0.421161, 0.68213, 0.434917, 0.677141, 0.447995, 0.672398, 0.394327, 0.691862, 0.402937, 0.745811, 0.382603, 0.753186, 0.388583, 0.781005, 0.408917, 0.773631, 0.470368, 0.227741, 0.418564, 0.246529, 0.418564, 0.246529, 0.470368, 0.227741, 0.473427, 0.24197, 0.473427, 0.24197, 0.578459, 0.236182, 0.521694, 0.256769, 0.521694, 0.256769, 0.513421, 0.21828, 0.474113, 0.232536, 0.474113, 0.232536, 0.513421, 0.21828, 0.47133, 0.219592, 0.47133, 0.219592, 0.512374, 0.227845, 0.512374, 0.227845, 0.528096, 0.300986, 0.529123, 0.305768, 0.529123, 0.305768, 0.438372, 0.33868, 0.438372, 0.33868, 0.501975, 0.315614, 0.564694, 0.0881991, 0.56261, 0.0661265, 0.564667, 0.0882034, 0.407332, 0.454634, 0.323939, 0.484878, 0.317197, 0.488254, 0.317197, 0.488254, 0.408559, 0.45512, 0.288489, 0.473879, 0.402575, 0.432504, 0.590964, 0.556649, 0.617028, 0.421859, 0.579881, 0.435332, 0.602607, 0.54106, 0.639755, 0.527588, 0.723606, 0.673856, 0.693956, 0.65839, 0.674762, 0.69157, 0.664306, 0.642925, 0.713149, 0.625211, 0.721112, 0.402676, 0.664978, 0.423034, 0.672733, 0.459116, 0.863573, 0.389904, 0.855817, 0.353823, 0.799558, 0.374226, 0.680489, 0.495197, 0.736624, 0.474839, 0.815069, 0.446389, 0.871328, 0.425986, 0.790998, 0.530055, 0.820763, 0.51926, 0.808578, 0.462573, 0.78759, 0.364928, 0.776433, 0.313023, 0.746667, 0.323818, 0.716902, 0.334613, 0.728059, 0.386518, 0.749048, 0.484163, 0.761233, 0.54085, 0.542626, 0.421351, 0.338521, 0.451835, 0.517318, 0.386991, 0.502617, 0.318602, 0.323821, 0.383446, 0.448798, 0.642324, 0.486639, 0.630146, 0.449721, 0.643535, 0.452386, 0.655934, 0.489304, 0.642545, 0.471697, 0.558454, 0.434344, 0.572, 0.445609, 0.425102, 0.410657, 0.437779, 0.423485, 0.49746, 0.458438, 0.484784, 0.440961, 0.491122, 0.358179, 0.155295, 0.358179, 0.155295, 0.349859, 0.116584, 0.349859, 0.116584, 0.276212, 0.143293, 0.276212, 0.143293, 0.284533, 0.182004, 0.284533, 0.182004, 0.847896, 0.0972329, 0.836158, 0.0140461, 0.580362, 0.167155, 0.585564, 0.222969, 0.613004, 0.214588, 0.608111, 0.158013, 0.452386, 0.655934, 0.489304, 0.642545, 0.471697, 0.558454, 0.434344, 0.572, 0.337326, 0.454176, 0.322411, 0.384789, 0.255165, 0.409177, 0.270079, 0.478565, 0.449721, 0.643535, 0.22124, 0.590617, 0.217399, 0.610238, 0.221625, 0.629726, 0.232786, 0.643858, 0.247892, 0.648848, 0.262894, 0.643359, 0.268783, 0.604176, 0.251844, 0.63845, 0.225554, 0.616527, 0.242494, 0.582254, 0.262229, 0.57562, 0.247123, 0.57063, 0.23212, 0.576119, 0.360405, 0.593358, 0.34932, 0.541786, 0.410835, 0.519476, 0.421921, 0.571048, 0.346211, 0.53356, 0.374017, 0.560625, 0.399301, 0.551456, 0.651297, 0.358934, 0.803109, 0.202247, 0.792149, 0.144289, 0.610425, 0.263723, 0.599465, 0.205764, 0.581981, 0.229633, 0.588491, 0.2656, 0.592102, 0.25909, 0.585564, 0.222969, 0.571736, 0.0746032, 0.795181, 0.0131068, 0.831137, 0.186084, 0.836299, 0.189915, 0.576511, 0.125838, 0.571736, 0.0746032, 0.585564, 0.222969, 0.643491, 0.104092, 0.576511, 0.125838, 0.580362, 0.167155, 0.608111, 0.158013, 0.613004, 0.214588, 0.656574, 0.201281, 0.585564, 0.222969, 0.656574, 0.201281, 0.831137, 0.186084, 0.663113, 0.237402, 0.643491, 0.104092, 0.80249, 0.047111, 0.772208, 0.0667682, 0.722626, 0.0797544, 0.716852, 0.0425614, 0.716316, 0.0890715, 0.772411, 0.0739822, 0.776689, 0.10081, 0.720594, 0.115899, 0.71374, 0.0823642, 0.766435, 0.0295753, 0.786494, 0.0154977, 0.783278, 0.0163829, 0.490284, 0.559056, 0.506134, 0.632795, 0.594526, 0.600738, 0.591468, 0.614058, 0.591468, 0.614058, 0.602677, 0.666203, 0.670332, 0.628844, 0.670333, 0.628844, 0.66522, 0.60506, 0.66522, 0.60506, 0.658757, 0.607404, 0.658757, 0.607404, 0.652783, 0.57961, 0.652783, 0.57961, 0.651981, 0.648322, 0.657264, 0.646407, 0.657264, 0.646407, 0.651981, 0.648322, 0.595279, 0.576726, 0.590964, 0.556649, 0.654036, 0.657883, 0.654036, 0.657883, 0.582138, 0.525743, 0.597988, 0.599482, 0.59696, 0.612066, 0.59696, 0.612066, 0.594526, 0.600738, 0.66387, 0.631188, 0.66387, 0.631188, 0.624898, 0.66845, 0.647802, 0.536035, 0.622843, 0.65889, 0.656433, 0.57619, 0.652117, 0.556113, 0.651297, 0.358934, 0.599595, 0.596804, 0.541576, 0.540453, 0.242494, 0.582254, 0.225554, 0.616527, 0.251844, 0.63845, 0.268783, 0.604176, 0.21707, 0.606303, 0.191154, 0.497938, 0.21707, 0.606303, 0.21707, 0.606303, 0.509968, 0.352797, 0.520488, 0.401742, 0.500947, 0.310832, 0.653665, 0.353442, 0.452991, 0.508958, 0.436539, 0.51555, 0.450891, 0.53805, 0.468213, 0.519408, 0.448791, 0.567141, 0.433569, 0.556692, 0.428494, 0.535322, 0.527797, 0.47635, 0.476505, 0.494952, 0.490284, 0.559056, 0.541576, 0.540453, 0.568683, 0.465291, 0.537862, 0.476469, 0.549669, 0.531399, 0.58049, 0.520221, 0.892242, 0.254323, 0.892242, 0.254323, 0.882185, 0.207535, 0.853446, 0.268393, 0.853446, 0.268393, 0.843389, 0.221605, 0.829579, 0.328847, 0.822732, 0.296991, 0.776717, 0.313679, 0.790411, 0.37739, 0.836426, 0.360702, 0.815069, 0.446389, 0.815069, 0.446389, 0.815069, 0.446389, 0.808578, 0.462573, 0.808578, 0.462573, 0.808578, 0.462573, 0.78759, 0.364928, 0.728059, 0.386518, 0.728059, 0.386518, 0.728059, 0.386518, 0.78759, 0.364928, 0.78759, 0.364928, 0.776717, 0.313679, 0.836426, 0.360702, 0.721112, 0.402676, 0.721112, 0.402676, 0.721112, 0.402676, 0.736669, 0.475049, 0.736669, 0.475049, 0.799584, 0.374346, 0.799584, 0.374346, 0.790411, 0.37739, 0.749048, 0.484163, 0.749048, 0.484163, 0.749048, 0.484163, 0.829579, 0.328847, 0.836426, 0.360702, 0.86095, 0.351808, 0.86095, 0.351808, 0.854103, 0.319953, 0.854103, 0.319953, 0.184804, 0.213627, 0.184804, 0.213627, 0.176664, 0.175759, 0.176664, 0.175759, 0.281379, 0.178602, 0.281379, 0.178602, 0.273239, 0.140734, 0.273239, 0.140734, 0.820763, 0.51926, 0.776433, 0.313023, 0.761233, 0.54085, 0.716902, 0.334613, 0.855817, 0.353823, 0.680489, 0.495197, 0.871328, 0.425986, 0.87555, 0.291037, 0.854845, 0.298546, 0.894748, 0.484186, 0.915453, 0.476677, 0.896255, 0.283528, 0.936158, 0.469168, 0.650738, 0.428199, 0.665783, 0.498195, 0.772208, 0.0667682, 0.722626, 0.0797544, 0.766435, 0.0295753, 0.769321, 0.0481718, 0.716852, 0.0425614, 0.672798, 0.0537242, 0.672798, 0.0537242, 0.675684, 0.0723206, 0.678571, 0.0909171, 0.678571, 0.0909171, 0.623215, 0.0667104, 0.623215, 0.0667102, 0.628989, 0.103903, 0.628989, 0.103903, 0.77455, 0.0873961, 0.718455, 0.102485, 0.778864, 0.116125, 0.781003, 0.129539, 0.783141, 0.142953, 0.722769, 0.131214, 0.727047, 0.158042, 0.724908, 0.144628, 0.711615, 0.134122, 0.713754, 0.147536, 0.715892, 0.16095, 0.65552, 0.149212, 0.659797, 0.17604, 0.657659, 0.162626, 0.653665, 0.353442, 0.634124, 0.262533, 0.500947, 0.310832, 0.291911, 0.489802, 0.622174, 0.364863, 0.622174, 0.364863, 0.648586, 0.355285, 0.648586, 0.355285, 0.635509, 0.426902, 0.635509, 0.426902, 0.661921, 0.417323, 0.661921, 0.417323, 0.517318, 0.386992, 0.502617, 0.318602, 0.688334, 0.0540026, 0.719739, 0.0611579, 0.626102, 0.0853068, 0.655749, 0.350721, 0.831673, 0.286919, 0.640974, 0.281986, 0.816898, 0.218184, 0.900253, 0.0885623, 0.90578, 0.1255, 0.837727, 0.0105078, 0.851259, 0.100933, 0.820927, 0.0180495, 0.830137, 0.0156287, 0.811717, 0.0204704, 0.83551, 0.100182, 0.843, 0.0983986, 0.82802, 0.101965, 0.894748, 0.484186, 0.854845, 0.298546, 0.936158, 0.469168, 0.896255, 0.283528, 0.639755, 0.527588, 0.617028, 0.421859, 0.549669, 0.531399, 0.58049, 0.520221, 0.541576, 0.540453, 0.579881, 0.435332, 0.527797, 0.47635, 0.476505, 0.494952, 0.537862, 0.476469, 0.602607, 0.54106, 0.537884, 0.399288, 0.272471, 0.681315, 0.272471, 0.681315, 0.234539, 0.504843, 0.234539, 0.504843, 0.292781, 0.673949, 0.292781, 0.673949, 0.254849, 0.497477, 0.254849, 0.497477, 0.468213, 0.519408, 0.452991, 0.508958, 0.473287, 0.540778, 0.428494, 0.535322, 0.436539, 0.51555, 0.433569, 0.556692, 0.465243, 0.560549, 0.448791, 0.567141, 0.533027, 0.0931789, 0.531008, 0.0715179, 0.393261, 0.0931786, 0.262894, 0.643359, 0.247892, 0.648848, 0.232786, 0.643858, 0.22124, 0.590617, 0.23212, 0.576119, 0.247123, 0.57063, 0.262229, 0.57562, 0.221625, 0.629726, 0.217399, 0.610238, 0.147399, 0.999501, 0.147399, 0.999501, 0.0645589, 0.841739, 0.0645589, 0.841739, 0.253897, 0.832013, 0.265651, 0.809442, 0.265651, 0.809442, 0.253897, 0.832013, 0.245153, 0.9025, 0.245153, 0.9025, 0.226331, 0.941271, 0.226331, 0.941271, 0.113045, 0.590328, 0.130074, 0.606303, 0.130074, 0.606303, 0.113045, 0.590328, 0.154998, 0.595932, 0.154998, 0.595932, 0.17616, 0.623506, 0.17616, 0.623506, 0.192703, 0.616549, 0.183278, 0.620513, 0.192703, 0.616549, 0.0644957, 0.615686, 0.0763434, 0.609498, 0.249237, 0.817592, 0.239938, 0.822004, 0.245712, 0.842536, 0.239622, 0.890245, 0.226072, 0.920057, 0.16743, 0.942239, 0.145864, 0.950397, 0.131649, 0.955773, 0.0731457, 0.836257, 0.0215433, 0.620352, 0.239938, 0.822004, 0.249237, 0.817592, 0.0770538, 0.612093, 0.16743, 0.942239, 0.226072, 0.920057, 0.239622, 0.890245, 0.245712, 0.842536, 0.131649, 0.955773, 0.145864, 0.950397, 0.138756, 0.953085, 0.0518703, 0.604512, 0.0281059, 0.616924, 0.0808592, 0.833081, 0.0215433, 0.620352, 0.145864, 0.950397, 0.0731457, 0.836257, 0.351903, 0.159465, 0.356968, 0.18303, 0.362034, 0.206595, 0.273423, 0.187927, 0.278488, 0.211492, 0.283554, 0.235057, 0.362853, 0.214968, 0.367919, 0.238533, 0.372984, 0.262098, 0.284373, 0.24343, 0.289439, 0.266995, 0.294504, 0.290561, 0.373719, 0.270583, 0.378784, 0.294148, 0.38385, 0.317713, 0.295239, 0.299045, 0.300304, 0.32261, 0.30537, 0.346175, 0.37847, 0.259604, 0.396722, 0.253561, 0.414974, 0.247518, 0.395375, 0.345754, 0.413628, 0.339711, 0.43188, 0.333668, 0.23303, 0.203884, 0.251282, 0.19784, 0.269534, 0.191797, 0.263218, 0.357723, 0.281471, 0.35168, 0.299723, 0.345637, 0.249179, 0.311933, 0.254244, 0.335499, 0.25931, 0.359064, 0.170699, 0.340396, 0.175764, 0.363961, 0.18083, 0.387526, 0.237264, 0.256501, 0.242329, 0.280066, 0.247395, 0.303632, 0.158784, 0.284963, 0.163849, 0.308528, 0.168915, 0.332094, 0.225103, 0.199925, 0.230168, 0.223491, 0.235234, 0.247056, 0.146623, 0.228388, 0.151688, 0.251953, 0.156754, 0.275518, 0.341064, 0.509617, 0.411538, 0.484058, 0.12817, 0.592565, 0.11789, 0.597279, 0.207763, 0.92679, 0.218546, 0.922712, 0.218546, 0.922712, 0.19698, 0.930869, 0.19698, 0.930869, 0.12817, 0.592565, 0.117367, 0.595354, 0.107086, 0.600068, 0.115612, 0.596158, 0.107086, 0.600068, 0.107609, 0.601993, 0.107086, 0.600068, 0.0770538, 0.612093, 0.066773, 0.616806, 0.156647, 0.946318, 0.16743, 0.942239, 0.0662499, 0.614881, 0.0564922, 0.62152, 0.0559691, 0.619595, 0.145863, 0.950397, 0.4916, 0.560875, 0.499053, 0.595547, 0.589068, 0.562901, 0.581616, 0.528229, 0.596521, 0.597573, 0.506505, 0.630218, 0.322604, 0.47867, 0.823124, 0.10313, 0.805697, 0.0220529, 0.328508, 0.687317, 0.325147, 0.688519, 0.799338, 0.374153, 0.799472, 0.374258, 0.74557, 0.481603, 0.736879, 0.475204, 0.736624, 0.474839, 0.721576, 0.401598, 0.727505, 0.387806, 0.787762, 0.365063, 0.836299, 0.189915, 0.339468, 0.619229, 0.448428, 0.566892, 0.458809, 0.563128, 0.349935, 0.679657, 0.402092, 0.105281, 0.404424, 0.129955, 0.406756, 0.154628, 0.468487, 0.144783, 0.463823, 0.0954353, 0.466155, 0.12011, 0.807592, 0.429489, 0.767533, 0.423768, 0.763129, 0.475802, 0.742322, 0.38293, 0.727474, 0.418048, 0.727474, 0.418048, 0.742322, 0.38293, 0.807592, 0.429489, 0.792745, 0.464607, 0.792745, 0.464607, 0.771937, 0.371734, 0.771937, 0.371734, 0.736093, 0.456517, 0.763129, 0.475802, 0.736093, 0.456517, 0.798973, 0.39102, 0.727474, 0.418048, 0.763129, 0.475802, 0.771937, 0.371734, 0.798973, 0.39102, 0.807592, 0.429489, 0.365448, 0.616817, 0.370594, 0.640761, 0.375741, 0.664704, 0.446215, 0.639146, 0.435922, 0.591259, 0.441069, 0.615202, 0.905987, 0.527329, 0.914843, 0.568532, 0.897131, 0.486127, 0.968015, 0.46042, 0.985727, 0.542824, 0.960651, 0.507505, 0.846253, 0.526154, 0.821853, 0.535003, 0.870653, 0.517305, 0.885877, 0.588131, 0.837077, 0.605829, 0.857993, 0.580773, 0.790376, 0.546999, 0.765976, 0.555848, 0.814776, 0.53815, 0.83, 0.608976, 0.7812, 0.626674, 0.802116, 0.601618, 0.736519, 0.567258, 0.712119, 0.576107, 0.760919, 0.558409, 0.776143, 0.629235, 0.727343, 0.646933, 0.74826, 0.621877, 0.617009, 0.745777, 0.615425, 0.738406, 0.60975, 0.740464, 0.611335, 0.747835, 0.610609, 0.741093, 0.614941, 0.739522, 0.611819, 0.746719, 0.61615, 0.745148, 0.61061, 0.741093, 0.614941, 0.739522, 0.611819, 0.746719, 0.61615, 0.745148, 0.621875, 0.768411, 0.62029, 0.76104, 0.614615, 0.763098, 0.6162, 0.770469, 0.615475, 0.763727, 0.619806, 0.762156, 0.616684, 0.769353, 0.621015, 0.767782, 0.615475, 0.763727, 0.619806, 0.762156, 0.616684, 0.769353, 0.621015, 0.767782, 0.611444, 0.719885, 0.60986, 0.712514, 0.604185, 0.714572, 0.605769, 0.721943, 0.605044, 0.715201, 0.609375, 0.71363, 0.606253, 0.720827, 0.610585, 0.719256, 0.605044, 0.715201, 0.609375, 0.71363, 0.606253, 0.720827, 0.610585, 0.719256, 0.632516, 0.764094, 0.630932, 0.756723, 0.625257, 0.758781, 0.626842, 0.766152, 0.626116, 0.75941, 0.630448, 0.757839, 0.627326, 0.765036, 0.631657, 0.763465, 0.626116, 0.75941, 0.630448, 0.757839, 0.627326, 0.765036, 0.631657, 0.763465, 0.65897, 0.754958, 0.657385, 0.747587, 0.65171, 0.749645, 0.653295, 0.757016, 0.65257, 0.750274, 0.656901, 0.748703, 0.653779, 0.7559, 0.65811, 0.754329, 0.65257, 0.750274, 0.656901, 0.748703, 0.653779, 0.7559, 0.65811, 0.754329, 0.709998, 0.736451, 0.708413, 0.72908, 0.702739, 0.731138, 0.704323, 0.738509, 0.703598, 0.731767, 0.707929, 0.730196, 0.704807, 0.737393, 0.709139, 0.735822, 0.703598, 0.731767, 0.707929, 0.730196, 0.704807, 0.737393, 0.709139, 0.735822, 0.705106, 0.713728, 0.703522, 0.706357, 0.697847, 0.708415, 0.699432, 0.715786, 0.698707, 0.709044, 0.703038, 0.707473, 0.699916, 0.71467, 0.704247, 0.713099, 0.698707, 0.709044, 0.703038, 0.707473, 0.699916, 0.71467, 0.704247, 0.713099, 0.700393, 0.687689, 0.698809, 0.680318, 0.693134, 0.682376, 0.694719, 0.689747, 0.693994, 0.683005, 0.698325, 0.681434, 0.695203, 0.688631, 0.699534, 0.68706, 0.693994, 0.683005, 0.698325, 0.681434, 0.695203, 0.688631, 0.699534, 0.68706, 0.700023, 0.740069, 0.698439, 0.732698, 0.692764, 0.734756, 0.694349, 0.742127, 0.693623, 0.735385, 0.697955, 0.733814, 0.694833, 0.741011, 0.699164, 0.73944, 0.693623, 0.735385, 0.697955, 0.733814, 0.694833, 0.741011, 0.699164, 0.73944, 0.686343, 0.745031, 0.684758, 0.73766, 0.679084, 0.739718, 0.680668, 0.747089, 0.679943, 0.740346, 0.684274, 0.738776, 0.681152, 0.745972, 0.685483, 0.744402, 0.679943, 0.740346, 0.684274, 0.738776, 0.681152, 0.745972, 0.685483, 0.744402, 0.672913, 0.749901, 0.671329, 0.74253, 0.665654, 0.744588, 0.667238, 0.751959, 0.666513, 0.745217, 0.670845, 0.743646, 0.667723, 0.750843, 0.672054, 0.749272, 0.666513, 0.745217, 0.670845, 0.743646, 0.667723, 0.750843, 0.672054, 0.749272, 0.645964, 0.759415, 0.644379, 0.752044, 0.638705, 0.754102, 0.640289, 0.761473, 0.639564, 0.754731, 0.643895, 0.75316, 0.640773, 0.760357, 0.645105, 0.758786, 0.639564, 0.754731, 0.643895, 0.75316, 0.640773, 0.760357, 0.645105, 0.758786, 0.530718, 0.753231, 0.529134, 0.74586, 0.523459, 0.747918, 0.525044, 0.755289, 0.524319, 0.748547, 0.52865, 0.746977, 0.525528, 0.754173, 0.529859, 0.752603, 0.524319, 0.748547, 0.52865, 0.746977, 0.525528, 0.754173, 0.529859, 0.752603, 0.515064, 0.757827, 0.513479, 0.750456, 0.507805, 0.752514, 0.509389, 0.759885, 0.508664, 0.753143, 0.512995, 0.751572, 0.509873, 0.758769, 0.514205, 0.757198, 0.508664, 0.753143, 0.512995, 0.751572, 0.509873, 0.758769, 0.514205, 0.757198, 0.493176, 0.766793, 0.491592, 0.759422, 0.485917, 0.76148, 0.487501, 0.768851, 0.486776, 0.762109, 0.491107, 0.760538, 0.487985, 0.767735, 0.492317, 0.766164, 0.486776, 0.762109, 0.491107, 0.760538, 0.487985, 0.767735, 0.492317, 0.766164, 0.477037, 0.773, 0.475453, 0.765629, 0.469778, 0.767687, 0.471363, 0.775058, 0.470637, 0.768315, 0.474969, 0.766745, 0.471847, 0.773942, 0.476178, 0.772371, 0.470637, 0.768315, 0.474969, 0.766745, 0.471847, 0.773942, 0.476178, 0.772371, 0.843988, 0.63931, 0.842403, 0.631939, 0.836729, 0.633997, 0.838313, 0.641368, 0.837588, 0.634626, 0.841919, 0.633055, 0.838797, 0.640252, 0.843129, 0.638681, 0.837588, 0.634626, 0.841919, 0.633055, 0.838797, 0.640252, 0.843129, 0.638681, 0.828333, 0.643905, 0.826749, 0.636534, 0.821074, 0.638592, 0.822659, 0.645963, 0.821933, 0.639221, 0.826265, 0.63765, 0.823143, 0.644847, 0.827474, 0.643276, 0.821933, 0.639221, 0.826265, 0.63765, 0.823143, 0.644847, 0.827474, 0.643276, 0.806445, 0.652871, 0.804861, 0.6455, 0.799186, 0.647558, 0.800771, 0.654929, 0.800045, 0.648187, 0.804377, 0.646616, 0.801255, 0.653813, 0.805586, 0.652243, 0.800046, 0.648187, 0.804377, 0.646617, 0.801255, 0.653813, 0.805586, 0.652243, 0.790307, 0.659078, 0.788722, 0.651707, 0.783047, 0.653765, 0.784632, 0.661136, 0.783907, 0.654394, 0.788238, 0.652823, 0.785116, 0.66002, 0.789447, 0.658449, 0.783907, 0.654394, 0.788238, 0.652823, 0.785116, 0.66002, 0.789447, 0.658449, 0.784333, 0.661734, 0.84441, 0.639946, 0.84441, 0.639946, 0.784333, 0.661734, 0.777944, 0.632008, 0.838021, 0.61022, 0.838021, 0.61022, 0.777944, 0.632008, 0.777944, 0.632008, 0.84441, 0.639946, 0.84441, 0.639946, 0.838021, 0.61022, 0.784333, 0.661734, 0.784333, 0.661734, 0.838021, 0.61022, 0.777944, 0.632008, 0.471064, 0.775656, 0.531141, 0.753868, 0.531141, 0.753868, 0.471064, 0.775656, 0.464674, 0.745929, 0.524751, 0.724141, 0.524751, 0.724141, 0.464674, 0.745929, 0.471064, 0.775656, 0.464674, 0.745929, 0.531141, 0.753868, 0.531141, 0.753868, 0.524751, 0.724141, 0.471064, 0.775656, 0.524751, 0.724141, 0.464674, 0.745929, 0.734149, 0.671208, 0.579637, 0.727245, 0.734149, 0.671208, 0.730497, 0.672532, 0.715908, 0.677823, 0.43727, 0.585609, 0.43727, 0.585609, 0.323821, 0.383446, 0.509968, 0.352797, 0.805697, 0.0220529, 0.77612, 0.0183529, 0.350191, 0.680849, 0.357988, 0.678021, 0.360114, 0.67725, 0.78759, 0.364928, 0.728059, 0.386518, 0.836426, 0.360702, 0.721112, 0.402676, 0.736669, 0.475049, 0.749048, 0.484163, 0.502617, 0.318602, 0.820927, 0.0180495, 0.830137, 0.0156287, 0.811717, 0.0204704, 0.805697, 0.0220529, 0.742322, 0.38293, 0.792745, 0.464607, 0.736093, 0.456517, 0.798973, 0.39102, 0.579637, 0.727245, 0.509968, 0.352797, 0.911711, 0.570984, 0.912987, 0.56804, 0.914235, 0.582725, 0.902671, 0.574262, 0.9165, 0.584383, 0.908453, 0.578493, 0.905195, 0.586003, 0.903918, 0.588946, 0.900406, 0.572604, 0.903918, 0.588946, 0.912987, 0.56804, 0.9165, 0.584383, 0.900406, 0.572604, 0.641694, 0.664162, 0.673157, 0.703342, 0.642613, 0.720764, 0.62958, 0.704535, 0.62958, 0.704535, 0.659744, 0.663667, 0.658605, 0.667464, 0.642955, 0.667892, 0.659401, 0.716539, 0.646852, 0.706634, 0.651178, 0.692216, 0.64027, 0.698438, 0.643752, 0.716968, 0.646388, 0.678047, 0.642613, 0.720764, 0.655504, 0.677797, 0.6292, 0.68109, 0.670234, 0.701862, 0.640078, 0.686597, 0.673157, 0.703342, 0.632453, 0.702897, 0.660663, 0.72027, 0.632123, 0.682569, 0.669904, 0.681535, 0.655968, 0.706385, 0.662279, 0.697835, 0.641694, 0.664162, 0.662086, 0.685994, 0.672776, 0.679896, 0.672776, 0.679896, 0.659744, 0.663667, 0.660663, 0.72027, 0.6292, 0.68109, 0.398806, 0.75627, 0.400083, 0.753327, 0.40133, 0.768012, 0.389767, 0.759548, 0.403596, 0.76967, 0.395548, 0.76378, 0.39229, 0.77129, 0.391014, 0.774233, 0.387501, 0.75789, 0.391014, 0.774233, 0.400083, 0.753327, 0.403596, 0.76967, 0.387501, 0.75789, 0.63114, 0.623, 0.623652, 0.613675, 0.630707, 0.596326, 0.616313, 0.604536, 0.620769, 0.623284, 0.613336, 0.623488, 0.641511, 0.622716, 0.643464, 0.606302, 0.618285, 0.606992, 0.618816, 0.639698, 0.630921, 0.609528, 0.623961, 0.632727, 0.638628, 0.632325, 0.631359, 0.636472, 0.631516, 0.646126, 0.645355, 0.603741, 0.648944, 0.622512, 0.630765, 0.599873, 0.631573, 0.649674, 0.610605, 0.623562, 0.638319, 0.613273, 0.616926, 0.642259, 0.643995, 0.639008, 0.651675, 0.622437, 0.645967, 0.641464]; + indices = new [0, 2, 1, 2, 0, 3, 0, 4, 3, 4, 0, 5, 2, 6, 1, 6, 2, 7, 8, 2, 3, 9, 11, 10, 12, 13, 1363, 12, 14, 13, 12, 15, 14, 12, 16, 15, 17, 19, 18, 19, 17, 20, 21, 23, 22, 21, 24, 23, 21, 25, 24, 21, 26, 25, 26, 21, 27, 28, 30, 29, 30, 28, 31, 32, 268, 33, 268, 32, 34, 33, 286, 32, 286, 33, 35, 36, 38, 37, 38, 40, 39, 40, 38, 36, 40, 41, 39, 37, 39, 41, 39, 37, 38, 45, 44, 46, 47, 49, 48, 50, 52, 51, 50, 53, 52, 50, 54, 53, 52, 55, 51, 52, 56, 55, 52, 57, 56, 56, 59, 58, 56, 60, 59, 56, 57, 60, 60, 61, 59, 61, 60, 62, 54, 50, 63, 66, 68, 67, 68, 64, 69, 66, 64, 68, 66, 65, 64, 70, 69, 71, 69, 70, 68, 58, 64, 72, 58, 69, 64, 58, 71, 69, 56, 72, 55, 72, 56, 58, 74, 73, 75, 76, 73, 78, 73, 76, 75, 78, 74, 77, 74, 78, 73, 78, 77, 76, 85, 87, 86, 85, 82, 87, 82, 84, 83, 85, 84, 82, 86, 88, 85, 88, 86, 89, 90, 92, 91, 92, 90, 93, 91, 92, 94, 90, 95, 93, 96, 98, 97, 96, 94, 98, 43, 102, 42, 102, 43, 103, 104, 105, 572, 104, 569, 105, 104, 570, 569, 106, 108, 107, 108, 106, 109, 109, 111, 110, 111, 109, 106, 118, 120, 119, 118, 121, 120, 114, 116, 115, 122, 116, 114, 122, 117, 116, 121, 117, 122, 118, 117, 121, 116, 123, 115, 123, 116, 124, 123, 114, 115, 114, 123, 125, 125, 122, 114, 122, 125, 126, 126, 121, 122, 121, 126, 127, 128, 121, 127, 121, 128, 120, 129, 120, 128, 120, 129, 119, 130, 119, 129, 119, 130, 118, 131, 118, 130, 118, 131, 117, 131, 116, 117, 116, 131, 124, 132, 134, 133, 135, 137, 136, 703, 139, 138, 139, 703, 701, 139, 701, 702, 702, 138, 139, 138, 702, 140, 703, 138, 140, 141, 143, 142, 143, 141, 144, 141, 145, 144, 146, 1370, 147, 148, 149, 143, 150, 152, 151, 152, 150, 153, 151, 154, 150, 155, 151, 152, 151, 155, 154, 155, 152, 153, 156, 158, 157, 158, 156, 159, 160, 157, 161, 157, 160, 156, 169, 171, 170, 169, 162, 171, 162, 168, 167, 169, 168, 162, 171, 174, 170, 174, 171, 175, 175, 176, 174, 176, 175, 177, 837, 179, 178, 179, 837, 180, 179, 182, 181, 837, 181, 180, 181, 837, 183, 184, 186, 185, 186, 184, 187, 175, 171, 162, 188, 163, 189, 188, 162, 163, 188, 175, 162, 188, 177, 175, 188, 190, 177, 208, 204, 209, 208, 205, 204, 207, 205, 208, 207, 206, 205, 207, 196, 206, 195, 196, 207, 194, 196, 195, 194, 197, 196, 194, 198, 197, 204, 191, 209, 203, 191, 204, 202, 191, 203, 202, 192, 191, 202, 193, 192, 201, 193, 202, 200, 193, 201, 199, 193, 200, 198, 193, 199, 194, 193, 198, 193, 210, 192, 210, 193, 211, 212, 214, 213, 213, 215, 212, 215, 216, 212, 217, 219, 218, 217, 220, 219, 220, 217, 221, 220, 218, 219, 218, 220, 222, 221, 222, 220, 225, 224, 223, 225, 223, 1372, 1372, 227, 225, 224, 227, 226, 227, 224, 225, 228, 230, 229, 230, 228, 231, 65, 72, 64, 65, 55, 72, 65, 232, 55, 65, 233, 232, 65, 234, 233, 1373, 67, 1374, 67, 1373, 66, 237, 239, 238, 239, 237, 240, 44, 101, 46, 101, 44, 241, 132, 242, 134, 242, 132, 243, 244, 246, 245, 244, 247, 246, 244, 248, 247, 244, 249, 248, 250, 252, 251, 250, 247, 252, 250, 246, 247, 1373, 65, 66, 65, 1373, 234, 253, 68, 70, 253, 67, 68, 253, 1374, 67, 254, 0xFF, 42, 254, 100, 0xFF, 254, 99, 100, 0xFF, 1368, 42, 0x0100, 258, 0x0101, 258, 0x0100, 259, 135, 260, 137, 260, 135, 261, 262, 132, 133, 132, 262, 243, 229, 264, 263, 229, 265, 264, 229, 230, 265, 260, 133, 137, 133, 260, 262, 269, 244, 245, 244, 269, 270, 271, 263, 264, 271, 269, 263, 271, 270, 269, 272, 274, 273, 272, 275, 274, 272, 276, 275, 249, 281, 248, 249, 282, 281, 249, 283, 282, 237, 285, 284, 285, 237, 238, 287, 42, 102, 287, 254, 42, 287, 288, 254, 289, 291, 290, 291, 289, 292, 293, 135, 136, 135, 293, 261, 294, 236, 295, 294, 296, 236, 294, 297, 296, 235, 301, 302, 235, 300, 301, 235, 299, 300, 235, 298, 299, 303, 305, 304, 305, 303, 306, 308, 310, 309, 310, 308, 311, 249, 244, 312, 312, 283, 249, 313, 315, 314, 101, 1367, 46, 1367, 101, 0xFF, 316, 318, 317, 318, 316, 319, 320, 322, 321, 322, 320, 323, 324, 323, 320, 323, 324, 328, 329, 331, 330, 331, 329, 332, 330, 334, 333, 334, 330, 331, 338, 340, 339, 338, 335, 340, 335, 337, 336, 338, 337, 335, 341, 343, 342, 343, 335, 336, 335, 343, 341, 344, 346, 345, 346, 344, 347, 347, 349, 348, 349, 347, 344, 350, 347, 348, 347, 350, 346, 350, 345, 346, 345, 350, 351, 349, 345, 351, 345, 349, 344, 360, 362, 361, 360, 363, 362, 352, 354, 353, 363, 354, 352, 360, 354, 363, 360, 355, 354, 16, 357, 356, 16, 358, 357, 16, 359, 358, 355, 359, 16, 360, 359, 355, 364, 356, 357, 356, 364, 1391, 357, 358, 364, 360, 1364, 365, 1364, 360, 361, 359, 360, 365, 366, 368, 367, 368, 366, 369, 370, 310, 371, 310, 370, 309, 372, 308, 373, 308, 372, 311, 375, 377, 376, 375, 378, 377, 379, 374, 380, 378, 374, 379, 374, 361, 362, 378, 361, 374, 375, 361, 378, 375, 1364, 361, 381, 373, 382, 381, 370, 373, 381, 383, 370, 381, 384, 383, 381, 385, 384, 386, 3, 4, 3, 386, 8, 7, 8, 386, 8, 7, 2, 387, 389, 388, 389, 387, 317, 0x0100, 390, 259, 390, 0x0100, 391, 393, 394, 319, 394, 314, 392, 393, 314, 394, 390, 394, 392, 390, 395, 394, 390, 396, 395, 390, 391, 396, 397, 318, 398, 318, 397, 399, 398, 400, 397, 400, 398, 401, 401, 394, 395, 394, 401, 319, 396, 401, 395, 401, 396, 400, 393, 316, 402, 316, 393, 319, 318, 389, 317, 389, 318, 399, 317, 402, 316, 317, 313, 402, 317, 387, 313, 321, 404, 403, 404, 321, 322, 274, 405, 273, 405, 407, 406, 274, 407, 405, 365, 19, 359, 19, 365, 18, 358, 17, 364, 17, 358, 20, 359, 20, 358, 20, 359, 19, 408, 410, 409, 408, 411, 410, 408, 412, 411, 408, 413, 412, 421, 417, 420, 416, 417, 421, 416, 418, 417, 420, 414, 421, 419, 414, 420, 418, 414, 419, 418, 415, 414, 416, 415, 418, 417, 422, 420, 422, 417, 423, 422, 419, 420, 419, 422, 424, 419, 425, 418, 425, 419, 424, 417, 425, 423, 425, 417, 418, 426, 415, 416, 415, 426, 427, 415, 428, 414, 428, 415, 427, 421, 426, 416, 426, 421, 429, 421, 428, 429, 428, 421, 414, 430, 432, 431, 430, 339, 432, 430, 338, 339, 384, 434, 433, 434, 384, 435, 436, 438, 437, 438, 436, 439, 275, 440, 274, 440, 275, 441, 366, 379, 380, 379, 366, 367, 378, 367, 368, 367, 378, 379, 366, 446, 369, 366, 447, 446, 442, 444, 443, 442, 445, 444, 445, 380, 374, 442, 380, 445, 447, 380, 442, 366, 380, 447, 353, 444, 352, 444, 353, 443, 363, 374, 448, 374, 363, 445, 363, 444, 445, 444, 363, 352, 363, 1365, 1362, 1362, 362, 363, 12, 446, 16, 446, 12, 369, 355, 442, 354, 442, 355, 447, 355, 446, 447, 446, 355, 16, 449, 1366, 450, 450, 451, 449, 442, 353, 354, 353, 442, 443, 452, 454, 453, 454, 452, 455, 375, 437, 456, 437, 375, 376, 457, 459, 458, 459, 457, 436, 377, 368, 460, 368, 377, 378, 461, 279, 462, 454, 124, 453, 280, 124, 454, 280, 123, 124, 279, 123, 280, 461, 123, 279, 463, 465, 464, 465, 463, 466, 459, 452, 458, 452, 459, 455, 385, 435, 384, 435, 385, 467, 468, 439, 469, 439, 468, 438, 434, 467, 470, 467, 434, 435, 433, 464, 465, 433, 470, 464, 433, 434, 470, 471, 276, 472, 276, 471, 275, 461, 471, 472, 471, 461, 462, 468, 437, 438, 437, 468, 456, 439, 457, 469, 457, 439, 436, 26, 474, 473, 474, 26, 475, 1375, 475, 26, 26, 27, 1375, 474, 299, 473, 299, 474, 300, 299, 476, 473, 299, 477, 476, 299, 478, 477, 479, 481, 480, 479, 482, 481, 479, 483, 482, 484, 486, 485, 484, 487, 486, 484, 488, 487, 24, 473, 476, 24, 26, 473, 24, 25, 26, 476, 23, 24, 23, 476, 477, 477, 22, 23, 22, 477, 478, 27, 478, 299, 27, 22, 478, 27, 21, 22, 484, 482, 488, 482, 484, 481, 485, 481, 484, 481, 485, 480, 486, 480, 485, 480, 486, 479, 487, 479, 486, 479, 487, 483, 489, 491, 490, 491, 489, 492, 28, 492, 31, 492, 28, 491, 28, 490, 491, 490, 28, 29, 30, 490, 29, 490, 30, 489, 492, 30, 31, 30, 492, 489, 493, 495, 494, 495, 493, 496, 497, 493, 498, 493, 497, 496, 499, 501, 500, 501, 499, 212, 502, 504, 503, 504, 502, 505, 504, 506, 503, 506, 504, 507, 313, 507, 315, 506, 387, 388, 507, 387, 506, 313, 387, 507, 501, 502, 500, 502, 501, 505, 508, 497, 498, 497, 508, 509, 510, 509, 508, 510, 511, 509, 510, 0x0200, 511, 513, 495, 0x0202, 495, 513, 494, 511, 513, 0x0202, 511, 515, 513, 511, 0x0200, 515, 404, 212, 499, 212, 404, 214, 404, 499, 403, 404, 516, 214, 517, 516, 518, 516, 517, 214, 33, 268, 35, 32, 286, 34, 519, 412, 413, 412, 519, 520, 267, 522, 521, 522, 267, 523, 524, 408, 409, 408, 524, 525, 98, 526, 90, 526, 98, 94, 530, 108, 110, 529, 108, 530, 529, 107, 108, 110, 527, 530, 111, 527, 110, 107, 527, 111, 107, 528, 527, 529, 528, 107, 531, 533, 532, 532, 533, 534, 531, 532, 535, 535, 532, 534, 539, 541, 540, 539, 536, 541, 536, 538, 537, 539, 538, 536, 539, 542, 538, 539, 543, 542, 539, 544, 543, 539, 545, 544, 546, 548, 547, 546, 549, 548, 546, 550, 549, 546, 551, 550, 554, 546, 555, 554, 551, 546, 551, 553, 552, 554, 553, 551, 265, 271, 264, 271, 265, 556, 556, 270, 271, 270, 556, 244, 557, 144, 558, 144, 557, 143, 559, 142, 560, 142, 559, 141, 48, 45, 47, 45, 48, 44, 47, 46, 49, 46, 47, 45, 59, 71, 58, 59, 561, 71, 59, 523, 561, 232, 51, 55, 522, 51, 232, 523, 51, 522, 523, 50, 51, 59, 50, 523, 562, 564, 563, 564, 562, 565, 566, 103, 567, 566, 102, 103, 566, 287, 102, 105, 569, 568, 572, 570, 104, 570, 572, 571, 573, 575, 574, 575, 573, 576, 575, 578, 577, 578, 575, 576, 579, 578, 580, 578, 579, 577, 579, 573, 574, 573, 579, 580, 181, 582, 581, 582, 181, 183, 583, 585, 584, 585, 583, 586, 561, 70, 71, 561, 253, 70, 561, 266, 253, 587, 565, 588, 565, 587, 564, 565, 241, 588, 241, 565, 562, 589, 567, 590, 567, 589, 566, 567, 0xFF, 590, 567, 1368, 0xFF, 567, 103, 1368, 233, 522, 232, 522, 233, 521, 561, 267, 266, 267, 561, 523, 155, 592, 591, 592, 155, 153, 592, 150, 593, 150, 592, 153, 287, 589, 288, 589, 287, 566, 594, 150, 154, 150, 594, 593, 594, 155, 591, 155, 594, 154, 595, 562, 563, 595, 241, 562, 595, 101, 241, 563, 101, 595, 563, 587, 101, 563, 564, 587, 254, 44, 48, 44, 254, 241, 333, 329, 330, 608, 605, 604, 607, 605, 608, 607, 602, 605, 606, 602, 607, 329, 602, 606, 333, 602, 329, 596, 598, 597, 608, 598, 596, 604, 598, 608, 604, 599, 598, 603, 599, 604, 603, 600, 599, 603, 601, 600, 602, 601, 603, 333, 601, 602, 62, 610, 613, 62, 611, 610, 62, 612, 611, 60, 612, 62, 60, 609, 612, 57, 609, 60, 57, 610, 609, 57, 613, 610, 57, 53, 613, 57, 52, 53, 611, 614, 610, 614, 611, 615, 612, 615, 611, 614, 612, 609, 612, 614, 615, 614, 609, 610, 83, 851, 82, 851, 83, 81, 240, 284, 616, 284, 240, 237, 617, 186, 187, 186, 617, 618, 184, 617, 187, 617, 184, 619, 184, 620, 619, 620, 184, 185, 186, 620, 185, 620, 186, 618, 628, 623, 627, 622, 623, 628, 622, 624, 623, 625, 211, 626, 625, 210, 211, 625, 621, 210, 624, 621, 625, 622, 621, 624, 215, 210, 621, 210, 215, 213, 628, 195, 207, 628, 193, 195, 628, 211, 193, 629, 625, 630, 629, 624, 625, 629, 631, 624, 227, 1372, 226, 198, 627, 640, 198, 626, 627, 198, 199, 626, 406, 213, 214, 213, 406, 193, 632, 634, 633, 632, 635, 634, 632, 636, 635, 632, 637, 636, 637, 639, 638, 638, 624, 637, 636, 584, 585, 636, 624, 584, 636, 637, 624, 634, 629, 633, 634, 631, 629, 624, 583, 584, 631, 583, 624, 634, 583, 631, 585, 635, 636, 635, 585, 586, 635, 583, 634, 583, 635, 586, 407, 193, 406, 193, 407, 195, 627, 206, 640, 627, 205, 206, 627, 623, 205, 639, 205, 638, 205, 639, 641, 623, 638, 205, 638, 623, 624, 646, 221, 217, 646, 651, 221, 651, 647, 650, 646, 647, 651, 652, 630, 1372, 646, 630, 652, 217, 630, 646, 218, 630, 217, 218, 642, 630, 651, 642, 218, 650, 642, 651, 642, 206, 639, 642, 640, 206, 640, 643, 198, 640, 224, 643, 640, 223, 224, 642, 223, 640, 650, 223, 642, 649, 223, 650, 648, 223, 649, 1372, 644, 652, 223, 644, 1372, 648, 644, 223, 647, 644, 648, 647, 645, 644, 646, 645, 647, 200, 626, 199, 626, 200, 653, 630, 654, 1372, 654, 630, 625, 83, 655, 81, 83, 656, 655, 83, 84, 656, 88, 84, 85, 88, 656, 84, 88, 657, 656, 661, 663, 662, 663, 661, 664, 665, 667, 666, 667, 665, 668, 669, 671, 670, 671, 669, 672, 673, 526, 94, 526, 673, 674, 675, 669, 676, 669, 675, 672, 677, 86, 87, 677, 89, 86, 677, 678, 89, 679, 681, 680, 681, 679, 657, 671, 682, 670, 682, 671, 683, 278, 675, 676, 675, 278, 684, 682, 661, 662, 661, 682, 683, 526, 685, 90, 685, 526, 674, 660, 277, 307, 277, 660, 686, 93, 688, 687, 688, 93, 95, 285, 616, 284, 616, 285, 689, 278, 686, 684, 686, 278, 277, 663, 665, 666, 665, 663, 664, 679, 658, 659, 658, 679, 680, 690, 94, 92, 94, 690, 673, 616, 239, 240, 239, 616, 689, 621, 216, 215, 621, 208, 216, 621, 622, 208, 208, 628, 207, 628, 208, 622, 677, 851, 691, 677, 82, 851, 677, 87, 82, 93, 690, 92, 690, 93, 687, 95, 685, 688, 685, 95, 90, 681, 667, 668, 681, 678, 667, 89, 657, 88, 678, 657, 89, 681, 657, 678, 692, 694, 693, 694, 692, 695, 695, 603, 694, 603, 695, 602, 695, 605, 602, 605, 695, 692, 604, 692, 693, 692, 604, 605, 604, 694, 603, 694, 604, 693, 696, 697, 430, 696, 698, 697, 696, 699, 698, 700, 702, 701, 704, 706, 705, 707, 706, 704, 80, 706, 707, 80, 79, 706, 79, 708, 706, 706, 708, 709, 706, 710, 705, 706, 709, 710, 711, 713, 712, 713, 711, 714, 715, 717, 716, 717, 715, 718, 572, 568, 571, 568, 572, 105, 719, 441, 720, 441, 719, 721, 722, 719, 720, 719, 722, 723, 441, 724, 440, 724, 441, 721, 722, 724, 723, 724, 722, 440, 106, 107, 111, 108, 109, 110, 727, 729, 728, 727, 725, 729, 727, 726, 725, 112, 729, 725, 729, 112, 113, 291, 305, 306, 305, 291, 292, 730, 732, 731, 730, 733, 732, 730, 734, 733, 730, 735, 734, 739, 741, 740, 736, 738, 737, 741, 738, 736, 739, 738, 741, 727, 303, 726, 303, 727, 742, 304, 726, 303, 304, 725, 726, 304, 112, 725, 744, 746, 745, 744, 747, 746, 744, 748, 747, 749, 732, 750, 749, 731, 732, 749, 730, 731, 751, 727, 728, 727, 751, 742, 729, 751, 728, 751, 729, 743, 752, 748, 753, 752, 747, 748, 752, 754, 747, 733, 752, 753, 754, 734, 735, 752, 734, 754, 733, 734, 752, 739, 737, 738, 739, 746, 737, 739, 745, 746, 739, 744, 745, 741, 750, 740, 741, 749, 750, 741, 736, 749, 113, 755, 756, 755, 113, 112, 757, 759, 758, 759, 757, 760, 759, 755, 112, 755, 759, 760, 733, 750, 732, 733, 740, 750, 739, 748, 744, 740, 748, 739, 740, 753, 748, 733, 753, 740, 759, 289, 758, 759, 292, 289, 292, 304, 305, 292, 112, 304, 759, 112, 292, 281, 247, 248, 247, 281, 252, 761, 763, 762, 763, 761, 764, 761, 766, 765, 766, 761, 762, 766, 767, 765, 767, 766, 0x0300, 767, 763, 764, 763, 767, 0x0300, 770, 549, 550, 547, 735, 769, 548, 735, 547, 548, 1376, 735, 549, 1376, 548, 770, 1376, 549, 552, 1377, 772, 0x0303, 554, 555, 1381, 554, 0x0303, 1381, 553, 554, 1377, 553, 1381, 552, 553, 1377, 251, 281, 282, 281, 251, 252, 536, 540, 541, 773, 242, 1379, 773, 537, 242, 540, 537, 773, 536, 537, 540, 544, 542, 543, 774, 775, 730, 774, 545, 775, 542, 545, 774, 544, 545, 542, 424, 423, 425, 423, 424, 422, 776, 778, 777, 778, 776, 779, 780, 779, 776, 779, 780, 781, 760, 756, 755, 756, 760, 757, 134, 783, 782, 783, 134, 136, 782, 137, 133, 137, 782, 783, 645, 784, 644, 784, 645, 785, 652, 787, 786, 652, 784, 787, 652, 644, 784, 786, 646, 652, 646, 786, 788, 789, 791, 790, 789, 792, 791, 789, 793, 792, 789, 795, 794, 795, 789, 790, 796, 793, 797, 793, 796, 792, 648, 649, 798, 647, 799, 650, 800, 802, 801, 803, 805, 804, 806, 808, 807, 809, 811, 810, 703, 813, 812, 813, 703, 140, 702, 813, 140, 702, 510, 813, 702, 814, 510, 815, 409, 410, 409, 815, 524, 413, 525, 519, 525, 413, 408, 818, 812, 819, 818, 703, 812, 818, 701, 703, 228, 816, 231, 228, 817, 816, 701, 817, 228, 818, 817, 701, 702, 515, 814, 702, 559, 515, 228, 700, 701, 229, 700, 228, 558, 700, 229, 559, 700, 558, 702, 700, 559, 820, 822, 821, 822, 820, 823, 823, 819, 822, 819, 823, 818, 820, 816, 817, 816, 820, 821, 1392, 143, 149, 143, 1392, 824, 825, 149, 1369, 149, 825, 1392, 573, 578, 576, 578, 573, 580, 311, 371, 310, 371, 311, 372, 218, 221, 651, 221, 218, 826, 827, 646, 788, 827, 645, 646, 827, 785, 645, 828, 794, 795, 828, 797, 794, 828, 796, 797, 829, 159, 830, 159, 829, 158, 157, 831, 161, 157, 829, 831, 157, 158, 829, 832, 156, 160, 832, 159, 156, 832, 830, 159, 832, 161, 831, 161, 832, 160, 172, 177, 190, 177, 172, 176, 833, 173, 172, 173, 833, 834, 834, 169, 173, 169, 834, 168, 166, 834, 833, 166, 168, 834, 166, 167, 168, 173, 170, 174, 170, 173, 169, 172, 174, 176, 174, 172, 173, 164, 189, 163, 189, 164, 835, 836, 164, 165, 164, 836, 835, 190, 833, 172, 166, 836, 165, 833, 836, 166, 190, 836, 833, 190, 188, 836, 180, 181, 182, 840, 842, 841, 180, 182, 179, 637, 642, 639, 642, 637, 632, 632, 629, 642, 629, 632, 633, 787, 785, 827, 785, 787, 784, 786, 827, 788, 827, 786, 787, 790, 828, 795, 828, 790, 791, 791, 796, 828, 796, 791, 792, 405, 214, 517, 214, 405, 406, 648, 799, 647, 799, 648, 798, 798, 650, 799, 650, 798, 649, 800, 805, 803, 805, 800, 801, 801, 804, 805, 804, 801, 802, 807, 810, 811, 810, 807, 808, 806, 811, 809, 811, 806, 807, 843, 777, 778, 777, 843, 844, 781, 846, 845, 846, 781, 780, 530, 848, 847, 848, 530, 527, 849, 718, 850, 718, 849, 717, 714, 655, 713, 81, 691, 851, 655, 691, 81, 714, 691, 655, 848, 528, 852, 528, 848, 527, 714, 853, 691, 853, 714, 711, 853, 712, 854, 712, 853, 711, 246, 716, 855, 716, 250, 715, 246, 250, 716, 856, 528, 529, 528, 856, 852, 718, 250, 850, 250, 718, 715, 655, 712, 713, 712, 655, 854, 849, 716, 717, 716, 849, 855, 856, 530, 847, 530, 856, 529, 231, 265, 230, 556, 857, 244, 265, 857, 556, 231, 857, 265, 231, 283, 857, 552, 550, 551, 552, 770, 550, 552, 772, 770, 547, 555, 546, 547, 0x0303, 555, 547, 769, 0x0303, 773, 539, 540, 773, 545, 539, 773, 775, 545, 537, 134, 242, 774, 538, 542, 293, 538, 774, 136, 538, 293, 134, 538, 136, 537, 538, 134, 463, 858, 466, 858, 463, 859, 860, 258, 861, 258, 860, 0x0101, 862, 858, 859, 858, 862, 863, 862, 864, 863, 864, 862, 865, 860, 864, 865, 864, 860, 861, 866, 704, 867, 704, 866, 707, 80, 866, 868, 866, 80, 707, 869, 705, 710, 705, 869, 870, 871, 710, 709, 710, 871, 869, 79, 868, 872, 868, 79, 80, 871, 708, 873, 708, 871, 709, 873, 79, 872, 79, 873, 708, 867, 705, 870, 705, 867, 704, 781, 778, 779, 781, 843, 778, 781, 845, 843, 777, 780, 776, 777, 846, 780, 777, 844, 846, 818, 820, 817, 820, 818, 823, 516, 327, 518, 327, 516, 874, 875, 325, 326, 325, 875, 876, 875, 327, 874, 327, 875, 326, 333, 877, 601, 877, 333, 334, 600, 877, 878, 877, 600, 601, 599, 878, 879, 878, 599, 600, 880, 608, 596, 608, 880, 881, 882, 608, 881, 608, 882, 607, 883, 607, 882, 607, 883, 606, 884, 599, 879, 599, 884, 598, 884, 597, 598, 597, 884, 885, 885, 596, 597, 596, 885, 880, 329, 883, 332, 883, 329, 606, 886, 888, 887, 888, 886, 889, 889, 432, 888, 432, 889, 431, 890, 892, 891, 892, 890, 893, 699, 891, 892, 891, 699, 696, 893, 895, 894, 895, 893, 890, 896, 895, 897, 895, 896, 894, 886, 896, 897, 896, 886, 887, 898, 900, 899, 900, 898, 901, 900, 902, 899, 902, 900, 903, 902, 905, 904, 905, 902, 903, 905, 907, 904, 906, 698, 699, 908, 698, 906, 907, 698, 908, 905, 698, 907, 901, 336, 337, 901, 909, 336, 909, 898, 910, 901, 898, 909, 920, 339, 340, 920, 432, 339, 920, 888, 432, 699, 911, 906, 892, 911, 699, 893, 911, 892, 911, 913, 912, 893, 913, 911, 894, 913, 893, 894, 914, 913, 896, 914, 894, 896, 915, 914, 896, 916, 915, 887, 916, 896, 887, 917, 916, 887, 918, 917, 887, 919, 918, 888, 919, 887, 920, 919, 888, 921, 911, 912, 911, 921, 922, 926, 921, 927, 898, 923, 910, 898, 924, 923, 899, 924, 898, 902, 924, 899, 904, 924, 902, 907, 924, 904, 921, 924, 907, 921, 925, 924, 926, 925, 921, 928, 917, 918, 928, 929, 917, 928, 930, 929, 933, 929, 930, 933, 931, 929, 933, 932, 931, 931, 335, 341, 931, 340, 335, 340, 934, 920, 931, 934, 340, 931, 932, 934, 926, 915, 925, 915, 926, 914, 927, 914, 926, 914, 927, 913, 921, 913, 927, 913, 921, 912, 342, 931, 341, 342, 929, 931, 342, 935, 929, 915, 924, 925, 924, 915, 916, 908, 911, 922, 911, 908, 906, 907, 922, 921, 922, 907, 908, 917, 924, 916, 924, 917, 929, 919, 934, 936, 934, 919, 920, 933, 934, 932, 934, 933, 936, 919, 928, 918, 928, 919, 936, 928, 933, 930, 933, 928, 936, 338, 430, 697, 372, 370, 371, 370, 372, 373, 337, 338, 901, 903, 698, 905, 698, 903, 697, 901, 338, 697, 901, 903, 900, 903, 901, 697, 672, 683, 671, 683, 672, 686, 680, 660, 658, 660, 680, 686, 686, 675, 684, 675, 686, 672, 664, 683, 665, 683, 664, 661, 665, 681, 668, 681, 665, 680, 665, 686, 680, 686, 665, 683, 876, 323, 328, 874, 876, 875, 876, 874, 323, 404, 874, 516, 404, 323, 874, 404, 322, 323, 325, 328, 324, 328, 325, 876, 398, 319, 401, 319, 398, 318, 509, 0x0202, 497, 0x0202, 509, 511, 497, 495, 496, 495, 497, 0x0202, 724, 719, 723, 719, 724, 721, 471, 441, 275, 441, 471, 720, 844, 462, 846, 462, 720, 471, 844, 720, 462, 844, 722, 720, 846, 454, 845, 846, 280, 454, 846, 279, 280, 846, 462, 279, 722, 832, 440, 832, 722, 830, 315, 392, 314, 392, 315, 390, 766, 763, 0x0300, 763, 766, 762, 577, 402, 575, 402, 764, 393, 402, 767, 764, 577, 767, 402, 575, 313, 574, 313, 575, 402, 577, 765, 767, 765, 577, 579, 313, 579, 574, 579, 761, 765, 313, 761, 579, 313, 314, 761, 764, 314, 393, 314, 764, 761, 382, 1391, 381, 382, 356, 1391, 382, 369, 356, 382, 368, 369, 382, 460, 368, 937, 939, 938, 941, 942, 940, 939, 941, 938, 941, 939, 942, 938, 940, 937, 940, 938, 941, 943, 945, 944, 947, 948, 946, 945, 947, 944, 947, 945, 948, 944, 946, 943, 946, 944, 947, 949, 951, 950, 953, 954, 952, 951, 953, 950, 953, 951, 954, 950, 952, 949, 952, 950, 953, 955, 957, 956, 959, 960, 958, 957, 959, 956, 959, 957, 960, 956, 958, 955, 958, 956, 959, 961, 963, 962, 965, 966, 964, 963, 965, 962, 965, 963, 966, 962, 964, 961, 964, 962, 965, 967, 969, 968, 971, 972, 970, 969, 971, 968, 971, 969, 972, 968, 970, 967, 970, 968, 971, 973, 975, 974, 977, 978, 976, 975, 977, 974, 977, 975, 978, 974, 976, 973, 976, 974, 977, 979, 981, 980, 983, 984, 982, 981, 983, 980, 983, 981, 984, 980, 982, 979, 982, 980, 983, 620, 617, 619, 617, 620, 618, 53, 985, 613, 54, 62, 986, 54, 985, 53, 985, 54, 986, 986, 613, 985, 613, 986, 62, 987, 989, 988, 989, 987, 990, 991, 992, 990, 992, 991, 993, 991, 987, 994, 987, 991, 990, 989, 990, 992, 992, 988, 989, 992, 995, 988, 992, 996, 995, 997, 996, 998, 996, 997, 995, 999, 996, 992, 999, 1000, 996, 999, 993, 1000, 999, 992, 993, 1001, 1003, 1002, 1003, 1001, 1004, 924, 935, 1004, 935, 924, 929, 924, 1001, 923, 1001, 924, 1004, 1003, 1004, 935, 935, 1002, 1003, 935, 1005, 1002, 935, 342, 1005, 336, 342, 343, 342, 336, 1005, 1006, 1008, 1007, 1009, 1011, 1010, 1011, 1009, 1012, 1012, 1013, 1011, 1009, 1010, 1014, 1013, 1010, 1011, 1010, 1013, 1014, 410, 1015, 815, 1015, 410, 411, 1015, 412, 520, 412, 1015, 411, 558, 1382, 559, 1382, 558, 144, 1016, 181, 581, 181, 1016, 179, 838, 1383, 839, 183, 1384, 582, 1385, 1371, 1017, 1016, 836, 188, 835, 1386, 189, 835, 582, 1386, 835, 581, 582, 836, 581, 835, 1016, 581, 836, 0x0404, 407, 274, 407, 0x0404, 195, 211, 627, 626, 627, 211, 628, 440, 0x0404, 274, 0x0404, 440, 832, 143, 560, 148, 560, 143, 557, 1022, 0x0303, 429, 0x0303, 1022, 1381, 657, 659, 656, 659, 657, 679, 843, 437, 769, 437, 843, 436, 436, 843, 845, 775, 735, 730, 735, 843, 769, 775, 843, 735, 843, 291, 844, 843, 290, 291, 1378, 1021, 1020, 290, 1021, 1378, 290, 773, 1021, 843, 773, 290, 775, 773, 843, 455, 845, 454, 455, 436, 845, 455, 459, 436, 659, 660, 307, 660, 659, 658, 382, 307, 460, 383, 309, 370, 590, 871, 1030, 590, 869, 871, 869, 570, 870, 872, 589, 1031, 868, 589, 872, 868, 288, 589, 288, 241, 254, 288, 588, 241, 868, 588, 288, 373, 656, 382, 308, 656, 373, 309, 656, 308, 588, 656, 309, 868, 656, 588, 866, 656, 868, 866, 655, 656, 866, 854, 655, 867, 854, 866, 870, 854, 867, 667, 663, 666, 278, 460, 307, 676, 460, 278, 460, 376, 377, 676, 376, 460, 662, 376, 676, 662, 426, 376, 662, 427, 426, 427, 1380, 1023, 1380, 774, 0x0400, 427, 774, 1380, 774, 261, 293, 774, 260, 261, 427, 260, 774, 427, 262, 260, 662, 262, 427, 663, 262, 662, 242, 1025, 1379, 243, 1025, 242, 243, 285, 1025, 239, 1377, 1026, 239, 772, 1377, 689, 772, 239, 770, 1027, 1376, 770, 742, 1027, 742, 306, 303, 770, 306, 742, 291, 722, 844, 306, 722, 291, 306, 830, 722, 770, 830, 306, 772, 830, 770, 689, 830, 772, 689, 829, 830, 831, 0x0404, 832, 208, 212, 216, 208, 501, 212, 259, 861, 258, 259, 864, 861, 259, 593, 864, 390, 593, 259, 315, 593, 390, 315, 592, 593, 592, 557, 591, 592, 560, 557, 560, 515, 559, 560, 513, 515, 560, 494, 513, 592, 494, 560, 315, 494, 592, 507, 494, 315, 507, 493, 494, 504, 493, 507, 504, 498, 493, 505, 498, 504, 505, 508, 498, 501, 508, 505, 501, 510, 508, 208, 510, 501, 208, 813, 510, 0x0404, 813, 208, 831, 813, 0x0404, 829, 813, 831, 829, 812, 813, 689, 812, 829, 689, 819, 812, 285, 819, 689, 285, 822, 819, 243, 822, 285, 243, 821, 822, 262, 821, 243, 816, 283, 231, 816, 282, 283, 821, 282, 816, 282, 856, 251, 282, 852, 856, 282, 848, 852, 821, 848, 282, 262, 848, 821, 856, 674, 251, 847, 674, 856, 847, 685, 674, 848, 685, 847, 262, 685, 848, 663, 685, 262, 663, 688, 685, 663, 687, 688, 667, 687, 663, 678, 687, 667, 678, 690, 687, 677, 690, 678, 690, 674, 673, 677, 674, 690, 677, 251, 674, 251, 850, 250, 677, 850, 251, 691, 850, 677, 691, 849, 850, 853, 849, 691, 853, 855, 849, 855, 245, 246, 853, 245, 855, 854, 245, 853, 870, 245, 854, 870, 269, 245, 570, 269, 870, 571, 269, 570, 568, 269, 571, 568, 263, 269, 569, 263, 568, 263, 558, 229, 558, 591, 557, 594, 524, 815, 591, 524, 594, 558, 524, 591, 558, 525, 524, 263, 525, 558, 569, 525, 263, 570, 525, 569, 520, 815, 1015, 863, 466, 858, 863, 76, 466, 864, 76, 863, 864, 75, 76, 593, 75, 864, 594, 75, 593, 815, 75, 594, 520, 75, 815, 74, 233, 1029, 74, 521, 233, 75, 521, 74, 520, 521, 75, 519, 521, 520, 519, 267, 521, 525, 267, 519, 570, 267, 525, 869, 267, 570, 590, 267, 869, 0xFF, 267, 590, 101, 267, 0xFF, 101, 266, 267, 587, 266, 101, 266, 1374, 253, 587, 1374, 266, 587, 1373, 1374, 1373, 1018, 1032, 1373, 1019, 1018, 1373, 76, 1019, 587, 76, 1373, 587, 466, 76, 588, 466, 587, 309, 466, 588, 309, 465, 466, 383, 465, 309, 465, 384, 433, 383, 384, 465, 659, 382, 656, 382, 659, 307, 277, 278, 307, 769, 429, 0x0303, 429, 376, 426, 769, 376, 429, 769, 437, 376, 670, 662, 676, 662, 670, 682, 669, 670, 676, 630, 642, 629, 756, 758, 113, 758, 756, 757, 290, 758, 289, 290, 113, 758, 290, 1378, 113, 1033, 1034, 1035, 1037, 1036, 1038, 1034, 1037, 1038, 1037, 1034, 1033, 1035, 1038, 1036, 1038, 1035, 1034, 1039, 1040, 1390, 1040, 1041, 1389, 1390, 1040, 1050, 1039, 1388, 1040, 1050, 1040, 1387, 1388, 1041, 1040, 1040, 1044, 1387, 1040, 1389, 1044, 1043, 1387, 1044, 1387, 1043, 1045, 1388, 1046, 1048, 1046, 1388, 1039, 1049, 1387, 1045, 1387, 1049, 1050, 1051, 1041, 1052, 1041, 1051, 1389, 1052, 1388, 1048, 1388, 1052, 1041, 1039, 1054, 1046, 1054, 1039, 1390, 1054, 1050, 1049, 1050, 1054, 1390, 1051, 1044, 1389, 1044, 1051, 1043, 1047, 1058, 1059, 1047, 1057, 1058, 1042, 1053, 1055, 1042, 1056, 1053, 1057, 1056, 1042, 1047, 1056, 1057, 1060, 1061, 1062, 1064, 1063, 1065, 1061, 1064, 1065, 1064, 1061, 1060, 1062, 1065, 1063, 1065, 1062, 1061, 1069, 1070, 1071, 1066, 1067, 1068, 1071, 1067, 1066, 1067, 1071, 1070, 1069, 1066, 1068, 1066, 1069, 1071, 1075, 1076, 1077, 1072, 1073, 1074, 1073, 1077, 1076, 1077, 1073, 1072, 1072, 1075, 1077, 1075, 1072, 1074, 1081, 1082, 1083, 1078, 1079, 1080, 1079, 1083, 1082, 1083, 1079, 1078, 1078, 1081, 1083, 1081, 1078, 1080, 1087, 1088, 1089, 1084, 1085, 1086, 1085, 1089, 1088, 1089, 1085, 1084, 1084, 1087, 1089, 1087, 1084, 1086, 1095, 1090, 1091, 1090, 1095, 1097, 1095, 1092, 1094, 1092, 1095, 1091, 1096, 1092, 1093, 1092, 1096, 1094, 1096, 1090, 1097, 1090, 1096, 1093, 1098, 1095, 1094, 1095, 1098, 1099, 1100, 1094, 1096, 1094, 1100, 1098, 1101, 1095, 1099, 1095, 1101, 1097, 1101, 1096, 1097, 1096, 1101, 1100, 1107, 1102, 1103, 1102, 1107, 1109, 1107, 1104, 1106, 1104, 1107, 1103, 1108, 1104, 1105, 1104, 1108, 1106, 1108, 1102, 1109, 1102, 1108, 1105, 1110, 1107, 1106, 1107, 1110, 1111, 1112, 1106, 1108, 1106, 1112, 1110, 1113, 1107, 1111, 1107, 1113, 1109, 1113, 1108, 1109, 1108, 1113, 1112, 1119, 1114, 1115, 1114, 1119, 1121, 1119, 1116, 1118, 1116, 1119, 1115, 1120, 1116, 1117, 1116, 1120, 1118, 1120, 1114, 1121, 1114, 1120, 1117, 1122, 1119, 1118, 1119, 1122, 1123, 1124, 1118, 1120, 1118, 1124, 1122, 1125, 1119, 1123, 1119, 1125, 1121, 1125, 1120, 1121, 1120, 1125, 1124, 1131, 1126, 1127, 1126, 1131, 1133, 1131, 1128, 1130, 1128, 1131, 1127, 1132, 1128, 1129, 1128, 1132, 1130, 1132, 1126, 1133, 1126, 1132, 1129, 1134, 1131, 1130, 1131, 1134, 1135, 1136, 1130, 1132, 1130, 1136, 1134, 1137, 1131, 1135, 1131, 1137, 1133, 1137, 1132, 1133, 1132, 1137, 1136, 1143, 1138, 1139, 1138, 1143, 1145, 1143, 1140, 1142, 1140, 1143, 1139, 1144, 1140, 1141, 1140, 1144, 1142, 1144, 1138, 1145, 1138, 1144, 1141, 1146, 1143, 1142, 1143, 1146, 1147, 1148, 1142, 1144, 1142, 1148, 1146, 1149, 1143, 1147, 1143, 1149, 1145, 1149, 1144, 1145, 1144, 1149, 1148, 1155, 1150, 1151, 1150, 1155, 1157, 1155, 1152, 1154, 1152, 1155, 1151, 1156, 1152, 1153, 1152, 1156, 1154, 1156, 1150, 1157, 1150, 1156, 1153, 1158, 1155, 1154, 1155, 1158, 1159, 1160, 1154, 1156, 1154, 1160, 1158, 1161, 1155, 1159, 1155, 1161, 1157, 1161, 1156, 1157, 1156, 1161, 1160, 1167, 1162, 1163, 1162, 1167, 1169, 1167, 1164, 1166, 1164, 1167, 1163, 1168, 1164, 1165, 1164, 1168, 1166, 1168, 1162, 1169, 1162, 1168, 1165, 1170, 1167, 1166, 1167, 1170, 1171, 1172, 1166, 1168, 1166, 1172, 1170, 1173, 1167, 1171, 1167, 1173, 1169, 1173, 1168, 1169, 1168, 1173, 1172, 1179, 1174, 1175, 1174, 1179, 1181, 1179, 1176, 1178, 1176, 1179, 1175, 1180, 1176, 1177, 1176, 1180, 1178, 1180, 1174, 1181, 1174, 1180, 1177, 1182, 1179, 1178, 1179, 1182, 1183, 1184, 1178, 1180, 1178, 1184, 1182, 1185, 1179, 1183, 1179, 1185, 1181, 1185, 1180, 1181, 1180, 1185, 1184, 1191, 1186, 1187, 1186, 1191, 1193, 1191, 1188, 1190, 1188, 1191, 1187, 1192, 1188, 1189, 1188, 1192, 1190, 1192, 1186, 1193, 1186, 1192, 1189, 1194, 1191, 1190, 1191, 1194, 1195, 1196, 1190, 1192, 1190, 1196, 1194, 1197, 1191, 1195, 1191, 1197, 1193, 1197, 1192, 1193, 1192, 1197, 1196, 1203, 1198, 1199, 1198, 1203, 1205, 1203, 1200, 1202, 1200, 1203, 1199, 1204, 1200, 1201, 1200, 1204, 1202, 1204, 1198, 1205, 1198, 1204, 1201, 1206, 1203, 1202, 1203, 1206, 1207, 1208, 1202, 1204, 1202, 1208, 1206, 1209, 1203, 1207, 1203, 1209, 1205, 1209, 1204, 1205, 1204, 1209, 1208, 1215, 1210, 1211, 1210, 1215, 1217, 1215, 1212, 1214, 1212, 1215, 1211, 1216, 1212, 1213, 1212, 1216, 1214, 1216, 1210, 1217, 1210, 1216, 1213, 1218, 1215, 1214, 1215, 1218, 1219, 1220, 1214, 1216, 1214, 1220, 1218, 1221, 1215, 1219, 1215, 1221, 1217, 1221, 1216, 1217, 1216, 1221, 1220, 1227, 1222, 1223, 1222, 1227, 1229, 1227, 1224, 1226, 1224, 1227, 1223, 1228, 1224, 1225, 1224, 1228, 1226, 1228, 1222, 1229, 1222, 1228, 1225, 1230, 1227, 1226, 1227, 1230, 1231, 1232, 1226, 1228, 1226, 1232, 1230, 1233, 1227, 1231, 1227, 1233, 1229, 1233, 1228, 1229, 1228, 1233, 1232, 1239, 1234, 1235, 1234, 1239, 1241, 1239, 1236, 1238, 1236, 1239, 1235, 1240, 1236, 1237, 1236, 1240, 1238, 1240, 1234, 1241, 1234, 1240, 1237, 1242, 1239, 1238, 1239, 1242, 1243, 1244, 1238, 1240, 1238, 1244, 1242, 1245, 1239, 1243, 1239, 1245, 1241, 1245, 1240, 1241, 1240, 1245, 1244, 1251, 1246, 1247, 1246, 1251, 1253, 1251, 1248, 1250, 1248, 1251, 1247, 1252, 1248, 1249, 1248, 1252, 1250, 1252, 1246, 1253, 1246, 1252, 1249, 1254, 1251, 1250, 1251, 1254, 1255, 1256, 1250, 1252, 1250, 1256, 1254, 1257, 1251, 1255, 1251, 1257, 1253, 1257, 1252, 1253, 1252, 1257, 1256, 1263, 1258, 1259, 1258, 1263, 1265, 1263, 1260, 1262, 1260, 1263, 1259, 1264, 1260, 1261, 1260, 1264, 1262, 1264, 1258, 1265, 1258, 1264, 1261, 1266, 1263, 1262, 1263, 1266, 1267, 1268, 1262, 1264, 1262, 1268, 1266, 1269, 1263, 1267, 1263, 1269, 1265, 1269, 1264, 1265, 1264, 1269, 1268, 1275, 1270, 1271, 1270, 1275, 1277, 1275, 1272, 1274, 1272, 1275, 1271, 1276, 1272, 1273, 1272, 1276, 1274, 1276, 1270, 1277, 1270, 1276, 1273, 1278, 1275, 1274, 1275, 1278, 1279, 0x0500, 1274, 1276, 1274, 0x0500, 1278, 1281, 1275, 1279, 1275, 1281, 1277, 1281, 1276, 1277, 1276, 1281, 0x0500, 1287, 1282, 1283, 1282, 1287, 1289, 1287, 1284, 1286, 1284, 1287, 1283, 1288, 1284, 0x0505, 1284, 1288, 1286, 1288, 1282, 1289, 1282, 1288, 0x0505, 1290, 1287, 1286, 1287, 1290, 1291, 1292, 1286, 1288, 1286, 1292, 1290, 1293, 1287, 1291, 1287, 1293, 1289, 1293, 1288, 1289, 1288, 1293, 1292, 1299, 1294, 1295, 1294, 1299, 1301, 1299, 1296, 1298, 1296, 1299, 1295, 1300, 1296, 1297, 1296, 1300, 1298, 1300, 1294, 1301, 1294, 1300, 1297, 1302, 1299, 1298, 1299, 1302, 1303, 1304, 1298, 1300, 1298, 1304, 1302, 1305, 1299, 1303, 1299, 1305, 1301, 1305, 1300, 1301, 1300, 1305, 1304, 1311, 1306, 1307, 1306, 1311, 1313, 1311, 1308, 1310, 1308, 1311, 1307, 1312, 1308, 1309, 1308, 1312, 1310, 1312, 1306, 1313, 1306, 1312, 1309, 1314, 1311, 1310, 1311, 1314, 1315, 1316, 1310, 1312, 1310, 1316, 1314, 1317, 1311, 1315, 1311, 1317, 1313, 1317, 1312, 1313, 1312, 1317, 1316, 1323, 1318, 1319, 1318, 1323, 1325, 1323, 1320, 1322, 1320, 1323, 1319, 1324, 1320, 1321, 1320, 1324, 1322, 1324, 1318, 1325, 1318, 1324, 1321, 1326, 1323, 1322, 1323, 1326, 1327, 1328, 1322, 1324, 1322, 1328, 1326, 1329, 1323, 1327, 1323, 1329, 1325, 1329, 1324, 1325, 1324, 1329, 1328, 1330, 1344, 1331, 1344, 1330, 1345, 1334, 1344, 1345, 1344, 1334, 1341, 1340, 1330, 1331, 1330, 1340, 1342, 1337, 1339, 1343, 1339, 1337, 1336, 1332, 1343, 1339, 1343, 1332, 1333, 1342, 1345, 1330, 1345, 1342, 1334, 1339, 1335, 1332, 1335, 1339, 1336, 1333, 1337, 1343, 1337, 1333, 1338, 1344, 1340, 1331, 1340, 1344, 1341, 1346, 1360, 1347, 1360, 1346, 1361, 1350, 1360, 1361, 1360, 1350, 1358, 1357, 1346, 1347, 1346, 1357, 1359, 1353, 1356, 1354, 1356, 1353, 1352, 1348, 1354, 1356, 1354, 1348, 1349, 1359, 1361, 1346, 1361, 1359, 1350, 1356, 1351, 1348, 1351, 1356, 1352, 1349, 1353, 1354, 1353, 1349, 1355, 1360, 1357, 1347, 1357, 1360, 1358, 1405, 1399, 1400, 1399, 1405, 1396, 1393, 1395, 1398, 1393, 1397, 1395, 1397, 1393, 1394, 1393, 1405, 1394, 1405, 1393, 1396, 1399, 1397, 1400, 1397, 1399, 1395, 1396, 1398, 1399, 1398, 1395, 1399, 1398, 1396, 1393, 1403, 1402, 1404, 1402, 1403, 1401, 1397, 1402, 1400, 1402, 1397, 1404, 1403, 1397, 1394, 1397, 1403, 1404, 1401, 1400, 1402, 1400, 1401, 1405, 1405, 1403, 1394, 1403, 1405, 1401, 1438, 1432, 1422, 1432, 1438, 1406, 1407, 1427, 1425, 1427, 1407, 1437, 1427, 1408, 1420, 1408, 1427, 1437, 1408, 1409, 1420, 1409, 1408, 1410, 1410, 1422, 1409, 1422, 1410, 1438, 1435, 1436, 1434, 1436, 1435, 1411, 1406, 1411, 1432, 1411, 1406, 1436, 1419, 1412, 1421, 1412, 1419, 1413, 1424, 1413, 1419, 1413, 1424, 1428, 1423, 1427, 1414, 1427, 1423, 1425, 1413, 1411, 1412, 1411, 1413, 1432, 1418, 1417, 1415, 1417, 1418, 1426, 1416, 1431, 1430, 1416, 1433, 1431, 1416, 1424, 1419, 1414, 1420, 1418, 1420, 1414, 1427, 1421, 1429, 1433, 1429, 1421, 1412, 1416, 1415, 1417, 1421, 1433, 1416, 1432, 1428, 1422, 1428, 1432, 1413, 1430, 1418, 1415, 1418, 1430, 1414, 1416, 1417, 1424, 1429, 1425, 1423, 1425, 1429, 1435, 1416, 1430, 1415, 1409, 1418, 1420, 1418, 1409, 1426, 1421, 1416, 1419, 1431, 1429, 1423, 1429, 1431, 1433, 1429, 1411, 1435, 1411, 1429, 1412, 1431, 1414, 1430, 1414, 1431, 1423, 1428, 1409, 1422, 1409, 1428, 1426, 1426, 1424, 1417, 1424, 1426, 1428, 1425, 1434, 1407, 1434, 1425, 1435, 1451, 1445, 1446, 1445, 1451, 1442, 1439, 1441, 1444, 1439, 1443, 1441, 1443, 1439, 1440, 1439, 1451, 1440, 1451, 1439, 1442, 1445, 1443, 1446, 1443, 1445, 1441, 1442, 1444, 1445, 1444, 1441, 1445, 1444, 1442, 1439, 1449, 1448, 1450, 1448, 1449, 1447, 1443, 1448, 1446, 1448, 1443, 1450, 1449, 1443, 1440, 1443, 1449, 1450, 1447, 1446, 1448, 1446, 1447, 1451, 1451, 1449, 1440, 1449, 1451, 1447, 1452, 1463, 1456, 1452, 1453, 1462, 1472, 1458, 1452, 1459, 1454, 1467, 1454, 1459, 1469, 1452, 1458, 1464, 1460, 1471, 1455, 1471, 1460, 1457, 1460, 1456, 1457, 1456, 1460, 1453, 1452, 1464, 1465, 1452, 1456, 1453, 1471, 1461, 1473, 1461, 1471, 1457, 1458, 1474, 1464, 1474, 1458, 1468, 1472, 1468, 1458, 1468, 1472, 1459, 1462, 1460, 1469, 1460, 1462, 1453, 1461, 1465, 1466, 1465, 1461, 1463, 1456, 1461, 1457, 1461, 1456, 1463, 1472, 1469, 1459, 1469, 1472, 1462, 1470, 1474, 1476, 1474, 1470, 1466, 1474, 1475, 1476, 1475, 1474, 1468, 1462, 1472, 1452, 1465, 1474, 1466, 1474, 1465, 1464, 1469, 1455, 1454, 1455, 1469, 1460, 1465, 1463, 1452, 1473, 1466, 1470, 1466, 1473, 1461, 1467, 1468, 1459, 1468, 1467, 1475]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Nelson_sColumn.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Nelson_sColumn.as new file mode 100644 index 0000000..53049a8 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Nelson_sColumn.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Nelson_sColumn extends Stage3DData { + + public function Nelson_sColumn(){ + vertices = new [0.645478, 194.855, -2.15365, 1.87603, 212.99, 0.552563, 0.93834, 212.764, -0.948515, -1.60816, 199.308, 2.19528, 5.45256, 205.053, 1.61198, 0.962951, 218.265, -0.573511, -0.341682, 199.308, -2.31459, -2.94881, 211.628, -0.876619, 0.781629, 198.527, 0.228386, -0.118717, 217.307, 0.665716, -1.71949, 213.411, -0.512478, 3.7881, 211.155, 1.11894, -4.76148, 194.855, -1.41356, -1.60502, 206.759, -0.478571, 3.36277, 214.192, 0.992939, -4.12487, 199.308, 2.07023, 2.33652, 209.264, -1.30812, 0.781629, 194.855, 0.228386, 2.2377, 198.879, 0.659695, -2.28989, 199.308, -4.02209, -0.0893888, 215.969, -0.704351, -0.288424, 213.411, -0.0885773, 1.87385, 209.831, 2.03053, 3.41666, 206.759, 1.00892, 0.368756, 194.855, -0.515118, -4.36304, 194.855, 2.37731, 2.77948, 201.216, -0.421614, -2.16098, 199.308, -1.4518, -1.71949, 211.688, -0.512478, 1.04239, 214.184, -1.07314, 1.83674, 216.562, 1.42321, 0.552299, 209.264, -1.83663, 6.16427, 204.032, 1.5228, 3.05638, 194.855, 0.503498, 4.87662, 204.509, 1.06256, 0.350183, 212.03, 0.962866, -2.12682, 201.216, -1.37036, -2.36267, 194.855, -4.37584, -4.45009, 199.308, -1.32132, -3.52292, 210.289, -1.04668, 0.289629, 201.216, 2.83374, 4.14334, 209.546, 1.22417, 1.94316, 199.161, 2.00441, 6.15275, 203.84, 1.81939, 2.06377, 194.855, -2.24702, 2.25018, 216.562, 0.0274696, 0.7791, 217.633, -0.588057, -0.552222, 199.308, 0.340048, 4.46433, 204.261, 1.31925, -0.728852, 199.308, -3.55968, -2.86652, 199.308, 2.13276, 0.0914164, 194.855, -4.18249, -0.019309, 194.855, -2.35057, 3.34507, 210.402, 2.03286, 1.41301, 204.051, -1.3019, 1.20639, 216.084, 0.71759, -1.42827, 194.855, 2.52313, 0.213246, 212.113, -0.888052, 1.9978, 206.759, 1.77989, -0.262887, 216.91, -0.67049, -0.492185, 212.172, -0.148933, 1.66218, 211.888, 0.489218, -0.732981, 201.216, -2.40794, -1.60607, 204.051, 0.806585, 2.7055, 194.855, -2.05694, -2.2898, 210.355, 0.468712, -0.651031, 214.109, 0.639858, 4.43391, 194.855, 0.991344, 4.18328, 209.33, 0.242477, 5.45256, 205.053, 1.61198, 4.46433, 204.261, 1.31925, 1.41444, 195.379, -0.601154, 0.781629, 194.855, 0.228386, 0.7791, 217.633, -0.588057, 2.25018, 216.562, 0.0274696, 1.79912, 198.715, -0.348274, -2.79404, 55.5558, 9.43255, -8.6455, 55.5558, 4.69413, -9.43254, 55.5558, -2.79404, -4.69412, 55.5558, -8.64549, 2.79405, 55.5558, -9.43253, 8.6455, 55.5558, -4.69411, 9.43254, 55.5558, 2.79406, 4.69413, 55.5558, 8.64551, -2.79404, 60.9329, 9.43255, -8.6455, 60.9329, 4.69413, -9.43254, 60.9329, -2.79404, -4.69412, 60.9329, -8.64549, 2.79405, 60.9329, -9.43253, 8.64551, 60.9329, -4.69411, 9.43254, 60.9329, 2.79406, 4.69413, 60.9329, 8.64551, -2.26282, 60.9329, 7.63918, -7.00176, 60.9329, 3.80166, -7.63916, 60.9329, -2.26282, -3.80164, 60.9329, -7.00176, 2.26283, 60.9329, -7.63916, 7.00177, 60.9329, -3.80164, 7.63917, 60.9329, 2.26283, 3.80165, 60.9329, 7.00178, -2.26281, 170.223, 7.63918, -7.00175, 170.223, 3.80166, -7.63915, 170.223, -2.26281, -3.80163, 170.223, -7.00175, 2.26284, 170.223, -7.63915, 7.00178, 170.223, -3.80163, 7.63918, 170.223, 2.26284, 3.80167, 170.223, 7.00178, -2.08156, 177.259, 7.02728, -10.4291, 177.259, 5.66258, -7.02725, 177.259, -2.08156, -5.66254, 177.259, -10.4291, 2.08159, 177.259, -7.02725, 10.4292, 177.259, -5.66254, 7.02728, 177.259, 2.08159, 5.66258, 177.259, 10.4292, -2.29153, 183.289, 7.73613, -14.1719, 183.289, 7.69476, -7.7361, 183.289, -2.29152, -7.69473, 183.289, -14.1719, 2.29156, 183.289, -7.7361, 14.172, 183.289, -7.69473, 7.73613, 183.289, 2.29156, 7.69477, 183.289, 14.172, -18.6751, 18.3036, 10.1398, -18.6751, 14.6063, 10.1398, -10.1398, 14.6063, -18.6751, -10.1398, 18.3036, -18.6751, 18.6752, 18.3036, -10.1398, 18.6752, 14.6063, -10.1398, 10.1398, 14.6063, 18.6752, 10.1398, 18.3036, 18.6752, -7.68586, 21.7428, -14.1556, -14.1556, 21.7428, 7.68589, 14.1556, 21.7428, -7.68586, 7.68588, 21.7428, 14.1556, -7.68587, 45.3321, -14.1556, -14.1556, 45.3321, 7.68589, 14.1556, 45.3321, -7.68585, 7.68588, 45.3321, 14.1556, -9.76796, 47.6033, -17.9904, -17.9904, 47.6033, 9.76799, 17.9904, 47.6033, -9.76795, 9.76798, 47.6033, 17.9904, -10.2405, 49.9452, -18.8606, -18.8606, 49.9452, 10.2405, 18.8607, 49.9452, -10.2405, 10.2405, 49.9452, 18.8607, -6.81291, 55.5558, -12.5478, -12.5478, 55.5558, 6.81293, 12.5478, 55.5558, -6.8129, 6.81293, 55.5558, 12.5479, 39.0474, -3.14713E-5, -13.7868, 25.2763, -3.14713E-5, 32.7034, 22.6592, -3.14713E-5, 41.5386, 22.6592, 1.65351, 41.5386, 41.6645, 1.65352, -22.622, 41.6645, -2.57492E-5, -22.622, -13.6609, -2.57492E-5, -39.0101, 32.8293, -2.57492E-5, -25.2391, -22.4961, 1.65351, -41.6272, -22.4961, -2.57492E-5, -41.6272, -41.5014, 1.65351, 22.5334, -41.5014, -3.14713E-5, 22.5334, -38.8843, -2.57492E-5, 13.6982, -25.1132, -2.57492E-5, -32.792, 13.824, -3.14713E-5, 38.9215, -32.6662, -3.14713E-5, 25.1505, 40.4412, 3.03147, -21.9578, -21.832, 3.03147, -40.404, 21.9951, 3.03147, 40.3154, -40.2781, 3.03147, 21.8692, -40.2781, 6.88974, 21.8692, -21.832, 6.88974, -40.404, 40.4412, 6.88973, -21.9578, 21.9951, 6.88973, 40.3154, 25.5254, 6.88973, -13.8592, -13.7333, 6.88974, -25.4882, -25.3623, 6.88974, 13.7706, 13.8964, 6.88973, 25.3996, -13.7333, 10.748, -25.4882, 25.5254, 10.748, -13.8592, 13.8964, 10.748, 25.3996, 22.1003, 10.748, -11.9995, -11.8736, 10.748, -22.063, -21.9372, 10.748, 11.9109, 12.0368, 10.748, 21.9744, -25.3623, 10.748, 13.7706, -21.9372, 14.6063, 11.9109, 12.0368, 14.6063, 21.9744, 22.1003, 14.6063, -11.9995, -11.8736, 14.6063, -22.063, -37.8809, -3.14713E-5, -56.3071, -62.3993, -2.57492E-5, 26.4659, 26.5917, -3.14713E-5, 62.4366, -56.1813, -2.57492E-5, 37.9182, 62.5625, -3.14713E-5, -26.5544, 38.044, -3.14713E-5, 56.2185, 56.3444, -2.57492E-5, -38.0067, -26.4286, -2.57492E-5, -62.5252, -40.5478, 13.091, 22.961, -52.5646, 9.67455, 28.5933, -49.8518, 19.3399, 28.4947, -38.1495, 7.71652, 24.3223, -43.9955, 7.71652, 18.9978, -52.0567, 17.6142, 25.9889, -58.1694, 7.71652, 27.8887, -54.2116, 7.71652, 35.0945, -42.9698, 12.9027, 19.5267, -53.1246, 16.2341, 29.53, -50.9423, 14.3742, 28.0413, -44.7371, 7.71652, 28.1022, -46.3836, 14.5138, 25.0697, -37.691, 11.1092, 21.2559, -38.3088, 7.71652, 19.1037, -53.5265, 7.71652, 25.3044, -44.0229, 11.0214, 27.1834, -49.2749, 15.5156, 29.9019, -53.4013, 7.71652, 27.8399, -46.7236, 12.5367, 22.2093, -41.0132, 13.7596, 21.76, -50.3521, 8.47046, 31.1509, -48.1678, 17.9208, 27.807, -40.8419, 12.5295, 18.2745, -52.8664, 13.5222, 28.8305, -40.8152, 13.2757, 24.4861, -52.8268, 16.2627, 26.5931, -45.9624, 15.1133, 28.0796, -55.6932, 9.7193, 26.9003, -52.4078, 17.3284, 28.535, -52.6258, 9.80314, 31.5587, -55.1929, 8.12991, 34.2789, -41.5261, 8.78378, 25.2686, -44.4187, 8.81595, 20.2575, -53.0978, 11.7221, 26.094, -43.4209, 12.6459, 20.4569, -48.8483, 7.71652, 22.7644, -51.761, 15.3427, 24.9785, -41.8432, 13.0054, 24.4632, -39.4043, 7.71652, 25.9127, -37.187, 10.0489, 22.1901, -53.5875, 15.7477, 28.4298, -58.8662, 7.71652, 26.6053, -44.437, 12.6758, 26.4206, -48.749, 18.7366, 26.7366, -48.3442, 15.6162, 23.6928, -50.7369, 11.5431, 30.4422, -43.0931, 13.4886, 21.2894, -51.3672, 15.0602, 29.2814, -39.4635, 7.71652, 17.9703, -51.1257, 18.9587, 26.1485, -42.4156, 7.71652, 18.14, -42.1889, 13.7153, 23.5854, -53.1548, 9.7193, 27.5063, -50.3623, 18.1953, 29.1096, -38.9233, 12.8256, 22.5841, -41.7615, 13.3528, 19.8285, -50.9684, 16.2627, 30.016, -22.961, 13.091, -40.5478, -28.5933, 9.67455, -52.5646, -28.4947, 19.3399, -49.8518, -24.3223, 7.71653, -38.1495, -18.9978, 7.71653, -43.9955, -25.9889, 17.6142, -52.0566, -27.8887, 7.71653, -58.1694, -35.0945, 7.71653, -54.2115, -19.5267, 12.9027, -42.9698, -29.53, 16.2341, -53.1246, -28.0413, 14.3742, -50.9423, -28.1022, 7.71653, -44.737, -25.0697, 14.5138, -46.3835, -21.2559, 11.1092, -37.691, -19.1037, 7.71653, -38.3088, -25.3044, 7.71653, -53.5265, -27.1834, 11.0214, -44.0228, -29.9019, 15.5156, -49.2749, -27.8399, 7.71653, -53.4013, -22.2093, 12.5367, -46.7236, -21.76, 13.7596, -41.0131, -31.1509, 8.47046, -50.3521, -27.807, 17.9208, -48.1678, -18.2745, 12.5295, -40.8419, -28.8305, 13.5222, -52.8664, -24.4861, 13.2757, -40.8152, -26.5931, 16.2627, -52.8268, -28.0796, 15.1133, -45.9624, -26.9003, 9.7193, -55.6932, -28.535, 17.3284, -52.4078, -31.5587, 9.80314, -52.6258, -34.2789, 8.12991, -55.1929, -25.2686, 8.78378, -41.526, -20.2575, 8.81596, -44.4187, -26.094, 11.7221, -53.0978, -20.4569, 12.646, -43.4209, -22.7644, 7.71653, -48.8483, -24.9785, 15.3427, -51.761, -24.4632, 13.0054, -41.8432, -25.9127, 7.71653, -39.4043, -22.1901, 10.0489, -37.187, -28.4298, 15.7477, -53.5875, -26.6053, 7.71653, -58.8662, -26.4206, 12.6758, -44.437, -26.7366, 18.7366, -48.749, -23.6929, 15.6162, -48.3442, -30.4422, 11.5431, -50.7369, -21.2894, 13.4886, -43.0931, -29.2814, 15.0602, -51.3672, -17.9703, 7.71653, -39.4635, -26.1485, 18.9587, -51.1257, -18.14, 7.71653, -42.4156, -23.5854, 13.7153, -42.1889, -27.5063, 9.7193, -53.1548, -29.1096, 18.1953, -50.3623, -22.5841, 12.8257, -38.9233, -19.8285, 13.3528, -41.7614, -30.016, 16.2627, -50.9683, 37.8241, 1.65352, -13.1226, 62.5625, -1.90735E-5, -26.5544, 37.8241, -1.90735E-5, -13.1226, 62.5625, 1.65352, -26.5544, 56.3444, 1.65352, -38.0067, 31.606, -1.90735E-5, -24.5749, 31.606, 1.65352, -24.5749, 32.9406, 3.03148, -24.1796, 55.949, 3.03148, -36.6721, 38.2194, 3.03148, -14.4572, 61.2279, 3.03148, -26.9498, 61.2279, 7.71652, -26.9498, 38.2194, 7.71652, -14.4572, 55.949, 7.71652, -36.6721, 32.9406, 7.71652, -24.1796, 40.5478, 13.0909, -22.961, 52.5646, 9.67454, -28.5933, 49.8518, 19.3399, -28.4947, 38.1495, 7.71652, -24.3223, 43.9955, 7.71652, -18.9978, 52.0567, 17.6142, -25.9889, 58.1694, 7.71652, -27.8887, 54.2116, 7.71652, -35.0945, 42.9698, 12.9027, -19.5267, 53.1246, 16.2341, -29.53, 50.9423, 14.3742, -28.0413, 44.737, 7.71652, -28.1022, 46.3836, 14.5138, -25.0697, 37.691, 11.1092, -21.2559, 38.3088, 7.71652, -19.1037, 53.5265, 7.71652, -25.3044, 44.0228, 11.0214, -27.1834, 49.2749, 15.5156, -29.9018, 53.4013, 7.71652, -27.8399, 46.7236, 12.5367, -22.2092, 41.0131, 13.7596, -21.76, 50.3521, 8.47045, -31.1509, 48.1678, 17.9207, -27.807, 40.8419, 12.5295, -18.2745, 52.8664, 13.5222, -28.8305, 40.8152, 13.2757, -24.4861, 52.8268, 16.2627, -26.5931, 45.9624, 15.1133, -28.0796, 55.6932, 9.71929, -26.9003, 52.4078, 17.3284, -28.5349, 52.6258, 9.80313, -31.5587, 55.1929, 8.1299, -34.2789, 41.526, 8.78377, -25.2686, 44.4187, 8.81595, -20.2575, 53.0978, 11.7221, -26.094, 43.4209, 12.6459, -20.4569, 48.8483, 7.71652, -22.7644, 51.761, 15.3427, -24.9785, 41.8432, 13.0054, -24.4632, 39.4043, 7.71652, -25.9127, 37.187, 10.0489, -22.1901, 53.5875, 15.7477, -28.4298, 58.8662, 7.71652, -26.6053, 44.437, 12.6758, -26.4206, 48.749, 18.7366, -26.7366, 48.3442, 15.6162, -23.6928, 50.7369, 11.5431, -30.4422, 43.0931, 13.4886, -21.2894, 51.3672, 15.0602, -29.2814, 39.4635, 7.71652, -17.9703, 51.1257, 18.9587, -26.1485, 42.4156, 7.71652, -18.14, 42.1889, 13.7153, -23.5854, 53.1548, 9.71929, -27.5063, 50.3623, 18.1953, -29.1095, 38.9233, 12.8256, -22.5841, 41.7614, 13.3528, -19.8285, 50.9684, 16.2627, -30.0159, 22.961, 13.0909, 40.5478, 28.5933, 9.67453, 52.5646, 28.4947, 19.3399, 49.8518, 24.3223, 7.71651, 38.1495, 18.9978, 7.71651, 43.9955, 25.9889, 17.6142, 52.0567, 27.8887, 7.71651, 58.1694, 35.0945, 7.71651, 54.2116, 19.5267, 12.9027, 42.9698, 29.53, 16.2341, 53.1246, 28.0413, 14.3742, 50.9423, 28.1021, 7.71651, 44.7371, 25.0697, 14.5138, 46.3836, 21.2559, 11.1092, 37.691, 19.1037, 7.71651, 38.3088, 25.3044, 7.71651, 53.5265, 27.1834, 11.0214, 44.0228, 29.9018, 15.5156, 49.2749, 27.8399, 7.71651, 53.4013, 22.2093, 12.5367, 46.7236, 21.76, 13.7596, 41.0131, 31.1509, 8.47045, 50.3521, 27.807, 17.9207, 48.1678, 18.2745, 12.5295, 40.8419, 28.8305, 13.5222, 52.8664, 24.4861, 13.2757, 40.8152, 26.5931, 16.2627, 52.8268, 28.0796, 15.1132, 45.9624, 26.9003, 9.71929, 55.6932, 28.535, 17.3284, 52.4078, 31.5587, 9.80313, 52.6258, 34.2789, 8.1299, 55.1929, 25.2686, 8.78376, 41.5261, 20.2575, 8.81594, 44.4187, 26.094, 11.7221, 53.0978, 20.4569, 12.6459, 43.4209, 22.7644, 7.71651, 48.8483, 24.9785, 15.3427, 51.761, 24.4632, 13.0054, 41.8432, 25.9127, 7.71651, 39.4043, 22.1901, 10.0489, 37.187, 28.4298, 15.7477, 53.5875, 26.6053, 7.71651, 58.8662, 26.4206, 12.6758, 44.437, 26.7366, 18.7366, 48.749, 23.6928, 15.6162, 48.3442, 30.4422, 11.5431, 50.7369, 21.2894, 13.4886, 43.0931, 29.2814, 15.0602, 51.3672, 17.9703, 7.71651, 39.4635, 26.1485, 18.9587, 51.1257, 18.14, 7.71651, 42.4156, 23.5854, 13.7153, 42.1889, 27.5063, 9.71929, 53.1548, 29.1096, 18.1953, 50.3623, 22.5841, 12.8256, 38.9233, 19.8285, 13.3528, 41.7615, 30.016, 16.2627, 50.9684, 13.1226, 1.65352, 37.8241, 26.5544, -2.19345E-5, 62.5625, 13.1226, -2.19345E-5, 37.8241, 26.5544, 1.65352, 62.5625, 38.0067, 1.65352, 56.3444, 38.0067, -2.19345E-5, 56.3444, 24.5749, -2.19345E-5, 31.606, 24.5749, 1.65352, 31.606, 24.1796, 3.03147, 32.9407, 36.6721, 3.03147, 55.949, 14.4572, 3.03147, 38.2195, 26.9498, 3.03147, 61.2278, 26.9498, 7.71651, 61.2278, 14.4572, 7.71651, 38.2195, 36.6721, 7.71651, 55.949, 24.1796, 7.71651, 32.9407, -37.8241, 1.65353, 13.1226, -62.5625, -1.14441E-5, 26.5544, -37.8241, -1.14441E-5, 13.1226, -62.5625, 1.65353, 26.5544, -56.3444, 1.65353, 38.0067, -56.3444, -1.14441E-5, 38.0067, -31.606, -1.14441E-5, 24.5749, -31.606, 1.65353, 24.5749, -32.9407, 3.03148, 24.1796, -55.9491, 3.03148, 36.6721, -38.2195, 3.03148, 14.4572, -61.2279, 3.03148, 26.9498, -61.2279, 7.71652, 26.9498, -38.2195, 7.71652, 14.4572, -55.9491, 7.71652, 36.6721, -32.9407, 7.71652, 24.1796, -13.1226, 1.65354, -37.8241, -26.5544, -6.67572E-6, -62.5625, -13.1226, -6.67572E-6, -37.8241, -26.5544, 1.65354, -62.5625, -38.0067, 1.65354, -56.3444, -38.0067, -6.67572E-6, -56.3444, -24.5749, -6.67572E-6, -31.606, -24.5749, 1.65354, -31.606, -24.1796, 3.03149, -32.9406, -36.6721, 3.03149, -55.949, -14.4572, 3.03149, -38.2194, -26.9498, 3.03149, -61.2278, -26.9498, 7.71653, -61.2278, -14.4572, 7.71653, -38.2194, -36.6721, 7.71653, -55.949, -24.1796, 7.71653, -32.9406, -1.84483, 183.289, 6.22807, -5.7084, 183.289, 3.09942, -6.22806, 183.289, -1.84483, -3.0994, 183.289, -5.70839, 1.84484, 183.289, -6.22805, 5.70841, 183.289, -3.0994, 6.22807, 183.289, 1.84485, 3.09941, 183.289, 5.70841, -1.84483, 186.587, 6.22807, -5.7084, 186.587, 3.09942, -6.22806, 186.587, -1.84483, -3.0994, 186.587, -5.70839, 1.84484, 186.587, -6.22805, 5.70841, 186.587, -3.0994, 6.22807, 186.587, 1.84485, 3.09941, 186.587, 5.70841, -1.44063, 189.535, 4.8635, -4.45768, 189.535, 2.42034, -4.86348, 189.535, -1.44062, -2.42032, 189.535, -4.45768, 1.44064, 189.535, -4.86348, 4.45769, 189.535, -2.42031, 4.86349, 189.535, 1.44064, 2.42033, 189.535, 4.4577, -1.44063, 194.855, 4.8635, -4.45768, 194.855, 2.42034, -4.86348, 194.855, -1.44062, -2.42032, 194.855, -4.45768, 1.44064, 194.855, -4.86348, 4.45769, 194.855, -2.42031, 4.86349, 194.855, 1.44064, 2.42033, 194.855, 4.4577]; + uvs = new [0.500069, 0.521414, 0.518627, 0.500029, 0.506003, 0.5112, 0.491252, 0.475602, 0.554154, 0.500029, 0.507242, 0.507842, 0.490619, 0.520213, 0.4707, 0.500029, 0.507756, 0.500029, 0.500717, 0.493599, 0.482911, 0.500029, 0.53762, 0.500029, 0.452694, 0.500029, 0.484048, 0.500029, 0.533395, 0.500029, 0.467931, 0.469936, 0.517799, 0.518266, 0.507756, 0.500029, 0.52222, 0.500029, 0.468208, 0.530536, 0.497278, 0.50619, 0.497126, 0.500029, 0.522605, 0.486526, 0.533931, 0.500029, 0.501974, 0.505702, 0.466587, 0.466488, 0.524242, 0.511369, 0.476338, 0.507413, 0.482911, 0.500029, 0.506616, 0.51262, 0.520623, 0.491971, 0.500075, 0.518266, 0.560413, 0.502768, 0.529273, 0.50367, 0.547409, 0.503488, 0.505803, 0.492154, 0.476871, 0.506761, 0.466587, 0.53357, 0.455787, 0.500029, 0.464997, 0.500029, 0.51031, 0.474905, 0.541149, 0.500029, 0.523167, 0.486952, 0.56111, 0.500029, 0.512768, 0.526103, 0.520623, 0.505836, 0.505524, 0.507478, 0.495877, 0.495401, 0.544338, 0.500029, 0.483715, 0.530536, 0.479592, 0.472769, 0.489521, 0.538443, 0.493465, 0.521414, 0.536047, 0.490484, 0.509382, 0.515711, 0.512958, 0.49671, 0.493782, 0.473095, 0.499545, 0.508687, 0.523059, 0.48915, 0.495786, 0.505412, 0.495102, 0.500029, 0.516503, 0.500029, 0.486793, 0.520007, 0.487515, 0.48829, 0.519143, 0.526103, 0.480357, 0.489526, 0.495786, 0.492396, 0.543173, 0.502941, 0.538858, 0.509102, 0.554154, 0.500029, 0.544338, 0.500029, 0.511291, 0.509316, 0.507756, 0.500029, 0.505524, 0.507478, 0.520623, 0.505836, 0.515488, 0.508047, 0.5, 0.406302, 0.433746, 0.433746, 0.406302, 0.5, 0.433746, 0.566254, 0.5, 0.593698, 0.566254, 0.566254, 0.593698, 0.5, 0.566254, 0.433746, 0.5, 0.406302, 0.433746, 0.433746, 0.406302, 0.5, 0.433746, 0.566254, 0.5, 0.593698, 0.566254, 0.566254, 0.593698, 0.5, 0.566254, 0.433746, 0.5, 0.424117, 0.446342, 0.446342, 0.424117, 0.5, 0.446342, 0.553658, 0.5, 0.575883, 0.553658, 0.553658, 0.575883, 0.5, 0.553658, 0.446342, 0.5, 0.424116, 0.446343, 0.446342, 0.424117, 0.5, 0.446343, 0.553658, 0.5, 0.575883, 0.553658, 0.553658, 0.575884, 0.5, 0.553658, 0.446342, 0.5, 0.430195, 0.420077, 0.420077, 0.430195, 0.5, 0.420077, 0.579923, 0.5, 0.569805, 0.579923, 0.579923, 0.569805, 0.5, 0.579923, 0.420077, 0.5, 0.423153, 0.391394, 0.391394, 0.423154, 0.5, 0.391394, 0.608606, 0.5, 0.576846, 0.608606, 0.608606, 0.576847, 0.5, 0.608606, 0.391394, 0.356884, 0.356884, 0.356884, 0.356884, 0.356884, 0.643116, 0.356884, 0.643116, 0.643116, 0.643116, 0.643116, 0.643116, 0.643116, 0.356884, 0.643116, 0.356884, 0.391519, 0.608481, 0.391519, 0.391519, 0.608481, 0.608481, 0.608481, 0.391519, 0.391519, 0.608481, 0.391519, 0.391519, 0.608481, 0.608481, 0.608481, 0.391519, 0.362132, 0.637868, 0.362132, 0.362132, 0.637868, 0.637868, 0.637868, 0.362132, 0.355462, 0.644538, 0.355462, 0.355462, 0.644538, 0.644538, 0.644538, 0.355462, 0.40384, 0.59616, 0.40384, 0.40384, 0.59616, 0.59616, 0.59616, 0.40384, 0.819293, 0.73153, 0.819294, 0.269721, 0.819294, 0.181957, 0.819294, 0.181957, 0.819293, 0.819294, 0.819293, 0.819294, 0.26972, 0.819294, 0.731529, 0.819294, 0.181956, 0.819294, 0.181956, 0.819294, 0.181956, 0.181956, 0.181956, 0.181957, 0.181956, 0.26972, 0.181956, 0.73153, 0.731529, 0.181957, 0.269721, 0.181956, 0.809919, 0.809919, 0.191331, 0.809919, 0.809919, 0.191331, 0.191331, 0.191331, 0.191331, 0.191331, 0.191331, 0.809919, 0.809919, 0.809919, 0.809919, 0.191331, 0.695613, 0.695613, 0.305637, 0.695613, 0.305637, 0.305637, 0.695613, 0.305637, 0.305637, 0.695613, 0.695613, 0.695613, 0.695613, 0.305637, 0.669364, 0.669365, 0.331886, 0.669365, 0.331885, 0.331886, 0.669364, 0.331886, 0.305637, 0.305637, 0.331885, 0.331886, 0.669364, 0.331886, 0.669364, 0.669365, 0.331886, 0.669365, 0.00174952, 0.911736, 0.00174987, 0.0895139, 0.911736, 0.00174993, 0.0895139, 0.00174975, 0.9995, 0.911736, 0.9995, 0.0895142, 0.911736, 0.9995, 0.0895137, 0.9995, 0.191821, 0.180631, 0.0973178, 0.0966893, 0.121824, 0.104928, 0.217405, 0.174687, 0.149615, 0.207497, 0.094911, 0.121847, 0.0442277, 0.0879624, 0.0998635, 0.0328642, 0.160413, 0.205442, 0.0947376, 0.0866209, 0.110639, 0.106119, 0.167472, 0.122349, 0.144232, 0.145588, 0.213298, 0.20393, 0.201834, 0.221913, 0.0796367, 0.124122, 0.171508, 0.132671, 0.130899, 0.0936383, 0.0876386, 0.101306, 0.133389, 0.17079, 0.184323, 0.19034, 0.124441, 0.0793179, 0.135343, 0.115764, 0.176458, 0.222634, 0.0952035, 0.0937067, 0.193505, 0.16598, 0.0895121, 0.114246, 0.15622, 0.11924, 0.0641669, 0.103687, 0.0985914, 0.0976463, 0.10478, 0.0694435, 0.0886953, 0.037658, 0.18913, 0.156911, 0.149158, 0.194849, 0.0856873, 0.118071, 0.15881, 0.195727, 0.115488, 0.159973, 0.0948782, 0.131874, 0.184055, 0.163408, 0.210249, 0.156768, 0.220427, 0.196762, 0.0875338, 0.0954154, 0.0343922, 0.097798, 0.165663, 0.138517, 0.12714, 0.123967, 0.122603, 0.152858, 0.119009, 0.084749, 0.164056, 0.189011, 0.110114, 0.0936443, 0.188223, 0.22914, 0.103845, 0.122908, 0.161723, 0.219605, 0.178524, 0.170489, 0.0889872, 0.10502, 0.118826, 0.0979323, 0.205637, 0.188467, 0.172264, 0.205955, 0.115743, 0.0880154, 0.180631, 0.808179, 0.0966892, 0.902682, 0.104928, 0.878176, 0.174687, 0.782595, 0.207497, 0.850384, 0.121847, 0.905089, 0.0879624, 0.955772, 0.0328641, 0.900136, 0.205442, 0.839587, 0.0866208, 0.905262, 0.106119, 0.88936, 0.122349, 0.832528, 0.145588, 0.855768, 0.20393, 0.786702, 0.221913, 0.798166, 0.124122, 0.920363, 0.132671, 0.828491, 0.0936383, 0.869101, 0.101306, 0.912361, 0.17079, 0.86661, 0.19034, 0.815677, 0.0793178, 0.875559, 0.115764, 0.864657, 0.222634, 0.823542, 0.0937067, 0.904796, 0.16598, 0.806495, 0.114246, 0.910488, 0.11924, 0.843779, 0.103687, 0.935833, 0.0976463, 0.901408, 0.0694435, 0.89522, 0.037658, 0.911305, 0.156911, 0.81087, 0.194849, 0.850842, 0.118071, 0.914313, 0.195727, 0.84119, 0.159973, 0.884512, 0.131874, 0.905122, 0.163408, 0.815945, 0.156768, 0.789751, 0.196762, 0.779573, 0.0954154, 0.912466, 0.0977979, 0.965608, 0.138517, 0.834337, 0.123967, 0.87286, 0.152858, 0.877397, 0.084749, 0.88099, 0.189011, 0.835944, 0.0936443, 0.889886, 0.22914, 0.811777, 0.122908, 0.896155, 0.219605, 0.838277, 0.170489, 0.821476, 0.10502, 0.911013, 0.0979323, 0.881174, 0.188467, 0.794363, 0.205955, 0.827736, 0.0880154, 0.884257, 0.809919, 0.722155, 0.9995, 0.911736, 0.809919, 0.722155, 0.9995, 0.911736, 0.911736, 0.9995, 0.722155, 0.809919, 0.722155, 0.809919, 0.735412, 0.809919, 0.911736, 0.986243, 0.809919, 0.735413, 0.986243, 0.911736, 0.986243, 0.911736, 0.809919, 0.735413, 0.911736, 0.986243, 0.735412, 0.809919, 0.808179, 0.819369, 0.902682, 0.903311, 0.878176, 0.895072, 0.782595, 0.825313, 0.850385, 0.792502, 0.905089, 0.878153, 0.955772, 0.912038, 0.900136, 0.967136, 0.839587, 0.794558, 0.905262, 0.913379, 0.889361, 0.893881, 0.832528, 0.877651, 0.855768, 0.854412, 0.786702, 0.79607, 0.798166, 0.778087, 0.920363, 0.875878, 0.828491, 0.867329, 0.869101, 0.906362, 0.912361, 0.898694, 0.866611, 0.82921, 0.815677, 0.80966, 0.875559, 0.920682, 0.864657, 0.884236, 0.823542, 0.777366, 0.904796, 0.906293, 0.806495, 0.83402, 0.910488, 0.885754, 0.843779, 0.880759, 0.935833, 0.896313, 0.901409, 0.902354, 0.89522, 0.930556, 0.911305, 0.962342, 0.81087, 0.843089, 0.850842, 0.805151, 0.914313, 0.881929, 0.84119, 0.804273, 0.884512, 0.840027, 0.905122, 0.868126, 0.815945, 0.836592, 0.789751, 0.843232, 0.779573, 0.803237, 0.912466, 0.904584, 0.965608, 0.902202, 0.834337, 0.861483, 0.87286, 0.876033, 0.877397, 0.847142, 0.88099, 0.915251, 0.835944, 0.810989, 0.889886, 0.906356, 0.811777, 0.770859, 0.896155, 0.877092, 0.838277, 0.780395, 0.821476, 0.829511, 0.911013, 0.89498, 0.881174, 0.902068, 0.794363, 0.811533, 0.827736, 0.794045, 0.884257, 0.911985, 0.819369, 0.191821, 0.903311, 0.0973178, 0.895072, 0.121824, 0.825313, 0.217405, 0.792503, 0.149615, 0.878153, 0.0949111, 0.912038, 0.0442278, 0.967136, 0.0998635, 0.794558, 0.160413, 0.913379, 0.0947376, 0.893881, 0.110639, 0.877651, 0.167472, 0.854412, 0.144232, 0.79607, 0.213298, 0.778087, 0.201834, 0.875878, 0.0796367, 0.867329, 0.171508, 0.906362, 0.130899, 0.898694, 0.0876387, 0.82921, 0.133389, 0.80966, 0.184323, 0.920682, 0.124441, 0.884236, 0.135343, 0.777366, 0.176458, 0.906293, 0.0952035, 0.83402, 0.193505, 0.885754, 0.0895122, 0.880759, 0.156221, 0.896313, 0.064167, 0.902354, 0.0985914, 0.930556, 0.10478, 0.962342, 0.0886953, 0.843089, 0.18913, 0.805151, 0.149158, 0.881929, 0.0856873, 0.804273, 0.15881, 0.840027, 0.115488, 0.868126, 0.0948783, 0.836592, 0.184055, 0.843232, 0.210249, 0.803238, 0.220427, 0.904585, 0.0875339, 0.902202, 0.0343922, 0.861483, 0.165663, 0.876033, 0.12714, 0.847142, 0.122603, 0.915251, 0.119009, 0.810989, 0.164056, 0.906356, 0.110114, 0.77086, 0.188223, 0.877092, 0.103845, 0.780395, 0.161723, 0.829511, 0.178524, 0.89498, 0.0889873, 0.902068, 0.118826, 0.811533, 0.205637, 0.794045, 0.172264, 0.911985, 0.115743, 0.722155, 0.190081, 0.911736, 0.000499845, 0.722155, 0.190081, 0.911736, 0.000499845, 0.9995, 0.088264, 0.9995, 0.088264, 0.809919, 0.277845, 0.809919, 0.277845, 0.809919, 0.264588, 0.986243, 0.088264, 0.735413, 0.190081, 0.911736, 0.0137573, 0.911736, 0.0137573, 0.735413, 0.190081, 0.986243, 0.088264, 0.809919, 0.264588, 0.190081, 0.277845, 0.000499785, 0.0882637, 0.190081, 0.277845, 0.000499785, 0.0882637, 0.088264, 0.000499547, 0.088264, 0.000499547, 0.277845, 0.190081, 0.277845, 0.190081, 0.264587, 0.190081, 0.088264, 0.013757, 0.190081, 0.264587, 0.0137572, 0.0882637, 0.0137572, 0.0882637, 0.190081, 0.264587, 0.088264, 0.013757, 0.264587, 0.190081, 0.277845, 0.809919, 0.0882636, 0.9995, 0.277845, 0.809919, 0.0882636, 0.9995, 0.000499547, 0.911736, 0.000499547, 0.911736, 0.190081, 0.722155, 0.190081, 0.722155, 0.190081, 0.735412, 0.013757, 0.911736, 0.264587, 0.809919, 0.0882636, 0.986243, 0.0882636, 0.986243, 0.264587, 0.809919, 0.013757, 0.911736, 0.190081, 0.735412, 0.5, 0.438134, 0.456254, 0.456254, 0.438134, 0.5, 0.456254, 0.543746, 0.5, 0.561866, 0.543746, 0.543746, 0.561866, 0.5, 0.543746, 0.456254, 0.5, 0.438134, 0.456254, 0.456254, 0.438134, 0.5, 0.456254, 0.543746, 0.5, 0.561866, 0.543746, 0.543746, 0.561866, 0.5, 0.543746, 0.456254, 0.5, 0.451689, 0.465839, 0.465839, 0.451689, 0.5, 0.465839, 0.534161, 0.5, 0.548311, 0.534161, 0.534161, 0.548311, 0.5, 0.534161, 0.465839, 0.5, 0.451689, 0.465839, 0.465839, 0.451689, 0.5, 0.465839, 0.534161, 0.5, 0.548311, 0.534161, 0.534161, 0.548311, 0.5, 0.534161, 0.465839]; + indices = new [58, 63, 40, 23, 26, 16, 50, 36, 27, 58, 40, 42, 60, 22, 35, 11, 57, 61, 46, 20, 45, 29, 45, 14, 45, 29, 46, 8, 6, 54, 38, 12, 15, 12, 38, 19, 36, 31, 62, 60, 21, 57, 47, 56, 24, 56, 47, 3, 8, 0, 6, 14, 20, 55, 9, 10, 66, 29, 59, 46, 59, 29, 10, 2, 21, 10, 42, 23, 58, 16, 68, 48, 25, 3, 15, 3, 25, 56, 49, 37, 19, 37, 49, 52, 31, 13, 39, 65, 63, 22, 30, 35, 14, 14, 1, 29, 57, 31, 28, 57, 11, 16, 54, 75, 8, 8, 75, 17, 42, 3, 47, 18, 8, 17, 52, 49, 6, 9, 20, 10, 59, 10, 20, 9, 35, 30, 35, 9, 66, 35, 21, 60, 53, 22, 4, 35, 22, 53, 68, 4, 48, 22, 48, 4, 8, 24, 0, 25, 15, 12, 18, 71, 75, 23, 18, 26, 36, 62, 27, 49, 27, 6, 27, 15, 50, 15, 19, 38, 27, 19, 15, 49, 19, 27, 39, 28, 31, 60, 65, 22, 10, 29, 2, 29, 1, 2, 9, 55, 20, 31, 54, 62, 57, 16, 31, 34, 67, 33, 67, 34, 32, 11, 61, 35, 14, 35, 1, 50, 63, 36, 13, 31, 36, 19, 37, 12, 65, 39, 13, 7, 28, 39, 63, 50, 40, 42, 40, 3, 11, 35, 53, 11, 68, 16, 42, 47, 18, 42, 18, 23, 69, 43, 70, 69, 70, 43, 18, 17, 71, 17, 64, 71, 75, 71, 72, 71, 44, 72, 45, 20, 14, 5, 73, 74, 5, 74, 73, 8, 47, 24, 47, 8, 18, 23, 16, 48, 22, 23, 48, 40, 50, 3, 15, 3, 50, 0, 51, 52, 6, 0, 52, 53, 4, 41, 53, 41, 11, 16, 54, 31, 16, 26, 54, 9, 30, 55, 14, 55, 30, 1, 57, 2, 21, 2, 57, 22, 63, 58, 22, 58, 23, 59, 20, 46, 60, 28, 7, 57, 28, 60, 35, 61, 1, 61, 57, 1, 18, 75, 26, 26, 75, 54, 62, 54, 6, 62, 6, 27, 63, 65, 13, 63, 13, 36, 71, 64, 44, 60, 7, 65, 7, 39, 65, 66, 21, 35, 66, 10, 21, 41, 68, 11, 41, 4, 68, 76, 85, 77, 85, 76, 84, 77, 86, 78, 86, 77, 85, 78, 87, 79, 87, 78, 86, 79, 88, 80, 88, 79, 87, 80, 89, 81, 89, 80, 88, 81, 90, 82, 90, 81, 89, 82, 91, 83, 91, 82, 90, 83, 84, 76, 84, 83, 91, 82, 80, 81, 80, 78, 79, 78, 76, 77, 80, 76, 78, 82, 76, 80, 83, 76, 82, 116, 118, 117, 118, 120, 119, 120, 122, 121, 118, 122, 120, 116, 122, 118, 116, 123, 122, 84, 93, 85, 93, 84, 92, 85, 94, 86, 94, 85, 93, 86, 95, 87, 95, 86, 94, 87, 96, 88, 96, 87, 95, 88, 97, 89, 97, 88, 96, 89, 98, 90, 98, 89, 97, 90, 99, 91, 99, 90, 98, 91, 92, 84, 92, 91, 99, 92, 101, 93, 101, 92, 100, 93, 102, 94, 102, 93, 101, 94, 103, 95, 103, 94, 102, 95, 104, 96, 104, 95, 103, 96, 105, 97, 105, 96, 104, 97, 106, 98, 106, 97, 105, 98, 107, 99, 107, 98, 106, 99, 100, 92, 100, 99, 107, 100, 109, 101, 109, 100, 108, 101, 110, 102, 110, 101, 109, 102, 111, 103, 111, 102, 110, 103, 112, 104, 112, 103, 111, 104, 113, 105, 113, 104, 112, 105, 114, 106, 114, 105, 113, 106, 115, 107, 115, 106, 114, 107, 108, 100, 108, 107, 115, 108, 117, 109, 117, 108, 116, 109, 118, 110, 118, 109, 117, 110, 119, 111, 119, 110, 118, 111, 120, 112, 120, 111, 119, 112, 121, 113, 121, 112, 120, 113, 122, 114, 122, 113, 121, 114, 123, 115, 123, 114, 122, 115, 116, 108, 116, 115, 123, 126, 124, 127, 124, 126, 125, 126, 128, 129, 128, 126, 127, 128, 130, 129, 130, 128, 131, 130, 124, 125, 124, 130, 131, 126, 130, 125, 130, 126, 129, 132, 124, 133, 124, 132, 127, 134, 127, 132, 127, 134, 128, 135, 128, 134, 128, 135, 131, 133, 131, 135, 131, 133, 124, 136, 133, 137, 133, 136, 132, 138, 132, 136, 132, 138, 134, 139, 134, 138, 134, 139, 135, 137, 135, 139, 135, 137, 133, 140, 137, 141, 137, 140, 136, 142, 136, 140, 136, 142, 138, 143, 138, 142, 138, 143, 139, 141, 139, 143, 139, 141, 137, 144, 141, 145, 141, 144, 140, 146, 140, 144, 140, 146, 142, 147, 142, 146, 142, 147, 143, 145, 143, 147, 143, 145, 141, 148, 145, 149, 145, 148, 144, 150, 144, 148, 144, 150, 146, 151, 146, 150, 146, 151, 147, 149, 147, 151, 147, 149, 145, 150, 149, 151, 149, 150, 148, 153, 155, 154, 152, 155, 153, 152, 156, 155, 152, 157, 156, 158, 157, 159, 158, 156, 157, 158, 160, 156, 158, 161, 160, 162, 164, 163, 162, 165, 164, 162, 161, 165, 162, 160, 161, 162, 154, 155, 154, 167, 166, 162, 167, 154, 162, 163, 167, 168, 160, 169, 160, 168, 156, 155, 168, 170, 168, 155, 156, 169, 162, 171, 162, 169, 160, 171, 155, 170, 155, 171, 162, 172, 169, 171, 169, 172, 173, 174, 169, 173, 169, 174, 168, 170, 174, 175, 174, 170, 168, 172, 170, 175, 170, 172, 171, 174, 176, 175, 174, 177, 176, 173, 177, 174, 173, 178, 177, 179, 175, 176, 178, 175, 179, 178, 172, 175, 173, 172, 178, 181, 183, 182, 181, 184, 183, 180, 184, 181, 180, 185, 184, 186, 182, 183, 185, 182, 186, 185, 187, 182, 180, 187, 185, 179, 181, 182, 181, 179, 176, 187, 179, 182, 179, 187, 178, 187, 177, 178, 177, 187, 180, 181, 177, 180, 177, 181, 176, 188, 186, 189, 186, 188, 185, 186, 190, 189, 190, 186, 183, 188, 184, 185, 184, 188, 191, 190, 184, 191, 184, 190, 183, 191, 189, 190, 189, 191, 188, 192, 164, 165, 164, 192, 193, 167, 194, 166, 194, 167, 195, 152, 197, 196, 197, 152, 153, 198, 158, 159, 158, 198, 199, 164, 193, 195, 195, 163, 164, 167, 163, 195, 154, 166, 194, 194, 153, 154, 194, 197, 153, 196, 157, 152, 157, 198, 159, 196, 198, 157, 199, 192, 165, 165, 161, 199, 161, 158, 199, 219, 233, 236, 221, 211, 217, 252, 212, 243, 214, 223, 213, 235, 219, 247, 224, 241, 226, 227, 243, 212, 210, 237, 215, 221, 207, 211, 223, 249, 251, 219, 235, 233, 0x0101, 209, 248, 202, 250, 229, 221, 217, 210, 253, 234, 215, 238, 232, 239, 237, 219, 236, 244, 245, 250, 220, 213, 223, 225, 239, 240, 203, 214, 240, 215, 228, 253, 238, 216, 232, 227, 211, 216, 217, 211, 227, 0x0101, 254, 209, 253, 206, 218, 201, 218, 231, 244, 212, 245, 247, 219, 212, 247, 212, 252, 213, 220, 200, 230, 207, 221, 246, 234, 201, 244, 250, 202, 254, 222, 202, 222, 254, 217, 223, 0x0100, 220, 208, 223, 251, 209, 224, 248, 210, 224, 226, 252, 243, 238, 0xFF, 200, 225, 210, 226, 237, 241, 205, 226, 227, 212, 244, 217, 227, 222, 228, 215, 242, 228, 206, 253, 229, 205, 241, 254, 229, 209, 230, 201, 231, 221, 201, 230, 230, 231, 207, 239, 232, 211, 216, 211, 232, 235, 251, 233, 233, 204, 236, 210, 215, 234, 246, 210, 234, 0x0100, 235, 247, 235, 208, 251, 237, 236, 215, 250, 245, 237, 205, 237, 226, 239, 225, 238, 225, 200, 238, 240, 239, 203, 0xFF, 225, 240, 240, 214, 213, 229, 241, 209, 209, 241, 224, 228, 242, 206, 243, 216, 238, 243, 227, 216, 244, 222, 227, 244, 202, 222, 212, 219, 245, 245, 219, 237, 210, 246, 221, 221, 246, 201, 220, 247, 252, 0x0100, 247, 220, 210, 248, 224, 0x0101, 248, 210, 214, 249, 223, 229, 250, 205, 250, 237, 205, 233, 251, 204, 220, 252, 200, 200, 252, 238, 201, 234, 253, 201, 253, 218, 254, 202, 229, 0xFF, 240, 213, 213, 200, 0xFF, 0x0100, 223, 208, 0x0100, 208, 235, 254, 0x0101, 217, 210, 217, 0x0101, 277, 291, 294, 279, 269, 275, 310, 270, 301, 272, 281, 271, 293, 277, 305, 282, 299, 284, 285, 301, 270, 268, 295, 273, 279, 265, 269, 281, 307, 309, 277, 293, 291, 315, 267, 306, 260, 308, 287, 279, 275, 268, 311, 292, 273, 296, 290, 297, 295, 277, 294, 302, 303, 308, 278, 271, 281, 283, 297, 298, 261, 272, 298, 273, 286, 311, 296, 274, 290, 285, 269, 274, 275, 269, 285, 315, 312, 267, 311, 264, 276, 259, 276, 289, 302, 270, 303, 305, 277, 270, 305, 270, 310, 271, 278, 258, 288, 265, 279, 304, 292, 259, 302, 308, 260, 312, 280, 260, 280, 312, 275, 281, 314, 278, 266, 281, 309, 267, 282, 306, 268, 282, 284, 310, 301, 296, 313, 258, 283, 268, 284, 295, 299, 263, 284, 285, 270, 302, 275, 285, 280, 286, 273, 300, 286, 264, 311, 287, 263, 299, 312, 287, 267, 288, 259, 289, 279, 259, 288, 288, 289, 265, 297, 290, 269, 274, 269, 290, 293, 309, 291, 291, 262, 294, 268, 273, 292, 304, 268, 292, 314, 293, 305, 293, 266, 309, 295, 294, 273, 308, 303, 295, 263, 295, 284, 297, 283, 296, 283, 258, 296, 298, 297, 261, 313, 283, 298, 298, 272, 271, 287, 299, 267, 267, 299, 282, 286, 300, 264, 301, 274, 296, 301, 285, 274, 302, 280, 285, 302, 260, 280, 270, 277, 303, 303, 277, 295, 268, 304, 279, 279, 304, 259, 278, 305, 310, 314, 305, 278, 268, 306, 282, 315, 306, 268, 272, 307, 281, 287, 308, 263, 308, 295, 263, 291, 309, 262, 278, 310, 258, 258, 310, 296, 259, 292, 311, 259, 311, 276, 312, 260, 287, 313, 298, 271, 271, 258, 313, 314, 281, 266, 314, 266, 293, 312, 315, 275, 268, 275, 315, 316, 317, 319, 317, 316, 318, 320, 317, 198, 317, 320, 319, 320, 321, 322, 321, 320, 198, 320, 323, 324, 323, 320, 322, 325, 319, 326, 319, 325, 316, 326, 320, 324, 320, 326, 319, 329, 326, 324, 326, 329, 327, 329, 323, 330, 323, 329, 324, 323, 328, 330, 328, 323, 325, 325, 327, 328, 327, 325, 326, 328, 329, 330, 329, 328, 327, 350, 364, 367, 352, 342, 348, 383, 343, 374, 345, 354, 344, 366, 350, 378, 355, 372, 357, 358, 374, 343, 341, 368, 346, 352, 338, 342, 354, 380, 382, 350, 366, 364, 388, 340, 379, 333, 381, 360, 352, 348, 341, 384, 365, 346, 369, 363, 370, 368, 350, 367, 375, 376, 381, 351, 344, 354, 356, 370, 371, 334, 345, 371, 346, 359, 384, 369, 347, 363, 358, 342, 347, 348, 342, 358, 388, 385, 340, 384, 337, 349, 332, 349, 362, 375, 343, 376, 378, 350, 343, 378, 343, 383, 344, 351, 331, 361, 338, 352, 377, 365, 332, 375, 381, 333, 385, 353, 333, 353, 385, 348, 354, 387, 351, 339, 354, 382, 340, 355, 379, 341, 355, 357, 383, 374, 369, 386, 331, 356, 341, 357, 368, 372, 336, 357, 358, 343, 375, 348, 358, 353, 359, 346, 373, 359, 337, 384, 360, 336, 372, 385, 360, 340, 361, 332, 362, 352, 332, 361, 361, 362, 338, 370, 363, 342, 347, 342, 363, 366, 382, 364, 364, 335, 367, 341, 346, 365, 377, 341, 365, 387, 366, 378, 366, 339, 382, 368, 367, 346, 381, 376, 368, 336, 368, 357, 370, 356, 369, 356, 331, 369, 371, 370, 334, 386, 356, 371, 371, 345, 344, 360, 372, 340, 340, 372, 355, 359, 373, 337, 374, 347, 369, 374, 358, 347, 375, 353, 358, 375, 333, 353, 343, 350, 376, 376, 350, 368, 341, 377, 352, 352, 377, 332, 351, 378, 383, 387, 378, 351, 341, 379, 355, 388, 379, 341, 345, 380, 354, 360, 381, 336, 381, 368, 336, 364, 382, 335, 351, 383, 331, 331, 383, 369, 332, 365, 384, 332, 384, 349, 385, 333, 360, 386, 371, 344, 344, 331, 386, 387, 354, 339, 387, 339, 366, 385, 388, 348, 341, 348, 388, 408, 422, 425, 410, 400, 406, 441, 401, 432, 403, 412, 402, 424, 408, 436, 413, 430, 415, 416, 432, 401, 399, 426, 404, 410, 396, 400, 412, 438, 440, 408, 424, 422, 446, 398, 437, 391, 439, 418, 410, 406, 399, 442, 423, 404, 427, 421, 428, 426, 408, 425, 433, 434, 439, 409, 402, 412, 414, 428, 429, 392, 403, 429, 404, 417, 442, 427, 405, 421, 416, 400, 405, 406, 400, 416, 446, 443, 398, 442, 395, 407, 390, 407, 420, 433, 401, 434, 436, 408, 401, 436, 401, 441, 402, 409, 389, 419, 396, 410, 435, 423, 390, 433, 439, 391, 443, 411, 391, 411, 443, 406, 412, 445, 409, 397, 412, 440, 398, 413, 437, 399, 413, 415, 441, 432, 427, 444, 389, 414, 399, 415, 426, 430, 394, 415, 416, 401, 433, 406, 416, 411, 417, 404, 431, 417, 395, 442, 418, 394, 430, 443, 418, 398, 419, 390, 420, 410, 390, 419, 419, 420, 396, 428, 421, 400, 405, 400, 421, 424, 440, 422, 422, 393, 425, 399, 404, 423, 435, 399, 423, 445, 424, 436, 424, 397, 440, 426, 425, 404, 439, 434, 426, 394, 426, 415, 428, 414, 427, 414, 389, 427, 429, 428, 392, 444, 414, 429, 429, 403, 402, 418, 430, 398, 398, 430, 413, 417, 431, 395, 432, 405, 427, 432, 416, 405, 433, 411, 416, 433, 391, 411, 401, 408, 434, 434, 408, 426, 399, 435, 410, 410, 435, 390, 409, 436, 441, 445, 436, 409, 399, 437, 413, 446, 437, 399, 403, 438, 412, 418, 439, 394, 439, 426, 394, 422, 440, 393, 409, 441, 389, 389, 441, 427, 390, 423, 442, 390, 442, 407, 443, 391, 418, 444, 429, 402, 402, 389, 444, 445, 412, 397, 445, 397, 424, 443, 446, 406, 399, 406, 446, 447, 448, 450, 448, 447, 449, 451, 448, 452, 448, 451, 450, 451, 453, 454, 453, 451, 452, 451, 455, 456, 455, 451, 454, 457, 450, 458, 450, 457, 447, 458, 451, 456, 451, 458, 450, 461, 458, 456, 458, 461, 459, 461, 455, 462, 455, 461, 456, 455, 460, 462, 460, 455, 457, 457, 459, 460, 459, 457, 458, 460, 461, 462, 461, 460, 459, 463, 464, 466, 464, 463, 465, 467, 464, 468, 464, 467, 466, 467, 469, 470, 469, 467, 468, 467, 471, 472, 471, 467, 470, 473, 466, 474, 466, 473, 463, 474, 467, 472, 467, 474, 466, 477, 474, 472, 474, 477, 475, 477, 471, 478, 471, 477, 472, 471, 476, 478, 476, 471, 473, 473, 475, 476, 475, 473, 474, 476, 477, 478, 477, 476, 475, 479, 480, 482, 480, 479, 481, 483, 480, 484, 480, 483, 482, 483, 485, 486, 485, 483, 484, 483, 487, 488, 487, 483, 486, 489, 482, 490, 482, 489, 479, 490, 483, 488, 483, 490, 482, 493, 490, 488, 490, 493, 491, 493, 487, 494, 487, 493, 488, 487, 492, 494, 492, 487, 489, 489, 491, 492, 491, 489, 490, 492, 493, 494, 493, 492, 491, 495, 504, 496, 504, 495, 503, 496, 505, 497, 505, 496, 504, 497, 506, 498, 506, 497, 505, 498, 507, 499, 507, 498, 506, 499, 508, 500, 508, 499, 507, 500, 509, 501, 509, 500, 508, 501, 510, 502, 510, 501, 509, 502, 503, 495, 503, 502, 510, 501, 499, 500, 499, 497, 498, 497, 495, 496, 499, 495, 497, 501, 495, 499, 502, 495, 501, 521, 523, 522, 523, 525, 524, 525, 519, 526, 523, 519, 525, 521, 519, 523, 520, 519, 521, 503, 0x0200, 504, 0x0200, 503, 511, 504, 513, 505, 513, 504, 0x0200, 505, 0x0202, 506, 0x0202, 505, 513, 506, 515, 507, 515, 506, 0x0202, 507, 516, 508, 516, 507, 515, 508, 517, 509, 517, 508, 516, 509, 518, 510, 518, 509, 517, 510, 511, 503, 511, 510, 518, 511, 520, 0x0200, 520, 511, 519, 0x0200, 521, 513, 521, 0x0200, 520, 513, 522, 0x0202, 522, 513, 521, 0x0202, 523, 515, 523, 0x0202, 522, 515, 524, 516, 524, 515, 523, 516, 525, 517, 525, 516, 524, 517, 526, 518, 526, 517, 525, 518, 519, 511, 519, 518, 526]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/SaintPancras.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/SaintPancras.as new file mode 100644 index 0000000..54cd5f3 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/SaintPancras.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class SaintPancras extends Stage3DData { + + public function SaintPancras(){ + vertices = new [212.648, -3.05176E-5, -747.022, 212.648, 80.784, -747.022, 243.307, 80.784, -808.515, 243.307, -3.05176E-5, -808.515, 149.95, -3.05176E-5, -933.9, 168.149, -3.05176E-5, -963.532, 170.7, -3.05176E-5, -961.965, 181.255, -3.05176E-5, -979.152, 162.815, -3.05176E-5, -990.477, 171.338, -3.05176E-5, -1004.36, 124.812, -3.05176E-5, -1032.93, 116.288, -3.05176E-5, -1019.05, 96.8407, -3.05176E-5, -1030.99, 68.0872, -3.05176E-5, -984.175, 68.0871, 84.0277, -984.175, 84.4598, 84.0277, -974.12, 100.832, 84.0277, -964.065, 133.578, 84.0277, -943.955, 149.95, 84.0277, -933.9, 96.8407, 84.0277, -1030.99, 116.288, 84.0277, -1019.05, 114.568, 84.0277, -1016.25, 137.831, 84.0277, -1001.96, 161.094, 84.0276, -987.676, 152.259, 84.0276, -973.29, 119.031, 84.0277, -993.697, 102.658, 84.0277, -1003.75, 86.2852, 84.0277, -1013.81, 144.945, 84.0499, -919.793, 149.95, 84.0499, -933.9, 144.945, -3.05176E-5, -919.793, 143.095, 84.0664, -904.94, 144.945, 84.0664, -919.794, 144.486, 84.0779, -890.037, 143.095, 84.0766, -904.94, 143.095, 84.0664, -904.94, 149.053, 84.0769, -875.783, 144.486, -3.05176E-5, -890.037, 149.053, -3.05176E-5, -875.783, 156.582, 84.0759, -862.846, 156.582, -3.05176E-5, -862.846, 86.2852, 84.0652, -1013.81, 102.658, 84.0277, -1003.75, 119.031, 84.0277, -993.697, 168.148, 84.0276, -963.532, 168.149, 84.0499, -963.532, 151.776, 119.815, -973.587, 99.9088, 119.815, -1005.44, 68.087, 84.0652, -984.175, 81.7108, 119.815, -975.809, 95.7051, 119.815, -967.214, 133.578, 119.815, -943.955, 125.89, 119.815, -948.676, 91.5282, 105.949, -978.735, 114.568, 105.949, -1016.25, 137.831, 145.428, -1001.96, 114.791, 145.428, -964.448, 161.094, 105.949, -987.676, 138.054, 105.949, -950.161, 125.89, 119.815, -948.676, 68.087, 84.0652, -984.175, 84.4598, 84.0277, -974.12, 100.832, 84.0277, -964.065, 133.578, 84.0277, -943.955, 133.578, 84.0498, -943.955, 81.7106, 119.815, -975.808, 149.95, 84.0277, -933.9, 133.578, 84.0498, -943.955, 126.861, 84.0498, -924.983, 126.861, 119.815, -924.983, 126.861, 84.0663, -924.983, 124.536, 119.815, -904.991, 124.536, 84.0764, -904.991, 124.536, 84.0663, -904.991, 126.719, 119.815, -884.984, 126.719, 84.0781, -884.984, 133.299, 119.815, -865.965, 133.299, 84.0791, -865.965, 158.131, 84.0652, -834.607, 143.949, 84.0652, -848.887, 143.949, 84.0759, -848.887, 133.578, 119.815, -943.955, 143.949, 119.815, -848.887, 158.131, 119.815, -834.607, 158.131, 74.359, -834.607, 166.721, 84.0652, -851.835, 516.548, 112.921, -636.659, 528.383, 112.921, -660.396, 530.773, 112.921, -665.19, 535.109, 112.921, -663.028, 558.916, 112.921, -651.159, 563.145, 112.921, -649.049, 561.279, 112.921, -645.305, 548.899, 112.921, -620.476, 546.99, 112.921, -616.647, 542.877, 112.921, -618.698, 519.659, 112.921, -630.274, 514.618, 112.921, -632.788, 555.089, 145.99, -632.891, 548.127, 145.99, -636.228, 543.655, 145.99, -650.141, 547.012, 145.99, -657.093, 548.899, 112.921, -620.476, 558.916, 112.921, -651.159, 500.114, 68.8962, -603.697, 514.618, 80.784, -632.788, 514.618, 68.8962, -632.788, 529.892, 49.1152, -582.355, 238.994, 49.1152, -727.391, 238.994, -3.05176E-5, -727.391, 497.52, -3.05176E-5, -598.495, 529.893, -3.05176E-5, -582.354, 265.553, 49.1152, -720.644, 503.175, 49.1152, -602.17, 121.336, 49.1152, 163.681, 110.653, 49.1152, 158.355, -105.603, 49.1152, 50.5338, -116.286, 49.1152, 45.2074, -96.1845, 68.1154, 55.2294, 285.655, 68.1154, -710.622, -73.6853, 83.3944, 66.4472, 308.154, 83.3944, -699.404, -49.3343, 94.5811, 78.588, 332.505, 94.5811, -687.263, -23.7234, 101.404, 91.3572, 358.116, 101.404, -674.494, 2.52494, 103.696, 104.444, 384.364, 103.696, -661.407, 28.7735, 101.404, 117.531, 410.613, 101.404, -648.32, 54.3842, 94.5811, 130.3, 436.224, 94.5811, -635.551, 78.7351, 83.3944, 142.441, 460.575, 83.3944, -623.41, 101.235, 68.1154, 153.659, 483.074, 68.1154, -612.192, 58.5172, 84.0371, -935.06, 75.157, 84.0371, -931.818, 75.1581, 119.731, -931.824, 124.815, 119.731, -922.149, 124.811, -3.05176E-5, -922.127, 58.5142, -3.05176E-5, -935.045, 58.5172, 84.0371, -935.06, 68.0869, 84.0652, -984.175, 110.369, 119.739, -848.005, 113.89, 119.737, -866.075, 208.52, -3.05176E-5, -738.744, 247.805, -3.05176E-5, -817.537, 169.169, -3.05176E-5, -856.744, 166.721, -3.05176E-5, -851.835, 149.526, -3.05176E-5, -817.347, 129.884, -3.05176E-5, -777.951, 99.3121, 119.746, -791.259, 49.6549, 119.746, -800.934, 117.135, 119.735, -882.73, 121.433, 119.733, -904.788, 158.131, 119.815, -834.607, 129.884, 84.0652, -777.951, 99.3059, 119.756, -791.261, 92.8286, 62.3904, -722.655, 118.345, 62.3904, -779.076, 118.345, -3.05176E-5, -779.076, 72.784, -3.05176E-5, -678.334, 72.784, 22.3965, -678.334, 72.7841, 49.1881, -678.334, 92.8286, 49.1881, -722.655, 43.0388, -3.05176E-5, -678.741, 83.7672, -3.05176E-5, -782.45, 29.8075, -3.05176E-5, -787.714, 8.66628, -3.05176E-5, -679.21, 102.867, 72.6756, -780.586, 16.0405, -3.05176E-5, -629.874, 37.5508, -3.05176E-5, -617.99, 64.5491, -3.05176E-5, -666.856, 26.9682, -3.05176E-5, -674.163, 15.3646, -3.05176E-5, -662.139, 11.3618, -3.05176E-5, -645.915, 37.5509, 41.4215, -617.99, 51.05, 41.4215, -642.423, 64.5491, 41.4215, -666.856, 29.5397, 67.584, -654.307, 26.9682, 41.4215, -674.163, 43.0387, 41.4215, -678.74, 15.3646, 41.4215, -662.139, 11.3618, 41.4215, -645.916, 16.0405, 41.4215, -629.874, 181.82, 49.1152, -612.719, 124.646, 49.1152, -498.045, 124.646, 43.4402, -498.046, 124.646, -3.05176E-5, -498.045, 175.778, 49.1152, -758.909, 181.82, 49.1152, -612.719, 118.604, 49.1152, -644.237, 124.646, -3.05176E-5, -498.045, 175.778, -3.05176E-5, -758.91, 61.4302, -3.05176E-5, -529.564, 238.994, 49.1152, -727.391, 175.778, 22.3965, -758.91, 72.8651, 49.1152, -552.498, 22.4244, 49.1152, -577.647, 125.337, 49.1152, -784.058, 123.516, 59.3027, -629.558, 76.1093, 59.3027, -534.475, 61.4302, 49.1152, -529.564, 67.1478, 49.1152, -541.031, 61.4302, 43.4402, -529.564, 61.4302, 22.3965, -529.564, 175.778, 22.3965, -758.91, 125.337, 22.3965, -784.058, -133.468, 44.1465, 19.6524, -190.526, 44.1465, -8.79552, -109.498, 44.1465, -228.304, -29.6826, 44.1465, -188.51, -30.6775, 44.1465, -186.514, -107.64, 44.1465, -224.887, -186.372, 44.1465, -9.913, -132.195, 44.1465, 17.0987, -109.498, 22.3965, -228.304, -92.8984, 22.3965, -220.028, -92.8984, 43.4402, -220.028, -29.6826, 43.4402, -188.51, -190.526, -3.05176E-5, -8.79552, -109.498, -3.05176E-5, -228.304, -133.468, -3.05176E-5, 19.6524, -132.195, 36.734, 17.0987, -186.372, 36.734, -9.913, -107.64, 36.734, -224.887, -30.6775, 36.734, -186.514, 10.9896, -3.05176E-5, -554.713, 10.9896, 22.3965, -554.713, 61.4302, 43.4402, -529.564, 14.8864, 22.3965, -552.77, 56.7134, 22.3965, -531.916, 72.7841, 22.3965, -678.334, 307.248, 80.784, -776.635, 286.956, 80.784, -786.753, 286.956, 18.9264, -786.753, 307.248, 18.9264, -776.635, 243.307, 80.784, -808.515, 231.94, 80.784, -737.403, 212.648, 80.784, -747.022, 396.272, 80.784, -732.249, 379.99, 80.784, -740.367, 379.99, 18.6202, -740.367, 396.272, 18.6202, -732.249, 231.94, -3.05176E-5, -737.403, 546.99, -3.05176E-5, -616.647, 546.99, 68.8962, -616.647, 563.145, -3.05176E-5, -649.049, 529.892, 49.1152, -582.354, 529.892, 68.8962, -582.354, 535.509, 68.8962, -593.62, 535.592, 68.8962, -593.785, 310.341, 80.784, -698.314, 297.44, 80.784, -672.439, 258.24, 80.784, -691.984, 219.039, 80.784, -711.528, 68.087, 84.0277, -984.175, 116.288, 32.5277, -1019.05, 116.288, 49.0787, -1019.05, 181.255, 84.0277, -979.152, 162.815, 84.0276, -990.477, 162.815, 49.0787, -990.477, 162.815, 32.5277, -990.477, 114.568, 49.0787, -1016.25, 161.094, 49.0787, -987.676, 170.7, 84.0276, -961.965, 171.338, 32.5277, -1004.36, 124.812, 32.5277, -1032.93, 169.766, 32.5277, -1003.98, 125.188, 32.5277, -1031.36, 117.861, 32.5277, -1019.43, 162.439, 32.5277, -992.05, 125.188, 30.5027, -1031.36, 169.766, 30.5027, -1003.98, 162.439, 30.5027, -992.05, 117.861, 30.5027, -1019.43, 155.06, 58.2777, -995.24, 147.475, 49.0787, -999.898, 139.551, 58.2777, -1004.76, 131.797, 49.0787, -1009.53, 124.042, 58.2777, -1014.29, 122.322, 58.2777, -1011.49, 130.076, 49.0787, -1006.73, 137.831, 58.2777, -1001.96, 145.755, 49.0787, -997.096, 153.34, 58.2777, -992.438, 137.831, 145.428, -1001.96, 137.831, 84.0277, -1001.96, 140.346, 145.428, -1000.42, 135.248, 145.428, -1003.55, 143.095, -3.05176E-5, -904.94, 48.9473, 84.0465, -885.945, 48.9473, -3.05176E-5, -885.944, 143.949, 119.815, -848.887, 158.131, 119.815, -834.607, 124.536, 119.815, -904.991, 126.719, 119.815, -884.984, 521.699, 111.786, -646.991, 234.233, 111.786, -790.316, 286.956, 80.784, -786.753, 307.248, 80.784, -776.635, 379.99, 80.784, -740.367, 530.773, 80.784, -665.19, 184.417, 200.99, -811.17, 202.231, 200.99, -802.288, 193.271, 200.99, -784.318, 175.457, 200.99, -793.2, 129.884, 133.613, -777.951, 169.168, 133.613, -856.744, 208.52, 133.613, -738.744, 247.805, 133.613, -817.537, 514.618, 111.786, -632.787, 509.527, 111.786, -622.577, 300.477, 111.786, -726.806, 257.95, 111.786, -748.009, 222.061, 111.786, -765.903, 291.064, 111.786, -707.925, 248.537, 111.786, -729.128, 49.6406, 119.756, -800.937, 29.8075, 84.0652, -787.714, 36.758, 84.0584, -823.386, 95.7051, 119.815, -967.214, 129.884, 84.0652, -777.951, 83.7671, 84.0652, -782.45, 79.1175, 72.6756, -722.368, 29.8075, 72.6756, -787.714, 80.2056, 72.6756, -711.12, 79.4931, 72.6756, -699.841, 76.998, 72.6756, -688.819, 72.7841, 72.6756, -678.334, 8.66628, 72.6756, -679.21, 51.05, 67.584, -642.423, 180.157, 57.8965, -745.823, 225.907, 57.8965, -723.013, 177.442, 57.8965, -625.805, 131.691, 57.8965, -648.615, 167.141, 59.3027, -607.807, 119.735, 59.3027, -512.725, 124.646, 49.1152, -498.045, 294.477, 80.784, -789.134, 304.624, 80.784, -784.075, 386.824, 80.784, -743.881, 394.965, 80.784, -739.822, 307.248, 18.9264, -776.635, 304.624, 18.9264, -784.075, 294.477, 18.9264, -789.134, 396.272, 18.6203, -732.249, 394.965, 18.6203, -739.822, 386.824, 18.6203, -743.881, 539.422, 50.6833, -660.878, 556.386, 50.6833, -652.419, 556.386, 18.9458, -652.419, 539.422, 18.9458, -660.878, 530.773, -3.05176E-5, -665.19, 528.383, 112.921, -660.396, 554.962, 18.9458, -660.183, 546.479, 18.9458, -664.412, 546.479, 50.6833, -664.412, 554.962, 50.6833, -660.183, 554.962, 50.6833, -660.183, 551.445, 58.7716, -654.883, 544.307, 58.7739, -658.442, 546.479, 50.6833, -664.413, 556.386, 50.6833, -652.42, 539.422, 50.6833, -660.878, 546.99, 81.8682, -616.647, 546.99, 112.921, -616.647, 500.114, 80.784, -603.697, 516.548, 112.921, -636.659, 529.428, 145.99, -645.191, 561.279, 112.921, -645.305, 548.127, 145.99, -636.228, 541.742, 163.021, -632.332, 547.46, 163.021, -643.801, 543.655, 145.99, -650.141, 536.021, 163.021, -649.505, 535.109, 112.921, -663.028, 534.625, 145.99, -631.438, 519.659, 112.921, -630.274, 538.882, 202.803, -640.918, 541.742, 172.753, -632.332, 530.303, 172.753, -638.036, 536.021, 172.753, -649.505, 547.46, 172.753, -643.801, 530.303, 163.021, -638.036, 535.509, 68.8962, -593.62, 300.477, 111.786, -726.806, 231.94, 80.784, -737.403, 297.44, 80.784, -672.439, 219.039, 80.784, -711.528, 547.012, 145.99, -657.093, 535.109, 128.859, -663.028, 555.089, 145.99, -632.891, 561.279, 128.859, -645.305, 531.268, 145.99, -624.486, 542.877, 112.921, -618.698, 522.466, 145.99, -648.528, 528.383, 128.859, -660.396, 548.899, 128.859, -620.476, 558.916, 128.859, -651.159, 519.659, 128.859, -630.274, 516.548, 128.859, -636.659, 542.877, 128.859, -618.698, 522.465, 145.99, -648.528, 529.428, 145.99, -645.191, 531.268, 145.99, -624.486, 534.625, 145.99, -631.438, 497.52, 68.8962, -598.495, 500.114, -3.05176E-5, -603.697, 310.341, -3.05176E-5, -698.314, 219.039, -3.05176E-5, -711.528, 529.892, 68.8962, -582.354, 258.24, -3.05176E-5, -691.984, 297.44, -3.05176E-5, -672.439, 29.8075, 72.6756, -787.714, 83.7672, -3.05176E-5, -782.45, 56.9605, 115.957, -785.065, 58.1695, 115.957, -797.457, 58.3423, 115.957, -799.229, 85.1488, 84.0652, -796.614, 83.7672, 84.0652, -782.45, 150.647, -3.05176E-5, 178.295, 150.647, 49.1152, 178.295, -140.252, 49.1152, 33.2582, -140.252, -3.05176E-5, 33.2582, 121.336, 49.1152, 163.681, -105.602, 49.1152, 50.5338, -105.603, 49.1152, 50.5338, -92.1404, 61.8399, 57.2458, -70.5628, 76.4929, 68.0039, -47.2095, 87.2213, 79.6474, -22.6482, 93.7644, 91.8933, 2.52494, 95.9632, 104.444, 27.6981, 93.7644, 116.995, 52.2595, 87.2213, 129.241, 75.6125, 76.4929, 140.884, 97.1904, 61.8399, 151.643, 121.336, 49.1152, 163.681, 36.758, -3.05176E-5, -823.386, 36.758, 84.0584, -823.386, 72.2899, 84.0584, -816.462, 84.4792, 84.0465, -879.021, 78.5396, 125.288, -848.539, 43.0079, 125.288, -855.462, 36.7579, 84.0584, -823.386, 76.998, 49.1881, -688.819, 79.4931, 49.1881, -699.841, 80.2056, 49.1881, -711.12, 79.1175, 49.1881, -722.368, 10.9896, 49.1152, -554.713, 56.7134, 22.3965, -531.916, 56.7134, 45.0465, -531.916, 14.8864, 45.0465, -552.77, 14.8864, 22.3965, -552.77, 216.29, 49.1152, 211.024, 157.155, 49.1152, 332.433, -166.673, 49.1152, 20.0853, -565.781, 49.1152, 845.947, -565.781, -3.05176E-5, 845.947, -166.673, -3.05176E-5, 20.0853, -184.036, 49.1152, 1032.93, 216.29, -3.05176E-5, 211.024, 157.155, -3.05176E-5, 332.433, 65.1955, 49.1153, 495.681, 69.1093, 49.1153, 497.678, 69.1093, -3.05176E-5, 497.678, 65.1955, -3.05176E-5, 495.681, 71.4679, -3.05176E-5, 492.836, 71.4679, 49.1153, 492.836, 67.5542, 49.1153, 490.838, 67.5543, -3.05176E-5, 490.838, 71.4678, 49.1153, 492.836, 65.1954, 49.1153, 495.681, 2.30838, 49.1153, 621.217, 6.22219, 49.1153, 623.214, 6.22219, -3.05176E-5, 623.214, 2.30838, -3.05176E-5, 621.217, 8.58084, -3.05176E-5, 618.372, 8.58084, 49.1153, 618.372, 4.66721, 49.1153, 616.375, 4.66717, -3.05176E-5, 616.375, 8.58084, 49.1153, 618.372, 2.30838, 49.1153, 621.217, -70.5122, 49.1153, 789.824, -66.5986, 49.1153, 791.821, -66.5986, -3.05176E-5, 791.821, -70.5122, -3.05176E-5, 789.824, -64.24, -3.05176E-5, 786.978, -64.24, 49.1153, 786.978, -68.1537, 49.1153, 784.981, -68.1536, -3.05176E-5, 784.981, -64.24, 49.1153, 786.978, -70.5123, 49.1153, 789.824, -130.629, 49.1154, 908.029, -127.642, 49.1154, 909.518, -127.642, -3.05176E-5, 909.518, -130.629, -3.05176E-5, 908.029, -125.84, -3.05176E-5, 905.903, -125.84, 49.1154, 905.903, -128.826, 49.1154, 904.414, -128.826, -3.05176E-5, 904.414, -125.84, 49.1154, 905.903, -130.629, 49.1154, 908.029, -184.906, 49.1154, 1027.39, -181.919, 49.1154, 1028.88, -181.919, -3.05176E-5, 1028.88, -184.906, -3.05176E-5, 1027.39, -180.117, -3.05176E-5, 1025.27, -180.117, 49.1154, 1025.27, -183.104, 49.1154, 1023.78, -183.104, -3.05176E-5, 1023.78, -180.117, 49.1154, 1025.27, -184.906, 49.1154, 1027.39, 152.259, 113.515, -973.29, 161.094, 84.0275, -987.676, 162.814, 113.515, -990.478, 157.536, 134.267, -981.884, 170.699, 113.515, -961.965, 175.977, 134.267, -970.559, 181.255, 113.515, -979.153, 181.255, 84.0275, -979.153, 161.479, 134.267, -967.628, 152.259, 113.515, -973.29, 172.035, 134.267, -984.815, 168.148, 84.0275, -963.532, 166.757, 160.329, -976.221, 170.7, 113.515, -961.965, 152.259, 113.515, -973.29, 181.255, 113.515, -979.153, 181.255, 113.515, -979.153, 181.255, 113.515, -979.153, 152.259, 113.515, -973.29, 181.255, 84.0275, -979.152, 85.8531, 113.515, -1012.77, 85.8532, 84.0275, -1012.77, 95.0356, 84.0275, -1028.02, 96.8239, 84.0275, -1030.98, 96.8239, 113.515, -1030.98, 91.3384, 134.267, -1021.88, 105.036, 113.515, -1000.76, 110.521, 134.267, -1009.87, 116.007, 113.515, -1018.97, 105.036, 84.0275, -1000.76, 116.007, 84.0275, -1018.97, 95.4447, 134.267, -1006.76, 85.8531, 113.515, -1012.77, 106.415, 134.267, -1024.98, 102.382, 84.0275, -1002.42, 100.93, 160.329, -1015.87, 105.036, 113.515, -1000.76, 85.8533, 113.515, -1012.77, 116.007, 113.515, -1018.97, 116.007, 113.515, -1018.97, 116.007, 113.515, -1018.97, 85.8533, 113.515, -1012.77, 95.0358, 84.0275, -1028.02, 116.007, 84.0275, -1018.97, 102.383, 84.0275, -1002.42, 558.161, 112.89, -646.55, 558.069, 112.89, -650.949, 565.688, 112.89, -651.109, 561.925, 101.433, -648.83, 565.781, 112.89, -646.71, 565.781, 137.727, -646.71, 565.781, 112.89, -646.71, 558.161, 137.727, -646.55, 558.069, 137.727, -650.949, 565.688, 137.727, -651.109, 561.925, 154.99, -648.829, 512.532, 112.811, -630.84, 512.44, 112.811, -635.239, 520.06, 112.811, -635.399, 516.296, 101.355, -633.119, 520.152, 112.811, -631, 520.06, 137.648, -635.399, 512.532, 137.648, -630.84, 516.296, 154.911, -633.119, 512.44, 137.648, -635.239, 520.152, 137.648, -631, 543.314, 112.811, -621.792, 551.026, 112.811, -617.552, 547.17, 154.911, -619.672, 543.314, 137.648, -621.792, 551.026, 137.648, -617.552, 518.549, 110.443, -581.234, 518.549, -3.05176E-5, -581.234, 520.953, -3.05176E-5, -585.953, 520.953, 110.443, -585.953, 520.186, 110.443, -576.198, 520.186, -3.05176E-5, -576.198, 524.904, 110.443, -573.794, 524.904, -3.05176E-5, -573.794, 532.344, -3.05176E-5, -580.149, 532.344, 110.443, -580.149, 530.708, 110.443, -585.185, 530.708, -3.05176E-5, -585.185, 529.94, 110.443, -575.431, 529.94, -3.05176E-5, -575.431, 525.99, 110.443, -587.589, 525.99, -3.05176E-5, -587.589, 525.447, 133.374, -580.692, 525.373, 68.9, -581.161, 525.373, 44.0625, -581.161, 525.281, 44.0625, -585.559, 525.28, 68.9, -585.559, 532.963, 44.0625, -582.719, 532.992, 44.0625, -581.32, 532.992, 68.9, -581.32, 532.9, 68.9, -585.719, 532.9, 44.0625, -585.719, 529.228, 68.9, -579.041, 529.228, 44.0625, -579.041, 529.044, 68.9, -587.839, 529.044, 44.0625, -587.839, 529.136, 86.1625, -583.44, 529.228, 68.9, -579.041, 525.281, 68.9, -585.559, 529.044, 44.0625, -587.839, 525.28, 44.0625, -585.559, 529.136, 32.6063, -583.44, 532.9, 68.9, -585.719, 529.136, 86.1625, -583.44, 525.373, 68.9, -581.16, 529.044, 68.9, -587.839, 529.228, 44.0625, -579.041, 532.992, 68.9, -581.32, 532.992, 44.0625, -581.32, 381.007, 100.59, -725.095, 387.273, 100.59, -737.662, 397.134, 81.1295, -732.746, 390.868, 81.1295, -720.179, 377.804, 81.1295, -742.384, 371.538, 81.1295, -729.816, 444.947, 110.713, -679.504, 456.318, 110.713, -702.312, 474.212, 80.7839, -693.39, 462.841, 80.7839, -670.583, 439.133, 80.7839, -710.88, 427.762, 80.7839, -688.073, 290.537, 101.178, -768.622, 297.064, 101.178, -781.713, 307.335, 80.9063, -776.592, 300.808, 80.9063, -763.501, 280.673, 80.9063, -773.54, 287.2, 80.9063, -786.631, 201.807, 160.824, -735.868, 201.807, -3.05176E-5, -735.868, 204.211, -3.05176E-5, -740.586, 204.211, 160.824, -740.586, 203.443, 160.824, -730.832, 203.443, -3.05176E-5, -730.832, 208.161, 160.824, -728.428, 208.161, -3.05176E-5, -728.428, 215.602, -3.05176E-5, -734.783, 215.602, 160.824, -734.783, 213.965, 160.824, -739.819, 213.965, -3.05176E-5, -739.819, 213.197, 160.824, -730.064, 213.197, -3.05176E-5, -730.064, 209.247, 160.824, -742.223, 209.247, -3.05176E-5, -742.223, 208.704, 195.724, -735.325, 236.674, 163.746, -816.635, 236.674, -3.05176E-5, -816.635, 239.078, -3.05176E-5, -821.353, 239.078, 163.746, -821.353, 238.311, 163.746, -811.599, 238.31, -3.05176E-5, -811.599, 243.029, 163.746, -809.195, 243.029, -3.05176E-5, -809.195, 250.469, -3.05176E-5, -815.549, 250.469, 163.746, -815.549, 248.832, 163.746, -820.585, 248.832, -3.05176E-5, -820.585, 248.065, 163.746, -810.831, 248.065, -3.05176E-5, -810.831, 244.114, 163.746, -822.99, 244.114, -3.05176E-5, -822.99, 243.572, 198.646, -816.092, 162.238, 163.6, -853.447, 162.238, -3.05176E-5, -853.447, 164.642, -3.05176E-5, -858.165, 164.642, 163.6, -858.165, 163.874, 163.6, -848.411, 163.874, -3.05176E-5, -848.41, 168.592, 163.6, -846.006, 168.592, -3.05176E-5, -846.006, 176.033, -3.05176E-5, -852.361, 176.033, 163.6, -852.361, 174.396, 163.6, -857.397, 174.396, -3.05176E-5, -857.397, 173.628, 163.6, -847.643, 173.628, -3.05176E-5, -847.643, 169.678, 163.6, -859.801, 169.678, -3.05176E-5, -859.801, 169.135, 198.5, -852.904, 118.423, 160.824, -778.839, 118.422, -3.05176E-5, -778.838, 120.826, -3.05176E-5, -783.557, 120.827, 160.824, -783.557, 120.059, 160.824, -773.802, 120.059, -3.05176E-5, -773.802, 124.777, 160.824, -771.398, 124.777, -3.05176E-5, -771.398, 132.217, -3.05176E-5, -777.753, 132.217, 160.824, -777.753, 130.581, 160.824, -782.789, 130.581, -3.05176E-5, -782.789, 129.813, 160.824, -773.035, 129.813, -3.05176E-5, -773.035, 125.863, 160.824, -785.193, 125.863, -3.05176E-5, -785.193, 125.32, 195.724, -778.296, 223.836, 170.471, -772.919, 223.336, 170.471, -777.949, 227.443, 170.471, -780.897, 232.048, 170.471, -778.814, 232.548, 170.471, -773.784, 231.48, 170.471, -774.267, 231.097, 170.471, -778.131, 227.558, 170.471, -779.731, 224.403, 170.471, -777.467, 224.787, 170.471, -773.602, 228.326, 170.471, -772.002, 228.441, 170.471, -770.837, 232.548, 109.015, -773.784, 228.441, 109.015, -770.837, 232.048, 109.015, -778.814, 227.443, 109.015, -780.897, 223.836, 109.015, -772.919, 231.097, 181.809, -778.131, 227.558, 181.809, -779.731, 223.336, 109.015, -777.949, 231.48, 181.809, -774.267, 228.326, 181.809, -772.002, 224.787, 181.809, -773.602, 224.403, 181.809, -777.467, 126.311, 57.6088, -769.255, 163.925, 57.6088, -750.501, 164.343, 49.1151, -735.975, 113.902, 49.1151, -761.124, 125.337, 49.1151, -784.058, 114.876, 57.6089, -746.32, 152.49, 57.6089, -727.567, 152.908, 49.1151, -713.04, 102.468, 49.1151, -738.189, 103.441, 57.6089, -723.386, 141.055, 57.6089, -704.632, 141.474, 49.1151, -690.106, 91.0329, 49.1151, -715.255, 92.0068, 57.6089, -700.451, 129.62, 57.6089, -681.698, 130.039, 49.1152, -667.171, 79.5981, 49.1152, -692.32, 80.5719, 57.6089, -677.517, 118.186, 57.6089, -658.763, 68.1634, 49.1152, -669.385, 69.1373, 57.113, -654.582, 106.751, 57.113, -635.828, 107.169, 48.6193, -621.302, 56.7286, 48.6193, -646.451, 68.1633, 48.6193, -669.385, 118.604, 48.6193, -644.237, 57.7025, 57.6304, -631.647, 95.3162, 57.6304, -612.894, 95.7346, 49.1366, -598.367, 45.2939, 49.1366, -623.516, 56.7286, 49.1366, -646.451, 107.169, 49.1366, -621.302, 46.2677, 57.6304, -608.713, 83.8815, 57.6304, -589.959, 84.2998, 49.1366, -575.433, 33.8591, 49.1366, -600.582, 34.833, 57.609, -585.779, 72.4467, 57.609, -567.025, 72.8651, 49.1152, -552.498, 33.8591, 49.1152, -600.582, 84.2998, 49.1152, -575.433, 23.3983, 57.6089, -562.844, 61.012, 57.6089, -544.09, 558.069, 137.727, -650.949, 562.017, 137.727, -644.43, 562.017, 112.89, -644.43, 561.833, 137.727, -653.229, 565.688, 137.727, -651.109, 561.925, 154.99, -648.83, 561.833, 112.89, -653.229, 558.069, 112.89, -650.949, 527.427, 112.921, -665.869, 527.427, 137.759, -665.869, 535.138, 112.921, -661.63, 531.374, 137.759, -659.35, 531.19, 137.759, -668.148, 531.19, 112.921, -668.148, 535.138, 137.759, -661.63, 531.282, 155.021, -663.749, 535.046, 137.759, -666.029, 527.519, 137.759, -661.47, 531.374, 112.921, -659.35, 512.532, 137.648, -630.84, 512.44, 137.648, -635.239, 520.152, 112.811, -631, 516.388, 137.648, -628.72, 516.204, 137.648, -637.519, 516.204, 112.811, -637.519, 520.06, 137.648, -635.399, 520.152, 137.648, -631, 516.296, 154.911, -633.119, 512.44, 112.811, -635.239, 516.388, 112.811, -628.72, 543.314, 137.648, -621.792, 551.026, 137.648, -617.552, 550.933, 137.648, -621.951, 547.262, 137.648, -615.273, 547.262, 112.811, -615.273, 547.078, 137.648, -624.071, 547.078, 112.811, -624.071, 547.17, 154.911, -619.672, 543.406, 137.648, -617.393, 558.161, 112.89, -646.55, 565.688, 112.89, -651.109, 561.925, 101.433, -648.83, 565.781, 112.89, -646.71, 565.781, 137.727, -646.71, 558.161, 137.727, -646.55, 535.046, 112.921, -666.029, 531.282, 101.465, -663.749, 512.532, 112.811, -630.84, 520.06, 112.811, -635.399, 516.296, 101.355, -633.119, 551.026, 112.811, -617.552, 550.933, 112.811, -621.951, 547.17, 101.355, -619.672, 543.406, 112.811, -617.393, 543.314, 112.811, -621.792, 527.519, 112.921, -661.47]; + uvs = new [0.687736, 0.861242, 0.687736, 0.861242, 0.714804, 0.890979, 0.714804, 0.890979, 0.632384, 0.951612, 0.64845, 0.965941, 0.650702, 0.965183, 0.660021, 0.973495, 0.643741, 0.978971, 0.651266, 0.985683, 0.61019, 0.999501, 0.602665, 0.992789, 0.585496, 0.998564, 0.560111, 0.975924, 0.560111, 0.975924, 0.574565, 0.971061, 0.58902, 0.966199, 0.617929, 0.956474, 0.632383, 0.951612, 0.585496, 0.998564, 0.602665, 0.992789, 0.601146, 0.991434, 0.621684, 0.984525, 0.642222, 0.977617, 0.634422, 0.97066, 0.605086, 0.980528, 0.590631, 0.985391, 0.576177, 0.990253, 0.627965, 0.94479, 0.632383, 0.951612, 0.627965, 0.94479, 0.626331, 0.937608, 0.627965, 0.94479, 0.62756, 0.930401, 0.626331, 0.937608, 0.626331, 0.937608, 0.631592, 0.923508, 0.62756, 0.930401, 0.631592, 0.923508, 0.638239, 0.917252, 0.638239, 0.917252, 0.576177, 0.990253, 0.590631, 0.985391, 0.605086, 0.980528, 0.64845, 0.965941, 0.64845, 0.965941, 0.633995, 0.970803, 0.588204, 0.986207, 0.56011, 0.975924, 0.572138, 0.971878, 0.584493, 0.967722, 0.617929, 0.956474, 0.611142, 0.958757, 0.580806, 0.973293, 0.601146, 0.991434, 0.621684, 0.984525, 0.601344, 0.966384, 0.642222, 0.977617, 0.621881, 0.959475, 0.611142, 0.958757, 0.56011, 0.975924, 0.574565, 0.971061, 0.58902, 0.966199, 0.617929, 0.956474, 0.617929, 0.956474, 0.572138, 0.971878, 0.632383, 0.951612, 0.617929, 0.956474, 0.612, 0.9473, 0.612, 0.9473, 0.612, 0.9473, 0.609947, 0.937632, 0.609947, 0.937632, 0.609947, 0.937632, 0.611874, 0.927957, 0.611874, 0.927957, 0.617684, 0.91876, 0.617684, 0.91876, 0.639606, 0.903596, 0.627085, 0.910501, 0.627085, 0.910501, 0.617929, 0.956474, 0.627085, 0.910501, 0.639606, 0.903596, 0.639606, 0.903596, 0.64719, 0.911927, 0.956035, 0.807873, 0.966484, 0.819352, 0.968594, 0.82167, 0.972422, 0.820624, 0.99344, 0.814885, 0.997174, 0.813865, 0.995526, 0.812054, 0.984596, 0.800047, 0.982911, 0.798196, 0.97928, 0.799188, 0.958782, 0.804786, 0.954331, 0.806001, 0.990061, 0.806051, 0.983915, 0.807665, 0.979967, 0.814393, 0.982931, 0.817755, 0.984596, 0.800047, 0.99344, 0.814885, 0.941526, 0.791933, 0.954331, 0.806001, 0.954331, 0.806001, 0.967816, 0.781613, 0.710996, 0.851749, 0.710996, 0.851749, 0.939237, 0.789418, 0.967817, 0.781613, 0.734444, 0.848486, 0.944229, 0.791195, 0.607122, 0.420848, 0.59769, 0.423424, 0.406769, 0.475563, 0.397337, 0.478139, 0.415083, 0.473292, 0.752191, 0.84364, 0.434947, 0.467868, 0.772054, 0.838215, 0.456445, 0.461997, 0.793553, 0.832344, 0.479056, 0.455822, 0.816163, 0.826169, 0.502229, 0.449493, 0.839337, 0.819841, 0.525403, 0.443165, 0.86251, 0.813512, 0.548013, 0.43699, 0.885121, 0.807337, 0.569511, 0.431119, 0.906619, 0.801466, 0.589375, 0.425694, 0.926483, 0.796042, 0.551662, 0.952173, 0.566352, 0.950605, 0.566353, 0.950608, 0.610193, 0.945929, 0.61019, 0.945919, 0.551659, 0.952165, 0.551662, 0.952173, 0.56011, 0.975924, 0.597439, 0.910075, 0.600548, 0.918813, 0.684092, 0.857239, 0.718775, 0.895342, 0.649351, 0.914301, 0.64719, 0.911927, 0.632009, 0.89525, 0.614668, 0.876198, 0.587678, 0.882634, 0.543838, 0.887313, 0.603413, 0.926867, 0.607207, 0.937534, 0.639606, 0.903596, 0.614668, 0.876198, 0.587672, 0.882635, 0.581954, 0.849459, 0.604481, 0.876743, 0.604481, 0.876743, 0.564257, 0.828026, 0.564257, 0.828026, 0.564257, 0.828026, 0.581954, 0.849459, 0.537997, 0.828223, 0.573954, 0.878374, 0.526315, 0.88092, 0.507651, 0.82845, 0.590816, 0.877473, 0.514161, 0.804592, 0.533152, 0.798845, 0.556987, 0.822476, 0.523809, 0.826009, 0.513565, 0.820194, 0.510031, 0.812349, 0.533152, 0.798845, 0.545069, 0.81066, 0.556987, 0.822476, 0.526079, 0.816407, 0.523809, 0.826009, 0.537997, 0.828223, 0.513565, 0.820194, 0.510031, 0.812349, 0.514161, 0.804592, 0.66052, 0.796296, 0.610044, 0.740843, 0.610044, 0.740843, 0.610044, 0.740843, 0.655186, 0.86699, 0.66052, 0.796296, 0.60471, 0.811538, 0.610044, 0.740843, 0.655186, 0.866991, 0.554234, 0.756084, 0.710996, 0.851749, 0.655186, 0.866991, 0.564329, 0.767175, 0.519797, 0.779336, 0.610654, 0.879152, 0.609046, 0.804439, 0.567193, 0.75846, 0.554234, 0.756084, 0.559281, 0.76163, 0.554234, 0.756084, 0.554234, 0.756084, 0.655186, 0.866991, 0.610654, 0.879152, 0.382167, 0.490497, 0.331794, 0.504253, 0.403329, 0.610402, 0.473795, 0.591159, 0.472916, 0.590194, 0.40497, 0.60875, 0.335461, 0.504794, 0.383291, 0.491731, 0.403329, 0.610403, 0.417984, 0.6064, 0.417984, 0.6064, 0.473795, 0.591159, 0.331794, 0.504253, 0.403329, 0.610403, 0.382167, 0.490497, 0.383291, 0.491731, 0.335461, 0.504794, 0.40497, 0.60875, 0.472916, 0.590194, 0.509702, 0.768246, 0.509702, 0.768246, 0.554234, 0.756084, 0.513142, 0.767306, 0.550069, 0.757222, 0.564257, 0.828026, 0.771255, 0.875562, 0.753339, 0.880455, 0.753339, 0.880455, 0.771255, 0.875562, 0.714804, 0.890979, 0.704768, 0.856591, 0.687736, 0.861242, 0.84985, 0.854098, 0.835475, 0.858024, 0.835475, 0.858024, 0.849849, 0.854098, 0.704768, 0.856591, 0.982911, 0.798196, 0.982911, 0.798196, 0.997174, 0.813865, 0.967817, 0.781613, 0.967817, 0.781613, 0.972775, 0.787061, 0.972848, 0.78714, 0.773985, 0.837688, 0.762595, 0.825176, 0.727987, 0.834627, 0.693379, 0.844078, 0.56011, 0.975924, 0.602665, 0.992789, 0.602665, 0.992789, 0.660021, 0.973495, 0.643741, 0.978971, 0.643741, 0.978971, 0.643741, 0.978971, 0.601146, 0.991434, 0.642222, 0.977617, 0.650702, 0.965183, 0.651266, 0.985683, 0.61019, 0.999501, 0.649878, 0.985501, 0.610522, 0.99874, 0.604053, 0.992971, 0.643409, 0.979732, 0.610522, 0.99874, 0.649878, 0.985501, 0.643409, 0.979732, 0.604053, 0.992971, 0.636895, 0.981274, 0.630199, 0.983527, 0.623203, 0.98588, 0.616357, 0.988183, 0.609511, 0.990486, 0.607992, 0.989131, 0.614838, 0.986828, 0.621684, 0.984525, 0.62868, 0.982172, 0.635376, 0.97992, 0.621684, 0.984526, 0.621684, 0.984525, 0.623904, 0.983779, 0.619404, 0.985292, 0.626331, 0.937608, 0.543213, 0.928422, 0.543213, 0.928422, 0.627085, 0.910501, 0.639606, 0.903596, 0.609947, 0.937632, 0.611874, 0.927957, 0.960583, 0.812869, 0.706793, 0.882178, 0.753339, 0.880455, 0.771255, 0.875562, 0.835475, 0.858024, 0.968594, 0.82167, 0.662813, 0.892263, 0.67854, 0.887968, 0.67063, 0.879277, 0.654902, 0.883572, 0.614668, 0.876198, 0.64935, 0.914301, 0.684092, 0.857239, 0.718775, 0.895342, 0.954331, 0.806001, 0.949837, 0.801064, 0.765277, 0.851466, 0.727732, 0.861719, 0.696047, 0.870372, 0.756966, 0.842336, 0.719421, 0.852589, 0.543825, 0.887314, 0.526315, 0.88092, 0.532452, 0.89817, 0.584493, 0.967722, 0.614668, 0.876198, 0.573954, 0.878374, 0.569849, 0.84932, 0.526315, 0.88092, 0.570809, 0.843881, 0.57018, 0.838427, 0.567978, 0.833097, 0.564257, 0.828026, 0.507651, 0.82845, 0.545069, 0.81066, 0.659051, 0.860662, 0.699443, 0.849632, 0.656654, 0.802624, 0.616263, 0.813655, 0.647561, 0.793921, 0.605708, 0.747941, 0.610044, 0.740843, 0.75998, 0.881606, 0.768938, 0.87916, 0.841509, 0.859723, 0.848696, 0.85776, 0.771255, 0.875562, 0.768938, 0.87916, 0.75998, 0.881606, 0.84985, 0.854098, 0.848696, 0.85776, 0.841509, 0.859723, 0.976229, 0.819585, 0.991207, 0.815495, 0.991207, 0.815495, 0.976229, 0.819585, 0.968594, 0.82167, 0.966484, 0.819352, 0.989949, 0.819249, 0.98246, 0.821294, 0.98246, 0.821294, 0.989949, 0.819249, 0.989949, 0.819249, 0.986844, 0.816686, 0.980543, 0.818407, 0.98246, 0.821294, 0.991207, 0.815495, 0.976229, 0.819585, 0.982911, 0.798196, 0.982911, 0.798196, 0.941526, 0.791933, 0.956036, 0.807873, 0.967406, 0.811999, 0.995526, 0.812054, 0.983915, 0.807665, 0.978278, 0.805781, 0.983326, 0.811327, 0.979967, 0.814393, 0.973227, 0.814085, 0.972422, 0.820624, 0.971994, 0.805349, 0.958782, 0.804786, 0.975753, 0.809933, 0.978278, 0.805781, 0.968179, 0.808539, 0.973227, 0.814085, 0.983326, 0.811327, 0.968179, 0.808539, 0.972775, 0.787061, 0.765277, 0.851466, 0.704768, 0.856591, 0.762595, 0.825176, 0.693379, 0.844078, 0.982931, 0.817755, 0.972422, 0.820624, 0.990061, 0.806051, 0.995526, 0.812054, 0.969031, 0.801987, 0.97928, 0.799188, 0.96126, 0.813613, 0.966484, 0.819352, 0.984596, 0.800047, 0.99344, 0.814885, 0.958782, 0.804786, 0.956036, 0.807873, 0.97928, 0.799188, 0.96126, 0.813613, 0.967406, 0.811999, 0.969031, 0.801987, 0.971994, 0.805349, 0.939237, 0.789418, 0.941526, 0.791933, 0.773985, 0.837688, 0.693379, 0.844078, 0.967817, 0.781613, 0.727987, 0.834627, 0.762595, 0.825175, 0.526315, 0.88092, 0.573954, 0.878374, 0.550287, 0.879639, 0.551355, 0.885631, 0.551507, 0.886488, 0.575174, 0.885223, 0.573954, 0.878374, 0.632999, 0.413781, 0.632999, 0.413781, 0.376178, 0.483917, 0.376178, 0.483917, 0.607122, 0.420848, 0.406769, 0.475563, 0.406769, 0.475563, 0.418654, 0.472317, 0.437703, 0.467115, 0.458321, 0.461484, 0.480005, 0.455563, 0.502229, 0.449493, 0.524453, 0.443424, 0.546137, 0.437502, 0.566755, 0.431872, 0.585805, 0.426669, 0.607122, 0.420848, 0.532452, 0.89817, 0.532452, 0.89817, 0.563821, 0.894822, 0.574582, 0.925074, 0.569339, 0.910333, 0.537969, 0.913681, 0.532452, 0.89817, 0.567978, 0.833097, 0.57018, 0.838427, 0.570809, 0.843881, 0.569849, 0.84932, 0.509702, 0.768246, 0.550069, 0.757222, 0.550069, 0.757222, 0.513142, 0.767306, 0.513142, 0.767306, 0.690952, 0.397954, 0.638745, 0.339243, 0.352853, 0.490287, 0.000499606, 0.0909201, 0.000499606, 0.0909201, 0.352853, 0.490287, 0.337523, 0.000499547, 0.690952, 0.397954, 0.638745, 0.339243, 0.557558, 0.2603, 0.561013, 0.259335, 0.561013, 0.259335, 0.557558, 0.2603, 0.563096, 0.261676, 0.563096, 0.261676, 0.55964, 0.262642, 0.559641, 0.262642, 0.563096, 0.261676, 0.557558, 0.2603, 0.502038, 0.199594, 0.505493, 0.198628, 0.505493, 0.198628, 0.502038, 0.199594, 0.507576, 0.20097, 0.507576, 0.20097, 0.504121, 0.201936, 0.504121, 0.201936, 0.507576, 0.20097, 0.502038, 0.199594, 0.437748, 0.11806, 0.441203, 0.117094, 0.441203, 0.117094, 0.437748, 0.11806, 0.443286, 0.119436, 0.443286, 0.119436, 0.439831, 0.120402, 0.439831, 0.120402, 0.443286, 0.119436, 0.437748, 0.11806, 0.384674, 0.060899, 0.387311, 0.0601789, 0.387311, 0.0601789, 0.384674, 0.060899, 0.388903, 0.0619268, 0.388903, 0.0619268, 0.386266, 0.062647, 0.386266, 0.062647, 0.388903, 0.0619268, 0.384674, 0.060899, 0.336755, 0.003178, 0.339392, 0.00245792, 0.339392, 0.00245792, 0.336755, 0.003178, 0.340983, 0.00420594, 0.340983, 0.00420594, 0.338346, 0.00492609, 0.338346, 0.00492609, 0.340983, 0.00420594, 0.336755, 0.003178, 0.634422, 0.97066, 0.642222, 0.977617, 0.643741, 0.978971, 0.639081, 0.974816, 0.650702, 0.965183, 0.655362, 0.969339, 0.660021, 0.973495, 0.660021, 0.973495, 0.642562, 0.967922, 0.634422, 0.97066, 0.651881, 0.976233, 0.64845, 0.965941, 0.647221, 0.972077, 0.650702, 0.965183, 0.634422, 0.97066, 0.660021, 0.973495, 0.660021, 0.973495, 0.660021, 0.973495, 0.634422, 0.97066, 0.660021, 0.973495, 0.575795, 0.989751, 0.575795, 0.989751, 0.583902, 0.997124, 0.585481, 0.998559, 0.585481, 0.998559, 0.580638, 0.994155, 0.592731, 0.983943, 0.597574, 0.988347, 0.602417, 0.992751, 0.592731, 0.983943, 0.602417, 0.992751, 0.584263, 0.986847, 0.575795, 0.989751, 0.593949, 0.995655, 0.590388, 0.984746, 0.589106, 0.991251, 0.592731, 0.983943, 0.575796, 0.989751, 0.602417, 0.992751, 0.602417, 0.992751, 0.602417, 0.992751, 0.575796, 0.989751, 0.583902, 0.997124, 0.602417, 0.992751, 0.590388, 0.984746, 0.992774, 0.812656, 0.992692, 0.814784, 0.999419, 0.814861, 0.996096, 0.813759, 0.9995, 0.812734, 0.9995, 0.812734, 0.9995, 0.812734, 0.992774, 0.812656, 0.992692, 0.814784, 0.999419, 0.814861, 0.996096, 0.813758, 0.95249, 0.805059, 0.952409, 0.807187, 0.959135, 0.807264, 0.955813, 0.806161, 0.959217, 0.805137, 0.959136, 0.807264, 0.95249, 0.805059, 0.955813, 0.806161, 0.952409, 0.807187, 0.959217, 0.805136, 0.979666, 0.800684, 0.986474, 0.798634, 0.98307, 0.799659, 0.979666, 0.800684, 0.986474, 0.798633, 0.957802, 0.781071, 0.957802, 0.781071, 0.959925, 0.783353, 0.959925, 0.783353, 0.959247, 0.778636, 0.959247, 0.778636, 0.963412, 0.777473, 0.963412, 0.777473, 0.969981, 0.780546, 0.969981, 0.780546, 0.968536, 0.782982, 0.968536, 0.782982, 0.967859, 0.778265, 0.967859, 0.778265, 0.964371, 0.784144, 0.964371, 0.784144, 0.963892, 0.780809, 0.963826, 0.781035, 0.963826, 0.781035, 0.963745, 0.783163, 0.963745, 0.783163, 0.970527, 0.781789, 0.970553, 0.781113, 0.970553, 0.781113, 0.970472, 0.78324, 0.970472, 0.78324, 0.96723, 0.78001, 0.96723, 0.78001, 0.967068, 0.784265, 0.967068, 0.784265, 0.967149, 0.782138, 0.96723, 0.78001, 0.963745, 0.783163, 0.967068, 0.784265, 0.963745, 0.783163, 0.967149, 0.782138, 0.970472, 0.78324, 0.967149, 0.782138, 0.963826, 0.781035, 0.967068, 0.784265, 0.96723, 0.78001, 0.970553, 0.781113, 0.970553, 0.781113, 0.836373, 0.850639, 0.841905, 0.856716, 0.85061, 0.854339, 0.845078, 0.848261, 0.833545, 0.858999, 0.828013, 0.852922, 0.892822, 0.828592, 0.902862, 0.839621, 0.918659, 0.835307, 0.90862, 0.824278, 0.88769, 0.843765, 0.877651, 0.832736, 0.756501, 0.871687, 0.762263, 0.878018, 0.771331, 0.875541, 0.765569, 0.869211, 0.747792, 0.874065, 0.753555, 0.880396, 0.678165, 0.855848, 0.678165, 0.855848, 0.680288, 0.85813, 0.680288, 0.85813, 0.67961, 0.853413, 0.67961, 0.853413, 0.683775, 0.85225, 0.683775, 0.85225, 0.690344, 0.855323, 0.690344, 0.855323, 0.688899, 0.857759, 0.688899, 0.857759, 0.688222, 0.853042, 0.688222, 0.853042, 0.684734, 0.858921, 0.684734, 0.858921, 0.684255, 0.855586, 0.708948, 0.894905, 0.708948, 0.894905, 0.71107, 0.897187, 0.71107, 0.897187, 0.710393, 0.89247, 0.710393, 0.89247, 0.714558, 0.891307, 0.714558, 0.891307, 0.721127, 0.89438, 0.721127, 0.89438, 0.719682, 0.896816, 0.719682, 0.896816, 0.719004, 0.892099, 0.719004, 0.892099, 0.715517, 0.897978, 0.715517, 0.897978, 0.715037, 0.894643, 0.643232, 0.912706, 0.643232, 0.912706, 0.645354, 0.914988, 0.645354, 0.914988, 0.644676, 0.910271, 0.644676, 0.910271, 0.648842, 0.909109, 0.648842, 0.909109, 0.65541, 0.912181, 0.65541, 0.912182, 0.653966, 0.914617, 0.653966, 0.914617, 0.653288, 0.9099, 0.653288, 0.9099, 0.6498, 0.915779, 0.6498, 0.915779, 0.649321, 0.912444, 0.604549, 0.876628, 0.604549, 0.876628, 0.606672, 0.878909, 0.606672, 0.878909, 0.605994, 0.874192, 0.605994, 0.874192, 0.61016, 0.87303, 0.61016, 0.87303, 0.616728, 0.876103, 0.616728, 0.876103, 0.615283, 0.878538, 0.615283, 0.878538, 0.614606, 0.873821, 0.614606, 0.873821, 0.611118, 0.879701, 0.611118, 0.879701, 0.610639, 0.876365, 0.697614, 0.873765, 0.697173, 0.876198, 0.700798, 0.877623, 0.704864, 0.876616, 0.705305, 0.874184, 0.704363, 0.874417, 0.704024, 0.876286, 0.7009, 0.877059, 0.698115, 0.875964, 0.698453, 0.874096, 0.701577, 0.873322, 0.70168, 0.872758, 0.705305, 0.874184, 0.70168, 0.872758, 0.704864, 0.876616, 0.700798, 0.877623, 0.697614, 0.873765, 0.704024, 0.876286, 0.7009, 0.877059, 0.697173, 0.876198, 0.704363, 0.874417, 0.701577, 0.873322, 0.698453, 0.874096, 0.698115, 0.875964, 0.611514, 0.871993, 0.644721, 0.862925, 0.64509, 0.8559, 0.600559, 0.868061, 0.610654, 0.879152, 0.601418, 0.860903, 0.634626, 0.851834, 0.634995, 0.844809, 0.590463, 0.856971, 0.591323, 0.849812, 0.624531, 0.840743, 0.6249, 0.833719, 0.580368, 0.84588, 0.581228, 0.838722, 0.614435, 0.829653, 0.614805, 0.822628, 0.570273, 0.834789, 0.571133, 0.827631, 0.60434, 0.818562, 0.560178, 0.823699, 0.561038, 0.81654, 0.594245, 0.807472, 0.594614, 0.800447, 0.550083, 0.812608, 0.560178, 0.823699, 0.60471, 0.811537, 0.550943, 0.80545, 0.58415, 0.796381, 0.584519, 0.789356, 0.539988, 0.801518, 0.550083, 0.812608, 0.594615, 0.800447, 0.540847, 0.794359, 0.574055, 0.78529, 0.574424, 0.778266, 0.529892, 0.790427, 0.530752, 0.783269, 0.56396, 0.7742, 0.564329, 0.767175, 0.529892, 0.790427, 0.574424, 0.778266, 0.520657, 0.772178, 0.553864, 0.763109, 0.992692, 0.814784, 0.996178, 0.811631, 0.996178, 0.811631, 0.996015, 0.815886, 0.999419, 0.814861, 0.996096, 0.813759, 0.996015, 0.815886, 0.992692, 0.814784, 0.965639, 0.821998, 0.965639, 0.821998, 0.972448, 0.819948, 0.969125, 0.818846, 0.968962, 0.823101, 0.968962, 0.823101, 0.972448, 0.819948, 0.969043, 0.820973, 0.972366, 0.822076, 0.965721, 0.819871, 0.969125, 0.818846, 0.95249, 0.805059, 0.952409, 0.807187, 0.959217, 0.805137, 0.955894, 0.804034, 0.955732, 0.808289, 0.955732, 0.808289, 0.959135, 0.807264, 0.959217, 0.805137, 0.955813, 0.806162, 0.952409, 0.807187, 0.955894, 0.804034, 0.979666, 0.800684, 0.986474, 0.798634, 0.986393, 0.800761, 0.983151, 0.797531, 0.983151, 0.797531, 0.982989, 0.801786, 0.982989, 0.801786, 0.98307, 0.799659, 0.979747, 0.798556, 0.992774, 0.812656, 0.999419, 0.814861, 0.996096, 0.813759, 0.9995, 0.812734, 0.9995, 0.812734, 0.992774, 0.812656, 0.972366, 0.822076, 0.969043, 0.820973, 0.95249, 0.805059, 0.959135, 0.807264, 0.955813, 0.806161, 0.986474, 0.798634, 0.986392, 0.800761, 0.98307, 0.799659, 0.979747, 0.798556, 0.979666, 0.800684, 0.965721, 0.819871]; + indices = new [0, 2, 1, 2, 0, 3, 5, 7, 6, 5, 8, 7, 4, 8, 5, 8, 10, 9, 4, 10, 8, 4, 11, 10, 4, 12, 11, 4, 13, 12, 16, 18, 17, 15, 18, 16, 14, 18, 15, 13, 18, 14, 13, 4, 18, 22, 24, 23, 22, 25, 24, 21, 25, 22, 21, 26, 25, 20, 26, 21, 19, 26, 20, 19, 27, 26, 28, 29, 18, 28, 4, 18, 4, 28, 30, 31, 28, 32, 33, 35, 34, 36, 37, 33, 37, 36, 38, 39, 38, 36, 38, 39, 40, 41, 27, 42, 42, 43, 41, 43, 24, 41, 46, 41, 47, 45, 41, 46, 44, 41, 45, 24, 41, 44, 27, 15, 26, 15, 27, 14, 14, 41, 48, 41, 14, 27, 48, 47, 41, 47, 48, 49, 50, 47, 49, 46, 52, 51, 47, 52, 46, 50, 52, 47, 51, 45, 46, 45, 51, 29, 45, 18, 29, 18, 45, 44, 24, 18, 44, 24, 17, 18, 25, 17, 24, 25, 16, 17, 26, 16, 25, 16, 26, 15, 53, 55, 54, 53, 56, 55, 53, 50, 56, 56, 57, 55, 57, 59, 58, 56, 59, 57, 56, 50, 59, 60, 14, 61, 61, 62, 60, 62, 63, 60, 60, 64, 51, 64, 60, 63, 51, 65, 60, 51, 50, 49, 51, 59, 50, 63, 66, 29, 29, 64, 63, 29, 51, 67, 68, 67, 63, 69, 68, 70, 69, 64, 68, 69, 51, 64, 71, 73, 72, 71, 70, 73, 71, 69, 70, 73, 70, 68, 74, 72, 75, 72, 74, 71, 75, 72, 73, 76, 75, 77, 75, 76, 74, 78, 80, 79, 69, 29, 81, 29, 69, 28, 82, 36, 76, 36, 82, 39, 83, 84, 78, 84, 83, 85, 90, 92, 91, 90, 93, 92, 90, 94, 93, 90, 95, 94, 89, 95, 90, 88, 95, 89, 87, 95, 88, 87, 96, 95, 86, 96, 87, 86, 97, 96, 98, 92, 99, 100, 101, 89, 99, 102, 98, 100, 103, 101, 104, 105, 368, 105, 104, 106, 107, 109, 108, 107, 110, 109, 107, 111, 110, 112, 114, 113, 112, 115, 114, 112, 116, 115, 112, 117, 116, 118, 112, 117, 112, 118, 119, 120, 119, 118, 119, 120, 121, 122, 121, 120, 121, 122, 123, 124, 123, 122, 123, 124, 125, 126, 125, 124, 125, 126, 127, 128, 127, 126, 127, 128, 129, 130, 129, 128, 129, 130, 131, 132, 131, 130, 131, 132, 133, 134, 133, 132, 133, 134, 135, 114, 135, 134, 135, 114, 113, 137, 139, 138, 137, 140, 139, 136, 140, 137, 136, 141, 140, 138, 136, 137, 142, 143, 14, 82, 76, 144, 76, 145, 144, 0, 147, 3, 146, 147, 0, 146, 148, 147, 146, 149, 148, 146, 150, 149, 146, 151, 150, 138, 153, 152, 138, 145, 154, 145, 152, 144, 138, 152, 145, 138, 155, 139, 155, 138, 154, 78, 156, 85, 84, 157, 78, 157, 150, 151, 84, 150, 157, 84, 149, 150, 84, 85, 149, 83, 82, 144, 83, 144, 78, 78, 144, 157, 157, 144, 158, 152, 144, 158, 159, 161, 160, 163, 165, 164, 162, 165, 163, 161, 165, 162, 159, 165, 161, 166, 167, 162, 166, 168, 167, 166, 169, 168, 167, 161, 162, 160, 170, 159, 172, 166, 173, 172, 174, 166, 171, 174, 172, 171, 175, 174, 171, 176, 175, 172, 178, 177, 172, 179, 178, 172, 173, 179, 180, 182, 181, 180, 181, 183, 184, 180, 183, 185, 180, 184, 186, 188, 187, 186, 189, 188, 186, 109, 189, 186, 108, 109, 190, 192, 191, 191, 108, 190, 193, 195, 194, 194, 109, 193, 196, 109, 194, 196, 197, 190, 197, 196, 194, 198, 200, 199, 198, 190, 200, 192, 202, 201, 202, 204, 203, 192, 204, 202, 190, 204, 192, 198, 204, 190, 204, 204, 198, 205, 207, 206, 203, 207, 205, 204, 207, 203, 204, 207, 204, 198, 207, 204, 207, 192, 190, 198, 192, 207, 190, 208, 200, 208, 190, 197, 212, 214, 213, 211, 214, 212, 211, 215, 214, 210, 215, 211, 209, 215, 210, 209, 216, 215, 211, 218, 217, 211, 219, 218, 219, 212, 220, 211, 212, 219, 221, 217, 222, 221, 211, 217, 221, 210, 211, 209, 221, 223, 221, 209, 210, 224, 226, 225, 226, 224, 227, 213, 226, 227, 226, 213, 214, 215, 226, 214, 226, 215, 225, 225, 216, 224, 216, 225, 215, 222, 229, 228, 229, 222, 217, 195, 193, 188, 206, 188, 230, 188, 206, 195, 218, 229, 217, 231, 206, 232, 229, 206, 231, 218, 206, 229, 220, 230, 219, 230, 220, 188, 218, 230, 206, 230, 218, 219, 231, 208, 229, 208, 206, 197, 208, 232, 206, 231, 232, 208, 206, 194, 195, 194, 206, 197, 228, 233, 162, 163, 228, 229, 234, 236, 235, 236, 234, 237, 238, 240, 239, 241, 243, 242, 243, 241, 244, 0, 239, 240, 239, 0, 245, 246, 248, 247, 249, 251, 250, 111, 251, 249, 111, 252, 251, 111, 247, 252, 111, 246, 247, 253, 0xFF, 254, 239, 0xFF, 253, 239, 0x0100, 0xFF, 27, 13, 0x0101, 27, 12, 13, 27, 19, 12, 259, 19, 20, 258, 19, 259, 258, 12, 19, 258, 11, 12, 260, 262, 261, 260, 263, 262, 260, 8, 263, 260, 7, 8, 264, 20, 21, 20, 264, 259, 23, 262, 265, 262, 23, 261, 6, 260, 266, 260, 6, 7, 44, 6, 266, 6, 44, 5, 267, 10, 268, 10, 267, 9, 8, 267, 263, 267, 8, 9, 258, 10, 11, 10, 258, 268, 267, 269, 263, 267, 270, 269, 268, 270, 267, 268, 271, 270, 272, 263, 269, 271, 263, 272, 271, 258, 263, 268, 258, 271, 273, 275, 274, 275, 273, 276, 270, 274, 269, 274, 270, 273, 272, 274, 275, 274, 272, 269, 272, 276, 271, 276, 272, 275, 276, 270, 271, 270, 276, 273, 262, 278, 277, 278, 280, 279, 280, 259, 281, 278, 259, 280, 262, 259, 278, 262, 258, 259, 262, 263, 258, 282, 284, 283, 284, 286, 285, 286, 23, 265, 284, 23, 286, 282, 23, 284, 23, 21, 22, 282, 21, 23, 282, 264, 21, 259, 282, 281, 282, 259, 264, 281, 283, 280, 283, 281, 282, 280, 284, 279, 284, 280, 283, 279, 285, 278, 285, 279, 284, 278, 286, 277, 286, 278, 285, 277, 265, 262, 265, 277, 286, 57, 288, 287, 288, 57, 23, 287, 21, 54, 21, 287, 288, 287, 289, 57, 290, 287, 54, 4, 44, 66, 44, 4, 5, 291, 28, 35, 28, 291, 30, 149, 39, 85, 39, 149, 40, 37, 35, 33, 35, 37, 291, 142, 13, 141, 13, 142, 0x0101, 292, 141, 293, 141, 292, 142, 294, 77, 80, 77, 294, 76, 295, 80, 78, 80, 295, 294, 69, 35, 28, 35, 69, 296, 296, 33, 35, 33, 296, 297, 297, 36, 33, 36, 297, 76, 85, 294, 295, 294, 85, 39, 299, 300, 238, 299, 301, 300, 301, 241, 302, 299, 241, 301, 299, 303, 241, 298, 303, 299, 304, 306, 305, 306, 304, 307, 304, 308, 307, 308, 304, 309, 307, 310, 306, 310, 307, 308, 305, 309, 304, 309, 305, 311, 310, 305, 306, 305, 310, 311, 312, 314, 313, 298, 314, 312, 298, 315, 314, 299, 315, 298, 299, 316, 315, 315, 317, 314, 317, 315, 318, 319, 321, 320, 319, 292, 321, 319, 142, 292, 319, 138, 142, 142, 49, 60, 49, 142, 138, 81, 139, 69, 59, 139, 81, 322, 139, 59, 139, 49, 138, 322, 49, 139, 69, 139, 296, 139, 155, 296, 297, 296, 155, 297, 155, 154, 76, 297, 145, 297, 154, 145, 319, 320, 158, 158, 324, 323, 324, 158, 320, 170, 325, 159, 326, 325, 170, 325, 328, 327, 325, 329, 328, 325, 330, 329, 326, 330, 325, 326, 331, 330, 182, 332, 179, 332, 182, 180, 180, 177, 332, 177, 180, 185, 333, 335, 334, 335, 333, 336, 333, 192, 336, 192, 333, 190, 336, 186, 335, 186, 336, 192, 196, 333, 334, 333, 196, 190, 334, 186, 196, 186, 334, 335, 201, 338, 337, 338, 201, 202, 186, 201, 337, 201, 186, 192, 337, 339, 186, 339, 337, 338, 202, 339, 338, 339, 202, 203, 340, 301, 341, 301, 340, 300, 342, 241, 343, 241, 342, 302, 323, 310, 308, 151, 310, 323, 151, 146, 310, 309, 147, 148, 147, 309, 311, 308, 78, 323, 308, 83, 78, 309, 83, 308, 309, 85, 83, 85, 148, 149, 148, 85, 309, 344, 346, 345, 346, 344, 236, 347, 349, 348, 349, 347, 243, 341, 346, 340, 346, 341, 345, 340, 236, 300, 236, 340, 346, 237, 341, 301, 341, 237, 345, 343, 349, 342, 349, 343, 348, 342, 243, 302, 243, 342, 349, 347, 343, 241, 343, 347, 348, 86, 105, 97, 355, 105, 86, 355, 303, 105, 355, 88, 303, 352, 357, 356, 357, 352, 353, 358, 351, 359, 351, 358, 350, 361, 363, 362, 363, 361, 360, 364, 360, 361, 362, 363, 365, 359, 357, 358, 357, 359, 356, 358, 353, 350, 353, 358, 357, 352, 359, 351, 359, 352, 356, 247, 367, 366, 247, 102, 367, 247, 92, 102, 247, 91, 92, 247, 248, 91, 303, 353, 354, 303, 350, 353, 351, 248, 352, 248, 103, 91, 351, 103, 248, 350, 103, 351, 303, 103, 350, 303, 89, 103, 303, 88, 89, 369, 370, 355, 102, 373, 367, 372, 373, 102, 372, 374, 373, 371, 374, 372, 371, 91, 374, 103, 374, 91, 375, 374, 103, 375, 376, 374, 375, 88, 376, 375, 377, 88, 378, 379, 95, 380, 382, 381, 382, 380, 383, 380, 384, 383, 381, 384, 380, 385, 369, 97, 385, 370, 369, 376, 370, 385, 376, 355, 370, 376, 88, 355, 102, 371, 372, 379, 385, 97, 378, 385, 379, 378, 373, 385, 378, 367, 373, 378, 95, 367, 375, 103, 377, 247, 312, 313, 247, 386, 252, 313, 386, 247, 313, 250, 386, 313, 253, 368, 253, 313, 387, 315, 253, 387, 253, 315, 388, 316, 388, 315, 388, 316, 240, 317, 0xFF, 389, 318, 0xFF, 317, 318, 390, 0xFF, 240, 146, 0, 240, 310, 146, 316, 310, 240, 299, 310, 316, 299, 311, 310, 238, 311, 299, 3, 311, 238, 3, 147, 311, 391, 89, 392, 393, 92, 394, 395, 96, 396, 86, 397, 355, 397, 398, 355, 399, 102, 393, 391, 400, 103, 395, 401, 96, 86, 402, 397, 102, 92, 393, 395, 396, 403, 391, 103, 89, 382, 376, 385, 376, 382, 383, 384, 376, 383, 376, 384, 374, 373, 384, 381, 384, 373, 374, 382, 373, 381, 373, 382, 385, 404, 405, 355, 406, 407, 96, 405, 404, 86, 95, 407, 406, 408, 107, 250, 110, 107, 408, 110, 111, 107, 408, 409, 110, 409, 408, 104, 253, 104, 368, 410, 104, 253, 410, 409, 104, 390, 245, 411, 245, 390, 239, 96, 367, 95, 97, 367, 96, 97, 366, 367, 105, 366, 97, 106, 366, 105, 106, 247, 366, 106, 252, 247, 252, 412, 251, 106, 412, 252, 104, 412, 106, 104, 408, 412, 313, 408, 250, 253, 317, 389, 317, 253, 314, 318, 239, 390, 239, 318, 315, 411, 0xFF, 390, 0xFF, 411, 413, 414, 253, 389, 253, 414, 410, 413, 389, 0xFF, 389, 413, 414, 415, 324, 320, 415, 416, 324, 415, 168, 416, 161, 324, 416, 161, 323, 324, 161, 151, 323, 417, 418, 320, 418, 420, 419, 420, 417, 324, 418, 417, 420, 417, 320, 421, 111, 423, 422, 423, 111, 249, 424, 223, 425, 424, 209, 223, 424, 216, 209, 216, 227, 224, 424, 227, 216, 424, 213, 227, 424, 212, 213, 339, 212, 424, 339, 220, 212, 339, 188, 220, 191, 107, 196, 191, 423, 107, 339, 423, 191, 339, 426, 423, 339, 115, 426, 339, 427, 115, 339, 117, 427, 339, 424, 117, 112, 135, 113, 129, 125, 127, 131, 125, 129, 131, 123, 125, 133, 123, 131, 133, 121, 123, 135, 121, 133, 135, 119, 121, 112, 119, 135, 432, 434, 433, 432, 435, 434, 431, 435, 432, 430, 435, 431, 430, 436, 435, 430, 437, 436, 429, 437, 430, 428, 437, 429, 428, 115, 437, 134, 115, 438, 115, 134, 437, 320, 168, 326, 320, 439, 168, 320, 440, 439, 293, 440, 292, 440, 293, 439, 441, 442, 443, 444, 442, 292, 442, 444, 443, 443, 440, 441, 440, 443, 444, 292, 441, 442, 441, 292, 440, 445, 444, 292, 331, 168, 169, 168, 331, 326, 331, 164, 330, 331, 163, 164, 331, 162, 163, 331, 166, 162, 331, 169, 166, 166, 181, 182, 181, 166, 174, 183, 174, 175, 174, 183, 181, 184, 175, 176, 175, 184, 183, 185, 176, 171, 176, 185, 184, 185, 172, 177, 172, 185, 171, 448, 165, 449, 447, 165, 448, 446, 165, 447, 446, 164, 165, 164, 329, 330, 329, 164, 446, 446, 328, 329, 328, 446, 447, 447, 327, 328, 327, 447, 448, 448, 325, 327, 325, 448, 449, 449, 159, 325, 159, 449, 165, 179, 166, 182, 166, 179, 173, 332, 178, 179, 177, 178, 332, 205, 339, 203, 339, 205, 188, 199, 229, 450, 199, 208, 229, 199, 200, 208, 451, 206, 230, 230, 452, 451, 230, 203, 452, 203, 453, 452, 454, 450, 229, 453, 450, 454, 203, 450, 453, 423, 456, 455, 457, 459, 458, 459, 457, 460, 461, 457, 458, 456, 457, 461, 456, 423, 457, 456, 462, 455, 462, 456, 463, 455, 422, 423, 422, 455, 462, 266, 261, 24, 261, 266, 260, 464, 466, 465, 466, 464, 467, 468, 470, 469, 470, 468, 471, 466, 469, 465, 469, 466, 468, 464, 471, 467, 471, 464, 470, 466, 471, 468, 471, 466, 467, 465, 470, 472, 470, 465, 473, 474, 476, 475, 476, 474, 477, 478, 480, 479, 480, 478, 481, 476, 479, 475, 479, 476, 478, 474, 481, 477, 481, 474, 480, 476, 481, 478, 481, 476, 477, 475, 480, 482, 480, 475, 483, 484, 486, 485, 486, 484, 487, 488, 490, 489, 490, 488, 491, 486, 489, 485, 489, 486, 488, 484, 491, 487, 491, 484, 490, 486, 491, 488, 491, 486, 487, 485, 490, 492, 490, 485, 493, 494, 496, 495, 496, 494, 497, 498, 500, 499, 500, 498, 501, 496, 499, 495, 499, 496, 498, 494, 501, 497, 501, 494, 500, 496, 501, 498, 501, 496, 497, 495, 500, 502, 500, 495, 503, 504, 506, 505, 506, 504, 507, 508, 510, 509, 510, 508, 511, 506, 509, 505, 509, 506, 508, 504, 511, 507, 511, 504, 510, 506, 511, 508, 511, 506, 507, 505, 510, 0x0200, 510, 505, 513, 0x0202, 515, 24, 0x0202, 261, 515, 0x0202, 516, 261, 0x0202, 517, 516, 518, 520, 519, 266, 520, 518, 520, 266, 521, 522, 523, 518, 520, 261, 516, 261, 520, 521, 524, 520, 516, 523, 266, 518, 523, 525, 266, 523, 24, 525, 526, 528, 527, 528, 526, 516, 526, 529, 516, 527, 529, 526, 530, 524, 522, 522, 527, 530, 517, 523, 527, 527, 519, 517, 524, 516, 523, 523, 522, 524, 519, 530, 516, 516, 517, 519, 516, 527, 531, 527, 516, 532, 533, 44, 266, 261, 44, 533, 23, 44, 261, 23, 24, 44, 534, 536, 535, 534, 537, 536, 534, 538, 537, 534, 539, 538, 540, 542, 541, 543, 542, 540, 542, 543, 544, 545, 546, 540, 542, 537, 538, 537, 542, 544, 547, 542, 538, 546, 543, 540, 546, 548, 543, 546, 535, 548, 549, 551, 550, 551, 549, 538, 549, 552, 538, 550, 552, 549, 553, 547, 545, 545, 550, 553, 539, 546, 550, 550, 541, 539, 547, 538, 546, 546, 545, 547, 541, 553, 538, 538, 539, 541, 538, 550, 554, 550, 538, 555, 557, 558, 543, 537, 558, 557, 556, 558, 537, 556, 535, 558, 568, 566, 569, 568, 559, 566, 561, 559, 568, 561, 562, 559, 560, 565, 562, 563, 567, 560, 567, 564, 569, 563, 564, 567, 575, 576, 577, 575, 570, 576, 572, 570, 575, 572, 573, 570, 571, 574, 573, 574, 578, 571, 578, 579, 577, 574, 579, 578, 581, 583, 580, 583, 584, 582, 581, 584, 583, 585, 587, 586, 587, 585, 588, 589, 586, 590, 586, 589, 585, 589, 592, 591, 592, 589, 590, 593, 595, 594, 595, 593, 596, 591, 598, 597, 598, 591, 592, 595, 600, 599, 600, 595, 596, 599, 587, 588, 587, 599, 600, 598, 594, 597, 594, 598, 593, 601, 595, 599, 601, 599, 588, 601, 588, 585, 589, 601, 585, 601, 591, 597, 601, 589, 591, 594, 595, 601, 597, 594, 601, 598, 596, 593, 598, 600, 596, 592, 600, 598, 592, 587, 600, 590, 587, 592, 590, 586, 587, 602, 604, 603, 604, 602, 605, 606, 608, 607, 606, 609, 608, 606, 610, 609, 602, 612, 611, 612, 602, 603, 613, 604, 605, 604, 613, 614, 609, 614, 613, 614, 609, 610, 611, 607, 608, 607, 611, 612, 608, 609, 615, 615, 602, 616, 615, 613, 617, 602, 615, 617, 615, 616, 608, 615, 609, 613, 618, 620, 619, 603, 619, 620, 610, 620, 618, 621, 623, 622, 621, 603, 623, 610, 603, 621, 610, 620, 603, 622, 624, 614, 614, 620, 622, 616, 620, 612, 620, 616, 622, 603, 620, 625, 604, 607, 620, 607, 617, 604, 617, 626, 622, 607, 626, 617, 620, 606, 627, 606, 620, 610, 627, 620, 612, 628, 630, 629, 630, 628, 631, 632, 631, 633, 631, 632, 630, 633, 629, 632, 629, 633, 628, 629, 630, 632, 628, 633, 631, 636, 634, 637, 634, 636, 635, 637, 638, 636, 638, 637, 639, 635, 639, 634, 639, 635, 638, 634, 639, 637, 636, 638, 635, 636, 636, 638, 636, 638, 636, 640, 642, 641, 642, 640, 643, 644, 641, 645, 641, 644, 640, 643, 640, 644, 644, 642, 643, 642, 644, 645, 642, 645, 641, 646, 648, 647, 648, 646, 649, 650, 647, 651, 647, 650, 646, 650, 653, 652, 653, 650, 651, 654, 656, 655, 656, 654, 657, 652, 659, 658, 659, 652, 653, 656, 661, 660, 661, 656, 657, 660, 648, 649, 648, 660, 661, 659, 655, 658, 655, 659, 654, 662, 656, 660, 662, 660, 649, 662, 649, 646, 650, 662, 646, 662, 652, 658, 662, 650, 652, 655, 656, 662, 658, 655, 662, 659, 657, 654, 659, 661, 657, 653, 661, 659, 653, 648, 661, 651, 648, 653, 651, 647, 648, 663, 665, 664, 665, 663, 666, 667, 664, 668, 664, 667, 663, 667, 670, 669, 670, 667, 668, 671, 673, 672, 673, 671, 674, 669, 676, 675, 676, 669, 670, 673, 678, 677, 678, 673, 674, 677, 665, 666, 665, 677, 678, 676, 672, 675, 672, 676, 671, 679, 673, 677, 679, 677, 666, 679, 666, 663, 667, 679, 663, 679, 669, 675, 679, 667, 669, 672, 673, 679, 675, 672, 679, 676, 674, 671, 676, 678, 674, 670, 678, 676, 670, 665, 678, 668, 665, 670, 668, 664, 665, 680, 682, 681, 682, 680, 683, 684, 681, 685, 681, 684, 680, 684, 687, 686, 687, 684, 685, 688, 690, 689, 690, 688, 691, 686, 693, 692, 693, 686, 687, 690, 695, 694, 695, 690, 691, 694, 682, 683, 682, 694, 695, 693, 689, 692, 689, 693, 688, 696, 690, 694, 696, 694, 683, 696, 683, 680, 684, 696, 680, 696, 686, 692, 696, 684, 686, 689, 690, 696, 692, 689, 696, 693, 691, 688, 693, 695, 691, 687, 695, 693, 687, 682, 695, 685, 682, 687, 685, 681, 682, 697, 699, 698, 699, 697, 700, 701, 698, 702, 698, 701, 697, 701, 704, 703, 704, 701, 702, 705, 707, 706, 707, 705, 708, 703, 710, 709, 710, 703, 704, 707, 712, 711, 712, 707, 708, 711, 699, 700, 699, 711, 712, 710, 706, 709, 706, 710, 705, 713, 707, 711, 713, 711, 700, 713, 700, 697, 701, 713, 697, 713, 703, 709, 713, 701, 703, 706, 707, 713, 709, 706, 713, 710, 708, 705, 710, 712, 708, 704, 712, 710, 704, 699, 712, 702, 699, 704, 702, 698, 699, 717, 719, 718, 717, 720, 719, 717, 721, 720, 716, 721, 717, 716, 722, 721, 715, 722, 716, 714, 722, 715, 714, 723, 722, 719, 725, 718, 724, 725, 719, 723, 725, 724, 714, 725, 723, 725, 726, 718, 726, 725, 727, 728, 716, 717, 716, 728, 729, 726, 717, 718, 717, 726, 728, 714, 727, 725, 727, 714, 730, 720, 732, 731, 732, 720, 721, 714, 733, 730, 733, 714, 715, 716, 733, 715, 733, 716, 729, 720, 734, 719, 734, 720, 731, 731, 735, 734, 732, 735, 731, 732, 736, 735, 732, 737, 736, 736, 722, 723, 722, 736, 737, 735, 719, 734, 719, 735, 724, 736, 724, 735, 724, 736, 723, 732, 722, 737, 722, 732, 721, 727, 728, 726, 727, 729, 728, 730, 729, 727, 730, 733, 729, 738, 740, 739, 740, 738, 741, 742, 739, 190, 739, 742, 738, 740, 190, 739, 738, 742, 741, 743, 745, 744, 745, 743, 746, 741, 744, 740, 744, 741, 743, 745, 740, 744, 743, 741, 746, 747, 749, 748, 749, 747, 750, 746, 748, 745, 748, 746, 747, 749, 745, 748, 747, 746, 750, 751, 753, 752, 753, 751, 754, 750, 752, 749, 752, 750, 751, 753, 749, 752, 751, 750, 754, 755, 192, 756, 192, 755, 757, 754, 756, 753, 756, 754, 755, 192, 753, 756, 755, 754, 757, 758, 760, 759, 760, 758, 761, 762, 759, 763, 759, 762, 758, 760, 763, 759, 758, 762, 761, 764, 766, 765, 766, 764, 767, 0x0300, 765, 769, 765, 0x0300, 764, 766, 769, 765, 764, 0x0300, 767, 770, 772, 0x0303, 772, 770, 773, 767, 0x0303, 766, 0x0303, 767, 770, 772, 766, 0x0303, 770, 767, 773, 774, 776, 775, 776, 774, 199, 777, 775, 778, 775, 777, 774, 776, 778, 775, 774, 777, 199, 779, 203, 780, 203, 779, 450, 199, 780, 198, 780, 199, 779, 203, 198, 780, 779, 199, 450, 352, 354, 353, 354, 352, 248, 243, 301, 302, 243, 344, 301, 243, 236, 344, 236, 238, 235, 236, 3, 238, 243, 3, 236, 347, 3, 243, 347, 354, 3, 241, 354, 347, 303, 354, 241, 825, 788, 820, 788, 825, 781, 821, 823, 822, 825, 783, 782, 783, 825, 820, 784, 788, 781, 788, 784, 787, 785, 787, 784, 787, 785, 821, 782, 823, 824, 823, 782, 783, 824, 785, 786, 786, 825, 782, 786, 784, 781, 825, 786, 781, 786, 782, 824, 786, 785, 784, 787, 822, 788, 820, 788, 822, 821, 822, 787, 820, 822, 783, 823, 783, 822, 798, 789, 836, 789, 798, 790, 826, 791, 827, 798, 799, 792, 799, 798, 836, 793, 789, 790, 789, 793, 794, 797, 794, 793, 794, 797, 826, 792, 791, 795, 791, 792, 799, 795, 797, 796, 796, 798, 792, 796, 793, 790, 798, 796, 790, 796, 792, 795, 796, 797, 793, 836, 827, 799, 800, 809, 828, 809, 800, 801, 829, 802, 830, 800, 810, 803, 810, 800, 828, 804, 809, 801, 809, 804, 805, 806, 805, 804, 805, 806, 829, 803, 802, 807, 802, 803, 810, 807, 806, 808, 808, 800, 803, 808, 804, 801, 800, 808, 801, 808, 803, 807, 808, 806, 804, 805, 830, 809, 828, 809, 830, 829, 830, 805, 828, 830, 810, 802, 810, 830, 819, 835, 834, 835, 819, 811, 831, 813, 812, 813, 831, 832, 819, 815, 814, 815, 819, 834, 816, 835, 811, 835, 816, 817, 813, 817, 816, 817, 813, 832, 814, 831, 812, 831, 814, 815, 812, 813, 818, 818, 819, 814, 818, 816, 811, 819, 818, 811, 818, 814, 812, 818, 813, 816, 834, 833, 815, 833, 832, 831, 831, 815, 833, 795, 826, 797, 826, 795, 791, 823, 785, 824, 785, 823, 821, 807, 829, 806, 829, 807, 802, 817, 833, 835, 834, 835, 833, 832, 833, 817, 794, 827, 789, 836, 789, 827, 826, 827, 794, 827, 791, 799, 428, 118, 117, 118, 428, 429, 430, 118, 429, 118, 430, 120, 431, 120, 430, 120, 431, 122, 431, 124, 122, 124, 431, 432, 432, 126, 124, 126, 432, 433, 433, 128, 126, 128, 433, 434, 434, 130, 128, 130, 434, 435, 435, 132, 130, 132, 435, 436, 436, 134, 132, 134, 436, 437]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Shard.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Shard.as new file mode 100644 index 0000000..dafdc07 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/Shard.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Shard extends Stage3DData { + + public function Shard(){ + vertices = new [-17.3851, -1.52588E-5, 271.275, -17.3851, 335.48, 271.275, -43.912, 335.48, 53.0152, -43.912, -3.45707E-5, 53.0152, -186.939, 335.48, 134.293, -439.177, 335.48, 277.632, -439.177, -1.90735E-5, 277.632, -77.8051, 335.48, 326.34, -77.8051, -1.12057E-5, 326.34, -367.711, -1.40667E-5, 327.883, -367.711, 335.48, 327.883, -271.773, 335.48, 346.576, -271.773, -1.14441E-5, 346.576, 170.185, 296.857, -337.568, 223.73, 296.857, -275.796, 138.88, 296.857, -177.331, 85.3351, 296.857, -239.104, 223.73, -5.96046E-5, -275.796, 138.879, -5.19753E-5, -177.331, 170.185, -6.55651E-5, -337.568, 85.335, -5.79357E-5, -239.104, 104.53, 1090.98, -134.409, 150.464, 1225.15, -163.91, 150.74, 1225.19, -164.035, 256.865, 377.734, -154.082, 6.57615, 321.619, -177.555, 108.125, 1221.44, -155.895, 108.443, 1221.29, -155.157, 106.238, 1224.25, -168.209, 53.3309, 62.2072, -89.825, 6.57615, 62.2073, -177.556, 178.829, 62.2072, -86.393, 275.402, 62.2073, -152.344, 150.67, 1225.75, -164.042, 106.358, 1225.33, -168.198, 108.564, 1225.33, -155.801, 110.844, 1090.98, -201.737, 150.492, 1225.15, -164.21, 110.831, 1221.29, -180.623, 110.382, 1221.44, -179.957, 68.8261, 62.2072, -255.061, 192.775, 62.2073, -235.101, 150.67, 1225.75, -164.042, 110.831, 1225.33, -179.967, 470.778, 62.2072, -17.6272, 314.779, 62.2073, -200.955, 470.778, -3.52859E-5, -17.6272, 314.779, -5.26905E-5, -200.955, 68.8253, -6.00815E-5, -255.06, 6.506, -5.38826E-5, -177.909, 192.775, -5.6982E-5, -235.101, 223.73, 62.2072, -275.796, 223.73, -6.00815E-5, -275.796, 180.022, 62.2072, -34.5955, 336.02, 62.2072, 148.732, 180.022, -3.98159E-5, -34.5958, 336.02, -2.21729E-5, 148.732, 107.854, 62.2072, 12.4809, 150.545, 1225.15, -163.902, 107.854, -3.6478E-5, 12.4809]; + uvs = new [0.446814, 0.924277, 0.446814, 0.924277, 0.446814, 0.575154, 0.446814, 0.575154, 0.285315, 0.67587, 0.000499517, 0.853489, 0.000499517, 0.853489, 0.37593, 0.9995, 0.37593, 0.9995, 0.0695319, 0.946392, 0.0695319, 0.946392, 0.168462, 0.994237, 0.168462, 0.994237, 0.723084, 0.000499487, 0.771708, 0.108128, 0.669449, 0.247081, 0.620825, 0.139452, 0.771708, 0.108128, 0.669449, 0.247081, 0.723084, 0.000499487, 0.620825, 0.139452, 0.627659, 0.308159, 0.679962, 0.270457, 0.680269, 0.270312, 0.791082, 0.306332, 0.529738, 0.221381, 0.634215, 0.274979, 0.634455, 0.276204, 0.633802, 0.255208, 0.567859, 0.368627, 0.529738, 0.221381, 0.69997, 0.39808, 0.810438, 0.312624, 0.680196, 0.270288, 0.633927, 0.255248, 0.634666, 0.275211, 0.642971, 0.20324, 0.68003, 0.269989, 0.640247, 0.236519, 0.639687, 0.237483, 0.605437, 0.111136, 0.73379, 0.166345, 0.680196, 0.270288, 0.640162, 0.237553, 0.999501, 0.562406, 0.858268, 0.243543, 0.999501, 0.562406, 0.858268, 0.243543, 0.605435, 0.111137, 0.52971, 0.220811, 0.73379, 0.166345, 0.771708, 0.108128, 0.771708, 0.108128, 0.694581, 0.479956, 0.835814, 0.798819, 0.694581, 0.479956, 0.835814, 0.798819, 0.612313, 0.540336, 0.680046, 0.270484, 0.612313, 0.540336]; + indices = new [0, 2, 1, 2, 0, 3, 2, 5, 4, 2, 6, 5, 2, 3, 6, 7, 0, 1, 0, 7, 8, 9, 11, 10, 11, 9, 12, 5, 9, 10, 9, 5, 6, 12, 7, 11, 7, 12, 8, 4, 11, 7, 4, 10, 11, 4, 5, 10, 2, 7, 1, 7, 2, 4, 13, 15, 14, 15, 13, 16, 15, 17, 14, 17, 15, 18, 14, 19, 13, 19, 14, 17, 16, 19, 20, 19, 16, 13, 21, 23, 22, 23, 21, 24, 25, 27, 26, 27, 25, 21, 28, 25, 26, 25, 30, 29, 21, 31, 24, 24, 31, 32, 21, 25, 29, 33, 22, 23, 26, 34, 28, 34, 26, 35, 26, 27, 35, 21, 29, 31, 36, 23, 24, 23, 36, 37, 25, 38, 36, 38, 25, 39, 28, 39, 25, 25, 40, 30, 36, 24, 41, 24, 32, 41, 36, 40, 25, 42, 23, 37, 39, 34, 43, 34, 39, 28, 39, 43, 38, 36, 41, 40, 45, 46, 47, 46, 45, 44, 30, 48, 49, 48, 30, 40, 40, 50, 48, 50, 40, 41, 51, 47, 52, 47, 51, 45, 54, 55, 56, 55, 54, 53, 54, 46, 44, 46, 54, 56, 53, 29, 57, 29, 53, 31, 42, 58, 23, 53, 32, 31, 57, 55, 53, 55, 57, 59, 49, 29, 30, 49, 57, 29, 49, 59, 57, 21, 43, 35, 43, 21, 36, 35, 43, 34, 42, 36, 21, 32, 51, 41, 51, 32, 45, 45, 54, 44, 45, 53, 54, 32, 53, 45]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/StMaryAxe30.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/StMaryAxe30.as new file mode 100644 index 0000000..937ea46 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/StMaryAxe30.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class StMaryAxe30 extends Stage3DData { + + public function StMaryAxe30(){ + vertices = new [-107.52, 214.216, 67.4474, -105.385, 146.49, 66.1079, -118.227, 180.353, 48.0071, -95.1412, 251.171, 85.9666, -60.0011, 251.171, 113.322, -77.1746, 288.125, 99.1351, -57.3322, 109.707, 108.282, -44.7139, 542.674, -71.28, 121.64, 146.49, -26.0773, 113.521, 109.707, -46.0962, 122.441, 109.707, -4.4897, -112.436, 36.4621, 4.12284, -122.441, 109.707, 4.4897, -107.135, 398.325, 43.503, -65.1086, 109.707, -103.792, -59.7884, 36.4621, -95.3109, -91.8762, 434.874, 57.6338, -58.1876, 324.951, 109.897, 79.9758, 361.777, 88.511, 98.1236, 324.951, 76.3871, 52.6474, 36.4621, -99.4337, -26.7478, 180.353, -124.768, -4.65098, 214.216, -126.839, -97.1614, 470.959, -31.3823, -110.033, 398.325, -35.5398, -95.8504, 434.874, -50.7502, -109.944, 146.49, -58.2121, -121.426, 180.353, -39.2195, 47.7774, 470.959, -90.2359, 15.8928, 398.325, -114.533, -24.2383, 398.325, -113.062, 77.1746, 288.125, -99.1351, 107.428, 434.874, 14.9068, 16.8401, 109.707, -121.36, -66.08, 324.951, -105.341, -98.1236, 324.951, -76.3871, 107.52, 214.216, -67.4474, 118.227, 180.353, -48.0071, 54.2578, 470.959, 86.4944, 40.8041, 434.874, 100.488, -17.0914, 324.951, 123.171, -122.842, 288.125, 26.335, 91.8762, 434.874, -57.6338, 85.7951, 398.325, -77.5218, 17.0914, 324.951, -123.171, 101.054, 361.777, -63.391, -66.3965, 542.674, -51.6882, 95.8504, 434.874, 50.7502, 24.2383, 398.325, 113.062, 3.97426, 434.874, 108.384, -77.9616, 542.674, 31.6569, -26.8787, 251.171, -125.378, -68.1395, 251.171, -108.624, -47.752, 214.216, -117.599, 95.1412, 251.171, -85.9666, 77.9677, 214.216, -100.154, -17.5383, 180.353, 126.391, 4.55861, 146.49, 124.32, 124.441, 288.125, 17.2676, 128.141, 251.171, -4.6987, -34.8566, 507.043, -85.8415, -38.2363, 146.49, 118.382, 38.2363, 146.49, -118.382, 84.0872, 542.674, -3.08334, -39.3734, 542.674, 74.3633, -28.4761, 507.043, 88.1638, -128.141, 251.171, 4.69871, -102.035, 470.959, 3.74146, 26.7478, 180.353, 124.768, -122.02, 251.171, -39.4113, 23.5845, 36.4621, 110.012, 43.9881, 72.9241, 108.33, 83.4034, 146.49, 92.3044, 100.689, 180.353, 78.3843, -40.8041, 434.874, -100.488, 28.4761, 507.043, -88.1637, 22.4623, 578.305, -69.5447, -75.7586, 470.959, 68.4531, 65.1086, 109.707, 103.792, -83.4034, 146.49, -92.3044, -107.428, 434.874, -14.9068, -39.3848, 0, -96.993, 64.306, 0, -82.6047, 77.9616, 542.674, -31.6569, -91.7692, 507.043, -12.734, -11.5651, 542.674, 83.3452, 28.2395, 675.568, -11.4669, 22.6146, 675.568, -20.4338, 38.9189, 646.144, -24.4138, 45.5064, 646.144, 6.31454, 30.4584, 675.568, -1.11686, 44.9218, 646.144, -9.63039, -24.0504, 675.568, -18.7227, -40.6024, 646.144, -21.4978, -30.801, 646.144, -34.0882, 17.2847, 646.144, 42.567, 12.7131, 615.626, 59.3015, -47.8571, 615.626, -37.2557, 30.801, 646.144, 34.0882, 40.6024, 646.144, 21.4978, -4.52646, 703.741, -11.1473, -16.1964, 675.568, -25.8193, -6.38893, 675.568, -29.8017, -45.5064, 646.144, -6.31454, -29.0035, 675.568, -9.36787, -44.9218, 646.144, 9.63039, -30.4584, 675.568, 1.11686, -0.44087, 703.741, -12.0232, 4.18915, 675.568, -30.1896, 14.262, 675.568, -26.9361, 60.6082, 615.626, -2.2224, -28.3794, 615.626, 53.5994, -45, 615.626, 40.6607, 6.38893, 675.568, 29.8017, 16.1964, 675.568, 25.8193, -1.6835, 646.144, -45.9116, -17.2847, 646.144, -42.567, 24.0504, 675.568, 18.7227, -14.1207, 646.144, 43.7186, -38.9189, 646.144, 24.4138, -28.2218, 646.144, 36.2525, -7.39064, 703.741, 9.4937, -14.262, 675.568, 26.9361, -22.6146, 675.568, 20.4338, -8.0661, 703.741, -8.92692, 29.0035, 675.568, 9.36787, -28.2395, 675.568, 11.4669, 14.1207, 646.144, -43.7186, -10.192, 703.741, 6.39341, -22.4623, 578.305, 69.5447, 1.6835, 646.144, 45.9116, -4.18915, 675.568, 30.1896, 28.3794, 615.626, -53.5994, -10.6328, 703.741, -5.6298, 28.2218, 646.144, -36.2525, 71.4587, 578.305, -15.3194, 2.67801, 578.305, 73.0332, 61.9096, 578.305, -38.8358, -101.182, 251.171, -78.7678, -84.2278, 288.125, -93.2168, 99.0454, 72.9241, -62.1311, 90.9092, 109.707, -82.1428, 83.4807, 36.4621, -75.4306, 14.0336, 470.959, -101.135, -3.97426, 434.874, -108.384, -113.521, 109.707, 46.0962, -104.245, 36.4621, 42.3295, -114.322, 72.9241, 24.5086, 78.4846, 507.043, -49.2333, 94.6021, 470.959, -38.4139, -35.9361, 72.9241, 111.26, 59.709, 180.353, -112.771, 57.3322, 109.707, -108.282, -118.159, 361.777, -16.3959, -115.553, 398.325, 4.23713, 26.0663, 324.951, 121.589, 26.8787, 251.171, 125.378, 4.60366, 288.125, 125.549, -17.6241, 251.171, 127.01, 4.65098, 214.216, 126.839, -59.709, 180.353, 112.771, -76.4193, 146.49, 98.1648, 122.842, 288.125, -26.335, 115.215, 324.951, -46.7839, 118.806, 251.171, -48.242, -16.8401, 109.707, 121.36, 25.6831, 109.707, 119.801, 4.28438, 72.9241, 116.841, 60.0011, 251.171, -113.322, 39.011, 214.216, -120.78, 61.4459, 398.325, 97.9532, -67.8078, 180.353, -108.095, -26.0663, 324.951, -121.589, -47.2662, 288.125, -116.403, -81.8795, 507.043, -43.353, -118.332, 324.951, -38.2202, -78.4845, 507.043, 49.2333, -94.6021, 470.959, 38.4139, 118.332, 324.951, 38.2202, 110.033, 398.325, 35.5398, 118.159, 361.777, 16.3959, -21.4029, 470.959, -99.8354, -3.39498, 507.043, -92.5862, 17.6241, 251.171, -127.01, 17.5383, 180.353, -126.391, -106.427, 288.125, 66.7613, -118.806, 251.171, 48.242, -106.047, 434.874, 22.7346, -3.83602, 0, -104.614, -4.28438, 72.9241, -116.841, -103.33, 72.9241, -54.7103, -88.7809, 36.4621, -69.1141, -96.681, 109.707, -75.2641, 124.104, 214.216, -26.6057, -124.441, 288.125, -17.2676, -4.60366, 288.125, -125.549, -61.4459, 398.325, -97.9532, -44.8801, 361.777, -110.526, -100.689, 180.353, -78.3843, -85.0934, 214.216, -94.1747, -90.9092, 109.707, 82.1428, -71.8222, 72.9241, 92.2596, -111.03, 288.125, -58.7875, -25.6831, 109.707, -119.801, -43.9881, 72.9241, -108.33, 105.385, 146.49, -66.1079, 94.678, 180.353, -85.5481, 106.427, 288.125, -66.7613, 92.2656, 324.951, -83.3683, -54.107, 398.325, 102.19, -73.2786, 361.777, 94.1305, -107.065, 36.4621, -34.5811, -116.592, 109.707, -37.6583, 112.171, 214.216, 59.3916, 111.03, 288.125, 58.7875, 122.02, 251.171, 39.4113, 101.182, 251.171, 78.7678, -99.0454, 72.9241, 62.1311, 38.6142, 288.125, -119.552, 54.107, 398.325, -102.19, 66.6234, 434.874, -85.5816, -54.2578, 470.959, -86.4944, -47.7774, 470.959, 90.2359, -14.0336, 470.959, 101.135, -33.3349, 434.874, 103.207, 36.6648, 361.777, -113.517, 58.1876, 324.951, -109.897, -116.641, 361.777, 25.0056, 115.553, 398.325, -4.23713, -79.9758, 361.777, -88.511, 103.33, 72.9241, 54.7103, 109.944, 146.49, 58.2121, 116.592, 109.707, 37.6583, 96.681, 109.707, 75.2641, -90.5901, 507.043, 19.4208, -124.268, 324.951, 4.55669, -66.6234, 434.874, 85.5816, -125.72, 214.216, -17.445, -123.223, 146.49, -17.0986, -127.517, 180.353, 4.67583, -17.6381, 542.674, -82.2743, -115.81, 72.9241, -16.07, 71.8222, 72.9241, -92.2596, 76.4193, 146.49, -98.1648, -80.5685, 470.959, -62.7209, -91.2422, 398.325, -71.0301, -72.7124, 434.874, -80.4723, 78.3862, 72.9241, 86.7517, 91.2422, 398.325, 71.0301, 80.5685, 470.959, 62.7209, 66.08, 324.951, 105.341, -112.171, 214.216, -59.3916, -105.425, 361.777, -55.8198, 72.7124, 434.874, 80.4724, -78.3862, 72.9241, -86.7517, 105.425, 361.777, 55.8198, 66.3965, 542.674, 51.6882, 81.8795, 507.043, 43.353, 116.641, 361.777, -25.0056, 124.268, 324.951, -4.55669, -92.2656, 324.951, 83.3683, -4.37126, 361.777, -119.211, -124.104, 214.216, 26.6057, -115.215, 324.951, 46.7839, -62.114, 507.043, -68.7429, 67.8078, 180.353, 108.095, 85.0934, 214.216, 94.1747, -15.8928, 398.325, 114.533, -36.6648, 361.777, 113.517, 84.2278, 288.125, 93.2168, -94.678, 180.353, 85.5481, 46.8036, 146.49, 115.263, 35.9361, 72.9241, -111.26, 127.517, 180.353, -4.67583, -61.9096, 578.305, 38.8358, -46.8036, 146.49, -115.263, 47.2662, 288.125, 116.403, 44.8801, 361.777, 110.526, 90.5901, 507.043, -19.4208, 59.7884, 36.4621, 95.3109, 70.1831, 0, 77.6732, -39.011, 214.216, 120.78, -4.55861, 146.49, -124.32, -85.7951, 398.325, 77.5218, 68.1395, 251.171, 108.624, 47.752, 214.216, 117.599, 3.83602, 0, 104.614, 33.3349, 434.874, -103.207, 121.426, 180.353, 39.2195, 44.7139, 542.674, 71.28, 34.8566, 507.043, 85.8415, 27.4953, 578.305, 67.7129, 125.72, 214.216, 17.445, 21.4029, 470.959, 99.8354, 64.5877, 578.305, 34.1974, 80.0707, 542.674, 25.8621, 3.39498, 507.043, 92.5862, 91.7692, 507.043, 12.734, 72.3887, 578.305, 10.0448, 39.3734, 542.674, -74.3633, 56.9126, 507.043, -73.1074, 44.8934, 578.305, -57.6681, -101.054, 361.777, 63.391, 97.1614, 470.959, 31.3823, 102.035, 470.959, -3.74146, 75.7586, 470.959, -68.4531, -77.9677, 214.216, 100.154, 73.2786, 361.777, -94.1305, 123.223, 146.49, 17.0986, 107.135, 398.325, -43.503, -56.9126, 507.043, 73.1074, -44.8934, 578.305, 57.6681, 62.114, 507.043, 68.7429, 4.37126, 361.777, 119.211, 106.047, 434.874, -22.7346, -38.6142, 288.125, 119.552, -121.64, 146.49, 26.0773, 0.440872, 703.741, 12.0232, -3.6979, 703.741, 11.4489, -0.85292, 706.773, 6.14667, 11.764, 703.741, -2.52198, 5.74963, 706.773, -2.33468, 10.192, 703.741, -6.39341, -1.3008, 706.773, -6.06769, -3.29763, 706.773, -5.25687, 11.9171, 703.741, 1.65363, 10.6328, 703.741, 5.6298, 5.90518, 706.773, 1.90732, -2.90377, 706.773, 5.48426, -4.60438, 706.773, 4.16037, -4.89671, 706.773, -3.81198, 5.72205E-7, 707.874, 0, -6.20139, 706.773, 0.227396, -5.90518, 706.773, -1.90732, 4.89671, 706.773, 3.81198, 7.39064, 703.741, -9.4937, 4.60438, 706.773, -4.16037, 2.90377, 706.773, -5.48426, -5.74963, 706.773, 2.33468, -11.764, 703.741, 2.52198, 4.52646, 703.741, 11.1473, 1.3008, 706.773, 6.06769, 3.29763, 706.773, 5.25687, 8.0661, 703.741, 8.92693, 0.852921, 706.773, -6.14666, -11.9171, 703.741, -1.65363, 6.20139, 706.773, -0.227393, 3.6979, 703.741, -11.4489, -23.5845, 36.4621, -110.012, -102.359, 0, 21.9438, -88.6804, 0, 55.6291, -92.5164, 0, -48.9849, -103.691, 0, -14.3883, -15.4641, 36.4621, 111.444, -32.1754, 0, 99.617, 39.3848, 0, 96.993, -83.4807, 36.4621, 75.4306, -64.306, 0, 82.6047, 15.4641, 36.4621, -111.444, -52.6474, 36.4621, 99.4337, 88.7809, 36.4621, 69.1141, 92.5164, 0, 48.9849, 107.065, 36.4621, 34.5811, -56.193, 615.626, 22.8176, -84.0872, 542.674, 3.08334, -60.6082, 615.626, 2.2224, -62.4326, 542.674, 56.4122, -8.33586, 615.626, 60.0733, -12.7131, 615.626, -59.3015, -27.4953, 578.305, -67.7129, 32.2288, 615.626, 51.377, 48.9963, 578.305, 54.2253, 56.193, 615.626, -22.8176, 57.7132, 615.626, 18.6408, -32.2288, 615.626, -51.377, -2.67801, 578.305, -73.0332, 17.6381, 542.674, 82.2743, -57.7132, 615.626, -18.6408, -80.0707, 542.674, -25.8621, 45, 615.626, -40.6607, 62.4326, 542.674, -56.4122, 8.33586, 615.626, -60.0733, 11.5651, 542.674, -83.3452, -72.3887, 578.305, -10.0448, 47.8571, 615.626, 37.2557, 114.322, 72.9241, -24.5086, 104.245, 36.4621, -42.3295, 112.436, 36.4621, -4.12283, 115.81, 72.9241, 16.07, 103.691, 0, 14.3883, 88.6804, 0, -55.6291, 102.359, 0, -21.9438, 32.1754, 0, -99.617, -70.1831, 0, -77.6732, -71.4587, 578.305, 15.3194, -48.9963, 578.305, -54.2253, -64.5877, 578.305, -34.1974, -7.19319E-6, 579.672, 82.0635, -7.13397E-6, 581.026, 80.7087, -7.07475E-6, 579.672, 79.3539, -7.13397E-6, 578.317, 80.7087, 25.359, 579.672, 78.047, 24.9403, 581.026, 76.7585, 24.5217, 579.672, 75.47, 24.9403, 578.317, 76.7585, 48.2357, 579.672, 66.3907, 47.4394, 581.026, 65.2947, 46.643, 579.672, 64.1986, 47.4394, 578.317, 65.2947, 66.3907, 579.672, 48.2357, 65.2947, 581.026, 47.4394, 64.1986, 579.672, 46.643, 65.2947, 578.317, 47.4394, 78.047, 579.672, 25.359, 76.7585, 581.026, 24.9403, 75.47, 579.672, 24.5217, 76.7585, 578.317, 24.9403, 82.0635, 579.672, -4.57764E-6, 80.7087, 581.026, -4.57764E-6, 79.3539, 579.672, -4.57764E-6, 80.7087, 578.317, -4.57764E-6, 78.047, 579.672, -25.359, 76.7585, 581.026, -24.9404, 75.47, 579.672, -24.5217, 76.7585, 578.317, -24.9404, 66.3907, 579.672, -48.2357, 65.2947, 581.026, -47.4394, 64.1986, 579.672, -46.643, 65.2947, 578.317, -47.4394, 48.2357, 579.672, -66.3907, 47.4394, 581.026, -65.2947, 46.643, 579.672, -64.1986, 47.4394, 578.317, -65.2947, 25.359, 579.672, -78.047, 24.9403, 581.026, -76.7585, 24.5217, 579.672, -75.47, 24.9403, 578.317, -76.7585, -7.19319E-6, 579.672, -82.0635, -7.13397E-6, 581.026, -80.7087, -7.07475E-6, 579.672, -79.3539, -7.13397E-6, 578.317, -80.7087, -25.359, 579.672, -78.047, -24.9404, 581.026, -76.7585, -24.5217, 579.672, -75.47, -24.9404, 578.317, -76.7585, -48.2357, 579.672, -66.3907, -47.4394, 581.026, -65.2947, -46.643, 579.672, -64.1986, -47.4394, 578.317, -65.2947, -66.3907, 579.672, -48.2357, -65.2947, 581.026, -47.4394, -64.1986, 579.672, -46.643, -65.2947, 578.317, -47.4394, -78.047, 579.672, -25.359, -76.7585, 581.026, -24.9403, -75.47, 579.672, -24.5217, -76.7585, 578.317, -24.9403, -82.0635, 579.672, 2.2162E-5, -80.7087, 581.026, 2.17206E-5, -79.3539, 579.672, 2.12791E-5, -80.7087, 578.317, 2.17206E-5, -78.047, 579.672, 25.359, -76.7585, 581.026, 24.9404, -75.47, 579.672, 24.5217, -76.7585, 578.317, 24.9404, -66.3907, 579.672, 48.2357, -65.2947, 581.026, 47.4394, -64.1986, 579.672, 46.6431, -65.2947, 578.317, 47.4394, -48.2357, 579.672, 66.3908, -47.4393, 581.026, 65.2947, -46.643, 579.672, 64.1987, -47.4393, 578.317, 65.2947, -25.3589, 579.672, 78.047, -24.9403, 581.026, 76.7585, -24.5216, 579.672, 75.47, -24.9403, 578.317, 76.7585, -6.7388E-6, 592.511, 71.6682, -6.67958E-6, 593.866, 70.3134, -6.62036E-6, 592.511, 68.9586, -6.67958E-6, 591.156, 70.3134, 22.1467, 592.511, 68.1605, 21.728, 593.866, 66.872, 21.3094, 592.511, 65.5835, 21.728, 591.156, 66.872, 42.1255, 592.511, 57.9808, 41.3292, 593.866, 56.8847, 40.5328, 592.511, 55.7887, 41.3292, 591.156, 56.8847, 57.9808, 592.511, 42.1255, 56.8847, 593.866, 41.3292, 55.7887, 592.511, 40.5328, 56.8847, 591.156, 41.3292, 68.1605, 592.511, 22.1467, 66.872, 593.866, 21.728, 65.5835, 592.511, 21.3094, 66.872, 591.156, 21.728, 71.6682, 592.511, -4.57764E-6, 70.3134, 593.866, -4.57764E-6, 68.9586, 592.511, -4.57764E-6, 70.3134, 591.156, -4.57764E-6, 68.1605, 592.511, -22.1467, 66.872, 593.866, -21.728, 65.5835, 592.511, -21.3094, 66.872, 591.156, -21.728, 57.9808, 592.511, -42.1255, 56.8847, 593.866, -41.3292, 55.7887, 592.511, -40.5328, 56.8847, 591.156, -41.3292, 42.1255, 592.511, -57.9808, 41.3292, 593.866, -56.8847, 40.5328, 592.511, -55.7887, 41.3292, 591.156, -56.8847, 22.1467, 592.511, -68.1605, 21.728, 593.866, -66.872, 21.3094, 592.511, -65.5835, 21.728, 591.156, -66.872, -6.7388E-6, 592.511, -71.6682, -6.67958E-6, 593.866, -70.3134, -6.62036E-6, 592.511, -68.9586, -6.67958E-6, 591.156, -70.3134, -22.1467, 592.511, -68.1605, -21.728, 593.866, -66.872, -21.3094, 592.511, -65.5835, -21.728, 591.156, -66.872, -42.1255, 592.511, -57.9808, -41.3292, 593.866, -56.8847, -40.5328, 592.511, -55.7887, -41.3292, 591.156, -56.8847, -57.9808, 592.511, -42.1255, -56.8847, 593.866, -41.3292, -55.7887, 592.511, -40.5328, -56.8847, 591.156, -41.3292, -68.1605, 592.511, -22.1467, -66.872, 593.866, -21.728, -65.5835, 592.511, -21.3094, -66.872, 591.156, -21.728, -71.6682, 592.511, 1.87748E-5, -70.3134, 593.866, 1.83334E-5, -68.9586, 592.511, 1.78919E-5, -70.3134, 591.156, 1.83334E-5, -68.1605, 592.511, 22.1467, -66.872, 593.866, 21.7281, -65.5835, 592.511, 21.3094, -66.872, 591.156, 21.7281, -57.9808, 592.511, 42.1255, -56.8847, 593.866, 41.3292, -55.7887, 592.511, 40.5329, -56.8847, 591.156, 41.3292, -42.1255, 592.511, 57.9808, -41.3291, 593.866, 56.8848, -40.5328, 592.511, 55.7887, -41.3291, 591.156, 56.8848, -22.1466, 592.511, 68.1605, -21.728, 593.866, 66.872, -21.3093, 592.511, 65.5835, -21.728, 591.156, 66.872]; + uvs = new [0.0808789, 0.234745, 0.0892028, 0.240013, 0.0391423, 0.311199, 0.129134, 0.161913, 0.266112, 0.0543289, 0.199169, 0.110124, 0.276515, 0.0741528, 0.325702, 0.780328, 0.974159, 0.602556, 0.942513, 0.681286, 0.977282, 0.517657, 0.0617179, 0.483786, 0.0227178, 0.482343, 0.0823808, 0.328912, 0.246202, 0.90819, 0.266941, 0.874836, 0.141861, 0.273339, 0.273181, 0.067799, 0.811751, 0.151907, 0.882492, 0.199587, 0.705223, 0.89105, 0.395735, 0.990682, 0.48187, 0.998829, 0.121258, 0.623419, 0.0710828, 0.63977, 0.126369, 0.699589, 0.0714329, 0.728935, 0.0266744, 0.654241, 0.686239, 0.854877, 0.561951, 0.950433, 0.405517, 0.944645, 0.800831, 0.889876, 0.918759, 0.441375, 0.565644, 0.977282, 0.242416, 0.91428, 0.117508, 0.800413, 0.919121, 0.765255, 0.960858, 0.688801, 0.711501, 0.159837, 0.659057, 0.104802, 0.433377, 0.0155965, 0.0211541, 0.39643, 0.858139, 0.726661, 0.834435, 0.804875, 0.566623, 0.984403, 0.893915, 0.749302, 0.241182, 0.703278, 0.873631, 0.300411, 0.594483, 0.0553546, 0.515492, 0.0737506, 0.196101, 0.375501, 0.395225, 0.993083, 0.234388, 0.927192, 0.31386, 0.96249, 0.870866, 0.838087, 0.803923, 0.893882, 0.431635, 0.00293136, 0.51777, 0.011078, 0.985078, 0.432091, 0.9995, 0.518479, 0.364127, 0.837595, 0.350953, 0.0344318, 0.649047, 0.965568, 0.827777, 0.512126, 0.34652, 0.207546, 0.388998, 0.153272, 0.000499576, 0.481521, 0.10226, 0.485286, 0.604265, 0.00931787, 0.0243587, 0.654996, 0.591934, 0.0673491, 0.671468, 0.0739645, 0.825112, 0.136988, 0.892493, 0.191733, 0.340943, 0.895198, 0.611002, 0.846728, 0.58756, 0.773504, 0.204688, 0.230789, 0.753798, 0.0918099, 0.174888, 0.863012, 0.0812406, 0.558625, 0.346476, 0.881451, 0.750669, 0.824865, 0.803899, 0.624499, 0.142278, 0.55008, 0.454919, 0.172223, 0.610079, 0.545097, 0.588153, 0.580362, 0.651708, 0.596014, 0.677387, 0.475166, 0.618729, 0.504392, 0.675108, 0.537874, 0.40625, 0.573632, 0.341729, 0.584546, 0.379936, 0.634061, 0.567377, 0.332594, 0.549557, 0.266781, 0.31345, 0.646518, 0.620064, 0.365939, 0.658271, 0.415454, 0.482356, 0.54384, 0.436865, 0.601541, 0.475096, 0.617203, 0.322613, 0.524834, 0.386943, 0.536842, 0.324892, 0.462126, 0.381271, 0.495608, 0.498281, 0.547284, 0.51633, 0.618729, 0.555594, 0.605934, 0.736255, 0.50874, 0.389375, 0.289206, 0.324587, 0.340091, 0.524904, 0.382797, 0.563135, 0.398459, 0.493438, 0.68056, 0.432623, 0.667406, 0.59375, 0.426368, 0.444957, 0.328065, 0.348292, 0.403986, 0.38999, 0.357427, 0.471191, 0.462663, 0.444406, 0.394066, 0.411847, 0.419638, 0.468558, 0.535108, 0.613057, 0.463158, 0.389921, 0.454903, 0.555043, 0.671935, 0.460271, 0.474856, 0.41244, 0.226496, 0.506562, 0.31944, 0.48367, 0.381271, 0.610625, 0.710794, 0.458553, 0.522141, 0.61001, 0.642573, 0.778551, 0.560248, 0.510439, 0.212777, 0.741328, 0.652733, 0.105587, 0.809776, 0.171675, 0.8666, 0.886085, 0.744347, 0.85437, 0.823049, 0.825413, 0.796651, 0.554704, 0.89774, 0.484508, 0.926249, 0.0574872, 0.318714, 0.0936463, 0.333528, 0.0543644, 0.403613, 0.805938, 0.693623, 0.868765, 0.651073, 0.359919, 0.0624387, 0.732749, 0.943501, 0.723485, 0.925847, 0.0394096, 0.564481, 0.0495674, 0.483336, 0.601608, 0.0218203, 0.604775, 0.00691718, 0.517946, 0.00624549, 0.4313, 0.000499487, 0.51813, 0.00117123, 0.267251, 0.0564987, 0.202113, 0.11394, 0.978846, 0.60357, 0.949115, 0.683991, 0.963112, 0.689725, 0.434356, 0.0227177, 0.600115, 0.02885, 0.516701, 0.0404897, 0.733888, 0.945671, 0.652067, 0.975002, 0.73952, 0.114773, 0.235681, 0.925112, 0.398392, 0.97818, 0.315753, 0.957785, 0.180828, 0.670497, 0.0387346, 0.650311, 0.194062, 0.306377, 0.131235, 0.348927, 0.961265, 0.349689, 0.928917, 0.36023, 0.96059, 0.435519, 0.41657, 0.89263, 0.486766, 0.86412, 0.5687, 0.999501, 0.568365, 0.997069, 0.0851424, 0.237443, 0.0368876, 0.310275, 0.0866209, 0.41059, 0.485047, 0.911423, 0.483299, 0.95951, 0.0972139, 0.715163, 0.153926, 0.77181, 0.123131, 0.795996, 0.983767, 0.604634, 0.0149217, 0.567909, 0.482055, 0.993755, 0.26048, 0.885227, 0.325054, 0.934675, 0.107507, 0.808267, 0.1683, 0.870368, 0.14563, 0.176951, 0.220033, 0.137164, 0.0671968, 0.731198, 0.399885, 0.97115, 0.328531, 0.926036, 0.910797, 0.759987, 0.869061, 0.836441, 0.914858, 0.762557, 0.859657, 0.827869, 0.289088, 0.0981089, 0.214355, 0.129806, 0.082653, 0.636, 0.0455157, 0.648101, 0.937251, 0.266426, 0.932803, 0.268802, 0.975641, 0.345004, 0.894413, 0.190224, 0.113915, 0.255653, 0.65052, 0.97017, 0.710912, 0.901891, 0.759702, 0.836573, 0.288499, 0.840163, 0.313761, 0.145123, 0.445296, 0.10226, 0.370058, 0.0941108, 0.642922, 0.946434, 0.726819, 0.932201, 0.0453274, 0.401659, 0.950433, 0.516664, 0.188249, 0.848093, 0.902786, 0.284837, 0.928567, 0.271065, 0.954484, 0.351899, 0.876869, 0.204004, 0.146874, 0.423622, 0.0155967, 0.482079, 0.240298, 0.163427, 0.00993657, 0.568607, 0.0196693, 0.567245, 0.00293151, 0.481611, 0.431246, 0.823566, 0.0485642, 0.5632, 0.779967, 0.862836, 0.797887, 0.88606, 0.185939, 0.746667, 0.144332, 0.779345, 0.216563, 0.816479, 0.805555, 0.158825, 0.855668, 0.220655, 0.814061, 0.253333, 0.757584, 0.0857196, 0.062749, 0.733574, 0.0890458, 0.719526, 0.783437, 0.183521, 0.194445, 0.841175, 0.910954, 0.280474, 0.758818, 0.296722, 0.819172, 0.329503, 0.954673, 0.598341, 0.984403, 0.51792, 0.140343, 0.172131, 0.48296, 0.968829, 0.016233, 0.395366, 0.0508848, 0.316009, 0.257876, 0.77035, 0.764319, 0.0748878, 0.8317, 0.129632, 0.438049, 0.0495673, 0.357078, 0.0535654, 0.828326, 0.1334, 0.130939, 0.163559, 0.682444, 0.0466954, 0.640081, 0.937561, 0.997069, 0.518389, 0.258672, 0.347267, 0.317556, 0.953305, 0.684247, 0.0422149, 0.674946, 0.065325, 0.853126, 0.576378, 0.733059, 0.125164, 0.773578, 0.194529, 0.347933, 0.0249983, 0.48223, 0.988922, 0.165565, 0.195125, 0.765612, 0.072808, 0.68614, 0.0375103, 0.514953, 0.0885772, 0.629942, 0.905889, 0.973326, 0.345759, 0.674298, 0.219672, 0.635873, 0.162405, 0.607179, 0.233701, 0.990063, 0.431393, 0.58343, 0.10737, 0.751767, 0.36551, 0.812121, 0.39829, 0.513234, 0.13588, 0.857722, 0.44992, 0.782176, 0.460496, 0.65348, 0.792454, 0.721849, 0.787515, 0.674997, 0.726795, 0.106085, 0.250698, 0.878742, 0.376581, 0.89774, 0.514714, 0.795312, 0.769211, 0.196077, 0.106118, 0.785645, 0.870194, 0.980331, 0.432755, 0.917619, 0.671088, 0.278151, 0.212485, 0.325003, 0.273205, 0.742124, 0.22965, 0.51704, 0.0311714, 0.913379, 0.58941, 0.34948, 0.0298302, 0.0258407, 0.397444, 0.501719, 0.452715, 0.485585, 0.454974, 0.496675, 0.475827, 0.545857, 0.509918, 0.522412, 0.509182, 0.539729, 0.525144, 0.494929, 0.523863, 0.487146, 0.520674, 0.546454, 0.493497, 0.541448, 0.477859, 0.523019, 0.492499, 0.488681, 0.478432, 0.482052, 0.483638, 0.480912, 0.514992, 0.5, 0.5, 0.475827, 0.499106, 0.476981, 0.507501, 0.519088, 0.485008, 0.528809, 0.537337, 0.517948, 0.516362, 0.511319, 0.521568, 0.477588, 0.490818, 0.454143, 0.490082, 0.517644, 0.45616, 0.505071, 0.476137, 0.512854, 0.479326, 0.531442, 0.464892, 0.503325, 0.524173, 0.453546, 0.506503, 0.524173, 0.500894, 0.514415, 0.545026, 0.408066, 0.932651, 0.101, 0.4137, 0.154318, 0.281223, 0.139365, 0.692646, 0.0958068, 0.556586, 0.43972, 0.0617179, 0.374578, 0.108229, 0.653524, 0.118549, 0.174587, 0.203349, 0.249331, 0.175135, 0.56028, 0.938282, 0.294777, 0.10895, 0.846074, 0.22819, 0.860635, 0.307354, 0.917347, 0.364, 0.280956, 0.410264, 0.172223, 0.487874, 0.263745, 0.49126, 0.256634, 0.278144, 0.467506, 0.263745, 0.450443, 0.733219, 0.392821, 0.766299, 0.62563, 0.297946, 0.690991, 0.286744, 0.719044, 0.589736, 0.72497, 0.42669, 0.37437, 0.702054, 0.489561, 0.787223, 0.568754, 0.176434, 0.27503, 0.57331, 0.187879, 0.60171, 0.675413, 0.659909, 0.743366, 0.721856, 0.532494, 0.736255, 0.545081, 0.827777, 0.217824, 0.539504, 0.68655, 0.353482, 0.945636, 0.596387, 0.906354, 0.666472, 0.938282, 0.516214, 0.951436, 0.4368, 0.904193, 0.443414, 0.845682, 0.718776, 0.899, 0.5863, 0.625422, 0.891771, 0.226422, 0.805471, 0.22145, 0.439752, 0.309009, 0.713256, 0.248233, 0.63449, 0.5, 0.177263, 0.5, 0.182591, 0.5, 0.187919, 0.5, 0.182591, 0.598851, 0.193059, 0.597219, 0.198126, 0.595587, 0.203194, 0.597219, 0.198126, 0.688026, 0.238901, 0.684922, 0.243211, 0.681818, 0.247522, 0.684922, 0.243211, 0.758795, 0.3103, 0.754523, 0.313432, 0.75025, 0.316564, 0.754523, 0.313432, 0.804232, 0.400269, 0.79921, 0.401915, 0.794187, 0.403562, 0.79921, 0.401915, 0.819889, 0.5, 0.814608, 0.5, 0.809326, 0.5, 0.814608, 0.5, 0.804232, 0.599731, 0.799209, 0.598085, 0.794187, 0.596438, 0.799209, 0.598085, 0.758795, 0.6897, 0.754523, 0.686568, 0.75025, 0.683436, 0.754523, 0.686568, 0.688026, 0.7611, 0.684922, 0.756789, 0.681817, 0.752479, 0.684922, 0.756789, 0.598851, 0.806941, 0.597219, 0.801874, 0.595587, 0.796806, 0.597219, 0.801874, 0.5, 0.822737, 0.5, 0.817409, 0.5, 0.812081, 0.5, 0.817409, 0.401149, 0.806941, 0.402781, 0.801874, 0.404413, 0.796806, 0.402781, 0.801874, 0.311974, 0.761099, 0.315078, 0.756789, 0.318182, 0.752478, 0.315078, 0.756789, 0.241205, 0.6897, 0.245477, 0.686568, 0.24975, 0.683436, 0.245477, 0.686568, 0.195768, 0.599731, 0.20079, 0.598085, 0.205813, 0.596438, 0.20079, 0.598085, 0.180111, 0.5, 0.185392, 0.5, 0.190674, 0.5, 0.185392, 0.5, 0.195768, 0.400269, 0.20079, 0.401915, 0.205813, 0.403562, 0.20079, 0.401915, 0.241205, 0.3103, 0.245477, 0.313432, 0.24975, 0.316563, 0.245477, 0.313432, 0.311974, 0.2389, 0.315079, 0.243211, 0.318183, 0.247521, 0.315079, 0.243211, 0.401149, 0.193059, 0.402781, 0.198126, 0.404413, 0.203194, 0.402781, 0.198126, 0.5, 0.218145, 0.5, 0.223474, 0.5, 0.228802, 0.5, 0.223474, 0.586329, 0.231941, 0.584697, 0.237008, 0.583065, 0.242075, 0.584697, 0.237008, 0.664208, 0.271975, 0.661104, 0.276286, 0.658, 0.280596, 0.661104, 0.276286, 0.726013, 0.33433, 0.72174, 0.337462, 0.717468, 0.340594, 0.72174, 0.337462, 0.765694, 0.412902, 0.760671, 0.414549, 0.755649, 0.416195, 0.760671, 0.414549, 0.779367, 0.5, 0.774086, 0.5, 0.768805, 0.5, 0.774086, 0.5, 0.765694, 0.587098, 0.760671, 0.585451, 0.755649, 0.583805, 0.760671, 0.585451, 0.726013, 0.66567, 0.72174, 0.662538, 0.717468, 0.659406, 0.72174, 0.662538, 0.664208, 0.728025, 0.661104, 0.723715, 0.658, 0.719404, 0.661104, 0.723715, 0.586329, 0.76806, 0.584697, 0.762992, 0.583065, 0.757925, 0.584697, 0.762992, 0.5, 0.781855, 0.5, 0.776526, 0.5, 0.771198, 0.5, 0.776526, 0.413671, 0.76806, 0.415303, 0.762992, 0.416935, 0.757925, 0.415303, 0.762992, 0.335792, 0.728025, 0.338896, 0.723715, 0.342, 0.719404, 0.338896, 0.723715, 0.273987, 0.66567, 0.27826, 0.662538, 0.282532, 0.659406, 0.27826, 0.662538, 0.234306, 0.587098, 0.239329, 0.585451, 0.244351, 0.583805, 0.239329, 0.585451, 0.220633, 0.5, 0.225914, 0.5, 0.231195, 0.5, 0.225914, 0.5, 0.234306, 0.412902, 0.239329, 0.414548, 0.244351, 0.416195, 0.239329, 0.414548, 0.273987, 0.33433, 0.27826, 0.337462, 0.282532, 0.340593, 0.27826, 0.337462, 0.335792, 0.271975, 0.338896, 0.276285, 0.342001, 0.280596, 0.338896, 0.276285, 0.413671, 0.23194, 0.415303, 0.237008, 0.416935, 0.242075, 0.415303, 0.237008]; + indices = new [0, 1, 270, 1, 0, 2, 3, 4, 5, 4, 3, 306, 359, 6, 201, 6, 359, 150, 221, 7, 60, 7, 221, 264, 356, 359, 201, 359, 356, 357, 385, 8, 10, 8, 385, 9, 11, 12, 241, 12, 11, 147, 13, 263, 302, 263, 13, 227, 14, 15, 254, 15, 14, 204, 16, 302, 283, 302, 16, 13, 17, 4, 315, 4, 17, 5, 248, 19, 0xFF, 19, 248, 18, 152, 20, 272, 20, 152, 242, 288, 215, 213, 215, 288, 292, 184, 21, 22, 21, 184, 282, 23, 24, 80, 24, 23, 25, 251, 26, 27, 26, 251, 198, 299, 28, 75, 28, 299, 300, 29, 30, 144, 30, 29, 261, 226, 168, 218, 168, 226, 31, 179, 303, 47, 303, 179, 32, 33, 184, 62, 184, 33, 282, 270, 3, 0, 3, 270, 306, 34, 35, 229, 35, 34, 139, 205, 36, 37, 36, 205, 206, 293, 38, 290, 38, 293, 39, 267, 40, 313, 40, 267, 268, 227, 41, 263, 41, 227, 235, 305, 43, 220, 43, 305, 42, 226, 44, 225, 44, 226, 218, 45, 42, 309, 42, 45, 43, 7, 46, 395, 46, 7, 264, 0xFF, 47, 248, 47, 0xFF, 179, 267, 48, 49, 48, 267, 313, 394, 234, 50, 234, 394, 364, 51, 52, 173, 52, 51, 53, 206, 54, 36, 54, 206, 55, 17, 40, 268, 40, 17, 315, 165, 56, 61, 56, 165, 57, 259, 59, 162, 59, 259, 58, 163, 309, 258, 309, 163, 45, 9, 37, 8, 37, 9, 205, 6, 165, 61, 165, 6, 150, 305, 28, 300, 28, 305, 220, 48, 293, 49, 293, 48, 39, 35, 245, 229, 245, 35, 252, 304, 63, 297, 63, 304, 278, 54, 168, 31, 168, 54, 55, 222, 64, 310, 64, 222, 65, 66, 235, 194, 235, 66, 41, 51, 21, 53, 21, 51, 22, 145, 2, 316, 2, 145, 1, 67, 364, 84, 364, 67, 234, 250, 19, 18, 19, 250, 269, 68, 156, 159, 156, 68, 285, 27, 69, 251, 69, 27, 237, 289, 0x0100, 371, 0x0100, 289, 312, 70, 279, 71, 279, 70, 355, 73, 233, 231, 233, 73, 72, 152, 33, 62, 33, 152, 272, 181, 30, 74, 30, 181, 144, 25, 252, 24, 252, 25, 245, 299, 382, 76, 382, 299, 75, 44, 29, 225, 29, 44, 261, 77, 283, 236, 283, 77, 16, 78, 233, 72, 233, 78, 247, 316, 147, 145, 147, 316, 12, 14, 192, 79, 192, 14, 254, 181, 221, 60, 221, 181, 74, 231, 213, 73, 213, 231, 288, 78, 279, 247, 279, 78, 71, 162, 258, 259, 258, 162, 163, 292, 58, 215, 58, 292, 59, 289, 38, 312, 38, 289, 290, 192, 198, 79, 198, 192, 26, 56, 68, 159, 68, 56, 57, 348, 15, 204, 15, 348, 81, 284, 250, 276, 250, 284, 269, 142, 20, 242, 20, 142, 82, 278, 135, 63, 135, 278, 83, 156, 284, 276, 284, 156, 285, 194, 237, 66, 237, 194, 69, 84, 80, 67, 80, 84, 23, 64, 85, 129, 85, 64, 65, 32, 297, 303, 297, 32, 304, 52, 34, 173, 34, 52, 139, 77, 222, 310, 222, 77, 236, 241, 352, 11, 352, 241, 211, 86, 87, 322, 87, 86, 88, 91, 89, 110, 89, 91, 90, 384, 373, 99, 373, 384, 294, 93, 94, 97, 94, 93, 92, 370, 96, 291, 96, 370, 95, 97, 374, 395, 374, 97, 94, 98, 99, 117, 99, 98, 384, 88, 91, 372, 91, 88, 86, 101, 102, 116, 102, 101, 100, 103, 93, 377, 93, 103, 104, 86, 90, 91, 90, 86, 320, 105, 103, 365, 103, 105, 106, 102, 108, 115, 108, 102, 107, 335, 109, 347, 104, 106, 345, 106, 104, 103, 365, 377, 383, 377, 365, 103, 373, 110, 89, 110, 373, 298, 112, 111, 120, 111, 112, 311, 113, 114, 340, 114, 113, 95, 115, 116, 102, 116, 115, 368, 114, 117, 343, 117, 114, 98, 97, 377, 93, 377, 97, 396, 367, 111, 129, 111, 367, 118, 119, 120, 123, 120, 119, 112, 322, 87, 335, 122, 123, 120, 123, 122, 121, 368, 374, 116, 374, 368, 369, 379, 372, 137, 372, 379, 88, 100, 101, 124, 116, 94, 101, 94, 116, 374, 117, 125, 326, 125, 117, 99, 119, 105, 363, 105, 119, 126, 90, 125, 89, 125, 90, 325, 98, 95, 370, 95, 98, 114, 363, 365, 394, 365, 363, 105, 115, 127, 381, 127, 115, 108, 123, 121, 128, 95, 130, 96, 130, 95, 113, 92, 104, 133, 104, 92, 93, 340, 114, 343, 370, 384, 98, 384, 370, 371, 381, 368, 115, 368, 381, 375, 325, 90, 320, 122, 131, 318, 131, 122, 118, 99, 89, 125, 89, 99, 373, 131, 113, 317, 113, 131, 130, 120, 118, 122, 118, 120, 111, 381, 132, 76, 132, 381, 127, 101, 92, 124, 92, 101, 94, 117, 326, 343, 132, 379, 301, 379, 132, 134, 109, 108, 347, 108, 109, 127, 130, 118, 367, 118, 130, 131, 110, 372, 91, 372, 110, 135, 106, 126, 339, 126, 106, 105, 126, 128, 339, 340, 317, 113, 126, 123, 128, 123, 126, 119, 125, 325, 326, 347, 108, 107, 134, 127, 109, 127, 134, 132, 339, 345, 106, 133, 124, 92, 109, 87, 134, 87, 109, 335, 318, 121, 122, 345, 133, 104, 96, 367, 136, 367, 96, 130, 317, 318, 131, 100, 107, 102, 320, 86, 322, 88, 134, 87, 134, 88, 379, 112, 363, 274, 363, 112, 119, 35, 138, 202, 138, 35, 139, 141, 142, 242, 142, 141, 140, 29, 143, 287, 143, 29, 144, 145, 146, 217, 146, 145, 147, 149, 83, 278, 83, 149, 148, 359, 353, 150, 353, 359, 354, 152, 151, 243, 151, 152, 62, 80, 153, 154, 153, 80, 24, 155, 156, 276, 156, 155, 157, 56, 158, 281, 158, 56, 159, 160, 6, 61, 6, 160, 161, 163, 164, 207, 164, 163, 162, 165, 166, 57, 166, 165, 167, 151, 168, 55, 168, 151, 169, 38, 170, 253, 170, 38, 39, 52, 171, 199, 171, 52, 53, 51, 172, 195, 172, 51, 173, 396, 174, 378, 174, 396, 46, 175, 24, 252, 24, 175, 153, 177, 50, 234, 50, 177, 176, 178, 179, 0xFF, 179, 178, 180, 143, 181, 182, 181, 143, 144, 184, 183, 169, 183, 184, 22, 185, 0, 3, 0, 185, 186, 154, 67, 80, 67, 154, 187, 358, 348, 189, 348, 358, 188, 191, 192, 254, 192, 191, 190, 164, 37, 36, 37, 164, 193, 69, 175, 202, 175, 69, 194, 30, 196, 74, 196, 30, 197, 138, 198, 251, 198, 138, 199, 200, 6, 161, 6, 200, 201, 348, 203, 189, 203, 348, 204, 206, 141, 243, 141, 206, 205, 207, 45, 163, 45, 207, 208, 209, 17, 268, 17, 209, 210, 212, 211, 241, 211, 212, 190, 213, 214, 216, 214, 213, 215, 168, 183, 218, 183, 168, 169, 28, 219, 287, 219, 28, 220, 221, 196, 246, 196, 221, 74, 222, 223, 65, 223, 222, 224, 226, 219, 307, 219, 226, 225, 187, 227, 13, 227, 187, 154, 158, 40, 315, 40, 158, 157, 180, 32, 179, 32, 180, 228, 158, 156, 157, 156, 158, 159, 68, 166, 271, 166, 68, 57, 34, 196, 197, 196, 34, 229, 230, 231, 233, 231, 230, 232, 234, 187, 177, 187, 234, 67, 235, 154, 153, 154, 235, 227, 222, 209, 224, 209, 222, 236, 237, 238, 239, 238, 237, 27, 240, 7, 369, 7, 240, 60, 208, 54, 31, 54, 208, 207, 238, 241, 12, 241, 238, 212, 361, 230, 360, 230, 361, 362, 172, 30, 261, 30, 172, 197, 141, 152, 243, 152, 141, 242, 244, 245, 25, 245, 244, 246, 233, 360, 230, 360, 233, 247, 248, 249, 253, 249, 248, 47, 250, 170, 277, 170, 250, 18, 202, 251, 69, 251, 202, 138, 252, 202, 175, 202, 252, 35, 170, 248, 253, 248, 170, 18, 15, 191, 254, 191, 15, 393, 214, 0xFF, 19, 0xFF, 214, 178, 249, 0x0100, 312, 0x0100, 249, 0x0101, 259, 228, 180, 228, 259, 258, 3, 260, 185, 260, 3, 5, 193, 162, 59, 162, 193, 164, 386, 9, 385, 9, 386, 140, 26, 190, 212, 190, 26, 192, 41, 262, 186, 262, 41, 66, 263, 186, 185, 186, 263, 41, 382, 240, 375, 240, 382, 182, 73, 216, 266, 216, 73, 213, 221, 244, 264, 244, 221, 246, 172, 34, 197, 34, 172, 173, 265, 73, 266, 73, 265, 72, 209, 267, 224, 267, 209, 268, 85, 223, 296, 223, 85, 65, 19, 216, 214, 216, 19, 269, 200, 270, 1, 270, 200, 161, 223, 267, 49, 267, 223, 224, 33, 358, 189, 358, 33, 272, 176, 16, 77, 16, 176, 177, 70, 166, 167, 166, 70, 71, 10, 273, 308, 273, 10, 8, 274, 176, 366, 176, 274, 50, 2, 186, 262, 186, 2, 0, 203, 21, 282, 21, 203, 275, 155, 250, 277, 250, 155, 276, 165, 353, 167, 353, 165, 150, 177, 13, 16, 13, 177, 187, 279, 360, 247, 360, 279, 280, 160, 56, 281, 56, 160, 61, 153, 194, 235, 194, 153, 175, 378, 23, 84, 23, 378, 174, 382, 143, 182, 143, 382, 75, 283, 209, 236, 209, 283, 210, 178, 215, 58, 215, 178, 214, 284, 265, 266, 265, 284, 285, 217, 350, 356, 350, 217, 146, 390, 140, 386, 140, 390, 142, 353, 70, 167, 70, 353, 286, 273, 59, 292, 59, 273, 193, 288, 232, 308, 232, 288, 231, 183, 51, 195, 51, 183, 22, 155, 48, 313, 48, 155, 277, 171, 198, 199, 198, 171, 79, 376, 289, 291, 289, 376, 290, 196, 245, 246, 245, 196, 229, 166, 78, 271, 78, 166, 71, 232, 362, 388, 362, 232, 230, 68, 265, 285, 265, 68, 271, 160, 4, 306, 4, 160, 281, 203, 14, 275, 14, 203, 204, 293, 376, 296, 376, 293, 290, 0x0101, 294, 0x0100, 294, 0x0101, 295, 297, 298, 295, 298, 297, 63, 148, 137, 83, 137, 148, 380, 151, 184, 169, 184, 151, 62, 380, 299, 301, 299, 380, 300, 239, 12, 316, 12, 239, 238, 302, 185, 260, 185, 302, 263, 284, 216, 269, 216, 284, 266, 47, 0x0101, 249, 0x0101, 47, 303, 304, 228, 314, 228, 304, 32, 244, 46, 264, 46, 244, 174, 44, 172, 261, 172, 44, 195, 380, 305, 300, 305, 380, 148, 44, 183, 195, 183, 44, 218, 36, 207, 164, 207, 36, 54, 366, 77, 310, 77, 366, 176, 309, 149, 314, 149, 309, 42, 1, 217, 200, 217, 1, 145, 28, 143, 75, 143, 28, 287, 43, 208, 307, 208, 43, 45, 66, 239, 262, 239, 66, 237, 366, 64, 311, 64, 366, 310, 42, 148, 149, 148, 42, 305, 38, 249, 312, 249, 38, 253, 40, 155, 313, 155, 40, 157, 14, 171, 275, 171, 14, 79, 303, 295, 0x0101, 295, 303, 297, 270, 160, 306, 160, 270, 161, 240, 181, 60, 181, 240, 182, 383, 84, 364, 84, 383, 378, 314, 278, 304, 278, 314, 149, 8, 193, 273, 193, 8, 37, 85, 376, 136, 376, 85, 296, 212, 27, 26, 27, 212, 238, 258, 314, 228, 314, 258, 309, 43, 219, 220, 219, 43, 307, 48, 170, 39, 170, 48, 277, 206, 151, 55, 151, 206, 243, 140, 205, 9, 205, 140, 141, 388, 308, 232, 308, 388, 10, 219, 29, 287, 29, 219, 225, 147, 349, 146, 349, 147, 11, 4, 158, 315, 158, 4, 281, 283, 260, 210, 260, 283, 302, 262, 316, 2, 316, 262, 239, 78, 265, 271, 265, 78, 72, 308, 292, 288, 292, 308, 273, 200, 356, 201, 356, 200, 217, 223, 293, 296, 293, 223, 49, 208, 226, 307, 226, 208, 31, 260, 17, 210, 17, 260, 5, 33, 203, 282, 203, 33, 189, 20, 358, 272, 358, 20, 392, 190, 351, 211, 351, 190, 191, 21, 171, 53, 171, 21, 275, 52, 138, 139, 138, 52, 199, 58, 180, 178, 180, 58, 259, 174, 25, 23, 25, 174, 244, 317, 319, 318, 320, 322, 321, 323, 100, 324, 325, 327, 326, 328, 329, 121, 324, 124, 330, 331, 333, 332, 326, 327, 334, 335, 337, 336, 338, 332, 339, 340, 342, 341, 319, 328, 318, 331, 328, 319, 326, 334, 343, 340, 341, 317, 329, 128, 121, 331, 323, 324, 344, 323, 331, 331, 324, 330, 332, 345, 339, 330, 124, 133, 325, 320, 346, 331, 330, 333, 346, 321, 331, 336, 337, 331, 342, 331, 341, 347, 107, 344, 321, 336, 331, 333, 345, 332, 335, 347, 337, 322, 335, 336, 331, 338, 329, 341, 331, 319, 328, 121, 318, 337, 344, 331, 344, 107, 323, 330, 133, 333, 331, 332, 338, 334, 331, 342, 338, 339, 128, 331, 329, 328, 346, 331, 327, 333, 133, 345, 347, 344, 337, 327, 331, 334, 325, 346, 327, 324, 100, 124, 322, 336, 321, 343, 342, 340, 341, 319, 317, 343, 334, 342, 320, 321, 346, 107, 100, 323, 329, 338, 128, 391, 390, 386, 389, 391, 387, 82, 392, 20, 188, 81, 348, 146, 349, 350, 211, 351, 352, 81, 393, 15, 353, 354, 286, 355, 280, 279, 356, 350, 357, 392, 188, 358, 70, 286, 355, 357, 354, 359, 191, 393, 351, 280, 361, 360, 11, 352, 349, 361, 389, 362, 390, 82, 142, 363, 50, 274, 50, 363, 394, 364, 365, 383, 365, 364, 394, 366, 112, 274, 112, 366, 311, 299, 132, 301, 132, 299, 76, 85, 367, 129, 367, 85, 136, 240, 368, 375, 368, 240, 369, 289, 370, 291, 370, 289, 371, 372, 83, 137, 83, 372, 135, 97, 46, 396, 46, 97, 395, 295, 373, 294, 373, 295, 298, 374, 7, 395, 7, 374, 369, 376, 96, 136, 96, 376, 291, 377, 378, 383, 378, 377, 396, 379, 380, 301, 380, 379, 137, 381, 382, 375, 382, 381, 76, 63, 110, 298, 110, 63, 135, 111, 64, 129, 64, 111, 311, 0x0100, 384, 371, 384, 0x0100, 294, 391, 385, 387, 385, 391, 386, 388, 385, 10, 385, 388, 387, 389, 388, 362, 388, 389, 387, 397, 402, 398, 402, 397, 401, 398, 403, 399, 403, 398, 402, 399, 404, 400, 404, 399, 403, 400, 401, 397, 401, 400, 404, 401, 406, 402, 406, 401, 405, 402, 407, 403, 407, 402, 406, 403, 408, 404, 408, 403, 407, 404, 405, 401, 405, 404, 408, 405, 410, 406, 410, 405, 409, 406, 411, 407, 411, 406, 410, 407, 412, 408, 412, 407, 411, 408, 409, 405, 409, 408, 412, 409, 414, 410, 414, 409, 413, 410, 415, 411, 415, 410, 414, 411, 416, 412, 416, 411, 415, 412, 413, 409, 413, 412, 416, 413, 418, 414, 418, 413, 417, 414, 419, 415, 419, 414, 418, 415, 420, 416, 420, 415, 419, 416, 417, 413, 417, 416, 420, 417, 422, 418, 422, 417, 421, 418, 423, 419, 423, 418, 422, 419, 424, 420, 424, 419, 423, 420, 421, 417, 421, 420, 424, 421, 426, 422, 426, 421, 425, 422, 427, 423, 427, 422, 426, 423, 428, 424, 428, 423, 427, 424, 425, 421, 425, 424, 428, 425, 430, 426, 430, 425, 429, 426, 431, 427, 431, 426, 430, 427, 432, 428, 432, 427, 431, 428, 429, 425, 429, 428, 432, 429, 434, 430, 434, 429, 433, 430, 435, 431, 435, 430, 434, 431, 436, 432, 436, 431, 435, 432, 433, 429, 433, 432, 436, 433, 438, 434, 438, 433, 437, 434, 439, 435, 439, 434, 438, 435, 440, 436, 440, 435, 439, 436, 437, 433, 437, 436, 440, 437, 442, 438, 442, 437, 441, 438, 443, 439, 443, 438, 442, 439, 444, 440, 444, 439, 443, 440, 441, 437, 441, 440, 444, 441, 446, 442, 446, 441, 445, 442, 447, 443, 447, 442, 446, 443, 448, 444, 448, 443, 447, 444, 445, 441, 445, 444, 448, 445, 450, 446, 450, 445, 449, 446, 451, 447, 451, 446, 450, 447, 452, 448, 452, 447, 451, 448, 449, 445, 449, 448, 452, 449, 454, 450, 454, 449, 453, 450, 455, 451, 455, 450, 454, 451, 456, 452, 456, 451, 455, 452, 453, 449, 453, 452, 456, 453, 458, 454, 458, 453, 457, 454, 459, 455, 459, 454, 458, 455, 460, 456, 460, 455, 459, 456, 457, 453, 457, 456, 460, 457, 462, 458, 462, 457, 461, 458, 463, 459, 463, 458, 462, 459, 464, 460, 464, 459, 463, 460, 461, 457, 461, 460, 464, 461, 466, 462, 466, 461, 465, 462, 467, 463, 467, 462, 466, 463, 468, 464, 468, 463, 467, 464, 465, 461, 465, 464, 468, 465, 470, 466, 470, 465, 469, 466, 471, 467, 471, 466, 470, 467, 472, 468, 472, 467, 471, 468, 469, 465, 469, 468, 472, 469, 474, 470, 474, 469, 473, 470, 475, 471, 475, 470, 474, 471, 476, 472, 476, 471, 475, 472, 473, 469, 473, 472, 476, 473, 398, 474, 398, 473, 397, 474, 399, 475, 399, 474, 398, 475, 400, 476, 400, 475, 399, 476, 397, 473, 397, 476, 400, 477, 482, 478, 482, 477, 481, 478, 483, 479, 483, 478, 482, 479, 484, 480, 484, 479, 483, 480, 481, 477, 481, 480, 484, 481, 486, 482, 486, 481, 485, 482, 487, 483, 487, 482, 486, 483, 488, 484, 488, 483, 487, 484, 485, 481, 485, 484, 488, 485, 490, 486, 490, 485, 489, 486, 491, 487, 491, 486, 490, 487, 492, 488, 492, 487, 491, 488, 489, 485, 489, 488, 492, 489, 494, 490, 494, 489, 493, 490, 495, 491, 495, 490, 494, 491, 496, 492, 496, 491, 495, 492, 493, 489, 493, 492, 496, 493, 498, 494, 498, 493, 497, 494, 499, 495, 499, 494, 498, 495, 500, 496, 500, 495, 499, 496, 497, 493, 497, 496, 500, 497, 502, 498, 502, 497, 501, 498, 503, 499, 503, 498, 502, 499, 504, 500, 504, 499, 503, 500, 501, 497, 501, 500, 504, 501, 506, 502, 506, 501, 505, 502, 507, 503, 507, 502, 506, 503, 508, 504, 508, 503, 507, 504, 505, 501, 505, 504, 508, 505, 510, 506, 510, 505, 509, 506, 511, 507, 511, 506, 510, 507, 0x0200, 508, 0x0200, 507, 511, 508, 509, 505, 509, 508, 0x0200, 509, 0x0202, 510, 0x0202, 509, 513, 510, 515, 511, 515, 510, 0x0202, 511, 516, 0x0200, 516, 511, 515, 0x0200, 513, 509, 513, 0x0200, 516, 513, 518, 0x0202, 518, 513, 517, 0x0202, 519, 515, 519, 0x0202, 518, 515, 520, 516, 520, 515, 519, 516, 517, 513, 517, 516, 520, 517, 522, 518, 522, 517, 521, 518, 523, 519, 523, 518, 522, 519, 524, 520, 524, 519, 523, 520, 521, 517, 521, 520, 524, 521, 526, 522, 526, 521, 525, 522, 527, 523, 527, 522, 526, 523, 528, 524, 528, 523, 527, 524, 525, 521, 525, 524, 528, 525, 530, 526, 530, 525, 529, 526, 531, 527, 531, 526, 530, 527, 532, 528, 532, 527, 531, 528, 529, 525, 529, 528, 532, 529, 534, 530, 534, 529, 533, 530, 535, 531, 535, 530, 534, 531, 536, 532, 536, 531, 535, 532, 533, 529, 533, 532, 536, 533, 538, 534, 538, 533, 537, 534, 539, 535, 539, 534, 538, 535, 540, 536, 540, 535, 539, 536, 537, 533, 537, 536, 540, 537, 542, 538, 542, 537, 541, 538, 543, 539, 543, 538, 542, 539, 544, 540, 544, 539, 543, 540, 541, 537, 541, 540, 544, 541, 546, 542, 546, 541, 545, 542, 547, 543, 547, 542, 546, 543, 548, 544, 548, 543, 547, 544, 545, 541, 545, 544, 548, 545, 550, 546, 550, 545, 549, 546, 551, 547, 551, 546, 550, 547, 552, 548, 552, 547, 551, 548, 549, 545, 549, 548, 552, 549, 554, 550, 554, 549, 553, 550, 555, 551, 555, 550, 554, 551, 556, 552, 556, 551, 555, 552, 553, 549, 553, 552, 556, 553, 478, 554, 478, 553, 477, 554, 479, 555, 479, 554, 478, 555, 480, 556, 480, 555, 479, 556, 477, 553, 477, 556, 480]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/TowerBridge.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/TowerBridge.as new file mode 100644 index 0000000..6397528 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/TowerBridge.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class TowerBridge extends Stage3DData { + + public function TowerBridge(){ + vertices = new [-82.3259, -93.2124, -124.676, -85.5028, -93.2124, -128.122, -90.1863, -93.2124, -128.313, -93.6329, -93.2124, -125.136, -93.8237, -93.2124, -120.453, -90.6469, -93.2124, -117.006, -85.9633, -93.2124, -116.815, -82.5167, -93.2124, -119.992, -82.3259, 29.2706, -124.676, -85.5028, 29.2706, -128.122, -90.1863, 29.2706, -128.313, -93.6329, 29.2706, -125.136, -93.8237, 29.2706, -120.453, -90.6469, 29.2706, -117.006, -85.9633, 29.2706, -116.815, -82.5167, 29.2706, -119.992, -79.4893, 44.8061, -125.717, -84.2337, 44.8061, -130.865, -91.2282, 44.8061, -131.15, -96.3755, 44.8061, -126.405, -96.6604, 44.8061, -119.411, -91.916, 44.8061, -114.263, -84.9215, 44.8061, -113.979, -79.7742, 44.8061, -118.723, -79.4893, 118.101, -125.717, -84.2337, 118.101, -130.865, -91.2282, 118.101, -131.15, -96.3755, 118.101, -126.405, -96.6604, 118.101, -119.411, -91.916, 118.101, -114.263, -84.9215, 118.101, -113.979, -79.7742, 118.101, -118.723, -88.0748, 148.288, -122.564, -370.111, -147.494, -1100.71, -148.992, -147.495, -516.228, -222.905, -147.495, -489.081, -438.341, -147.494, -1075.65, -370.111, -131.282, -1100.71, -148.992, -93.2122, -516.228, -222.905, -93.2122, -489.081, -438.341, -131.282, -1075.65, -195.458, -93.2119, -639.051, -268.177, -93.2119, -612.343, 353.94, -136.472, 1411.68, 275.519, -136.472, 1418.77, 209.441, -136.472, 688.093, 142.809, -136.471, 506.675, 216.721, -136.471, 479.529, 286.927, -136.472, 670.677, 353.94, -121.742, 1411.68, 275.519, -121.742, 1418.77, 209.441, -93.2128, 688.093, 142.809, -93.2126, 506.676, 216.721, -93.2126, 479.529, 286.927, -93.2128, 670.677, -177.78, -83.3713, -367.402, -177.699, -79.2838, -367.186, -189.616, -68.4185, -399.141, -201.097, -54.7722, -429.926, -212.226, -38.4544, -459.772, -212.216, -42.6057, -459.741, -201.93, -65.5889, -432.161, -190.582, -79.0636, -401.73, -104.01, -83.3713, -394.497, -103.929, -79.2838, -394.28, -115.846, -68.4185, -426.235, -127.327, -54.7722, -457.021, -138.456, -38.4544, -486.867, -138.446, -42.6057, -486.836, -128.161, -65.589, -459.255, -116.812, -79.0636, -428.825, -31.3899, 52.9842, -196.783, -45.403, 12.2156, -234.927, -61.5658, -26.2771, -278.923, -81.038, -59.2214, -331.927, -92.2658, -72.9694, -362.49, -98.872, -79.1049, -380.472, -98.8851, -83.4542, -380.508, -93.0276, -83.8666, -364.563, -80.2966, -78.1776, -329.909, -57.1368, -36.8039, -266.867, -42.5774, 6.89095, -227.235, -31.3899, 49.1311, -196.783, -68.5153, -39.6784, -297.838, -66.1928, -57.9144, -291.516, -105.772, 52.9842, -169.464, -119.785, 12.2156, -207.608, -135.948, -26.2771, -251.604, -155.42, -59.2214, -304.608, -166.648, -72.9694, -335.17, -173.254, -79.1049, -353.153, -173.267, -83.4542, -353.188, -167.409, -83.8666, -337.244, -154.678, -78.1775, -302.59, -131.519, -36.8039, -239.548, -116.959, 6.89095, -199.916, -105.772, 49.1311, -169.464, -142.897, -39.6784, -270.519, -140.575, -57.9144, -264.197, 171.677, -83.3713, 358.068, 171.596, -79.2838, 357.851, 183.513, -68.4185, 389.806, 194.994, -54.7722, 420.592, 206.123, -38.4544, 450.437, 206.113, -42.6057, 450.406, 195.827, -65.589, 422.826, 184.479, -79.0636, 392.396, 97.9069, -83.3713, 385.162, 97.8261, -79.2838, 384.946, 109.743, -68.4185, 416.901, 121.224, -54.7722, 447.686, 132.353, -38.4544, 477.532, 132.343, -42.6057, 477.501, 122.057, -65.589, 449.92, 110.709, -79.0636, 419.49, 25.2867, 52.9842, 187.448, 39.2998, 12.2156, 225.592, 55.4625, -26.2771, 269.588, 74.9347, -59.2214, 322.592, 86.1624, -72.9694, 353.155, 92.7687, -79.1049, 371.137, 92.7817, -83.4542, 371.173, 86.9242, -83.8666, 355.228, 74.1933, -78.1775, 320.574, 51.0335, -36.8039, 257.532, 36.4741, 6.89095, 217.901, 25.2867, 49.1311, 187.448, 62.412, -39.6784, 288.503, 60.0894, -57.9144, 282.181, 99.6685, 52.9842, 160.129, 113.681, 12.2156, 198.273, 129.844, -26.2771, 242.269, 149.316, -59.2214, 295.273, 160.544, -72.9694, 325.836, 167.15, -79.1049, 343.818, 167.163, -83.4542, 343.854, 161.306, -83.8666, 327.909, 148.575, -78.1775, 293.255, 125.415, -36.8039, 230.213, 110.856, 6.89096, 190.581, 99.6685, 49.1311, 160.129, 136.794, -39.6784, 261.184, 134.471, -57.9144, 254.862, -227.307, -93.2131, -470.964, -227.129, -93.2149, -475.355, -223.898, -93.2152, -478.334, -219.506, -93.2138, -478.156, -216.527, -93.2116, -474.925, -216.706, -93.2099, -470.534, -219.937, -93.2096, -467.554, -224.328, -93.211, -467.733, -227.328, -20.6904, -470.994, -227.15, -20.6921, -475.385, -223.919, -20.6924, -478.364, -219.527, -20.6911, -478.186, -216.548, -20.6889, -474.955, -216.727, -20.6871, -470.563, -219.958, -20.6869, -467.584, -224.349, -20.6882, -467.763, -143.481, -93.2132, -501.752, -143.302, -93.2149, -506.144, -140.071, -93.2152, -509.123, -135.68, -93.2139, -508.944, -132.701, -93.2117, -505.713, -132.879, -93.2099, -501.322, -136.11, -93.2096, -498.343, -140.502, -93.211, -498.521, -143.502, -20.6904, -501.782, -143.323, -20.6922, -506.173, -140.092, -20.6925, -509.152, -135.701, -20.6911, -508.974, -132.722, -20.6889, -505.743, -132.9, -20.6872, -501.352, -136.131, -20.6869, -498.372, -140.523, -20.6882, -498.551, 142.039, -93.2116, 505.092, 141.861, -93.2171, 509.483, 138.63, -93.2198, 512.462, 134.238, -93.2181, 512.284, 131.259, -93.2131, 509.053, 131.437, -93.2076, 504.661, 134.669, -93.2049, 501.682, 139.06, -93.2065, 501.86, 142.063, -20.6889, 505.183, 141.884, -20.6944, 509.575, 138.653, -20.6971, 512.554, 134.262, -20.6954, 512.375, 131.283, -20.6904, 509.144, 131.461, -20.6849, 504.753, 134.692, -20.6822, 501.774, 139.084, -20.6838, 501.952, -97.9764, -93.2124, -167.287, -101.153, -93.2124, -170.733, -105.837, -93.2124, -170.924, -109.283, -93.2124, -167.747, -109.474, -93.2124, -163.064, -106.297, -93.2124, -159.617, -101.614, -93.2124, -159.426, -98.1672, -93.2124, -162.603, -97.9764, 29.2706, -167.287, -101.153, 29.2706, -170.733, -105.837, 29.2706, -170.924, -109.283, 29.2706, -167.747, -109.474, 29.2706, -163.064, -106.297, 29.2706, -159.617, -101.614, 29.2706, -159.426, -98.1672, 29.2706, -162.603, -95.1397, 44.8061, -168.329, -99.8841, 44.8061, -173.476, -106.879, 44.8061, -173.761, -112.026, 44.8061, -169.016, -112.311, 44.8061, -162.022, -107.566, 44.8061, -156.875, -100.572, 44.8061, -156.59, -95.4246, 44.8061, -161.334, -95.1397, 118.101, -168.329, -99.8841, 118.101, -173.476, -106.879, 118.101, -173.761, -112.026, 118.101, -169.016, -112.311, 118.101, -162.022, -107.566, 118.101, -156.875, -100.572, 118.101, -156.59, -95.4247, 118.101, -161.334, -103.725, 148.288, -165.175, -23.793, -93.2124, -194.533, -26.9699, -93.2124, -197.98, -31.6534, -93.2124, -198.171, -35.1001, -93.2124, -194.994, -35.2908, -93.2124, -190.31, -32.114, -93.2124, -186.864, -27.4305, -93.2124, -186.673, -23.9838, -93.2124, -189.85, -23.793, 29.2706, -194.533, -26.9699, 29.2706, -197.98, -31.6534, 29.2706, -198.171, -35.1001, 29.2706, -194.994, -35.2908, 29.2706, -190.31, -32.114, 29.2706, -186.864, -27.4305, 29.2706, -186.673, -23.9838, 29.2706, -189.85, -20.9564, 44.8061, -195.575, -25.7008, 44.8061, -200.722, -32.6953, 44.8061, -201.007, -37.8426, 44.8061, -196.263, -38.1275, 44.8061, -189.268, -33.3831, 44.8061, -184.121, -26.3886, 44.8061, -183.836, -21.2413, 44.8061, -188.581, -20.9564, 118.101, -195.575, -25.7008, 118.101, -200.722, -32.6953, 118.101, -201.007, -37.8426, 118.101, -196.263, -38.1275, 118.101, -189.268, -33.3831, 118.101, -184.121, -26.3886, 118.101, -183.836, -21.2413, 118.101, -188.581, -29.542, 148.288, -192.422, -8.14259, -93.2124, -151.922, -11.3194, -93.2124, -155.369, -16.003, -93.2124, -155.559, -19.4496, -93.2124, -152.382, -19.6404, -93.2124, -147.699, -16.4635, -93.2124, -144.252, -11.78, -93.2124, -144.062, -8.33336, -93.2124, -147.238, -8.1426, 29.2706, -151.922, -11.3194, 29.2706, -155.369, -16.003, 29.2706, -155.559, -19.4496, 29.2706, -152.382, -19.6404, 29.2706, -147.699, -16.4635, 29.2706, -144.252, -11.78, 29.2706, -144.062, -8.33337, 29.2706, -147.238, -5.30595, 44.8061, -152.964, -10.0503, 44.8061, -158.111, -17.0448, 44.8061, -158.396, -22.1921, 44.8061, -153.652, -22.477, 44.8061, -146.657, -17.7327, 44.8061, -141.51, -10.7382, 44.8061, -141.225, -5.59085, 44.8061, -145.969, -5.30595, 118.101, -152.964, -10.0503, 118.101, -158.111, -17.0448, 118.101, -158.396, -22.1921, 118.101, -153.652, -22.4771, 118.101, -146.657, -17.7327, 118.101, -141.51, -10.7382, 118.101, -141.225, -5.59086, 118.101, -145.969, -13.8915, 148.288, -149.81, 13.2061, -93.2124, 135.428, 13.0154, -93.2124, 140.112, 9.56871, -93.2124, 143.289, 4.88519, -93.2124, 143.098, 1.70833, -93.2124, 139.651, 1.89911, -93.2124, 134.968, 5.34576, -93.2124, 131.791, 10.0293, -93.2124, 131.982, 13.2061, 29.2706, 135.429, 13.0153, 29.2706, 140.112, 9.56866, 29.2706, 143.289, 4.88514, 29.2706, 143.098, 1.70827, 29.2706, 139.651, 1.89906, 29.2706, 134.968, 5.3457, 29.2706, 131.791, 10.0292, 29.2706, 131.982, 16.0427, 44.8061, 134.387, 15.7578, 44.8061, 141.381, 10.6105, 44.8061, 146.126, 3.61603, 44.8061, 145.841, -1.12838, 44.8061, 140.693, -0.843475, 44.8061, 133.699, 4.30383, 44.8061, 128.954, 11.2983, 44.8061, 129.239, 16.0427, 118.101, 134.387, 15.7578, 118.101, 141.381, 10.6105, 118.101, 146.126, 3.61599, 118.101, 145.841, -1.12841, 118.101, 140.693, -0.843506, 118.101, 133.699, 4.30379, 118.101, 128.954, 11.2983, 118.101, 129.239, 7.45712, 148.288, 137.54, 28.8566, -93.2125, 178.04, 28.6658, -93.2125, 182.723, 25.2192, -93.2125, 185.9, 20.5357, -93.2125, 185.709, 17.3588, -93.2125, 182.263, 17.5496, -93.2125, 177.579, 20.9962, -93.2125, 174.402, 25.6797, -93.2125, 174.593, 28.8565, 29.2706, 178.04, 28.6658, 29.2706, 182.723, 25.2191, 29.2706, 185.9, 20.5356, 29.2706, 185.709, 17.3587, 29.2706, 182.263, 17.5495, 29.2706, 177.579, 20.9962, 29.2706, 174.402, 25.6797, 29.2706, 174.593, 31.6932, 44.8061, 176.998, 31.4083, 44.8061, 183.992, 26.261, 44.8061, 188.737, 19.2665, 44.8061, 188.452, 14.5221, 44.8061, 183.305, 14.807, 44.8061, 176.31, 19.9543, 44.8061, 171.566, 26.9488, 44.8061, 171.851, 31.6931, 118.101, 176.998, 31.4082, 118.101, 183.992, 26.2609, 118.101, 188.737, 19.2664, 118.101, 188.452, 14.522, 118.101, 183.305, 14.8069, 118.101, 176.31, 19.9543, 118.101, 171.566, 26.9487, 118.101, 171.851, 23.1076, 148.288, 180.151, 103.04, -93.2124, 150.793, 102.849, -93.2124, 155.477, 99.4025, -93.2124, 158.654, 94.719, -93.2124, 158.463, 91.5421, -93.2124, 155.016, 91.7329, -93.2124, 150.333, 95.1796, -93.2124, 147.156, 99.8631, -93.2124, 147.347, 103.04, 29.2706, 150.793, 102.849, 29.2706, 155.477, 99.4024, 29.2706, 158.654, 94.7189, 29.2706, 158.463, 91.5421, 29.2706, 155.016, 91.7328, 29.2706, 150.333, 95.1795, 29.2706, 147.156, 99.863, 29.2706, 147.347, 105.877, 44.8061, 149.752, 105.592, 44.8061, 156.746, 100.444, 44.8061, 161.49, 93.4498, 44.8061, 161.206, 88.7054, 44.8061, 156.058, 88.9903, 44.8061, 149.064, 94.1376, 44.8061, 144.319, 101.132, 44.8061, 144.604, 105.876, 118.101, 149.752, 105.592, 118.101, 156.746, 100.444, 118.101, 161.49, 93.4498, 118.101, 161.206, 88.7054, 118.101, 156.058, 88.9903, 118.101, 149.064, 94.1376, 118.101, 144.319, 101.132, 118.101, 144.604, 97.2909, 148.288, 152.905, 87.3895, -93.2124, 108.182, 87.1987, -93.2124, 112.866, 83.7521, -93.2124, 116.043, 79.0685, -93.2124, 115.852, 75.8917, -93.2124, 112.405, 76.0825, -93.2124, 107.722, 79.5291, -93.2124, 104.545, 84.2126, -93.2124, 104.736, 87.3894, 29.2706, 108.182, 87.1987, 29.2706, 112.866, 83.752, 29.2706, 116.043, 79.0685, 29.2706, 115.852, 75.8916, 29.2706, 112.405, 76.0824, 29.2706, 107.722, 79.5291, 29.2706, 104.545, 84.2126, 29.2706, 104.736, 90.2261, 44.8061, 107.14, 89.9412, 44.8061, 114.135, 84.7939, 44.8061, 118.879, 77.7994, 44.8061, 118.594, 73.055, 44.8061, 113.447, 73.3399, 44.8061, 106.452, 78.4872, 44.8061, 101.708, 85.4817, 44.8061, 101.993, 90.226, 118.101, 107.14, 89.9411, 118.101, 114.135, 84.7938, 118.101, 118.879, 77.7993, 118.101, 118.594, 73.0549, 118.101, 113.447, 73.3398, 118.101, 106.452, 78.4872, 118.101, 101.708, 85.4816, 118.101, 101.993, 81.6405, 148.288, 110.294, -135.733, -93.2124, -487.734, -146.45, -93.2124, -516.915, -224.246, -93.2124, -488.341, -213.528, -93.2124, -459.161, -213.528, -28.9891, -459.161, -135.733, -28.9891, -487.734, -224.246, -28.9891, -488.341, -146.45, -28.9891, -516.915, -205.349, 2.16744, -478.724, -154.629, 2.16745, -497.352, -166.344, -48.0319, -476.491, -177.061, -48.0319, -505.672, -146.311, -65.6872, -483.849, -157.028, -65.6872, -513.029, -182.917, -48.0319, -470.404, -193.635, -48.0319, -499.584, -202.951, -65.6872, -463.046, -213.668, -65.6873, -492.227, -213.668, -93.2124, -492.226, -202.951, -93.2124, -463.046, -146.311, -93.2124, -483.849, -157.028, -93.2124, -513.029, -204.514, -93.2124, -488.669, -198.275, -93.2124, -471.684, -197.949, -69.3172, -471.803, -182.446, -56.0534, -477.497, -171.294, -56.0534, -481.593, -155.791, -69.3172, -487.287, -155.485, -93.2124, -487.4, -161.723, -93.2124, -504.385, -162.03, -69.3172, -504.272, -177.533, -56.0534, -498.578, -188.684, -56.0534, -494.483, -204.187, -69.3172, -488.789, -172.047, -91.9159, -353.158, -172.97, -91.9159, -352.819, -177.203, -91.9159, -367.198, -178.127, -91.9159, -366.859, -172.047, -79.1049, -353.158, -172.97, -79.1049, -352.819, -177.203, -79.1049, -367.198, -178.127, -79.1049, -366.859, -98.9587, -91.9159, -380.002, -99.8819, -91.9159, -379.663, -104.115, -91.9159, -394.042, -105.039, -91.9159, -393.703, -98.9587, -79.1049, -380.002, -99.8819, -79.1049, -379.663, -104.115, -79.1049, -394.042, -105.039, -79.1049, -393.703, -181.739, -93.2125, -605.388, -184.607, -93.2125, -604.335, -183.517, -93.2125, -610.229, -186.385, -93.2125, -609.176, -181.739, -82.777, -605.388, -184.607, -82.777, -604.335, -183.517, -85.5128, -610.229, -186.385, -85.5128, -609.176, -184.607, -89.1988, -604.335, -181.739, -89.1988, -605.388, -151.847, -37.9977, -515.142, -148.98, -37.9977, -516.195, -148.98, -44.4195, -516.195, -151.847, -44.4195, -515.142, -252.785, -93.2124, -579.294, -255.652, -93.2124, -578.241, -254.563, -93.2124, -584.135, -257.43, -93.2124, -583.082, -252.785, -82.7769, -579.294, -255.652, -82.7769, -578.241, -254.563, -85.5128, -584.135, -257.43, -85.5128, -583.082, -255.652, -89.1987, -578.241, -252.785, -89.1987, -579.294, -222.893, -37.9976, -489.048, -220.025, -37.9976, -490.101, -220.025, -44.4194, -490.101, -222.893, -44.4194, -489.048, -34.9959, -101.108, -206.52, -113.527, -101.108, -177.677, -137.979, -101.108, -486.91, -216.51, -101.108, -458.066, -34.9959, -93.2124, -206.52, -113.527, -93.2124, -177.677, -137.979, -93.2124, -486.91, -216.51, -93.2124, -458.066, 122.526, -93.2124, 481.008, 133.244, -93.2124, 510.189, 225.077, -93.2124, 476.46, 214.36, -93.2124, 447.279, 214.36, -28.9891, 447.279, 122.526, -28.9892, 481.008, 225.077, -28.9891, 476.46, 133.244, -28.9892, 510.189, 206.181, 2.16747, 466.842, 141.423, 2.16743, 490.626, 153.137, -48.0319, 469.765, 163.855, -48.0319, 498.946, 133.104, -65.6873, 477.123, 143.821, -65.6873, 506.304, 183.749, -48.0319, 458.522, 194.466, -48.0319, 487.703, 203.782, -65.6872, 451.164, 214.499, -65.6872, 480.345, 214.499, -93.2124, 480.345, 203.782, -93.2124, 451.164, 133.104, -93.2124, 477.123, 143.821, -93.2124, 506.304, 205.345, -93.2124, 476.787, 199.107, -93.2124, 459.802, 198.78, -69.3172, 459.922, 183.277, -56.0534, 465.616, 158.088, -56.0534, 474.867, 142.585, -69.3172, 480.561, 142.278, -93.2124, 480.674, 148.517, -93.2124, 497.659, 148.823, -69.3172, 497.547, 164.326, -56.0534, 491.853, 189.516, -56.0534, 482.601, 205.019, -69.3172, 476.907, 165.943, -91.9159, 343.823, 166.867, -91.9159, 343.484, 171.1, -91.9159, 357.863, 172.023, -91.9159, 357.524, 165.943, -79.1049, 343.823, 166.867, -79.1049, 343.484, 171.1, -79.1049, 357.863, 172.023, -79.1049, 357.524, 92.8553, -91.9159, 370.667, 93.7786, -91.9159, 370.328, 98.012, -91.9159, 384.707, 98.9352, -91.9159, 384.368, 92.8553, -79.1049, 370.667, 93.7786, -79.1049, 370.328, 98.012, -79.1049, 384.707, 98.9352, -79.1049, 384.368, -15.0189, -93.2124, -147.083, -32.2353, -93.2124, -193.958, -32.2353, 95.3034, -193.958, -15.0189, 95.3034, -147.083, -102.504, -93.2124, -168.149, -85.2874, -93.2124, -121.274, -85.2874, 95.3034, -121.274, -102.504, 95.3034, -168.149, -49.7995, 162.121, -160.908, -67.7233, 162.121, -154.324, -46.9542, -93.2124, -188.552, -29.7378, -93.2124, -141.677, -71.1417, -93.2124, -126.47, -88.3581, -93.2124, -173.345, -88.3581, -65.3039, -173.345, -71.1417, -65.3039, -126.47, -80.1734, -51.445, -176.351, -62.957, -51.445, -129.476, -55.1389, -51.445, -185.546, -37.9224, -51.445, -138.671, -46.9542, -65.3039, -188.552, -29.7378, -65.3039, -141.677, -57.2087, 137.461, -148.369, -63.5627, 137.461, -165.669, -66.2447, 117.024, -136.915, -77.8645, 117.024, -168.552, -42.9069, 117.024, -145.487, -54.5267, 117.024, -177.124, -63.4464, 95.3034, -129.296, -40.1086, 95.3034, -137.868, -57.325, 95.3034, -184.743, -80.6628, 95.3034, -176.171, -63.4464, 117.024, -129.296, -51.7775, 137.461, -133.582, -40.1086, 117.024, -137.868, -80.6628, 117.024, -176.171, -68.9939, 137.461, -180.457, -57.325, 117.024, -184.743, -40.1401, 137.461, -164.455, -77.3827, 137.461, -150.777, -36.4209, 117.024, -179.064, -89.6735, 117.024, -159.506, -27.8493, 117.024, -155.727, -81.1019, 117.024, -136.168, -98.1814, 95.3034, -156.381, -89.6099, 95.3034, -133.043, -19.3413, 95.3034, -158.851, -27.9129, 95.3034, -182.189, -27.9129, 117.024, -182.189, -23.6271, 137.461, -170.52, -19.3413, 117.024, -158.851, -89.6099, 117.024, -133.043, -93.8957, 137.461, -144.712, -98.1815, 117.024, -156.381, 79.0157, -93.2124, 108.944, 96.2322, -93.2124, 155.819, 96.2321, 95.3034, 155.819, 79.0156, 95.3034, 108.944, 25.9637, -93.2124, 181.628, 8.74721, -93.2124, 134.753, 8.74712, 95.3034, 134.753, 25.9636, 95.3034, 181.628, 61.4514, 162.121, 141.994, 43.5277, 162.121, 148.578, 81.5133, -93.2124, 161.225, 64.2969, -93.2124, 114.35, 22.893, -93.2124, 129.557, 40.1094, -93.2124, 176.432, 40.1094, -65.3039, 176.432, 22.8929, -65.3039, 129.557, 48.2941, -51.445, 173.426, 31.0776, -51.445, 126.551, 73.3286, -51.445, 164.231, 56.1122, -51.445, 117.356, 81.5133, -65.3039, 161.225, 64.2969, -65.3039, 114.35, 47.6883, 137.461, 137.232, 54.0423, 137.461, 154.533, 33.3865, 117.024, 134.35, 45.0063, 117.024, 165.987, 56.7243, 117.024, 125.778, 68.3441, 117.024, 157.415, 30.5882, 95.3034, 126.731, 53.926, 95.3034, 118.159, 71.1424, 95.3034, 165.034, 47.8046, 95.3034, 173.606, 30.5882, 117.024, 126.731, 42.2571, 137.461, 122.445, 53.926, 117.024, 118.159, 47.8046, 117.024, 173.606, 59.4735, 137.461, 169.32, 71.1424, 117.024, 165.034, 71.1109, 137.461, 138.447, 33.8683, 137.461, 152.125, 83.4017, 117.024, 147.175, 30.1491, 117.024, 166.734, 74.8301, 117.024, 123.838, 21.5775, 117.024, 143.397, 21.6412, 95.3034, 169.859, 13.0696, 95.3034, 146.521, 83.3381, 95.3034, 120.713, 91.9097, 95.3034, 144.051, 91.9097, 117.024, 144.051, 87.6238, 137.461, 132.382, 83.3381, 117.024, 120.713, 13.0695, 117.024, 146.521, 17.3553, 137.461, 158.19, 21.6411, 117.024, 169.859, -113.754, -157.219, -177.593, -35.2226, -157.219, -206.437, -87.3352, -157.219, -105.663, -8.80374, -157.219, -134.506, -113.754, -93.2124, -177.593, -35.2226, -93.2124, -206.437, -87.3352, -93.2124, -105.663, -8.80378, -93.2124, -134.506, 24.3865, -157.219, -209.929, 38.8948, -157.219, -170.427, 11.6382, -93.2124, -148.896, -10.3267, -93.2124, -208.699, -142.325, -157.219, -103.868, -156.833, -157.219, -143.369, -134.196, -93.2125, -163.204, -112.231, -93.2125, -103.4, 44.9849, -157.219, -195.079, 17.312, -93.2124, -174.681, 10.6882, -93.2124, -192.716, -162.924, -157.219, -118.717, -139.87, -93.2125, -137.418, -133.246, -93.2125, -119.384, -35.2226, -149.401, -206.437, -113.754, -149.401, -177.593, -8.80374, -149.401, -134.506, -87.3352, -149.401, -105.663, 11.6382, -143.356, -148.896, -10.3267, -143.356, -208.699, -134.196, -143.356, -163.204, -112.231, -143.356, -103.4, 17.312, -121.31, -174.681, 10.6882, -121.31, -192.716, -139.87, -121.31, -137.418, -133.246, -121.31, -119.384, -4.23771, -157.219, -217.817, 22.1811, -157.219, -145.887, 22.1811, -149.401, -145.887, 38.8948, -149.44, -170.427, 44.9849, -149.44, -195.079, 24.3865, -149.44, -209.929, -4.23772, -149.401, -217.817, -113.701, -157.219, -95.9793, -140.12, -157.219, -167.91, -140.12, -149.401, -167.91, -156.833, -149.44, -143.369, -162.924, -149.44, -118.717, -142.325, -149.44, -103.868, -113.701, -149.401, -95.9793, -1.92886, -157.219, 126.872, 76.6026, -157.219, 98.0285, 24.49, -157.219, 198.802, 103.021, -157.219, 169.959, -1.92889, -93.2125, 126.872, 76.6026, -93.2124, 98.0285, 24.4899, -93.2125, 198.802, 103.021, -93.2124, 169.959, 136.212, -157.219, 94.5366, 150.72, -157.219, 134.038, 123.463, -93.2124, 155.569, 101.498, -93.2124, 95.7659, -30.4999, -157.219, 200.597, -45.0083, -157.219, 161.096, -22.3709, -93.2125, 141.261, -0.405975, -93.2125, 201.065, 156.81, -157.219, 109.386, 129.137, -93.2124, 129.784, 122.513, -93.2124, 111.749, -51.0984, -157.219, 185.748, -28.0446, -93.2125, 167.047, -21.4209, -93.2125, 185.081, 76.6026, -149.401, 98.0285, -1.92886, -149.401, 126.872, 103.021, -149.401, 169.959, 24.49, -149.401, 198.802, 123.463, -143.356, 155.569, 101.498, -143.356, 95.7659, -22.3709, -143.356, 141.261, -0.405945, -143.356, 201.065, 129.137, -121.31, 129.784, 122.513, -121.31, 111.749, -28.0446, -121.31, 167.047, -21.4208, -121.31, 185.081, 107.587, -157.219, 86.6483, 134.006, -157.219, 158.578, 134.006, -149.401, 158.578, 150.72, -149.44, 134.038, 156.81, -149.44, 109.386, 136.212, -149.44, 94.5366, 107.587, -149.401, 86.6483, -1.87574, -157.219, 208.486, -28.2946, -157.219, 136.556, -28.2946, -149.401, 136.556, -45.0083, -149.44, 161.096, -51.0984, -149.44, 185.748, -30.4999, -149.44, 200.597, -1.87574, -149.401, 208.486, -89.1398, 50.1294, -117.049, -68.8992, 50.1294, -124.483, 3.98531, 50.1294, 136.502, 24.2259, 50.1294, 129.068, -89.1398, 66.7088, -117.049, -68.8992, 66.7088, -124.483, 3.98531, 66.7088, 136.502, 24.2259, 66.7088, 129.068, -29.3446, 50.1294, -139.011, -9.104, 50.1294, -146.445, 63.7805, 50.1294, 114.54, 84.0211, 50.1294, 107.106, -29.3446, 66.7088, -139.011, -9.104, 66.7088, -146.445, 63.7805, 66.7088, 114.54, 84.0211, 66.7088, 107.106, -77.7395, -115.813, -109.434, -13.9196, -115.813, -132.874, 7.74672, -115.813, 123.318, 71.5666, -115.813, 99.8782, -77.7395, -93.2125, -109.434, -13.9197, -93.2124, -132.874, 7.74671, -93.2125, 123.318, 71.5666, -93.2124, 99.8782, -47.1782, -101.108, -26.2251, -22.8146, -101.108, 40.1093, 41.0053, -101.108, 16.6693, 16.6417, -101.108, -49.6651, 16.6417, -93.2124, -49.6651, 41.0053, -93.2124, 16.6693, -22.8146, -93.2125, 40.1093, -47.1782, -93.2125, -26.2251, 175.636, -93.2125, 596.053, 178.503, -93.2125, 595, 177.414, -93.2125, 600.894, 180.281, -93.2125, 599.841, 175.636, -82.777, 596.053, 178.503, -82.777, 595, 177.414, -85.5128, 600.894, 180.281, -85.5128, 599.841, 178.503, -89.1988, 595, 175.636, -89.1988, 596.053, 145.744, -37.9977, 505.807, 142.877, -37.9977, 506.86, 142.877, -44.4195, 506.86, 145.744, -44.4195, 505.807, 246.681, -93.2125, 569.959, 249.548, -93.2125, 568.906, 248.459, -93.2125, 574.8, 251.326, -93.2125, 573.747, 246.681, -82.777, 569.959, 249.548, -82.777, 568.906, 248.459, -85.5128, 574.8, 251.326, -85.5128, 573.747, 249.548, -89.1988, 568.906, 246.681, -89.1988, 569.959, 216.789, -37.9977, 479.713, 213.922, -37.9977, 480.766, 213.922, -44.4195, 480.766, 216.789, -44.4195, 479.713, 24.4899, -101.108, 198.802, 103.021, -101.108, 169.959, 127.473, -101.108, 479.192, 206.004, -101.108, 450.348, 24.4899, -93.2124, 198.802, 103.021, -93.2124, 169.959, 127.473, -93.2124, 479.192, 206.004, -93.2124, 450.348, 122.526, -147.495, 481.008, 214.36, -147.495, 447.279, 133.244, -147.495, 510.189, 225.077, -147.495, 476.46, 122.526, -93.2125, 481.008, 214.36, -93.2125, 447.279, 133.244, -93.2125, 510.189, 225.077, -93.2125, 476.46, -144.373, -97.1886, -517.924, -134.728, -97.1886, -521.467, -133.656, -97.1886, -488.744, -124.01, -97.1886, -492.286, -144.373, -70.3913, -517.924, -134.728, -70.3913, -521.467, -133.656, -70.3913, -488.744, -124.01, -70.3913, -492.286, -235.96, -97.1886, -484.286, -226.314, -97.1886, -487.829, -225.257, -97.1886, -455.147, -215.612, -97.1886, -458.69, -235.96, -70.2822, -484.286, -226.314, -70.2822, -487.829, -225.257, -70.2822, -455.147, -215.612, -70.2822, -458.69, -235.96, -147.495, -484.286, -134.728, -147.495, -521.467, -225.242, -147.495, -455.106, -124.01, -147.495, -492.286, -235.96, -97.1887, -484.286, -134.728, -97.1886, -521.467, -225.242, -97.1887, -455.105, -124.01, -97.1886, -492.286]; + uvs = new [0.577047, 0.389457, 0.571777, 0.387799, 0.559052, 0.387111, 0.546328, 0.387799, 0.541057, 0.389457, 0.546328, 0.391116, 0.559052, 0.391803, 0.571776, 0.391116, 0.577047, 0.389457, 0.571777, 0.387799, 0.559052, 0.387111, 0.546328, 0.387799, 0.541057, 0.389457, 0.546328, 0.391116, 0.559052, 0.391803, 0.571776, 0.391116, 0.585926, 0.389457, 0.578055, 0.38698, 0.559052, 0.385954, 0.540049, 0.38698, 0.532178, 0.389457, 0.540049, 0.391935, 0.559052, 0.392961, 0.578055, 0.391935, 0.585926, 0.389457, 0.578055, 0.38698, 0.559052, 0.385954, 0.540049, 0.38698, 0.532178, 0.389457, 0.540049, 0.391935, 0.559052, 0.392961, 0.578055, 0.391935, 0.559052, 0.389457, 0.772032, 0.000499785, 0.789819, 0.239863, 0.558462, 0.239863, 0.558463, 0.000499547, 0.772032, 0.000499785, 0.789819, 0.239863, 0.558462, 0.239863, 0.558463, 0.000499547, 0.786081, 0.189563, 0.558462, 0.189563, 0.223973, 0.9995, 0.000499785, 0.991694, 0.558429, 0.720237, 0.558429, 0.646205, 0.789786, 0.646205, 0.789786, 0.724208, 0.223973, 0.9995, 0.000499606, 0.991694, 0.558429, 0.720237, 0.558429, 0.646205, 0.789786, 0.646205, 0.789786, 0.724208, 0.559659, 0.289574, 0.559662, 0.289663, 0.559164, 0.276599, 0.558685, 0.264013, 0.558224, 0.251812, 0.558221, 0.251824, 0.55865, 0.2631, 0.559124, 0.27554, 0.79057, 0.289574, 0.790573, 0.289663, 0.790075, 0.276599, 0.789596, 0.264013, 0.789135, 0.251812, 0.789132, 0.251824, 0.789561, 0.2631, 0.790035, 0.27554, 0.790578, 0.370257, 0.790569, 0.354691, 0.790558, 0.336736, 0.790546, 0.315106, 0.790538, 0.302634, 0.790534, 0.295296, 0.790534, 0.295281, 0.790538, 0.301788, 0.790546, 0.31593, 0.790561, 0.341656, 0.790571, 0.357829, 0.790578, 0.370257, 0.790552, 0.329017, 0.790554, 0.331597, 0.557752, 0.370257, 0.557743, 0.354691, 0.557732, 0.336736, 0.55772, 0.315106, 0.557712, 0.302634, 0.557708, 0.295296, 0.557708, 0.295281, 0.557712, 0.301788, 0.55772, 0.31593, 0.557735, 0.341656, 0.557745, 0.357829, 0.557752, 0.370257, 0.557726, 0.329017, 0.557728, 0.331597, 0.788589, 0.596582, 0.788586, 0.596494, 0.789083, 0.609558, 0.789563, 0.622143, 0.790024, 0.634345, 0.790027, 0.634332, 0.789598, 0.623057, 0.789124, 0.610616, 0.557678, 0.596582, 0.557675, 0.596494, 0.558173, 0.609558, 0.558652, 0.622143, 0.559113, 0.634345, 0.559116, 0.634332, 0.558687, 0.623057, 0.558213, 0.610616, 0.55767, 0.5159, 0.557679, 0.531466, 0.55769, 0.54942, 0.557702, 0.57105, 0.55771, 0.583522, 0.557714, 0.590861, 0.557714, 0.590875, 0.55771, 0.584369, 0.557702, 0.570227, 0.557687, 0.5445, 0.557678, 0.528327, 0.55767, 0.5159, 0.557696, 0.557139, 0.557694, 0.554559, 0.790496, 0.5159, 0.790505, 0.531466, 0.790516, 0.54942, 0.790528, 0.57105, 0.790535, 0.583522, 0.79054, 0.590861, 0.79054, 0.590875, 0.790536, 0.584369, 0.790528, 0.570227, 0.790513, 0.5445, 0.790504, 0.528327, 0.790496, 0.5159, 0.790522, 0.557139, 0.79052, 0.554559, 0.527966, 0.245796, 0.532907, 0.24424, 0.544837, 0.243596, 0.556768, 0.24424, 0.561711, 0.245795, 0.556771, 0.247351, 0.544841, 0.247995, 0.53291, 0.247351, 0.527939, 0.245782, 0.532879, 0.244227, 0.544809, 0.243582, 0.55674, 0.244226, 0.561683, 0.245782, 0.556743, 0.247337, 0.544813, 0.247981, 0.532882, 0.247337, 0.790357, 0.245796, 0.795297, 0.24424, 0.807227, 0.243596, 0.819158, 0.24424, 0.824101, 0.245795, 0.819161, 0.247351, 0.807231, 0.247995, 0.7953, 0.247351, 0.790329, 0.245782, 0.795269, 0.244227, 0.807199, 0.243582, 0.81913, 0.244226, 0.824073, 0.245782, 0.819133, 0.247337, 0.807203, 0.247981, 0.795272, 0.247337, 0.55791, 0.645534, 0.55297, 0.647089, 0.54104, 0.647733, 0.529109, 0.647089, 0.524166, 0.645534, 0.529106, 0.643979, 0.541036, 0.643334, 0.552967, 0.643978, 0.557882, 0.64557, 0.552942, 0.647125, 0.541012, 0.64777, 0.529081, 0.647126, 0.524138, 0.64557, 0.529078, 0.644015, 0.541008, 0.64337, 0.552939, 0.644014, 0.577047, 0.372069, 0.571776, 0.37041, 0.559052, 0.369723, 0.546328, 0.37041, 0.541057, 0.372069, 0.546328, 0.373728, 0.559052, 0.374415, 0.571776, 0.373728, 0.577047, 0.372069, 0.571776, 0.37041, 0.559052, 0.369723, 0.546328, 0.37041, 0.541057, 0.372069, 0.546328, 0.373728, 0.559052, 0.374415, 0.571776, 0.373728, 0.585926, 0.372069, 0.578055, 0.369591, 0.559052, 0.368565, 0.540049, 0.369591, 0.532178, 0.372069, 0.540049, 0.374546, 0.559052, 0.375572, 0.578055, 0.374546, 0.585926, 0.372069, 0.578055, 0.369591, 0.559052, 0.368565, 0.540049, 0.369591, 0.532178, 0.372069, 0.540049, 0.374546, 0.559052, 0.375572, 0.578055, 0.374546, 0.559052, 0.372069, 0.809252, 0.372069, 0.803981, 0.37041, 0.791257, 0.369723, 0.778533, 0.37041, 0.773262, 0.372069, 0.778533, 0.373728, 0.791257, 0.374415, 0.803981, 0.373728, 0.809252, 0.372069, 0.803981, 0.37041, 0.791257, 0.369723, 0.778533, 0.37041, 0.773262, 0.372069, 0.778533, 0.373728, 0.791257, 0.374415, 0.803981, 0.373728, 0.818131, 0.372069, 0.81026, 0.369591, 0.791257, 0.368565, 0.772254, 0.369591, 0.764383, 0.372069, 0.772254, 0.374546, 0.791257, 0.375572, 0.81026, 0.374546, 0.818131, 0.372069, 0.81026, 0.369591, 0.791257, 0.368565, 0.772254, 0.369591, 0.764383, 0.372069, 0.772254, 0.374546, 0.791257, 0.375572, 0.81026, 0.374546, 0.791257, 0.372069, 0.809252, 0.389457, 0.803981, 0.387799, 0.791257, 0.387111, 0.778533, 0.387799, 0.773262, 0.389457, 0.778533, 0.391116, 0.791257, 0.391803, 0.803981, 0.391116, 0.809252, 0.389457, 0.803981, 0.387799, 0.791257, 0.387111, 0.778533, 0.387799, 0.773262, 0.389457, 0.778533, 0.391116, 0.791257, 0.391803, 0.803981, 0.391116, 0.818131, 0.389457, 0.81026, 0.38698, 0.791257, 0.385954, 0.772254, 0.38698, 0.764383, 0.389457, 0.772254, 0.391935, 0.791257, 0.392961, 0.81026, 0.391935, 0.818131, 0.389457, 0.81026, 0.38698, 0.791257, 0.385954, 0.772254, 0.38698, 0.764383, 0.389457, 0.772254, 0.391935, 0.791257, 0.392961, 0.81026, 0.391935, 0.791257, 0.389457, 0.577047, 0.4956, 0.571776, 0.497258, 0.559052, 0.497945, 0.546328, 0.497258, 0.541057, 0.4956, 0.546328, 0.493941, 0.559052, 0.493254, 0.571776, 0.493941, 0.577047, 0.4956, 0.571776, 0.497258, 0.559052, 0.497945, 0.546328, 0.497258, 0.541057, 0.4956, 0.546328, 0.493941, 0.559052, 0.493254, 0.571776, 0.493941, 0.585926, 0.4956, 0.578055, 0.498077, 0.559052, 0.499103, 0.540049, 0.498077, 0.532178, 0.4956, 0.540049, 0.493122, 0.559052, 0.492096, 0.578055, 0.493122, 0.585926, 0.4956, 0.578055, 0.498077, 0.559052, 0.499103, 0.540049, 0.498077, 0.532178, 0.4956, 0.540049, 0.493122, 0.559052, 0.492096, 0.578055, 0.493122, 0.559052, 0.4956, 0.577047, 0.512988, 0.571776, 0.514647, 0.559052, 0.515334, 0.546328, 0.514647, 0.541057, 0.512988, 0.546328, 0.511329, 0.559052, 0.510642, 0.571776, 0.511329, 0.577047, 0.512988, 0.571776, 0.514647, 0.559052, 0.515334, 0.546328, 0.514647, 0.541057, 0.512988, 0.546328, 0.511329, 0.559052, 0.510642, 0.571776, 0.511329, 0.585926, 0.512988, 0.578055, 0.515465, 0.559052, 0.516492, 0.540049, 0.515465, 0.532178, 0.512988, 0.540049, 0.510511, 0.559052, 0.509485, 0.578055, 0.510511, 0.585926, 0.512988, 0.578055, 0.515465, 0.559052, 0.516492, 0.540049, 0.515465, 0.532178, 0.512988, 0.540049, 0.510511, 0.559052, 0.509485, 0.578055, 0.510511, 0.559052, 0.512988, 0.809252, 0.512988, 0.803981, 0.514647, 0.791257, 0.515334, 0.778533, 0.514647, 0.773262, 0.512988, 0.778533, 0.511329, 0.791257, 0.510642, 0.803981, 0.511329, 0.809252, 0.512988, 0.803981, 0.514647, 0.791257, 0.515334, 0.778532, 0.514647, 0.773262, 0.512988, 0.778532, 0.511329, 0.791257, 0.510642, 0.803981, 0.511329, 0.818131, 0.512988, 0.81026, 0.515465, 0.791257, 0.516492, 0.772254, 0.515465, 0.764383, 0.512988, 0.772254, 0.510511, 0.791257, 0.509485, 0.81026, 0.510511, 0.818131, 0.512988, 0.810259, 0.515465, 0.791257, 0.516492, 0.772254, 0.515465, 0.764383, 0.512988, 0.772254, 0.510511, 0.791257, 0.509485, 0.810259, 0.510511, 0.791257, 0.512988, 0.809252, 0.4956, 0.803981, 0.497258, 0.791257, 0.497945, 0.778533, 0.497258, 0.773262, 0.4956, 0.778533, 0.493941, 0.791257, 0.493254, 0.803981, 0.493941, 0.809252, 0.4956, 0.803981, 0.497258, 0.791257, 0.497945, 0.778532, 0.497258, 0.773262, 0.4956, 0.778532, 0.493941, 0.791257, 0.493254, 0.803981, 0.493941, 0.818131, 0.4956, 0.81026, 0.498077, 0.791257, 0.499103, 0.772254, 0.498077, 0.764383, 0.4956, 0.772254, 0.493122, 0.791257, 0.492096, 0.81026, 0.493122, 0.818131, 0.4956, 0.810259, 0.498077, 0.791257, 0.499103, 0.772254, 0.498077, 0.764383, 0.4956, 0.772254, 0.493122, 0.791257, 0.492096, 0.810259, 0.493122, 0.791257, 0.4956, 0.797526, 0.251859, 0.797526, 0.239951, 0.554014, 0.239951, 0.554014, 0.251859, 0.554014, 0.251859, 0.797526, 0.251859, 0.554014, 0.239951, 0.797526, 0.239951, 0.596389, 0.245905, 0.75515, 0.245905, 0.701708, 0.251859, 0.701708, 0.239951, 0.764415, 0.251859, 0.764415, 0.239951, 0.649831, 0.251859, 0.649831, 0.239951, 0.587124, 0.251859, 0.587124, 0.239951, 0.587124, 0.239951, 0.587124, 0.251859, 0.764415, 0.251859, 0.764415, 0.239951, 0.608769, 0.24244, 0.608769, 0.249371, 0.60979, 0.249371, 0.658316, 0.249371, 0.693223, 0.249371, 0.74175, 0.249371, 0.742708, 0.249371, 0.742708, 0.24244, 0.74175, 0.24244, 0.693223, 0.24244, 0.658316, 0.24244, 0.60979, 0.24244, 0.561042, 0.295453, 0.558152, 0.295453, 0.561042, 0.289724, 0.558152, 0.289724, 0.561042, 0.295453, 0.558152, 0.295453, 0.561042, 0.289724, 0.558152, 0.289724, 0.789819, 0.295453, 0.786929, 0.295453, 0.789819, 0.289724, 0.786929, 0.289724, 0.789819, 0.295453, 0.786929, 0.295453, 0.789819, 0.289724, 0.786929, 0.289724, 0.789819, 0.203479, 0.780844, 0.203479, 0.789819, 0.201503, 0.780844, 0.201503, 0.789819, 0.203479, 0.780844, 0.203479, 0.789819, 0.201503, 0.780844, 0.201503, 0.780844, 0.203479, 0.789819, 0.203479, 0.780844, 0.239876, 0.789819, 0.239876, 0.789819, 0.239876, 0.780844, 0.239876, 0.567437, 0.203479, 0.558462, 0.203479, 0.567437, 0.201503, 0.558462, 0.201503, 0.567437, 0.203479, 0.558462, 0.203479, 0.567437, 0.201503, 0.558462, 0.201503, 0.558462, 0.203479, 0.567437, 0.203479, 0.558462, 0.239876, 0.567437, 0.239876, 0.567437, 0.239876, 0.558462, 0.239876, 0.790496, 0.366279, 0.544681, 0.366279, 0.790496, 0.251859, 0.544681, 0.251859, 0.790496, 0.366279, 0.544681, 0.366279, 0.790496, 0.251859, 0.544681, 0.251859, 0.528488, 0.634297, 0.528488, 0.646205, 0.815941, 0.646205, 0.815941, 0.634297, 0.815941, 0.634297, 0.528488, 0.634297, 0.815941, 0.646205, 0.528488, 0.646205, 0.773565, 0.640251, 0.570863, 0.640251, 0.624305, 0.634297, 0.624305, 0.646205, 0.561598, 0.634297, 0.561598, 0.646205, 0.720123, 0.634297, 0.720123, 0.646205, 0.782831, 0.634297, 0.782831, 0.646205, 0.782831, 0.646205, 0.782831, 0.634297, 0.561598, 0.634297, 0.561598, 0.646205, 0.761186, 0.643717, 0.761186, 0.636785, 0.760165, 0.636785, 0.711638, 0.636785, 0.632791, 0.636785, 0.584264, 0.636785, 0.583305, 0.636785, 0.583305, 0.643717, 0.584264, 0.643717, 0.632791, 0.643717, 0.711638, 0.643717, 0.760165, 0.643717, 0.787206, 0.590703, 0.790096, 0.590703, 0.787206, 0.596432, 0.790096, 0.596432, 0.787206, 0.590703, 0.790096, 0.590703, 0.787206, 0.596432, 0.790096, 0.596432, 0.558429, 0.590703, 0.561319, 0.590703, 0.558429, 0.596432, 0.561319, 0.596432, 0.558429, 0.590703, 0.561319, 0.590703, 0.558429, 0.596432, 0.561319, 0.596432, 0.785384, 0.390289, 0.785384, 0.371161, 0.785384, 0.371161, 0.785384, 0.390289, 0.565434, 0.371161, 0.565434, 0.390289, 0.565434, 0.390289, 0.565434, 0.371161, 0.703461, 0.380725, 0.647357, 0.380725, 0.739312, 0.371161, 0.739312, 0.390289, 0.609712, 0.390289, 0.609712, 0.371161, 0.609712, 0.371161, 0.609712, 0.390289, 0.635331, 0.371161, 0.635331, 0.390289, 0.713693, 0.371161, 0.713693, 0.390289, 0.739312, 0.371161, 0.739312, 0.390289, 0.670325, 0.384255, 0.670325, 0.377195, 0.633799, 0.38718, 0.633799, 0.37427, 0.70685, 0.38718, 0.70685, 0.37427, 0.633799, 0.390289, 0.70685, 0.390289, 0.70685, 0.371161, 0.633799, 0.371161, 0.633799, 0.390289, 0.670325, 0.390289, 0.70685, 0.390289, 0.633799, 0.371161, 0.670325, 0.371161, 0.70685, 0.371161, 0.733696, 0.380725, 0.617122, 0.380725, 0.758753, 0.375963, 0.592065, 0.375963, 0.758753, 0.385487, 0.592065, 0.385487, 0.565434, 0.375963, 0.565434, 0.385487, 0.785384, 0.385487, 0.785384, 0.375963, 0.785384, 0.375963, 0.785384, 0.380725, 0.785384, 0.385487, 0.565433, 0.385487, 0.565433, 0.380725, 0.565434, 0.375963, 0.785384, 0.494768, 0.785384, 0.513896, 0.785384, 0.513896, 0.785384, 0.494768, 0.565433, 0.513896, 0.565433, 0.494768, 0.565433, 0.494768, 0.565433, 0.513896, 0.70346, 0.504332, 0.647356, 0.504332, 0.739312, 0.513896, 0.739312, 0.494768, 0.609712, 0.494768, 0.609712, 0.513896, 0.609712, 0.513896, 0.609712, 0.494768, 0.635331, 0.513896, 0.635331, 0.494768, 0.713693, 0.513896, 0.713693, 0.494768, 0.739312, 0.513896, 0.739312, 0.494768, 0.670324, 0.500802, 0.670324, 0.507862, 0.633799, 0.497877, 0.633799, 0.510787, 0.70685, 0.497877, 0.70685, 0.510787, 0.633799, 0.494768, 0.70685, 0.494768, 0.70685, 0.513896, 0.633799, 0.513896, 0.633799, 0.494768, 0.670324, 0.494768, 0.70685, 0.494768, 0.633799, 0.513896, 0.670324, 0.513896, 0.70685, 0.513896, 0.733696, 0.504332, 0.617121, 0.504332, 0.758753, 0.509094, 0.592064, 0.509094, 0.758753, 0.49957, 0.592064, 0.49957, 0.565433, 0.509094, 0.565433, 0.49957, 0.785384, 0.49957, 0.785384, 0.509094, 0.785384, 0.509094, 0.785384, 0.504332, 0.785384, 0.49957, 0.565433, 0.49957, 0.565433, 0.504332, 0.565433, 0.509094, 0.543971, 0.366279, 0.789786, 0.366279, 0.543971, 0.395632, 0.789786, 0.395632, 0.543971, 0.366279, 0.789786, 0.366279, 0.543971, 0.395632, 0.789786, 0.395632, 0.957731, 0.372896, 0.957731, 0.389016, 0.860744, 0.393158, 0.860744, 0.368754, 0.390485, 0.389016, 0.390485, 0.372896, 0.473014, 0.368754, 0.473014, 0.393158, 0.999501, 0.380956, 0.902513, 0.384635, 0.902513, 0.377276, 0.348716, 0.380956, 0.431244, 0.377276, 0.431244, 0.384636, 0.789786, 0.366279, 0.543971, 0.366279, 0.789786, 0.395632, 0.543971, 0.395632, 0.860744, 0.393158, 0.860744, 0.368754, 0.473014, 0.368754, 0.473014, 0.393158, 0.902513, 0.384635, 0.902513, 0.377276, 0.431244, 0.377276, 0.431244, 0.384636, 0.886774, 0.366279, 0.886774, 0.395632, 0.886774, 0.395632, 0.957731, 0.389016, 0.999501, 0.380956, 0.957731, 0.372896, 0.886774, 0.366279, 0.461443, 0.395632, 0.461443, 0.366279, 0.461443, 0.366279, 0.390485, 0.372896, 0.348716, 0.380956, 0.390485, 0.389016, 0.461443, 0.395632, 0.543971, 0.490524, 0.789786, 0.490524, 0.543971, 0.519877, 0.789786, 0.519877, 0.543971, 0.490524, 0.789786, 0.490524, 0.543971, 0.519877, 0.789786, 0.519877, 0.957731, 0.497141, 0.957731, 0.51326, 0.860743, 0.517403, 0.860743, 0.492998, 0.390485, 0.51326, 0.390485, 0.497141, 0.473014, 0.492998, 0.473014, 0.517403, 0.9995, 0.5052, 0.902513, 0.50888, 0.902513, 0.501521, 0.348716, 0.505201, 0.431244, 0.501521, 0.431244, 0.50888, 0.789786, 0.490524, 0.543971, 0.490524, 0.789786, 0.519877, 0.543971, 0.519877, 0.860743, 0.517403, 0.860743, 0.492998, 0.473014, 0.492998, 0.473014, 0.517403, 0.902513, 0.50888, 0.902513, 0.501521, 0.431244, 0.501521, 0.431244, 0.50888, 0.886774, 0.490524, 0.886774, 0.519877, 0.886773, 0.519877, 0.957731, 0.51326, 0.9995, 0.5052, 0.957731, 0.497141, 0.886773, 0.490524, 0.461443, 0.519877, 0.461443, 0.490524, 0.461442, 0.490524, 0.390485, 0.497141, 0.348716, 0.505201, 0.390485, 0.51326, 0.461443, 0.519877, 0.550528, 0.3913, 0.613884, 0.3913, 0.550528, 0.494768, 0.613884, 0.494768, 0.550528, 0.3913, 0.613884, 0.3913, 0.550528, 0.494768, 0.613884, 0.494768, 0.737696, 0.3913, 0.801052, 0.3913, 0.737696, 0.494768, 0.801052, 0.494768, 0.737696, 0.3913, 0.801052, 0.3913, 0.737696, 0.494768, 0.801052, 0.494768, 0.574257, 0.395544, 0.774023, 0.395544, 0.574257, 0.490524, 0.774023, 0.490524, 0.574257, 0.395544, 0.774023, 0.395544, 0.574257, 0.490524, 0.774023, 0.490524, 0.574257, 0.429499, 0.574257, 0.456568, 0.774023, 0.456568, 0.774023, 0.429499, 0.774023, 0.429499, 0.774023, 0.456568, 0.574257, 0.456568, 0.574257, 0.429499, 0.558429, 0.682678, 0.567404, 0.682678, 0.558429, 0.684653, 0.567404, 0.684653, 0.558429, 0.682678, 0.567404, 0.682678, 0.558429, 0.684653, 0.567404, 0.684653, 0.567404, 0.682678, 0.558429, 0.682678, 0.567404, 0.64628, 0.558429, 0.64628, 0.558429, 0.64628, 0.567404, 0.64628, 0.780811, 0.682677, 0.789786, 0.682677, 0.780811, 0.684653, 0.789786, 0.684653, 0.780811, 0.682677, 0.789786, 0.682677, 0.780811, 0.684653, 0.789786, 0.684653, 0.789786, 0.682677, 0.780811, 0.682677, 0.789786, 0.64628, 0.780811, 0.64628, 0.780811, 0.64628, 0.789786, 0.64628, 0.543971, 0.519877, 0.789786, 0.519877, 0.543971, 0.634297, 0.789786, 0.634297, 0.543971, 0.519877, 0.789786, 0.519877, 0.543971, 0.634297, 0.789786, 0.634297, 0.528488, 0.634297, 0.815941, 0.634297, 0.528488, 0.646205, 0.815941, 0.646205, 0.528488, 0.634297, 0.815941, 0.634297, 0.528488, 0.646205, 0.815941, 0.646205, 0.804277, 0.239863, 0.834469, 0.239863, 0.804277, 0.251771, 0.834469, 0.251771, 0.804277, 0.239863, 0.834469, 0.239863, 0.804277, 0.251771, 0.834469, 0.251771, 0.517598, 0.239863, 0.54779, 0.239863, 0.517598, 0.251754, 0.54779, 0.251754, 0.517598, 0.239863, 0.54779, 0.239863, 0.517598, 0.251754, 0.54779, 0.251754, 0.517598, 0.239863, 0.834469, 0.239863, 0.517598, 0.251771, 0.834469, 0.251771, 0.517597, 0.239863, 0.834469, 0.239863, 0.517598, 0.251771, 0.834469, 0.251771]; + indices = new [0, 9, 1, 9, 0, 8, 1, 10, 2, 10, 1, 9, 2, 11, 3, 11, 2, 10, 3, 12, 4, 12, 3, 11, 4, 13, 5, 13, 4, 12, 5, 14, 6, 14, 5, 13, 6, 15, 7, 15, 6, 14, 7, 8, 0, 8, 7, 15, 6, 4, 5, 4, 2, 3, 2, 0, 1, 4, 0, 2, 6, 0, 4, 7, 0, 6, 8, 17, 9, 17, 8, 16, 9, 18, 10, 18, 9, 17, 10, 19, 11, 19, 10, 18, 11, 20, 12, 20, 11, 19, 12, 21, 13, 21, 12, 20, 13, 22, 14, 22, 13, 21, 14, 23, 15, 23, 14, 22, 15, 16, 8, 16, 15, 23, 16, 25, 17, 25, 16, 24, 17, 26, 18, 26, 17, 25, 18, 27, 19, 27, 18, 26, 19, 28, 20, 28, 19, 27, 20, 29, 21, 29, 20, 28, 21, 30, 22, 30, 21, 29, 22, 31, 23, 31, 22, 30, 23, 24, 16, 24, 23, 31, 24, 32, 25, 25, 32, 26, 26, 32, 27, 27, 32, 28, 28, 32, 29, 29, 32, 30, 30, 32, 31, 31, 32, 24, 33, 41, 37, 33, 38, 41, 33, 34, 38, 39, 34, 35, 34, 39, 38, 35, 42, 39, 35, 40, 42, 35, 36, 40, 37, 36, 33, 36, 37, 40, 33, 35, 34, 35, 33, 36, 41, 40, 37, 40, 41, 42, 38, 42, 41, 42, 38, 39, 50, 43, 44, 43, 50, 49, 51, 44, 45, 44, 51, 50, 52, 45, 46, 45, 52, 51, 53, 46, 47, 46, 53, 52, 54, 47, 48, 47, 54, 53, 49, 48, 43, 48, 49, 54, 45, 43, 48, 43, 45, 44, 52, 54, 51, 54, 52, 53, 49, 51, 54, 51, 49, 50, 46, 48, 47, 48, 46, 45, 58, 60, 59, 60, 58, 61, 57, 55, 62, 55, 57, 56, 57, 61, 58, 61, 57, 62, 63, 65, 70, 65, 63, 64, 65, 69, 70, 69, 65, 66, 66, 68, 69, 68, 66, 67, 83, 80, 73, 80, 83, 84, 76, 78, 75, 78, 76, 77, 80, 72, 73, 72, 80, 81, 83, 79, 84, 79, 83, 74, 79, 75, 78, 75, 79, 74, 82, 72, 81, 72, 82, 71, 96, 86, 85, 86, 96, 95, 98, 88, 97, 88, 98, 93, 92, 90, 89, 90, 92, 91, 93, 89, 88, 89, 93, 92, 94, 97, 87, 97, 94, 98, 94, 86, 95, 86, 94, 87, 102, 104, 103, 104, 102, 105, 101, 99, 106, 99, 101, 100, 101, 105, 102, 105, 101, 106, 107, 109, 114, 109, 107, 108, 109, 113, 114, 113, 109, 110, 110, 112, 113, 112, 110, 111, 127, 124, 117, 124, 127, 128, 120, 122, 119, 122, 120, 121, 124, 116, 117, 116, 124, 125, 127, 123, 128, 123, 127, 118, 123, 119, 122, 119, 123, 118, 126, 116, 125, 116, 126, 115, 140, 130, 129, 130, 140, 139, 142, 132, 141, 132, 142, 137, 136, 134, 133, 134, 136, 135, 137, 133, 132, 133, 137, 136, 138, 141, 131, 141, 138, 142, 138, 130, 139, 130, 138, 131, 143, 152, 151, 152, 143, 144, 144, 153, 152, 153, 144, 145, 145, 154, 153, 154, 145, 146, 146, 155, 154, 155, 146, 147, 147, 156, 155, 156, 147, 148, 148, 157, 156, 157, 148, 149, 149, 158, 157, 158, 149, 150, 150, 151, 158, 151, 150, 143, 143, 145, 144, 145, 147, 146, 143, 147, 145, 147, 149, 148, 143, 149, 147, 150, 149, 143, 158, 156, 157, 156, 154, 155, 158, 154, 156, 154, 152, 153, 158, 152, 154, 151, 152, 158, 159, 168, 167, 168, 159, 160, 160, 169, 168, 169, 160, 161, 161, 170, 169, 170, 161, 162, 162, 171, 170, 171, 162, 163, 163, 172, 171, 172, 163, 164, 164, 173, 172, 173, 164, 165, 165, 174, 173, 174, 165, 166, 166, 167, 174, 167, 166, 159, 159, 161, 160, 161, 163, 162, 159, 163, 161, 163, 165, 164, 159, 165, 163, 166, 165, 159, 174, 172, 173, 172, 170, 171, 174, 170, 172, 170, 168, 169, 174, 168, 170, 167, 168, 174, 175, 184, 183, 184, 175, 176, 176, 185, 184, 185, 176, 177, 177, 186, 185, 186, 177, 178, 178, 187, 186, 187, 178, 179, 179, 188, 187, 188, 179, 180, 180, 189, 188, 189, 180, 181, 181, 190, 189, 190, 181, 182, 182, 183, 190, 183, 182, 175, 175, 177, 176, 177, 179, 178, 175, 179, 177, 179, 181, 180, 175, 181, 179, 182, 181, 175, 190, 188, 189, 188, 186, 187, 190, 186, 188, 186, 184, 185, 190, 184, 186, 183, 184, 190, 191, 200, 192, 200, 191, 199, 192, 201, 193, 201, 192, 200, 193, 202, 194, 202, 193, 201, 194, 203, 195, 203, 194, 202, 195, 204, 196, 204, 195, 203, 196, 205, 197, 205, 196, 204, 197, 206, 198, 206, 197, 205, 198, 199, 191, 199, 198, 206, 197, 195, 196, 195, 193, 194, 193, 191, 192, 195, 191, 193, 197, 191, 195, 198, 191, 197, 199, 208, 200, 208, 199, 207, 200, 209, 201, 209, 200, 208, 201, 210, 202, 210, 201, 209, 202, 211, 203, 211, 202, 210, 203, 212, 204, 212, 203, 211, 204, 213, 205, 213, 204, 212, 205, 214, 206, 214, 205, 213, 206, 207, 199, 207, 206, 214, 207, 216, 208, 216, 207, 215, 208, 217, 209, 217, 208, 216, 209, 218, 210, 218, 209, 217, 210, 219, 211, 219, 210, 218, 211, 220, 212, 220, 211, 219, 212, 221, 213, 221, 212, 220, 213, 222, 214, 222, 213, 221, 214, 215, 207, 215, 214, 222, 215, 223, 216, 216, 223, 217, 217, 223, 218, 218, 223, 219, 219, 223, 220, 220, 223, 221, 221, 223, 222, 222, 223, 215, 224, 233, 225, 233, 224, 232, 225, 234, 226, 234, 225, 233, 226, 235, 227, 235, 226, 234, 227, 236, 228, 236, 227, 235, 228, 237, 229, 237, 228, 236, 229, 238, 230, 238, 229, 237, 230, 239, 231, 239, 230, 238, 231, 232, 224, 232, 231, 239, 230, 228, 229, 228, 226, 227, 226, 224, 225, 228, 224, 226, 230, 224, 228, 231, 224, 230, 232, 241, 233, 241, 232, 240, 233, 242, 234, 242, 233, 241, 234, 243, 235, 243, 234, 242, 235, 244, 236, 244, 235, 243, 236, 245, 237, 245, 236, 244, 237, 246, 238, 246, 237, 245, 238, 247, 239, 247, 238, 246, 239, 240, 232, 240, 239, 247, 240, 249, 241, 249, 240, 248, 241, 250, 242, 250, 241, 249, 242, 251, 243, 251, 242, 250, 243, 252, 244, 252, 243, 251, 244, 253, 245, 253, 244, 252, 245, 254, 246, 254, 245, 253, 246, 0xFF, 247, 0xFF, 246, 254, 247, 248, 240, 248, 247, 0xFF, 248, 0x0100, 249, 249, 0x0100, 250, 250, 0x0100, 251, 251, 0x0100, 252, 252, 0x0100, 253, 253, 0x0100, 254, 254, 0x0100, 0xFF, 0xFF, 0x0100, 248, 0x0101, 266, 258, 266, 0x0101, 265, 258, 267, 259, 267, 258, 266, 259, 268, 260, 268, 259, 267, 260, 269, 261, 269, 260, 268, 261, 270, 262, 270, 261, 269, 262, 271, 263, 271, 262, 270, 263, 272, 264, 272, 263, 271, 264, 265, 0x0101, 265, 264, 272, 263, 261, 262, 261, 259, 260, 259, 0x0101, 258, 261, 0x0101, 259, 263, 0x0101, 261, 264, 0x0101, 263, 265, 274, 266, 274, 265, 273, 266, 275, 267, 275, 266, 274, 267, 276, 268, 276, 267, 275, 268, 277, 269, 277, 268, 276, 269, 278, 270, 278, 269, 277, 270, 279, 271, 279, 270, 278, 271, 280, 272, 280, 271, 279, 272, 273, 265, 273, 272, 280, 273, 282, 274, 282, 273, 281, 274, 283, 275, 283, 274, 282, 275, 284, 276, 284, 275, 283, 276, 285, 277, 285, 276, 284, 277, 286, 278, 286, 277, 285, 278, 287, 279, 287, 278, 286, 279, 288, 280, 288, 279, 287, 280, 281, 273, 281, 280, 288, 281, 289, 282, 282, 289, 283, 283, 289, 284, 284, 289, 285, 285, 289, 286, 286, 289, 287, 287, 289, 288, 288, 289, 281, 290, 299, 298, 299, 290, 291, 291, 300, 299, 300, 291, 292, 292, 301, 300, 301, 292, 293, 293, 302, 301, 302, 293, 294, 294, 303, 302, 303, 294, 295, 295, 304, 303, 304, 295, 296, 296, 305, 304, 305, 296, 297, 297, 298, 305, 298, 297, 290, 290, 292, 291, 292, 294, 293, 290, 294, 292, 294, 296, 295, 290, 296, 294, 297, 296, 290, 298, 307, 306, 307, 298, 299, 299, 308, 307, 308, 299, 300, 300, 309, 308, 309, 300, 301, 301, 310, 309, 310, 301, 302, 302, 311, 310, 311, 302, 303, 303, 312, 311, 312, 303, 304, 304, 313, 312, 313, 304, 305, 305, 306, 313, 306, 305, 298, 306, 315, 314, 315, 306, 307, 307, 316, 315, 316, 307, 308, 308, 317, 316, 317, 308, 309, 309, 318, 317, 318, 309, 310, 310, 319, 318, 319, 310, 311, 311, 320, 319, 320, 311, 312, 312, 321, 320, 321, 312, 313, 313, 314, 321, 314, 313, 306, 314, 315, 322, 315, 316, 322, 316, 317, 322, 317, 318, 322, 318, 319, 322, 319, 320, 322, 320, 321, 322, 321, 314, 322, 323, 332, 331, 332, 323, 324, 324, 333, 332, 333, 324, 325, 325, 334, 333, 334, 325, 326, 326, 335, 334, 335, 326, 327, 327, 336, 335, 336, 327, 328, 328, 337, 336, 337, 328, 329, 329, 338, 337, 338, 329, 330, 330, 331, 338, 331, 330, 323, 323, 325, 324, 325, 327, 326, 323, 327, 325, 327, 329, 328, 323, 329, 327, 330, 329, 323, 331, 340, 339, 340, 331, 332, 332, 341, 340, 341, 332, 333, 333, 342, 341, 342, 333, 334, 334, 343, 342, 343, 334, 335, 335, 344, 343, 344, 335, 336, 336, 345, 344, 345, 336, 337, 337, 346, 345, 346, 337, 338, 338, 339, 346, 339, 338, 331, 339, 348, 347, 348, 339, 340, 340, 349, 348, 349, 340, 341, 341, 350, 349, 350, 341, 342, 342, 351, 350, 351, 342, 343, 343, 352, 351, 352, 343, 344, 344, 353, 352, 353, 344, 345, 345, 354, 353, 354, 345, 346, 346, 347, 354, 347, 346, 339, 347, 348, 355, 348, 349, 355, 349, 350, 355, 350, 351, 355, 351, 352, 355, 352, 353, 355, 353, 354, 355, 354, 347, 355, 356, 365, 364, 365, 356, 357, 357, 366, 365, 366, 357, 358, 358, 367, 366, 367, 358, 359, 359, 368, 367, 368, 359, 360, 360, 369, 368, 369, 360, 361, 361, 370, 369, 370, 361, 362, 362, 371, 370, 371, 362, 363, 363, 364, 371, 364, 363, 356, 356, 358, 357, 358, 360, 359, 356, 360, 358, 360, 362, 361, 356, 362, 360, 363, 362, 356, 364, 373, 372, 373, 364, 365, 365, 374, 373, 374, 365, 366, 366, 375, 374, 375, 366, 367, 367, 376, 375, 376, 367, 368, 368, 377, 376, 377, 368, 369, 369, 378, 377, 378, 369, 370, 370, 379, 378, 379, 370, 371, 371, 372, 379, 372, 371, 364, 372, 381, 380, 381, 372, 373, 373, 382, 381, 382, 373, 374, 374, 383, 382, 383, 374, 375, 375, 384, 383, 384, 375, 376, 376, 385, 384, 385, 376, 377, 377, 386, 385, 386, 377, 378, 378, 387, 386, 387, 378, 379, 379, 380, 387, 380, 379, 372, 380, 381, 388, 381, 382, 388, 382, 383, 388, 383, 384, 388, 384, 385, 388, 385, 386, 388, 386, 387, 388, 387, 380, 388, 389, 398, 397, 398, 389, 390, 390, 399, 398, 399, 390, 391, 391, 400, 399, 400, 391, 392, 392, 401, 400, 401, 392, 393, 393, 402, 401, 402, 393, 394, 394, 403, 402, 403, 394, 395, 395, 404, 403, 404, 395, 396, 396, 397, 404, 397, 396, 389, 389, 391, 390, 391, 393, 392, 389, 393, 391, 393, 395, 394, 389, 395, 393, 396, 395, 389, 397, 406, 405, 406, 397, 398, 398, 407, 406, 407, 398, 399, 399, 408, 407, 408, 399, 400, 400, 409, 408, 409, 400, 401, 401, 410, 409, 410, 401, 402, 402, 411, 410, 411, 402, 403, 403, 412, 411, 412, 403, 404, 404, 405, 412, 405, 404, 397, 405, 414, 413, 414, 405, 406, 406, 415, 414, 415, 406, 407, 407, 416, 415, 416, 407, 408, 408, 417, 416, 417, 408, 409, 409, 418, 417, 418, 409, 410, 410, 419, 418, 419, 410, 411, 411, 420, 419, 420, 411, 412, 412, 413, 420, 413, 412, 405, 413, 414, 421, 414, 415, 421, 415, 416, 421, 416, 417, 421, 417, 418, 421, 418, 419, 421, 419, 420, 421, 420, 413, 421, 424, 426, 425, 426, 424, 428, 422, 429, 423, 429, 422, 427, 426, 431, 427, 431, 426, 430, 426, 428, 430, 428, 431, 430, 431, 428, 429, 429, 427, 431, 424, 441, 440, 441, 424, 425, 422, 443, 442, 443, 422, 423, 452, 450, 451, 450, 452, 449, 449, 453, 448, 453, 449, 452, 448, 454, 447, 454, 448, 453, 455, 447, 454, 447, 455, 446, 446, 444, 445, 444, 446, 455, 423, 435, 443, 439, 424, 440, 439, 428, 424, 437, 428, 439, 433, 428, 437, 433, 429, 428, 435, 429, 433, 423, 429, 435, 425, 438, 441, 434, 422, 442, 434, 427, 422, 432, 427, 434, 436, 427, 432, 436, 426, 427, 438, 426, 436, 425, 426, 438, 440, 445, 444, 445, 440, 441, 441, 446, 445, 446, 441, 438, 438, 447, 446, 447, 438, 436, 436, 448, 447, 448, 436, 432, 432, 449, 448, 449, 432, 434, 434, 450, 449, 450, 434, 442, 442, 451, 450, 451, 442, 443, 443, 452, 451, 452, 443, 435, 435, 453, 452, 453, 435, 433, 433, 454, 453, 454, 433, 437, 437, 455, 454, 455, 437, 439, 439, 444, 455, 444, 439, 440, 456, 459, 457, 459, 456, 458, 460, 463, 462, 463, 460, 461, 456, 461, 460, 461, 456, 457, 457, 463, 461, 463, 457, 459, 459, 462, 463, 462, 459, 458, 458, 460, 462, 460, 458, 456, 464, 467, 465, 467, 464, 466, 468, 471, 470, 471, 468, 469, 464, 469, 468, 469, 464, 465, 465, 471, 469, 471, 465, 467, 467, 470, 471, 470, 467, 466, 466, 468, 470, 468, 466, 464, 472, 475, 473, 475, 472, 474, 476, 479, 478, 479, 476, 477, 473, 481, 472, 481, 473, 480, 480, 479, 477, 473, 479, 480, 473, 475, 479, 475, 478, 479, 478, 475, 474, 474, 476, 478, 474, 481, 476, 474, 472, 481, 482, 484, 485, 484, 482, 483, 477, 483, 482, 483, 477, 476, 476, 484, 483, 484, 476, 481, 481, 485, 484, 485, 481, 480, 480, 482, 485, 482, 480, 477, 486, 489, 487, 489, 486, 488, 490, 493, 492, 493, 490, 491, 487, 495, 486, 495, 487, 494, 494, 493, 491, 487, 493, 494, 487, 489, 493, 489, 492, 493, 492, 489, 488, 488, 490, 492, 488, 495, 490, 488, 486, 495, 496, 498, 499, 498, 496, 497, 491, 497, 496, 497, 491, 490, 490, 498, 497, 498, 490, 495, 495, 499, 498, 499, 495, 494, 494, 496, 499, 496, 494, 491, 500, 503, 501, 503, 500, 502, 504, 507, 506, 507, 504, 505, 500, 505, 504, 505, 500, 501, 501, 507, 505, 507, 501, 503, 503, 506, 507, 506, 503, 502, 502, 504, 506, 504, 502, 500, 510, 0x0200, 511, 0x0200, 510, 0x0202, 508, 515, 509, 515, 508, 513, 0x0200, 517, 513, 517, 0x0200, 516, 0x0200, 0x0202, 516, 0x0202, 517, 516, 517, 0x0202, 515, 515, 513, 517, 510, 527, 526, 527, 510, 511, 508, 529, 528, 529, 508, 509, 538, 536, 537, 536, 538, 535, 535, 539, 534, 539, 535, 538, 534, 540, 533, 540, 534, 539, 541, 533, 540, 533, 541, 532, 532, 530, 531, 530, 532, 541, 509, 521, 529, 525, 510, 526, 525, 0x0202, 510, 523, 0x0202, 525, 519, 0x0202, 523, 519, 515, 0x0202, 521, 515, 519, 509, 515, 521, 511, 524, 527, 520, 508, 528, 520, 513, 508, 518, 513, 520, 522, 513, 518, 522, 0x0200, 513, 524, 0x0200, 522, 511, 0x0200, 524, 526, 531, 530, 531, 526, 527, 527, 532, 531, 532, 527, 524, 524, 533, 532, 533, 524, 522, 522, 534, 533, 534, 522, 518, 518, 535, 534, 535, 518, 520, 520, 536, 535, 536, 520, 528, 528, 537, 536, 537, 528, 529, 529, 538, 537, 538, 529, 521, 521, 539, 538, 539, 521, 519, 519, 540, 539, 540, 519, 523, 523, 541, 540, 541, 523, 525, 525, 530, 541, 530, 525, 526, 542, 545, 543, 545, 542, 544, 546, 549, 548, 549, 546, 547, 542, 547, 546, 547, 542, 543, 543, 549, 547, 549, 543, 545, 545, 548, 549, 548, 545, 544, 544, 546, 548, 546, 544, 542, 550, 553, 551, 553, 550, 552, 554, 557, 556, 557, 554, 555, 550, 555, 554, 555, 550, 551, 551, 557, 555, 557, 551, 553, 553, 556, 557, 556, 553, 552, 552, 554, 556, 554, 552, 550, 568, 558, 559, 558, 568, 569, 570, 562, 563, 562, 570, 571, 571, 573, 572, 573, 571, 570, 572, 575, 574, 575, 572, 573, 575, 576, 574, 576, 575, 577, 576, 579, 578, 579, 576, 577, 568, 579, 569, 579, 568, 578, 582, 591, 590, 591, 582, 580, 591, 584, 592, 584, 591, 580, 587, 592, 584, 590, 586, 582, 589, 593, 583, 594, 588, 595, 593, 588, 594, 589, 588, 593, 588, 585, 595, 585, 594, 595, 594, 585, 581, 594, 583, 593, 583, 594, 581, 604, 600, 608, 600, 607, 608, 607, 600, 596, 607, 598, 606, 598, 607, 596, 605, 606, 598, 610, 602, 611, 609, 602, 610, 603, 602, 609, 602, 599, 611, 599, 610, 611, 610, 599, 597, 610, 601, 609, 601, 610, 597, 603, 609, 601, 606, 608, 607, 605, 608, 606, 605, 604, 608, 563, 603, 564, 563, 602, 603, 562, 602, 563, 562, 565, 602, 558, 587, 561, 586, 563, 564, 563, 573, 570, 586, 573, 563, 586, 575, 573, 587, 575, 586, 587, 577, 575, 587, 579, 577, 558, 579, 587, 558, 569, 579, 572, 562, 571, 562, 589, 565, 572, 589, 562, 574, 589, 572, 574, 588, 589, 576, 588, 574, 576, 560, 588, 578, 560, 576, 578, 559, 560, 578, 568, 559, 582, 586, 564, 585, 588, 560, 586, 592, 587, 590, 592, 586, 590, 591, 592, 600, 604, 561, 599, 602, 565, 604, 558, 561, 559, 605, 560, 558, 605, 559, 604, 605, 558, 601, 567, 564, 567, 601, 597, 581, 565, 583, 565, 581, 567, 581, 566, 567, 585, 566, 581, 566, 585, 560, 583, 565, 589, 598, 560, 605, 600, 566, 596, 566, 600, 561, 598, 566, 560, 566, 598, 596, 580, 561, 584, 561, 580, 566, 580, 567, 566, 584, 561, 587, 582, 567, 580, 567, 582, 564, 599, 567, 597, 567, 599, 565, 601, 564, 603, 622, 612, 623, 612, 622, 613, 624, 616, 625, 616, 624, 617, 625, 627, 624, 627, 625, 626, 626, 629, 627, 629, 626, 628, 629, 630, 631, 630, 629, 628, 630, 633, 631, 633, 630, 632, 622, 633, 632, 633, 622, 623, 636, 645, 634, 645, 636, 644, 645, 638, 634, 638, 645, 646, 641, 638, 646, 644, 636, 640, 643, 637, 647, 642, 648, 649, 642, 647, 648, 643, 647, 642, 642, 649, 639, 639, 648, 635, 648, 639, 649, 648, 637, 635, 637, 648, 647, 658, 662, 654, 654, 661, 650, 661, 654, 662, 661, 652, 650, 652, 661, 660, 659, 652, 660, 656, 664, 665, 656, 663, 664, 657, 663, 656, 656, 665, 653, 653, 664, 651, 664, 653, 665, 664, 655, 651, 655, 664, 663, 657, 655, 663, 659, 662, 658, 662, 660, 661, 659, 660, 662, 616, 656, 619, 657, 617, 618, 656, 617, 657, 616, 617, 656, 612, 633, 623, 627, 617, 624, 617, 640, 618, 627, 640, 617, 629, 640, 627, 629, 641, 640, 631, 641, 629, 633, 641, 631, 612, 641, 633, 612, 615, 641, 632, 613, 622, 632, 614, 613, 643, 616, 619, 616, 626, 625, 643, 626, 616, 643, 628, 626, 642, 628, 643, 642, 630, 628, 614, 630, 642, 632, 630, 614, 636, 618, 640, 639, 614, 642, 644, 646, 645, 646, 640, 641, 644, 640, 646, 654, 615, 658, 653, 619, 656, 659, 613, 614, 659, 612, 613, 658, 612, 659, 658, 615, 612, 655, 621, 651, 621, 655, 618, 635, 619, 621, 619, 635, 637, 635, 621, 620, 639, 620, 614, 620, 639, 635, 637, 643, 619, 652, 659, 614, 654, 620, 615, 620, 654, 650, 652, 620, 650, 620, 652, 614, 634, 615, 620, 615, 634, 638, 634, 620, 621, 638, 641, 615, 636, 621, 618, 621, 636, 634, 653, 621, 619, 621, 653, 651, 655, 657, 618, 670, 673, 672, 673, 670, 671, 667, 689, 666, 689, 667, 688, 668, 690, 669, 690, 668, 691, 702, 675, 701, 675, 702, 703, 673, 677, 676, 677, 673, 671, 688, 677, 671, 677, 688, 693, 709, 679, 708, 679, 709, 710, 670, 681, 680, 681, 670, 672, 691, 681, 672, 681, 691, 695, 703, 682, 675, 682, 703, 704, 676, 684, 683, 684, 676, 677, 693, 684, 677, 684, 693, 697, 710, 685, 679, 685, 710, 711, 680, 687, 686, 687, 680, 681, 695, 687, 681, 687, 695, 699, 671, 689, 688, 689, 671, 670, 683, 697, 696, 697, 683, 684, 672, 690, 691, 690, 672, 673, 686, 699, 698, 699, 686, 687, 673, 692, 690, 692, 673, 676, 700, 705, 706, 705, 700, 674, 670, 694, 689, 694, 670, 680, 707, 712, 713, 712, 707, 678, 676, 696, 692, 696, 676, 683, 674, 704, 705, 704, 674, 682, 680, 698, 694, 698, 680, 686, 678, 711, 712, 711, 678, 685, 669, 702, 701, 702, 669, 690, 690, 703, 702, 703, 690, 692, 692, 704, 703, 704, 692, 696, 696, 697, 704, 697, 705, 704, 705, 697, 693, 693, 706, 705, 706, 693, 688, 688, 700, 706, 700, 688, 667, 666, 709, 708, 709, 666, 689, 689, 710, 709, 710, 689, 694, 694, 711, 710, 711, 694, 698, 698, 699, 711, 699, 712, 711, 712, 699, 695, 695, 713, 712, 713, 695, 691, 691, 707, 713, 707, 691, 668, 718, 721, 720, 721, 718, 719, 715, 737, 714, 737, 715, 736, 716, 738, 717, 738, 716, 739, 750, 723, 749, 723, 750, 751, 721, 725, 724, 725, 721, 719, 736, 725, 719, 725, 736, 741, 757, 727, 756, 727, 757, 758, 718, 729, 728, 729, 718, 720, 739, 729, 720, 729, 739, 743, 751, 730, 723, 730, 751, 752, 724, 732, 731, 732, 724, 725, 741, 732, 725, 732, 741, 745, 758, 733, 727, 733, 758, 759, 728, 735, 734, 735, 728, 729, 743, 735, 729, 735, 743, 747, 719, 737, 736, 737, 719, 718, 731, 745, 744, 745, 731, 732, 720, 738, 739, 738, 720, 721, 734, 747, 746, 747, 734, 735, 721, 740, 738, 740, 721, 724, 748, 753, 754, 753, 748, 722, 718, 742, 737, 742, 718, 728, 755, 760, 761, 760, 755, 726, 724, 744, 740, 744, 724, 731, 722, 752, 753, 752, 722, 730, 728, 746, 742, 746, 728, 734, 726, 759, 760, 759, 726, 733, 717, 750, 749, 750, 717, 738, 738, 751, 750, 751, 738, 740, 740, 752, 751, 752, 740, 744, 744, 745, 752, 745, 753, 752, 753, 745, 741, 741, 754, 753, 754, 741, 736, 736, 748, 754, 748, 736, 715, 714, 757, 756, 757, 714, 737, 737, 758, 757, 758, 737, 742, 742, 759, 758, 759, 742, 746, 746, 747, 759, 747, 760, 759, 760, 747, 743, 743, 761, 760, 761, 743, 739, 739, 755, 761, 755, 739, 716, 762, 765, 763, 765, 762, 764, 766, 769, 0x0300, 769, 766, 767, 762, 767, 766, 767, 762, 763, 763, 769, 767, 769, 763, 765, 765, 0x0300, 769, 0x0300, 765, 764, 764, 766, 0x0300, 766, 764, 762, 770, 773, 0x0303, 773, 770, 772, 774, 777, 776, 777, 774, 775, 770, 775, 774, 775, 770, 0x0303, 0x0303, 777, 775, 777, 0x0303, 773, 773, 776, 777, 776, 773, 772, 772, 774, 776, 774, 772, 770, 787, 789, 786, 789, 787, 788, 791, 793, 790, 793, 791, 792, 778, 783, 782, 783, 778, 779, 789, 783, 779, 783, 789, 790, 781, 784, 785, 784, 781, 780, 780, 792, 784, 792, 780, 787, 780, 788, 787, 788, 780, 781, 779, 786, 789, 786, 779, 778, 785, 792, 791, 792, 785, 784, 782, 790, 793, 790, 782, 783, 786, 782, 793, 782, 786, 778, 787, 793, 792, 793, 787, 786, 788, 790, 789, 790, 788, 791, 788, 785, 791, 785, 788, 781, 794, 797, 795, 797, 794, 796, 798, 801, 800, 801, 798, 799, 795, 803, 794, 803, 795, 802, 802, 801, 799, 795, 801, 802, 795, 797, 801, 797, 800, 801, 800, 797, 796, 796, 798, 800, 796, 803, 798, 796, 794, 803, 804, 806, 807, 806, 804, 805, 799, 805, 804, 805, 799, 798, 798, 806, 805, 806, 798, 803, 803, 807, 806, 807, 803, 802, 802, 804, 807, 804, 802, 799, 808, 811, 809, 811, 808, 810, 812, 815, 814, 815, 812, 813, 809, 817, 808, 817, 809, 816, 816, 815, 813, 809, 815, 816, 809, 811, 815, 811, 814, 815, 814, 811, 810, 810, 812, 814, 810, 817, 812, 810, 808, 817, 818, 820, 821, 820, 818, 819, 813, 819, 818, 819, 813, 812, 812, 820, 819, 820, 812, 817, 817, 821, 820, 821, 817, 816, 816, 818, 821, 818, 816, 813, 822, 825, 823, 825, 822, 824, 826, 829, 828, 829, 826, 827, 822, 827, 826, 827, 822, 823, 823, 829, 827, 829, 823, 825, 825, 828, 829, 828, 825, 824, 824, 826, 828, 826, 824, 822, 830, 833, 831, 833, 830, 832, 834, 837, 836, 837, 834, 835, 830, 835, 834, 835, 830, 831, 831, 837, 835, 837, 831, 833, 833, 836, 837, 836, 833, 832, 832, 834, 836, 834, 832, 830, 838, 841, 839, 841, 838, 840, 842, 845, 844, 845, 842, 843, 838, 843, 842, 843, 838, 839, 839, 845, 843, 845, 839, 841, 841, 844, 845, 844, 841, 840, 840, 842, 844, 842, 840, 838, 846, 849, 847, 849, 846, 848, 850, 853, 852, 853, 850, 851, 846, 851, 850, 851, 846, 847, 847, 853, 851, 853, 847, 849, 849, 852, 853, 852, 849, 848, 848, 850, 852, 850, 848, 846, 854, 857, 855, 857, 854, 856, 858, 861, 860, 861, 858, 859, 854, 859, 858, 859, 854, 855, 855, 861, 859, 861, 855, 857, 857, 860, 861, 860, 857, 856, 856, 858, 860, 858, 856, 854]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterAbbey.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterAbbey.as new file mode 100644 index 0000000..3b8e575 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterAbbey.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class WestminsterAbbey extends Stage3DData { + + public function WestminsterAbbey(){ + vertices = new [41.2949, 37.6428, 252.249, 81.533, 37.6428, 250.703, 27.1399, 55.624, -3.40351, 12.7893, 58.8995, 0.458295, 12.6623, 55.624, -2.84734, 27.2668, 58.8995, -0.0978745, 211.41, 78.5964, 97.508, 12.6623, 46.5474, -2.84734, 12.7893, 46.5474, 0.458295, 13.036, 48.4223, 0.44882, 12.909, 48.4223, -2.85681, 13.7591, 50.1695, 0.421039, 13.6322, 50.1695, -2.88459, 14.9095, 51.6698, 0.376846, 14.7825, 51.6698, -2.92879, 15.619, 52.3121, -2.96092, 15.746, 52.3121, 0.344711, 16.2817, 52.821, -2.98638, 16.4087, 52.821, 0.319254, 18.0276, 53.5447, -3.05345, 18.1546, 53.5447, 0.252183, 19.9011, 53.7915, -3.12542, 20.0281, 53.7915, 0.180211, 21.7746, 53.5447, -3.1974, 21.9016, 53.5447, 0.108237, 23.5205, 52.821, -3.26447, 23.6475, 52.821, 0.0411682, 25.0197, 51.6698, -3.32206, 25.1467, 51.6698, -0.0164261, 26.297, 50.1695, -0.0606186, 26.17, 50.1695, -3.36625, 27.0202, 48.4223, -0.0883987, 26.8932, 48.4223, -3.39403, 27.2668, 46.5474, -0.0978745, 27.1399, 46.5474, -3.40351, 14.9179, 82.62, 217.397, 14.9179, 3.1104, 217.397, 15.7147, 82.62, 238.137, 15.7147, 3.1104, 238.137, 14.0107, 82.62, 193.78, 14.0107, 3.1104, 193.78, 14.7166, 82.62, 212.156, 14.7166, 3.1104, 212.156, 13.1224, 82.62, 170.658, 13.1224, 3.1104, 170.658, 13.8283, 82.62, 189.034, 13.8283, 3.1104, 189.034, 7.89818, 82.62, 34.6679, 7.89818, 3.1104, 34.6679, 7.90709, 82.62, 34.9, 8.5952, 82.62, 52.812, 8.60412, 3.1104, 53.0441, 8.60412, 82.62, 53.0441, 6.85005, 82.62, 7.38431, 6.85005, 3.1104, 7.38431, 7.68795, 82.62, 29.1956, 7.68795, 3.1104, 29.1956, 60.8617, 46.5474, -14.402, 210.692, 42.8652, 137.121, 108.261, 82.62, 189.569, 132.768, 3.11042, 188.628, 108.261, 3.11042, 189.569, 132.768, 82.62, 188.628, 104.595, 3.11042, 199.27, 104.242, 82.62, 190.081, 104.242, 3.11042, 190.081, 104.948, 82.62, 208.458, 104.948, 3.11042, 208.458, 105.167, 3.11042, 214.162, 106.005, 82.62, 235.973, 105.167, 82.62, 214.162, 105.586, 3.11042, 225.068, 106.005, 3.11042, 235.973, 211.289, 3.11041, 94.3607, 210.821, 3.11041, 82.1814, 102.899, 82.62, 50.012, 127.407, 3.11041, 49.0705, 102.899, 3.11041, 50.012, 127.407, 82.62, 49.0705, 98.8533, 82.62, 49.8094, 98.8533, 3.11041, 49.8094, 98.1474, 82.62, 31.4333, 98.1474, 3.1104, 31.4333, 97.9282, 3.1104, 25.7288, 97.0903, 82.62, 3.91757, 97.9282, 82.62, 25.7288, 97.0903, 3.1104, 3.91758, 218.288, 3.11041, 94.0919, 218.288, 42.8652, 94.0919, 1.68058, 31.7836, 53.9005, -16.4634, 3.11042, 54.5975, 1.66885, 3.11042, 53.9009, -16.4508, 31.7836, 54.597, -21.9359, 31.7836, 54.8077, -40.0799, 3.11042, 55.5047, -21.9476, 3.11042, 54.8081, -40.0672, 31.7836, 55.5042, -69.1688, 31.7836, 56.6223, -87.3128, 3.11042, 57.3193, -69.1805, 3.11042, 56.6227, -87.3001, 31.7836, 57.3188, -45.5523, 31.7836, 55.7149, -63.6963, 3.11042, 56.4119, -45.564, 3.11042, 55.7154, -63.6836, 31.7836, 56.4115, -92.7851, 31.7836, 57.5295, -110.929, 3.11042, 58.2265, -92.7969, 3.11042, 57.5299, -110.916, 31.7836, 58.226, -116.401, 31.7836, 58.4367, -134.545, 3.11042, 59.1338, -116.412, 3.11042, 58.4372, -134.532, 31.7836, 59.1333, 81.2609, 134.124, 243.622, 81.004, 82.62, 236.934, 81.004, 134.124, 236.934, 87.9489, 82.62, 243.365, 87.9489, 134.124, 243.365, 87.692, 134.124, 236.677, 87.692, 82.62, 236.677, 112.297, 82.62, 235.732, 115.898, 79.4903, 242.291, 115.979, 109.246, 244.417, 115.979, 79.4903, 244.417, 118.023, 79.4903, 242.209, 118.023, 109.246, 242.209, 113.682, 109.246, 235.678, 41.0229, 134.124, 245.168, 40.7659, 82.62, 238.48, 40.7659, 134.124, 238.48, 34.3349, 82.62, 245.424, 34.3349, 134.124, 245.424, 34.078, 134.124, 238.736, 34.078, 82.62, 238.736, 13.0741, 109.246, 246.241, 9.47321, 82.62, 239.682, 6.38614, 79.4903, 246.498, 6.46777, 109.246, 248.624, 6.46779, 79.4903, 248.624, 4.26074, 79.4903, 246.58, 4.26072, 109.246, 246.58, 8.78644, 82.62, 57.79, 9.13941, 3.11042, 66.9781, 8.78644, 3.11042, 57.79, 9.49238, 82.62, 76.1661, 9.49238, 3.11042, 76.1661, 210.692, 100.825, 137.121, 212.353, 112.745, 133.97, 208.793, 42.8652, 134.107, 210.455, 42.8652, 130.955, 208.793, 100.825, 134.107, 210.455, 100.825, 130.955, 214.015, 42.8652, 130.818, 214.015, 100.825, 130.818, 215.914, 42.8652, 133.833, 214.252, 42.8652, 136.985, 214.252, 100.825, 136.985, 215.914, 100.825, 133.833, 209.052, 42.8652, 94.4467, 207.391, 42.8652, 97.5984, 207.391, 100.825, 97.5984, 209.052, 100.825, 94.4467, 209.289, 42.8652, 100.613, 212.849, 42.8652, 100.477, 209.289, 100.825, 100.613, 212.849, 100.825, 100.477, 214.511, 42.8652, 97.3249, 212.613, 42.8652, 94.3099, 212.613, 100.825, 94.3099, 214.511, 100.825, 97.3249, 210.951, 112.745, 97.4616, 115.559, 109.246, 233.478, 117.766, 109.246, 235.522, 115.559, 92.3311, 233.478, 119.892, 92.3311, 235.44, 117.766, 92.3311, 235.522, 115.477, 92.3311, 231.352, 119.892, 3.11042, 235.44, 115.477, 3.11042, 231.352, 108.871, 109.246, 233.735, 108.789, 92.3311, 231.609, 108.871, 92.3311, 233.735, 108.789, 3.11042, 231.609, 104.702, 3.11042, 236.023, 109.291, 109.246, 244.674, 109.291, 92.3311, 244.674, 107.084, 92.3311, 242.63, 109.373, 92.3311, 246.799, 104.959, 3.11042, 242.711, 109.373, 3.11042, 246.799, 118.023, 92.3311, 242.21, 116.061, 92.3311, 246.542, 115.979, 92.3311, 244.417, 120.148, 92.3311, 242.128, 116.061, 3.11042, 246.542, 120.148, 3.11042, 242.128, 6.04754, 109.246, 237.685, 4.00379, 109.246, 239.892, 6.04754, 92.3311, 237.685, 1.87839, 92.3311, 239.974, 4.00379, 92.3311, 239.892, 5.96589, 92.3311, 235.559, 1.8784, 3.11042, 239.974, 5.9659, 3.11042, 235.559, 12.7356, 109.246, 237.428, 14.9426, 92.3311, 239.472, 12.6539, 92.3311, 235.302, 12.7356, 92.3311, 237.428, 17.068, 92.3311, 239.39, 12.6539, 3.11042, 235.302, 17.068, 3.11042, 239.39, 13.1558, 109.246, 248.367, 13.1558, 92.3311, 248.367, 13.2374, 92.3311, 250.492, 17.3249, 3.11042, 246.078, 13.2374, 3.11042, 250.492, 4.2607, 92.3311, 246.58, 6.54941, 92.3311, 250.749, 6.46776, 92.3311, 248.624, 2.1353, 92.3311, 246.661, 6.5494, 3.11042, 250.749, 2.1353, 3.11042, 246.661, 98.8235, 91.6879, -4.97533, 98.7781, 88.5603, -6.15557, 98.7781, 26.3946, -6.15551, 90.258, 88.5603, -5.8282, 90.258, 26.3946, -5.8282, 93.6474, 91.6879, -4.77649, 90.7704, 88.5603, 7.50938, 90.196, 22.0431, -7.44133, 98.7161, 22.0431, -7.76864, 90.196, 3.11042, -7.44133, 98.7161, 3.11042, -7.76864, 90.5324, 3.11042, 1.31318, 90.5324, 82.62, 1.31318, 90.7704, 82.62, 7.50938, 71.4353, 134.124, 4.90315, 69.4765, 127.184, 4.97841, 72.6237, 115.373, 4.8575, 69.4765, 115.373, 4.97841, 74.2056, 134.124, 4.79673, 72.6237, 82.62, 4.8575, 76.1645, 82.62, 4.72149, 76.1645, 134.124, 4.7215, 73.9487, 134.124, -1.89125, 71.1784, 134.124, -1.78482, 72.692, 159.978, 1.50595, 93.9107, 109.246, 2.07798, 93.9859, 109.246, 4.03684, 69.2195, 127.184, -1.70957, 98.4581, 91.6879, -2.83281, 102.799, 91.6879, 3.6983, 102.6, 91.6879, -1.4778, 97.2015, 143.687, 0.564389, 103.781, 88.5603, -1.52314, 69.4012, 134.124, 3.01954, 75.9828, 134.124, -0.00763627, 95.9448, 109.246, 3.96159, 69.2948, 134.124, 0.249291, 69.4765, 134.124, 4.97841, 76.0892, 134.124, 2.76262, 103.781, 26.3946, -1.5231, 104.108, 88.5603, 6.99699, 104.108, 26.3946, 6.997, 105.721, 22.0431, 6.93503, 105.394, 22.0431, -1.58507, 105.721, 3.11042, 6.93503, 105.394, 3.11042, -1.58506, 96.9666, 3.11042, 7.27134, 96.9666, 82.62, 7.27133, 32.2528, 134.124, 6.40848, 34.2117, 127.184, 6.33323, 31.0644, 115.373, 6.45413, 34.2117, 115.373, 6.33323, 29.4826, 134.124, 6.5149, 31.0644, 82.62, 6.45413, 27.5238, 82.62, 6.59012, 27.5238, 134.124, 6.59011, 29.2257, 134.124, -0.173076, 31.9959, 134.124, -0.279498, 30.7392, 159.978, 3.1177, 9.62698, 109.246, 5.31592, 9.70223, 109.246, 7.27479, 2.83257, 109.246, 2.8026, 33.9548, 127.184, -0.35475, 4.71618, 91.6879, 0.768481, 9.36368, 91.6879, -1.53863, 0.888854, 91.6879, 7.61332, 0.690008, 91.6879, 2.43721, 4.18758, 91.6879, -1.33979, 6.22977, 143.687, 4.05926, -0.490223, 88.5603, 2.48255, -0.490211, 3.11042, 2.48255, 34.1365, 134.124, 4.37436, 27.342, 134.124, 1.86104, 34.03, 134.124, 1.60411, 9.52056, 109.246, 2.54567, 34.2117, 134.124, 6.33323, 27.4485, 134.124, 4.63129, 4.14227, 26.3946, -2.52006, 12.6624, 88.5603, -2.84737, 12.6624, 26.3946, -2.84737, 13.1747, 88.5603, 10.4902, 12.6004, 22.0431, -4.46049, 4.0803, 22.0431, -4.13318, 12.6004, 3.11042, -4.46049, 4.0803, 3.11042, -4.13318, 12.9367, 3.11042, 4.29402, 12.9367, 82.62, 4.29402, 13.1747, 82.62, 10.4902, -0.490211, 26.3946, 2.48251, -0.162904, 88.5603, 11.0026, -0.162904, 26.3946, 11.0026, -1.77603, 22.0431, 11.0646, -2.10334, 22.0431, 2.54448, -1.77603, 3.11042, 11.0646, -2.10334, 3.11042, 2.54448, 6.97848, 3.11042, 10.7283, 6.97848, 82.62, 10.7283, 7.48644, 109.246, 0.662059, 95.6879, 91.6879, -2.72639, 2.83257, 91.6879, 2.8026, 4.14225, 3.11042, -2.52002, 7.48644, 91.6879, 0.662059, 100.599, 109.246, 1.82105, 95.6879, 109.246, -2.72639, 93.8043, 109.246, -0.692273, 98.4581, 109.246, -2.83281, 100.492, 109.246, -0.949201, 7.74336, 109.246, 7.35004, 98.7781, 3.11042, -6.15557, 4.97311, 109.246, 7.45646, 9.70225, 91.6879, 7.27473, 4.14224, 88.5603, -2.52002, 4.97311, 91.6879, 7.45646, 98.7151, 109.246, 3.85517, 4.71618, 109.246, 0.768481, 2.93899, 109.246, 5.57285, 93.9859, 91.6879, 4.0369, 103.781, 3.11042, -1.52314, 100.599, 91.6879, 1.82105, 98.7151, 91.6879, 3.85517, 2.93899, 91.6879, 5.57285, 93.8043, 91.6879, -0.692273, 9.52056, 91.6879, 2.54565, 100.492, 91.6879, -0.949201, 107.011, 92.3311, 240.712, 109.136, 109.246, 240.63, 103.336, 82.62, 240.853, 104.885, 92.3311, 240.793, 104.702, 82.62, 236.023, 87.7657, 127.856, 238.595, 95.4962, 112.619, 238.298, 109.026, 117.559, 237.778, 87.8205, 129.283, 240.021, 103.282, 118.986, 239.427, 103.336, 117.559, 240.853, 109.081, 118.986, 239.204, 87.8753, 127.856, 241.447, 87.8753, 116.223, 241.447, 104.959, 82.62, 242.711, 15.1258, 92.3311, 244.242, 13.0004, 109.246, 244.323, 18.8002, 82.62, 244.101, 15.0163, 109.246, 241.39, 17.1416, 82.62, 241.308, 17.068, 82.62, 239.39, 17.1416, 92.3311, 241.308, 34.1517, 116.223, 240.654, 34.1516, 127.856, 240.654, 26.4211, 112.619, 240.951, 12.8909, 117.559, 241.471, 12.8909, 109.246, 241.471, 34.2064, 129.283, 242.081, 18.7454, 118.986, 242.674, 12.9456, 118.986, 242.897, 34.2612, 127.856, 243.507, 26.5307, 112.619, 243.804, 17.2512, 82.62, 244.16, 17.3249, 82.62, 246.078, 33.9094, 130.162, -1.53509, 26.9093, 56.9731, -9.40359, 27.2668, 29.3162, -0.0979332, 26.9093, 29.3162, -9.40359, 27.2214, 130.162, -1.27816, 33.9548, 29.3162, -0.354861, 33.5973, 29.3162, -9.66052, 33.5973, 56.9731, -9.66052, 69.1742, 130.162, -2.88977, 75.55, 56.9731, -11.2721, 75.9075, 29.3162, -1.96646, 75.55, 29.3162, -11.2721, 75.8622, 130.162, -3.14669, 69.2195, 29.3162, -1.70954, 68.8621, 29.3162, -11.0152, 68.8621, 56.9731, -11.0152, -205.368, 93.4219, 174.066, -203.942, 87.8528, 174.012, -204.763, 107.852, 152.649, -203.337, 113.421, 152.595, -206.189, 113.421, 152.704, -204.763, 118.99, 152.649, -203.942, 98.991, 174.012, -202.516, 93.4219, 173.957, -205.368, 82.2836, 174.066, -203.942, 76.7145, 174.012, -204.763, 96.7137, 152.649, -203.337, 102.283, 152.595, -206.189, 102.283, 152.704, -202.516, 82.2836, 173.957, 109.081, 3.11042, 239.204, 112.425, 119.085, 239.076, 108.681, 3.11041, 228.779, 115.369, 3.11041, 228.522, 112.115, 119.085, 231.011, 108.771, 109.246, 231.139, 115.459, 109.246, 230.882, 112.025, 82.3842, 228.65, 108.771, 70.2523, 231.139, 108.681, 70.2523, 228.779, 112.115, 82.3842, 231.011, 115.369, 70.2523, 228.522, 115.459, 70.2523, 230.882, 112.735, 119.085, 247.141, 116.079, 109.246, 247.012, 109.391, 109.246, 247.269, 112.826, 82.3842, 249.501, 116.079, 70.2523, 247.012, 116.17, 70.2523, 249.373, 112.735, 82.3842, 247.141, 109.482, 70.2523, 249.629, 112.554, 3.11042, 242.42, 112.297, 3.11042, 235.732, 112.554, 109.246, 242.42, 122.979, 3.11041, 242.019, 122.722, 3.11041, 235.331, 120.49, 119.085, 238.766, 120.619, 109.246, 242.11, 120.362, 109.246, 235.422, 122.851, 82.3842, 238.675, 120.619, 70.2523, 242.11, 122.979, 70.2523, 242.019, 120.49, 82.3842, 238.766, 122.722, 70.2523, 235.331, 120.362, 70.2523, 235.422, 6.25769, 3.11042, 243.154, 9.60167, 119.085, 243.026, 12.5452, 3.11041, 232.472, 5.8572, 3.11041, 232.729, 9.29187, 119.085, 234.961, 12.6359, 109.246, 234.832, 5.94788, 109.246, 235.089, 9.20119, 82.3842, 232.6, 12.6359, 70.2523, 234.832, 12.5452, 70.2523, 232.472, 9.29187, 82.3842, 234.961, 5.8572, 70.2523, 232.729, 5.94788, 70.2523, 235.089, 9.9115, 119.085, 251.091, 6.56751, 109.246, 251.219, 13.2555, 109.246, 250.962, 10.0022, 82.3842, 253.451, 6.56751, 70.2523, 251.219, 6.65819, 70.2523, 253.58, 9.9115, 82.3842, 251.091, 13.3462, 70.2523, 253.323, 13.2555, 70.2523, 250.962, 9.7301, 3.11042, 246.37, 9.47317, 3.11042, 239.682, 9.7301, 109.246, 246.37, -0.695278, 3.11041, 246.77, -0.952206, 3.11041, 240.082, 1.53672, 119.085, 243.336, 1.66518, 109.246, 246.68, 1.40826, 109.246, 239.992, -0.823743, 82.3842, 243.426, 1.66518, 70.2523, 246.68, -0.695278, 70.2523, 246.77, 1.53672, 82.3842, 243.336, -0.952206, 70.2523, 240.082, 1.40826, 70.2523, 239.992, 34.3349, 124.286, 245.425, 41.0229, 3.11042, 245.168, 34.3349, 3.11042, 245.425, 41.0229, 124.286, 245.168, 34.5162, 71.2697, 250.145, 34.5162, 124.286, 250.145, 34.6069, 71.2697, 252.506, 34.6069, 3.11042, 252.506, 34.6069, 37.6429, 252.506, 41.2949, 3.11042, 252.249, 41.2949, 71.2697, 252.249, 41.2042, 71.2697, 249.889, 41.2042, 124.286, 249.889, 37.8602, 81.1083, 250.017, 37.9509, 81.1083, 252.377, 37.8602, 134.124, 250.017, 87.9489, 124.286, 243.365, 81.2609, 3.11042, 243.622, 87.9489, 3.11042, 243.365, 81.2609, 124.286, 243.622, 88.1303, 71.2697, 248.086, 88.1303, 124.286, 248.086, 88.2209, 71.2697, 250.446, 88.2209, 3.11042, 250.446, 88.2209, 37.6429, 250.446, 81.533, 3.11042, 250.703, 81.533, 71.2697, 250.703, 81.4423, 71.2697, 248.343, 81.4423, 124.286, 248.343, 84.7863, 81.1083, 248.214, 84.877, 81.1083, 250.575, 84.7863, 134.124, 248.214, 24.3829, 97.732, 0.0128929, 26.3436, 103.451, 6.63542, 24.6399, 97.732, 6.70087, 26.0866, 103.451, -0.0525574, 26.3436, 130.162, 6.63542, 26.0866, 130.162, -0.0525574, 24.6399, 82.62, 6.70087, 24.3829, 82.62, 0.0128929, 27.2669, 82.62, -0.0978973, 78.7915, 97.732, -2.07726, 77.3447, 103.451, 4.67617, 79.0484, 97.732, 4.61072, 77.0878, 103.451, -2.01181, 77.3447, 130.162, 4.67617, 77.0878, 130.162, -2.01182, 79.0484, 82.62, 4.61072, 78.7915, 82.62, -2.07726, 75.9075, 82.62, -1.96647, 212.32, 82.62, 97.4731, 210.571, 78.5964, 133.974, 68.0127, 46.5474, -15.1517, 60.8646, 46.5474, -14.3752, 28.8612, 46.5474, -10.8985, 209.052, 82.62, 94.4467, 211.526, 82.62, 100.527, 211.574, 82.62, 101.773, 109.028, 109.246, 237.819, 111.169, 109.246, 242.473, 109.134, 109.246, 240.589, 115.716, 109.246, 237.562, 12.8924, 109.246, 241.512, 12.9989, 109.246, 244.282, 10.8583, 109.246, 239.629, 12.8172, 82.62, 239.553, 106.827, 109.246, 235.942, 106.827, 92.3311, 235.942, 106.901, 109.246, 237.86, 17.3249, 92.3311, 246.078, 17.068, 92.3311, 239.39, 17.1416, 92.3311, 241.308, 18.6906, 82.62, 241.248, 17.2512, 92.3311, 244.16, -203.942, 87.8528, 174.012, 112.425, 119.085, 239.076, 115.769, 109.246, 238.947, 115.769, 3.11042, 238.947, 12.9457, 109.246, 242.897, 12.9457, 3.11042, 242.897, 6.2577, 109.246, 243.154, 9.60167, 119.085, 243.026, 212.32, 78.5964, 97.4731, 13.3462, 3.11042, 253.323, 109.482, 3.11042, 249.629, 68.0091, 46.5474, -15.1845, 217.82, 42.8652, 81.9125, 212.808, 78.5964, 133.888, 113.939, 109.246, 242.366, 115.898, 109.246, 242.291, 12.8172, 109.246, 239.553, 6.20447, 109.246, 241.769, 6.38612, 109.246, 246.498, 104.702, 92.3311, 236.023, 14.9426, 109.246, 239.472, 15.1995, 92.3311, 246.16, 84.6049, 134.124, 243.493, 37.6789, 134.124, 245.296, 69.2195, 134.124, -1.70955, 107.011, 109.246, 240.712, 103.336, 106.417, 240.853, 106.901, 92.3311, 237.86, 104.776, 92.3311, 237.941, 103.227, 117.559, 238.001, 95.6058, 112.619, 241.15, 104.885, 82.62, 240.793, 15.1258, 109.246, 244.242, 34.2612, 116.223, 243.507, 109.081, 3.11042, 239.204, 115.769, 109.246, 238.947, 109.081, 109.246, 239.204, 112.425, 119.085, 239.076, 116.17, 3.11041, 249.373, 109.391, 70.2523, 247.269, 12.9457, 3.11042, 242.897, 9.60167, 119.085, 243.026, 6.65819, 3.11041, 253.58, 109.026, 109.246, 237.778, 115.769, 3.11042, 238.947, 6.2577, 109.246, 243.154, 6.25769, 3.11042, 243.154, 12.9457, 109.246, 242.897, 112.297, 109.246, 235.732, 104.959, 92.3311, 242.711, 18.8002, 106.417, 244.101, 18.6906, 117.559, 241.248, 109.081, 109.246, 239.204, 112.297, 109.246, 235.732, 9.47319, 109.246, 239.682, 112.297, 109.246, 235.732, 115.822, 109.246, 240.332, 6.1292, 109.246, 239.81, 15.1995, 109.246, 246.16, 75.9075, 134.124, -1.96648, 33.9548, 134.124, -0.354806, 103.227, 82.62, 238.001, 104.776, 82.62, 237.941, 15.0163, 109.246, 241.39, 18.8002, 117.559, 244.101, 213.718, 82.62, 133.853, 210.821, 82.62, 82.1814, 110.912, 109.246, 235.785, 108.953, 109.246, 235.86, 8.34501, 109.246, 246.423, 103.227, 106.417, 238.001, 87.7657, 116.223, 238.595, 15.1995, 109.246, 246.16, 14.9426, 109.246, 239.472, 13.0004, 117.559, 244.323, 81.2609, 82.62, 243.622, 209.052, 3.11041, 94.4467, 209.173, 78.5964, 97.594, 108.953, 82.62, 235.86, 107.084, 109.246, 242.63, 109.136, 117.559, 240.63, 18.6906, 106.417, 241.248, 9.47319, 109.246, 239.682, 15.0162, 92.3311, 241.39, 27.2668, 134.124, -0.097888, 10.8583, 109.246, 239.629, 154.809, 30.0841, 8.53884, 145.876, 50.0833, -10.8832, 145.876, 63.2399, -10.8832, 154.809, 43.2407, 8.53884, 189.541, 30.0841, -28.9684, 169.491, 50.0833, -36.3852, 169.491, 63.2399, -36.3852, 189.541, 43.2407, -28.9684, 98.9906, 30.0841, -112.819, 107.924, 50.0833, -93.3971, 107.924, 63.2399, -93.3971, 98.9906, 43.2407, -112.819, 150.072, 30.0841, -114.782, 142.655, 50.0833, -94.7314, 142.655, 63.2399, -94.7314, 150.072, 43.2407, -114.782, 187.579, 30.0841, -80.0494, 168.157, 50.0833, -71.1162, 168.157, 63.2399, -71.1162, 187.579, 43.2407, -80.0494, -159.136, 108.557, 109.023, -159.136, 119.696, 109.023, -159.957, 99.6963, 87.6611, -182.752, 108.557, 109.931, -182.752, 119.696, 109.931, -183.573, 99.6963, 88.5683, -109.476, 87.8528, 170.383, -110.297, 118.99, 149.02, -109.476, 98.991, 170.383, -180.325, 87.8528, 173.104, -181.146, 118.99, 151.742, -180.325, 98.991, 173.104, -133.093, 87.8528, 171.29, -133.913, 118.99, 149.928, -133.093, 98.991, 171.29, -156.709, 87.8528, 172.197, -157.53, 107.852, 150.835, -157.53, 118.99, 150.835, -156.709, 98.991, 172.197, 17.6695, 87.8528, 214.667, 39.0317, 107.852, 213.846, 39.0317, 118.99, 213.846, 17.6695, 98.991, 214.667, -85.8597, 87.8528, 169.475, -86.6804, 107.852, 148.113, -86.6804, 118.99, 148.113, -85.8597, 98.991, 169.475, -38.6268, 87.8528, 167.661, -39.4475, 118.99, 146.299, -38.6268, 98.991, 167.661, -62.2431, 87.8528, 168.568, -63.0638, 118.99, 147.206, -62.2431, 98.991, 168.568, 38.1244, 107.852, 190.23, 38.1244, 118.99, 190.23, 16.7622, 98.991, 191.051, -15.0104, 87.8528, 166.754, -15.8311, 107.852, 145.391, -15.8311, 118.99, 145.391, -15.0104, 98.991, 166.754, 37.2551, 107.852, 167.602, 37.2551, 118.99, 167.602, 15.8929, 98.991, 168.423, 9.55491, 88.5214, 3.43894, 30.9171, 108.521, 2.61828, 30.9171, 119.659, 2.61828, 9.55491, 99.6597, 3.43894, 12.9311, 87.8528, 165.68, 12.1105, 107.852, 144.318, 12.1105, 118.99, 144.318, 12.9311, 98.991, 165.68, 100.429, 87.8528, 165.175, 79.0668, 107.852, 165.996, 79.0668, 118.99, 165.996, 100.429, 98.991, 165.175, 183.947, 87.8528, 132.014, 164.587, 107.852, 122.945, 164.587, 118.99, 122.945, 183.947, 98.991, 132.014, 166.86, 87.8528, 152.214, 159.513, 118.99, 132.138, 166.86, 98.991, 152.214, 150.223, 107.852, 137.596, 150.223, 118.99, 137.596, 144.008, 98.991, 158.051, 126.788, 87.8528, 161.306, 125.967, 118.99, 139.944, 126.788, 98.991, 161.306, 103.172, 87.8528, 162.214, 102.351, 118.99, 140.851, 103.172, 98.991, 162.214, 93.8386, 88.5214, 0.201096, 72.4764, 108.521, 1.02175, 72.4764, 119.659, 1.02175, 93.8386, 99.6597, 0.201096, 103.281, 76.7145, 239.427, 81.9193, 96.7137, 240.248, 81.9193, 107.852, 240.248, 103.281, 87.8528, 239.427, 18.7454, 76.7145, 242.674, 40.1076, 96.7137, 241.854, 40.1076, 107.852, 241.854, 18.7454, 87.8528, 242.674, -136.576, 82.8019, 80.6056, -136.576, 93.9402, 80.6056, -137.397, 73.941, 59.2434, -112.96, 82.8019, 79.6982, -112.96, 93.9402, 79.6982, -113.781, 73.941, 58.336, -89.3433, 82.8019, 78.791, -89.3433, 93.9402, 78.791, -90.164, 73.941, 57.4288, -65.727, 82.8019, 77.8838, -65.727, 93.9402, 77.8838, -66.5476, 73.941, 56.5216, -42.1106, 82.8019, 76.9765, -42.1106, 93.9402, 76.9765, -42.9312, 73.941, 55.6143, -18.4941, 82.8019, 76.0692, -18.4941, 93.9402, 76.0692, -19.3148, 73.941, 54.707, 10.5042, 107.852, 102.506, 10.5042, 118.99, 102.506, 9.68359, 98.991, 81.1441, 96.9623, 87.8528, 74.9348, 75.6001, 107.852, 75.7555, 75.6001, 118.99, 75.7555, 96.9623, 98.991, 74.9348, 164.171, 107.852, 112.118, 164.171, 118.99, 112.118, 182.778, 98.991, 101.591, 158.407, 107.852, 103.342, 158.407, 118.99, 103.342, 164.192, 98.991, 82.7618, 148.725, 107.852, 98.6125, 148.725, 118.99, 98.6125, 140.96, 98.991, 78.6948, 124.361, 107.852, 98.1324, 124.361, 118.99, 98.1324, 123.541, 98.991, 76.7702, 100.745, 107.852, 99.0396, 100.745, 118.99, 99.0396, 99.9241, 98.991, 77.6774, -206.369, 108.557, 110.838, -206.369, 119.696, 110.838, -207.189, 99.6963, 89.4755, 101.298, 88.384, 187.803, 79.9361, 119.522, 188.624, 101.298, 99.5223, 187.803, 80.8433, 119.522, 212.24, 102.206, 99.5223, 211.419, 95.1858, 88.558, 28.6907, 73.8236, 119.696, 29.5113, 95.1858, 99.6963, 28.6907, 96.093, 88.558, 52.3071, 74.7309, 119.696, 53.1278, 96.093, 99.6963, 52.3071, 32.012, 107.852, 31.1176, 32.012, 118.99, 31.1176, 10.6498, 98.991, 31.9382, 32.9192, 107.852, 54.734, 32.9192, 118.99, 54.734, 11.557, 98.991, 55.5547, 33.7884, 107.852, 77.3617, 33.7884, 118.99, 77.3617, 12.4262, 98.991, 78.1824, -17.4372, 108.557, 103.58, -17.4372, 119.696, 103.58, -18.2578, 99.6963, 82.2175, -88.2865, 108.557, 106.301, -88.2865, 119.696, 106.301, -89.1072, 99.6963, 84.9393, -64.6702, 108.557, 105.394, -64.6702, 119.696, 105.394, -65.4908, 99.6963, 84.0321, -111.903, 108.557, 107.209, -111.903, 119.696, 107.209, -112.724, 99.6963, 85.8465, -41.8743, 88.558, 83.1247, -41.0537, 108.557, 104.487, -41.0537, 119.696, 104.487, -41.8743, 99.6963, 83.1247, -135.519, 108.557, 108.116, -135.519, 119.696, 108.116, -136.34, 99.6963, 86.7537, -110.297, 107.852, 149.02, 159.513, 107.852, 132.138, 144.008, 87.8528, 158.051, -113.781, 62.8027, 58.336, 9.68359, 87.8528, 81.1441, 79.9361, 108.383, 188.624, -65.4908, 88.558, 84.0321, 15.8929, 87.8528, 168.423, -137.397, 62.8027, 59.2434, 102.206, 88.384, 211.419, -18.2578, 88.558, 82.2175, -159.957, 88.558, 87.6611, 164.192, 87.8528, 82.7618, 99.9241, 87.8528, 77.6774, -89.1072, 88.558, 84.9393, -112.724, 88.558, 85.8465, -183.573, 88.558, 88.5683, -39.4475, 107.852, 146.299, -19.3148, 62.8027, 54.707, 182.778, 87.8528, 101.591, 140.96, 87.8528, 78.6948, 11.557, 87.8528, 55.5547, -181.146, 107.852, 151.742, -133.913, 107.852, 149.928, -63.0638, 107.852, 147.206, 16.7622, 87.8528, 191.051, 125.967, 107.852, 139.944, 102.351, 107.852, 140.851, 123.541, 87.8528, 76.7702, -207.189, 88.558, 89.4755, 80.8433, 108.383, 212.24, 73.8236, 108.557, 29.5113, 74.7309, 108.557, 53.1278, 10.6498, 87.8528, 31.9382, 12.4262, 87.8528, 78.1824, -90.164, 62.8027, 57.4288, -66.5476, 62.8027, 56.5216, -42.9312, 62.8027, 55.6143, -136.34, 88.558, 86.7537, 142.655, 82.62, -94.7313, 107.924, 82.62, -93.3971, 126.9, 146.493, -52.1402, 142.655, -0.826584, -94.7313, 107.924, -0.826584, -93.3971, 84.3086, 82.62, -67.8952, 84.3086, -0.826584, -67.8952, 111.145, 82.62, -9.54898, 145.876, 82.62, -10.8832, 111.145, -0.826584, -9.54898, 145.876, -0.826584, -10.8832, 169.491, 82.62, -36.3852, 169.491, -0.826584, -36.3852, 168.157, 82.62, -71.1162, 168.157, -0.826584, -71.1162, 85.6429, 82.62, -33.1641, 85.6429, -0.826584, -33.1641, 109.028, 109.246, 237.819, 108.953, 109.246, 235.86, 109.21, 82.62, 242.548, 109.134, 109.246, 240.589, 113.939, 109.246, 242.366, 112.425, 143.687, 239.076, 115.898, 109.246, 242.291, 12.8924, 109.246, 241.512, 13.0741, 82.62, 246.241, 9.60167, 143.687, 243.026, 9.47319, 109.246, 239.682, 6.38612, 109.246, 246.498, 115.716, 109.246, 237.562, 12.9989, 109.246, 244.282, 6.20447, 109.246, 241.769, 8.34501, 109.246, 246.423, 115.641, 109.246, 235.603, 12.8172, 109.246, 239.553, 11.1153, 109.246, 246.317, 8.08808, 109.246, 239.735, 6.31089, 109.246, 244.539, 109.21, 109.246, 242.548, 112.297, 109.246, 235.732, -232.775, 254.423, 75.0539, -232.631, 229.196, 78.7919, -229.037, 229.196, 74.9103, -232.918, 229.196, 71.316, -236.512, 229.196, 75.1975, -231.485, 254.423, 108.604, -231.342, 229.196, 112.342, -227.748, 229.196, 108.461, -231.629, 229.196, 104.867, -235.223, 229.196, 108.748, -265.932, 254.423, 76.3276, -265.788, 229.196, 80.0656, -262.194, 229.196, 76.184, -266.075, 229.196, 72.5897, -269.669, 229.196, 76.4712, -264.643, 254.423, 109.878, -264.499, 229.196, 113.616, -260.905, 229.196, 109.735, -264.786, 229.196, 106.14, -268.381, 229.196, 110.022, -229.536, 254.423, 156.961, -229.393, 229.196, 160.698, -225.798, 229.196, 156.817, -229.68, 229.196, 153.223, -233.274, 229.196, 157.104, -228.247, 254.423, 190.511, -228.104, 229.196, 194.249, -224.509, 229.196, 190.367, -228.391, 229.196, 186.773, -231.985, 229.196, 190.655, -262.693, 254.423, 158.234, -262.55, 229.196, 161.972, -258.956, 229.196, 158.091, -262.837, 229.196, 154.496, -266.431, 229.196, 158.378, -261.405, 254.423, 191.785, -261.261, 229.196, 195.523, -257.667, 229.196, 191.641, -261.548, 229.196, 188.047, -265.143, 229.196, 191.928, 87.7672, 134.124, 238.636, 84.4765, 170.387, 240.149, 81.1857, 134.124, 241.663, 82.9629, 134.124, 236.859, 85.9901, 134.124, 243.44, 36.0368, 134.124, 238.661, 37.5504, 170.387, 241.952, 34.2597, 134.124, 243.466, 39.064, 134.124, 245.243, 40.8412, 134.124, 240.438, 160.518, 62.8361, 20.9504, 157.402, -2.00765, 7.34616, 164.707, -2.00765, 23.2279, 159.521, -2.00765, 25.6133, 152.216, -2.00765, 9.73162, 154.809, 62.8361, 8.5389, 202.354, 62.8361, -24.2288, 190.531, -2.00765, -31.6455, 206.927, -2.00765, -25.5807, 204.946, -2.00765, -20.2266, 188.551, -2.00765, -26.2914, 189.541, 62.8361, -28.9685, 93.282, 62.8361, -125.231, 96.3974, -2.00765, -111.626, 89.0926, -2.00765, -127.508, 94.279, -2.00765, -129.894, 101.584, -2.00765, -114.012, 98.9906, 62.8361, -112.819, 154.811, 62.8361, -127.594, 147.395, -2.00765, -115.772, 153.459, -2.00765, -132.167, 158.813, -2.00765, -130.187, 152.749, -2.00765, -113.791, 150.072, 62.8361, -114.781, 199.99, 62.8361, -85.7581, 186.386, -2.00765, -82.6426, 202.268, -2.00765, -89.9474, 204.653, -2.00765, -84.7611, 188.772, -2.00765, -77.4563, 187.579, 62.8361, -80.0495, 56.4276, 169.162, 121.679, 210.453, 82.62, 130.923, 212.691, 82.62, 130.837, 76.2922, 82.62, 93.771, 77.623, 82.62, 97.0159, 93.729, 82.62, -2.65109, 96.8336, 82.62, -2.77036, 75.3955, 82.62, 3.76608, 72.8384, 82.62, 3.86432, 207.391, 82.62, 97.5984, 211.574, 82.62, 101.773, 75.1764, 82.62, -1.93837, 98.8673, 82.62, 50.167, 201.942, 82.62, 129.825, 104.229, 82.62, 189.724, 151.207, 82.62, 194.487, 82.0477, 82.62, 243.592, 106.425, 82.62, 246.912, 208.793, 82.62, 134.107, 62.0945, 29.3162, -69.6298, 61.4139, 66.0073, 251.476, 41.1862, 37.6428, 249.418, 61.3052, 66.0073, 248.645, 81.4242, 37.6428, 247.873, 14.7751, 37.6428, 250.433, 13.3462, 37.6428, 253.323, 13.2374, 37.6428, 250.492, 14.8838, 37.6428, 253.264, 23.9766, 48.6674, 252.914, 23.8678, 48.6674, 250.084, 109.373, 37.6428, 246.799, 107.944, 37.6428, 249.689, 107.835, 37.6428, 246.858, 109.482, 37.6428, 249.629, 98.7426, 48.6674, 247.207, 98.8513, 48.6674, 250.038, 89.6499, 37.6428, 247.557, 89.7586, 37.6428, 250.387, 34.4982, 37.6428, 249.675, 33.0693, 37.6428, 252.565, 32.9605, 37.6428, 249.734, 88.1122, 37.6428, 247.616, 57.4904, 46.5474, -112.011, 57.4904, 3.1104, -112.011, 62.0945, 3.1104, -69.6298, 68.0127, 46.5474, -15.1517, 69.4719, 46.5474, -1.71923, 69.4719, 29.3162, -1.71923, -205.878, 44.0384, 2.82067, -217.437, 31.7836, 3.36577, -218.057, 31.7836, 3.39499, -209.858, 31.7836, 3.00837, -201.779, 39.9136, 2.62736, -219.717, 31.7836, -31.8141, -227.836, 23.6138, -31.4312, -227.836, 31.7836, -31.4312, -216.479, 39.9136, 36.8428, -208.281, 31.7836, 36.4562, -224.598, 31.7836, 37.2257, 91.3655, 29.3162, -70.7543, 91.3655, 3.1104, -70.7543, 93.9814, 29.3162, -2.66079, -292.5, 34.1458, 106.457, -278.028, 29.4214, 105.467, -306.979, 29.4214, 107.339, 88.1122, 82.62, 247.616, 16.185, 82.62, 250.379, 34.4982, 82.62, 249.675, 48.4369, 51.9214, -13.0251, -207.517, 60.4569, -83.3028, -207.931, 60.4569, -89.7166, -207.724, 64.6931, -86.5097, 17.9201, 54.7629, -250.952, -4.96922, 44.3745, -247.277, -5.09678, 44.3745, -248.451, 18.0476, 54.7629, -249.777, 18.0476, 52.4007, -249.777, -4.96922, 42.0123, -247.277, 41.0645, 44.3745, -252.278, 41.0645, 42.0123, -252.278, 7.98553, 44.3745, -128.026, 7.98553, 42.0123, -128.026, 40.937, 44.3745, -253.452, 42.1112, 44.3745, -253.58, 54.0193, 44.3745, -133.027, 55.1935, 44.3745, -133.155, 6.81133, 44.3745, -127.899, -6.27098, 44.3745, -248.324, 55.1935, 60.4569, -133.155, 54.0193, 42.0123, -133.027, -277.876, 31.7836, 107.512, -310.623, 29.4214, 108.758, -277.876, 29.4214, 107.512, -310.623, 31.7836, 108.758, -315.112, 31.7836, -18.4276, -315.112, 29.4214, -18.4276, -307.696, 31.7836, 96.2482, -307.696, 29.4214, 96.2482, -276.572, 29.4214, -70.7259, -276.572, 31.7836, -70.7259, -268.593, 29.4214, 52.6549, -268.517, 31.7836, 53.8397, -268.517, 29.4214, 53.8397, -314.449, 29.4214, 105.397, -314.449, 31.7836, 105.397, -314.777, 31.7836, 100.315, -314.777, 29.4214, 100.315, -311.416, 29.4214, 96.4887, -311.416, 31.7836, 96.4887, -279.921, 31.7836, 54.2778, -279.921, 29.4214, 54.2778, -318.319, 29.4214, -68.0262, -318.319, 31.7836, -68.0262, -317.789, 29.4214, -59.8234, -317.789, 31.7836, -59.8234, -142.717, 31.7836, -31.442, -142.717, 29.4214, -31.442, -168.659, 29.4214, -29.7644, -168.659, 31.7836, -29.7644, -145.49, 29.4214, -74.3254, -145.49, 31.7836, -74.3254, -2.70714, 29.4214, -83.5587, -2.70714, 31.7836, -83.5587, -170.529, 31.7836, -58.6823, -170.529, 29.4214, -58.6823, -281.389, 29.4214, 53.4824, -289.467, 36.234, 54.0048, -295.865, 34.1458, 54.4185, -316.291, 31.7836, -18.3513, -308.951, 31.7836, 95.1458, -315.987, 31.7836, 99.9027, -311.98, 31.7836, 95.3417, -206.836, 60.4569, -72.773, -206.836, 46.5474, -72.773, -209.242, 60.4569, -109.982, -209.242, 3.1104, -109.982, -208.612, 46.5474, -100.246, -208.612, 3.1104, -100.246, -211.598, 31.7836, -32.197, -207.539, 44.0384, -32.3884, -203.479, 39.9535, -32.5799, -207.208, 31.7836, 59.2056, -207.208, 25.3323, 59.2056, -191.05, 25.3323, 58.4436, -191.05, 31.7836, 58.4436, -206.402, 25.3323, 80.1865, -206.402, 31.7836, 80.1865, -144.237, 31.7836, -73.2467, -2.57948, 31.7836, -82.3835, -3.66996, 42.8073, -103.294, 6.08836, 42.8073, -2.59479, -4.84282, 42.8073, -103.218, 7.26455, 42.8073, -2.63997, 7.26455, 31.7836, -2.63997, 6.08836, 31.7836, -2.59479, 7.26455, 39.009, -2.63997, -3.66996, 39.009, -103.294, -267.982, 31.7836, 43.8017, -196.526, 31.7836, -57.6835, -196.526, 29.4214, -57.6835, -206.88, 29.4214, -57.1953, -206.88, 31.7836, -57.1953, -204.645, 39.9535, -57.3007, -212.764, 31.7836, -56.9178, -249.525, 31.7836, -73.6585, -273.459, 31.7836, -40.8973, 57.4904, 60.4569, -112.011, 9.10833, 60.4569, -106.755, -249.29, 60.4569, -70.0276, -319.574, 31.7836, -69.1286, -318.968, 31.7836, -59.7471, -196.47, 31.7836, -56.5037, -171.629, 31.7836, -57.3962, -251.697, 60.4569, -107.237, 6.81133, 60.4569, -127.899, -315.596, 31.7836, 105.961, -311.035, 31.7836, 109.968, -267.918, 31.7836, 108.312, -207.612, 31.7836, -72.7228, -207.612, 29.4214, -72.7228, 13.2374, 82.62, 250.492, 13.3462, 3.11042, 253.323, 109.482, 3.11042, 249.629, 41.0229, 85.3629, 245.168, 81.2609, 128.792, 243.622, 81.2609, 85.3629, 243.622, 41.0229, 128.792, 245.168, 109.373, 82.62, 246.799, 69.4719, 82.62, -1.71923, 33.9548, 82.62, -0.3548, 17.2946, 46.5474, 0.285219, 8.46182, 82.62, 0.624542, 8.46182, 39.663, 0.624542, -215.184, 31.7836, -72.2331, -249.29, 31.7836, -70.0276, -160.735, 46.5474, -75.7542, -160.735, 29.4214, -75.7542, -179.104, 3.1104, -57.1276, -196.47, 3.1104, -56.5037, -171.629, 3.1104, -57.3962, -161.855, 46.5474, -93.0645, -161.855, 29.4214, -93.0645, -4.84282, 29.4214, -103.218, 5.97461, 46.5474, -103.918, -316.291, 17.447, -18.3513, -339.278, 17.447, -16.8648, -339.278, 47.6537, -16.8648, -315.112, 47.6537, -18.4276, -235.992, 3.1104, -43.3202, -228.422, 3.1104, -43.8098, -228.42, 31.7836, -43.8099, -273.459, 3.1104, -40.8973, -296.096, 36.234, -48.5023, -327.938, 52.3151, -29.14, -329.129, 52.3151, -47.5482, -341.955, 47.6537, -58.2606, -317.789, 47.6537, -59.8234, -217.027, 31.7836, 12.0549, -209.448, 31.7836, 11.6975, -225.766, 23.6138, 12.467, -217.647, 31.7836, 12.0842, -162.512, 46.5474, -103.228, -161.623, 64.6931, -89.4909, 18.3389, 46.5474, -107.757, 11.1908, 46.5474, -106.981, 8.29158, 46.5474, -114.273, 9.10833, 46.5474, -106.755, 31.0024, 52.4007, -130.527, -341.955, 3.1104, -58.2606, -318.968, 3.1104, -59.7471, -319.574, 3.1104, -69.1286, -251.697, 3.1104, -107.237, -225.766, 31.7836, 12.467, -217.647, 39.9136, 12.0842, -261.797, 31.7836, 43.51, -267.982, 3.1104, 43.8017, -261.797, 3.1104, 43.51, -262.094, 3.1104, 37.2152, -262.094, 31.7836, 37.2152, -318.396, 3.1104, -69.2048, 8.29158, 3.1104, -114.273, -163.316, 3.1104, 71.1559, -190.401, 25.3323, 72.1964, -190.401, 3.1104, 72.1964, -224.682, 31.7836, 35.4509, -6.27098, -3.97621, -248.324, 7.62269, 39.009, 0.656778, 42.1111, -3.97621, -253.58, -249.525, 3.1104, -73.6585, -232.26, 3.1104, 35.8083, -224.682, 3.1104, 35.4509, -163.316, 25.3323, 71.1559, -339.278, 3.1104, -16.8648, -267.918, 3.1104, 108.312, -311.035, 3.1104, 109.968, -315.596, 17.447, 105.961, -315.596, 3.1104, 105.961, -199.51, 39.9136, 50.7454, 8.62677, 31.7836, 53.6337, -162.427, 31.7836, 84.8995, 9.57404, 31.7836, 78.2919, -135.673, 31.7836, 59.1771, -315.987, 17.447, 99.9027, -311.98, 17.447, 95.3417, -308.951, 17.447, 95.1458, -331.27, 17.447, 106.975, -268.661, 31.7836, 88.9806, -206.156, 31.7836, 86.5794, -206.156, 25.3323, 86.5794, -162.427, 25.3323, 84.8995, -331.27, 3.1104, 106.975, -317.789, 3.1104, -59.8234, -135.673, 3.1104, 59.1771, -144.237, 3.1104, -73.2467, -2.57948, 3.1104, -82.3835, -268.794, 3.1104, 31.2543, 6.08836, 3.1104, -2.59479, 28.8612, 46.5474, -10.8985, 37.9147, 51.9214, -109.884, 209.289, 82.62, 100.613, 61.021, 146.493, 241.247, 57.2307, 146.493, 142.585, 78.7795, 120.153, 240.565, 36.204, 120.153, 140.24, 43.2624, 120.153, 241.93, 78.0157, 127.184, 138.634, 78.0157, 120.153, 138.634, 148.945, 127.184, 135.909, 61.0132, 155.132, 241.248, 43.3755, 128.792, 245.077, 43.2546, 128.792, 241.93, 61.1341, 155.132, 244.395, 78.7717, 128.792, 240.565, 78.8965, 128.792, 243.713, 212.929, 3.11042, 137.035, 212.644, 3.11042, 129.624, 210.692, 3.11042, 137.121, 213.397, 3.11042, 149.215, 213.397, 82.62, 149.215, 210.692, 82.62, 137.121, 212.929, 42.8652, 137.035, 74.8684, 157.351, 138.755, 74.8684, 158.926, 138.755, 39.3513, 158.926, 140.12, 39.3513, 157.351, 140.12, 78.7795, 127.184, 240.565, 74.9893, 127.184, 141.902, 81.9268, 128.792, 240.444, 43.2624, 127.184, 241.93, 40.1151, 127.184, 242.05, 40.1151, 128.792, 242.05, 82.0477, 128.792, 243.591, 40.236, 128.792, 245.198, -226.636, 127.184, 150.338, -226.636, 120.153, 150.338, 37.641, 127.184, 146.249, 39.2789, 127.184, 144.48, 39.4722, 127.184, 143.267, 36.2132, 127.184, 140.48, 78.0249, 127.184, 138.874, 80.998, 127.184, 140.465, 75.2751, 127.184, 143.098, 35.0088, 158.926, 140.526, 33.3709, 158.926, 142.295, 37.641, 158.926, 146.249, 36.2132, 158.926, 140.48, 39.2326, 158.926, 143.276, 75.2288, 158.926, 141.893, 79.4527, 158.926, 144.643, 80.998, 158.926, 140.465, 190.583, 3.11041, 130.039, 190.583, 82.62, 130.039, -229.183, 3.11042, 177.838, 13.0407, 3.11042, 168.532, -229.183, 82.62, 177.838, 33.4634, 158.926, 144.704, 35.2322, 158.926, 146.342, 81.0906, 158.926, 142.874, 79.2293, 158.926, 138.828, 77.0439, 158.926, 144.735, 75.2751, 158.926, 143.098, 78.0249, 158.926, 138.874, 39.2789, 158.926, 144.48, 81.9268, 82.62, 240.444, 78.2483, 127.184, 144.689, 78.2483, 82.62, 144.689, 81.9268, 127.184, 240.444, 81.0443, 127.184, 141.67, 36.4366, 82.62, 146.295, -226.515, 127.184, 153.485, 33.4172, 82.62, 143.499, 33.4172, 127.184, 143.499, 13.0407, 82.62, 168.532, 40.236, 82.62, 245.198, 34.7725, 82.62, 145.916, 40.1151, 82.62, 242.05, -226.515, 82.62, 153.485, -230.114, 82.62, 153.623, 39.4722, 120.153, 143.267, 74.9893, 120.153, 141.902, 33.4634, 82.62, 144.704, 35.2322, 82.62, 146.342, 35.0088, 127.184, 140.526, 77.0439, 127.184, 144.735, 39.2326, 127.184, 143.276, 79.4527, 82.62, 144.643, 79.2293, 127.184, 138.828, 81.0906, 82.62, 142.874, 81.0443, 82.62, 141.67, 75.2288, 127.184, 141.893, 33.3709, 127.184, 142.295, 36.4366, 127.184, 146.295, 35.5217, 146.493, 122.482, -220.925, 127.184, 150.118, 16.0216, 82.62, 246.128, 36.204, 127.184, 140.24, -220.804, 127.184, 153.266, 51.834, 146.493, 2.11022, -262.132, 120.153, 116.132, 37.8657, 120.153, 101.455, 147.58, 127.184, 100.392, 51.8262, 155.132, 2.11052, 34.0677, 128.792, 2.79274, 73.5037, 158.926, 103.238, 69.5926, 127.184, 1.428, 73.3828, 120.153, 100.091, 73.3828, 127.184, 100.091, 69.5926, 120.153, 1.428, 72.7399, 128.792, 1.30709, 34.0755, 127.184, 2.79243, 34.0755, 120.153, 2.79243, 30.9282, 127.184, 2.91334, 30.9282, 128.792, 2.91334, 72.619, 128.792, -1.8402, 30.8073, 128.792, -0.233946, 35.8112, 127.184, 98.6221, 34.6067, 127.184, 98.6684, 37.6262, 127.184, 101.464, 37.8657, 127.184, 101.455, 31.857, 127.184, 102.892, 79.4841, 127.184, 101.063, 148.059, 127.184, 97.222, 33.6257, 158.926, 104.53, 31.7645, 158.926, 100.483, 31.857, 158.926, 102.892, 33.4023, 158.926, 98.7146, 35.8112, 158.926, 98.6221, 37.6262, 158.926, 101.464, 73.5761, 158.926, 98.8771, 79.3916, 158.926, 98.6537, 79.4841, 158.926, 101.063, -232.65, 3.11041, 87.5972, 9.57379, 3.11041, 78.2919, -232.65, 82.62, 87.5972, 77.8462, 158.926, 102.831, 75.214, 158.926, 97.1084, 77.6228, 158.926, 97.0158, 73.6224, 158.926, 100.082, 37.5799, 158.926, 100.26, 72.7399, 82.62, 1.30709, 76.4184, 127.184, 97.0621, 72.7399, 127.184, 1.30709, 30.9282, 82.62, 2.91334, -228.122, 127.184, 111.673, 31.8107, 82.62, 101.688, -228.122, 82.62, 111.673, 9.57379, 82.62, 78.2919, 30.8073, 82.62, -0.233946, 6.59288, 82.62, 0.696278, 32.9767, 82.62, 99.1743, 33.4023, 82.62, 98.7146, 34.6067, 82.62, 98.6684, -231.72, 82.62, 111.812, 31.7645, 82.62, 100.483, 55.6243, 146.493, 100.773, 37.5799, 127.184, 100.26, 75.214, 127.184, 97.1084, 73.5761, 127.184, 98.8771, 73.6224, 127.184, 100.082, 31.8107, 127.184, 101.688, 34.8394, 127.184, 104.723, 157.63, 120.153, 131.095, 162.531, 120.153, 122.537, 162.531, 127.184, 122.537, 162.153, 120.153, 112.682, 162.153, 127.184, 112.682, 156.61, 127.184, 104.526, 156.61, 120.153, 104.526, 159.89, 127.184, 133.367, 149.665, 82.62, 139.034, 165.66, 127.184, 123.292, 158.689, 127.184, 102.088, 213.398, 3.11042, 149.261, 207.499, 3.11041, 166.679, 210.82, 3.11042, 82.1354, 210.82, 82.62, 82.1354, 210.455, 82.62, 130.955, 148.059, 82.62, 97.222, -268.517, 134.394, 114.013, -266.971, 134.394, 154.251, -222.088, 127.184, 181.421, -223.95, 127.184, 194.494, -224.448, 127.184, 181.512, -236.842, 127.184, 197.354, -236.932, 127.184, 194.993, -221.499, 127.184, 196.764, -266.999, 229.196, 154.251, -225.557, 229.196, 152.659, -223.95, 229.196, 194.494, -265.391, 229.196, 196.086, -226.521, 127.184, 68.3014, -241.776, 127.184, 71.2513, -241.866, 127.184, 68.8909, -228.791, 127.184, 70.7525, -228.277, 127.184, 84.1285, -225.917, 127.184, 84.0378, -269.51, 127.184, 150.408, -267, 127.184, 154.251, -268.906, 127.184, 166.144, -254.167, 127.184, 149.818, -260.676, 127.184, 154.008, -254.016, 127.184, 153.753, -266.546, 127.184, 166.054, -223.348, 127.184, 148.635, -238.539, 127.184, 153.158, -238.691, 127.184, 149.224, -225.557, 127.184, 152.659, -225.043, 127.184, 166.035, -222.683, 127.184, 165.945, -225.322, 127.184, 99.5143, -227.184, 127.184, 112.588, -227.683, 127.184, 99.605, -240.015, 127.184, 117.02, -240.167, 127.184, 113.086, -224.672, 127.184, 116.431, -265.891, 127.184, 183.104, -267.661, 127.184, 198.538, -268.251, 127.184, 183.194, -265.391, 127.184, 196.086, -252.318, 127.184, 197.948, -252.409, 127.184, 195.588, -262.222, 124.69, 113.771, -262.132, 124.69, 116.132, -260.767, 124.69, 151.649, -260.676, 124.69, 154.009, -270.238, 127.184, 72.3448, -271.992, 127.184, 85.8078, -257.344, 127.184, 69.4854, -257.253, 127.184, 71.8459, -269.723, 127.184, 85.7207, -270.238, 229.196, 72.3448, -228.791, 229.196, 70.7525, -227.184, 229.196, 112.588, -268.629, 229.196, 114.18, -269.068, 127.184, 102.771, -270.747, 127.184, 118.201, -271.337, 127.184, 102.858, -268.628, 127.184, 114.18, -255.492, 127.184, 117.615, -255.643, 127.184, 113.681, -269.355, 63.8981, 154.446, -271.688, 50.7308, 154.536, -271.688, 63.8981, 154.536, -271.095, 7.62939E-6, 108.434, -273.456, 63.8981, 108.525, -271.122, 63.8981, 108.435, -268.359, 50.7308, 118.109, -270.747, 50.7308, 118.201, -267.122, 50.7308, 150.316, -273.291, 50.7308, 112.809, -267.661, 7.62939E-6, 198.538, -268.251, 7.62939E-6, 183.194, -254.016, 7.62939E-6, 153.753, -238.539, 7.62939E-6, 153.158, -272.581, 7.62939E-6, 70.4648, -272.596, 7.62939E-6, 70.0714, -271.992, 7.62939E-6, 85.8078, -223.348, 7.62939E-6, 148.635, -238.691, 7.62939E-6, 149.224, -265.89, 7.62939E-6, 183.104, -269.51, 7.62939E-6, 150.408, -254.167, 7.62939E-6, 149.818, -241.867, 7.62939E-6, 68.8909, -241.777, 7.62939E-6, 71.2514, -269.067, 7.62939E-6, 102.771, -269.723, 7.62939E-6, 85.7206, -271.337, 7.62939E-6, 102.858, -257.252, 7.62939E-6, 71.8459, -226.521, 7.62939E-6, 68.3014, -257.344, 7.62939E-6, 69.4854, -266.546, 7.62939E-6, 166.054, -268.906, 7.62939E-6, 166.144, -273.373, 78.8304, 110.667, -273.456, 7.62939E-6, 108.525, -271.523, 7.62939E-6, 158.82, -273.291, 63.8981, 112.809, -271.523, 63.8981, 158.82, -268.517, 50.7308, 114.013, -266.971, 50.7308, 154.251, -271.04, 78.8304, 110.577, -270.958, 63.8981, 112.719, -240.167, 7.62939E-6, 113.086, -255.643, 7.62939E-6, 113.681, -255.492, 7.62939E-6, 117.615, -224.672, 7.62939E-6, 116.431, -225.322, 7.62939E-6, 99.5143, -236.932, 7.62939E-6, 194.993, -236.842, 7.62939E-6, 197.354, -240.015, 7.62939E-6, 117.02, -227.683, 7.62939E-6, 99.605, -228.277, 7.62939E-6, 84.1285, -257.326, 7.62939E-6, 69.8788, -224.448, 7.62939E-6, 181.512, -225.043, 7.62939E-6, 166.035, -222.088, 7.62939E-6, 181.421, -225.917, 7.62939E-6, 84.0378, -222.683, 7.62939E-6, 165.945, -221.499, 7.62939E-6, 196.764, -252.318, 7.62939E-6, 197.948, -252.409, 7.62939E-6, 195.588, -257.235, 7.62939E-6, 72.2392, -241.759, 7.62939E-6, 71.6447, -269.163, 7.62939E-6, 158.73, -269.51, 50.7308, 150.408, -272.596, 127.184, 70.0714, -264.597, 158.577, 134.011, -269.355, 50.7308, 154.446, -270.958, 50.7308, 112.719, -269.273, 78.8304, 156.589, -269.19, 63.8981, 158.731, -271.606, 78.8304, 156.678, -262.216, 127.184, 113.933, -269.19, 7.62939E-6, 158.731, -270.747, 7.62939E-6, 118.201, 77.3334, 146.493, 120.876, 76.6512, 127.184, 103.117, 76.6512, 120.153, 103.117, 73.5039, 157.351, 103.238, -228.001, 120.153, 114.821, 189.546, 82.62, 103.051, 79.438, 82.62, 99.8581, 76.642, 158.926, 102.878, 149.665, 127.184, 139.034, 158.689, 82.62, 102.088, 165.214, 82.62, 111.69, 133.789, 82.62, 188.588, 167.695, 82.62, 186.342, 191.012, 82.62, 174.824, 207.499, 82.62, 166.679, 203.602, 82.62, 65.2215, -262.082, 134.394, 117.425, -260.817, 134.394, 150.356, 159.89, 82.62, 133.367, 41.2949, 37.6428, 252.249, 81.533, 37.6428, 250.703, 27.2668, 46.5474, -0.0978745, 60.8646, 46.5474, -14.3752, 210.692, 42.8652, 137.121, 33.9508, 128.792, -0.354676, 69.5848, 128.792, 1.42831, 37.9866, 158.926, 104.602, -228.001, 127.184, 114.821, 34.8394, 120.153, 104.723, 33.6257, 127.184, 104.53, 77.8462, 127.184, 102.831, 79.4379, 127.184, 99.8581, -222.41, 127.184, 111.454, 133.789, 3.11042, 188.588, 151.207, 3.11041, 194.487, 128.428, 3.11042, 49.0314, 145.342, 3.11041, 41.8134, 186.538, 3.11041, 58.3654, 203.602, 3.11041, 65.2215, 81.4242, 82.62, 247.873, 79.3917, 82.62, 98.6537, 162.406, 82.62, 48.6695, -265.229, 134.394, 117.546, -263.964, 134.394, 150.477, -260.676, 134.394, 154.009, -260.676, 127.184, 154.008, -262.216, 127.184, 113.933, 68.0091, 46.5474, -15.1845, 157.63, 127.184, 131.095, 167.695, 3.11041, 186.342, 162.406, 3.11041, 48.6695, 169.624, 3.11041, 65.5834, -261.449, 158.577, 133.89, 165.66, 82.62, 123.292, 169.624, 82.62, 65.5834, 34.8303, 158.926, 104.484, 76.642, 127.184, 102.878, 191.012, 3.11041, 174.824, 173.594, 82.62, 168.925, 186.538, 82.62, 58.3654, 34.8303, 127.184, 104.484, 128.428, 82.62, 49.0314, 212.644, 82.62, 129.624, 41.1862, 82.62, 249.418, 148.945, 120.153, 135.909, -222.289, 127.184, 114.601, -261.449, 146.493, 133.89, 51.7094, 155.132, -1.03689, 69.4699, 128.792, -1.71918, 76.4186, 82.62, 97.0621, 145.342, 82.62, 41.8134, 144.878, 146.493, 118.281, 212.692, 82.62, 130.869, 173.594, 3.11041, 168.925, 213.398, 82.62, 149.261, -271.122, 7.62939E-6, 108.435, -262.222, 134.394, 113.771, 37.9868, 157.351, 104.602, 165.214, 127.184, 111.69, 189.546, 3.11041, 103.051, 147.58, 120.153, 100.392, -260.767, 120.153, 151.649, 211.574, 3.11041, 101.773, 209.052, 82.62, 94.4467, 41.0229, 82.62, 245.168, 313.951, 42.8652, 80.9476, 336.991, 42.8652, 93.0955, 338.357, 3.11042, 128.653, 316.317, 3.11042, 142.533, 336.991, 3.11042, 93.0956, 338.357, 42.8652, 128.653, 209.872, 85.4822, 115.784, 307.282, 85.4822, 112.042, 209.337, 3.1104, 101.859, 210.407, 3.1104, 129.71, 291.591, 42.8652, 145.945, 308.101, 42.8652, 133.379, 299.248, 42.8652, 144.086, 326.169, 42.8652, 121.979, 316.317, 42.8652, 142.533, 219.927, 3.11042, 136.767, 214.252, 3.11042, 136.985, 219.909, 42.8652, 136.867, 306.462, 42.8652, 90.7045, 325.348, 78.5964, 100.597, 306.462, 78.5964, 90.7046, 308.101, 78.5964, 133.379, 326.169, 78.5964, 121.979, 220.395, 42.8652, 148.946, 296.813, 42.8652, 80.7083, 325.348, 42.8652, 100.597, 289.036, 42.8652, 79.4425, 211.289, 3.1104, 94.3607, 218.236, 42.8652, 93.8945, 218.236, 3.1104, 93.8945, 211.289, 78.5964, 94.3607, 217.82, 42.8652, 81.9125, 212.929, 78.5964, 137.035, 291.591, 3.11042, 145.945, 299.248, 3.11042, 144.086, 220.395, 3.11042, 148.946, 296.813, 3.11041, 80.7084, 289.036, 3.11041, 79.4425, 293.489, 72.9902, 79.5047, 295.77, 3.11042, 75.6792, 297.894, 3.11042, 141.499, 296.026, 72.9902, 145.541, 298.593, 3.11042, 149.181, 341.955, 3.11042, 121.83, 334.247, 3.11042, 122.126, 338.186, 72.9902, 124.203, 320.085, 72.9902, 140.16, 316.146, 3.11042, 138.083, 320.256, 3.11042, 144.61, 278.242, 72.9902, 146.508, 280.304, 3.11042, 142.56, 280.629, 3.11042, 150.268, 260.443, 72.9902, 147.258, 262.505, 3.11042, 143.311, 262.83, 3.11042, 151.018, 244.706, 3.11042, 144.061, 242.644, 72.9902, 148.008, 245.031, 3.11042, 151.768, 224.845, 72.9902, 148.758, 226.907, 3.11042, 144.811, 227.232, 3.11042, 152.518, 295.662, 3.11042, 83.3924, 337.162, 72.9902, 97.546, 333.223, 3.11042, 95.4688, 340.931, 3.11042, 95.1727, 317.891, 72.9902, 83.0248, 318.061, 3.11042, 87.4752, 321.659, 3.11042, 80.6516, 278.042, 3.11042, 83.6832, 275.683, 72.9902, 79.9057, 277.775, 3.11042, 75.9738, 260.238, 3.11042, 84.3007, 257.879, 72.9902, 80.5232, 259.971, 3.11042, 76.5913, 240.075, 72.9902, 81.1407, 242.434, 3.11042, 84.9182, 242.167, 3.11042, 77.2088, 224.63, 3.11042, 85.5357, 224.363, 3.11042, 77.8263, 222.271, 72.9902, 81.7582, 253.428, 3.11042, 80.6776, 273.792, 3.11042, 146.695, 323.854, 3.11042, 137.786, 337.333, 3.11042, 101.996, 217.82, 3.11041, 81.9126, 271.232, 3.11042, 80.0601, 255.993, 3.11042, 147.445, 238.194, 3.11042, 148.196, 313.951, 3.11042, 80.9476, 235.624, 3.11042, 81.295, 186.293, 124.805, 133.113, 182.736, 86.6562, 134.599, 185.157, 82.62, 129.429, 182.736, 82.62, 134.599, 190.822, 82.62, 132.082, 188.4, 82.62, 137.252, 167.751, 124.805, 154.647, 164.18, 86.6562, 153.194, 169.541, 82.62, 151.233, 164.18, 82.62, 153.194, 171.69, 82.62, 157.107, 166.329, 82.62, 159.069, 143.255, 124.805, 160.53, 141.277, 86.6562, 157.221, 146.739, 82.62, 158.881, 141.277, 82.62, 157.221, 144.921, 82.62, 164.866, 139.459, 82.62, 163.206, 126.888, 124.805, 163.896, 123.936, 86.6562, 161.416, 129.64, 82.62, 161.197, 123.936, 82.62, 161.416, 129.88, 82.62, 167.447, 124.176, 82.62, 167.666, 103.271, 124.805, 164.803, 100.319, 86.6562, 162.323, 106.024, 82.62, 162.104, 100.319, 82.62, 162.323, 106.264, 82.62, 168.354, 100.56, 82.62, 168.574, 185.033, 124.805, 100.315, 181.372, 86.6562, 99.107, 184.183, 82.62, 104.076, 181.372, 82.62, 99.107, 189.628, 82.62, 100.995, 186.816, 82.62, 96.0268, 164.893, 124.805, 80.2671, 161.444, 86.6562, 81.9894, 166.94, 82.62, 83.5342, 161.444, 82.62, 81.9894, 168.632, 82.62, 77.5125, 163.137, 82.62, 75.9677, 140.018, 124.805, 76.2805, 138.3, 86.6562, 79.7317, 143.619, 82.62, 77.658, 138.3, 82.62, 79.7317, 141.347, 82.62, 71.8302, 136.028, 82.62, 73.9039, 123.441, 124.805, 74.1806, 120.688, 86.6562, 76.8797, 126.393, 82.62, 76.6605, 120.688, 82.62, 76.8797, 126.153, 82.62, 70.4101, 120.448, 82.62, 70.6292, 99.8247, 124.805, 75.088, 97.0719, 86.6562, 77.787, 102.776, 82.62, 77.5679, 97.0719, 82.62, 77.787, 102.536, 82.62, 71.3174, 96.8318, 82.62, 71.5366, 98.0381, 124.274, 28.581, 105.721, 3.81562, 31.1423, 105.502, 3.81562, 25.4378, 95.0763, 3.81562, 25.8383, 95.2954, 3.81562, 31.5428, 98.9453, 124.274, 52.1975, 106.628, 3.81562, 54.7588, 106.409, 3.81562, 49.0543, 95.9835, 3.81562, 49.4548, 96.2026, 3.81562, 55.1593, 7.79749, 123.568, 32.0477, 0.11478, 3.11042, 29.4864, 0.333922, 3.11042, 35.1909, 10.7593, 3.11042, 34.7904, 10.5402, 3.11042, 29.0859, 8.70478, 123.568, 55.6642, 1.02207, 3.11042, 53.1029, 1.24121, 3.11042, 58.8074, 11.6666, 3.11042, 58.4069, 11.4474, 3.11042, 52.7024, -160.066, 124.274, 84.8088, -157.459, 25.3323, 78.3063, -163.164, 25.3323, 78.5254, -162.809, 25.3323, 87.7706, -157.104, 25.3323, 87.5514, -183.683, 124.274, 85.7161, -181.076, 25.3323, 79.2136, -186.781, 25.3323, 79.4328, -186.425, 25.3323, 88.6779, -180.721, 25.3323, 88.4588, -137.507, 98.5184, 56.391, -134.9, -0.422928, 49.8886, -140.605, -0.422928, 50.1077, -140.249, -0.422928, 59.3528, -134.545, -0.422928, 59.1337, -113.89, 98.5184, 55.4838, -111.283, -0.422928, 48.9813, -116.988, -0.422928, 49.2005, -116.633, -0.422928, 58.4456, -110.928, -0.422928, 58.2265, -90.2736, 98.5184, 54.5766, -87.667, -0.422928, 48.0741, -93.3715, -0.422928, 48.2932, -93.0163, -0.422928, 57.5384, -87.3119, -0.422928, 57.3193, -66.6572, 98.5184, 53.6692, -64.0506, -0.422928, 47.1668, -69.755, -0.422928, 47.3859, -69.3998, -0.422928, 56.631, -63.6954, -0.422928, 56.4119, -43.0408, 98.5184, 52.762, -40.4342, -0.422928, 46.2595, -46.1386, -0.422928, 46.4787, -45.7835, -0.422928, 55.7238, -40.079, -0.422928, 55.5047, -19.4243, 98.5184, 51.8548, -16.8176, -0.422928, 45.3523, -22.5221, -0.422928, 45.5714, -22.1669, -0.422928, 54.8166, -16.4625, -0.422928, 54.5975, -207.299, 124.274, 86.6234, -204.692, 25.3323, 80.1209, -210.397, 25.3323, 80.34, -210.042, 25.3323, 89.5852, -204.337, 25.3323, 89.366, 9.57404, 123.568, 78.2919, 3.07156, 24.6271, 75.6852, 3.2907, 24.6271, 81.3897, 12.5359, 24.6271, 81.0345, 12.3167, 24.6271, 75.3301, -18.3675, 124.274, 79.3653, -15.7609, 25.3323, 72.8628, -21.4653, 25.3323, 73.0819, -21.1102, 25.3323, 82.3271, -15.4057, 25.3323, 82.1079, -89.2168, 124.274, 82.0871, -86.6101, 25.3323, 75.5846, -92.3146, 25.3323, 75.8037, -91.9594, 25.3323, 85.0489, -86.255, 25.3323, 84.8298, -65.6003, 124.274, 81.1797, -62.9937, 25.3323, 74.6773, -68.6981, 25.3323, 74.8964, -68.343, 25.3323, 84.1415, -62.6385, 25.3323, 83.9224, -112.833, 124.274, 82.9943, -110.227, 25.3323, 76.4918, -115.931, 25.3323, 76.711, -115.576, 25.3323, 85.9561, -109.872, 25.3323, 85.737, -41.9838, 124.274, 80.2725, -39.3772, 25.3323, 73.77, -45.0816, 25.3323, 73.9892, -44.7264, 25.3323, 83.2343, -39.022, 25.3323, 83.0152, -136.45, 124.274, 83.9016, -133.843, 25.3323, 77.3991, -139.547, 25.3323, 77.6182, -139.192, 25.3323, 86.8633, -133.488, 25.3323, 86.6442, -109.366, 124.274, 173.235, -112.328, 3.11042, 170.492, -106.624, 3.11042, 170.273, -106.05, 3.11042, 185.223, -111.754, 3.11042, 185.442, -180.216, 124.274, 175.957, -183.178, 3.11042, 173.214, -177.473, 3.11042, 172.995, -176.899, 3.11042, 187.944, -182.603, 3.11042, 188.163, -203.832, 124.274, 176.864, -206.794, 3.11042, 174.121, -201.09, 3.11042, 173.902, -200.515, 3.11042, 188.852, -206.22, 3.11042, 189.071, -132.983, 124.274, 174.142, -135.945, 3.11042, 171.399, -130.24, 3.11042, 171.18, -129.666, 3.11042, 186.13, -135.37, 3.11042, 186.349, -156.6, 124.274, 175.049, -159.561, 3.11042, 172.307, -153.857, 3.11042, 172.088, -153.283, 3.11042, 187.037, -158.987, 3.11042, 187.256, 14.8172, 124.274, 214.777, 17.5599, 3.11042, 211.815, 17.779, 3.11042, 217.519, 2.82944, 3.11042, 218.094, 2.6103, 3.11042, 212.389, -85.7501, 124.274, 172.328, -88.7118, 3.11042, 169.585, -83.0074, 3.11042, 169.366, -82.4331, 3.11042, 184.315, -88.1375, 3.11042, 184.535, -38.5173, 124.274, 170.513, -41.4791, 3.11042, 167.77, -35.7746, 3.11042, 167.551, -35.2003, 3.11042, 182.501, -40.9047, 3.11042, 182.72, -62.1336, 124.274, 171.42, -65.0954, 3.11042, 168.678, -59.391, 3.11042, 168.459, -58.8167, 3.11042, 183.408, -64.5211, 3.11042, 183.627, 13.91, 124.274, 191.16, 16.6527, 3.11042, 188.198, 16.8718, 3.11042, 193.903, 1.92222, 3.11042, 194.477, 1.70307, 3.11042, 188.773, -14.9007, 124.274, 169.606, -17.8625, 3.11042, 166.863, -12.1581, 3.11042, 166.644, -11.5838, 3.11042, 181.594, -17.2882, 3.11042, 181.813, 13.0407, 124.274, 168.532, 15.7834, 3.11042, 165.571, 16.0025, 3.11042, 171.275, 1.05289, 3.11042, 171.849, 0.833749, 3.11042, 166.145, 104.151, 124.805, 187.693, 101.408, 3.64161, 190.655, 101.189, 3.64161, 184.951, 116.138, 3.64161, 184.376, 116.357, 3.64161, 190.081, 105.058, 124.805, 211.31, 102.315, 3.64161, 214.272, 102.096, 3.64161, 208.567, 117.046, 3.64161, 207.993, 117.265, 3.64161, 213.697, 214.039, 106.002, 150.747, 219.326, 3.11042, 154.074, 220.171, 3.11042, 149.556, 211.915, 3.11042, 148.011, 211.069, 3.11042, 152.529, 207.833, 106.002, 166.954, 210.747, 3.11042, 172.479, 213.738, 3.11042, 168.989, 207.361, 3.11042, 163.523, 204.37, 3.11042, 167.012, 191.345, 106.002, 174.907, 189.5, 3.11042, 180.874, 194.082, 3.11042, 180.521, 193.438, 3.11042, 172.146, 188.855, 3.11042, 172.499, 173.673, 106.002, 169.295, 173.991, 3.11042, 175.533, 178.173, 3.11042, 173.627, 174.69, 3.11042, 165.984, 170.508, 3.11042, 167.89, 167.805, 106.002, 186.542, 170.72, 3.11042, 192.067, 173.711, 3.11042, 188.577, 167.333, 3.11042, 183.111, 164.342, 3.11042, 186.601, 151.318, 106.002, 194.495, 149.472, 3.11042, 200.462, 154.055, 3.11042, 200.11, 153.41, 3.11042, 191.735, 148.828, 3.11042, 192.087, 132.227, 106.002, 188.745, 128.18, 3.11042, 193.503, 132.531, 3.11042, 194.984, 135.237, 3.11042, 187.032, 130.887, 3.11042, 185.551, 211.09, 106.002, 139.354, 216.376, 3.11042, 142.682, 217.222, 3.11042, 138.164, 208.965, 3.11042, 136.619, 208.12, 3.11042, 141.137, 211.345, 106.002, 80.605, 216.36, 3.11042, 76.882, 217.55, 3.11042, 81.3214, 209.436, 3.11042, 83.4954, 208.247, 3.11042, 79.056, 203.913, 106.002, 64.9214, 206.395, 3.11042, 59.1894, 209.645, 3.11042, 62.4393, 203.706, 3.11042, 68.3788, 200.456, 3.11042, 65.1289, 186.864, 106.002, 58.2571, 184.566, 3.11042, 52.4488, 189.162, 3.11042, 52.4488, 189.162, 3.11042, 60.8485, 184.566, 3.11042, 60.8485, 169.675, 106.002, 65.2082, 169.513, 3.11042, 58.9639, 173.829, 3.11042, 60.5434, 170.942, 3.11042, 68.4315, 166.626, 3.11042, 66.852, 162.501, 106.002, 48.4618, 164.983, 3.11042, 42.7298, 168.233, 3.11042, 45.9797, 162.293, 3.11042, 51.9192, 159.043, 3.11042, 48.6693, 145.452, 106.002, 41.7976, 143.154, 3.11042, 35.9894, 147.75, 3.11042, 35.9894, 147.75, 3.11042, 44.389, 143.154, 3.11042, 44.389, 126.858, 106.002, 48.9954, 122.458, 3.11042, 44.562, 126.682, 3.11042, 42.7515, 129.991, 3.11042, 50.4719, 125.767, 3.11042, 52.2825, 209.278, 106.002, 92.1898, 214.294, 3.11042, 88.4668, 215.483, 3.11042, 92.9062, 207.37, 3.11042, 95.0802, 206.18, 3.11042, 90.6408, 81.1437, -0.826591, -28.5652, 87.9972, 106.342, -34.2469, 88.9575, -0.826591, -32.1591, 87.0369, -0.826591, -36.3347, 79.2232, -0.826591, -32.7408, 103.325, -0.826591, -97.8962, 109.007, 106.342, -91.0427, 106.919, -0.826591, -90.0825, 111.094, -0.826591, -92.003, 107.5, -0.826591, -99.8168, 77.8754, -0.826591, -67.8247, 86.7391, 106.342, -66.9961, 85.9418, -0.826591, -64.8408, 87.5364, -0.826591, -69.1514, 79.4699, -0.826591, -72.1353, 111.215, -0.826591, -3.11558, 112.044, 106.342, -11.9793, 114.199, -0.826591, -11.182, 109.889, -0.826591, -12.7766, 106.905, -0.826591, -4.71011, 175.924, -0.826591, -36.4556, 167.858, -0.826591, -39.4395, 167.061, 106.342, -37.2842, 166.263, -0.826591, -35.1289, 174.33, -0.826591, -32.1451, 150.475, -0.826591, -6.38391, 144.793, 106.342, -13.2374, 146.881, -0.826591, -14.1977, 142.705, -0.826591, -12.2771, 146.299, -0.826591, -4.46338, 172.656, -0.826591, -75.7152, 164.842, -0.826591, -72.1212, 165.803, 106.342, -70.0335, 166.763, -0.826591, -67.9457, 174.577, -0.826591, -71.5396, 142.584, -0.826591, -101.165, 141.756, 106.342, -92.3009, 139.6, -0.826591, -93.0982, 143.911, -0.826591, -91.5036, 146.895, -0.826591, -99.5701]; + uvs = new [0.56032, 0.00312054, 0.619097, 0.0061655, 0.539644, 0.506704, 0.518682, 0.499097, 0.518496, 0.505609, 0.539829, 0.500193, 0.808811, 0.307929, 0.518496, 0.505609, 0.518682, 0.499097, 0.519042, 0.499116, 0.518856, 0.505627, 0.520098, 0.499171, 0.519913, 0.505682, 0.521779, 0.499258, 0.521593, 0.505769, 0.522815, 0.505832, 0.523, 0.499321, 0.523783, 0.505883, 0.523969, 0.499371, 0.526333, 0.506015, 0.526519, 0.499503, 0.52907, 0.506156, 0.529255, 0.499645, 0.531807, 0.506298, 0.531992, 0.499787, 0.534357, 0.50643, 0.534542, 0.499919, 0.536547, 0.506544, 0.536732, 0.500032, 0.538413, 0.500119, 0.538227, 0.506631, 0.539469, 0.500174, 0.539283, 0.506685, 0.539829, 0.500193, 0.539644, 0.506704, 0.521791, 0.0717724, 0.521791, 0.0717724, 0.522955, 0.0309187, 0.522955, 0.0309187, 0.520466, 0.118292, 0.520466, 0.118292, 0.521497, 0.0820948, 0.521497, 0.0820948, 0.519168, 0.163838, 0.519168, 0.163838, 0.520199, 0.127641, 0.520199, 0.127641, 0.511537, 0.431711, 0.511537, 0.431711, 0.51155, 0.431254, 0.512555, 0.395971, 0.512568, 0.395514, 0.512568, 0.395514, 0.510006, 0.485454, 0.510006, 0.485454, 0.51123, 0.442491, 0.51123, 0.442491, 0.588902, 0.528369, 0.807761, 0.229899, 0.658139, 0.126587, 0.693937, 0.128442, 0.658139, 0.126587, 0.693937, 0.128442, 0.652784, 0.107479, 0.652269, 0.125578, 0.652269, 0.125578, 0.6533, 0.0893807, 0.6533, 0.0893807, 0.65362, 0.0781441, 0.654844, 0.0351804, 0.65362, 0.0781441, 0.654232, 0.0566623, 0.654844, 0.0351804, 0.808634, 0.314129, 0.807951, 0.338119, 0.650307, 0.401486, 0.686105, 0.403341, 0.650307, 0.401486, 0.686105, 0.403341, 0.644397, 0.401886, 0.644397, 0.401886, 0.643366, 0.438083, 0.643366, 0.438083, 0.643046, 0.449319, 0.641822, 0.492283, 0.643046, 0.449319, 0.641822, 0.492283, 0.818857, 0.314658, 0.818857, 0.314658, 0.502455, 0.393827, 0.475952, 0.392454, 0.502438, 0.393826, 0.47597, 0.392455, 0.467958, 0.39204, 0.441455, 0.390667, 0.467941, 0.392039, 0.441473, 0.390668, 0.398964, 0.388466, 0.372461, 0.387092, 0.398947, 0.388465, 0.372479, 0.387093, 0.433461, 0.390253, 0.406958, 0.38888, 0.433444, 0.390252, 0.406976, 0.388881, 0.364467, 0.386678, 0.337964, 0.385305, 0.36445, 0.386678, 0.337982, 0.385306, 0.329971, 0.384891, 0.303468, 0.383518, 0.329954, 0.38489, 0.303487, 0.383519, 0.618699, 0.0201144, 0.618324, 0.0332884, 0.618324, 0.0332884, 0.628469, 0.0206205, 0.628469, 0.0206205, 0.628093, 0.0337945, 0.628093, 0.0337945, 0.664034, 0.0356565, 0.669294, 0.0227355, 0.669413, 0.0185488, 0.669413, 0.018549, 0.672399, 0.0228964, 0.672399, 0.0228963, 0.666057, 0.0357613, 0.559923, 0.0170695, 0.559548, 0.0302435, 0.559548, 0.0302435, 0.550154, 0.0165635, 0.550154, 0.0165635, 0.549778, 0.0297374, 0.549778, 0.0297375, 0.519098, 0.0149544, 0.513838, 0.0278754, 0.509328, 0.0144484, 0.509448, 0.0102619, 0.509448, 0.0102618, 0.506224, 0.0142876, 0.506224, 0.0142877, 0.512835, 0.386165, 0.51335, 0.368067, 0.512835, 0.386165, 0.513866, 0.349968, 0.513866, 0.349968, 0.807761, 0.229898, 0.810189, 0.236107, 0.804988, 0.235837, 0.807415, 0.242046, 0.804988, 0.235837, 0.807415, 0.242046, 0.812616, 0.242315, 0.812616, 0.242315, 0.815389, 0.236376, 0.812962, 0.230168, 0.812962, 0.230168, 0.815389, 0.236376, 0.805367, 0.313959, 0.802939, 0.307751, 0.802939, 0.307751, 0.805367, 0.313959, 0.805713, 0.301812, 0.810913, 0.302082, 0.805713, 0.301812, 0.810913, 0.302082, 0.813341, 0.30829, 0.810567, 0.314229, 0.810567, 0.314229, 0.813341, 0.30829, 0.80814, 0.30802, 0.668799, 0.0400959, 0.672023, 0.0360702, 0.668799, 0.0400959, 0.675128, 0.036231, 0.672023, 0.0360702, 0.66868, 0.0442826, 0.675128, 0.036231, 0.66868, 0.0442826, 0.65903, 0.03959, 0.658911, 0.0437766, 0.65903, 0.03959, 0.658911, 0.0437766, 0.65294, 0.0350817, 0.659644, 0.0180427, 0.659644, 0.0180427, 0.65642, 0.0220686, 0.659763, 0.0138561, 0.653316, 0.0219076, 0.659763, 0.0138561, 0.672399, 0.0228963, 0.669533, 0.0143622, 0.669413, 0.0185488, 0.675503, 0.0230571, 0.669533, 0.0143622, 0.675503, 0.0230571, 0.508834, 0.031809, 0.505848, 0.0274615, 0.508834, 0.031809, 0.502744, 0.0273007, 0.505848, 0.0274615, 0.508715, 0.0359955, 0.502744, 0.0273007, 0.508715, 0.0359955, 0.518603, 0.0323151, 0.521827, 0.0282893, 0.518484, 0.0365018, 0.518603, 0.0323151, 0.524932, 0.0284501, 0.518484, 0.0365018, 0.524932, 0.0284502, 0.519217, 0.0107679, 0.519217, 0.0107679, 0.519336, 0.00658131, 0.525307, 0.0152761, 0.519336, 0.00658131, 0.506224, 0.0142877, 0.509567, 0.00607532, 0.509448, 0.0102619, 0.503119, 0.0141269, 0.509567, 0.00607532, 0.503119, 0.0141269, 0.644353, 0.5098, 0.644287, 0.512125, 0.644287, 0.512125, 0.631842, 0.51148, 0.631842, 0.51148, 0.636792, 0.509409, 0.63259, 0.485208, 0.631751, 0.514658, 0.644197, 0.515303, 0.631751, 0.514658, 0.644197, 0.515303, 0.632242, 0.497413, 0.632242, 0.497413, 0.63259, 0.485208, 0.604347, 0.490342, 0.601486, 0.490194, 0.606083, 0.490432, 0.601486, 0.490194, 0.608393, 0.490551, 0.606083, 0.490432, 0.611255, 0.4907, 0.611255, 0.4907, 0.608018, 0.503725, 0.603972, 0.503516, 0.606183, 0.497034, 0.637177, 0.495907, 0.637287, 0.492048, 0.60111, 0.503368, 0.64382, 0.50558, 0.650161, 0.492715, 0.649871, 0.502911, 0.641984, 0.498888, 0.651594, 0.503, 0.601376, 0.494052, 0.61099, 0.500015, 0.640148, 0.492197, 0.60122, 0.499509, 0.601486, 0.490194, 0.611145, 0.494558, 0.651595, 0.503, 0.652073, 0.486217, 0.652073, 0.486217, 0.654429, 0.486339, 0.653951, 0.503122, 0.654429, 0.486339, 0.653951, 0.503122, 0.641641, 0.485677, 0.641641, 0.485677, 0.547112, 0.487377, 0.549974, 0.487525, 0.545376, 0.487287, 0.549974, 0.487525, 0.543066, 0.487167, 0.545376, 0.487287, 0.540204, 0.487019, 0.540205, 0.487019, 0.542691, 0.500341, 0.546737, 0.500551, 0.544901, 0.493859, 0.514062, 0.489529, 0.514172, 0.48567, 0.504138, 0.494479, 0.549598, 0.500699, 0.506889, 0.498486, 0.513678, 0.503031, 0.501298, 0.485003, 0.501008, 0.495199, 0.506117, 0.502639, 0.5091, 0.492004, 0.499284, 0.49511, 0.499284, 0.49511, 0.549864, 0.491383, 0.539939, 0.496334, 0.549708, 0.49684, 0.513907, 0.494986, 0.549974, 0.487525, 0.540094, 0.490877, 0.506051, 0.504964, 0.518496, 0.505609, 0.518496, 0.505609, 0.519245, 0.479336, 0.518406, 0.508786, 0.50596, 0.508142, 0.518406, 0.508786, 0.50596, 0.508142, 0.518897, 0.491542, 0.518897, 0.491542, 0.519245, 0.479336, 0.499284, 0.49511, 0.499762, 0.478327, 0.499762, 0.478327, 0.497406, 0.478205, 0.496928, 0.494988, 0.497406, 0.478205, 0.496928, 0.494988, 0.510194, 0.478867, 0.510194, 0.478867, 0.510936, 0.498696, 0.639773, 0.50537, 0.504138, 0.494479, 0.506051, 0.504964, 0.510936, 0.498696, 0.646946, 0.496413, 0.639773, 0.50537, 0.637022, 0.501364, 0.64382, 0.50558, 0.646791, 0.50187, 0.511311, 0.485522, 0.644287, 0.512125, 0.507264, 0.485312, 0.514172, 0.48567, 0.506051, 0.504964, 0.507264, 0.485312, 0.644195, 0.492406, 0.506889, 0.498486, 0.504293, 0.489023, 0.637287, 0.492048, 0.651594, 0.503, 0.646946, 0.496413, 0.644195, 0.492406, 0.504293, 0.489023, 0.637022, 0.501364, 0.513907, 0.494986, 0.646791, 0.50187, 0.656313, 0.0258465, 0.659417, 0.0260073, 0.650945, 0.0255685, 0.653208, 0.0256857, 0.65294, 0.0350818, 0.628201, 0.0300168, 0.639493, 0.0306019, 0.659257, 0.0316256, 0.628281, 0.0272077, 0.650865, 0.0283777, 0.650945, 0.0255685, 0.659337, 0.0288165, 0.628361, 0.0243985, 0.628361, 0.0243985, 0.653316, 0.0219078, 0.522095, 0.0188931, 0.51899, 0.0187323, 0.527462, 0.0191711, 0.521935, 0.0245115, 0.525039, 0.0246723, 0.524932, 0.0284501, 0.525039, 0.0246723, 0.549886, 0.0259595, 0.549886, 0.0259595, 0.538594, 0.0253745, 0.51883, 0.0243506, 0.51883, 0.0243505, 0.549966, 0.0231503, 0.527382, 0.0219803, 0.51891, 0.0215415, 0.550046, 0.0203412, 0.538754, 0.0197562, 0.525199, 0.0190539, 0.525307, 0.0152761, 0.549532, 0.503024, 0.539307, 0.518523, 0.539829, 0.500193, 0.539307, 0.518523, 0.539763, 0.502518, 0.549598, 0.500699, 0.549076, 0.519029, 0.549076, 0.519029, 0.601044, 0.505692, 0.610357, 0.522204, 0.61088, 0.503874, 0.610357, 0.522204, 0.610813, 0.506198, 0.60111, 0.503367, 0.600588, 0.521698, 0.600588, 0.521698, 0.200015, 0.157124, 0.202098, 0.157232, 0.200899, 0.199312, 0.202982, 0.199419, 0.198816, 0.199204, 0.200899, 0.199312, 0.202098, 0.157232, 0.204181, 0.15734, 0.200015, 0.157124, 0.202098, 0.157232, 0.200899, 0.199311, 0.202982, 0.199419, 0.198816, 0.199204, 0.204181, 0.15734, 0.659337, 0.0288164, 0.664222, 0.0290694, 0.658752, 0.0493522, 0.668521, 0.0498583, 0.663769, 0.0449557, 0.658885, 0.0447026, 0.668654, 0.0452087, 0.663637, 0.0496053, 0.658885, 0.0447026, 0.658752, 0.0493522, 0.663769, 0.0449557, 0.668521, 0.0498583, 0.668654, 0.0452087, 0.664674, 0.0131831, 0.669559, 0.0134363, 0.65979, 0.0129302, 0.664807, 0.0085336, 0.669559, 0.0134363, 0.669691, 0.00878656, 0.664674, 0.0131832, 0.659922, 0.00828052, 0.664409, 0.0224825, 0.664034, 0.0356564, 0.664409, 0.0224825, 0.679638, 0.0232713, 0.679263, 0.0364453, 0.676002, 0.0296797, 0.67619, 0.0230927, 0.675815, 0.0362667, 0.67945, 0.0298584, 0.67619, 0.0230927, 0.679638, 0.0232713, 0.676002, 0.0296797, 0.679263, 0.0364453, 0.675815, 0.0362667, 0.509141, 0.0210354, 0.514025, 0.0212885, 0.518325, 0.0420775, 0.508556, 0.0415714, 0.513573, 0.0371748, 0.518458, 0.0374278, 0.508688, 0.0369217, 0.51344, 0.0418244, 0.518458, 0.0374278, 0.518325, 0.0420774, 0.513573, 0.0371748, 0.508556, 0.0415714, 0.508688, 0.0369217, 0.514478, 0.00540221, 0.509593, 0.00514919, 0.519363, 0.00565529, 0.51461, 0.000752628, 0.509593, 0.00514919, 0.509726, 0.000499606, 0.514478, 0.00540221, 0.519495, 0.00100565, 0.519363, 0.00565529, 0.514213, 0.0147015, 0.513838, 0.0278755, 0.514213, 0.0147015, 0.498984, 0.0139126, 0.498609, 0.0270866, 0.502245, 0.0206782, 0.502432, 0.0140913, 0.502057, 0.0272652, 0.498797, 0.0204996, 0.502432, 0.0140913, 0.498984, 0.0139126, 0.502245, 0.0206782, 0.498609, 0.0270866, 0.502057, 0.0272652, 0.550154, 0.0165633, 0.559923, 0.0170694, 0.550154, 0.0165633, 0.559923, 0.0170694, 0.550419, 0.00726402, 0.550419, 0.00726402, 0.550551, 0.00261438, 0.550551, 0.00261438, 0.550551, 0.00261438, 0.56032, 0.00312042, 0.56032, 0.00312042, 0.560188, 0.00777012, 0.560188, 0.00777012, 0.555303, 0.0075171, 0.555436, 0.00286746, 0.555303, 0.0075171, 0.628469, 0.0206205, 0.618699, 0.0201143, 0.628469, 0.0206205, 0.618699, 0.0201143, 0.628734, 0.0113212, 0.628734, 0.0113212, 0.628866, 0.00667155, 0.628866, 0.00667155, 0.628866, 0.00667155, 0.619097, 0.0061655, 0.619097, 0.0061655, 0.618964, 0.0108151, 0.618964, 0.0108151, 0.623849, 0.0110681, 0.623981, 0.00641853, 0.623849, 0.0110681, 0.535617, 0.499975, 0.538481, 0.48693, 0.535992, 0.486801, 0.538105, 0.500103, 0.538481, 0.48693, 0.538105, 0.500103, 0.535992, 0.486801, 0.535617, 0.499975, 0.539829, 0.500193, 0.615092, 0.504092, 0.612979, 0.490789, 0.615467, 0.490918, 0.612604, 0.503963, 0.612979, 0.490789, 0.612604, 0.503963, 0.615467, 0.490918, 0.615092, 0.504092, 0.61088, 0.503874, 0.810141, 0.307998, 0.807585, 0.236098, 0.599347, 0.529846, 0.588906, 0.528316, 0.542158, 0.521468, 0.805366, 0.313959, 0.80898, 0.301981, 0.80905, 0.299529, 0.659259, 0.0315448, 0.662386, 0.0223777, 0.659415, 0.026088, 0.669029, 0.032051, 0.518832, 0.0242699, 0.518988, 0.0188131, 0.515861, 0.0279802, 0.518722, 0.0281284, 0.656045, 0.0352426, 0.656045, 0.0352426, 0.656153, 0.0314648, 0.525307, 0.0152761, 0.524932, 0.0284501, 0.525039, 0.0246723, 0.527302, 0.0247895, 0.525199, 0.0190539, 0.202098, 0.157232, 0.664222, 0.0290694, 0.669106, 0.0293224, 0.669106, 0.0293225, 0.51891, 0.0215416, 0.51891, 0.0215416, 0.509141, 0.0210354, 0.514025, 0.0212885, 0.810141, 0.307998, 0.519495, 0.00100565, 0.659922, 0.00828052, 0.599342, 0.52991, 0.818174, 0.338649, 0.810853, 0.236267, 0.666433, 0.0225873, 0.669294, 0.0227355, 0.518722, 0.0281284, 0.509063, 0.0237638, 0.509328, 0.0144485, 0.65294, 0.0350817, 0.521827, 0.0282893, 0.522202, 0.0151153, 0.623584, 0.0203674, 0.555038, 0.0168164, 0.60111, 0.503367, 0.656313, 0.0258465, 0.650945, 0.0255685, 0.656153, 0.0314648, 0.653048, 0.0313039, 0.650785, 0.0311868, 0.639653, 0.0249835, 0.653208, 0.0256857, 0.522095, 0.0188931, 0.550046, 0.0203412, 0.659337, 0.0288164, 0.669106, 0.0293224, 0.659337, 0.0288163, 0.664222, 0.0290694, 0.669691, 0.00878656, 0.65979, 0.0129302, 0.51891, 0.0215416, 0.514025, 0.0212885, 0.509726, 0.000499547, 0.659257, 0.0316256, 0.669106, 0.0293225, 0.509141, 0.0210354, 0.509141, 0.0210354, 0.51891, 0.0215416, 0.664034, 0.0356565, 0.653316, 0.0219077, 0.527462, 0.0191711, 0.527302, 0.0247895, 0.659337, 0.0288163, 0.664034, 0.0356565, 0.513838, 0.0278754, 0.664034, 0.0356565, 0.669184, 0.026594, 0.508953, 0.0276223, 0.522202, 0.0151153, 0.61088, 0.503874, 0.549598, 0.500699, 0.650785, 0.0311868, 0.653048, 0.0313039, 0.521935, 0.0245115, 0.527462, 0.0191711, 0.812182, 0.236336, 0.807951, 0.338119, 0.662011, 0.0355517, 0.65915, 0.0354034, 0.51219, 0.0145966, 0.650785, 0.0311868, 0.628201, 0.0300168, 0.522202, 0.0151153, 0.521827, 0.0282893, 0.51899, 0.0187323, 0.618699, 0.0201144, 0.805366, 0.313959, 0.805543, 0.30776, 0.659149, 0.0354034, 0.65642, 0.0220686, 0.659417, 0.0260073, 0.527302, 0.0247895, 0.513838, 0.0278754, 0.521935, 0.0245115, 0.539829, 0.500193, 0.515861, 0.0279802, 0.726133, 0.48318, 0.713084, 0.521438, 0.713084, 0.521438, 0.726133, 0.48318, 0.776866, 0.557062, 0.747579, 0.571671, 0.747579, 0.571671, 0.776866, 0.557062, 0.644597, 0.722231, 0.657646, 0.683973, 0.657646, 0.683973, 0.644597, 0.722231, 0.719212, 0.726097, 0.708379, 0.686602, 0.708379, 0.686602, 0.719212, 0.726097, 0.774, 0.657681, 0.74563, 0.640085, 0.74563, 0.640085, 0.774, 0.657681, 0.267547, 0.285246, 0.267547, 0.285246, 0.266348, 0.327325, 0.23305, 0.283459, 0.23305, 0.283459, 0.231851, 0.325538, 0.340086, 0.164381, 0.338888, 0.20646, 0.340086, 0.164381, 0.236595, 0.159019, 0.235397, 0.201099, 0.236595, 0.159019, 0.305589, 0.162593, 0.30439, 0.204673, 0.305589, 0.162593, 0.271092, 0.160806, 0.269893, 0.202886, 0.269893, 0.202886, 0.271092, 0.160806, 0.52581, 0.0771493, 0.557014, 0.0787659, 0.557014, 0.0787659, 0.52581, 0.0771493, 0.374583, 0.166168, 0.373384, 0.208247, 0.373384, 0.208247, 0.374583, 0.166168, 0.443577, 0.169742, 0.442378, 0.211821, 0.443577, 0.169742, 0.40908, 0.167955, 0.407882, 0.210034, 0.40908, 0.167955, 0.555689, 0.125286, 0.555689, 0.125286, 0.524485, 0.123669, 0.478074, 0.171529, 0.476875, 0.213608, 0.476875, 0.213608, 0.478074, 0.171529, 0.554419, 0.169858, 0.554419, 0.169858, 0.523215, 0.168241, 0.513957, 0.493226, 0.545161, 0.494842, 0.545161, 0.494842, 0.513957, 0.493226, 0.518889, 0.173643, 0.51769, 0.215723, 0.51769, 0.215723, 0.518889, 0.173643, 0.646699, 0.174638, 0.615494, 0.173021, 0.615494, 0.173021, 0.646699, 0.174638, 0.768694, 0.23996, 0.740416, 0.257823, 0.740416, 0.257823, 0.768694, 0.23996, 0.743736, 0.20017, 0.733004, 0.239716, 0.743736, 0.20017, 0.719433, 0.228963, 0.719433, 0.228963, 0.710356, 0.188672, 0.685202, 0.18226, 0.684003, 0.224339, 0.685202, 0.18226, 0.650705, 0.180472, 0.649506, 0.222551, 0.650705, 0.180472, 0.637072, 0.499604, 0.605868, 0.497987, 0.605868, 0.497987, 0.637072, 0.499604, 0.650865, 0.0283775, 0.619661, 0.0267609, 0.619661, 0.0267609, 0.650865, 0.0283775, 0.527382, 0.0219803, 0.558586, 0.0235969, 0.558586, 0.0235969, 0.527382, 0.0219803, 0.300501, 0.341223, 0.300501, 0.341223, 0.299302, 0.383302, 0.334997, 0.343011, 0.334997, 0.343011, 0.333799, 0.38509, 0.369494, 0.344798, 0.369494, 0.344798, 0.368296, 0.386877, 0.403991, 0.346585, 0.403991, 0.346585, 0.402793, 0.388664, 0.438488, 0.348372, 0.438488, 0.348372, 0.43729, 0.390451, 0.472985, 0.350159, 0.472985, 0.350159, 0.471787, 0.392238, 0.515344, 0.298083, 0.515344, 0.298083, 0.514145, 0.340162, 0.641635, 0.352394, 0.610431, 0.350777, 0.610431, 0.350777, 0.641635, 0.352394, 0.739808, 0.27915, 0.739808, 0.27915, 0.766987, 0.299886, 0.731388, 0.296437, 0.731388, 0.296437, 0.739838, 0.336976, 0.717246, 0.305753, 0.717246, 0.305753, 0.705903, 0.344987, 0.681657, 0.306699, 0.681657, 0.306699, 0.680458, 0.348778, 0.64716, 0.304912, 0.64716, 0.304912, 0.645961, 0.346991, 0.198553, 0.281672, 0.198553, 0.281672, 0.197355, 0.323751, 0.647968, 0.130066, 0.616764, 0.128449, 0.647968, 0.130066, 0.618089, 0.0819298, 0.649294, 0.0835464, 0.63904, 0.443485, 0.607836, 0.441869, 0.63904, 0.443485, 0.640365, 0.396966, 0.609161, 0.395349, 0.640365, 0.396966, 0.54676, 0.438705, 0.54676, 0.438705, 0.515556, 0.437088, 0.548086, 0.392185, 0.548086, 0.392185, 0.516882, 0.390568, 0.549355, 0.347613, 0.549355, 0.347613, 0.518151, 0.345997, 0.474529, 0.295969, 0.474529, 0.295969, 0.47333, 0.338048, 0.371038, 0.290608, 0.371038, 0.290608, 0.369839, 0.332687, 0.405535, 0.292395, 0.405535, 0.292395, 0.404336, 0.334474, 0.336541, 0.28882, 0.336541, 0.28882, 0.335342, 0.3309, 0.438833, 0.336261, 0.440032, 0.294182, 0.440032, 0.294182, 0.438833, 0.336261, 0.302044, 0.287033, 0.302044, 0.287033, 0.300846, 0.329113, 0.338888, 0.20646, 0.733004, 0.239716, 0.710356, 0.188672, 0.333799, 0.38509, 0.514145, 0.340162, 0.616764, 0.128449, 0.404336, 0.334474, 0.523215, 0.168241, 0.299302, 0.383302, 0.649294, 0.0835464, 0.47333, 0.338048, 0.266348, 0.327325, 0.739838, 0.336976, 0.645961, 0.346991, 0.369839, 0.332687, 0.335342, 0.3309, 0.231852, 0.325538, 0.442378, 0.211821, 0.471787, 0.392238, 0.766987, 0.299886, 0.705903, 0.344987, 0.516882, 0.390568, 0.235397, 0.201099, 0.30439, 0.204673, 0.407882, 0.210034, 0.524485, 0.123669, 0.684003, 0.224339, 0.649506, 0.222551, 0.680458, 0.348778, 0.197355, 0.323751, 0.618089, 0.0819298, 0.607836, 0.441869, 0.609161, 0.395349, 0.515556, 0.437088, 0.518151, 0.345997, 0.368296, 0.386877, 0.402793, 0.388664, 0.43729, 0.390451, 0.300846, 0.329113, 0.708379, 0.686602, 0.657646, 0.683973, 0.685365, 0.602706, 0.708379, 0.686602, 0.657646, 0.683973, 0.623151, 0.63374, 0.623151, 0.63374, 0.662351, 0.51881, 0.713084, 0.521438, 0.662351, 0.51881, 0.713084, 0.521438, 0.747579, 0.571671, 0.747579, 0.571671, 0.74563, 0.640085, 0.74563, 0.640085, 0.6251, 0.565327, 0.6251, 0.565327, 0.659259, 0.0315448, 0.65915, 0.0354034, 0.659525, 0.0222294, 0.659415, 0.026088, 0.666433, 0.0225873, 0.664222, 0.0290694, 0.669294, 0.0227355, 0.518832, 0.0242699, 0.519098, 0.0149545, 0.514025, 0.0212884, 0.513838, 0.0278754, 0.509328, 0.0144485, 0.669029, 0.032051, 0.518988, 0.0188131, 0.509063, 0.0237638, 0.51219, 0.0145966, 0.668919, 0.0359094, 0.518722, 0.0281284, 0.516236, 0.0148063, 0.511814, 0.0277705, 0.509219, 0.018307, 0.659525, 0.0222294, 0.664034, 0.0356565, 0.159982, 0.352159, 0.160192, 0.344796, 0.165442, 0.352442, 0.159772, 0.359522, 0.154522, 0.351876, 0.161865, 0.286071, 0.162074, 0.278708, 0.167325, 0.286354, 0.161655, 0.293434, 0.156405, 0.285788, 0.111549, 0.34965, 0.111759, 0.342287, 0.117009, 0.349933, 0.111339, 0.357013, 0.106089, 0.349367, 0.113431, 0.283562, 0.113641, 0.276199, 0.118891, 0.283845, 0.113222, 0.290925, 0.107971, 0.283279, 0.164712, 0.190819, 0.164922, 0.183456, 0.170172, 0.191102, 0.164502, 0.198182, 0.159252, 0.190536, 0.166595, 0.124732, 0.166804, 0.117369, 0.172055, 0.125014, 0.166385, 0.132095, 0.161135, 0.124449, 0.116279, 0.18831, 0.116488, 0.180947, 0.121739, 0.188593, 0.116069, 0.195673, 0.110819, 0.188028, 0.118161, 0.122222, 0.118371, 0.114859, 0.123621, 0.122505, 0.117951, 0.129585, 0.112701, 0.12194, 0.628203, 0.029936, 0.623396, 0.0269544, 0.61859, 0.023973, 0.621186, 0.0334367, 0.625607, 0.0204724, 0.55264, 0.0298857, 0.554851, 0.0234035, 0.550044, 0.020422, 0.557062, 0.0169212, 0.559658, 0.0263849, 0.734471, 0.458732, 0.729921, 0.48553, 0.740591, 0.454246, 0.733015, 0.449547, 0.722345, 0.480831, 0.726133, 0.48318, 0.795583, 0.547726, 0.778313, 0.562335, 0.802262, 0.550389, 0.799369, 0.539842, 0.77542, 0.551789, 0.776866, 0.557062, 0.636259, 0.746679, 0.64081, 0.719882, 0.630139, 0.751165, 0.637715, 0.755864, 0.648385, 0.72458, 0.644597, 0.722231, 0.726136, 0.751335, 0.715302, 0.728047, 0.724161, 0.760342, 0.731982, 0.756441, 0.723123, 0.724146, 0.719212, 0.726096, 0.79213, 0.668926, 0.772258, 0.662789, 0.795457, 0.677178, 0.798941, 0.666962, 0.775742, 0.652573, 0.774, 0.657681, 0.582425, 0.260317, 0.807413, 0.242109, 0.810681, 0.242278, 0.611442, 0.31529, 0.613385, 0.308898, 0.636912, 0.505222, 0.641447, 0.505457, 0.610132, 0.492582, 0.606396, 0.492388, 0.802939, 0.307751, 0.80905, 0.299529, 0.609812, 0.503818, 0.644417, 0.401181, 0.79498, 0.244271, 0.652249, 0.126282, 0.720871, 0.116899, 0.619849, 0.0201739, 0.655458, 0.0136331, 0.804988, 0.235837, 0.590703, 0.637157, 0.589709, 0.00464302, 0.560162, 0.00869632, 0.58955, 0.0102187, 0.618938, 0.0117412, 0.521582, 0.00669765, 0.519495, 0.00100559, 0.519336, 0.00658131, 0.521741, 0.001122, 0.535023, 0.00181007, 0.534864, 0.00738579, 0.659763, 0.0138562, 0.657676, 0.00816411, 0.657517, 0.0137398, 0.659922, 0.00828046, 0.644235, 0.0130517, 0.644394, 0.00747603, 0.630953, 0.0123637, 0.631112, 0.00678796, 0.550392, 0.00819016, 0.548305, 0.00249815, 0.548146, 0.00807381, 0.628707, 0.0122473, 0.583977, 0.720638, 0.583977, 0.720638, 0.590703, 0.637157, 0.599347, 0.529846, 0.601479, 0.503386, 0.601479, 0.503386, 0.19927, 0.494444, 0.182386, 0.49337, 0.181481, 0.493312, 0.193456, 0.494074, 0.205258, 0.494825, 0.179055, 0.562667, 0.167196, 0.561913, 0.167196, 0.561913, 0.183785, 0.427427, 0.19576, 0.428189, 0.171925, 0.426673, 0.633459, 0.639372, 0.633459, 0.639372, 0.63728, 0.505241, 0.0727399, 0.2903, 0.0938796, 0.292252, 0.0515898, 0.288564, 0.628707, 0.0122473, 0.523642, 0.00680435, 0.550392, 0.00819016, 0.570753, 0.525657, 0.196876, 0.664089, 0.196271, 0.676723, 0.196573, 0.670406, 0.526176, 0.994324, 0.492741, 0.987085, 0.492555, 0.989398, 0.526362, 0.992011, 0.526362, 0.992011, 0.492741, 0.987085, 0.559984, 0.996936, 0.559984, 0.996936, 0.511665, 0.752186, 0.511665, 0.752186, 0.559797, 0.999249, 0.561512, 0.9995, 0.578907, 0.762037, 0.580622, 0.762288, 0.509949, 0.751935, 0.49084, 0.989147, 0.580622, 0.762288, 0.578907, 0.762037, 0.0941014, 0.288222, 0.0462677, 0.285768, 0.0941014, 0.288222, 0.0462677, 0.285768, 0.0397098, 0.536298, 0.0397098, 0.536298, 0.0505422, 0.31041, 0.0505422, 0.31041, 0.096006, 0.639315, 0.096006, 0.639315, 0.107661, 0.39628, 0.107773, 0.393947, 0.107773, 0.393947, 0.040679, 0.292389, 0.040679, 0.292389, 0.040199, 0.3024, 0.040199, 0.3024, 0.0451087, 0.309937, 0.0451087, 0.309937, 0.0911141, 0.393084, 0.0911141, 0.393084, 0.0350247, 0.633998, 0.0350247, 0.633998, 0.0357995, 0.61784, 0.0357995, 0.61784, 0.291531, 0.561934, 0.291531, 0.561934, 0.253637, 0.55863, 0.253637, 0.55863, 0.28748, 0.646406, 0.28748, 0.646406, 0.496046, 0.664594, 0.496046, 0.664594, 0.250905, 0.615592, 0.250905, 0.615592, 0.0889691, 0.39465, 0.07717, 0.393621, 0.0678242, 0.392806, 0.0379882, 0.536148, 0.0487092, 0.312582, 0.0384312, 0.303212, 0.0442843, 0.312196, 0.197871, 0.643348, 0.197871, 0.643348, 0.194356, 0.716642, 0.194356, 0.716642, 0.195276, 0.697465, 0.195276, 0.697465, 0.190915, 0.563421, 0.196844, 0.563799, 0.202774, 0.564176, 0.197327, 0.383377, 0.197327, 0.383377, 0.22093, 0.384878, 0.22093, 0.384878, 0.198505, 0.342049, 0.198505, 0.342049, 0.289311, 0.644281, 0.496232, 0.662279, 0.494639, 0.703468, 0.508893, 0.505111, 0.492926, 0.703319, 0.510611, 0.5052, 0.510611, 0.5052, 0.508893, 0.505111, 0.510611, 0.5052, 0.494639, 0.703468, 0.108553, 0.413719, 0.212931, 0.613625, 0.212931, 0.613625, 0.197807, 0.612663, 0.197807, 0.612663, 0.201071, 0.612871, 0.189212, 0.612116, 0.135514, 0.645092, 0.100552, 0.580559, 0.583977, 0.720638, 0.513305, 0.710285, 0.135857, 0.63794, 0.0331917, 0.636169, 0.0340779, 0.61769, 0.213012, 0.611301, 0.249298, 0.613059, 0.132342, 0.711234, 0.509949, 0.751935, 0.0390035, 0.291278, 0.0456659, 0.283385, 0.108646, 0.286647, 0.196737, 0.643249, 0.196737, 0.643249, 0.519336, 0.00658131, 0.519495, 0.00100565, 0.659922, 0.00828052, 0.559923, 0.0170695, 0.618699, 0.0201144, 0.618699, 0.0201144, 0.559923, 0.0170695, 0.659763, 0.0138562, 0.601479, 0.503386, 0.549598, 0.500699, 0.525263, 0.499438, 0.51236, 0.49877, 0.51236, 0.49877, 0.185676, 0.642284, 0.135857, 0.63794, 0.265211, 0.64922, 0.265211, 0.64922, 0.238379, 0.61253, 0.213012, 0.611301, 0.249298, 0.613059, 0.263576, 0.683318, 0.263576, 0.683318, 0.492926, 0.703319, 0.508727, 0.704696, 0.0379882, 0.536148, 0.00440976, 0.53322, 0.00440976, 0.53322, 0.0397098, 0.536298, 0.155282, 0.585332, 0.16634, 0.586296, 0.166343, 0.586296, 0.100552, 0.580559, 0.0674871, 0.59554, 0.0209741, 0.5574, 0.0192352, 0.59366, 0.000499457, 0.614761, 0.0357995, 0.61784, 0.182984, 0.476254, 0.194055, 0.476958, 0.17022, 0.475442, 0.182079, 0.476197, 0.262616, 0.703337, 0.263914, 0.676279, 0.526788, 0.71226, 0.516347, 0.710731, 0.512112, 0.725094, 0.513305, 0.710285, 0.545286, 0.757111, 0.000499457, 0.614761, 0.0340779, 0.61769, 0.0331917, 0.636169, 0.132342, 0.711234, 0.17022, 0.475442, 0.182079, 0.476197, 0.117588, 0.414294, 0.108553, 0.413719, 0.117588, 0.414294, 0.117154, 0.426693, 0.117154, 0.426693, 0.0349133, 0.636319, 0.512112, 0.725094, 0.261441, 0.359837, 0.221878, 0.357787, 0.221878, 0.357787, 0.171803, 0.430169, 0.49084, 0.989147, 0.511135, 0.498706, 0.561512, 0.9995, 0.135514, 0.645092, 0.160733, 0.429465, 0.171803, 0.430169, 0.261441, 0.359837, 0.00440976, 0.53322, 0.108646, 0.286647, 0.0456659, 0.283385, 0.0390035, 0.291278, 0.0390035, 0.291278, 0.208572, 0.400042, 0.512601, 0.394352, 0.262739, 0.332765, 0.513985, 0.345781, 0.301819, 0.383433, 0.0384312, 0.303212, 0.0442843, 0.312196, 0.0487092, 0.312582, 0.0161077, 0.289281, 0.107562, 0.324726, 0.198863, 0.329456, 0.198863, 0.329456, 0.262739, 0.332765, 0.0161077, 0.289281, 0.0357995, 0.61784, 0.301819, 0.383433, 0.289311, 0.644281, 0.496232, 0.662279, 0.107368, 0.438435, 0.508893, 0.505111, 0.542158, 0.521468, 0.555383, 0.716449, 0.805713, 0.301812, 0.589135, 0.0247916, 0.583598, 0.219137, 0.615075, 0.0261354, 0.552884, 0.223755, 0.563194, 0.0234478, 0.613959, 0.226919, 0.613959, 0.226919, 0.717566, 0.232286, 0.589123, 0.024791, 0.563359, 0.0172476, 0.563183, 0.0234472, 0.5893, 0.0185914, 0.615063, 0.0261348, 0.615246, 0.0199355, 0.811029, 0.230068, 0.810613, 0.244668, 0.807761, 0.229899, 0.811713, 0.206077, 0.811713, 0.206077, 0.807761, 0.229899, 0.811029, 0.230068, 0.609362, 0.22668, 0.609362, 0.226681, 0.557481, 0.223993, 0.557481, 0.223993, 0.615075, 0.0261354, 0.609538, 0.220481, 0.619672, 0.0263736, 0.563194, 0.0234478, 0.558597, 0.0232096, 0.558597, 0.0232096, 0.619849, 0.020174, 0.558774, 0.01701, 0.168948, 0.203865, 0.168948, 0.203865, 0.554983, 0.211919, 0.557375, 0.215403, 0.557658, 0.217793, 0.552897, 0.223283, 0.613972, 0.226447, 0.618315, 0.223312, 0.609956, 0.218127, 0.551138, 0.223192, 0.548746, 0.219708, 0.554983, 0.211919, 0.552897, 0.223283, 0.557308, 0.217775, 0.609888, 0.220499, 0.616058, 0.215083, 0.618315, 0.223312, 0.778388, 0.24385, 0.778388, 0.24385, 0.165227, 0.149696, 0.519049, 0.168025, 0.165227, 0.149696, 0.548881, 0.214963, 0.551464, 0.211736, 0.618451, 0.218567, 0.615732, 0.226538, 0.612539, 0.2149, 0.609956, 0.218127, 0.613972, 0.226447, 0.557375, 0.215403, 0.619672, 0.0263736, 0.614299, 0.214992, 0.614299, 0.214991, 0.619672, 0.0263736, 0.618383, 0.220939, 0.553224, 0.211828, 0.169125, 0.197665, 0.548813, 0.217335, 0.548813, 0.217335, 0.519049, 0.168025, 0.558774, 0.01701, 0.550793, 0.212575, 0.558597, 0.0232096, 0.169125, 0.197665, 0.163869, 0.197393, 0.557658, 0.217793, 0.609538, 0.220481, 0.548881, 0.214963, 0.551464, 0.211736, 0.551138, 0.223192, 0.612539, 0.2149, 0.557308, 0.217775, 0.616058, 0.215083, 0.615732, 0.226538, 0.618451, 0.218567, 0.618383, 0.220939, 0.609888, 0.220499, 0.548746, 0.219708, 0.553224, 0.211828, 0.551887, 0.258735, 0.177291, 0.204297, 0.523403, 0.0151776, 0.552884, 0.223755, 0.177468, 0.198098, 0.575715, 0.495843, 0.117099, 0.271244, 0.555311, 0.300154, 0.715573, 0.302248, 0.575704, 0.495843, 0.549763, 0.494499, 0.607368, 0.296642, 0.601655, 0.497187, 0.607192, 0.302842, 0.607192, 0.302842, 0.601655, 0.497187, 0.606253, 0.497425, 0.549775, 0.494499, 0.549775, 0.494499, 0.545177, 0.494261, 0.545177, 0.494261, 0.606076, 0.503625, 0.545001, 0.500461, 0.55231, 0.305734, 0.550551, 0.305643, 0.554961, 0.300136, 0.555311, 0.300154, 0.546534, 0.297323, 0.616104, 0.300927, 0.716272, 0.308492, 0.549118, 0.294097, 0.546399, 0.302068, 0.546534, 0.297323, 0.548791, 0.305552, 0.55231, 0.305734, 0.554961, 0.300136, 0.607474, 0.305232, 0.615969, 0.305672, 0.616104, 0.300927, 0.160163, 0.327451, 0.513985, 0.345781, 0.160163, 0.327451, 0.613711, 0.297443, 0.609867, 0.308716, 0.613385, 0.308898, 0.607542, 0.30286, 0.554894, 0.302508, 0.606253, 0.497425, 0.611626, 0.308807, 0.606253, 0.497425, 0.545177, 0.494261, 0.166778, 0.280026, 0.546467, 0.299696, 0.166778, 0.280026, 0.513985, 0.345781, 0.545001, 0.500461, 0.50963, 0.498628, 0.54817, 0.304647, 0.548791, 0.305552, 0.550551, 0.305643, 0.161522, 0.279754, 0.546399, 0.302068, 0.581252, 0.301498, 0.554894, 0.302508, 0.609867, 0.308716, 0.607474, 0.305232, 0.607542, 0.30286, 0.546467, 0.299696, 0.550891, 0.293716, 0.730254, 0.241769, 0.737413, 0.258626, 0.737413, 0.258626, 0.73686, 0.278038, 0.73686, 0.278038, 0.728763, 0.294106, 0.728763, 0.294106, 0.733555, 0.237295, 0.718619, 0.226132, 0.741983, 0.25714, 0.731799, 0.298908, 0.811715, 0.205986, 0.803098, 0.171677, 0.807948, 0.33821, 0.807948, 0.33821, 0.807415, 0.242046, 0.716273, 0.308492, 0.107772, 0.275417, 0.11003, 0.196156, 0.175592, 0.142637, 0.172872, 0.116885, 0.172144, 0.142458, 0.154041, 0.111253, 0.153909, 0.115903, 0.176453, 0.112414, 0.109989, 0.196156, 0.170525, 0.199292, 0.172872, 0.116885, 0.112338, 0.113749, 0.169116, 0.36546, 0.146834, 0.359649, 0.146701, 0.364299, 0.1658, 0.360632, 0.166551, 0.334284, 0.169999, 0.334462, 0.106322, 0.203727, 0.109987, 0.196156, 0.107205, 0.172729, 0.128733, 0.204888, 0.119225, 0.196634, 0.128954, 0.197138, 0.110651, 0.172908, 0.173752, 0.20722, 0.151561, 0.198309, 0.15134, 0.206059, 0.170525, 0.199292, 0.171275, 0.172944, 0.174723, 0.173123, 0.170867, 0.303977, 0.168148, 0.278225, 0.167419, 0.303798, 0.149405, 0.269493, 0.149184, 0.277243, 0.171817, 0.270654, 0.111609, 0.139322, 0.109022, 0.108921, 0.108161, 0.139144, 0.112338, 0.113749, 0.131434, 0.110082, 0.131302, 0.114732, 0.116967, 0.275893, 0.117099, 0.271244, 0.119093, 0.201282, 0.119225, 0.196632, 0.105257, 0.357495, 0.102696, 0.330976, 0.124093, 0.363128, 0.124226, 0.358478, 0.106011, 0.331147, 0.105257, 0.357495, 0.1658, 0.360632, 0.168148, 0.278225, 0.107608, 0.275089, 0.106967, 0.297562, 0.104514, 0.267168, 0.103653, 0.29739, 0.107611, 0.275089, 0.126798, 0.268322, 0.126577, 0.276072, 0.106548, 0.195772, 0.10314, 0.195595, 0.10314, 0.195595, 0.104006, 0.286407, 0.100558, 0.286228, 0.103966, 0.286405, 0.108002, 0.267349, 0.104514, 0.267168, 0.10981, 0.203907, 0.100799, 0.277789, 0.109022, 0.108921, 0.108161, 0.139144, 0.128954, 0.197138, 0.151561, 0.198309, 0.101836, 0.361198, 0.101813, 0.361973, 0.102696, 0.330976, 0.173752, 0.20722, 0.15134, 0.206059, 0.111609, 0.139322, 0.106322, 0.203727, 0.128733, 0.204888, 0.1467, 0.364299, 0.146832, 0.359649, 0.106969, 0.297562, 0.106011, 0.331147, 0.103653, 0.29739, 0.124228, 0.358478, 0.169116, 0.36546, 0.124093, 0.363128, 0.110651, 0.172908, 0.107205, 0.172729, 0.100679, 0.282009, 0.100558, 0.286228, 0.103381, 0.187156, 0.100799, 0.277789, 0.103381, 0.187156, 0.107772, 0.275417, 0.11003, 0.196156, 0.104086, 0.282185, 0.104207, 0.277966, 0.149184, 0.277243, 0.126577, 0.276072, 0.126798, 0.268322, 0.171817, 0.270654, 0.170867, 0.303977, 0.153909, 0.115903, 0.154041, 0.111253, 0.149405, 0.269493, 0.167419, 0.303798, 0.166551, 0.334284, 0.124119, 0.362353, 0.172144, 0.142458, 0.171275, 0.172944, 0.175592, 0.142637, 0.169999, 0.334462, 0.174723, 0.173123, 0.176453, 0.112414, 0.131434, 0.110082, 0.131302, 0.114732, 0.124252, 0.357703, 0.146859, 0.358874, 0.106829, 0.187334, 0.106322, 0.203727, 0.101813, 0.361973, 0.113499, 0.236025, 0.106548, 0.195772, 0.104207, 0.277966, 0.106668, 0.191552, 0.106789, 0.187332, 0.10326, 0.191375, 0.116976, 0.275574, 0.106789, 0.187332, 0.104514, 0.267168, 0.612962, 0.261899, 0.611966, 0.29688, 0.611966, 0.29688, 0.607369, 0.296642, 0.166955, 0.273826, 0.776873, 0.29701, 0.616037, 0.3033, 0.611952, 0.297352, 0.718619, 0.226132, 0.7318, 0.298907, 0.741332, 0.279993, 0.695429, 0.128519, 0.744955, 0.132943, 0.779015, 0.155633, 0.803098, 0.171677, 0.797405, 0.371527, 0.117172, 0.268696, 0.11902, 0.203829, 0.733555, 0.237295, 0.56032, 0.00312054, 0.619097, 0.0061655, 0.539829, 0.500193, 0.588906, 0.528316, 0.807761, 0.229899, 0.549593, 0.500699, 0.601644, 0.497187, 0.555488, 0.293954, 0.166955, 0.273826, 0.550891, 0.293716, 0.549118, 0.294097, 0.613711, 0.297443, 0.616036, 0.3033, 0.175121, 0.280458, 0.695429, 0.128519, 0.720871, 0.116899, 0.687598, 0.403418, 0.712304, 0.417636, 0.772479, 0.385032, 0.797405, 0.371527, 0.618938, 0.0117412, 0.615969, 0.305672, 0.73723, 0.404131, 0.112575, 0.268458, 0.114423, 0.203591, 0.119225, 0.196632, 0.119225, 0.196634, 0.116976, 0.275574, 0.599342, 0.52991, 0.730254, 0.241769, 0.744955, 0.132943, 0.73723, 0.404131, 0.747773, 0.370814, 0.118096, 0.236263, 0.741983, 0.25714, 0.747773, 0.370814, 0.550877, 0.294188, 0.611952, 0.297352, 0.779014, 0.155633, 0.753572, 0.167253, 0.772479, 0.385032, 0.550877, 0.294188, 0.687598, 0.403418, 0.810613, 0.244668, 0.560162, 0.00869632, 0.717566, 0.232286, 0.175298, 0.274259, 0.118096, 0.236263, 0.575533, 0.502042, 0.601476, 0.503386, 0.611626, 0.308807, 0.712304, 0.417636, 0.711627, 0.267011, 0.810683, 0.242215, 0.753572, 0.167253, 0.811715, 0.205986, 0.103966, 0.286405, 0.116967, 0.275893, 0.555488, 0.293954, 0.741332, 0.279993, 0.776873, 0.29701, 0.715573, 0.302248, 0.119092, 0.201282, 0.80905, 0.299529, 0.805366, 0.313959, 0.559923, 0.0170695, 0.958594, 0.34055, 0.992249, 0.316621, 0.994245, 0.246579, 0.96205, 0.219239, 0.99225, 0.316621, 0.994245, 0.246579, 0.806564, 0.271929, 0.948852, 0.2793, 0.805783, 0.299359, 0.807345, 0.244498, 0.925932, 0.212518, 0.95005, 0.23727, 0.937117, 0.216179, 0.976442, 0.259727, 0.96205, 0.219239, 0.821252, 0.230598, 0.812962, 0.230168, 0.821225, 0.2304, 0.947655, 0.32133, 0.975242, 0.301845, 0.947655, 0.32133, 0.95005, 0.23727, 0.976442, 0.259727, 0.821936, 0.206607, 0.93356, 0.341021, 0.975242, 0.301845, 0.9222, 0.343514, 0.808634, 0.314129, 0.818781, 0.315047, 0.818781, 0.315047, 0.808634, 0.314129, 0.818174, 0.338649, 0.811029, 0.230068, 0.925932, 0.212518, 0.937117, 0.216179, 0.821936, 0.206607, 0.93356, 0.341021, 0.9222, 0.343514, 0.928705, 0.343392, 0.932036, 0.350927, 0.93514, 0.221277, 0.932411, 0.213313, 0.936161, 0.206144, 0.999501, 0.26002, 0.988241, 0.259437, 0.993995, 0.255346, 0.967555, 0.223914, 0.9618, 0.228005, 0.967805, 0.215148, 0.906433, 0.211409, 0.909446, 0.219185, 0.90992, 0.204003, 0.880434, 0.209932, 0.883447, 0.217707, 0.883921, 0.202526, 0.857447, 0.216229, 0.854435, 0.208454, 0.857922, 0.201048, 0.828436, 0.206976, 0.831448, 0.214752, 0.831923, 0.19957, 0.931879, 0.335734, 0.992499, 0.307854, 0.986745, 0.311946, 0.998004, 0.312529, 0.964349, 0.336458, 0.964598, 0.327692, 0.969854, 0.341133, 0.906142, 0.335161, 0.902695, 0.342602, 0.905751, 0.350347, 0.880135, 0.333945, 0.876689, 0.341386, 0.879745, 0.349131, 0.850682, 0.340169, 0.854128, 0.332729, 0.853738, 0.347914, 0.828122, 0.331512, 0.827731, 0.346698, 0.824676, 0.338953, 0.870187, 0.341082, 0.899933, 0.21104, 0.97306, 0.228589, 0.992749, 0.299088, 0.818174, 0.338649, 0.896194, 0.342298, 0.873934, 0.209562, 0.847935, 0.208084, 0.958594, 0.34055, 0.844181, 0.339865, 0.772122, 0.237794, 0.766926, 0.234868, 0.770463, 0.245051, 0.766926, 0.234868, 0.778737, 0.239825, 0.7752, 0.229642, 0.745037, 0.195377, 0.73982, 0.198238, 0.747651, 0.202102, 0.73982, 0.198238, 0.750791, 0.190532, 0.74296, 0.186667, 0.709255, 0.183788, 0.706366, 0.190306, 0.714345, 0.187037, 0.706366, 0.190306, 0.711689, 0.175248, 0.70371, 0.178517, 0.685347, 0.177159, 0.681036, 0.182044, 0.689368, 0.182475, 0.681036, 0.182044, 0.689719, 0.170163, 0.681386, 0.169731, 0.65085, 0.175372, 0.646539, 0.180256, 0.654871, 0.180688, 0.646539, 0.180256, 0.655222, 0.168376, 0.646889, 0.167944, 0.770282, 0.302399, 0.764934, 0.304779, 0.76904, 0.294992, 0.764934, 0.304779, 0.776993, 0.30106, 0.772886, 0.310847, 0.740863, 0.34189, 0.735825, 0.338498, 0.743852, 0.335455, 0.735825, 0.338498, 0.746325, 0.347316, 0.738297, 0.350359, 0.704528, 0.349743, 0.702018, 0.342945, 0.709787, 0.347029, 0.702018, 0.342945, 0.706468, 0.358509, 0.698699, 0.354424, 0.680313, 0.353879, 0.676292, 0.348563, 0.684624, 0.348994, 0.676292, 0.348563, 0.684274, 0.361306, 0.675941, 0.360875, 0.645816, 0.352092, 0.641795, 0.346775, 0.650127, 0.347207, 0.641795, 0.346775, 0.649777, 0.359519, 0.641444, 0.359087, 0.643206, 0.443701, 0.654428, 0.438656, 0.654108, 0.449893, 0.63888, 0.449104, 0.6392, 0.437867, 0.644531, 0.397182, 0.655754, 0.392136, 0.655433, 0.403373, 0.640205, 0.402584, 0.640525, 0.391347, 0.51139, 0.436872, 0.500168, 0.441918, 0.500488, 0.430681, 0.515716, 0.43147, 0.515396, 0.442707, 0.512715, 0.390353, 0.501493, 0.395398, 0.501813, 0.384161, 0.517042, 0.38495, 0.516722, 0.396187, 0.266189, 0.332944, 0.269996, 0.345752, 0.261663, 0.345321, 0.262182, 0.32711, 0.270515, 0.327541, 0.231691, 0.331156, 0.235499, 0.343965, 0.227166, 0.343533, 0.227685, 0.325322, 0.236017, 0.325754, 0.299141, 0.388921, 0.302949, 0.40173, 0.294616, 0.401298, 0.295135, 0.383087, 0.303468, 0.383518, 0.333639, 0.390708, 0.337446, 0.403517, 0.329114, 0.403085, 0.329632, 0.384874, 0.337965, 0.385306, 0.368136, 0.392495, 0.371943, 0.405304, 0.363611, 0.404872, 0.364129, 0.386661, 0.372462, 0.387093, 0.402633, 0.394282, 0.40644, 0.407091, 0.398108, 0.406659, 0.398626, 0.388448, 0.406959, 0.38888, 0.437129, 0.396069, 0.440937, 0.408878, 0.432604, 0.408446, 0.433123, 0.390235, 0.441456, 0.390667, 0.471627, 0.397856, 0.475434, 0.410665, 0.467102, 0.410233, 0.46762, 0.392022, 0.475953, 0.392454, 0.197194, 0.329369, 0.201002, 0.342178, 0.192669, 0.341746, 0.193188, 0.323535, 0.201521, 0.323967, 0.513985, 0.345781, 0.504487, 0.350915, 0.504807, 0.339679, 0.518311, 0.340378, 0.517991, 0.351615, 0.47317, 0.343666, 0.476978, 0.356475, 0.468645, 0.356043, 0.469164, 0.337832, 0.477497, 0.338264, 0.369679, 0.338305, 0.373487, 0.351114, 0.365154, 0.350682, 0.365673, 0.332471, 0.374006, 0.332902, 0.404176, 0.340092, 0.407984, 0.352901, 0.399651, 0.352469, 0.40017, 0.334258, 0.408503, 0.33469, 0.335182, 0.336518, 0.33899, 0.349326, 0.330657, 0.348895, 0.331176, 0.330684, 0.339509, 0.331115, 0.438673, 0.341879, 0.442481, 0.354688, 0.434148, 0.354256, 0.434667, 0.336045, 0.443, 0.336477, 0.300685, 0.334731, 0.304493, 0.347539, 0.29616, 0.347108, 0.296679, 0.328897, 0.305012, 0.329328, 0.340246, 0.158762, 0.33592, 0.164165, 0.344253, 0.164596, 0.345091, 0.135149, 0.336759, 0.134717, 0.236755, 0.153401, 0.232429, 0.158804, 0.240762, 0.159235, 0.2416, 0.129788, 0.233268, 0.129356, 0.202258, 0.151614, 0.197932, 0.157017, 0.206265, 0.157448, 0.207104, 0.128, 0.198771, 0.127569, 0.305749, 0.156975, 0.301423, 0.162378, 0.309756, 0.162809, 0.310594, 0.133362, 0.302262, 0.13293, 0.271252, 0.155188, 0.266926, 0.160591, 0.275258, 0.161022, 0.276097, 0.131575, 0.267765, 0.131143, 0.521644, 0.0769334, 0.52565, 0.0827676, 0.52597, 0.071531, 0.504133, 0.0703998, 0.503813, 0.0816363, 0.374743, 0.160549, 0.370417, 0.165952, 0.37875, 0.166384, 0.379588, 0.136936, 0.371256, 0.136504, 0.443737, 0.164124, 0.439411, 0.169526, 0.447743, 0.169958, 0.448582, 0.14051, 0.44025, 0.140079, 0.40924, 0.162336, 0.404914, 0.167739, 0.413247, 0.168171, 0.414085, 0.138723, 0.405753, 0.138291, 0.520319, 0.123453, 0.524325, 0.129287, 0.524645, 0.118051, 0.502808, 0.11692, 0.502488, 0.128156, 0.478234, 0.165911, 0.473908, 0.171313, 0.48224, 0.171745, 0.483079, 0.142297, 0.474747, 0.141866, 0.519049, 0.168025, 0.523055, 0.173859, 0.523375, 0.162623, 0.501538, 0.161492, 0.501218, 0.172728, 0.652135, 0.130282, 0.648129, 0.124448, 0.647808, 0.135684, 0.669646, 0.136816, 0.669966, 0.125579, 0.65346, 0.0837623, 0.649454, 0.0779281, 0.649134, 0.0891647, 0.670971, 0.090296, 0.671291, 0.0790594, 0.812651, 0.20306, 0.820373, 0.196506, 0.821608, 0.205405, 0.809548, 0.208448, 0.808313, 0.199549, 0.803585, 0.171135, 0.807843, 0.160252, 0.812212, 0.167126, 0.802896, 0.177893, 0.798527, 0.171019, 0.779502, 0.15547, 0.776806, 0.143715, 0.783499, 0.144409, 0.782558, 0.160906, 0.775864, 0.160212, 0.753688, 0.166524, 0.754152, 0.154235, 0.760261, 0.15799, 0.755173, 0.173046, 0.749064, 0.169291, 0.745116, 0.13255, 0.749374, 0.121667, 0.753743, 0.128541, 0.744427, 0.139309, 0.740058, 0.132435, 0.721033, 0.116885, 0.718337, 0.10513, 0.725031, 0.105825, 0.724089, 0.122321, 0.717395, 0.121627, 0.693146, 0.128211, 0.687235, 0.118839, 0.69359, 0.115921, 0.697544, 0.131584, 0.691189, 0.134502, 0.808343, 0.2255, 0.816065, 0.218946, 0.8173, 0.227845, 0.80524, 0.230888, 0.804005, 0.22199, 0.808715, 0.341225, 0.816041, 0.348558, 0.817779, 0.339813, 0.805928, 0.335531, 0.80419, 0.344276, 0.79786, 0.372118, 0.801485, 0.383409, 0.806233, 0.377007, 0.797557, 0.365308, 0.792809, 0.371709, 0.772956, 0.385245, 0.769599, 0.396686, 0.776313, 0.396686, 0.776313, 0.380141, 0.769599, 0.380141, 0.747847, 0.371553, 0.74761, 0.383853, 0.753915, 0.380742, 0.749699, 0.365204, 0.743394, 0.368315, 0.737368, 0.40454, 0.740994, 0.415831, 0.745741, 0.409429, 0.737065, 0.39773, 0.732318, 0.404131, 0.712464, 0.417667, 0.709107, 0.429108, 0.715821, 0.429108, 0.715821, 0.412563, 0.709107, 0.412563, 0.685304, 0.403489, 0.678877, 0.412222, 0.685047, 0.415788, 0.689881, 0.400581, 0.68371, 0.397014, 0.805696, 0.318405, 0.813023, 0.325738, 0.81476, 0.316994, 0.802909, 0.312711, 0.801171, 0.321456, 0.618528, 0.556268, 0.628539, 0.56746, 0.629942, 0.563347, 0.627137, 0.571572, 0.615723, 0.564493, 0.650929, 0.692836, 0.659228, 0.679336, 0.656178, 0.677444, 0.662278, 0.681227, 0.657028, 0.696619, 0.613754, 0.633601, 0.626701, 0.631969, 0.625537, 0.627723, 0.627866, 0.636214, 0.616083, 0.642092, 0.662454, 0.506137, 0.663665, 0.523597, 0.666813, 0.522026, 0.660516, 0.525167, 0.656158, 0.509278, 0.756976, 0.57181, 0.745193, 0.577688, 0.744029, 0.573442, 0.742864, 0.569197, 0.754647, 0.563319, 0.719801, 0.512575, 0.711502, 0.526075, 0.714552, 0.527967, 0.708452, 0.524184, 0.713702, 0.508792, 0.752202, 0.649144, 0.740788, 0.642064, 0.742191, 0.637952, 0.743594, 0.633839, 0.755007, 0.640919, 0.708276, 0.699274, 0.707065, 0.681814, 0.703917, 0.683385, 0.710214, 0.680244, 0.714572, 0.696133]; + indices = new [2, 3, 5, 3, 2, 4, 632, 6, 563, 563, 531, 632, 3, 7, 8, 7, 3, 4, 7, 9, 8, 9, 7, 10, 10, 11, 9, 11, 10, 12, 12, 13, 11, 13, 12, 14, 13, 15, 16, 15, 13, 14, 16, 17, 18, 17, 16, 15, 18, 19, 20, 19, 18, 17, 20, 21, 22, 21, 20, 19, 22, 23, 24, 23, 22, 21, 24, 25, 26, 25, 24, 23, 26, 27, 28, 27, 26, 25, 27, 29, 28, 29, 27, 30, 30, 31, 29, 31, 30, 32, 32, 33, 31, 33, 32, 34, 33, 2, 5, 2, 33, 34, 4, 10, 7, 4, 12, 10, 4, 14, 12, 4, 15, 14, 4, 17, 15, 4, 19, 17, 4, 21, 19, 32, 2, 34, 30, 2, 32, 27, 2, 30, 25, 2, 27, 23, 2, 25, 21, 2, 23, 4, 2, 21, 568, 532, 620, 566, 534, 533, 534, 566, 57, 534, 57, 535, 36, 37, 35, 37, 36, 38, 40, 41, 39, 41, 40, 42, 44, 45, 43, 45, 44, 46, 48, 49, 47, 48, 50, 49, 50, 51, 52, 48, 51, 50, 54, 55, 53, 55, 54, 56, 59, 60, 62, 60, 59, 61, 63, 66, 67, 63, 64, 66, 63, 65, 64, 69, 68, 70, 69, 71, 68, 69, 72, 71, 73, 631, 1661, 631, 74, 621, 621, 536, 631, 1694, 631, 73, 631, 1694, 1662, 537, 1661, 538, 537, 73, 1661, 73, 537, 1694, 88, 1748, 87, 1748, 88, 567, 75, 76, 77, 76, 75, 78, 79, 82, 81, 82, 79, 80, 83, 84, 85, 84, 83, 86, 89, 90, 92, 90, 89, 91, 93, 94, 96, 94, 93, 95, 97, 98, 100, 98, 97, 99, 101, 102, 104, 102, 101, 103, 105, 106, 108, 106, 105, 107, 109, 110, 112, 110, 109, 111, 113, 114, 630, 114, 113, 115, 113, 116, 117, 116, 113, 630, 116, 118, 117, 118, 116, 119, 118, 114, 115, 114, 118, 119, 118, 113, 117, 113, 118, 115, 622, 539, 541, 541, 540, 622, 540, 603, 622, 540, 569, 603, 569, 126, 603, 569, 542, 126, 569, 611, 542, 633, 120, 603, 603, 623, 633, 608, 622, 623, 122, 121, 123, 121, 122, 570, 125, 124, 121, 121, 570, 125, 127, 128, 129, 128, 127, 1663, 127, 130, 1663, 130, 127, 131, 130, 132, 133, 132, 130, 131, 132, 128, 133, 128, 132, 129, 132, 127, 129, 127, 132, 131, 640, 544, 543, 544, 640, 900, 900, 545, 637, 900, 637, 624, 624, 637, 901, 624, 901, 572, 624, 572, 902, 546, 637, 135, 637, 546, 571, 637, 571, 640, 137, 136, 573, 136, 137, 138, 140, 136, 139, 136, 140, 573, 142, 141, 143, 142, 144, 141, 142, 145, 144, 148, 146, 150, 146, 148, 58, 150, 146, 147, 148, 151, 149, 151, 148, 150, 151, 150, 147, 152, 151, 153, 151, 152, 149, 153, 151, 147, 154, 153, 157, 153, 154, 152, 157, 153, 147, 154, 156, 155, 156, 154, 157, 156, 157, 147, 155, 146, 58, 146, 155, 156, 146, 156, 147, 161, 159, 160, 159, 161, 158, 160, 170, 161, 160, 162, 164, 162, 160, 159, 164, 170, 160, 164, 163, 165, 163, 164, 162, 165, 170, 164, 169, 163, 166, 163, 169, 165, 169, 170, 165, 168, 166, 167, 166, 168, 169, 168, 170, 169, 168, 158, 161, 158, 168, 167, 161, 170, 168, 171, 898, 172, 173, 174, 176, 174, 173, 175, 172, 173, 171, 173, 172, 175, 177, 176, 174, 176, 177, 178, 547, 623, 179, 548, 180, 574, 180, 548, 181, 179, 548, 547, 548, 179, 181, 182, 574, 180, 574, 182, 183, 184, 903, 634, 185, 604, 187, 604, 185, 186, 634, 185, 184, 185, 634, 186, 188, 187, 604, 187, 188, 189, 125, 570, 122, 190, 191, 193, 191, 190, 192, 122, 190, 125, 190, 122, 192, 194, 193, 191, 193, 194, 195, 196, 197, 612, 198, 199, 200, 199, 198, 201, 197, 198, 200, 198, 197, 196, 202, 201, 203, 201, 202, 199, 575, 204, 899, 205, 206, 207, 206, 205, 208, 204, 205, 207, 205, 204, 575, 209, 208, 210, 208, 209, 206, 211, 613, 134, 212, 550, 576, 550, 212, 213, 613, 212, 576, 212, 613, 211, 214, 213, 215, 213, 214, 550, 140, 137, 573, 216, 217, 218, 217, 216, 219, 137, 216, 218, 216, 137, 140, 220, 219, 221, 219, 220, 217, 225, 224, 226, 224, 225, 223, 227, 223, 225, 223, 227, 222, 338, 225, 228, 225, 338, 343, 224, 229, 226, 229, 224, 230, 230, 231, 229, 231, 230, 232, 230, 330, 232, 330, 230, 224, 228, 234, 235, 234, 228, 225, 242, 238, 241, 238, 242, 243, 260, 240, 243, 614, 244, 0x0100, 0xFF, 259, 236, 579, 258, 245, 246, 258, 0xFF, 246, 0x0100, 244, 246, 260, 0x0100, 246, 240, 260, 240, 246, 236, 236, 246, 0xFF, 245, 258, 246, 244, 245, 246, 247, 248, 0x0101, 335, 253, 0x0101, 253, 324, 328, 326, 248, 247, 326, 338, 248, 326, 343, 338, 253, 247, 0x0101, 326, 253, 325, 327, 325, 253, 253, 328, 327, 253, 326, 247, 253, 335, 324, 258, 259, 0xFF, 237, 579, 249, 259, 579, 237, 258, 579, 259, 343, 325, 320, 325, 343, 326, 320, 327, 250, 327, 320, 325, 345, 327, 328, 327, 345, 250, 324, 345, 328, 345, 324, 340, 340, 335, 341, 335, 340, 324, 340, 341, 251, 341, 248, 338, 341, 0x0101, 248, 341, 335, 0x0101, 320, 227, 343, 250, 252, 222, 252, 250, 345, 240, 238, 243, 238, 237, 239, 237, 236, 259, 238, 236, 237, 240, 236, 238, 340, 252, 345, 252, 340, 251, 320, 222, 227, 222, 320, 250, 261, 262, 263, 262, 261, 254, 254, 251, 262, 251, 254, 252, 262, 338, 228, 338, 262, 251, 264, 261, 263, 261, 264, 265, 266, 265, 264, 265, 266, 267, 339, 265, 267, 265, 339, 261, 269, 228, 235, 269, 262, 228, 269, 263, 262, 264, 268, 266, 263, 268, 264, 269, 268, 263, 272, 276, 275, 276, 272, 277, 298, 277, 274, 639, 294, 278, 293, 270, 297, 615, 279, 295, 280, 293, 295, 280, 278, 294, 280, 294, 298, 280, 298, 274, 274, 270, 280, 270, 293, 280, 279, 280, 295, 278, 280, 279, 281, 329, 282, 331, 329, 290, 290, 283, 337, 296, 332, 344, 296, 282, 332, 296, 281, 282, 290, 329, 281, 296, 319, 290, 336, 290, 319, 290, 336, 283, 290, 281, 296, 290, 337, 331, 297, 295, 293, 297, 615, 295, 615, 271, 284, 297, 271, 615, 344, 319, 296, 319, 344, 323, 336, 323, 285, 323, 336, 319, 321, 336, 285, 336, 321, 283, 337, 321, 342, 321, 337, 283, 331, 342, 334, 342, 331, 337, 342, 287, 334, 334, 282, 329, 282, 334, 332, 334, 329, 331, 323, 344, 286, 288, 285, 289, 285, 288, 321, 272, 274, 277, 272, 270, 274, 270, 271, 297, 272, 271, 270, 272, 273, 271, 288, 342, 321, 342, 288, 287, 289, 323, 286, 323, 289, 285, 299, 300, 301, 300, 299, 333, 333, 286, 300, 286, 333, 289, 344, 300, 286, 303, 299, 301, 299, 303, 304, 305, 304, 303, 304, 305, 306, 322, 304, 306, 304, 322, 299, 308, 301, 300, 303, 307, 305, 301, 307, 303, 308, 307, 301, 311, 310, 312, 310, 311, 291, 287, 291, 311, 291, 287, 288, 332, 311, 302, 311, 332, 287, 310, 313, 312, 313, 310, 314, 314, 315, 313, 315, 314, 316, 314, 292, 316, 292, 314, 310, 302, 318, 309, 317, 313, 315, 317, 312, 313, 318, 312, 317, 318, 311, 312, 302, 311, 318, 254, 222, 252, 222, 254, 223, 224, 254, 261, 254, 224, 223, 330, 261, 339, 261, 330, 224, 291, 289, 333, 289, 291, 288, 310, 333, 299, 333, 310, 291, 292, 299, 322, 299, 292, 310, 226, 234, 225, 226, 233, 234, 233, 229, 231, 226, 229, 233, 308, 302, 309, 302, 308, 300, 300, 332, 302, 332, 300, 344, 225, 343, 227, 580, 346, 186, 186, 634, 580, 347, 580, 634, 634, 903, 347, 625, 348, 581, 348, 625, 616, 346, 349, 604, 604, 186, 346, 547, 548, 582, 582, 549, 547, 574, 617, 583, 617, 574, 350, 582, 548, 574, 574, 583, 582, 584, 626, 351, 584, 352, 626, 584, 625, 352, 584, 616, 625, 584, 617, 616, 584, 583, 617, 583, 549, 582, 549, 353, 598, 549, 584, 353, 549, 583, 584, 354, 584, 351, 584, 354, 355, 635, 355, 356, 355, 635, 357, 356, 354, 358, 354, 356, 355, 357, 584, 355, 584, 357, 353, 547, 598, 623, 598, 547, 549, 356, 358, 359, 356, 585, 581, 585, 356, 359, 635, 580, 347, 581, 580, 635, 580, 349, 346, 581, 349, 580, 581, 586, 349, 581, 348, 586, 356, 581, 635, 352, 625, 581, 581, 585, 352, 604, 586, 360, 586, 604, 349, 626, 352, 585, 585, 359, 626, 587, 613, 576, 576, 361, 587, 362, 627, 134, 613, 587, 362, 636, 363, 553, 363, 636, 605, 361, 576, 550, 550, 554, 361, 628, 638, 364, 638, 628, 205, 551, 365, 367, 365, 551, 366, 638, 551, 367, 551, 638, 205, 618, 606, 552, 618, 371, 606, 618, 372, 371, 618, 552, 638, 606, 365, 552, 606, 553, 365, 606, 636, 553, 606, 370, 636, 606, 368, 370, 606, 369, 368, 373, 606, 374, 606, 373, 369, 629, 374, 375, 374, 629, 619, 619, 373, 374, 373, 619, 376, 375, 606, 371, 606, 375, 374, 628, 372, 618, 372, 575, 899, 587, 629, 362, 587, 605, 629, 605, 378, 363, 605, 554, 378, 587, 554, 605, 587, 361, 554, 619, 629, 605, 619, 377, 588, 377, 619, 605, 619, 588, 376, 370, 377, 605, 605, 636, 370, 550, 379, 378, 378, 554, 550, 368, 588, 377, 377, 370, 368, 384, 615, 380, 615, 384, 639, 384, 387, 381, 387, 384, 380, 381, 386, 383, 386, 381, 387, 381, 383, 382, 615, 387, 380, 387, 615, 385, 387, 385, 386, 381, 639, 384, 639, 381, 382, 392, 579, 614, 579, 392, 388, 392, 395, 388, 395, 392, 389, 389, 394, 395, 394, 389, 391, 389, 390, 391, 579, 395, 393, 395, 579, 388, 395, 394, 393, 389, 614, 390, 614, 389, 392, 402, 399, 401, 399, 402, 403, 402, 400, 396, 400, 402, 401, 398, 396, 400, 396, 398, 397, 403, 398, 399, 398, 403, 397, 555, 407, 398, 407, 555, 409, 555, 408, 404, 408, 555, 398, 406, 404, 408, 404, 406, 405, 409, 406, 407, 406, 409, 405, 590, 589, 599, 590, 607, 589, 590, 411, 607, 599, 412, 413, 412, 599, 589, 414, 607, 411, 607, 414, 415, 590, 414, 411, 414, 590, 416, 417, 418, 420, 418, 417, 419, 421, 420, 422, 420, 421, 417, 418, 607, 415, 418, 589, 607, 418, 412, 589, 418, 419, 412, 421, 599, 413, 590, 422, 416, 599, 422, 590, 421, 422, 599, 419, 413, 412, 419, 421, 413, 419, 417, 421, 415, 420, 418, 420, 416, 422, 415, 416, 420, 415, 414, 416, 557, 591, 556, 558, 591, 557, 558, 410, 591, 410, 593, 565, 593, 410, 558, 423, 557, 556, 557, 423, 424, 591, 423, 556, 423, 591, 425, 426, 427, 429, 427, 426, 428, 430, 429, 594, 429, 430, 426, 427, 557, 424, 427, 558, 557, 427, 593, 558, 593, 427, 428, 591, 594, 425, 410, 594, 591, 410, 430, 594, 430, 410, 565, 428, 565, 593, 428, 430, 565, 428, 426, 430, 424, 429, 427, 429, 425, 594, 424, 425, 429, 424, 423, 425, 610, 433, 592, 610, 431, 433, 610, 432, 431, 432, 434, 431, 434, 432, 435, 436, 433, 437, 433, 436, 592, 610, 436, 438, 436, 610, 592, 439, 440, 441, 440, 439, 442, 443, 442, 439, 442, 443, 444, 440, 434, 441, 440, 431, 434, 440, 433, 431, 440, 437, 433, 432, 443, 435, 432, 444, 443, 444, 610, 438, 432, 610, 444, 441, 443, 439, 441, 435, 443, 441, 434, 435, 438, 442, 444, 442, 437, 440, 438, 437, 442, 438, 436, 437, 600, 602, 446, 600, 595, 602, 600, 601, 595, 601, 447, 595, 447, 601, 448, 449, 602, 450, 602, 449, 446, 600, 449, 451, 449, 600, 446, 452, 453, 454, 453, 452, 455, 456, 455, 452, 455, 456, 457, 453, 447, 454, 453, 595, 447, 453, 602, 595, 453, 450, 602, 601, 456, 448, 601, 457, 456, 457, 600, 451, 601, 600, 457, 454, 456, 452, 454, 448, 456, 454, 447, 448, 451, 455, 457, 455, 450, 453, 451, 450, 455, 451, 449, 450, 445, 559, 560, 559, 561, 562, 445, 561, 559, 560, 597, 445, 597, 560, 564, 458, 561, 459, 561, 458, 562, 559, 458, 460, 458, 559, 562, 461, 462, 463, 462, 461, 464, 465, 464, 461, 464, 465, 466, 462, 597, 463, 597, 462, 445, 462, 561, 445, 462, 459, 561, 560, 465, 564, 465, 560, 466, 466, 559, 460, 560, 559, 466, 463, 465, 461, 463, 564, 465, 463, 597, 564, 460, 464, 466, 464, 459, 462, 460, 459, 464, 460, 458, 459, 609, 467, 468, 609, 469, 467, 609, 596, 469, 468, 470, 471, 470, 468, 467, 472, 469, 596, 469, 472, 473, 609, 472, 596, 472, 609, 474, 475, 476, 478, 476, 475, 477, 479, 478, 480, 478, 479, 475, 476, 469, 473, 476, 467, 469, 476, 470, 467, 476, 477, 470, 479, 468, 471, 609, 480, 474, 468, 480, 609, 479, 480, 468, 477, 471, 470, 477, 479, 471, 477, 475, 479, 473, 478, 476, 478, 474, 480, 473, 474, 478, 473, 472, 474, 481, 482, 483, 481, 484, 482, 481, 578, 484, 487, 488, 489, 481, 485, 486, 483, 485, 481, 488, 485, 483, 487, 485, 488, 490, 491, 0, 493, 482, 484, 492, 482, 493, 491, 482, 492, 490, 482, 491, 494, 487, 495, 487, 494, 485, 492, 495, 491, 495, 492, 494, 578, 486, 496, 486, 578, 481, 493, 578, 496, 578, 493, 484, 493, 494, 492, 494, 486, 485, 493, 486, 494, 493, 496, 486, 491, 489, 0, 491, 487, 489, 491, 495, 487, 497, 500, 577, 497, 498, 500, 497, 499, 498, 504, 503, 505, 504, 501, 503, 501, 497, 502, 501, 499, 497, 504, 499, 501, 507, 506, 1, 507, 498, 506, 498, 509, 500, 498, 508, 509, 507, 508, 498, 510, 503, 501, 503, 510, 511, 508, 511, 510, 511, 508, 507, 577, 502, 497, 502, 577, 0x0200, 509, 577, 500, 577, 509, 0x0200, 502, 510, 501, 510, 509, 508, 502, 509, 510, 502, 0x0200, 509, 507, 503, 511, 507, 505, 503, 507, 1, 505, 513, 0x0202, 516, 0x0202, 513, 515, 517, 639, 518, 639, 517, 277, 0x0202, 518, 516, 518, 0x0202, 517, 519, 513, 520, 513, 519, 515, 276, 515, 519, 276, 0x0202, 515, 0x0202, 277, 517, 276, 277, 0x0202, 513, 521, 520, 639, 516, 518, 521, 516, 639, 513, 516, 521, 522, 523, 524, 523, 522, 525, 526, 614, 243, 614, 526, 527, 523, 527, 526, 527, 523, 525, 528, 522, 524, 522, 528, 529, 524, 242, 528, 243, 523, 526, 242, 523, 243, 524, 523, 242, 530, 522, 529, 530, 525, 522, 525, 614, 527, 530, 614, 525, 641, 643, 642, 643, 641, 644, 645, 647, 646, 647, 645, 648, 649, 651, 650, 651, 649, 652, 653, 655, 654, 655, 653, 656, 657, 659, 658, 659, 657, 660, 661, 663, 837, 663, 661, 662, 664, 666, 842, 666, 664, 665, 668, 667, 669, 667, 668, 826, 671, 670, 672, 670, 671, 848, 674, 673, 675, 673, 674, 849, 678, 676, 679, 676, 678, 677, 681, 683, 680, 683, 681, 682, 686, 684, 687, 684, 686, 685, 689, 688, 690, 688, 689, 843, 692, 691, 693, 691, 692, 850, 694, 696, 851, 696, 694, 695, 699, 697, 700, 697, 699, 698, 701, 703, 833, 703, 701, 702, 705, 707, 704, 707, 705, 706, 710, 708, 711, 708, 710, 709, 714, 712, 715, 712, 714, 713, 718, 716, 719, 716, 718, 717, 721, 720, 722, 720, 721, 827, 724, 828, 725, 828, 724, 723, 727, 726, 728, 726, 727, 852, 730, 729, 731, 729, 730, 853, 734, 732, 735, 732, 734, 733, 738, 736, 739, 736, 738, 737, 741, 743, 740, 743, 741, 742, 744, 746, 834, 746, 744, 745, 747, 749, 829, 749, 747, 748, 750, 752, 861, 752, 750, 751, 753, 755, 862, 755, 753, 754, 756, 758, 863, 758, 756, 757, 759, 761, 844, 761, 759, 760, 762, 764, 830, 764, 762, 763, 767, 765, 0x0300, 765, 767, 766, 770, 845, 0x0303, 845, 770, 769, 773, 838, 774, 838, 773, 772, 776, 846, 777, 846, 776, 775, 779, 854, 780, 854, 779, 778, 782, 839, 783, 839, 782, 781, 784, 786, 855, 786, 784, 785, 788, 787, 789, 787, 788, 831, 790, 835, 791, 835, 790, 856, 793, 792, 794, 792, 793, 857, 796, 795, 797, 795, 796, 858, 798, 800, 859, 800, 798, 799, 801, 803, 847, 803, 801, 802, 804, 806, 860, 806, 804, 805, 807, 809, 836, 809, 807, 808, 810, 812, 840, 812, 810, 811, 813, 815, 832, 815, 813, 814, 816, 818, 841, 818, 816, 817, 820, 822, 819, 822, 820, 821, 823, 825, 864, 825, 823, 824, 865, 869, 866, 869, 865, 868, 866, 867, 865, 866, 871, 870, 871, 866, 869, 870, 867, 866, 872, 875, 873, 875, 872, 874, 873, 867, 872, 873, 877, 876, 877, 873, 875, 876, 867, 873, 878, 868, 865, 868, 878, 879, 865, 867, 878, 876, 879, 878, 879, 876, 877, 878, 867, 876, 870, 881, 880, 881, 870, 871, 880, 867, 870, 880, 874, 872, 874, 880, 881, 872, 867, 880, 622, 883, 882, 887, 904, 622, 904, 887, 126, 887, 894, 126, 633, 882, 883, 885, 884, 903, 882, 884, 885, 633, 884, 882, 887, 622, 882, 887, 885, 540, 887, 540, 886, 886, 611, 887, 540, 885, 903, 887, 882, 885, 888, 611, 886, 894, 898, 126, 894, 887, 611, 640, 889, 899, 891, 892, 901, 892, 891, 640, 891, 901, 896, 889, 546, 899, 889, 890, 546, 890, 895, 134, 889, 895, 890, 891, 889, 640, 891, 900, 895, 891, 897, 900, 897, 891, 902, 900, 134, 895, 891, 895, 889, 893, 897, 902, 896, 901, 612, 891, 896, 902, 905, 907, 908, 905, 906, 907, 905, 908, 909, 909, 906, 905, 910, 912, 913, 910, 911, 912, 910, 913, 914, 914, 911, 910, 915, 917, 918, 915, 916, 917, 915, 918, 919, 919, 916, 915, 920, 922, 923, 920, 921, 922, 920, 923, 924, 924, 921, 920, 925, 927, 928, 925, 926, 927, 925, 928, 929, 929, 926, 925, 930, 932, 933, 930, 931, 932, 930, 933, 934, 934, 931, 930, 935, 937, 938, 935, 936, 937, 935, 938, 939, 939, 936, 935, 940, 942, 943, 940, 941, 942, 940, 943, 944, 944, 941, 940, 945, 948, 946, 945, 946, 949, 947, 949, 946, 947, 946, 948, 951, 950, 952, 951, 953, 954, 950, 951, 954, 953, 951, 952, 957, 955, 958, 959, 960, 956, 960, 958, 955, 958, 960, 959, 955, 956, 960, 956, 955, 957, 963, 961, 964, 965, 966, 962, 966, 964, 961, 964, 966, 965, 961, 962, 966, 962, 961, 963, 969, 967, 970, 971, 972, 968, 972, 970, 967, 970, 972, 971, 967, 968, 972, 968, 967, 969, 975, 973, 976, 977, 978, 974, 978, 976, 973, 976, 978, 977, 973, 974, 978, 974, 973, 975, 981, 979, 982, 983, 984, 980, 984, 982, 979, 982, 984, 983, 979, 980, 984, 980, 979, 981, 1286, 985, 1289, 1656, 1289, 985, 1286, 1582, 985, 985, 1582, 1656, 1440, 1662, 621, 1264, 995, 537, 1264, 1584, 995, 994, 1584, 1264, 1662, 1584, 994, 1584, 1588, 1589, 1588, 1633, 1442, 1633, 1594, 1638, 1588, 1594, 1633, 1584, 1594, 1588, 1662, 1594, 1584, 1440, 1594, 1662, 1641, 986, 987, 986, 1003, 1441, 1003, 1283, 1284, 1283, 1593, 1653, 1003, 1593, 1283, 1593, 1637, 1592, 1597, 1316, 1632, 1637, 1316, 1597, 1593, 1316, 1637, 1003, 1316, 1593, 986, 1316, 1003, 1641, 1316, 986, 1641, 998, 1316, 1442, 1619, 1585, 1442, 989, 1619, 1442, 1648, 989, 1442, 988, 1648, 1330, 1002, 999, 1002, 1330, 1001, 987, 1441, 1651, 1441, 987, 986, 1315, 1584, 1316, 1584, 1315, 1658, 1004, 1046, 1044, 1046, 1004, 1032, 1005, 1006, 1598, 1006, 1005, 1007, 1599, 1007, 1005, 1007, 1599, 1008, 1009, 1010, 1012, 1010, 1009, 1011, 1013, 1009, 1012, 1009, 1013, 1014, 1015, 1016, 1018, 1016, 1015, 1017, 1016, 1019, 1020, 1019, 1016, 1017, 1020, 1021, 1022, 1021, 1020, 1019, 1023, 1598, 1006, 1598, 1023, 0x0400, 0x0400, 1014, 1013, 1014, 0x0400, 1025, 1026, 1599, 1022, 1599, 1026, 1008, 0x0404, 1004, 1029, 1004, 0x0404, 1027, 1033, 1036, 1037, 1033, 1034, 1036, 1033, 1035, 1034, 1038, 1040, 1039, 1041, 1043, 1042, 1044, 1029, 1004, 1029, 1044, 1045, 1047, 1049, 1048, 1001, 1050, 1002, 1001, 1618, 1050, 1001, 630, 1618, 1663, 1338, 1642, 1053, 1601, 1030, 1601, 1053, 1262, 1054, 1056, 1055, 1057, 1058, 1060, 1058, 1057, 1059, 1061, 1058, 1062, 1061, 1060, 1058, 1061, 1063, 1060, 1061, 1064, 1063, 1065, 1062, 1058, 1062, 1065, 1066, 1067, 1060, 1063, 1060, 1067, 1057, 1068, 1069, 1070, 1068, 1063, 1069, 1068, 1067, 1063, 1071, 1059, 1072, 1071, 1058, 1059, 1071, 1065, 1058, 1069, 1064, 1074, 1064, 1069, 1063, 1075, 1076, 1078, 1076, 1075, 1077, 1081, 1080, 1079, 1080, 1081, 1082, 1086, 1085, 1087, 1086, 1083, 1085, 1086, 1084, 1083, 1078, 1088, 1089, 1088, 1078, 1076, 1090, 1088, 1091, 1088, 1090, 1089, 1092, 1081, 1093, 1081, 1092, 1082, 1093, 1091, 1092, 1091, 1093, 1090, 1077, 1094, 1095, 1094, 1077, 1075, 1086, 1095, 1094, 1095, 1086, 1087, 1096, 1084, 1097, 1084, 1096, 1083, 1098, 1097, 1099, 1097, 1098, 1096, 1101, 1103, 1100, 1103, 1101, 1102, 1100, 1104, 1101, 1104, 1100, 1105, 1106, 1105, 1107, 1105, 1106, 1104, 1108, 1102, 1109, 1102, 1108, 1103, 1110, 1111, 1112, 1111, 1110, 1085, 1114, 1093, 1081, 1093, 1114, 1116, 1117, 1118, 1054, 1119, 1122, 1120, 1119, 1121, 1122, 1119, 1055, 1121, 1123, 1124, 1125, 1124, 1123, 1038, 1126, 1128, 1129, 1128, 1126, 1127, 1130, 1126, 1131, 1126, 1130, 1127, 1134, 1135, 1137, 1135, 1134, 1136, 1135, 1140, 1137, 1135, 1138, 1140, 1135, 1139, 1138, 1141, 1137, 1140, 1137, 1141, 1134, 1086, 1150, 1084, 1150, 1086, 1142, 1109, 1143, 1108, 1143, 1109, 1144, 1145, 1143, 1144, 1147, 1146, 1148, 1143, 1146, 1147, 1145, 1146, 1143, 1084, 1154, 1097, 1154, 1084, 1149, 1143, 1157, 1108, 1157, 1143, 1156, 1246, 1245, 1243, 1245, 1246, 1244, 1160, 1090, 1115, 1090, 1160, 1089, 996, 1174, 1173, 996, 1176, 1174, 1176, 1175, 1177, 1176, 1600, 1175, 1176, 1031, 1600, 1176, 990, 1031, 996, 990, 1176, 1146, 1164, 1163, 1164, 1146, 1145, 1025, 1051, 1014, 1025, 1052, 1051, 1025, 1023, 1052, 1012, 0x0400, 1013, 1012, 1166, 0x0400, 1012, 1010, 1166, 1169, 1168, 1170, 1168, 1274, 1171, 1274, 1278, 1276, 1168, 1278, 1274, 1169, 1278, 1168, 1007, 1642, 1006, 1007, 1618, 1642, 1007, 1008, 1618, 1017, 1002, 1019, 1017, 1172, 1002, 1017, 1015, 1172, 1170, 1642, 1618, 1642, 1170, 1168, 1603, 1173, 1174, 1603, 1647, 1173, 1603, 1646, 1647, 1180, 1164, 1181, 1180, 1163, 1164, 1178, 1153, 1179, 1163, 1153, 1178, 1153, 1118, 1117, 1163, 1118, 1153, 1180, 1118, 1163, 1156, 1184, 1157, 1156, 1182, 1184, 1156, 1183, 1182, 1188, 1134, 1141, 1187, 1185, 1186, 1136, 1185, 1187, 1134, 1185, 1136, 1188, 1185, 1134, 1191, 1079, 1192, 1079, 1191, 1113, 1195, 1193, 1194, 1195, 1196, 1193, 1195, 1150, 1196, 1111, 1083, 1197, 1083, 1111, 1085, 1197, 1083, 1096, 1197, 1112, 1111, 1112, 1080, 1082, 1080, 1096, 1098, 1112, 1096, 1080, 1197, 1096, 1112, 1192, 1198, 1191, 1199, 1201, 1200, 1125, 1148, 1123, 1148, 1125, 1147, 1242, 1042, 1126, 1242, 1203, 1042, 1242, 1036, 1203, 1242, 1037, 1036, 1036, 1202, 1203, 1202, 1036, 1034, 1038, 1033, 1124, 1035, 1204, 1205, 1035, 1039, 1204, 1033, 1039, 1035, 1038, 1039, 1033, 1207, 1055, 1056, 1207, 1121, 1055, 1207, 1206, 1121, 1054, 1207, 1056, 1054, 1180, 1207, 1054, 1118, 1180, 1240, 1190, 1250, 1240, 1189, 1190, 1189, 1248, 1249, 1189, 1247, 1248, 1240, 1247, 1189, 1199, 1191, 1198, 1191, 1199, 1200, 1201, 1198, 1192, 1198, 1201, 1199, 1147, 1156, 1143, 1129, 1037, 1242, 1037, 1124, 1033, 1129, 1124, 1037, 1129, 1125, 1124, 1156, 1125, 1129, 1147, 1125, 1156, 1144, 1164, 1145, 1164, 1104, 1181, 1104, 1102, 1101, 1104, 1109, 1102, 1164, 1109, 1104, 1144, 1109, 1164, 1175, 1211, 1188, 1209, 1262, 1208, 1211, 1262, 1209, 1175, 1262, 1211, 1206, 1211, 1210, 1206, 1188, 1211, 1206, 1185, 1188, 1104, 1186, 1181, 1104, 1187, 1186, 1104, 1106, 1187, 1034, 1205, 1202, 1205, 1034, 1035, 1263, 1262, 1053, 1262, 1263, 1208, 1053, 1027, 1263, 1053, 1626, 1027, 1053, 1030, 1626, 1066, 1061, 1062, 1061, 1066, 1212, 1212, 1064, 1061, 1064, 1212, 1074, 1159, 1065, 1071, 1151, 1263, 1027, 1209, 1152, 1211, 1208, 1152, 1209, 1263, 1152, 1208, 1151, 1152, 1263, 1213, 1155, 1214, 1099, 1200, 1201, 1155, 1200, 1099, 1213, 1200, 1155, 1155, 1215, 1214, 1215, 1155, 1154, 1216, 1119, 1120, 1119, 1216, 1158, 1217, 1205, 1204, 1217, 1202, 1205, 1217, 1203, 1202, 1217, 1218, 1203, 1219, 1220, 1142, 1220, 1219, 1221, 1219, 1222, 1221, 1222, 1219, 1223, 1224, 1149, 1233, 1224, 1154, 1149, 1224, 1215, 1154, 1121, 1225, 1122, 1121, 1210, 1225, 1121, 1206, 1210, 1226, 1227, 1236, 1227, 1226, 1228, 1229, 1222, 1223, 1229, 1234, 1222, 1229, 1235, 1234, 1159, 1211, 1152, 1211, 1159, 1210, 1140, 1188, 1141, 1140, 1175, 1188, 1175, 1231, 1177, 1140, 1231, 1175, 1230, 1068, 1232, 1067, 1059, 1057, 1067, 1072, 1059, 1068, 1072, 1067, 1230, 1072, 1068, 1250, 1237, 1255, 1237, 1250, 1190, 1161, 1238, 1162, 1238, 1161, 1239, 1240, 1161, 1160, 1240, 1239, 1161, 1240, 1241, 1239, 1242, 1126, 1129, 1110, 1047, 1048, 1047, 1110, 1112, 1203, 1041, 1042, 1041, 1203, 1218, 1218, 1043, 1041, 1218, 1229, 1043, 1218, 1217, 1229, 1251, 1086, 1094, 1251, 1142, 1086, 1251, 1219, 1142, 1251, 1043, 1219, 1251, 1042, 1043, 1251, 1126, 1042, 1251, 1131, 1126, 1227, 1254, 1236, 1254, 1227, 1253, 1091, 1082, 1092, 1085, 1095, 1087, 1110, 1095, 1085, 1048, 1095, 1110, 1048, 1077, 1095, 1049, 1077, 1048, 1049, 1076, 1077, 1082, 1076, 1049, 1082, 1088, 1076, 1091, 1088, 1082, 1255, 1240, 1250, 1240, 1255, 1241, 1114, 1189, 1249, 1189, 1114, 1113, 1116, 1247, 1115, 1247, 1116, 1248, 1114, 1248, 1116, 1248, 1114, 1249, 1115, 1240, 1160, 1240, 1115, 1247, 1214, 1224, 1256, 1224, 1214, 1215, 1257, 1132, 1246, 1132, 1257, 1258, 1258, 1133, 1132, 1133, 1258, 1259, 1580, 1579, 1581, 1579, 1270, 1271, 1270, 1326, 1304, 1579, 1326, 1270, 1579, 1586, 1326, 1580, 1586, 1579, 1580, 1635, 1586, 1360, 1357, 1268, 1357, 1425, 1607, 1425, 1634, 1639, 1357, 1634, 1425, 1357, 1310, 1634, 1360, 1310, 1357, 1360, 1303, 1310, 1233, 1158, 1216, 1153, 1149, 1179, 1158, 1149, 1153, 1233, 1149, 1158, 1194, 1040, 1195, 1194, 1039, 1040, 1217, 1235, 1229, 1204, 1235, 1217, 1039, 1235, 1204, 1194, 1235, 1039, 1191, 1237, 1190, 1191, 1213, 1237, 1191, 1200, 1213, 1073, 0x0404, 1070, 1073, 1027, 0x0404, 1073, 1151, 1027, 1185, 1207, 1180, 1207, 1185, 1206, 1080, 1192, 1079, 1192, 1099, 1201, 1080, 1099, 1192, 1080, 1098, 1099, 1260, 1142, 1220, 1260, 1150, 1142, 1260, 1196, 1150, 1183, 1128, 1228, 1128, 1183, 1129, 1107, 1135, 1136, 1139, 1259, 1261, 1135, 1259, 1139, 1135, 1133, 1259, 1107, 1133, 1135, 1112, 1049, 1047, 1049, 1112, 1082, 1093, 1115, 1090, 1115, 1093, 1116, 1114, 1079, 1113, 1079, 1114, 1081, 1089, 1161, 1078, 1161, 1089, 1160, 1078, 1162, 1075, 1162, 1078, 1161, 1097, 1155, 1099, 1155, 1097, 1154, 1032, 990, 1046, 990, 1032, 1031, 1230, 1071, 1072, 1071, 1230, 1225, 1132, 1100, 1246, 1132, 1105, 1100, 1105, 1133, 1107, 1132, 1133, 1105, 1591, 1590, 1000, 1590, 1591, 1434, 1069, 1073, 1070, 1212, 1069, 1074, 1212, 1073, 1069, 1212, 1159, 1073, 1212, 1065, 1159, 1212, 1066, 1065, 1236, 1244, 1157, 1148, 1038, 1123, 1148, 1040, 1038, 1148, 1195, 1040, 1150, 1149, 1084, 1149, 1150, 1179, 1163, 1148, 1146, 1195, 1179, 1150, 1195, 1178, 1179, 1195, 1163, 1178, 1195, 1148, 1163, 1251, 1075, 1162, 1075, 1251, 1094, 1131, 1251, 1252, 1236, 1254, 1244, 1113, 1190, 1189, 1190, 1113, 1191, 992, 988, 997, 988, 992, 993, 1442, 997, 988, 997, 1442, 1640, 1589, 1316, 1584, 1316, 1589, 1632, 1637, 1434, 1591, 1434, 1637, 1597, 1649, 1633, 1620, 1649, 1442, 1633, 1649, 1640, 1442, 1590, 1330, 999, 1590, 1350, 1330, 1590, 1352, 1350, 1590, 1353, 1352, 1590, 1434, 1353, 1026, 1022, 1021, 0x0400, 1023, 1025, 1167, 0x0400, 1166, 1167, 1598, 0x0400, 1598, 1599, 1005, 1167, 1599, 1598, 1167, 1022, 1599, 1016, 1167, 1018, 1016, 1022, 1167, 1016, 1020, 1022, 1051, 1009, 1014, 1051, 1011, 1009, 1051, 1165, 1011, 1021, 1050, 1026, 1021, 1002, 1050, 1021, 1019, 1002, 1236, 1184, 1226, 1184, 1236, 1157, 1219, 1229, 1223, 1229, 1219, 1043, 1227, 1130, 1253, 1227, 1127, 1130, 1227, 1128, 1127, 1244, 1108, 1157, 1108, 1244, 1103, 1103, 1246, 1100, 1246, 1103, 1244, 1107, 1187, 1106, 1187, 1107, 1136, 1225, 1159, 1071, 1159, 1225, 1210, 1344, 1265, 1267, 1265, 1344, 1266, 1579, 1643, 1650, 1643, 1579, 1271, 1645, 1268, 1357, 1645, 1299, 1268, 1645, 1660, 1299, 1265, 1343, 1269, 1343, 1265, 1266, 1643, 1270, 1272, 1270, 1643, 1271, 1273, 1274, 1276, 1274, 1273, 1275, 1277, 1276, 1278, 1276, 1277, 1273, 1279, 1281, 0x0500, 1602, 1282, 1281, 1602, 1283, 1282, 1602, 1284, 1283, 1281, 0x0505, 1602, 0x0505, 1281, 1279, 1284, 0x0505, 1696, 0x0505, 1284, 1602, 1651, 0x0500, 1641, 1651, 1279, 0x0500, 1279, 1696, 0x0505, 1651, 1696, 1279, 1368, 1286, 1287, 1286, 1368, 1582, 1286, 1288, 1287, 1288, 1286, 1289, 1605, 1289, 1656, 1289, 1605, 1288, 1290, 1344, 1267, 1344, 1290, 1291, 1292, 1290, 1277, 1290, 1292, 1331, 1292, 1278, 1296, 1278, 1292, 1277, 1295, 1274, 1275, 1274, 1295, 1297, 1268, 1358, 1360, 1268, 1298, 1358, 1268, 1299, 1298, 1294, 1300, 1356, 1349, 1293, 1302, 1301, 1293, 1349, 1300, 1293, 1301, 1294, 1293, 1300, 1343, 1293, 1269, 1293, 1343, 1302, 1360, 1358, 1361, 1355, 1361, 1336, 1360, 1347, 1303, 1361, 1347, 1360, 1355, 1347, 1361, 1351, 1270, 1304, 1351, 1272, 1270, 1272, 1332, 1587, 1272, 1305, 1332, 1351, 1305, 1272, 1290, 1354, 1291, 1290, 1306, 1354, 1348, 1331, 1329, 1306, 1331, 1348, 1290, 1331, 1306, 1327, 1321, 1309, 1321, 1308, 1320, 1308, 1310, 1307, 1321, 1310, 1308, 1327, 1310, 1321, 1327, 1311, 1310, 1641, 1315, 1316, 1315, 1641, 0x0500, 1317, 1337, 1319, 1337, 1317, 1318, 1307, 1355, 1308, 1355, 1307, 1347, 1345, 1336, 1335, 1345, 1355, 1336, 1345, 1308, 1355, 1345, 1320, 1308, 1346, 1345, 1339, 1346, 1320, 1345, 1346, 1321, 1320, 1321, 1300, 1309, 1356, 1346, 1333, 1300, 1346, 1356, 1321, 1346, 1300, 1350, 1329, 1330, 1329, 1324, 1348, 1350, 1324, 1329, 1350, 1313, 1324, 1322, 1350, 1352, 1350, 1322, 1313, 1326, 1351, 1304, 1351, 1326, 1323, 1309, 1301, 1327, 1301, 1309, 1300, 1311, 1301, 1349, 1301, 1311, 1327, 1328, 1329, 1331, 1329, 1328, 1330, 1353, 1587, 1332, 1587, 1353, 1434, 1294, 1333, 1340, 1333, 1294, 1356, 1335, 1334, 1341, 1335, 1361, 1334, 1335, 1336, 1361, 1338, 1337, 1359, 1338, 1339, 1337, 1338, 1346, 1339, 1346, 1340, 1333, 1338, 1340, 1346, 1319, 1341, 1342, 1345, 1337, 1339, 1335, 1337, 1345, 1341, 1337, 1335, 1319, 1337, 1341, 1302, 1311, 1349, 1312, 1291, 1354, 1291, 1266, 1344, 1312, 1266, 1291, 1311, 1266, 1312, 1302, 1266, 1311, 1302, 1343, 1266, 1303, 1307, 1310, 1307, 1303, 1347, 1325, 1348, 1324, 1348, 1325, 1306, 1322, 1305, 1314, 1322, 1332, 1305, 1332, 1352, 1353, 1322, 1352, 1332, 1354, 1325, 1312, 1325, 1354, 1306, 1351, 1314, 1305, 1314, 1351, 1323, 1326, 1314, 1323, 1314, 1313, 1322, 1326, 1313, 1314, 1313, 1325, 1324, 1313, 1312, 1325, 1326, 1312, 1313, 1311, 1288, 1310, 1326, 1287, 1312, 1288, 1634, 1310, 1634, 1288, 1605, 1288, 1312, 1287, 1312, 1288, 1311, 1601, 1031, 1030, 1601, 1600, 1031, 1601, 1175, 1600, 1601, 1262, 1175, 1180, 1186, 1185, 1186, 1180, 1181, 1228, 1128, 1227, 1129, 1183, 1156, 990, 997, 991, 990, 992, 997, 990, 996, 992, 0x0404, 1068, 1070, 1068, 0x0404, 1232, 1004, 1031, 1032, 1004, 1030, 1031, 1004, 1626, 1030, 1004, 1027, 1626, 1294, 1275, 1293, 1275, 1294, 1295, 1265, 1290, 1267, 1265, 1277, 1290, 1265, 1273, 1277, 1265, 1275, 1273, 1265, 1293, 1275, 1265, 1269, 1293, 1370, 1362, 1419, 1362, 1370, 1372, 1579, 1650, 1659, 1659, 1581, 1579, 1607, 1645, 1357, 1583, 1645, 1607, 1583, 1363, 1645, 1362, 1364, 1419, 1364, 1362, 1375, 1659, 1365, 1580, 1580, 1581, 1659, 1366, 1646, 1603, 1603, 1367, 1366, 1604, 1647, 1646, 1646, 1366, 1604, 1605, 1582, 1368, 1582, 1605, 1656, 1369, 1370, 1371, 1370, 1369, 1372, 1369, 1373, 1604, 1373, 1369, 1406, 1373, 1647, 1604, 1647, 1373, 1378, 1377, 1603, 1379, 1603, 1377, 1367, 1607, 1606, 1583, 1607, 1644, 1606, 1644, 1607, 1425, 1374, 1382, 1383, 1374, 1420, 1382, 1374, 1380, 1420, 1376, 1380, 1374, 1376, 1381, 1380, 1364, 1374, 1383, 1374, 1364, 1375, 1611, 1644, 1425, 1425, 1639, 1608, 1611, 1384, 1424, 1611, 1608, 1384, 1611, 1425, 1608, 1609, 1635, 1580, 1365, 1609, 1580, 1365, 1385, 1609, 1365, 1610, 1385, 1365, 1386, 1610, 1406, 1421, 1405, 1406, 1422, 1421, 1369, 1422, 1406, 1369, 1423, 1422, 1369, 1371, 1423, 1326, 1368, 1287, 1368, 1326, 1586, 995, 1584, 1658, 1658, 1661, 995, 1396, 1411, 1397, 1411, 1396, 1398, 1384, 1387, 1389, 1387, 1384, 1608, 1418, 1389, 1388, 1418, 1384, 1389, 1418, 1424, 1384, 1418, 1409, 1424, 1415, 1388, 1390, 1415, 1418, 1388, 1415, 1414, 1418, 1380, 1390, 1391, 1380, 1415, 1390, 1381, 1415, 1380, 1381, 1416, 1415, 1608, 1639, 1634, 1634, 1387, 1608, 1610, 1585, 1619, 1619, 1385, 1610, 1619, 1395, 1385, 1619, 1394, 1395, 1385, 1399, 1609, 1399, 1385, 1395, 989, 1648, 1405, 989, 1400, 1401, 989, 1421, 1400, 989, 1405, 1421, 1619, 989, 1401, 1401, 1394, 1619, 1421, 1393, 1400, 1393, 1421, 1422, 1422, 1402, 1393, 1402, 1422, 1423, 1609, 1399, 1586, 1586, 1635, 1609, 1420, 1391, 1403, 1391, 1420, 1380, 1420, 1392, 1382, 1392, 1420, 1403, 1404, 1405, 1648, 1405, 1404, 1406, 1585, 1610, 1386, 1386, 1442, 1585, 1376, 1416, 1381, 1416, 1376, 1407, 1409, 1611, 1424, 1409, 1408, 1611, 1409, 1410, 1408, 1407, 1415, 1416, 1412, 1415, 1407, 1412, 1414, 1415, 1412, 1411, 1414, 1412, 1413, 1411, 1411, 1418, 1414, 1411, 1409, 1418, 1411, 1410, 1409, 1398, 1410, 1411, 1398, 1417, 1410, 1419, 1371, 1370, 1419, 1423, 1371, 1419, 1402, 1423, 1419, 1392, 1402, 1419, 1382, 1392, 1419, 1383, 1382, 1419, 1364, 1383, 1650, 1429, 1432, 1650, 1432, 1659, 1426, 1427, 1650, 1650, 1643, 1426, 1427, 1429, 1650, 1627, 1643, 1272, 1643, 1627, 1426, 1627, 1427, 1426, 1427, 1627, 1428, 1428, 1429, 1427, 1429, 1428, 1430, 1431, 1429, 1430, 1429, 1431, 1432, 1365, 1432, 1431, 1432, 1365, 1659, 1627, 1587, 1433, 1587, 1627, 1272, 1587, 1434, 1597, 1597, 1433, 1587, 1597, 1632, 1435, 1435, 1433, 1597, 1632, 1589, 1657, 1657, 1435, 1632, 1588, 1442, 1386, 1386, 1436, 1588, 1588, 1436, 1657, 1657, 1589, 1588, 1612, 1613, 1000, 1000, 1590, 1612, 1628, 1652, 1637, 1637, 1591, 1628, 1591, 1000, 1613, 1613, 1628, 1591, 1652, 1636, 1592, 1592, 1637, 1652, 1438, 1437, 1653, 1653, 1593, 1438, 1593, 1592, 1636, 1636, 1438, 1593, 1400, 1394, 1401, 1394, 1399, 1395, 1399, 1402, 1586, 1394, 1402, 1399, 1400, 1402, 1394, 1400, 1393, 1402, 1389, 1390, 1388, 1390, 1403, 1391, 1403, 1634, 1392, 1390, 1634, 1403, 1389, 1634, 1390, 1389, 1387, 1634, 1586, 1402, 1368, 1392, 1368, 1402, 1368, 1392, 1605, 1634, 1605, 1392, 1362, 1374, 1375, 1362, 1367, 1374, 1362, 1366, 1367, 1367, 1376, 1374, 1376, 1367, 1377, 1362, 1604, 1366, 1362, 1369, 1604, 1362, 1372, 1369, 1052, 1359, 1051, 1052, 1338, 1359, 1052, 1642, 1338, 1649, 1615, 1614, 1614, 1640, 1649, 1633, 1630, 1629, 1629, 1620, 1633, 1615, 1649, 1620, 1620, 1629, 1615, 1638, 1616, 1630, 1630, 1633, 1638, 1440, 1439, 1617, 1617, 1594, 1440, 1616, 1638, 1594, 1594, 1617, 1616, 1444, 1621, 1443, 1621, 1444, 1622, 1446, 1448, 1450, 1448, 1446, 1449, 1455, 1459, 1460, 1459, 1455, 1458, 1464, 1624, 1466, 1464, 1462, 1624, 1464, 1461, 1462, 1468, 1472, 1473, 1472, 1468, 1471, 1475, 1474, 1476, 1474, 1475, 1479, 1481, 1480, 1482, 1480, 1481, 1483, 1655, 1576, 1486, 1576, 1655, 1595, 1623, 1488, 1596, 1465, 1623, 1489, 1623, 1465, 1488, 1660, 1596, 1488, 1660, 1631, 1596, 1660, 1645, 1631, 1595, 1487, 1576, 1487, 1645, 1363, 1595, 1645, 1487, 1595, 1631, 1645, 1490, 1492, 1569, 1492, 1490, 1493, 1500, 1499, 1501, 1499, 1500, 1502, 1570, 1596, 1631, 1596, 1570, 1622, 1631, 1621, 1570, 1621, 1631, 1595, 1506, 1505, 1571, 1505, 1506, 1507, 1508, 1509, 1510, 1508, 1538, 1509, 1508, 1654, 1538, 1511, 1568, 1513, 1568, 1506, 1571, 1506, 1572, 1514, 1568, 1572, 1506, 1568, 1512, 1572, 1511, 1512, 1568, 1515, 1482, 1516, 1482, 1515, 1481, 1517, 1469, 1518, 1469, 1517, 1466, 1519, 1569, 1520, 1519, 1491, 1569, 1519, 1521, 1491, 1470, 1522, 1523, 1522, 1470, 1468, 1516, 1480, 1524, 1480, 1516, 1482, 1464, 1568, 1461, 1464, 1525, 1568, 1464, 1526, 1525, 1527, 1456, 1457, 1456, 1527, 1528, 1498, 1499, 1502, 1531, 1499, 1529, 1499, 1531, 1501, 1457, 1533, 1527, 1533, 1457, 1455, 1569, 1534, 1520, 1534, 1569, 1492, 1493, 1528, 1532, 1528, 1493, 1456, 1622, 1570, 1621, 1454, 1480, 1483, 1506, 1541, 1507, 1506, 1539, 1541, 1538, 1540, 1509, 1538, 1514, 1540, 1539, 1514, 1538, 1506, 1514, 1539, 1444, 1513, 1543, 1444, 1511, 1513, 1511, 1443, 0x0606, 1444, 1443, 1511, 1500, 1572, 1512, 1500, 1545, 1572, 1500, 1544, 1545, 1535, 1463, 0x0600, 1463, 1535, 1467, 1546, 1504, 1547, 1504, 1546, 1478, 1464, 1517, 1526, 1517, 1464, 1466, 1504, 1548, 1547, 1548, 1504, 1503, 1474, 1549, 1550, 1549, 1474, 1479, 1518, 1470, 1523, 1470, 1518, 1469, 1551, 1448, 1449, 1448, 1551, 1552, 1553, 1478, 1546, 1478, 1553, 1477, 1496, 1459, 1458, 1493, 1534, 1492, 1493, 1556, 1534, 1493, 1532, 1556, 1530, 1491, 1521, 1491, 1530, 1494, 1554, 1474, 1550, 1474, 1554, 1476, 1452, 1472, 1471, 1557, 1445, 1559, 1445, 1557, 1447, 1460, 1555, 1560, 1555, 1460, 1459, 1455, 1560, 1533, 1560, 1455, 1460, 1468, 1561, 1522, 1561, 1468, 1473, 1473, 1558, 1561, 1558, 1473, 1472, 1445, 1562, 1559, 1562, 1445, 1450, 1503, 1578, 1548, 1503, 1512, 1578, 1503, 1500, 1512, 1485, 1563, 1564, 1563, 1485, 1484, 1450, 1552, 1562, 1552, 1450, 1448, 1484, 1515, 1563, 1515, 1484, 1481, 1453, 1449, 1446, 1479, 1553, 1549, 1553, 1479, 1477, 1534, 1519, 1520, 1519, 1534, 1556, 1528, 1565, 1532, 1565, 1528, 1566, 1575, 1574, 1573, 1574, 1575, 1541, 1507, 1573, 1505, 1573, 1507, 1575, 1545, 1537, 1540, 1537, 1545, 1544, 1509, 1544, 1510, 1544, 1509, 1537, 1541, 1567, 1574, 1541, 1577, 1567, 1541, 1539, 1577, 1572, 1540, 1514, 1540, 1572, 1545, 1509, 1540, 1537, 1507, 1541, 1575, 1574, 1461, 1573, 1574, 1463, 1461, 1574, 0x0600, 1463, 0x0600, 1574, 1577, 1531, 1654, 1510, 1455, 1456, 1458, 1456, 1455, 1457, 1490, 1491, 1494, 1491, 1490, 1569, 1483, 1484, 1485, 1484, 1483, 1481, 1446, 1445, 1447, 1445, 1446, 1450, 1503, 1502, 1500, 1503, 1625, 1502, 1503, 1504, 1625, 1462, 1463, 1467, 1463, 1462, 1461, 1622, 1623, 1596, 1623, 1622, 1444, 1655, 1621, 1595, 1621, 1655, 1443, 1475, 1477, 1479, 1477, 1475, 1478, 1468, 1469, 1471, 1469, 1468, 1470, 1495, 1493, 1490, 1493, 1496, 1456, 1496, 1493, 1495, 1456, 1496, 1458, 1459, 1554, 1555, 1554, 1459, 1476, 1476, 1497, 1475, 1459, 1497, 1476, 1497, 1459, 1496, 1472, 1557, 1558, 1557, 1472, 1447, 1472, 1453, 1447, 1453, 1472, 1452, 1447, 1453, 1446, 1497, 1478, 1475, 1478, 1498, 1504, 1498, 1478, 1497, 1551, 1485, 1564, 1485, 1551, 1449, 1485, 1453, 1454, 1453, 1485, 1449, 1485, 1454, 1483, 1524, 1467, 1535, 1467, 1524, 1480, 1467, 1454, 1451, 1454, 1467, 1480, 1529, 1494, 1530, 1494, 1529, 1499, 1494, 1498, 1495, 1498, 1494, 1499, 1494, 1495, 1490, 1467, 1451, 1462, 1624, 1451, 1466, 1451, 1624, 1462, 1469, 1452, 1471, 1625, 1498, 1502, 1498, 1625, 1504, 1469, 1451, 1452, 1451, 1469, 1466, 1568, 1573, 1461, 1568, 1505, 1573, 1568, 1571, 1505, 1501, 1544, 1500, 1501, 1510, 1544, 1501, 1531, 1510, 1151, 1159, 1152, 1159, 1151, 1073, 1431, 1386, 1365, 1386, 1431, 1436, 1430, 1436, 1431, 1436, 1430, 1657, 1428, 1657, 1430, 1657, 1428, 1435, 1428, 1433, 1435, 1433, 1428, 1627, 1498, 1496, 1495, 1496, 1498, 1497, 1453, 1451, 1454, 1451, 1453, 1452, 1054, 1153, 1117, 1153, 1119, 1158, 1054, 1119, 1153, 1054, 1055, 1119, 1752, 1665, 1668, 1665, 1752, 1664, 1668, 1669, 1666, 1669, 1668, 1665, 1684, 1670, 1671, 1670, 1684, 1694, 1671, 1696, 1685, 1696, 1671, 1670, 1671, 1683, 1684, 1686, 1683, 1671, 1686, 1671, 1685, 1672, 1670, 1694, 1673, 1670, 1672, 1673, 1696, 1670, 1681, 1699, 1687, 1699, 1681, 1679, 1679, 1696, 1680, 1696, 1679, 1681, 1690, 1695, 1692, 1664, 1689, 1665, 1689, 1664, 1682, 1683, 1682, 1684, 1682, 1683, 1689, 1675, 1686, 1685, 1686, 1675, 1677, 1689, 1686, 1677, 1686, 1689, 1683, 1669, 1667, 1666, 1667, 1669, 1678, 1678, 1698, 1667, 1698, 1678, 1676, 1700, 1664, 1752, 1664, 1700, 1688, 1684, 1692, 1694, 1692, 1684, 1682, 1691, 1694, 1692, 1691, 1692, 1693, 1689, 1669, 1665, 1669, 1689, 1677, 1688, 1682, 1664, 1675, 1696, 1681, 1696, 1675, 1685, 1681, 1678, 1675, 1681, 1676, 1678, 1681, 1674, 1676, 1678, 1677, 1675, 1677, 1678, 1669, 1674, 1681, 1687, 1690, 1682, 1688, 1682, 1690, 1692, 1674, 1698, 1676, 1698, 1674, 1697, 1688, 1701, 1690, 1701, 1688, 1700, 1695, 1693, 1692, 1693, 1695, 1748, 1687, 1697, 1674, 1697, 1687, 1699, 1690, 1748, 1695, 1748, 1690, 1701, 1702, 1703, 1701, 1706, 1704, 1705, 1704, 1697, 1705, 1697, 1706, 1705, 1666, 1707, 1709, 1707, 1708, 1709, 1708, 1666, 1709, 1746, 1710, 1712, 1746, 1711, 1710, 1711, 1712, 1710, 1745, 1715, 1713, 1745, 1713, 1714, 1714, 1713, 1715, 1716, 1750, 1718, 1750, 1716, 1717, 1716, 1718, 1717, 1720, 1751, 1721, 1751, 1720, 1719, 1720, 1721, 1719, 1699, 1724, 1722, 1699, 1722, 1723, 1723, 1722, 1724, 1703, 1702, 1725, 1702, 1701, 1725, 1726, 1747, 1728, 1726, 1727, 1747, 1726, 1728, 1727, 1731, 1729, 1730, 1730, 1729, 1752, 1752, 1729, 1731, 1749, 1733, 1734, 1749, 1732, 1733, 1732, 1734, 1733, 1737, 1744, 1736, 1744, 1735, 1736, 1735, 1737, 1736, 1753, 1738, 1740, 1753, 1739, 1738, 1739, 1740, 1738, 1742, 1748, 1743, 1748, 1741, 1743, 1741, 1742, 1743, 1755, 1756, 1757, 1756, 1755, 1754, 1756, 1754, 1758, 1759, 1758, 1754, 1754, 1757, 1759, 1757, 1754, 1755, 1761, 1762, 1763, 1762, 1761, 1760, 1762, 1760, 1764, 1765, 1764, 1760, 1760, 1763, 1765, 1763, 1760, 1761, 1767, 1768, 1769, 1768, 1767, 1766, 1768, 1766, 1770, 1771, 1770, 1766, 1766, 1769, 1771, 1769, 1766, 1767, 1773, 1774, 1775, 1774, 1773, 1772, 1774, 1772, 1776, 1777, 1776, 1772, 1772, 1775, 1777, 1775, 1772, 1773, 1779, 1780, 1781, 1780, 1779, 1778, 1780, 1778, 1782, 1783, 1782, 1778, 1778, 1781, 1783, 1781, 1778, 1779, 1786, 1785, 1787, 1785, 1786, 1784, 1784, 1786, 1788, 1789, 1784, 1788, 1787, 1784, 1789, 1784, 1787, 1785, 0x0700, 1791, 1793, 1791, 0x0700, 1790, 1790, 0x0700, 1794, 1795, 1790, 1794, 1793, 1790, 1795, 1790, 1793, 1791, 1798, 1797, 0x0707, 1797, 1798, 1796, 1796, 1798, 1800, 1801, 1796, 1800, 0x0707, 1796, 1801, 1796, 0x0707, 1797, 1804, 1803, 1805, 1803, 1804, 1802, 1802, 1804, 1806, 1807, 1802, 1806, 1805, 1802, 1807, 1802, 1805, 1803, 1810, 1809, 1811, 1809, 1810, 1808, 1808, 1810, 1812, 1813, 1808, 1812, 1811, 1808, 1813, 1808, 1811, 1809, 1814, 1815, 1816, 1814, 1816, 1817, 1814, 1817, 1818, 1815, 1814, 1818, 1819, 1820, 1821, 1819, 1821, 1822, 1819, 1822, 1823, 1820, 1819, 1823, 1824, 1825, 1826, 1824, 1826, 1827, 1824, 1827, 1828, 1825, 1824, 1828, 1829, 1830, 1831, 1829, 1831, 1832, 1829, 1832, 1833, 1830, 1829, 1833, 1834, 1835, 1836, 1834, 1836, 1837, 1834, 1837, 1838, 1835, 1834, 1838, 1839, 1840, 1841, 1839, 1841, 1842, 1839, 1842, 1843, 1840, 1839, 1843, 1844, 1845, 1846, 1844, 1846, 1847, 1844, 1847, 1848, 1845, 1844, 1848, 1849, 1850, 1851, 1849, 1851, 1852, 1849, 1852, 1853, 1850, 1849, 1853, 1854, 1855, 1856, 1854, 1856, 1857, 1854, 1857, 1858, 1855, 1854, 1858, 1859, 1860, 1861, 1859, 1861, 1862, 1859, 1862, 1863, 1860, 1859, 1863, 1864, 1865, 1866, 1864, 1866, 1867, 1864, 1867, 1868, 1865, 1864, 1868, 1869, 1870, 1871, 1869, 1871, 1872, 1869, 1872, 1873, 1870, 1869, 1873, 1874, 1875, 1876, 1874, 1876, 1877, 1874, 1877, 1878, 1875, 1874, 1878, 1879, 1880, 1881, 1879, 1881, 1882, 1879, 1882, 1883, 1880, 1879, 1883, 1884, 1885, 1886, 1884, 1886, 1887, 1884, 1887, 1888, 1885, 1884, 1888, 1889, 1890, 1891, 1889, 1891, 1892, 1889, 1892, 1893, 1890, 1889, 1893, 1894, 1895, 1896, 1894, 1896, 1897, 1894, 1897, 1898, 1895, 1894, 1898, 1899, 1900, 1901, 1899, 1901, 1902, 1899, 1902, 1903, 1900, 1899, 1903, 1904, 1905, 1906, 1904, 1906, 1907, 1904, 1907, 1908, 1905, 1904, 1908, 1909, 1910, 1911, 1909, 1911, 1912, 1909, 1912, 1913, 1910, 1909, 1913, 1914, 1917, 1916, 1914, 1916, 1915, 1919, 1922, 1921, 1919, 1921, 1920, 1924, 1927, 1926, 1924, 1926, 1925, 1929, 1932, 1931, 1929, 1931, 1930, 1934, 1937, 1936, 1934, 1936, 1935, 1939, 1943, 1942, 1939, 1941, 1940, 1944, 1947, 1946, 1944, 1946, 1945, 1949, 1952, 1951, 1949, 1951, 1950, 1954, 1957, 1956, 1954, 1956, 1955, 1959, 1963, 1962, 1959, 1961, 1960, 1964, 1968, 1967, 1964, 1966, 1965, 1969, 1972, 1971, 1969, 1971, 1970, 1974, 1978, 1977, 1974, 1976, 1975, 1979, 1982, 1981, 1979, 1981, 1980, 1927, 1924, 1928, 1928, 1924, 1925, 1922, 1919, 1923, 1923, 1919, 1920, 1938, 1934, 1935, 1937, 1934, 1938, 1933, 1929, 1930, 1932, 1929, 1933, 1918, 1914, 1915, 1917, 1914, 1918, 1948, 1944, 1945, 1947, 1944, 1948, 1958, 1954, 1955, 1957, 1954, 1958, 1953, 1949, 1950, 1952, 1949, 1953, 1968, 1964, 1965, 1964, 1967, 1966, 1973, 1969, 1970, 1969, 1973, 1972, 1963, 1959, 1960, 1959, 1962, 1961, 1943, 1939, 1940, 1939, 1942, 1941, 1983, 1979, 1980, 1982, 1979, 1983, 1978, 1974, 1975, 1974, 1977, 1976, 1984, 1985, 1986, 1985, 1984, 1988, 1984, 1987, 1988, 1984, 1986, 1987, 1989, 1990, 1991, 1990, 1989, 1993, 1989, 1992, 1993, 1989, 1991, 1992, 1994, 1995, 1996, 1995, 1994, 1998, 1994, 1997, 1998, 1994, 1996, 1997, 1999, 2000, 2001, 2000, 1999, 2003, 1999, 2002, 2003, 1999, 2001, 2002, 2004, 2005, 2006, 2005, 2004, 2008, 2004, 2007, 2008, 2004, 2006, 2007, 2009, 2010, 2011, 2010, 2009, 2013, 2009, 2012, 2013, 2009, 2011, 2012, 2014, 2015, 2016, 2015, 2014, 2018, 2014, 2017, 2018, 2014, 2016, 2017, 2019, 2020, 2021, 2020, 2019, 2023, 2019, 2022, 2023, 2019, 2021, 2022, 2025, 2024, 2026, 2024, 2025, 2028, 2024, 2028, 2027, 2026, 2024, 2027, 2030, 2029, 2031, 2029, 2030, 2033, 2029, 2033, 2032, 2031, 2029, 2032, 2035, 2034, 2036, 2034, 2035, 2038, 2034, 2038, 2037, 2036, 2034, 2037, 2040, 2039, 2041, 2039, 2040, 2043, 2039, 2043, 2042, 2041, 2039, 2042, 2045, 2044, 2046, 2044, 2045, 0x0800, 2044, 0x0800, 2047, 2046, 2044, 2047, 2050, 2049, 2051, 2049, 2050, 2053, 2049, 2053, 2052, 2051, 2049, 2052, 2055, 2054, 0x0808, 2054, 2055, 2058, 2054, 2058, 2057, 0x0808, 2054, 2057, 2060, 2059, 2061, 2059, 2060, 2063, 2059, 2063, 2062, 2061, 2059, 2062, 2065, 2068, 2064, 2065, 2066, 2067, 2066, 2065, 2064, 2067, 2068, 2065, 2070, 2073, 2069, 2070, 2071, 2072, 2071, 2070, 2069, 2072, 2073, 2070, 2075, 2078, 2074, 2075, 2076, 2077, 2076, 2075, 2074, 2077, 2078, 2075, 2080, 2083, 2079, 2080, 2081, 2082, 2081, 2080, 2079, 2082, 2083, 2080, 2086, 2088, 2084, 2087, 2086, 2085, 2085, 2086, 2084, 2087, 2088, 2086, 2090, 2093, 2089, 2090, 2091, 2092, 2091, 2090, 2089, 2092, 2093, 2090, 2096, 2098, 2094, 2097, 2096, 2095, 2095, 2096, 2094, 2097, 2098, 2096, 2100, 2103, 2099, 2100, 2101, 2102, 2101, 2100, 2099, 2102, 2103, 2100]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterPalace.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterPalace.as new file mode 100644 index 0000000..3dc85a0 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/london/WestminsterPalace.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.london { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class WestminsterPalace extends Stage3DData { + + public function WestminsterPalace(){ + vertices = new [-159.044, 50.5666, -254.324, -118.104, 50.5666, -100.647, -119.429, 134.483, -117.986, -148.457, 50.5666, -115.768, -114.892, 134.483, -58.6078, -58.0626, 134.483, -84.0924, -30.1232, 50.5666, -86.2273, -30.1232, 147.912, -86.2273, -58.0626, 147.912, -84.0924, 78.1694, 109.51, -18.6445, 77.2805, 109.51, -29.3397, 78.1694, 149.981, -18.6445, -59.6687, 134.483, -105.112, -59.6687, 147.912, -105.112, -119.034, 134.483, 336.111, -39.5817, 147.912, 339.619, 81.6657, 50.5666, -41.0403, -114.083, 50.5666, -422.933, 125.872, 149.981, 29.189, 124.503, 130.598, 12.7222, 5.02702, 150.046, 51.4306, 9.45877, 150.046, 51.0622, -56.6282, 150.046, 17.0074, -22.6344, 150.046, -49.8139, -14.0877, 150.046, 53.0192, -59.0146, 144.706, -11.7052, -59.0146, 50.5666, -11.7052, -164.867, 50.5666, -330.812, 53.2061, 153.479, 169.959, 43.5563, 50.5666, 170.761, 43.1262, 50.5666, 165.586, 30.7238, 153.479, 193.208, 30.7238, 147.912, 193.208, -44.5221, 94.9257, 203.685, -56.1692, 140.393, 22.5298, 40.0298, 161.038, -3.25035, 41.0388, 150.046, 8.89006, 80.1875, 94.9257, 5.63632, 80.1875, 149.981, 5.63632, 11.5911, 147.912, -116.788, -27.0662, 50.5666, -49.4456, -13.0771, 161.038, -50.6082, -4.53034, 161.038, 52.2249, 113.542, 133.948, -119.161, 113.542, 109.51, -119.161, 7.92852, 134.483, -175.965, 9.18324, 134.483, -160.868, 31.6049, 161.038, 143.871, 31.4368, 147.912, 141.848, 32.6329, 147.912, 156.239, -21.8016, 161.038, 146.273, 31.4368, 161.038, 141.848, -89.0507, 94.9257, 67.9874, -150.938, 94.9257, 80.0547, -146.045, 117.514, 201.372, -66.0826, 117.514, 185.78, -148.773, 94.9257, 180.525, -138.064, 50.5666, 178.437, -23.9114, 94.9257, 120.888, -140.956, 50.5666, 330.205, -156.776, 50.5666, 218.512, -244.074, 134.483, 56.1776, -140.956, 134.483, 330.205, -139.611, 134.483, 340.289, -251.678, 134.483, 71.4793, -281.329, 134.483, 62.8518, 8.64184, 153.479, 333.647, 35.9061, 147.912, 331.382, 8.64184, 147.912, 333.647, 35.9061, 153.479, 331.382, -160.114, 134.483, -268.33, -160.114, 50.5666, -268.33, -69.9511, 147.912, -155.878, -68.7935, 134.483, -140.727, -69.7102, 147.912, -152.725, 205.379, 134.483, 399.101, -37.7829, 134.483, -170.625, -34.8683, 147.912, -143.319, -36.0146, 143.22, -157.112, -36.0146, 134.483, -157.112, -34.8683, 134.483, -143.319, -186.417, 149.676, -417.02, -29.7007, 134.483, -500.003, -30.4901, 134.483, -509.501, -30.4901, 147.912, -509.501, 156.995, 142.967, 151.703, 157.707, 142.967, 160.276, -155.514, 159.272, -208.09, -170.343, 149.676, -206.857, -185.206, 159.272, -205.622, 150.557, 134.483, 160.87, 150.186, 134.483, 156.414, 160.642, 134.483, 336.502, 43.6976, 98.8571, 300.824, 63.9428, 98.8571, 299.142, -8.03636, 147.912, -159.437, 7.93612, 135.55, -160.764, 7.93612, 134.483, -160.764, 134.348, 147.912, -171.271, 6.94941, 147.912, 367.583, -248.509, 140.393, 56.9722, -248.525, 140.409, 56.9751, -6.57364, 73.2012, 619.547, -6.57364, 50.5666, 619.547, -40.775, 134.483, 325.87, -165.782, 149.676, -146.969, -151.924, 134.483, -161.138, -154.522, 149.676, 0.397517, -168.379, 134.483, -3.15843, -168.022, 134.483, 1.51955, -187.433, 159.272, -232.41, 125.872, 130.598, 29.189, 81.6657, 109.51, -41.0403, 75.4361, 109.51, -115.994, 87.9189, 109.51, -52.4182, -149.89, 134.483, -134.53, -69.7102, 147.912, -152.725, -69.9511, 147.912, -155.878, -37.1421, 147.912, -170.678, -70.8679, 147.912, -167.875, -68.7935, 147.912, -140.727, -118.104, 134.483, -100.647, -56.4565, 134.483, -63.073, -141.708, 134.483, -27.4544, -148.457, 134.483, -115.768, -112.681, 134.483, -29.6725, -120.872, 50.5666, -257.241, -113.771, 50.5666, -164.309, 38.6525, 50.5666, -19.8225, 48.1278, 50.5666, -38.2528, -34.8683, 50.5666, -143.319, -149.89, 50.5666, -134.53, -119.429, 50.5666, -117.986, 197.455, 33.8351, -282.008, 174.022, 63.5493, -243.138, 209.495, 50.5666, 44.206, 186.473, 50.5666, 46.1194, -36.0146, 143.22, -157.112, -8.56959, 149.676, -159.393, -170.158, 134.483, -399.836, -171.563, 134.483, -418.155, -122.703, 115.676, -334.316, -122.703, 134.483, -334.316, 161.431, 161.038, -24.1093, 163.209, 161.038, -2.71901, 191.775, 149.981, 109.918, -56.2599, 150.046, 21.4392, -58.6462, 150.046, -7.27341, -27.0662, 150.046, -49.4456, 0.912038, 150.046, -51.7709, 38.6525, 150.046, -19.8225, -120.872, 134.483, -257.241, -159.044, 134.483, -254.324, -155.514, 134.483, -208.09, -187.954, 134.483, -238.681, -170.343, 149.676, -206.857, -169.266, 134.483, -13.8315, -156.035, 159.272, -214.362, -185.728, 159.272, -211.894, -155.514, 159.272, -208.09, -156.887, 175.455, -224.62, -56.4565, 50.5666, -63.073, -58.0626, 50.5666, -84.0924, -112.681, 50.5666, -29.6725, -114.892, 50.5666, -58.6078, -59.3074, 50.5666, -15.2279, -141.708, 50.5666, -27.4544, -194.673, 50.5666, -319.528, -168.91, 50.5666, -9.5409, 91.3188, 161.038, -7.51311, 90.4299, 161.038, -18.2083, 92.2077, 161.038, 3.18205, 81.0764, 149.981, 16.3315, 134.037, 159.452, 1.45952, 145.3, 149.981, 10.9937, 141.504, 149.981, -34.6775, 120.707, 149.981, -32.949, 133.057, 149.981, -136.306, 140.135, 149.981, -51.1443, -3.51971, 150.046, -51.4026, 77.2805, 149.981, -29.3397, 146.668, 149.981, 27.4606, 135.406, 159.452, 17.9264, -5.655, 147.912, -130.785, 132.561, 147.912, -142.272, -20.672, 161.038, -141.99, 131.534, 161.038, -154.64, 130.506, 147.912, -167.008, -7.71086, 147.912, -155.52, -31.8693, 147.912, -107.236, -4.38134, 147.912, -115.46, -22.6344, 152.07, -49.8139, -3.51971, 152.07, -51.4026, 0.912038, 147.912, -51.7709, -8.03636, 147.912, -159.437, 130.601, 159.452, -39.8816, 119.338, 149.981, -49.4158, 11.5911, 133.948, -116.788, 10.3175, 133.948, -132.112, 118.875, 133.948, -54.9911, 139.672, 133.948, -56.7196, 89.7508, 149.981, -30.3761, 87.9189, 149.981, -52.4182, 146.16, 147.912, -176.29, 64.7234, 50.5666, -311.544, 16.8897, 50.5666, -307.568, 95.7246, 134.483, -326.699, 108.819, 134.483, -169.149, 108.819, 147.912, -169.149, 130.18, 147.912, -170.924, 15.9684, 111.346, -355.645, 64.7234, 111.346, -311.544, -229.084, 165.901, 34.9536, 174.022, 58.8084, -243.138, 180.373, 58.8084, -166.73, -213.631, 134.483, -1.53262, 117.592, 134.483, 308.503, 139.486, 134.483, 306.684, 160.642, 134.483, 336.502, 194.06, 147.912, 400.042, 184.626, 134.483, 149.407, 161.162, 147.912, 151.357, 160.642, 147.912, 336.502, -117.245, 147.912, 349.782, -44.5775, 134.483, 354.178, 140.555, 147.912, 319.535, 142.536, 147.912, 343.373, -315.032, 50.5666, -0.585243, -329.329, 39.3348, -0.585243, -325.05, 39.3348, -10.8381, -109.916, 50.5666, 326.143, -94.1717, 50.5666, 210.183, 76.6048, 50.5666, 42.8139, 36.6952, 50.5666, 46.1308, 77.8907, 50.5666, 58.2855, 106.439, 50.5666, 103.743, 102.491, 50.5666, 56.2409, -315.032, 39.3348, -15.6415, 264.023, 33.8351, 432.06, 256.852, 33.8351, 432.656, 253.729, 50.5666, 395.083, 172.702, 161.038, 111.503, -215.652, 140.393, 12.7689, -284.649, 165.901, 44.2864, -287.968, 140.393, 25.721, -258.922, 134.483, 20.5176, -239.812, 162.837, 3.15568, -261.34, 134.483, 7.01079, -267.065, 39.3348, -25.7136, -180.509, 50.5666, -23.9367, -199.804, 39.3348, -37.3894, 156.516, 147.912, 145.943, 150.321, 149.981, 71.4113, 5.87759, 147.912, 354.731, 49.9015, 134.483, 364.013, 92.8639, 50.5666, 151.233, 32.6329, 50.5666, 156.239, 53.2061, 50.5666, 169.959, 62.3997, 50.5666, 234.127, 63.9382, 50.5666, 252.639, 65.0835, 50.5666, 312.867, 60.1043, 50.5666, 252.958, 105.632, 50.5666, 164.604, 60.1043, 98.8571, 252.958, 68.9096, 98.8571, 246.766, 54.9709, 98.8571, 191.193, 43.1262, 153.479, 165.586, 28.5289, 153.479, 166.799, -79.5175, 134.483, 322.165, 155.488, 161.038, 133.575, -18.5194, 147.912, 53.3876, 14.7066, 147.912, 114.204, -28.7935, 174.081, 140.594, -44.7409, 174.081, 141.919, -27.0807, 174.081, 161.202, 41.4072, 94.9257, 13.3218, 41.0388, 94.9257, 8.89006, 77.8907, 94.9257, 58.2855, 102.491, 94.9257, 56.2409, 30.577, 94.9257, 131.503, 14.7066, 94.9257, 114.204, 30.577, 147.912, 131.503, 29.0402, 161.038, 113.012, 6.94941, 147.912, 367.583, -57.5754, 165.901, 5.61051, -56.2599, 142.038, 21.4392, -138.064, 94.9257, 178.437, -18.5194, 94.9257, 53.3876, -56.2599, 94.9257, 21.4392, -24.1982, 94.9257, 117.437, -156.776, 94.9257, 218.512, -66.0826, 94.9257, 185.78, -146.045, 94.9257, 201.372, -124.57, 94.9257, 214.16, -54.8599, 94.9257, 163.511, -24.9464, 94.9257, 161.025, -12.2848, 94.9257, 313.367, -285.195, 134.483, 11.2825, -299.065, 134.483, 13.7661, -264.33, 134.483, 7.54613, -287.596, 134.483, 77.9111, -253.603, 134.483, 57.8848, -245.541, 134.483, 70.3804, -129.453, 134.483, 338.96, -210.4, 174.535, 133.96, -208.158, 174.535, 149.788, -150.938, 50.5666, 80.0547, -288.264, 84.3974, 73.1873, -261.715, 84.3974, 312.883, -295.478, 84.3974, 74.4789, -287.596, 84.3974, 77.9111, -269.76, 84.3974, 74.7174, -236.505, 84.3974, 309.507, -304.364, 84.3974, 368.848, -209.999, 90.5469, 367.05, -240.537, 147.912, 353.496, -207.741, 147.912, 384.305, -153.217, 147.912, 377.169, -157.733, 147.912, 342.661, -124.937, 147.912, 373.469, -211.212, 134.483, 11.9739, -168.91, 134.483, -9.5409, -64.1987, 50.5666, 365.52, -308.808, 50.5666, 397.53, -318.681, 50.5666, 320.512, -299.065, 50.5666, 13.7661, -304.671, 50.5666, 72.5784, -285.195, 50.5666, 11.2825, -294.018, 50.5666, 71.0697, -288.947, 50.5666, 70.3517, -328.699, 39.3348, 310.259, -318.681, 39.3348, 305.455, -332.977, 39.3348, 320.512, -261.715, 39.3348, 297.827, -304.237, 39.3348, 86.6736, -314.273, 39.3348, 82.4172, -318.967, 39.3348, 72.5784, -288.513, 39.3348, 84.4468, -54.8599, 147.912, 163.511, -24.9464, 147.912, 161.025, -21.8016, 147.912, 146.273, 28.5289, 147.912, 166.799, 22.9073, 153.479, 174.981, -4.35697, 153.479, 177.247, 327.188, 12.6719, 426.811, 332.977, 5.63916, 242.172, 94.0552, 147.912, 165.566, 94.0552, 50.5666, 165.566, 10.3175, 147.912, -132.112, 81.0764, 94.9257, 16.3315, 115.672, 94.9257, 13.4562, 124.503, 149.981, 12.7222, 124.832, 94.9257, 123.67, 124.832, 130.598, 123.67, 154.46, 130.598, 121.207, 154.46, 147.912, 121.207, 256.887, 164.061, 433.074, 256.887, 169.912, 433.074, 241.302, 150.626, 475.686, 260.297, 138.199, 474.107, 260.297, 169.912, 474.107, 144.901, 138.199, -454.072, 160.486, 150.626, -496.684, 153.785, 183.702, 113.079, 191.776, 183.702, 109.921, 133.057, 183.702, -136.306, 151.975, 161.038, -137.879, 171.048, 176.537, -139.464, 171.048, 149.981, -139.464, 215.738, 50.5666, 398.24, 215.738, 161.038, 398.24, 215.738, 169.912, 398.24, 159.529, 63.5493, -417.518, 148.018, 161.038, -416.561, 173.308, 147.912, 150.347, 161.162, 147.912, 151.357, 225.424, 169.912, 514.775, 157.478, 134.483, -177.231, 129.847, 183.702, -174.934, 129.847, 147.912, -174.934, 125.522, 147.912, -424.603, 102.059, 147.912, -422.653, 15.9684, 147.912, -355.645, 163.896, 150.626, -455.65, -200.223, 347.574, -495.852, -194.364, 347.574, -425.366, -114.083, 347.574, -422.933, -123.878, 347.574, -431.224, -30.4901, 147.912, -509.501, -27.6082, 147.912, -474.827, -26.8188, 134.483, -465.329, 249.091, -1.52588E-5, -621.06, 179.794, 33.8351, -581.375, 165.255, -1.52588E-5, -652.058, -221.116, 50.5666, -512.504, -293.322, 5.63916, -506.503, -278.167, 5.63916, -567.759, 284.301, -1.52588E-5, -547.4, -255.218, 19.3686, -315.361, -205.077, 50.5666, -319.528, -228.995, 5.63916, -607.309, 139.911, 134.483, -514.1, -29.7007, 134.483, -500.003, 139.122, 147.912, -523.598, 182.892, 138.199, -457.229, 171.04, 61.1788, -418.475, 172.623, 33.8351, -580.779, 186.009, 33.8351, -419.719, 204.625, 33.8351, -282.604, 288.781, 5.63916, -289.598, 136.84, 134.483, -425.544, -53.1797, 149.676, -455.035, -33.2787, 149.676, -456.689, -16.9504, 50.5666, -475.305, -13.541, 50.5666, -475.588, -71.6014, 50.5666, -461.607, -112.651, 50.5666, -404.245, -61.4451, 50.5666, -339.408, -190.428, 371.165, -487.561, -138.028, 371.165, -491.916, -150.437, 371.165, -453.707, -24.214, 164.357, -462.981, -12.1728, 164.357, -459.126, -15.5259, 134.483, -458.165, -20.3598, 134.483, -475.022, -17.0068, 134.483, -475.983, -18.9916, 134.483, -458.56, -210.017, 50.5666, -504.144, 176.324, 50.5666, -536.253, -202.656, 50.5666, -415.571, -7.67773, 147.912, 368.799, 3.40887, 147.912, 521.304, -9.8121, 147.912, 368.976, 19.6522, 147.912, 519.894, 224.373, 147.912, 502.126, 36.868, 134.483, 506.406, 223.383, 134.483, 490.218, 237.891, 150.626, 434.652, 222.306, 138.199, 477.264, 218.896, 138.199, 436.231, 22.691, 134.483, 531.624, 7.2335, 147.912, 566.222, 225.424, 134.837, 514.775, 225.362, 134.483, 514.034, -308.374, 39.3348, 411.625, -318.41, 39.3348, 407.369, 164.903, 50.5666, 491.178, -323.104, 39.3348, 397.53, 273.249, 33.8351, 629.938, 280.42, 33.8351, 629.342, -42.3091, 50.5666, 628.893, 278.697, 19.9861, 652.058, -42.3091, 39.3348, 647.2, -28.0611, 134.483, 370.56, -11.0318, 134.483, 568.182, -40.775, 134.483, 325.87, -9.8121, 134.483, 368.976, -19.6818, 134.483, 568.901, 164.907, 134.483, 491.224, 30.6909, 134.483, 365.61, 25.2039, 134.483, 366.066, -35.3109, 73.2012, 622.176, -6.57364, 73.2012, 619.547, -9.88259, 50.5666, 568.086, -10.9325, 50.5666, 569.326, 225.424, 50.5666, 514.775, 22.691, 50.5666, 531.624, -58.414, 50.5666, 355.988, -35.3109, 50.5666, 622.176, -236.021, 50.5666, 388.005, -84.513, 39.3348, 382.331, -124.937, 50.5666, 373.469, -64.0206, 39.3348, 628.893, -56.9461, 39.3348, 642.531, 310.962, 19.7372, 641.166, 321.372, 19.7372, 612.302, 41.9291, 94.9257, 109.104, 115.672, 130.598, 13.4562, 120.693, 149.981, 73.8737, 122.468, 149.981, 95.2308, 152.096, 130.598, 92.7683, 122.468, 130.598, 95.2308, 150.321, 130.598, 71.4113, 120.693, 130.598, 73.8737, -44.7409, 147.912, 141.919, -43.0281, 174.081, 162.528, 48.1278, 109.51, -38.2528, 39.144, 109.51, -28.7533, 39.144, 50.5666, -28.7533, -150.437, 388.232, -453.707, -171.882, 371.165, -451.925, -171.882, 388.232, -451.925, -152.219, 388.232, -475.152, -152.219, 371.165, -475.152, -173.664, 388.232, -473.369, -173.664, 371.165, -473.369, -129.736, 347.574, -501.71, -133.673, 371.165, -439.516, -186.073, 371.165, -435.161, -120.656, 147.912, -502.007, -121.445, 152.769, -511.505, -163.09, 409.386, -462.31, -160.822, 409.386, -462.498, -202.656, 347.574, -415.571, -210.017, 152.769, -504.144, -210.017, 347.574, -504.144, -114.083, 153.801, -422.933, -117.774, 147.912, -467.333, -116.984, 134.483, -457.835, -121.445, 347.574, -511.505, -116.984, 50.5666, -457.835, -202.656, 152.769, -415.571, -202.656, 138.67, -415.571, -121.445, 138.67, -511.505, -162.05, 491.365, -463.538, -163.279, 409.386, -464.578, -161.01, 409.386, -464.767, -113.771, 134.483, -164.309, 191.884, 50.5666, -167.687, 180.373, 50.5666, -166.73, 191.884, 61.1788, -167.687, 180.373, 63.5493, -166.73, 185.533, 50.5666, -244.095, 174.022, 50.5666, -243.138, 185.533, 61.1788, -244.095, 209.495, 61.1788, 44.206, 197.984, 63.5493, 45.1627, 171.04, 50.5666, -418.475, 263.415, 33.8351, 511.617, 270.998, 50.5666, 602.853, 263.415, 50.5666, 511.617, 176.324, 33.8351, -536.253, 176.324, 169.912, -536.253, 186.009, 50.5666, -419.719, 179.481, 164.061, -498.262, 263.415, 169.912, 511.617, 253.729, 33.8351, 395.083, 253.729, 169.912, 395.083, 175.557, 50.5666, -545.472, 25.4772, 57.5999, 565.147, 25.5573, 134.483, 566.111, -121.445, 50.5666, -511.505, 138.333, 50.5666, -533.096, -114.714, 134.483, -512.065, -47.351, 134.483, -169.83, -37.1421, 147.912, -170.678, -61.4451, 115.676, -339.408, -70.9326, 134.483, -453.56, -56.2551, 50.5666, -276.962, -47.351, 50.5666, -169.83, -71.6014, 134.483, -461.607, 164.907, 50.5666, 491.224, 153.617, 50.5666, 355.393, 41.9764, 50.5666, 501.395, 30.6909, 50.5666, 365.61, 41.9802, 134.483, 501.441, 41.9802, 50.5666, 501.441, 83.2059, 50.5666, -502.254, -170.158, 50.5666, -399.836, -164.867, 134.483, -330.812, -56.2551, 115.676, -276.962, -117.513, 115.676, -271.871, -117.513, 134.483, -271.871, -35.3109, 73.2012, 622.176, -6.57364, 50.5666, 619.547, -58.414, 73.1471, 355.988, -126.066, 73.2012, 364.841, 143.604, 134.483, 356.225, 153.617, 134.483, 355.393, 194.986, 161.038, 148.546, 215.738, 134.483, 398.24, 167.838, 134.483, -178.092, 148.018, 134.483, -416.561, 138.333, 161.038, -533.096, 138.333, 134.483, -533.096, 25.3582, 134.483, 563.716, 148.018, 61.1788, -416.561, 162.511, 61.1788, -242.182, 167.838, 61.1788, -178.092, 179.481, 138.199, -498.262, 182.892, 164.061, -457.229, 9.45877, 94.9257, 51.0622, 9.45877, 147.912, 51.0622, 41.4072, 150.046, 13.3218, -27.0662, 147.912, -49.4456, -59.0146, 150.046, -11.7052, 218.896, 134.483, 436.231, 222.306, 134.483, 477.264, -158.261, 159.272, -241.149, -172.886, 149.676, -239.934, 141.49, 134.483, -495.105, 141.49, 138.199, -495.105, 144.9, 134.483, -454.072, 16.8897, 88.0795, -307.568, -155.972, 134.483, -213.608, -158.261, 134.483, -241.149, -157.74, 159.272, -234.878, -186.58, 175.455, -222.152, -185.206, 159.272, -205.622, -185.206, 134.483, -205.622, -169.281, 50.5666, -14.0086, -11.0318, 73.2012, 568.182, -19.6818, 73.2012, 568.901, -169.266, 50.5666, -13.8315, -296.65, 134.483, 27.2732, -290.011, 134.483, 64.404, -237.486, 165.901, 2.73908, -235.159, 162.837, 2.32248, 171.047, 183.702, -139.487, 168.862, 61.1788, -165.774, 167.838, 183.702, -178.092, 194.986, 50.5666, 148.546, 194.986, 133.74, 148.546, -12.1728, 50.5666, -459.126, -7.75197, 164.357, -464.349, -15.5822, 50.5666, -458.843, -15.5822, 134.483, -458.843, -18.9916, 164.357, -458.56, -24.214, 134.483, -462.981, -24.7807, 164.357, -469.799, -7.75197, 50.5666, -464.349, -8.3187, 164.357, -471.168, -8.3187, 50.5666, -471.168, -13.541, 164.357, -475.588, -20.3598, 164.357, -475.022, -24.7807, 134.483, -469.799, 166.116, 147.912, 402.364, 162.153, 134.483, 354.684, 166.116, 134.483, 402.364, 138.492, 134.483, 161.873, 153.058, 134.483, 337.132, 138.492, 147.912, 161.873, 105.632, 134.483, 164.604, 117.592, 50.5666, 308.503, 44.8384, 88.6532, 314.55, 31.5971, 147.912, 193.136, 34.7257, 98.8571, 192.876, 33.4764, 50.5666, 166.388, 33.4764, 147.912, 166.388, 92.8639, 147.912, 151.233, 43.5563, 153.479, 170.761, 63.9428, 88.6532, 299.142, 65.0835, 88.6532, 312.867, 58.5657, 50.5666, 234.446, 58.5657, 98.8571, 234.446, 54.9709, 153.479, 191.193, 62.3997, 98.8571, 234.127, 68.2723, 50.5666, 239.099, 63.9382, 98.8571, 252.639, 68.2723, 98.8571, 239.099, 68.9096, 50.5666, 246.766, 43.6976, 88.6532, 300.824, 34.7257, 147.912, 192.876, 44.8384, 134.483, 314.55, 45.9065, 147.912, 327.402, -109.916, 134.483, 326.143, -124.57, 50.5666, 214.16, -94.1717, 134.483, 210.183, -124.57, 134.483, 214.16, -35.227, 94.9257, 316.369, -44.5221, 50.5666, 203.685, -70.0984, 94.9257, 165.185, -89.0507, 50.5666, 67.9874, -35.227, 50.5666, 316.369, -79.5175, 50.5666, 322.165, -94.1717, 94.9257, 210.183, -18.5194, 150.046, 53.3876, -12.2848, 134.483, 313.367, -7.67773, 147.912, 368.799, -7.67773, 134.483, 368.799, -3.87786, 50.5666, -109.402, 75.4361, 50.5666, -115.994, -3.87786, 133.948, -109.402, 39.0208, 109.51, -15.3908, 146.668, 130.598, 27.4606, -4.38134, 133.948, -115.46, -34.8683, 147.912, -143.319, -31.8693, 50.5666, -107.236, 89.7508, 109.51, -30.3761, 139.672, 149.981, -56.7196, 133.057, 147.912, -136.306, 132.561, 133.948, -142.272, 118.875, 109.51, -54.9911, 153.784, 149.981, 113.075, 152.096, 149.981, 92.7683, 153.784, 147.912, 113.075, -28.7935, 147.912, 140.594, -27.0807, 147.912, 161.202, -43.0281, 147.912, 162.528, -24.9464, 134.483, 161.025, -18.4877, 134.483, -493.802, 83.2059, 134.483, -502.254, -18.4877, 50.5666, -493.802, -16.9504, 134.483, -475.305, 18.9049, 111.346, -320.314, 18.9049, 102.961, -320.314, 63.6851, 111.346, -324.036, 63.6851, 134.483, -324.036, 18.9049, 147.912, -320.314, 76.7795, 134.483, -166.486, 76.7795, 102.961, -166.486, 75.7233, 50.5666, -179.194, -6.84759, 111.346, -353.749, 16.8897, 111.346, -307.568, 95.7246, 147.912, -326.699, 27.8896, 88.0795, -175.219, 27.6911, 111.346, -177.607, 27.6911, 142.715, -177.607, 28.9458, 142.715, -162.511, 28.9458, 102.961, -162.511, 7.92852, 111.346, -175.965, 7.92852, 142.715, -175.965, 94.846, 134.483, -362.201, -6.84759, 50.5666, -353.749, 94.846, 50.5666, -362.201, 106.999, 134.483, -363.211, 102.059, 134.483, -422.653, 106.999, 147.912, -363.211, 41.9291, 50.5666, 109.104, 106.439, 94.9257, 103.743, 31.4368, 158.891, 141.848, -70.0984, 50.5666, 165.185, -70.0984, 117.514, 165.185, -148.773, 117.514, 180.525, -22.0255, 161.038, -158.274, -28.4706, 149.676, -157.739, 9.18324, 142.715, -160.868, 27.8896, 50.5666, -175.219, 75.7233, 102.961, -179.194, 27.8896, 102.961, -175.219, -58.1658, 147.912, 123.735, -58.1658, 94.9257, 123.735, -23.9114, 147.912, 120.888, -13.2716, 147.912, 116.529, -13.2716, 94.9257, 116.529, -24.1982, 161.038, 117.437, 0.717518, 161.038, 115.366, 29.0402, 94.9257, 113.012, 36.6952, 94.9257, 46.1308, 76.6048, 94.9257, 42.8139, -114.083, 134.483, -422.933, -112.651, 134.483, -404.245, 38.6525, 109.51, -19.8225, 0.912038, 50.5666, -51.7709, -181.36, 113.504, 44.9477, -181.36, 94.9257, 44.9477, -287.968, 134.483, 25.721, -281.329, 140.393, 62.8518, -139.611, 113.599, 340.289, -129.453, 147.912, 338.96, -212.257, 147.912, 349.796, -209.999, 50.5666, 367.05, -155.475, 90.5469, 359.915, -155.475, 50.5666, 359.915, -153.217, 50.5666, 377.169, -126.066, 147.912, 364.841, -126.066, 50.5666, 364.841, -56.1692, 94.9257, 22.5298, -204.537, 140.393, 49.0981, -140.956, 113.504, 330.205, -274.55, 113.504, 40.9033, -261.715, 50.5666, 312.883, -315.413, 84.3974, 320.074, -315.413, 50.5666, 320.074, -243.109, 84.3974, 360.646, -309.08, 84.3974, 369.48, -309.08, 50.5666, 369.48, -305.139, 89.5303, 362.804, -307.531, 105.376, 344.145, -269.76, 113.504, 74.7174, -233.012, 105.376, 334.167, -230.461, 90.0877, 352.178, -230.461, 90.0533, 352.178, -212.257, 90.5469, 349.796, -157.733, 90.5469, 342.661, -157.733, 134.483, 342.661, -184.995, 165.901, 346.228, -240.537, 90.0789, 353.496, -230.461, 113.504, 352.178, -212.257, 134.483, 349.796, -236.021, 147.912, 388.005, -207.741, 50.5666, 384.305, -35.3109, 80.5987, 622.176, -6.57364, 80.5987, 619.547, -7.2358, 80.5987, 611.918, -58.414, 80.5446, 355.988, -58.414, 73.2012, 355.988, -38.3885, 134.483, 353.368, -38.3885, 73.2012, 353.368, -210.641, 134.483, -2.06796, -216.413, 138.147, -1.03439, -189.867, 134.483, -5.78805, -189.867, 50.5666, -5.78805, -239.209, 147.912, 363.642, -59.3074, 140.393, -15.2279, -139.674, 50.5666, -0.836461, -139.674, 134.483, -0.836461, -254.386, 140.393, 19.7051, -4.35697, 147.912, 177.247, 22.9073, 147.912, 174.981, 131.97, 159.452, -23.4148, 25.4772, 57.5999, 565.147, -56.6978, 150.046, 16.1702, 39.0208, 150.046, -15.3908, 131.97, 159.452, -23.4148, -310.697, 84.3974, 319.443, 153.058, 147.912, 337.132, 166.116, 134.483, 402.364, -34.8683, 134.483, -143.319, 7.93612, 135.55, -160.764, -8.56959, 149.676, -159.393, 63.6851, 111.346, -324.036, -229.084, 165.901, 34.9536, 260.297, 164.061, 474.107, 171.048, 176.537, -139.464, 225.424, 161.127, 514.775, 167.838, 161.038, -178.092, -37.8493, 134.483, 359.58, 25.2039, 134.483, 366.066, 179.481, 169.912, -498.262, 25.4772, 50.5666, 565.147, 191.775, 176.537, 109.918, 256.887, 138.199, 433.074, 182.892, 138.199, -457.229, 179.481, 138.199, -498.262, 138.492, 134.483, 161.873, -28.4706, 149.676, -157.739, -44.5775, 134.483, 354.178, -126.066, 134.483, 364.841, -258.558, 138.147, 6.51256, -188.524, 161.835, 346.69, -181.466, 161.835, 345.766, -115.456, 134.483, 363.453, -6.57364, 73.2012, 619.547, 171.048, 149.981, -139.464, 186.473, 61.1788, 46.1194, 194.986, 134.483, 148.546, 63.6851, 102.961, -324.036, -115.456, 134.483, 363.453, -215.957, 375.397, -494.066, -199.148, 375.397, -488.686, -204.863, 430.224, -499.78, -208.667, 375.397, -487.895, -210.577, 375.397, -510.874, -201.058, 375.397, -511.665, -193.768, 375.397, -505.494, -192.977, 375.397, -495.976, -216.748, 375.397, -503.584, -216.748, 50.5666, -503.584, -215.957, 50.5666, -494.066, -210.577, 50.5666, -510.874, -193.768, 50.5666, -505.494, -192.977, 50.5666, -495.976, -199.148, 50.5666, -488.686, -201.058, 50.5666, -511.665, -208.667, 50.5666, -487.895, -136.903, 375.397, -500.636, -120.094, 375.397, -495.256, -125.809, 430.224, -506.35, -129.613, 375.397, -494.465, -131.523, 375.397, -517.445, -122.004, 375.397, -518.236, -114.714, 375.397, -512.065, -113.923, 375.397, -502.546, -137.694, 375.397, -510.155, -137.694, 50.5666, -510.155, -136.903, 50.5666, -500.636, -131.523, 50.5666, -517.445, -114.714, 50.5666, -512.065, -113.923, 50.5666, -502.546, -120.094, 50.5666, -495.256, -122.004, 50.5666, -518.236, -129.613, 50.5666, -494.465, -130.332, 375.397, -421.582, -113.524, 375.397, -416.202, -119.238, 430.224, -427.296, -123.042, 375.397, -415.411, -124.952, 375.397, -438.391, -115.434, 375.397, -439.182, -108.144, 375.397, -433.011, -107.353, 375.397, -423.492, -131.123, 375.397, -431.101, -131.123, 50.5666, -431.101, -130.332, 50.5666, -421.582, -124.952, 50.5666, -438.391, -108.144, 50.5666, -433.011, -107.353, 50.5666, -423.492, -113.524, 50.5666, -416.202, -115.434, 50.5666, -439.182, -123.042, 50.5666, -415.411, -209.386, 375.397, -415.012, -192.578, 375.397, -409.632, -198.292, 430.224, -420.726, -202.096, 375.397, -408.841, -204.006, 375.397, -431.82, -194.488, 375.397, -432.611, -187.198, 375.397, -426.44, -186.407, 375.397, -416.922, -210.177, 375.397, -424.53, -210.177, 50.5666, -424.53, -209.386, 50.5666, -415.012, -204.006, 50.5666, -431.82, -187.198, 50.5666, -426.44, -186.407, 50.5666, -416.922, -192.578, 50.5666, -409.632, -194.488, 50.5666, -432.611, -187.954, 159.272, -238.681, 159.83, 183.702, 118.352, 156.994, 183.702, 151.7, 186.684, 183.702, 116.12, 188.94, 183.702, 143.269, 194.985, 183.702, 148.543, 167.005, 201.636, 139.626, 183.118, 201.636, 138.286, 165.652, 201.636, 123.336, 162.086, 183.702, 145.502, 181.764, 201.636, 121.996, 157.014, 183.702, 151.945, 157.014, 161.038, 151.945, 157.014, 173.513, 151.945, 153.765, 183.702, 112.835, 157.014, 147.912, 151.945, 153.765, 147.912, 112.835, 129.85, 183.702, -174.903, 135.894, 183.702, -169.634, 167.841, 183.702, -178.062, 133.058, 183.702, -136.289, 162.748, 183.702, -171.867, 165.004, 183.702, -144.717, 171.049, 183.702, -139.447, 143.07, 201.636, -148.361, 159.182, 201.636, -149.7, 141.716, 201.636, -164.65, 138.15, 183.702, -142.484, 157.829, 201.636, -165.99, 133.079, 183.702, -136.041, 133.079, 161.038, -136.041, 133.079, 173.513, -136.041, 129.829, 183.702, -175.151, 133.079, 147.912, -136.041, 129.829, 147.912, -175.151, 138.353, 169.912, -532.856, 144.384, 169.912, -527.75, 176.344, 169.912, -536.013, 141.47, 169.912, -495.345, 171.238, 169.912, -529.982, 173.43, 169.912, -503.609, 179.461, 169.912, -498.503, 151.508, 187.846, -507.098, 167.621, 187.846, -508.437, 150.193, 187.846, -522.922, 146.576, 169.912, -501.377, 166.306, 187.846, -524.261, 141.49, 147.248, -495.105, 141.49, 159.724, -495.105, 141.49, 134.122, -495.105, 138.333, 134.122, -533.096, 144.9, 169.912, -454.072, 150.932, 169.912, -448.966, 182.892, 169.912, -457.229, 148.018, 169.912, -416.561, 177.786, 169.912, -451.198, 179.978, 169.912, -424.825, 186.009, 169.912, -419.719, 158.056, 187.846, -428.314, 174.169, 187.846, -429.653, 156.741, 187.846, -444.138, 153.124, 169.912, -422.593, 172.853, 187.846, -445.477, 148.038, 169.912, -416.321, 148.038, 147.248, -416.321, 148.038, 159.724, -416.321, 144.881, 169.912, -454.312, 148.038, 134.122, -416.321, 144.881, 134.122, -454.312, 215.758, 169.912, 398.481, 221.79, 169.912, 403.586, 253.749, 169.912, 395.323, 218.876, 169.912, 435.991, 248.644, 169.912, 401.354, 250.836, 169.912, 427.727, 256.867, 169.912, 432.833, 228.914, 187.846, 424.238, 245.026, 187.846, 422.899, 227.599, 187.846, 408.414, 223.982, 169.912, 429.959, 243.711, 187.846, 407.075, 218.896, 147.248, 436.231, 218.896, 159.724, 436.231, 218.896, 134.122, 436.231, 215.738, 134.122, 398.24, 222.306, 169.912, 477.264, 228.338, 169.912, 482.37, 255.192, 169.912, 480.138, 257.384, 169.912, 506.511, 235.462, 187.846, 503.022, 251.574, 187.846, 501.683, 234.147, 187.846, 487.198, 230.529, 169.912, 508.743, 250.259, 187.846, 485.859, 225.444, 169.912, 515.015, 225.444, 147.248, 515.015, 225.444, 159.724, 515.015, 222.286, 169.912, 477.024, 225.444, 134.122, 515.015, 222.286, 134.122, 477.024, 133.71, 205.675, -134.153, 137.476, 205.675, -134.466, 139.918, 205.675, -137.351, 139.605, 205.675, -141.117, 136.721, 205.675, -143.559, 130.513, 205.675, -140.361, 132.955, 205.675, -143.246, 130.826, 205.675, -136.595, 135.216, 228.652, -138.856, 139.605, 50.5666, -141.117, 139.918, 50.5666, -137.351, 136.721, 50.5666, -143.559, 132.955, 50.5666, -143.246, 130.513, 50.5666, -140.361, 133.71, 50.5666, -134.153, 130.826, 50.5666, -136.595, 137.476, 50.5666, -134.466, 130.891, 205.675, -168.073, 134.657, 205.675, -168.387, 137.099, 205.675, -171.271, 136.786, 205.675, -175.037, 133.902, 205.675, -177.479, 127.694, 205.675, -174.281, 130.135, 205.675, -177.166, 128.007, 205.675, -170.515, 132.396, 228.652, -172.776, 136.786, 50.5666, -175.037, 137.099, 50.5666, -171.271, 133.902, 50.5666, -177.479, 130.135, 50.5666, -177.166, 127.694, 50.5666, -174.281, 130.891, 50.5666, -168.073, 128.007, 50.5666, -170.515, 134.657, 50.5666, -168.387, 166.994, 205.675, -136.92, 170.76, 205.675, -137.233, 173.202, 205.675, -140.117, 172.889, 205.675, -143.883, 170.004, 205.675, -146.325, 163.796, 205.675, -143.127, 166.238, 205.675, -146.012, 164.109, 205.675, -139.361, 168.499, 228.652, -141.622, 172.889, 50.5666, -143.883, 173.202, 50.5666, -140.117, 170.004, 50.5666, -146.325, 166.238, 50.5666, -146.012, 163.796, 50.5666, -143.127, 166.994, 50.5666, -136.92, 164.109, 50.5666, -139.361, 170.76, 50.5666, -137.233, 188.112, 205.675, 117.17, 191.878, 205.675, 116.857, 194.32, 205.675, 113.972, 194.007, 205.675, 110.206, 191.122, 205.675, 107.764, 184.914, 205.675, 110.962, 187.356, 205.675, 108.077, 185.227, 205.675, 114.728, 189.617, 228.652, 112.467, 194.007, 50.5666, 110.206, 194.32, 50.5666, 113.972, 191.122, 50.5666, 107.764, 187.356, 50.5666, 108.077, 184.914, 50.5666, 110.962, 188.112, 50.5666, 117.17, 185.227, 50.5666, 114.728, 191.878, 50.5666, 116.857, 157.648, 205.675, 153.856, 161.414, 205.675, 153.543, 163.855, 205.675, 150.659, 163.542, 205.675, 146.893, 160.658, 205.675, 144.451, 154.45, 205.675, 147.648, 156.892, 205.675, 144.764, 154.763, 205.675, 151.415, 159.153, 228.652, 149.154, 163.542, 50.5666, 146.893, 163.855, 50.5666, 150.659, 160.658, 50.5666, 144.451, 156.892, 50.5666, 144.764, 154.45, 50.5666, 147.648, 157.648, 50.5666, 153.856, 154.763, 50.5666, 151.415, 161.414, 50.5666, 153.543, 154.828, 205.675, 119.936, 158.594, 205.675, 119.623, 161.036, 205.675, 116.739, 160.723, 205.675, 112.972, 157.839, 205.675, 110.531, 151.631, 205.675, 113.728, 154.073, 205.675, 110.844, 151.944, 205.675, 117.494, 156.334, 228.652, 115.233, 160.723, 50.5666, 112.972, 161.036, 50.5666, 116.739, 157.839, 50.5666, 110.531, 154.073, 50.5666, 110.844, 151.631, 50.5666, 113.728, 154.828, 50.5666, 119.936, 151.944, 50.5666, 117.494, 158.594, 50.5666, 119.623, 190.931, 205.675, 151.09, 194.697, 205.675, 150.777, 197.139, 205.675, 147.893, 196.826, 205.675, 144.126, 193.941, 205.675, 141.685, 187.733, 205.675, 144.882, 190.175, 205.675, 141.998, 188.046, 205.675, 148.648, 192.436, 228.652, 146.387, 196.826, 50.5666, 144.126, 197.139, 50.5666, 147.893, 193.941, 50.5666, 141.685, 190.175, 50.5666, 141.998, 187.733, 50.5666, 144.882, 190.931, 50.5666, 151.09, 188.046, 50.5666, 148.648, 194.697, 50.5666, 150.777, 164.174, 205.675, -170.84, 167.941, 205.675, -171.153, 170.382, 205.675, -174.037, 170.069, 205.675, -177.803, 167.185, 205.675, -180.245, 160.977, 205.675, -177.048, 163.419, 205.675, -179.932, 161.29, 205.675, -173.282, 165.68, 228.652, -175.542, 170.069, 50.5666, -177.803, 170.382, 50.5666, -174.037, 167.185, 50.5666, -180.245, 163.419, 50.5666, -179.932, 160.977, 50.5666, -177.048, 164.174, 50.5666, -170.84, 161.29, 50.5666, -173.282, 167.941, 50.5666, -171.153, 223.315, 33.8351, 438.071, 219.549, 33.8351, 438.384, 219.549, 195.72, 438.384, 223.315, 195.72, 438.071, 225.757, 33.8351, 435.187, 225.757, 195.72, 435.187, 225.444, 33.8351, 431.421, 225.444, 195.72, 431.421, 222.559, 33.8351, 428.979, 222.559, 195.72, 428.979, 216.351, 195.72, 432.176, 218.793, 195.72, 429.292, 218.793, 33.8351, 429.292, 216.351, 33.8351, 432.176, 216.664, 195.72, 435.943, 216.664, 33.8351, 435.943, 221.054, 218.697, 433.682, 182.994, 33.8351, -450.29, 179.228, 33.8351, -449.977, 179.228, 195.72, -449.977, 182.994, 195.72, -450.29, 185.436, 33.8351, -453.174, 185.436, 195.72, -453.174, 185.123, 33.8351, -456.941, 185.123, 195.72, -456.941, 182.239, 33.8351, -459.382, 182.239, 195.72, -459.382, 176.031, 195.72, -456.185, 178.472, 195.72, -459.069, 178.472, 33.8351, -459.069, 176.031, 33.8351, -456.185, 176.344, 195.72, -452.419, 176.344, 33.8351, -452.419, 180.733, 218.697, -454.68, 149.711, 33.8351, -447.524, 145.945, 33.8351, -447.211, 145.945, 195.72, -447.211, 149.711, 195.72, -447.524, 152.153, 33.8351, -450.408, 152.153, 195.72, -450.408, 151.84, 33.8351, -454.174, 151.84, 195.72, -454.174, 148.955, 33.8351, -456.616, 148.955, 195.72, -456.616, 142.747, 195.72, -453.419, 145.189, 195.72, -456.303, 145.189, 33.8351, -456.303, 142.747, 33.8351, -453.419, 143.06, 195.72, -449.652, 143.06, 33.8351, -449.652, 147.45, 218.697, -451.913, 185.721, 33.8351, -417.488, 181.954, 33.8351, -417.175, 181.954, 195.72, -417.175, 185.721, 195.72, -417.488, 188.162, 33.8351, -420.372, 188.162, 195.72, -420.372, 187.849, 33.8351, -424.138, 187.849, 195.72, -424.138, 184.965, 33.8351, -426.58, 184.965, 195.72, -426.58, 178.757, 195.72, -423.383, 181.199, 195.72, -426.267, 181.199, 33.8351, -426.267, 178.757, 33.8351, -423.383, 179.07, 195.72, -419.616, 179.07, 33.8351, -419.616, 183.46, 218.697, -421.877, 152.437, 33.8351, -414.721, 148.671, 33.8351, -414.408, 148.671, 195.72, -414.408, 152.437, 195.72, -414.721, 154.879, 33.8351, -417.606, 154.879, 195.72, -417.606, 154.566, 33.8351, -421.372, 154.566, 195.72, -421.372, 151.682, 33.8351, -423.814, 151.682, 195.72, -423.814, 145.474, 195.72, -420.616, 147.915, 195.72, -423.501, 147.915, 33.8351, -423.501, 145.474, 33.8351, -420.616, 145.787, 195.72, -416.85, 145.787, 33.8351, -416.85, 150.176, 218.697, -419.111, 145.909, 33.8351, -493.265, 142.143, 33.8351, -492.952, 142.143, 195.72, -492.952, 145.909, 195.72, -493.265, 148.351, 33.8351, -496.149, 148.351, 195.72, -496.149, 148.038, 33.8351, -499.915, 148.038, 195.72, -499.915, 145.154, 33.8351, -502.357, 145.154, 195.72, -502.357, 138.946, 195.72, -499.16, 141.387, 195.72, -502.044, 141.387, 33.8351, -502.044, 138.946, 33.8351, -499.16, 139.259, 195.72, -495.393, 139.259, 33.8351, -495.393, 143.648, 218.697, -497.654, 176.426, 33.8351, -529.314, 172.66, 33.8351, -529.001, 172.66, 195.72, -529.001, 176.426, 195.72, -529.314, 178.868, 33.8351, -532.199, 178.868, 195.72, -532.199, 178.555, 33.8351, -535.965, 178.555, 195.72, -535.965, 175.671, 33.8351, -538.407, 175.671, 195.72, -538.407, 169.463, 195.72, -535.209, 171.904, 195.72, -538.094, 171.904, 33.8351, -538.094, 169.463, 33.8351, -535.209, 169.776, 195.72, -531.443, 169.776, 33.8351, -531.443, 174.165, 218.697, -533.704, 143.143, 33.8351, -526.548, 139.377, 33.8351, -526.235, 139.377, 195.72, -526.235, 143.143, 195.72, -526.548, 145.585, 33.8351, -529.432, 145.585, 195.72, -529.432, 145.272, 33.8351, -533.199, 145.272, 195.72, -533.199, 142.387, 33.8351, -535.64, 142.387, 195.72, -535.64, 136.179, 195.72, -532.443, 138.621, 195.72, -535.327, 138.621, 33.8351, -535.327, 136.179, 33.8351, -532.443, 136.492, 195.72, -528.677, 136.492, 33.8351, -528.677, 140.882, 218.697, -530.938, 179.193, 33.8351, -496.031, 175.426, 33.8351, -495.718, 175.426, 195.72, -495.718, 179.193, 195.72, -496.031, 181.634, 33.8351, -498.915, 181.634, 195.72, -498.915, 181.321, 33.8351, -502.682, 181.321, 195.72, -502.682, 178.437, 33.8351, -505.123, 178.437, 195.72, -505.123, 172.229, 195.72, -501.926, 174.671, 195.72, -504.81, 174.671, 33.8351, -504.81, 172.229, 33.8351, -501.926, 172.542, 195.72, -498.16, 172.542, 33.8351, -498.16, 176.932, 218.697, -500.421, 220.549, 33.8351, 404.788, 216.783, 33.8351, 405.101, 216.783, 195.72, 405.101, 220.549, 195.72, 404.788, 222.991, 33.8351, 401.904, 222.991, 195.72, 401.904, 222.678, 33.8351, 398.137, 222.678, 195.72, 398.137, 219.793, 33.8351, 395.696, 219.793, 195.72, 395.696, 213.585, 195.72, 398.893, 216.027, 195.72, 396.009, 216.027, 33.8351, 396.009, 213.585, 33.8351, 398.893, 213.898, 195.72, 402.659, 213.898, 33.8351, 402.659, 218.288, 218.697, 400.398, 227.117, 33.8351, 483.812, 223.35, 33.8351, 484.125, 223.35, 195.72, 484.125, 227.117, 195.72, 483.812, 229.558, 33.8351, 480.928, 229.558, 195.72, 480.928, 229.245, 33.8351, 477.162, 229.245, 195.72, 477.162, 226.361, 33.8351, 474.72, 226.361, 195.72, 474.72, 220.153, 195.72, 477.917, 222.595, 195.72, 475.033, 222.595, 33.8351, 475.033, 220.153, 33.8351, 477.917, 220.466, 195.72, 481.684, 220.466, 33.8351, 481.684, 224.856, 218.697, 479.423, 229.843, 33.8351, 516.615, 226.077, 33.8351, 516.928, 226.077, 195.72, 516.928, 229.843, 195.72, 516.615, 232.285, 33.8351, 513.73, 232.285, 195.72, 513.73, 231.972, 33.8351, 509.964, 231.972, 195.72, 509.964, 229.087, 33.8351, 507.522, 229.087, 195.72, 507.522, 222.879, 195.72, 510.72, 225.321, 195.72, 507.835, 225.321, 33.8351, 507.835, 222.879, 33.8351, 510.72, 223.192, 195.72, 514.486, 223.192, 33.8351, 514.486, 227.582, 218.697, 512.225, 256.598, 33.8351, 435.305, 252.832, 33.8351, 435.618, 252.832, 195.72, 435.618, 256.598, 195.72, 435.305, 259.04, 33.8351, 432.421, 259.04, 195.72, 432.421, 258.727, 33.8351, 428.655, 258.727, 195.72, 428.655, 255.843, 33.8351, 426.213, 255.843, 195.72, 426.213, 249.635, 195.72, 429.41, 252.076, 195.72, 426.526, 252.076, 33.8351, 426.526, 249.635, 33.8351, 429.41, 249.948, 195.72, 433.176, 249.948, 33.8351, 433.176, 254.337, 218.697, 430.915, 260.4, 33.8351, 481.046, 256.634, 33.8351, 481.359, 256.634, 195.72, 481.359, 260.4, 195.72, 481.046, 262.842, 33.8351, 478.162, 262.842, 195.72, 478.162, 262.529, 33.8351, 474.395, 262.529, 195.72, 474.395, 259.644, 33.8351, 471.954, 259.644, 195.72, 471.954, 253.436, 195.72, 475.151, 255.878, 195.72, 472.267, 255.878, 33.8351, 472.267, 253.436, 33.8351, 475.151, 253.749, 195.72, 478.917, 253.749, 33.8351, 478.917, 258.139, 218.697, 476.656, 263.126, 33.8351, 513.848, 259.36, 33.8351, 514.161, 259.36, 195.72, 514.161, 263.126, 195.72, 513.848, 265.568, 33.8351, 510.964, 265.568, 195.72, 510.964, 265.255, 33.8351, 507.198, 265.255, 195.72, 507.198, 262.371, 33.8351, 504.756, 262.371, 195.72, 504.756, 256.163, 195.72, 507.954, 258.604, 195.72, 505.069, 258.604, 33.8351, 505.069, 256.163, 33.8351, 507.954, 256.476, 195.72, 511.72, 256.476, 33.8351, 511.72, 260.865, 218.697, 509.459, 253.832, 33.8351, 402.022, 250.066, 33.8351, 402.335, 250.066, 195.72, 402.335, 253.832, 195.72, 402.022, 256.274, 33.8351, 399.137, 256.274, 195.72, 399.137, 255.961, 33.8351, 395.371, 255.961, 195.72, 395.371, 253.076, 33.8351, 392.929, 253.076, 195.72, 392.929, 246.868, 195.72, 396.127, 249.31, 195.72, 393.242, 249.31, 33.8351, 393.242, 246.868, 33.8351, 396.127, 247.181, 195.72, 399.893, 247.181, 33.8351, 399.893, 251.571, 218.697, 397.632, -69.8307, 149.676, -154.301, -7.2358, 50.5666, 611.918, -9.91693, 149.676, -159.281, -202.096, 134.483, -408.841, 14.0359, 169.516, 8.11887, 12.5157, 232.779, -10.1724, 4.85312, 249.267, 5.17962, 3.9441, 282.496, -5.75753, 4.85312, 282.496, 5.17962, -8.8037, 347.574, 0.80833, -4.4324, 249.267, -12.8485, -4.4324, 282.496, -12.8485, -2.23785, 282.496, 13.5561, -13.175, 282.496, 14.4651, -2.23785, 249.267, 13.5561, 2.17701, 232.779, 22.1277, -13.175, 249.267, 14.4651, -16.1142, 232.779, 23.6479, -15.3696, 249.267, -11.9395, -15.3696, 282.496, -11.9395, -1.49316, 232.779, -22.0313, -19.7844, 169.516, -20.5111, -1.49316, 169.516, -22.0313, -19.7844, 232.779, -20.5111, -30.1231, 232.779, 11.789, -21.5515, 249.267, 7.37418, -22.4605, 249.267, -3.56297, -31.6433, 232.779, -6.50222, -21.5515, 282.496, 7.37418, -22.4605, 282.496, -3.56297, -31.6433, 169.516, -6.50222, -30.1231, 169.516, 11.789, 2.17701, 169.516, 22.1277, 26.1317, 148.776, 11.9905, 7.99234, 148.776, 33.4183, -16.1142, 169.516, 23.6479, -19.9859, 148.776, 35.7437, -43.7391, 148.776, -10.3738, -25.5997, 148.776, -31.8017, -41.4137, 148.776, 17.6044, 2.37847, 148.776, -34.127, 23.8063, 148.776, -15.9877, 12.5157, 169.516, -10.1724, 14.0359, 232.779, 8.11887, 3.9441, 249.267, -5.75753, -257.204, 40.4525, 344.741, -295.478, 40.4525, 74.4789, -257.204, 84.3974, 344.741, -288.264, 40.4525, 73.1873, -31.475, 147.912, -86.4828, -31.475, 184.249, -86.4828, -45.2639, 191.819, -92.5267, -33.0266, 147.912, -106.789, -53.3327, 184.249, -105.237, -53.3327, 147.912, -105.237, -33.0266, 184.249, -106.789, -45.7372, 191.819, -98.7201, -39.5438, 191.819, -99.1933, -51.7811, 147.912, -84.9312, -51.7811, 184.249, -84.9312, -39.0706, 191.819, -93, -42.4039, 207.855, -95.86, 144.179, 161.038, -2.48781, 142.646, 199.954, -20.9381, 142.646, 161.038, -20.9381, 144.179, 199.954, -2.48781, 139.762, 204.459, -17.5318, 139.884, 204.459, -16.0641, 140.773, 204.459, -5.37128, 139.762, 220.704, -17.5318, 140.773, 220.704, -5.37128, 137.489, 225.209, -14.8464, 137.544, 225.209, -14.1809, 138.032, 225.209, -8.31005, 138.088, 225.209, -7.64459, 137.489, 236.372, -14.8464, 138.088, 236.372, -7.64459, 134.187, 251.149, -10.9462, 139.305, 204.459, -5.24929, 137.422, 225.209, -7.58929, 131.551, 225.209, -7.10134, 124.196, 161.038, -19.4046, 125.729, 199.954, -0.954356, 125.729, 161.038, -0.954356, 124.196, 199.954, -19.4046, 128.613, 204.459, -4.36058, 128.491, 204.459, -5.8283, 127.602, 204.459, -16.5212, 128.613, 220.704, -4.36058, 127.602, 220.704, -16.5212, 130.886, 225.209, -7.04604, 130.831, 225.209, -7.7115, 130.343, 225.209, -13.5824, 130.287, 225.209, -14.2478, 130.886, 236.372, -7.04604, 129.07, 204.459, -16.6431, 130.953, 225.209, -14.3031, 136.824, 225.209, -14.7911, 130.287, 236.372, -14.2478, 170.914, 179.055, 424.804, 175.704, 142.723, 428.859, 173.136, 142.723, 426.685, 173.136, 167.42, 426.685, 172.369, 167.42, 417.463, 170.914, 169.24, 424.804, 161.74, 142.723, 430.02, 169.528, 179.055, 423.631, 175.704, 111.316, 428.859, 163.915, 142.723, 427.451, 165.795, 179.055, 425.229, 166.969, 179.055, 423.843, 160.579, 142.723, 416.055, 161.74, 111.316, 430.02, 163.915, 167.42, 427.451, 165.795, 169.24, 425.229, 163.148, 142.723, 418.23, 172.369, 142.723, 417.463, 170.489, 179.055, 419.685, 169.315, 179.055, 421.071, 174.544, 142.723, 414.895, 174.544, 111.316, 414.895, 160.579, 111.316, 416.055, 163.148, 167.42, 418.23, 165.37, 169.24, 420.11, 170.489, 169.24, 419.685, 165.37, 179.055, 420.11, 168.142, 188.137, 422.457, 166.756, 179.055, 421.284, 29.4163, 179.319, 333.743, 30.5769, 179.319, 347.708, 28.0081, 179.319, 345.533, 27.2418, 179.319, 336.312, 25.7866, 215.652, 343.653, 24.4005, 215.652, 342.479, 24.1878, 215.652, 339.92, 25.3611, 215.652, 338.534, 29.4163, 147.912, 333.743, 30.5769, 147.912, 347.708, 28.0081, 204.017, 345.533, 27.2418, 204.017, 336.312, 25.7866, 205.836, 343.653, 25.3611, 205.836, 338.534, 23.0144, 224.734, 341.306, 20.6677, 215.652, 344.078, 21.841, 215.652, 342.692, 16.6125, 147.912, 348.868, 16.6125, 179.319, 348.868, 18.787, 204.017, 346.3, 18.787, 179.319, 346.3, 20.6677, 205.836, 344.078, 20.2422, 215.652, 338.959, 21.6283, 215.652, 340.132, 15.4519, 147.912, 334.904, 15.4519, 179.319, 334.904, 18.0207, 204.017, 337.078, 18.0207, 179.319, 337.078, 20.2422, 205.836, 338.959, 103.666, 142.723, -437.898, 104.827, 142.723, -423.934, 102.258, 142.723, -426.108, 101.491, 142.723, -435.329, 100.036, 179.055, -427.989, 98.6502, 179.055, -429.162, 98.4374, 179.055, -431.722, 99.6108, 179.055, -433.108, 103.666, 111.316, -437.898, 104.827, 111.316, -423.934, 102.258, 167.42, -426.108, 101.491, 167.42, -435.329, 100.036, 169.24, -427.989, 99.6108, 169.24, -433.108, 97.2641, 188.137, -430.336, 94.9173, 179.055, -427.563, 96.0907, 179.055, -428.95, 90.8622, 111.316, -422.773, 90.8622, 142.723, -422.773, 93.0367, 167.42, -425.342, 93.0367, 142.723, -425.342, 94.9173, 169.24, -427.563, 94.4919, 179.055, -432.682, 95.878, 179.055, -431.509, 89.7016, 111.316, -436.737, 89.7016, 142.723, -436.737, 92.2703, 167.42, -434.563, 92.2703, 142.723, -434.563, 94.4919, 169.24, -432.682, -243.109, 152.912, 360.646, -243.747, 50.5666, 355.77, -243.108, 50.5666, 360.648, -239.209, 152.912, 363.642, -239.209, 50.5666, 363.642, -240.75, 152.912, 351.871, -243.747, 152.912, 355.77, -240.75, 50.5666, 351.871, -133.001, 152.912, 349.744, -133.001, 50.5666, 349.744, -137.538, 152.912, 341.871, -136.9, 152.912, 346.747, -137.538, 50.5666, 341.871, -136.9, 50.5666, 346.747, -134.542, 152.912, 337.972, -129.666, 152.912, 337.334, -125.767, 152.912, 340.331, -125.129, 50.5666, 345.207, -125.767, 50.5666, 340.331, -129.666, 50.5666, 337.334, -134.542, 50.5666, 337.972, -128.125, 152.912, 349.106, -125.129, 152.912, 345.207, -128.125, 50.5666, 349.106, -235.874, 152.912, 351.233, -235.874, 50.5666, 351.233, -231.975, 152.912, 354.229, -231.975, 50.5666, 354.229, -234.334, 152.912, 363.004, -231.337, 152.912, 359.105, -234.334, 50.5666, 363.004, -231.337, 50.5666, 359.105, -219.538, 160.628, 135.254, -219.538, 174.535, 135.254, -222.986, 174.535, 143.816, -217.296, 160.628, 151.082, -222.986, 155.354, 143.816, -217.296, 174.535, 151.082, -212.727, 165.901, 150.435, -208.158, 160.628, 149.788, -204.71, 174.535, 141.227, -210.4, 160.628, 133.96, -204.71, 155.354, 141.227, -214.969, 165.901, 134.607, -311.769, 96.5762, 372.471, -311.769, 50.5666, 372.471, -312.64, 96.5762, 367.631, -309.835, 50.5666, 363.593, -312.64, 50.5666, 367.631, -309.835, 96.5762, 363.593, -307.73, 50.5666, 375.277, -307.73, 96.5762, 375.277, -300.956, 50.5666, 365.527, -304.995, 96.5762, 362.721, -304.995, 50.5666, 362.721, -300.956, 96.5762, 365.527, -306.363, 113.246, 368.999, -300.085, 96.5762, 370.367, -302.891, 96.5762, 374.405, -302.891, 50.5666, 374.405, -300.085, 50.5666, 370.367, -45.3636, 54.247, 345.121, -44.601, 152.16, 353.907, -45.3636, 152.16, 345.121, -37.8493, 54.247, 359.58, -44.601, 54.247, 353.907, -37.8493, 152.16, 359.58, -29.0634, 54.247, 358.818, -29.0634, 152.16, 358.818, -23.39, 152.16, 352.066, -24.1526, 54.247, 343.28, -23.39, 54.247, 352.066, -24.1526, 152.16, 343.28, -34.3768, 182.527, 348.594, -39.6902, 54.247, 338.37, -30.9043, 152.16, 337.607, -30.9043, 54.247, 337.607, -39.6902, 152.16, 338.37, -290.011, 158.084, 64.404, -281.33, 50.5666, 62.8495, -274.092, 50.5666, 67.8886, -281.33, 158.084, 62.8495, -274.092, 158.084, 67.8886, -295.05, 50.5666, 71.6414, -295.05, 158.084, 71.6414, -277.577, 158.084, 83.8068, -286.258, 158.084, 85.3613, -286.258, 50.5666, 85.3613, -293.495, 50.5666, 80.3222, -293.495, 158.084, 80.3222, -272.538, 50.5666, 76.5694, -277.577, 50.5666, 83.8068, -272.538, 158.084, 76.5694, -283.794, 192.531, 74.1054, -300.402, 158.084, 6.31589, -300.402, 50.5666, 6.31589, -291.722, 50.5666, 4.7614, -284.484, 50.5666, 9.80048, -291.722, 158.084, 4.7614, -284.484, 158.084, 9.80048, -305.442, 50.5666, 13.5533, -305.442, 158.084, 13.5533, -287.969, 158.084, 25.7187, -296.65, 158.084, 27.2732, -303.887, 50.5666, 22.2342, -303.887, 158.084, 22.2342, -282.93, 50.5666, 18.4813, -287.969, 50.5666, 25.7187, -282.93, 158.084, 18.4813, -294.186, 192.531, 16.0173, -185.063, 158.084, -14.3381, -185.063, 50.5666, -14.3381, -176.382, 50.5666, -15.8926, -169.145, 50.5666, -10.8535, -176.382, 158.084, -15.8926, -169.145, 158.084, -10.8535, -190.102, 50.5666, -7.10063, -190.102, 158.084, -7.10063, -172.629, 158.084, 5.06477, -181.31, 158.084, 6.61926, -181.31, 50.5666, 6.61926, -188.548, 50.5666, 1.58019, -188.548, 158.084, 1.58019, -167.59, 50.5666, -2.17267, -172.629, 50.5666, 5.06477, -167.59, 158.084, -2.17267, -178.846, 192.531, -4.63665, -17.0417, 251.063, 565.858, -13.0471, 251.063, 613.92, -14.7261, 261.5, 607.978, -13.5491, 261.5, 607.88, -17.0417, 299.063, 565.858, -14.0048, 299.063, 568.429, -13.0471, 299.063, 613.92, -10.7453, 299.063, 607.647, -13.5491, 299.063, 607.88, -13.6507, 299.063, 572.689, -17.6316, 308.351, 573.02, -0.957493, 359.989, 599.639, -4.36628, 362.017, 576.588, -2.31696, 362.017, 601.245, -2.76035, 359.989, 577.947, 8.89577, 414.735, 588, 8.87923, 414.735, 587.801, -10.4763, 299.063, 610.884, -2.76035, 344.118, 577.947, -16.4545, 261.5, 572.922, -16.4545, 299.063, 572.922, -14.7261, 308.351, 607.978, -17.6316, 261.5, 573.02, -0.957493, 344.118, 599.639, -13.7152, 50.5666, 568.674, -5.88522, 261.5, 614.51, -10.2311, 251.064, 610.594, 29.073, 308.351, 611.605, 28.9752, 261.5, 610.428, 28.9752, 299.063, 610.428, 28.7421, 299.063, 607.624, -5.98305, 299.063, 613.333, -6.21608, 299.063, 610.529, 28.7421, 308.351, 607.624, -5.98305, 261.5, 613.333, 29.073, 261.5, 611.605, -5.88522, 308.351, 614.51, -10.2311, 50.5666, 610.594, 23.8591, 308.351, 561.273, 23.957, 261.5, 562.45, -11.0013, 261.5, 565.356, 24.19, 299.063, 565.254, -10.7682, 299.063, 568.16, -11.0013, 299.063, 565.356, -13.7152, 251.064, 568.674, -11.0991, 261.5, 564.179, 23.957, 299.063, 562.45, 23.8591, 261.5, 561.273, -11.0991, 308.351, 564.179, 28.205, 50.5666, 565.19, 31.6891, 251.064, 607.11, 31.021, 251.063, 561.863, 32.7, 308.351, 567.806, 32.7, 261.5, 567.806, 31.523, 261.5, 567.904, 35.6055, 261.5, 602.764, 28.205, 251.064, 565.19, 34.4285, 299.063, 602.862, 31.6246, 299.063, 603.095, 22.3402, 362.017, 599.196, 20.2909, 362.017, 574.539, 20.7343, 359.989, 597.836, 9.07815, 414.735, 587.784, 9.09468, 414.735, 587.983, 28.7192, 299.063, 568.137, 28.4502, 299.063, 564.9, 31.9787, 299.063, 607.355, 18.9314, 344.118, 576.145, 18.9314, 359.989, 576.145, 31.021, 299.063, 561.863, 35.0156, 251.063, 609.926, 34.4285, 261.5, 602.862, 35.0156, 299.063, 609.926, 31.523, 299.063, 567.904, 35.6055, 308.351, 602.764, 20.7343, 344.118, 597.836, 31.6891, 50.5666, 607.11, -14.0048, 314.847, 568.429, -13.6507, 308.351, 572.689, 31.6246, 308.351, 603.095, 28.4502, 314.847, 564.9, 31.9787, 314.847, 607.355, -10.4763, 314.847, 610.884, -10.7682, 308.351, 568.16, -10.7453, 308.351, 607.647, -6.21601, 308.351, 610.529, 28.7192, 308.351, 568.137, 24.19, 308.351, 565.254, -6.50781, 147.912, -159.564, 218.896, 169.912, 436.231, -70.8679, 134.483, -167.875, 25.4772, 134.483, 565.147, 25.5573, 50.5666, 566.111, -202.096, 50.5666, -408.841, 141.49, 169.912, -495.105, 138.333, 169.912, -533.096, -37.1421, 143.22, -170.678, 156.995, 147.912, 151.703, -155.533, 134.483, -208.088, 171.047, 149.981, -139.487, -155.514, 134.483, -208.09, -36.0146, 147.912, -157.112, 171.048, 183.702, -139.464, -290.011, 50.5666, 64.404, -296.65, 50.5666, 27.2732, -7.2358, 73.2012, 611.918]; + uvs = new [0.261417, 0.694821, 0.322832, 0.577099, 0.320844, 0.590381, 0.277299, 0.588682, 0.32765, 0.544896, 0.4129, 0.564418, 0.454812, 0.566053, 0.454812, 0.566053, 0.4129, 0.564418, 0.617262, 0.514282, 0.615929, 0.522475, 0.617262, 0.514282, 0.410491, 0.580519, 0.410491, 0.580519, 0.321437, 0.242526, 0.440623, 0.239839, 0.622507, 0.531438, 0.328863, 0.823982, 0.68882, 0.47764, 0.686767, 0.490254, 0.507541, 0.460602, 0.514189, 0.460884, 0.415052, 0.486972, 0.466046, 0.538159, 0.478867, 0.459385, 0.411472, 0.508967, 0.411472, 0.508967, 0.252682, 0.753414, 0.579815, 0.369805, 0.565339, 0.369191, 0.564694, 0.373155, 0.546089, 0.351995, 0.546089, 0.351995, 0.433212, 0.34397, 0.41574, 0.482741, 0.560049, 0.50249, 0.561562, 0.49319, 0.620289, 0.495682, 0.620289, 0.495682, 0.517388, 0.589464, 0.459398, 0.537877, 0.480383, 0.538768, 0.493204, 0.459994, 0.670324, 0.591282, 0.670324, 0.591282, 0.511893, 0.634795, 0.513776, 0.623231, 0.547411, 0.389789, 0.547158, 0.391339, 0.548953, 0.380315, 0.467295, 0.38795, 0.547158, 0.391339, 0.366415, 0.447919, 0.273577, 0.438675, 0.280918, 0.345742, 0.400869, 0.357686, 0.276825, 0.361711, 0.29289, 0.36331, 0.46413, 0.407396, 0.288552, 0.247051, 0.26482, 0.332612, 0.133864, 0.456966, 0.288552, 0.247051, 0.290568, 0.239326, 0.122457, 0.445244, 0.0779767, 0.451853, 0.512964, 0.244414, 0.553863, 0.24615, 0.512964, 0.244414, 0.553863, 0.24615, 0.259812, 0.705551, 0.259812, 0.705551, 0.395066, 0.619408, 0.396803, 0.607802, 0.395427, 0.616993, 0.808089, 0.194274, 0.443322, 0.630705, 0.447694, 0.609788, 0.445974, 0.620353, 0.445974, 0.620353, 0.447694, 0.609788, 0.220354, 0.819453, 0.455446, 0.883021, 0.454261, 0.890297, 0.454261, 0.890297, 0.735508, 0.38379, 0.736577, 0.377223, 0.266713, 0.659404, 0.244468, 0.65846, 0.222171, 0.657514, 0.725851, 0.376768, 0.725295, 0.380181, 0.74098, 0.242227, 0.565551, 0.269558, 0.595921, 0.270847, 0.487944, 0.622135, 0.511905, 0.623151, 0.511905, 0.623151, 0.701536, 0.6312, 0.510425, 0.218418, 0.127211, 0.456357, 0.127186, 0.456355, 0.490139, 0.025404, 0.490139, 0.025404, 0.438833, 0.250371, 0.251309, 0.612584, 0.272099, 0.623438, 0.268202, 0.499695, 0.247414, 0.502419, 0.24795, 0.498836, 0.218831, 0.678034, 0.68882, 0.47764, 0.622507, 0.531438, 0.613162, 0.588856, 0.631887, 0.540154, 0.275149, 0.603055, 0.395427, 0.616993, 0.395066, 0.619408, 0.444283, 0.630746, 0.393691, 0.628598, 0.396803, 0.607802, 0.322832, 0.577099, 0.415309, 0.548316, 0.287423, 0.521031, 0.277299, 0.588682, 0.330967, 0.52273, 0.31868, 0.697056, 0.329332, 0.625867, 0.557983, 0.515185, 0.572197, 0.529303, 0.447694, 0.609788, 0.275149, 0.603055, 0.320844, 0.590381, 0.796202, 0.716029, 0.761051, 0.686253, 0.814264, 0.466137, 0.779728, 0.464671, 0.445974, 0.620353, 0.487145, 0.622101, 0.244744, 0.806289, 0.242638, 0.820322, 0.315932, 0.756099, 0.315932, 0.756099, 0.742163, 0.518469, 0.74483, 0.502083, 0.787683, 0.415799, 0.415604, 0.483577, 0.412024, 0.505572, 0.459398, 0.537877, 0.501368, 0.539658, 0.557983, 0.515185, 0.31868, 0.697056, 0.261417, 0.694821, 0.266713, 0.659404, 0.218049, 0.682839, 0.244468, 0.65846, 0.246083, 0.510595, 0.265931, 0.664209, 0.221389, 0.662318, 0.266713, 0.659404, 0.264652, 0.672067, 0.415309, 0.548316, 0.4129, 0.564418, 0.330967, 0.52273, 0.32765, 0.544896, 0.411033, 0.511665, 0.287423, 0.521031, 0.207969, 0.74477, 0.246618, 0.507309, 0.636988, 0.505755, 0.635654, 0.513948, 0.638321, 0.497562, 0.621623, 0.487489, 0.701069, 0.498882, 0.717965, 0.491578, 0.71227, 0.526564, 0.681073, 0.52524, 0.6996, 0.604416, 0.710217, 0.539178, 0.49472, 0.539376, 0.615929, 0.522475, 0.720018, 0.478964, 0.703123, 0.486268, 0.491517, 0.600186, 0.698856, 0.608986, 0.46899, 0.608769, 0.697314, 0.61846, 0.695772, 0.627934, 0.488433, 0.619134, 0.452193, 0.582147, 0.493427, 0.588447, 0.466046, 0.538159, 0.49472, 0.539376, 0.501368, 0.539658, 0.487944, 0.622135, 0.695915, 0.530551, 0.67902, 0.537854, 0.517388, 0.589464, 0.515477, 0.601203, 0.678325, 0.542125, 0.709522, 0.543449, 0.634635, 0.523269, 0.631887, 0.540154, 0.719255, 0.635045, 0.597092, 0.738654, 0.525336, 0.735609, 0.643597, 0.750263, 0.66324, 0.629574, 0.66324, 0.629574, 0.695284, 0.630934, 0.523954, 0.772437, 0.597092, 0.738654, 0.15635, 0.473224, 0.761051, 0.686253, 0.770578, 0.627721, 0.179531, 0.501174, 0.6764, 0.263675, 0.709244, 0.265069, 0.74098, 0.242227, 0.791111, 0.193553, 0.776958, 0.385549, 0.74176, 0.384055, 0.74098, 0.242227, 0.324121, 0.232054, 0.433129, 0.228687, 0.710846, 0.255224, 0.713818, 0.236963, 0.0274191, 0.500448, 0.00597301, 0.500448, 0.0123914, 0.508302, 0.335115, 0.250162, 0.358733, 0.338992, 0.614915, 0.467203, 0.555046, 0.464662, 0.616844, 0.455351, 0.659669, 0.420529, 0.653747, 0.456917, 0.0274191, 0.511982, 0.896062, 0.169026, 0.885305, 0.168569, 0.88062, 0.197352, 0.759071, 0.414585, 0.1765, 0.490218, 0.0729971, 0.466075, 0.0680175, 0.480297, 0.11159, 0.484283, 0.140257, 0.497583, 0.107962, 0.494629, 0.0993746, 0.519697, 0.229217, 0.518336, 0.200274, 0.528642, 0.73479, 0.388202, 0.725497, 0.445296, 0.508817, 0.228263, 0.574857, 0.221153, 0.639305, 0.38415, 0.548953, 0.380315, 0.579815, 0.369805, 0.593606, 0.32065, 0.595914, 0.306469, 0.597632, 0.260332, 0.590163, 0.306225, 0.658459, 0.373907, 0.590163, 0.306225, 0.603372, 0.310968, 0.582462, 0.353539, 0.564694, 0.373155, 0.542796, 0.372225, 0.380716, 0.253209, 0.733248, 0.397677, 0.472219, 0.459103, 0.522061, 0.412516, 0.456807, 0.3923, 0.432884, 0.391285, 0.459376, 0.376513, 0.562115, 0.489795, 0.561562, 0.49319, 0.616844, 0.455351, 0.653747, 0.456917, 0.545869, 0.399264, 0.522061, 0.412516, 0.545869, 0.399264, 0.543563, 0.413428, 0.510425, 0.218418, 0.413631, 0.495702, 0.415604, 0.483577, 0.29289, 0.36331, 0.472219, 0.459103, 0.415604, 0.483577, 0.4637, 0.410039, 0.26482, 0.332612, 0.400869, 0.357686, 0.280918, 0.345742, 0.313132, 0.335945, 0.417705, 0.374745, 0.462578, 0.376649, 0.481572, 0.259949, 0.0721774, 0.491357, 0.0513719, 0.489455, 0.103477, 0.494219, 0.0685768, 0.440317, 0.119569, 0.455658, 0.131663, 0.446086, 0.305807, 0.240344, 0.184379, 0.397382, 0.187742, 0.385257, 0.273577, 0.438675, 0.0675733, 0.443936, 0.1074, 0.26032, 0.056753, 0.442946, 0.0685768, 0.440317, 0.0953313, 0.442764, 0.145218, 0.262906, 0.0434225, 0.217449, 0.184979, 0.218826, 0.139169, 0.229209, 0.188366, 0.205609, 0.270159, 0.211074, 0.263384, 0.237509, 0.312581, 0.213909, 0.18316, 0.490828, 0.246618, 0.507309, 0.403695, 0.219998, 0.0367566, 0.195477, 0.0219456, 0.254476, 0.0513719, 0.489455, 0.0429621, 0.444402, 0.0721774, 0.491357, 0.0589432, 0.445558, 0.0665493, 0.446108, 0.00691789, 0.26233, 0.0219456, 0.26601, 0.000499517, 0.254476, 0.1074, 0.271853, 0.043613, 0.433605, 0.0285579, 0.436865, 0.021516, 0.444402, 0.0672001, 0.435311, 0.417705, 0.374745, 0.462578, 0.376649, 0.467295, 0.38795, 0.542796, 0.372225, 0.534363, 0.365958, 0.493464, 0.364222, 0.990816, 0.173047, 0.999501, 0.314488, 0.641092, 0.37317, 0.641092, 0.37317, 0.515477, 0.601203, 0.621623, 0.487489, 0.673519, 0.489692, 0.686767, 0.490254, 0.687261, 0.405264, 0.687261, 0.405264, 0.731706, 0.407151, 0.731706, 0.407151, 0.885357, 0.16825, 0.885357, 0.16825, 0.861978, 0.135607, 0.890473, 0.136817, 0.890473, 0.136817, 0.717366, 0.847835, 0.740745, 0.880478, 0.730693, 0.413377, 0.787683, 0.415797, 0.6996, 0.604416, 0.727978, 0.60562, 0.75659, 0.606835, 0.75659, 0.606835, 0.82363, 0.194933, 0.82363, 0.194933, 0.82363, 0.194933, 0.73931, 0.819834, 0.722042, 0.819101, 0.759979, 0.384828, 0.74176, 0.384055, 0.838159, 0.105664, 0.736233, 0.635765, 0.694784, 0.634006, 0.694784, 0.634006, 0.688296, 0.825262, 0.653098, 0.823768, 0.523954, 0.772437, 0.745861, 0.849045, 0.199645, 0.879841, 0.208433, 0.825846, 0.328863, 0.823982, 0.31417, 0.830334, 0.454261, 0.890297, 0.458585, 0.863735, 0.459769, 0.856459, 0.873662, 0.975755, 0.769709, 0.945355, 0.747899, 0.999501, 0.168304, 0.892597, 0.0599866, 0.888, 0.0827204, 0.934924, 0.926481, 0.919329, 0.117147, 0.741578, 0.192363, 0.74477, 0.156483, 0.965221, 0.709881, 0.89382, 0.455446, 0.883021, 0.708697, 0.901095, 0.774356, 0.850254, 0.756578, 0.820567, 0.758952, 0.944898, 0.779033, 0.82152, 0.806959, 0.716485, 0.933201, 0.721843, 0.705274, 0.825982, 0.420225, 0.848574, 0.450078, 0.849841, 0.474572, 0.864101, 0.479687, 0.864318, 0.39259, 0.853608, 0.331012, 0.809666, 0.407826, 0.759999, 0.214338, 0.873489, 0.292943, 0.876825, 0.274329, 0.847556, 0.463676, 0.85466, 0.481739, 0.851708, 0.476709, 0.850971, 0.469458, 0.863884, 0.474488, 0.864621, 0.47151, 0.851274, 0.184952, 0.886192, 0.764503, 0.91079, 0.195995, 0.818343, 0.488483, 0.217487, 0.505114, 0.100662, 0.485281, 0.217351, 0.52948, 0.101742, 0.836582, 0.115353, 0.555306, 0.112074, 0.835098, 0.124475, 0.856862, 0.16704, 0.833483, 0.134398, 0.828367, 0.165831, 0.534039, 0.0927564, 0.510851, 0.0662531, 0.838159, 0.105664, 0.838067, 0.106231, 0.0374075, 0.18468, 0.0223524, 0.18794, 0.747371, 0.12374, 0.0153105, 0.195477, 0.909902, 0.0174446, 0.920659, 0.0179012, 0.436532, 0.0182449, 0.918075, 0.000499547, 0.436532, 0.00422072, 0.457906, 0.216137, 0.483451, 0.0647521, 0.438833, 0.250371, 0.485281, 0.217351, 0.470475, 0.0642014, 0.747377, 0.123704, 0.54604, 0.219929, 0.537809, 0.21958, 0.44703, 0.0233904, 0.490139, 0.025404, 0.485175, 0.0648252, 0.4836, 0.0638752, 0.838159, 0.105664, 0.534039, 0.0927564, 0.412373, 0.2273, 0.44703, 0.0233904, 0.145944, 0.202774, 0.373222, 0.207121, 0.312581, 0.213909, 0.403963, 0.0182449, 0.414575, 0.00779772, 0.966475, 0.00884318, 0.982091, 0.030954, 0.562898, 0.416422, 0.673519, 0.489692, 0.681052, 0.44341, 0.683715, 0.42705, 0.72816, 0.428936, 0.683715, 0.42705, 0.725497, 0.445296, 0.681052, 0.44341, 0.432884, 0.391285, 0.435453, 0.375498, 0.572197, 0.529303, 0.55872, 0.522026, 0.55872, 0.522026, 0.274329, 0.847556, 0.24216, 0.846191, 0.24216, 0.846191, 0.271655, 0.863984, 0.271655, 0.863984, 0.239486, 0.862618, 0.239486, 0.862618, 0.305382, 0.884328, 0.299477, 0.836685, 0.220871, 0.833349, 0.319004, 0.884556, 0.31782, 0.891832, 0.255347, 0.854146, 0.25875, 0.854291, 0.195995, 0.818343, 0.184952, 0.886192, 0.184952, 0.886192, 0.328863, 0.823982, 0.323327, 0.857994, 0.324511, 0.850718, 0.31782, 0.891832, 0.324511, 0.850718, 0.195995, 0.818343, 0.195995, 0.818343, 0.31782, 0.891832, 0.256907, 0.855087, 0.255065, 0.855884, 0.258467, 0.856028, 0.329332, 0.625867, 0.787846, 0.628454, 0.770578, 0.627721, 0.787846, 0.628454, 0.770578, 0.627721, 0.778319, 0.686986, 0.761051, 0.686253, 0.778319, 0.686986, 0.814264, 0.466137, 0.796996, 0.465404, 0.756578, 0.820567, 0.89515, 0.108083, 0.906525, 0.0381924, 0.89515, 0.108083, 0.764503, 0.91079, 0.764503, 0.91079, 0.779033, 0.82152, 0.76924, 0.881687, 0.89515, 0.108083, 0.88062, 0.197352, 0.88062, 0.197352, 0.763354, 0.917852, 0.538219, 0.0670765, 0.538339, 0.0663384, 0.31782, 0.891832, 0.707513, 0.908371, 0.327916, 0.89226, 0.428968, 0.630096, 0.444283, 0.630746, 0.407826, 0.759999, 0.393594, 0.847443, 0.415611, 0.712163, 0.428968, 0.630096, 0.39259, 0.853608, 0.747377, 0.123704, 0.730442, 0.227756, 0.562969, 0.115913, 0.54604, 0.219929, 0.562975, 0.115878, 0.562975, 0.115878, 0.624817, 0.884745, 0.244744, 0.806289, 0.252682, 0.753414, 0.415611, 0.712163, 0.323718, 0.708263, 0.323718, 0.708263, 0.44703, 0.0233904, 0.490139, 0.025404, 0.412373, 0.2273, 0.310888, 0.220518, 0.715421, 0.227118, 0.730442, 0.227756, 0.792499, 0.386209, 0.82363, 0.194933, 0.751774, 0.636425, 0.722042, 0.819101, 0.707513, 0.908371, 0.707513, 0.908371, 0.53804, 0.068173, 0.722042, 0.819101, 0.743783, 0.68552, 0.751774, 0.636425, 0.76924, 0.881687, 0.774356, 0.850254, 0.514189, 0.460884, 0.514189, 0.460884, 0.562115, 0.489795, 0.459398, 0.537877, 0.411472, 0.508967, 0.828367, 0.165831, 0.833483, 0.134398, 0.262592, 0.684729, 0.240653, 0.683798, 0.71225, 0.879268, 0.71225, 0.879268, 0.717366, 0.847835, 0.525336, 0.735609, 0.266025, 0.663631, 0.262592, 0.684729, 0.263373, 0.679925, 0.22011, 0.670176, 0.222171, 0.657514, 0.222171, 0.657514, 0.246061, 0.510731, 0.483451, 0.0647521, 0.470475, 0.0642014, 0.246083, 0.510595, 0.0549948, 0.479108, 0.064954, 0.450664, 0.143747, 0.497902, 0.147237, 0.498221, 0.756588, 0.606852, 0.75331, 0.626989, 0.751774, 0.636425, 0.792499, 0.386209, 0.792499, 0.386209, 0.481739, 0.851708, 0.488371, 0.855708, 0.476625, 0.851491, 0.476625, 0.851491, 0.47151, 0.851274, 0.463676, 0.85466, 0.462826, 0.859884, 0.488371, 0.855708, 0.487521, 0.860932, 0.487521, 0.860932, 0.479687, 0.864318, 0.469458, 0.863884, 0.462826, 0.859884, 0.749192, 0.191774, 0.743247, 0.228299, 0.749192, 0.191774, 0.707752, 0.375999, 0.729603, 0.241744, 0.707752, 0.375999, 0.658459, 0.373907, 0.6764, 0.263675, 0.567262, 0.259043, 0.547399, 0.352051, 0.552092, 0.35225, 0.550218, 0.37254, 0.550218, 0.37254, 0.639305, 0.38415, 0.565339, 0.369191, 0.595921, 0.270847, 0.597632, 0.260332, 0.587855, 0.320406, 0.587855, 0.320406, 0.582462, 0.353539, 0.593606, 0.32065, 0.602416, 0.316842, 0.595914, 0.306469, 0.602416, 0.316842, 0.603372, 0.310968, 0.565551, 0.269558, 0.552092, 0.35225, 0.567262, 0.259043, 0.568865, 0.249198, 0.335115, 0.250162, 0.313132, 0.335945, 0.358733, 0.338992, 0.313132, 0.335945, 0.447156, 0.257649, 0.433212, 0.34397, 0.394845, 0.373462, 0.366415, 0.447919, 0.447156, 0.257649, 0.380716, 0.253209, 0.358733, 0.338992, 0.472219, 0.459103, 0.481572, 0.259949, 0.488483, 0.217487, 0.488483, 0.217487, 0.494183, 0.583806, 0.613162, 0.588856, 0.494183, 0.583806, 0.558535, 0.51179, 0.720018, 0.478964, 0.493427, 0.588447, 0.447694, 0.609788, 0.452193, 0.582147, 0.634635, 0.523269, 0.709522, 0.543449, 0.6996, 0.604416, 0.698856, 0.608986, 0.678325, 0.542125, 0.730692, 0.41338, 0.72816, 0.428936, 0.730692, 0.41338, 0.456807, 0.3923, 0.459376, 0.376513, 0.435453, 0.375498, 0.462578, 0.376649, 0.472266, 0.87827, 0.624817, 0.884745, 0.472266, 0.87827, 0.474572, 0.864101, 0.528359, 0.745373, 0.528359, 0.745373, 0.595534, 0.748224, 0.595534, 0.748224, 0.528359, 0.745373, 0.615177, 0.627535, 0.615177, 0.627535, 0.613593, 0.637269, 0.489728, 0.770985, 0.525336, 0.735609, 0.643597, 0.750263, 0.541837, 0.634224, 0.541539, 0.636054, 0.541539, 0.636054, 0.543422, 0.624489, 0.543422, 0.624489, 0.511893, 0.634795, 0.511893, 0.634795, 0.642279, 0.777459, 0.489728, 0.770985, 0.642279, 0.777459, 0.660509, 0.778233, 0.653098, 0.823768, 0.660509, 0.778233, 0.562898, 0.416422, 0.659669, 0.420529, 0.547158, 0.391339, 0.394845, 0.373462, 0.394845, 0.373462, 0.276825, 0.361711, 0.466959, 0.621244, 0.457291, 0.620834, 0.513776, 0.623231, 0.541837, 0.634224, 0.613593, 0.637269, 0.541837, 0.634224, 0.412745, 0.405215, 0.412745, 0.405215, 0.46413, 0.407396, 0.480091, 0.410734, 0.480091, 0.410734, 0.4637, 0.410039, 0.501076, 0.411625, 0.543563, 0.413428, 0.555046, 0.464662, 0.614915, 0.467203, 0.328863, 0.823982, 0.331012, 0.809666, 0.557983, 0.515185, 0.501368, 0.539658, 0.227942, 0.465568, 0.227942, 0.465568, 0.0680175, 0.480297, 0.0779767, 0.451853, 0.290568, 0.239326, 0.305807, 0.240344, 0.181592, 0.232044, 0.184979, 0.218826, 0.266772, 0.224292, 0.266772, 0.224292, 0.270159, 0.211074, 0.310888, 0.220518, 0.310888, 0.220518, 0.41574, 0.482741, 0.193174, 0.462389, 0.288552, 0.247051, 0.0881467, 0.468666, 0.1074, 0.26032, 0.0268472, 0.254811, 0.0268472, 0.254811, 0.135312, 0.223732, 0.0363481, 0.216965, 0.0363481, 0.216965, 0.0422602, 0.222079, 0.0386721, 0.236372, 0.0953313, 0.442764, 0.150458, 0.244016, 0.154285, 0.230219, 0.154285, 0.230219, 0.181592, 0.232044, 0.263384, 0.237509, 0.263384, 0.237509, 0.222488, 0.234776, 0.139169, 0.229209, 0.154285, 0.230219, 0.181592, 0.232044, 0.145944, 0.202774, 0.188366, 0.205609, 0.44703, 0.0233904, 0.490139, 0.025404, 0.489146, 0.0312482, 0.412373, 0.2273, 0.412373, 0.2273, 0.442413, 0.229307, 0.442413, 0.229307, 0.184016, 0.501584, 0.175358, 0.500792, 0.21518, 0.504434, 0.21518, 0.504434, 0.141161, 0.221437, 0.411033, 0.511665, 0.290474, 0.500641, 0.290474, 0.500641, 0.118394, 0.484905, 0.493464, 0.364222, 0.534363, 0.365958, 0.697968, 0.517937, 0.538219, 0.0670765, 0.414947, 0.487613, 0.558535, 0.51179, 0.697968, 0.517937, 0.0339216, 0.255295, 0.729603, 0.241744, 0.749192, 0.191774, 0.447694, 0.609788, 0.511905, 0.623151, 0.487145, 0.622101, 0.595534, 0.748224, 0.15635, 0.473224, 0.890473, 0.136817, 0.75659, 0.606835, 0.838159, 0.105664, 0.751774, 0.636425, 0.443222, 0.224548, 0.537809, 0.21958, 0.76924, 0.881687, 0.538219, 0.0670765, 0.787683, 0.415799, 0.885357, 0.16825, 0.774356, 0.850254, 0.76924, 0.881687, 0.707752, 0.375999, 0.457291, 0.620834, 0.433129, 0.228687, 0.310888, 0.220518, 0.112136, 0.495011, 0.217195, 0.234423, 0.227782, 0.23513, 0.326805, 0.221582, 0.490139, 0.025404, 0.75659, 0.606835, 0.779728, 0.464671, 0.792499, 0.386209, 0.595534, 0.748224, 0.326805, 0.221582, 0.176042, 0.878473, 0.201256, 0.874351, 0.192685, 0.88285, 0.186978, 0.873745, 0.184113, 0.891348, 0.198391, 0.891954, 0.209327, 0.887227, 0.210514, 0.879936, 0.174856, 0.885764, 0.174856, 0.885764, 0.176042, 0.878473, 0.184113, 0.891348, 0.209327, 0.887227, 0.210514, 0.879936, 0.201256, 0.874351, 0.198391, 0.891954, 0.186978, 0.873745, 0.294631, 0.883506, 0.319846, 0.879384, 0.311274, 0.887883, 0.305567, 0.878778, 0.302702, 0.896381, 0.316981, 0.896987, 0.327916, 0.89226, 0.329103, 0.884969, 0.293445, 0.890797, 0.293445, 0.890797, 0.294631, 0.883506, 0.302702, 0.896381, 0.327916, 0.89226, 0.329103, 0.884969, 0.319846, 0.879384, 0.316981, 0.896987, 0.305567, 0.878778, 0.304488, 0.822947, 0.329702, 0.818826, 0.32113, 0.827325, 0.315423, 0.81822, 0.312558, 0.835823, 0.326837, 0.836429, 0.337772, 0.831702, 0.338959, 0.82441, 0.303301, 0.830239, 0.303301, 0.830239, 0.304488, 0.822947, 0.312558, 0.835823, 0.337772, 0.831702, 0.338959, 0.82441, 0.329702, 0.818826, 0.326837, 0.836429, 0.315423, 0.81822, 0.185899, 0.817914, 0.211113, 0.813793, 0.202541, 0.822291, 0.196834, 0.813187, 0.193969, 0.83079, 0.208248, 0.831396, 0.219183, 0.826669, 0.22037, 0.819377, 0.184712, 0.825206, 0.184712, 0.825206, 0.185899, 0.817914, 0.193969, 0.83079, 0.219183, 0.826669, 0.22037, 0.819377, 0.211113, 0.813793, 0.208248, 0.831396, 0.218049, 0.682839, 0.739761, 0.409338, 0.735507, 0.383792, 0.780045, 0.411048, 0.783429, 0.39025, 0.792498, 0.38621, 0.750525, 0.393042, 0.774696, 0.394068, 0.748495, 0.40552, 0.743145, 0.38854, 0.772665, 0.406547, 0.735537, 0.383604, 0.735537, 0.383604, 0.735537, 0.383604, 0.730663, 0.413564, 0.735537, 0.383604, 0.730663, 0.413564, 0.694788, 0.633982, 0.703856, 0.629946, 0.751778, 0.636402, 0.699601, 0.604402, 0.744139, 0.631656, 0.747523, 0.610858, 0.756591, 0.606822, 0.71462, 0.61365, 0.73879, 0.614676, 0.712589, 0.626128, 0.70724, 0.609148, 0.736759, 0.627154, 0.699632, 0.604212, 0.699632, 0.604212, 0.699632, 0.604212, 0.694757, 0.634172, 0.699632, 0.604212, 0.694757, 0.634172, 0.707543, 0.908187, 0.716591, 0.904276, 0.764533, 0.910606, 0.71222, 0.879453, 0.756874, 0.905985, 0.760162, 0.885783, 0.76921, 0.881872, 0.727278, 0.888456, 0.751448, 0.889481, 0.725305, 0.900577, 0.719879, 0.884073, 0.749475, 0.901603, 0.71225, 0.879269, 0.71225, 0.879269, 0.71225, 0.879269, 0.707513, 0.908371, 0.717366, 0.847836, 0.726413, 0.843924, 0.774356, 0.850254, 0.722042, 0.819101, 0.766697, 0.845634, 0.769985, 0.825431, 0.779033, 0.82152, 0.7371, 0.828104, 0.761271, 0.82913, 0.735128, 0.840226, 0.729701, 0.823722, 0.759298, 0.841252, 0.722072, 0.818917, 0.722072, 0.818917, 0.722072, 0.818917, 0.717336, 0.84802, 0.722072, 0.818917, 0.717336, 0.84802, 0.82366, 0.194749, 0.832708, 0.190838, 0.88065, 0.197168, 0.828337, 0.166015, 0.872991, 0.192548, 0.876279, 0.172345, 0.885327, 0.168434, 0.843395, 0.175018, 0.867565, 0.176044, 0.841422, 0.18714, 0.835996, 0.170635, 0.865592, 0.188165, 0.828367, 0.165831, 0.828367, 0.165831, 0.828367, 0.165831, 0.82363, 0.194933, 0.833483, 0.134398, 0.84253, 0.130487, 0.882814, 0.132197, 0.886102, 0.111994, 0.853217, 0.114667, 0.877388, 0.115692, 0.851245, 0.126788, 0.845818, 0.110284, 0.875415, 0.127814, 0.838189, 0.10548, 0.838189, 0.10548, 0.838189, 0.10548, 0.833453, 0.134582, 0.838189, 0.10548, 0.833453, 0.134582, 0.700579, 0.602766, 0.706229, 0.603006, 0.709892, 0.605216, 0.709422, 0.608101, 0.705095, 0.609971, 0.695783, 0.607522, 0.699446, 0.609731, 0.696252, 0.604637, 0.702837, 0.606369, 0.709422, 0.608101, 0.709892, 0.605216, 0.705095, 0.609971, 0.699446, 0.609731, 0.695783, 0.607522, 0.700579, 0.602766, 0.696252, 0.604637, 0.706229, 0.603006, 0.69635, 0.62875, 0.702, 0.62899, 0.705663, 0.6312, 0.705193, 0.634085, 0.700866, 0.635955, 0.691554, 0.633506, 0.695216, 0.635715, 0.692023, 0.630621, 0.698608, 0.632353, 0.705193, 0.634085, 0.705663, 0.6312, 0.700866, 0.635955, 0.695216, 0.635715, 0.691554, 0.633506, 0.69635, 0.62875, 0.692023, 0.630621, 0.702, 0.62899, 0.750508, 0.604885, 0.756157, 0.605125, 0.75982, 0.607335, 0.759351, 0.61022, 0.755024, 0.61209, 0.745711, 0.609641, 0.749374, 0.61185, 0.746181, 0.606756, 0.752766, 0.608488, 0.759351, 0.61022, 0.75982, 0.607335, 0.755024, 0.61209, 0.749374, 0.61185, 0.745711, 0.609641, 0.750508, 0.604885, 0.746181, 0.606756, 0.756157, 0.605125, 0.782187, 0.410244, 0.787837, 0.410483, 0.791499, 0.412693, 0.79103, 0.415578, 0.786703, 0.417449, 0.77739, 0.414999, 0.781053, 0.417209, 0.77786, 0.412114, 0.784445, 0.413846, 0.79103, 0.415578, 0.791499, 0.412693, 0.786703, 0.417449, 0.781053, 0.417209, 0.77739, 0.414999, 0.782187, 0.410244, 0.77786, 0.412114, 0.787837, 0.410483, 0.736488, 0.38214, 0.742137, 0.38238, 0.7458, 0.38459, 0.745331, 0.387475, 0.741004, 0.389345, 0.731691, 0.386896, 0.735354, 0.389105, 0.732161, 0.384011, 0.738746, 0.385743, 0.745331, 0.387475, 0.7458, 0.38459, 0.741004, 0.389345, 0.735354, 0.389105, 0.731691, 0.386896, 0.736488, 0.38214, 0.732161, 0.384011, 0.742137, 0.38238, 0.732258, 0.408125, 0.737908, 0.408364, 0.741571, 0.410574, 0.741101, 0.413459, 0.736775, 0.415329, 0.727462, 0.41288, 0.731125, 0.41509, 0.727931, 0.409995, 0.734517, 0.411727, 0.741101, 0.413459, 0.741571, 0.410574, 0.736775, 0.415329, 0.731125, 0.41509, 0.727462, 0.41288, 0.732258, 0.408125, 0.727931, 0.409995, 0.737908, 0.408364, 0.786416, 0.384259, 0.792066, 0.384499, 0.795729, 0.386709, 0.795259, 0.389594, 0.790932, 0.391464, 0.781619, 0.389015, 0.785282, 0.391225, 0.782089, 0.38613, 0.788674, 0.387862, 0.795259, 0.389594, 0.795729, 0.386709, 0.790932, 0.391464, 0.785282, 0.391225, 0.781619, 0.389015, 0.786416, 0.384259, 0.782089, 0.38613, 0.792066, 0.384499, 0.746279, 0.63087, 0.751928, 0.631109, 0.755591, 0.633319, 0.755121, 0.636204, 0.750795, 0.638074, 0.741482, 0.635625, 0.745145, 0.637835, 0.741952, 0.63274, 0.748537, 0.634472, 0.755121, 0.636204, 0.755591, 0.633319, 0.750795, 0.638074, 0.745145, 0.637835, 0.741482, 0.635625, 0.746279, 0.63087, 0.741952, 0.63274, 0.751928, 0.631109, 0.834996, 0.164421, 0.829346, 0.164181, 0.829346, 0.164181, 0.834996, 0.164421, 0.838659, 0.166631, 0.838659, 0.166631, 0.838189, 0.169516, 0.838189, 0.169516, 0.833862, 0.171386, 0.833862, 0.171386, 0.82455, 0.168937, 0.828212, 0.171147, 0.828212, 0.171147, 0.82455, 0.168937, 0.825019, 0.166052, 0.825019, 0.166052, 0.831604, 0.167784, 0.77451, 0.844939, 0.76886, 0.844699, 0.76886, 0.844699, 0.77451, 0.844939, 0.778173, 0.847148, 0.778173, 0.847148, 0.777703, 0.850033, 0.777703, 0.850033, 0.773376, 0.851904, 0.773376, 0.851904, 0.764064, 0.849454, 0.767727, 0.851664, 0.767727, 0.851664, 0.764064, 0.849454, 0.764534, 0.846569, 0.764534, 0.846569, 0.771119, 0.848301, 0.724582, 0.84282, 0.718932, 0.84258, 0.718932, 0.84258, 0.724582, 0.84282, 0.728245, 0.845029, 0.728245, 0.845029, 0.727775, 0.847914, 0.727775, 0.847914, 0.723448, 0.849785, 0.723448, 0.849785, 0.714136, 0.847335, 0.717798, 0.849545, 0.717798, 0.849545, 0.714136, 0.847335, 0.714605, 0.84445, 0.714605, 0.84445, 0.72119, 0.846182, 0.7786, 0.819811, 0.77295, 0.819571, 0.77295, 0.819571, 0.7786, 0.819811, 0.782263, 0.82202, 0.782263, 0.82202, 0.781793, 0.824905, 0.781793, 0.824905, 0.777466, 0.826776, 0.777466, 0.826776, 0.768154, 0.824327, 0.771817, 0.826536, 0.771817, 0.826536, 0.768154, 0.824327, 0.768623, 0.821442, 0.768623, 0.821442, 0.775208, 0.823173, 0.728671, 0.817692, 0.723022, 0.817452, 0.723022, 0.817452, 0.728671, 0.817692, 0.732334, 0.819901, 0.732334, 0.819901, 0.731865, 0.822786, 0.731865, 0.822786, 0.727538, 0.824657, 0.727538, 0.824657, 0.718225, 0.822207, 0.721888, 0.824417, 0.721888, 0.824417, 0.718225, 0.822207, 0.718695, 0.819322, 0.718695, 0.819322, 0.72528, 0.821054, 0.718879, 0.877859, 0.713229, 0.877619, 0.713229, 0.877619, 0.718879, 0.877859, 0.722542, 0.880068, 0.722542, 0.880068, 0.722072, 0.882953, 0.722072, 0.882953, 0.717745, 0.884824, 0.717745, 0.884824, 0.708433, 0.882375, 0.712095, 0.884584, 0.712095, 0.884584, 0.708433, 0.882375, 0.708902, 0.879489, 0.708902, 0.879489, 0.715487, 0.881221, 0.764658, 0.905474, 0.759008, 0.905234, 0.759008, 0.905234, 0.764658, 0.905474, 0.76832, 0.907684, 0.76832, 0.907684, 0.767851, 0.910569, 0.767851, 0.910569, 0.763524, 0.912439, 0.763524, 0.912439, 0.754211, 0.90999, 0.757874, 0.912199, 0.757874, 0.912199, 0.754211, 0.90999, 0.754681, 0.907105, 0.754681, 0.907105, 0.761266, 0.908837, 0.714729, 0.903355, 0.709079, 0.903115, 0.709079, 0.903115, 0.714729, 0.903355, 0.718392, 0.905565, 0.718392, 0.905565, 0.717922, 0.90845, 0.717922, 0.90845, 0.713596, 0.91032, 0.713596, 0.91032, 0.704283, 0.907871, 0.707946, 0.91008, 0.707946, 0.91008, 0.704283, 0.907871, 0.704752, 0.904986, 0.704752, 0.904986, 0.711337, 0.906718, 0.768807, 0.879978, 0.763158, 0.879738, 0.763158, 0.879738, 0.768807, 0.879978, 0.77247, 0.882187, 0.77247, 0.882187, 0.772001, 0.885072, 0.772001, 0.885072, 0.767674, 0.886943, 0.767674, 0.886943, 0.758361, 0.884494, 0.762024, 0.886703, 0.762024, 0.886703, 0.758361, 0.884494, 0.758831, 0.881609, 0.758831, 0.881609, 0.765416, 0.88334, 0.830846, 0.189918, 0.825196, 0.189678, 0.825196, 0.189678, 0.830846, 0.189918, 0.834509, 0.192127, 0.834509, 0.192127, 0.834039, 0.195012, 0.834039, 0.195012, 0.829712, 0.196883, 0.829712, 0.196883, 0.8204, 0.194433, 0.824063, 0.196643, 0.824063, 0.196643, 0.8204, 0.194433, 0.820869, 0.191548, 0.820869, 0.191548, 0.827454, 0.19328, 0.840699, 0.129382, 0.835049, 0.129142, 0.835049, 0.129142, 0.840699, 0.129382, 0.844362, 0.131592, 0.844362, 0.131592, 0.843892, 0.134477, 0.843892, 0.134477, 0.839565, 0.136347, 0.839565, 0.136347, 0.830253, 0.133898, 0.833915, 0.136107, 0.833915, 0.136107, 0.830253, 0.133898, 0.830722, 0.131013, 0.830722, 0.131013, 0.837307, 0.132745, 0.844788, 0.104254, 0.839139, 0.104014, 0.839139, 0.104014, 0.844788, 0.104254, 0.848451, 0.106464, 0.848451, 0.106464, 0.847982, 0.109349, 0.847982, 0.109349, 0.843655, 0.111219, 0.843655, 0.111219, 0.834342, 0.10877, 0.838005, 0.110979, 0.838005, 0.110979, 0.834342, 0.10877, 0.834812, 0.105885, 0.834812, 0.105885, 0.841397, 0.107617, 0.884924, 0.16654, 0.879275, 0.166301, 0.879275, 0.166301, 0.884924, 0.16654, 0.888587, 0.16875, 0.888587, 0.16875, 0.888118, 0.171635, 0.888118, 0.171635, 0.883791, 0.173505, 0.883791, 0.173505, 0.874478, 0.171056, 0.878141, 0.173266, 0.878141, 0.173266, 0.874478, 0.171056, 0.874948, 0.168171, 0.874948, 0.168171, 0.881533, 0.169903, 0.890627, 0.131501, 0.884977, 0.131261, 0.884977, 0.131261, 0.890627, 0.131501, 0.89429, 0.133711, 0.89429, 0.133711, 0.89382, 0.136596, 0.89382, 0.136596, 0.889493, 0.138466, 0.889493, 0.138466, 0.880181, 0.136017, 0.883844, 0.138226, 0.883844, 0.138226, 0.880181, 0.136017, 0.880651, 0.133132, 0.880651, 0.133132, 0.887235, 0.134864, 0.894717, 0.106373, 0.889067, 0.106133, 0.889067, 0.106133, 0.894717, 0.106373, 0.89838, 0.108583, 0.89838, 0.108583, 0.89791, 0.111468, 0.89791, 0.111468, 0.893583, 0.113338, 0.893583, 0.113338, 0.884271, 0.110889, 0.887933, 0.113099, 0.887933, 0.113099, 0.884271, 0.110889, 0.88474, 0.108004, 0.88474, 0.108004, 0.891325, 0.109736, 0.880774, 0.192037, 0.875125, 0.191797, 0.875125, 0.191797, 0.880774, 0.192037, 0.884437, 0.194246, 0.884437, 0.194246, 0.883968, 0.197131, 0.883968, 0.197131, 0.879641, 0.199002, 0.879641, 0.199002, 0.870328, 0.196552, 0.873991, 0.198762, 0.873991, 0.198762, 0.870328, 0.196552, 0.870798, 0.193667, 0.870798, 0.193667, 0.877383, 0.195399, 0.395247, 0.6182, 0.489146, 0.0312482, 0.485123, 0.622015, 0.196834, 0.813187, 0.521055, 0.493781, 0.518775, 0.507792, 0.50728, 0.496032, 0.505916, 0.50441, 0.50728, 0.496032, 0.486793, 0.499381, 0.493351, 0.509842, 0.493351, 0.509842, 0.496643, 0.489615, 0.480236, 0.488919, 0.496643, 0.489615, 0.503266, 0.483049, 0.480236, 0.488919, 0.475827, 0.481885, 0.476944, 0.509146, 0.476944, 0.509146, 0.49776, 0.516877, 0.470321, 0.515712, 0.49776, 0.516877, 0.470321, 0.515712, 0.454812, 0.490969, 0.46767, 0.494351, 0.466307, 0.502729, 0.452532, 0.504981, 0.46767, 0.494351, 0.466307, 0.502729, 0.452532, 0.504981, 0.454812, 0.490969, 0.503266, 0.483049, 0.5392, 0.490815, 0.511989, 0.4744, 0.475827, 0.481885, 0.470019, 0.472619, 0.434387, 0.507947, 0.461598, 0.524361, 0.437875, 0.486514, 0.503568, 0.526142, 0.535712, 0.512247, 0.518775, 0.507792, 0.521055, 0.493781, 0.505916, 0.50441, 0.114168, 0.235915, 0.056753, 0.442946, 0.114168, 0.235915, 0.0675733, 0.443936, 0.452784, 0.566249, 0.452784, 0.566249, 0.432099, 0.570879, 0.450457, 0.581804, 0.419995, 0.580616, 0.419995, 0.580616, 0.450457, 0.581804, 0.431389, 0.575623, 0.44068, 0.575986, 0.422323, 0.56506, 0.422323, 0.56506, 0.44139, 0.571241, 0.43639, 0.573432, 0.716284, 0.501906, 0.713983, 0.516039, 0.713983, 0.516039, 0.716284, 0.501906, 0.709658, 0.51343, 0.709841, 0.512306, 0.711174, 0.504115, 0.709658, 0.51343, 0.711174, 0.504115, 0.706248, 0.511373, 0.706331, 0.510863, 0.707063, 0.506366, 0.707146, 0.505856, 0.706248, 0.511373, 0.707146, 0.505856, 0.701295, 0.508385, 0.708972, 0.504021, 0.706147, 0.505814, 0.697341, 0.50544, 0.686306, 0.514865, 0.688607, 0.500731, 0.688607, 0.500731, 0.686306, 0.514865, 0.692932, 0.50334, 0.692749, 0.504465, 0.691416, 0.512656, 0.692932, 0.50334, 0.691416, 0.512656, 0.696342, 0.505397, 0.696259, 0.505907, 0.695527, 0.510405, 0.695444, 0.510914, 0.696342, 0.505397, 0.693618, 0.512749, 0.696443, 0.510957, 0.70525, 0.51133, 0.695444, 0.510914, 0.756389, 0.174585, 0.763575, 0.171478, 0.759721, 0.173144, 0.759721, 0.173144, 0.758572, 0.180208, 0.756389, 0.174585, 0.742627, 0.170589, 0.75431, 0.175483, 0.763575, 0.171478, 0.745889, 0.172557, 0.74871, 0.174259, 0.75047, 0.175321, 0.740886, 0.181286, 0.742627, 0.170589, 0.745889, 0.172557, 0.74871, 0.174259, 0.744739, 0.179621, 0.758572, 0.180208, 0.755751, 0.178506, 0.75399, 0.177444, 0.761834, 0.182175, 0.761834, 0.182175, 0.740886, 0.181286, 0.744739, 0.179621, 0.748072, 0.17818, 0.755751, 0.178506, 0.748072, 0.17818, 0.75223, 0.176382, 0.750151, 0.177281, 0.544127, 0.24434, 0.545869, 0.233643, 0.542015, 0.235309, 0.540865, 0.242373, 0.538683, 0.23675, 0.536603, 0.237648, 0.536284, 0.239609, 0.538044, 0.240671, 0.544127, 0.24434, 0.545869, 0.233643, 0.542015, 0.235309, 0.540865, 0.242373, 0.538683, 0.23675, 0.538044, 0.240671, 0.534524, 0.238547, 0.531004, 0.236424, 0.532764, 0.237485, 0.524921, 0.232754, 0.524921, 0.232754, 0.528183, 0.234722, 0.528183, 0.234722, 0.531004, 0.236424, 0.530365, 0.240345, 0.532445, 0.239446, 0.52318, 0.243451, 0.52318, 0.243451, 0.527033, 0.241786, 0.527033, 0.241786, 0.530365, 0.240345, 0.655509, 0.835446, 0.65725, 0.824749, 0.653397, 0.826415, 0.652247, 0.833478, 0.650065, 0.827855, 0.647985, 0.828754, 0.647666, 0.830715, 0.649426, 0.831776, 0.655509, 0.835446, 0.65725, 0.824749, 0.653397, 0.826415, 0.652247, 0.833478, 0.650065, 0.827855, 0.649426, 0.831776, 0.645906, 0.829653, 0.642386, 0.827529, 0.644146, 0.828591, 0.636302, 0.82386, 0.636302, 0.82386, 0.639565, 0.825827, 0.639565, 0.825827, 0.642386, 0.827529, 0.641747, 0.831451, 0.643827, 0.830552, 0.634561, 0.834557, 0.634561, 0.834557, 0.638415, 0.832891, 0.638415, 0.832891, 0.641747, 0.831451, 0.135312, 0.223732, 0.134355, 0.227467, 0.135312, 0.223731, 0.141161, 0.221437, 0.141161, 0.221437, 0.13885, 0.230454, 0.134355, 0.227467, 0.13885, 0.230454, 0.300484, 0.232083, 0.300484, 0.232083, 0.293678, 0.238114, 0.294635, 0.234379, 0.293678, 0.238114, 0.294635, 0.234379, 0.298174, 0.241101, 0.305488, 0.24159, 0.311337, 0.239294, 0.312294, 0.235559, 0.311337, 0.239294, 0.305488, 0.24159, 0.298174, 0.241101, 0.307799, 0.232572, 0.312294, 0.235559, 0.307799, 0.232572, 0.146165, 0.230943, 0.146165, 0.230943, 0.152014, 0.228647, 0.152014, 0.228647, 0.148475, 0.221925, 0.152971, 0.224912, 0.148475, 0.221925, 0.152971, 0.224912, 0.17067, 0.39639, 0.17067, 0.39639, 0.165497, 0.389832, 0.174033, 0.384265, 0.165497, 0.389832, 0.174033, 0.384265, 0.180887, 0.384761, 0.187742, 0.385257, 0.192914, 0.391815, 0.184379, 0.397382, 0.192914, 0.391815, 0.177524, 0.396886, 0.0323144, 0.214673, 0.0323144, 0.214673, 0.0310069, 0.218381, 0.0352161, 0.221474, 0.0310069, 0.218381, 0.0352161, 0.221474, 0.0383726, 0.212524, 0.0383726, 0.212524, 0.0485343, 0.219993, 0.0424761, 0.222142, 0.0424761, 0.222142, 0.0485343, 0.219993, 0.0404244, 0.217333, 0.0498419, 0.216285, 0.0456327, 0.213192, 0.0456327, 0.213192, 0.0498419, 0.216285, 0.43195, 0.235624, 0.433094, 0.228894, 0.43195, 0.235624, 0.443222, 0.224548, 0.433094, 0.228894, 0.443222, 0.224548, 0.456402, 0.225132, 0.456402, 0.225132, 0.464913, 0.230304, 0.463769, 0.237035, 0.464913, 0.230304, 0.463769, 0.237035, 0.448431, 0.232964, 0.440461, 0.240797, 0.45364, 0.241381, 0.45364, 0.241381, 0.440461, 0.240797, 0.064954, 0.450664, 0.077976, 0.451855, 0.088833, 0.447995, 0.077976, 0.451855, 0.088833, 0.447995, 0.0573948, 0.44512, 0.0573948, 0.44512, 0.0836057, 0.435801, 0.0705836, 0.43461, 0.0705836, 0.43461, 0.0597267, 0.43847, 0.0597267, 0.43847, 0.0911649, 0.441345, 0.0836057, 0.435801, 0.0911649, 0.441345, 0.0742798, 0.443232, 0.0493651, 0.495162, 0.0493651, 0.495162, 0.0623872, 0.496352, 0.0732442, 0.492492, 0.0623872, 0.496352, 0.0732442, 0.492492, 0.041806, 0.489618, 0.041806, 0.489618, 0.0680169, 0.480298, 0.0549948, 0.479108, 0.0441379, 0.482968, 0.0441379, 0.482968, 0.075576, 0.485843, 0.0680169, 0.480298, 0.075576, 0.485843, 0.058691, 0.48773, 0.222386, 0.510983, 0.222386, 0.510983, 0.235408, 0.512174, 0.246265, 0.508314, 0.235408, 0.512174, 0.246265, 0.508314, 0.214827, 0.505439, 0.214827, 0.505439, 0.241038, 0.49612, 0.228016, 0.494929, 0.228016, 0.494929, 0.217159, 0.498789, 0.217159, 0.498789, 0.248597, 0.501664, 0.241038, 0.49612, 0.248597, 0.501664, 0.231712, 0.503552, 0.474436, 0.0665321, 0.480428, 0.0297143, 0.477909, 0.0342666, 0.479675, 0.0343416, 0.474436, 0.0665321, 0.478991, 0.0645628, 0.480428, 0.0297143, 0.483881, 0.03452, 0.479675, 0.0343416, 0.479523, 0.0612993, 0.473551, 0.0610459, 0.498564, 0.0406544, 0.49345, 0.0583125, 0.496524, 0.0394242, 0.495859, 0.0572711, 0.513345, 0.0495707, 0.51332, 0.0497231, 0.484285, 0.0320407, 0.495859, 0.0572711, 0.475317, 0.0611209, 0.475317, 0.0611209, 0.477909, 0.0342666, 0.473551, 0.0610459, 0.498564, 0.0406544, 0.479426, 0.064375, 0.491172, 0.0292625, 0.484652, 0.0322626, 0.543613, 0.0314882, 0.543466, 0.0323898, 0.543466, 0.0323898, 0.543116, 0.0345377, 0.491025, 0.0301641, 0.490675, 0.032312, 0.543116, 0.0345377, 0.491025, 0.0301641, 0.543613, 0.0314882, 0.491172, 0.0292625, 0.484652, 0.0322626, 0.535791, 0.070044, 0.535938, 0.0691425, 0.483497, 0.0669167, 0.536288, 0.0669946, 0.483847, 0.0647689, 0.483497, 0.0669167, 0.479426, 0.064375, 0.48335, 0.0678184, 0.535938, 0.0691425, 0.535791, 0.070044, 0.48335, 0.0678184, 0.542311, 0.0670439, 0.547537, 0.0349315, 0.546535, 0.0695921, 0.549054, 0.0650399, 0.549054, 0.0650399, 0.547288, 0.064965, 0.553412, 0.0382606, 0.542311, 0.0670439, 0.551646, 0.0381857, 0.54744, 0.0380071, 0.533513, 0.040994, 0.530439, 0.0598823, 0.531104, 0.0420355, 0.513618, 0.0497358, 0.513643, 0.0495834, 0.543082, 0.0647864, 0.542678, 0.0672658, 0.547971, 0.0347438, 0.528399, 0.0586522, 0.528399, 0.0586522, 0.546535, 0.0695921, 0.552527, 0.0327744, 0.551646, 0.0381857, 0.552527, 0.0327744, 0.547288, 0.064965, 0.553412, 0.0382606, 0.531104, 0.0420355, 0.547537, 0.0349315, 0.478991, 0.0645628, 0.479523, 0.0612994, 0.54744, 0.0380071, 0.542678, 0.0672658, 0.547971, 0.0347438, 0.484285, 0.0320407, 0.483847, 0.0647689, 0.483881, 0.03452, 0.490675, 0.032312, 0.543082, 0.0647864, 0.536288, 0.0669945, 0.490237, 0.622232, 0.828367, 0.165831, 0.393691, 0.628598, 0.538219, 0.0670765, 0.538339, 0.0663384, 0.196834, 0.813187, 0.71225, 0.879268, 0.707513, 0.908371, 0.444283, 0.630746, 0.735508, 0.38379, 0.266685, 0.659403, 0.756588, 0.606852, 0.266713, 0.659404, 0.445974, 0.620353, 0.75659, 0.606835, 0.064954, 0.450664, 0.0549948, 0.479108, 0.489146, 0.0312482]; + indices = new [0, 151, 126, 151, 0, 152, 2, 1, 132, 1, 2, 121, 3, 2, 132, 2, 3, 124, 125, 166, 163, 166, 125, 123, 4, 163, 164, 163, 4, 125, 5, 161, 162, 161, 5, 122, 5, 7, 8, 5, 6, 7, 5, 162, 6, 115, 3, 131, 3, 115, 124, 9, 180, 10, 180, 9, 11, 1, 189, 677, 189, 12, 13, 1, 12, 189, 1, 121, 12, 838, 223, 14, 787, 455, 15, 671, 112, 113, 112, 671, 16, 161, 4, 164, 4, 161, 122, 120, 808, 676, 808, 131, 130, 131, 73, 115, 808, 73, 131, 120, 73, 808, 117, 119, 1817, 73, 120, 74, 12, 8, 13, 8, 12, 5, 488, 742, 487, 742, 488, 128, 508, 17, 510, 17, 508, 740, 19, 18, 351, 18, 19, 111, 21, 20, 582, 285, 22, 802, 22, 285, 146, 192, 149, 193, 149, 192, 179, 148, 191, 584, 191, 148, 23, 270, 24, 666, 107, 109, 796, 25, 147, 585, 147, 284, 802, 123, 795, 166, 795, 123, 796, 794, 26, 165, 26, 794, 25, 141, 559, 142, 141, 27, 559, 27, 546, 417, 141, 546, 27, 218, 806, 630, 806, 218, 222, 29, 28, 0x0101, 28, 29, 640, 637, 266, 30, 267, 638, 341, 266, 638, 267, 637, 638, 266, 341, 31, 267, 31, 341, 32, 33, 231, 660, 231, 33, 665, 285, 757, 288, 757, 285, 34, 36, 35, 803, 37, 172, 38, 172, 37, 349, 39, 675, 197, 675, 39, 190, 6, 584, 7, 584, 6, 40, 191, 192, 41, 191, 179, 192, 191, 23, 179, 20, 24, 42, 682, 43, 44, 43, 682, 199, 114, 201, 202, 201, 114, 678, 210, 698, 382, 698, 210, 694, 45, 726, 711, 726, 45, 46, 48, 47, 720, 47, 48, 49, 50, 720, 51, 50, 48, 720, 50, 340, 48, 52, 306, 662, 306, 52, 53, 291, 54, 292, 54, 291, 55, 55, 661, 722, 661, 55, 291, 292, 723, 56, 723, 292, 54, 57, 53, 286, 53, 57, 306, 732, 289, 58, 732, 735, 289, 732, 50, 735, 732, 340, 50, 290, 59, 60, 290, 759, 59, 290, 744, 759, 290, 745, 744, 655, 759, 62, 655, 59, 759, 655, 230, 59, 759, 63, 62, 63, 759, 748, 656, 290, 60, 290, 656, 293, 769, 310, 311, 769, 300, 310, 769, 64, 300, 747, 100, 101, 747, 301, 100, 747, 65, 301, 67, 66, 68, 66, 67, 69, 70, 0, 71, 0, 70, 152, 73, 72, 1817, 72, 73, 74, 807, 75, 627, 1823, 544, 76, 544, 411, 547, 1823, 411, 544, 411, 137, 826, 1823, 137, 411, 77, 79, 80, 77, 78, 79, 77, 1828, 78, 81, 140, 0x0200, 82, 84, 83, 85, 90, 86, 90, 631, 825, 85, 631, 90, 1824, 631, 85, 1825, 87, 1827, 89, 88, 599, 87, 88, 89, 1825, 88, 87, 630, 90, 825, 90, 75, 91, 630, 75, 90, 75, 92, 627, 630, 92, 75, 641, 93, 651, 93, 641, 94, 74, 1414, 72, 95, 138, 1815, 138, 95, 1416, 1823, 1828, 118, 1828, 1823, 78, 95, 725, 1416, 95, 78, 725, 79, 809, 97, 78, 809, 79, 78, 1815, 809, 95, 1815, 78, 809, 46, 97, 98, 379, 209, 271, 42, 736, 271, 20, 42, 271, 582, 20, 669, 99, 460, 99, 669, 430, 812, 100, 758, 812, 101, 100, 1415, 102, 1832, 102, 1415, 103, 104, 827, 787, 104, 832, 827, 104, 14, 832, 105, 1414, 106, 108, 107, 105, 107, 108, 109, 110, 588, 906, 588, 110, 596, 111, 482, 674, 482, 111, 483, 44, 114, 682, 673, 487, 742, 9, 487, 673, 9, 486, 487, 10, 486, 9, 10, 112, 486, 678, 112, 10, 114, 112, 678, 44, 112, 114, 44, 113, 112, 116, 115, 73, 116, 105, 115, 116, 1414, 105, 117, 106, 1414, 117, 517, 106, 117, 1817, 517, 1828, 120, 676, 117, 545, 119, 74, 545, 117, 120, 545, 74, 1828, 545, 120, 5, 4, 122, 238, 409, 408, 238, 345, 409, 238, 344, 345, 548, 127, 549, 548, 126, 127, 548, 0, 126, 548, 71, 0, 488, 743, 128, 743, 671, 670, 488, 671, 743, 671, 129, 16, 488, 129, 671, 130, 1, 677, 130, 132, 1, 130, 3, 132, 130, 131, 3, 536, 408, 133, 536, 238, 408, 536, 239, 238, 526, 520, 521, 520, 526, 525, 372, 577, 134, 577, 372, 576, 405, 134, 524, 134, 405, 372, 518, 523, 519, 518, 522, 523, 522, 533, 527, 518, 533, 522, 533, 135, 240, 518, 135, 533, 412, 1416, 810, 412, 826, 1416, 412, 411, 826, 81, 139, 140, 139, 81, 559, 561, 546, 141, 546, 561, 560, 70, 142, 559, 142, 70, 562, 143, 368, 366, 144, 368, 143, 241, 368, 144, 145, 368, 241, 716, 712, 715, 716, 691, 712, 425, 424, 693, 690, 424, 425, 690, 625, 424, 426, 423, 616, 426, 547, 423, 618, 547, 426, 547, 390, 550, 618, 390, 547, 625, 390, 618, 690, 390, 625, 690, 402, 390, 690, 401, 402, 691, 401, 690, 716, 401, 691, 571, 410, 377, 572, 410, 571, 592, 410, 572, 590, 410, 592, 401, 410, 590, 716, 410, 401, 106, 153, 1825, 595, 151, 152, 594, 151, 595, 153, 151, 594, 106, 151, 153, 106, 517, 151, 153, 594, 1825, 154, 589, 81, 105, 155, 599, 589, 595, 152, 589, 152, 70, 589, 70, 559, 589, 559, 81, 105, 106, 155, 106, 1825, 155, 108, 156, 321, 156, 105, 599, 108, 105, 156, 598, 157, 158, 157, 598, 159, 110, 160, 596, 160, 110, 597, 157, 597, 158, 597, 157, 160, 81, 0x0200, 1417, 81, 1417, 154, 107, 115, 105, 107, 124, 115, 107, 123, 124, 107, 796, 123, 161, 6, 162, 161, 40, 6, 161, 26, 40, 161, 165, 26, 795, 163, 166, 165, 163, 795, 161, 163, 165, 161, 164, 163, 250, 399, 398, 399, 250, 249, 249, 167, 399, 249, 600, 167, 249, 603, 600, 249, 168, 603, 143, 171, 144, 143, 169, 171, 143, 170, 169, 144, 173, 174, 351, 171, 172, 173, 171, 351, 144, 171, 173, 175, 176, 804, 366, 175, 143, 366, 178, 175, 366, 679, 178, 366, 177, 679, 36, 169, 35, 169, 36, 38, 172, 169, 38, 169, 172, 171, 35, 11, 803, 11, 35, 169, 11, 170, 180, 170, 11, 169, 241, 684, 683, 181, 144, 174, 252, 144, 181, 684, 144, 252, 241, 144, 684, 181, 182, 18, 182, 174, 173, 174, 182, 181, 18, 173, 351, 173, 18, 182, 184, 183, 348, 184, 185, 183, 184, 186, 185, 185, 187, 188, 187, 185, 186, 8, 189, 13, 189, 8, 7, 190, 348, 183, 348, 190, 39, 185, 191, 41, 676, 724, 1828, 189, 724, 676, 7, 724, 189, 584, 724, 7, 191, 724, 584, 185, 724, 191, 190, 192, 193, 41, 183, 185, 192, 183, 41, 190, 183, 192, 1416, 188, 194, 1416, 185, 188, 1416, 724, 185, 178, 196, 195, 681, 199, 200, 681, 43, 199, 672, 197, 675, 43, 197, 672, 681, 197, 43, 681, 198, 197, 804, 143, 175, 804, 170, 143, 170, 201, 180, 170, 176, 201, 804, 176, 170, 195, 196, 176, 176, 800, 195, 178, 195, 800, 800, 175, 178, 196, 201, 176, 196, 202, 201, 196, 679, 202, 196, 178, 679, 377, 380, 203, 380, 377, 410, 45, 96, 46, 810, 423, 412, 1815, 423, 810, 96, 423, 1815, 45, 423, 96, 727, 204, 205, 204, 727, 701, 699, 206, 697, 206, 699, 207, 208, 187, 209, 188, 1815, 194, 187, 1815, 188, 208, 1815, 187, 694, 211, 811, 211, 694, 703, 726, 707, 711, 707, 726, 708, 379, 208, 209, 717, 380, 381, 704, 380, 717, 208, 380, 704, 379, 380, 208, 379, 203, 380, 709, 728, 729, 728, 709, 700, 139, 740, 140, 740, 139, 741, 812, 242, 606, 242, 320, 606, 213, 609, 214, 213, 578, 609, 213, 577, 578, 835, 521, 609, 521, 835, 526, 320, 607, 606, 320, 790, 607, 320, 215, 790, 218, 568, 627, 216, 825, 632, 217, 825, 216, 217, 630, 825, 567, 630, 217, 568, 630, 567, 218, 630, 568, 75, 626, 628, 626, 75, 219, 75, 374, 219, 374, 75, 220, 219, 222, 626, 15, 224, 787, 15, 838, 224, 15, 223, 838, 223, 455, 14, 455, 223, 15, 225, 567, 217, 567, 225, 226, 353, 480, 481, 480, 353, 354, 227, 229, 228, 59, 656, 60, 656, 59, 230, 664, 660, 231, 660, 664, 663, 234, 235, 236, 234, 718, 235, 718, 232, 233, 234, 232, 718, 227, 237, 229, 75, 836, 220, 75, 570, 836, 75, 586, 570, 75, 587, 586, 75, 436, 587, 435, 459, 818, 435, 555, 459, 436, 555, 435, 436, 458, 555, 458, 627, 568, 458, 807, 627, 436, 807, 458, 75, 807, 436, 812, 758, 34, 812, 794, 242, 812, 797, 243, 243, 797, 244, 245, 829, 247, 245, 246, 829, 245, 606, 246, 248, 237, 227, 249, 248, 227, 248, 249, 250, 346, 251, 639, 631, 251, 346, 1824, 251, 631, 479, 252, 478, 252, 479, 684, 226, 254, 567, 459, 253, 818, 254, 253, 459, 226, 253, 254, 637, 0xFF, 0x0100, 347, 633, 262, 260, 259, 261, 260, 650, 259, 633, 650, 260, 347, 650, 633, 0xFF, 650, 347, 0xFF, 647, 650, 0xFF, 258, 647, 0xFF, 643, 258, 0xFF, 0x0101, 643, 0xFF, 29, 0x0101, 0xFF, 30, 29, 637, 30, 0xFF, 634, 641, 651, 641, 634, 642, 649, 648, 264, 646, 648, 649, 646, 263, 648, 644, 263, 646, 31, 266, 267, 266, 31, 640, 655, 657, 658, 657, 655, 268, 216, 225, 217, 216, 654, 225, 216, 653, 654, 47, 251, 269, 47, 639, 251, 47, 49, 639, 733, 24, 270, 733, 42, 24, 733, 736, 42, 485, 272, 273, 272, 485, 274, 720, 355, 281, 720, 269, 355, 720, 47, 269, 54, 722, 723, 722, 54, 55, 736, 51, 282, 736, 50, 51, 736, 735, 50, 818, 253, 283, 812, 25, 794, 812, 147, 25, 812, 284, 147, 812, 606, 797, 245, 797, 606, 812, 802, 284, 812, 285, 802, 812, 34, 285, 295, 659, 296, 295, 33, 659, 757, 661, 291, 757, 52, 661, 757, 53, 52, 745, 53, 757, 290, 53, 745, 53, 56, 286, 290, 56, 53, 290, 292, 56, 293, 292, 290, 293, 291, 292, 665, 291, 293, 33, 291, 665, 757, 287, 288, 287, 289, 734, 757, 289, 287, 757, 58, 289, 757, 731, 58, 291, 731, 757, 291, 294, 731, 33, 294, 291, 295, 294, 33, 245, 604, 746, 298, 299, 297, 604, 299, 298, 245, 299, 604, 245, 247, 299, 812, 243, 101, 655, 303, 14, 655, 63, 303, 655, 62, 63, 1640, 1633, 1634, 1633, 1640, 304, 662, 57, 721, 57, 662, 306, 308, 307, 309, 308, 310, 307, 308, 311, 310, 308, 312, 311, 777, 313, 764, 767, 770, 0x0300, 313, 770, 767, 777, 770, 313, 777, 772, 770, 308, 770, 312, 308, 0x0300, 770, 308, 805, 0x0300, 765, 805, 762, 805, 765, 313, 774, 314, 752, 314, 774, 773, 750, 780, 316, 750, 793, 780, 750, 315, 793, 317, 749, 318, 317, 755, 749, 317, 319, 755, 781, 753, 751, 753, 781, 754, 321, 109, 108, 109, 320, 796, 320, 789, 215, 320, 791, 789, 109, 791, 320, 321, 791, 109, 243, 747, 101, 471, 467, 756, 467, 471, 322, 1602, 469, 1604, 1602, 323, 469, 323, 763, 324, 323, 766, 763, 1602, 766, 323, 1830, 328, 329, 249, 792, 168, 249, 327, 792, 249, 325, 327, 227, 325, 249, 326, 325, 227, 328, 325, 326, 328, 1831, 325, 1830, 1831, 328, 324, 331, 330, 324, 330, 332, 447, 324, 332, 324, 447, 323, 333, 763, 761, 333, 324, 763, 333, 331, 324, 334, 326, 335, 326, 336, 335, 336, 227, 228, 227, 336, 326, 328, 337, 329, 328, 334, 337, 328, 326, 334, 484, 338, 688, 338, 484, 730, 66, 342, 343, 342, 66, 69, 0xFF, 346, 639, 346, 0xFF, 347, 681, 348, 198, 348, 681, 184, 172, 19, 351, 172, 477, 19, 477, 349, 350, 172, 349, 477, 582, 280, 581, 280, 582, 271, 281, 352, 279, 281, 353, 352, 281, 354, 353, 281, 355, 354, 437, 1816, 439, 1816, 356, 357, 437, 356, 1816, 437, 822, 356, 991, 358, 438, 358, 813, 359, 991, 813, 358, 991, 360, 813, 957, 383, 361, 383, 580, 404, 957, 580, 383, 957, 959, 580, 362, 1821, 591, 1821, 534, 819, 362, 534, 1821, 362, 579, 534, 363, 241, 683, 241, 821, 145, 363, 821, 241, 363, 364, 821, 366, 365, 177, 365, 814, 1829, 366, 814, 365, 366, 368, 814, 537, 370, 371, 537, 570, 370, 537, 369, 570, 537, 240, 369, 372, 572, 576, 373, 963, 960, 572, 963, 373, 372, 963, 572, 533, 405, 527, 963, 405, 533, 372, 405, 963, 908, 569, 911, 836, 374, 220, 569, 374, 836, 374, 1824, 375, 569, 1824, 374, 908, 1824, 569, 532, 573, 1822, 532, 574, 573, 532, 542, 574, 532, 428, 542, 815, 535, 376, 530, 442, 465, 535, 442, 530, 815, 442, 535, 1824, 85, 375, 816, 378, 610, 378, 203, 379, 816, 203, 378, 203, 571, 377, 816, 571, 203, 717, 698, 704, 698, 717, 382, 361, 362, 591, 362, 361, 383, 503, 384, 505, 384, 503, 385, 384, 509, 505, 509, 384, 496, 386, 385, 503, 385, 386, 387, 507, 388, 499, 388, 507, 389, 507, 390, 389, 507, 550, 390, 507, 508, 550, 391, 393, 392, 394, 396, 395, 397, 391, 392, 398, 394, 395, 394, 398, 399, 394, 400, 396, 401, 388, 402, 388, 401, 403, 383, 579, 362, 579, 383, 404, 393, 406, 392, 393, 538, 406, 393, 394, 538, 393, 400, 394, 408, 407, 133, 531, 392, 406, 407, 392, 531, 408, 392, 407, 408, 397, 392, 397, 408, 409, 413, 557, 692, 557, 713, 714, 713, 613, 615, 713, 620, 613, 557, 620, 713, 557, 622, 620, 557, 414, 622, 413, 414, 557, 17, 415, 510, 27, 416, 558, 417, 416, 27, 415, 416, 417, 17, 416, 415, 387, 509, 496, 509, 387, 386, 497, 490, 498, 490, 497, 420, 716, 380, 410, 380, 716, 381, 403, 499, 388, 403, 543, 499, 403, 574, 543, 499, 543, 513, 389, 402, 388, 402, 389, 390, 422, 421, 617, 421, 422, 614, 547, 412, 423, 412, 547, 411, 429, 167, 1820, 429, 399, 167, 538, 542, 428, 538, 541, 542, 538, 427, 541, 394, 427, 538, 399, 427, 394, 429, 427, 399, 431, 430, 432, 431, 283, 430, 431, 433, 283, 435, 434, 436, 434, 435, 433, 358, 822, 437, 822, 358, 359, 438, 437, 439, 437, 438, 358, 440, 431, 441, 1818, 440, 441, 440, 1818, 575, 442, 443, 440, 444, 323, 445, 553, 552, 554, 552, 553, 446, 323, 447, 445, 238, 448, 449, 238, 528, 448, 238, 239, 528, 451, 450, 452, 450, 448, 529, 451, 448, 450, 451, 449, 448, 431, 432, 453, 443, 431, 440, 443, 433, 431, 443, 434, 433, 441, 431, 454, 431, 453, 454, 453, 457, 454, 453, 817, 457, 455, 667, 268, 787, 667, 455, 817, 667, 787, 453, 667, 817, 667, 456, 669, 453, 456, 667, 432, 456, 453, 456, 430, 669, 430, 456, 432, 602, 1832, 601, 602, 462, 1832, 602, 461, 462, 461, 788, 786, 602, 788, 461, 1415, 463, 464, 1415, 820, 463, 820, 465, 466, 465, 529, 530, 820, 529, 465, 450, 467, 322, 450, 468, 467, 529, 468, 450, 529, 564, 468, 820, 564, 529, 1415, 564, 820, 471, 470, 322, 444, 469, 323, 470, 469, 444, 470, 781, 469, 470, 754, 781, 471, 754, 470, 433, 818, 283, 818, 433, 435, 472, 322, 470, 322, 472, 450, 450, 472, 473, 450, 473, 452, 474, 449, 451, 475, 449, 474, 449, 344, 238, 344, 449, 475, 738, 718, 233, 718, 738, 476, 481, 352, 353, 350, 483, 477, 352, 483, 350, 352, 478, 483, 481, 478, 352, 481, 479, 478, 480, 479, 481, 479, 480, 684, 478, 482, 483, 482, 478, 252, 688, 273, 484, 273, 688, 485, 129, 112, 16, 112, 129, 486, 129, 487, 486, 487, 129, 488, 489, 490, 420, 490, 489, 491, 492, 420, 493, 420, 492, 489, 493, 494, 492, 494, 493, 495, 495, 491, 494, 491, 495, 490, 419, 387, 496, 387, 419, 497, 497, 385, 387, 385, 497, 498, 384, 419, 496, 419, 384, 418, 385, 418, 384, 418, 385, 498, 499, 513, 500, 491, 515, 494, 515, 491, 501, 494, 516, 492, 516, 494, 515, 516, 489, 492, 489, 516, 502, 489, 501, 491, 501, 489, 502, 504, 503, 505, 503, 504, 511, 506, 503, 511, 503, 506, 386, 0x0200, 506, 511, 0x0200, 740, 506, 0x0200, 140, 740, 506, 499, 500, 506, 507, 499, 506, 508, 507, 506, 740, 508, 509, 506, 500, 506, 509, 386, 504, 509, 500, 509, 504, 505, 550, 510, 415, 510, 550, 508, 511, 429, 0x0200, 511, 427, 429, 511, 504, 427, 513, 504, 500, 513, 427, 504, 513, 541, 427, 0x0202, 501, 502, 0x0202, 515, 501, 0x0202, 516, 515, 502, 516, 0x0202, 151, 127, 126, 127, 151, 517, 533, 133, 407, 533, 536, 133, 533, 240, 536, 520, 609, 521, 520, 214, 609, 214, 518, 519, 520, 518, 214, 577, 524, 134, 522, 213, 523, 524, 213, 522, 577, 213, 524, 835, 525, 526, 835, 135, 525, 835, 136, 135, 520, 135, 518, 135, 520, 525, 522, 405, 524, 405, 522, 527, 214, 523, 213, 523, 214, 519, 529, 528, 530, 528, 529, 448, 532, 824, 428, 532, 534, 824, 532, 819, 534, 530, 360, 535, 822, 357, 356, 240, 239, 536, 537, 239, 240, 357, 239, 537, 822, 239, 357, 822, 528, 239, 359, 528, 822, 813, 528, 359, 360, 528, 813, 530, 528, 360, 538, 531, 406, 531, 538, 428, 1819, 820, 539, 540, 1818, 801, 801, 1819, 540, 820, 575, 1818, 820, 440, 575, 820, 466, 440, 1818, 539, 820, 465, 440, 466, 440, 465, 442, 541, 574, 542, 541, 543, 574, 541, 513, 543, 1823, 119, 545, 119, 1823, 1817, 544, 517, 1817, 544, 127, 517, 544, 549, 127, 1823, 544, 1817, 544, 548, 549, 544, 560, 548, 417, 550, 415, 417, 547, 550, 546, 547, 417, 560, 547, 546, 544, 547, 560, 556, 458, 551, 458, 556, 555, 458, 446, 551, 458, 552, 446, 458, 568, 552, 553, 555, 556, 553, 459, 555, 553, 554, 459, 557, 712, 691, 712, 557, 714, 139, 27, 558, 27, 139, 559, 142, 561, 141, 561, 142, 562, 70, 561, 562, 560, 71, 548, 561, 71, 560, 70, 71, 561, 564, 563, 468, 563, 564, 833, 565, 563, 786, 565, 468, 563, 565, 467, 468, 565, 756, 467, 565, 566, 756, 565, 786, 566, 459, 567, 254, 568, 554, 552, 567, 554, 568, 459, 554, 567, 571, 576, 572, 571, 577, 576, 571, 578, 577, 534, 823, 824, 823, 534, 580, 581, 21, 582, 581, 583, 21, 581, 275, 583, 36, 275, 276, 275, 36, 583, 585, 26, 25, 26, 584, 40, 585, 584, 26, 585, 148, 584, 150, 673, 742, 673, 150, 803, 586, 438, 439, 438, 586, 587, 589, 588, 595, 589, 906, 588, 589, 154, 906, 590, 361, 591, 361, 590, 592, 593, 727, 205, 727, 593, 705, 594, 159, 1827, 594, 157, 159, 594, 596, 157, 594, 588, 596, 594, 595, 588, 600, 156, 599, 156, 600, 603, 601, 457, 602, 457, 601, 454, 603, 321, 156, 321, 603, 168, 1830, 604, 1831, 604, 1830, 605, 145, 834, 1826, 1829, 1826, 608, 1829, 814, 1826, 814, 368, 1826, 609, 610, 1829, 609, 816, 610, 609, 571, 816, 609, 578, 571, 1829, 367, 609, 367, 834, 609, 835, 609, 834, 611, 136, 835, 836, 611, 612, 836, 369, 611, 836, 570, 369, 614, 613, 620, 613, 614, 422, 422, 615, 613, 422, 616, 615, 422, 426, 616, 422, 617, 426, 426, 421, 618, 421, 426, 617, 625, 421, 619, 421, 625, 618, 621, 620, 622, 620, 621, 614, 623, 622, 414, 622, 623, 621, 623, 424, 624, 623, 693, 424, 623, 413, 693, 623, 414, 413, 424, 619, 624, 619, 424, 625, 626, 627, 628, 626, 218, 627, 626, 222, 218, 629, 806, 631, 806, 629, 630, 631, 632, 825, 632, 631, 346, 262, 216, 632, 216, 262, 633, 260, 216, 633, 642, 216, 260, 634, 216, 642, 653, 216, 634, 265, 652, 636, 652, 265, 645, 49, 637, 0x0100, 637, 49, 638, 639, 0x0100, 0xFF, 0x0100, 639, 49, 266, 29, 30, 29, 266, 640, 263, 260, 261, 260, 641, 642, 263, 641, 260, 263, 94, 641, 265, 28, 645, 265, 0x0101, 28, 265, 643, 0x0101, 265, 644, 643, 643, 646, 258, 646, 643, 644, 258, 649, 647, 649, 258, 646, 264, 259, 650, 259, 264, 648, 259, 263, 261, 263, 259, 648, 264, 647, 649, 647, 264, 650, 653, 652, 654, 652, 93, 636, 653, 93, 652, 93, 634, 651, 653, 634, 93, 734, 270, 287, 270, 734, 733, 655, 656, 230, 655, 293, 656, 655, 658, 293, 293, 657, 665, 657, 293, 658, 660, 659, 33, 659, 660, 663, 662, 661, 52, 661, 662, 721, 296, 268, 667, 664, 659, 663, 268, 659, 664, 296, 659, 268, 665, 664, 231, 665, 268, 664, 665, 657, 268, 287, 285, 288, 285, 666, 146, 285, 270, 666, 287, 270, 285, 668, 667, 669, 667, 295, 296, 295, 339, 689, 667, 339, 295, 668, 339, 667, 348, 197, 198, 197, 348, 39, 113, 670, 671, 113, 672, 670, 113, 43, 672, 113, 44, 43, 673, 11, 9, 11, 673, 803, 37, 36, 276, 36, 37, 38, 482, 181, 674, 181, 482, 252, 674, 18, 111, 18, 674, 181, 670, 193, 743, 190, 672, 675, 193, 672, 190, 670, 672, 193, 189, 130, 677, 189, 808, 130, 189, 676, 808, 10, 201, 678, 201, 10, 180, 680, 679, 177, 680, 200, 679, 680, 681, 200, 680, 184, 681, 199, 679, 200, 199, 202, 679, 202, 682, 114, 199, 682, 202, 685, 354, 355, 685, 480, 354, 480, 683, 684, 685, 683, 480, 274, 686, 272, 686, 274, 687, 484, 272, 686, 272, 484, 273, 687, 485, 688, 485, 687, 274, 687, 689, 339, 295, 338, 294, 689, 338, 295, 687, 338, 689, 687, 688, 338, 557, 690, 692, 690, 557, 691, 413, 425, 693, 413, 690, 425, 413, 692, 690, 837, 694, 695, 694, 837, 696, 698, 206, 704, 698, 697, 206, 697, 694, 696, 698, 694, 697, 211, 696, 837, 728, 204, 701, 696, 699, 697, 211, 699, 696, 204, 699, 211, 728, 699, 204, 728, 700, 699, 710, 423, 45, 616, 713, 615, 423, 713, 616, 423, 702, 713, 710, 702, 423, 593, 211, 703, 593, 204, 211, 593, 205, 204, 207, 704, 206, 704, 207, 208, 729, 708, 709, 729, 707, 708, 703, 705, 593, 706, 705, 703, 707, 705, 706, 729, 705, 707, 45, 706, 710, 45, 707, 706, 45, 711, 707, 713, 712, 714, 715, 382, 717, 712, 382, 715, 712, 210, 382, 713, 210, 712, 713, 702, 210, 715, 381, 716, 381, 715, 717, 476, 235, 718, 235, 476, 719, 281, 51, 720, 281, 282, 51, 282, 279, 737, 281, 279, 282, 722, 56, 723, 286, 721, 57, 286, 661, 721, 56, 661, 286, 722, 661, 56, 826, 724, 1416, 826, 1828, 724, 826, 137, 1828, 809, 726, 46, 709, 699, 700, 708, 699, 709, 699, 208, 207, 708, 208, 699, 708, 1815, 208, 726, 1815, 708, 809, 1815, 726, 705, 701, 727, 705, 728, 701, 705, 729, 728, 294, 730, 731, 730, 294, 338, 730, 58, 731, 58, 730, 732, 733, 735, 736, 733, 289, 735, 733, 734, 289, 271, 737, 280, 271, 282, 737, 271, 736, 282, 232, 738, 233, 738, 232, 739, 236, 719, 278, 719, 236, 235, 236, 277, 234, 277, 236, 278, 232, 277, 739, 277, 232, 234, 740, 416, 17, 416, 740, 741, 741, 558, 416, 558, 741, 139, 743, 742, 128, 742, 149, 150, 742, 193, 149, 743, 193, 742, 243, 65, 747, 243, 746, 65, 243, 244, 746, 303, 318, 749, 775, 63, 748, 318, 63, 775, 303, 63, 318, 317, 471, 319, 471, 317, 754, 781, 750, 316, 779, 314, 773, 750, 314, 779, 750, 751, 314, 781, 751, 750, 317, 753, 754, 317, 752, 753, 752, 775, 774, 317, 775, 752, 317, 318, 775, 749, 828, 303, 828, 749, 755, 566, 471, 756, 566, 319, 471, 566, 755, 319, 566, 828, 755, 34, 745, 757, 34, 744, 745, 34, 758, 744, 776, 758, 212, 776, 744, 758, 776, 759, 744, 776, 748, 759, 776, 775, 748, 776, 831, 775, 830, 778, 779, 760, 776, 212, 769, 776, 760, 778, 776, 769, 830, 776, 778, 762, 761, 763, 762, 308, 761, 762, 805, 308, 766, 313, 765, 766, 764, 313, 766, 1602, 764, 763, 765, 762, 765, 763, 766, 767, 805, 313, 805, 767, 0x0300, 0x0303, 770, 772, 770, 311, 312, 311, 778, 769, 770, 778, 311, 0x0303, 778, 770, 830, 831, 776, 831, 774, 775, 830, 774, 831, 774, 779, 773, 830, 779, 774, 779, 315, 750, 777, 0x0303, 772, 315, 0x0303, 777, 315, 778, 0x0303, 779, 778, 315, 781, 780, 469, 780, 781, 316, 753, 314, 751, 314, 753, 752, 833, 782, 563, 782, 833, 783, 784, 833, 1832, 833, 784, 783, 563, 785, 786, 785, 563, 782, 566, 832, 828, 566, 827, 832, 566, 787, 827, 787, 786, 788, 566, 786, 787, 817, 602, 457, 817, 788, 602, 817, 787, 788, 607, 246, 606, 607, 829, 246, 327, 791, 792, 297, 791, 327, 297, 789, 791, 299, 789, 297, 299, 215, 789, 247, 215, 299, 247, 790, 215, 829, 790, 247, 607, 790, 829, 469, 793, 1604, 793, 469, 780, 794, 320, 242, 794, 796, 320, 794, 795, 796, 794, 165, 795, 746, 797, 245, 797, 746, 244, 798, 66, 343, 66, 798, 68, 343, 799, 798, 799, 343, 342, 342, 67, 799, 67, 342, 69, 64, 605, 300, 64, 65, 605, 64, 301, 65, 605, 746, 604, 746, 605, 65, 419, 495, 493, 495, 419, 418, 498, 495, 418, 495, 498, 490, 419, 420, 497, 420, 419, 493, 145, 835, 834, 145, 611, 835, 612, 569, 836, 612, 911, 569, 611, 911, 612, 611, 364, 911, 611, 821, 364, 145, 821, 611, 110, 158, 597, 14, 828, 832, 828, 14, 303, 655, 455, 268, 455, 655, 14, 483, 19, 477, 19, 483, 111, 277, 349, 739, 277, 350, 349, 277, 278, 350, 719, 350, 278, 719, 352, 350, 275, 37, 276, 37, 739, 349, 37, 738, 739, 275, 738, 37, 581, 738, 275, 280, 738, 581, 737, 738, 280, 279, 738, 737, 279, 476, 738, 352, 476, 279, 719, 476, 352, 531, 533, 407, 533, 531, 428, 533, 959, 963, 533, 580, 959, 533, 823, 580, 824, 533, 428, 533, 824, 823, 135, 369, 240, 135, 611, 369, 135, 136, 611, 732, 484, 686, 484, 732, 730, 68, 253, 226, 210, 703, 694, 703, 710, 706, 210, 710, 703, 210, 702, 710, 121, 125, 4, 121, 123, 125, 123, 2, 124, 121, 2, 123, 121, 5, 12, 5, 121, 4, 848, 839, 847, 839, 848, 849, 854, 843, 844, 843, 854, 850, 850, 847, 843, 847, 850, 848, 840, 855, 853, 855, 840, 842, 845, 852, 851, 852, 845, 846, 846, 853, 852, 853, 846, 840, 841, 840, 846, 841, 845, 844, 841, 844, 843, 841, 842, 840, 841, 846, 845, 841, 839, 842, 839, 841, 847, 841, 843, 847, 842, 849, 855, 849, 842, 839, 844, 851, 854, 851, 844, 845, 865, 856, 864, 856, 865, 866, 871, 860, 861, 860, 871, 867, 867, 864, 860, 864, 867, 865, 857, 872, 870, 872, 857, 859, 862, 869, 868, 869, 862, 863, 863, 870, 869, 870, 863, 857, 858, 857, 863, 858, 862, 861, 858, 861, 860, 858, 859, 857, 858, 863, 862, 858, 856, 859, 856, 858, 864, 858, 860, 864, 859, 866, 872, 866, 859, 856, 861, 868, 871, 868, 861, 862, 882, 873, 881, 873, 882, 883, 888, 877, 878, 877, 888, 884, 884, 881, 877, 881, 884, 882, 874, 889, 887, 889, 874, 876, 879, 886, 885, 886, 879, 880, 880, 887, 886, 887, 880, 874, 875, 874, 880, 875, 879, 878, 875, 878, 877, 875, 876, 874, 875, 880, 879, 875, 873, 876, 873, 875, 881, 875, 877, 881, 876, 883, 889, 883, 876, 873, 878, 885, 888, 885, 878, 879, 899, 890, 898, 890, 899, 900, 905, 894, 895, 894, 905, 901, 901, 898, 894, 898, 901, 899, 891, 1820, 904, 1820, 891, 893, 896, 903, 902, 903, 896, 897, 897, 904, 903, 904, 897, 891, 892, 891, 897, 892, 896, 895, 892, 895, 894, 892, 893, 891, 892, 897, 896, 892, 890, 893, 890, 892, 898, 892, 894, 898, 893, 900, 1820, 900, 893, 890, 895, 902, 905, 902, 895, 896, 908, 907, 363, 908, 915, 907, 911, 915, 908, 911, 910, 915, 907, 364, 363, 909, 364, 907, 910, 364, 909, 911, 364, 910, 916, 912, 913, 912, 916, 914, 914, 915, 912, 915, 914, 907, 912, 910, 913, 910, 912, 915, 916, 907, 914, 907, 916, 909, 910, 916, 913, 916, 910, 909, 921, 920, 922, 921, 363, 920, 921, 908, 363, 917, 918, 919, 908, 918, 917, 921, 918, 908, 926, 924, 923, 926, 933, 924, 929, 933, 926, 929, 928, 933, 924, 925, 923, 927, 925, 924, 928, 925, 927, 929, 925, 928, 934, 930, 931, 930, 934, 932, 932, 933, 930, 933, 932, 924, 930, 928, 931, 928, 930, 933, 934, 924, 932, 924, 934, 927, 928, 934, 931, 934, 928, 927, 939, 938, 940, 939, 923, 938, 939, 926, 923, 935, 936, 937, 926, 936, 935, 939, 936, 926, 944, 942, 941, 944, 951, 942, 947, 951, 944, 947, 946, 951, 942, 943, 941, 945, 943, 942, 946, 943, 945, 947, 943, 946, 952, 948, 949, 948, 952, 950, 950, 951, 948, 951, 950, 942, 948, 946, 949, 946, 948, 951, 952, 942, 950, 942, 952, 945, 946, 952, 949, 952, 946, 945, 955, 1822, 956, 955, 941, 1822, 955, 944, 941, 1821, 953, 954, 944, 953, 1821, 955, 953, 944, 960, 958, 957, 960, 967, 958, 963, 967, 960, 963, 962, 967, 958, 959, 957, 961, 959, 958, 962, 959, 961, 963, 959, 962, 968, 964, 965, 964, 968, 966, 966, 967, 964, 967, 966, 958, 964, 962, 965, 962, 964, 967, 968, 958, 966, 958, 968, 961, 962, 968, 965, 968, 962, 961, 973, 972, 974, 973, 957, 972, 973, 960, 957, 969, 970, 971, 960, 970, 969, 973, 970, 960, 978, 976, 975, 978, 985, 976, 981, 985, 978, 981, 980, 985, 976, 977, 975, 979, 977, 976, 980, 977, 979, 981, 977, 980, 986, 982, 983, 982, 986, 984, 984, 985, 982, 985, 984, 976, 982, 980, 983, 980, 982, 985, 986, 976, 984, 976, 986, 979, 980, 986, 983, 986, 980, 979, 989, 371, 990, 989, 975, 371, 989, 978, 975, 1816, 987, 988, 978, 987, 1816, 989, 987, 978, 376, 992, 991, 376, 998, 992, 535, 998, 376, 535, 994, 998, 992, 360, 991, 993, 360, 992, 994, 360, 993, 535, 360, 994, 999, 995, 996, 995, 999, 997, 997, 998, 995, 998, 997, 992, 995, 994, 996, 994, 995, 998, 999, 992, 997, 992, 999, 993, 994, 999, 996, 999, 994, 993, 1004, 1003, 1005, 1004, 991, 1003, 1004, 376, 991, 1000, 1001, 1002, 376, 1001, 1000, 1004, 1001, 376, 1006, 1022, 1007, 1022, 1006, 1020, 1008, 1022, 1016, 1022, 1008, 1007, 1009, 1016, 1015, 1016, 1009, 1008, 1009, 1017, 1010, 1017, 1009, 1015, 1014, 1010, 1012, 1011, 1018, 1019, 1018, 1011, 1012, 1010, 1018, 1012, 1018, 1010, 1017, 1013, 1019, 1021, 1019, 1013, 1011, 1013, 1020, 1006, 1020, 1013, 1021, 1008, 1009, 1014, 1014, 1006, 1007, 1014, 1007, 1008, 1014, 1009, 1010, 1014, 1012, 1011, 1014, 1013, 1006, 1013, 1014, 1011, 1023, 1039, 0x0400, 1039, 1023, 1037, 1025, 1039, 1033, 1039, 1025, 0x0400, 1026, 1033, 1032, 1033, 1026, 1025, 1026, 1034, 1027, 1034, 1026, 1032, 1031, 1027, 1029, 0x0404, 1035, 1036, 1035, 0x0404, 1029, 1027, 1035, 1029, 1035, 1027, 1034, 1030, 1036, 1038, 1036, 1030, 0x0404, 1030, 1037, 1023, 1037, 1030, 1038, 1025, 1026, 1031, 1031, 1023, 0x0400, 1031, 0x0400, 1025, 1031, 1026, 1027, 1031, 1029, 0x0404, 1031, 1030, 1023, 1030, 1031, 0x0404, 1040, 1056, 1041, 1056, 1040, 1054, 1042, 1056, 1050, 1056, 1042, 1041, 1043, 1050, 1049, 1050, 1043, 1042, 1043, 1051, 1044, 1051, 1043, 1049, 1048, 1044, 1046, 1045, 1052, 1053, 1052, 1045, 1046, 1044, 1052, 1046, 1052, 1044, 1051, 1047, 1053, 1055, 1053, 1047, 1045, 1047, 1054, 1040, 1054, 1047, 1055, 1042, 1043, 1048, 1048, 1040, 1041, 1048, 1041, 1042, 1048, 1043, 1044, 1048, 1046, 1045, 1048, 1047, 1040, 1047, 1048, 1045, 1057, 1073, 1058, 1073, 1057, 1071, 1059, 1073, 1067, 1073, 1059, 1058, 1060, 1067, 1066, 1067, 1060, 1059, 1060, 1068, 1061, 1068, 1060, 1066, 1065, 1061, 1063, 1062, 1069, 1070, 1069, 1062, 1063, 1061, 1069, 1063, 1069, 1061, 1068, 1064, 1070, 1072, 1070, 1064, 1062, 1064, 1071, 1057, 1071, 1064, 1072, 1059, 1060, 1065, 1065, 1057, 1058, 1065, 1058, 1059, 1065, 1060, 1061, 1065, 1063, 1062, 1065, 1064, 1057, 1064, 1065, 1062, 1074, 1090, 1075, 1090, 1074, 1088, 1076, 1090, 1084, 1090, 1076, 1075, 1077, 1084, 1083, 1084, 1077, 1076, 1077, 1085, 1078, 1085, 1077, 1083, 1082, 1078, 1080, 1079, 1086, 1087, 1086, 1079, 1080, 1078, 1086, 1080, 1086, 1078, 1085, 1081, 1087, 1089, 1087, 1081, 1079, 1081, 1088, 1074, 1088, 1081, 1089, 1076, 1077, 1082, 1082, 1074, 1075, 1082, 1075, 1076, 1082, 1077, 1078, 1082, 1080, 1079, 1082, 1081, 1074, 1081, 1082, 1079, 1091, 1107, 1092, 1107, 1091, 1105, 1093, 1107, 1101, 1107, 1093, 1092, 1094, 1101, 1100, 1101, 1094, 1093, 1094, 1102, 1095, 1102, 1094, 1100, 1099, 1095, 1097, 1096, 1103, 1104, 1103, 1096, 1097, 1095, 1103, 1097, 1103, 1095, 1102, 1098, 1104, 1106, 1104, 1098, 1096, 1098, 1105, 1091, 1105, 1098, 1106, 1093, 1094, 1099, 1099, 1091, 1092, 1099, 1092, 1093, 1099, 1094, 1095, 1099, 1097, 1096, 1099, 1098, 1091, 1098, 1099, 1096, 1108, 1124, 1109, 1124, 1108, 1122, 1110, 1124, 1118, 1124, 1110, 1109, 1111, 1118, 1117, 1118, 1111, 1110, 1111, 1119, 1112, 1119, 1111, 1117, 1116, 1112, 1114, 1113, 1120, 1121, 1120, 1113, 1114, 1112, 1120, 1114, 1120, 1112, 1119, 1115, 1121, 1123, 1121, 1115, 1113, 1115, 1122, 1108, 1122, 1115, 1123, 1110, 1111, 1116, 1116, 1108, 1109, 1116, 1109, 1110, 1116, 1111, 1112, 1116, 1114, 1113, 1116, 1115, 1108, 1115, 1116, 1113, 1125, 1141, 1126, 1141, 1125, 1139, 1127, 1141, 1135, 1141, 1127, 1126, 1128, 1135, 1134, 1135, 1128, 1127, 1128, 1136, 1129, 1136, 1128, 1134, 1133, 1129, 1131, 1130, 1137, 1138, 1137, 1130, 1131, 1129, 1137, 1131, 1137, 1129, 1136, 1132, 1138, 1140, 1138, 1132, 1130, 1132, 1139, 1125, 1139, 1132, 1140, 1127, 1128, 1133, 1133, 1125, 1126, 1133, 1126, 1127, 1133, 1128, 1129, 1133, 1131, 1130, 1133, 1132, 1125, 1132, 1133, 1130, 1144, 1142, 1145, 1142, 1144, 1143, 1142, 1147, 1145, 1147, 1142, 1146, 1148, 1147, 1146, 1147, 1148, 1149, 1149, 1150, 1151, 1150, 1149, 1148, 1158, 1151, 1153, 1153, 1155, 1152, 1155, 1153, 1154, 1153, 1150, 1154, 1150, 1153, 1151, 1156, 1155, 1157, 1155, 1156, 1152, 1144, 1157, 1143, 1157, 1144, 1156, 1147, 1149, 1158, 1158, 1144, 1145, 1158, 1145, 1147, 1158, 1149, 1151, 1158, 1153, 1152, 1158, 1156, 1144, 1156, 1158, 1152, 1161, 1159, 1162, 1159, 1161, 1160, 1159, 1164, 1162, 1164, 1159, 1163, 1165, 1164, 1163, 1164, 1165, 1166, 1166, 1167, 1168, 1167, 1166, 1165, 1175, 1168, 1170, 1170, 1172, 1169, 1172, 1170, 1171, 1170, 1167, 1171, 1167, 1170, 1168, 1173, 1172, 1174, 1172, 1173, 1169, 1161, 1174, 1160, 1174, 1161, 1173, 1164, 1166, 1175, 1175, 1161, 1162, 1175, 1162, 1164, 1175, 1166, 1168, 1175, 1170, 1169, 1175, 1173, 1161, 1173, 1175, 1169, 1178, 1176, 1179, 1176, 1178, 1177, 1176, 1181, 1179, 1181, 1176, 1180, 1182, 1181, 1180, 1181, 1182, 1183, 1183, 1184, 1185, 1184, 1183, 1182, 1192, 1185, 1187, 1187, 1189, 1186, 1189, 1187, 1188, 1187, 1184, 1188, 1184, 1187, 1185, 1190, 1189, 1191, 1189, 1190, 1186, 1178, 1191, 1177, 1191, 1178, 1190, 1181, 1183, 1192, 1192, 1178, 1179, 1192, 1179, 1181, 1192, 1183, 1185, 1192, 1187, 1186, 1192, 1190, 1178, 1190, 1192, 1186, 1195, 1193, 1196, 1193, 1195, 1194, 1193, 1198, 1196, 1198, 1193, 1197, 1199, 1198, 1197, 1198, 1199, 1200, 1200, 1201, 1202, 1201, 1200, 1199, 1209, 1202, 1204, 1204, 1206, 1203, 1206, 1204, 1205, 1204, 1201, 1205, 1201, 1204, 1202, 1207, 1206, 1208, 1206, 1207, 1203, 1195, 1208, 1194, 1208, 1195, 1207, 1198, 1200, 1209, 1209, 1195, 1196, 1209, 1196, 1198, 1209, 1200, 1202, 1209, 1204, 1203, 1209, 1207, 1195, 1207, 1209, 1203, 1212, 1210, 1213, 1210, 1212, 1211, 1210, 1215, 1213, 1215, 1210, 1214, 1216, 1215, 1214, 1215, 1216, 1217, 1217, 1218, 1219, 1218, 1217, 1216, 1226, 1219, 1221, 1221, 1223, 1220, 1223, 1221, 1222, 1221, 1218, 1222, 1218, 1221, 1219, 1224, 1223, 1225, 1223, 1224, 1220, 1212, 1225, 1211, 1225, 1212, 1224, 1215, 1217, 1226, 1226, 1212, 1213, 1226, 1213, 1215, 1226, 1217, 1219, 1226, 1221, 1220, 1226, 1224, 1212, 1224, 1226, 1220, 1229, 1227, 1230, 1227, 1229, 1228, 1227, 1232, 1230, 1232, 1227, 1231, 1233, 1232, 1231, 1232, 1233, 1234, 1234, 1235, 1236, 1235, 1234, 1233, 1243, 1236, 1238, 1238, 1240, 1237, 1240, 1238, 1239, 1238, 1235, 1239, 1235, 1238, 1236, 1241, 1240, 1242, 1240, 1241, 1237, 1229, 1242, 1228, 1242, 1229, 1241, 1232, 1234, 1243, 1243, 1229, 1230, 1243, 1230, 1232, 1243, 1234, 1236, 1243, 1238, 1237, 1243, 1241, 1229, 1241, 1243, 1237, 1246, 1244, 1247, 1244, 1246, 1245, 1244, 1249, 1247, 1249, 1244, 1248, 1250, 1249, 1248, 1249, 1250, 1251, 1251, 1252, 1253, 1252, 1251, 1250, 1260, 1253, 1255, 1255, 1257, 1254, 1257, 1255, 1256, 1255, 1252, 1256, 1252, 1255, 1253, 1258, 1257, 1259, 1257, 1258, 1254, 1246, 1259, 1245, 1259, 1246, 1258, 1249, 1251, 1260, 1260, 1246, 1247, 1260, 1247, 1249, 1260, 1251, 1253, 1260, 1255, 1254, 1260, 1258, 1246, 1258, 1260, 1254, 1263, 1261, 1264, 1261, 1263, 1262, 1261, 1266, 1264, 1266, 1261, 1265, 1267, 1266, 1265, 1266, 1267, 1268, 1268, 1269, 1270, 1269, 1268, 1267, 1277, 1270, 1272, 1272, 1274, 1271, 1274, 1272, 1273, 1272, 1269, 1273, 1269, 1272, 1270, 1275, 1274, 1276, 1274, 1275, 1271, 1263, 1276, 1262, 1276, 1263, 1275, 1266, 1268, 1277, 1277, 1263, 1264, 1277, 1264, 1266, 1277, 1268, 1270, 1277, 1272, 1271, 1277, 1275, 1263, 1275, 1277, 1271, 0x0500, 1278, 1281, 1278, 0x0500, 1279, 1278, 1283, 1281, 1283, 1278, 1282, 1284, 1283, 1282, 1283, 1284, 0x0505, 0x0505, 1286, 1287, 1286, 0x0505, 1284, 1294, 1287, 1289, 1289, 1291, 1288, 1291, 1289, 1290, 1289, 1286, 1290, 1286, 1289, 1287, 1292, 1291, 1293, 1291, 1292, 1288, 0x0500, 1293, 1279, 1293, 0x0500, 1292, 1283, 0x0505, 1294, 1294, 0x0500, 1281, 1294, 1281, 1283, 1294, 0x0505, 1287, 1294, 1289, 1288, 1294, 1292, 0x0500, 1292, 1294, 1288, 1297, 1295, 1298, 1295, 1297, 1296, 1295, 1300, 1298, 1300, 1295, 1299, 1301, 1300, 1299, 1300, 1301, 1302, 1302, 1303, 1304, 1303, 1302, 1301, 1311, 1304, 1306, 1306, 1308, 1305, 1308, 1306, 1307, 1306, 1303, 1307, 1303, 1306, 1304, 1309, 1308, 1310, 1308, 1309, 1305, 1297, 1310, 1296, 1310, 1297, 1309, 1300, 1302, 1311, 1311, 1297, 1298, 1311, 1298, 1300, 1311, 1302, 1304, 1311, 1306, 1305, 1311, 1309, 1297, 1309, 1311, 1305, 1314, 1312, 1315, 1312, 1314, 1313, 1312, 1317, 1315, 1317, 1312, 1316, 1318, 1317, 1316, 1317, 1318, 1319, 1319, 1320, 1321, 1320, 1319, 1318, 1328, 1321, 1323, 1323, 1325, 1322, 1325, 1323, 1324, 1323, 1320, 1324, 1320, 1323, 1321, 1326, 1325, 1327, 1325, 1326, 1322, 1314, 1327, 1313, 1327, 1314, 1326, 1317, 1319, 1328, 1328, 1314, 1315, 1328, 1315, 1317, 1328, 1319, 1321, 1328, 1323, 1322, 1328, 1326, 1314, 1326, 1328, 1322, 1331, 1329, 1332, 1329, 1331, 1330, 1329, 1334, 1332, 1334, 1329, 1333, 1335, 1334, 1333, 1334, 1335, 1336, 1336, 1337, 1338, 1337, 1336, 1335, 1345, 1338, 1340, 1340, 1342, 1339, 1342, 1340, 1341, 1340, 1337, 1341, 1337, 1340, 1338, 1343, 1342, 1344, 1342, 1343, 1339, 1331, 1344, 1330, 1344, 1331, 1343, 1334, 1336, 1345, 1345, 1331, 1332, 1345, 1332, 1334, 1345, 1336, 1338, 1345, 1340, 1339, 1345, 1343, 1331, 1343, 1345, 1339, 1348, 1346, 1349, 1346, 1348, 1347, 1346, 1351, 1349, 1351, 1346, 1350, 1352, 1351, 1350, 1351, 1352, 1353, 1353, 1354, 1355, 1354, 1353, 1352, 1362, 1355, 1357, 1357, 1359, 1356, 1359, 1357, 1358, 1357, 1354, 1358, 1354, 1357, 1355, 1360, 1359, 1361, 1359, 1360, 1356, 1348, 1361, 1347, 1361, 1348, 1360, 1351, 1353, 1362, 1362, 1348, 1349, 1362, 1349, 1351, 1362, 1353, 1355, 1362, 1357, 1356, 1362, 1360, 1348, 1360, 1362, 1356, 1365, 1363, 1366, 1363, 1365, 1364, 1363, 1368, 1366, 1368, 1363, 1367, 1369, 1368, 1367, 1368, 1369, 1370, 1370, 1371, 1372, 1371, 1370, 1369, 1379, 1372, 1374, 1374, 1376, 1373, 1376, 1374, 1375, 1374, 1371, 1375, 1371, 1374, 1372, 1377, 1376, 1378, 1376, 1377, 1373, 1365, 1378, 1364, 1378, 1365, 1377, 1368, 1370, 1379, 1379, 1365, 1366, 1379, 1366, 1368, 1379, 1370, 1372, 1379, 1374, 1373, 1379, 1377, 1365, 1377, 1379, 1373, 1382, 1380, 1383, 1380, 1382, 1381, 1380, 1385, 1383, 1385, 1380, 1384, 1386, 1385, 1384, 1385, 1386, 1387, 1387, 1388, 1389, 1388, 1387, 1386, 1396, 1389, 1391, 1391, 1393, 1390, 1393, 1391, 1392, 1391, 1388, 1392, 1388, 1391, 1389, 1394, 1393, 1395, 1393, 1394, 1390, 1382, 1395, 1381, 1395, 1382, 1394, 1385, 1387, 1396, 1396, 1382, 1383, 1396, 1383, 1385, 1396, 1387, 1389, 1396, 1391, 1390, 1396, 1394, 1382, 1394, 1396, 1390, 1399, 1397, 1400, 1397, 1399, 1398, 1397, 1402, 1400, 1402, 1397, 1401, 1403, 1402, 1401, 1402, 1403, 1404, 1404, 1405, 1406, 1405, 1404, 1403, 1413, 1406, 1408, 1408, 1410, 1407, 1410, 1408, 1409, 1408, 1405, 1409, 1405, 1408, 1406, 1411, 1410, 1412, 1410, 1411, 1407, 1399, 1412, 1398, 1412, 1399, 1411, 1402, 1404, 1413, 1413, 1399, 1400, 1413, 1400, 1402, 1413, 1404, 1406, 1413, 1408, 1407, 1413, 1411, 1399, 1411, 1413, 1407, 1418, 1419, 1457, 1419, 1418, 1456, 1420, 1421, 1422, 1421, 1420, 1458, 1422, 1421, 1423, 1421, 1424, 1425, 1424, 1421, 1458, 1423, 1421, 1425, 1426, 1422, 1423, 1423, 1427, 1426, 1457, 1428, 1429, 1428, 1457, 1420, 1428, 1422, 1426, 1422, 1428, 1420, 1427, 1428, 1426, 1428, 1427, 1430, 1430, 1429, 1428, 1429, 1430, 1431, 1457, 1458, 1420, 1458, 1457, 1419, 1425, 1432, 1433, 1432, 1425, 1424, 1434, 1435, 1437, 1435, 1434, 1436, 1438, 1430, 1439, 1430, 1438, 1431, 1440, 1438, 1439, 1438, 1440, 1441, 1442, 1440, 1439, 1440, 1442, 1443, 1442, 1423, 1443, 1423, 1433, 1443, 1444, 1438, 1441, 1438, 1444, 1445, 1432, 1441, 1440, 1441, 1432, 1437, 1423, 1442, 1427, 1443, 1432, 1440, 1432, 1443, 1433, 1423, 1425, 1433, 1442, 1430, 1427, 1430, 1442, 1439, 1437, 1444, 1441, 1444, 1437, 1435, 1424, 1437, 1432, 1437, 1424, 1434, 1458, 1434, 1424, 1434, 1458, 1419, 1436, 1419, 1456, 1419, 1436, 1434, 1457, 1446, 1418, 1446, 1457, 1429, 1447, 1446, 1448, 1446, 1447, 1418, 1449, 1448, 1446, 1448, 1449, 1450, 1431, 1446, 1429, 1446, 1431, 1449, 1435, 1451, 1444, 1451, 1435, 1452, 1444, 1453, 1445, 1453, 1444, 1451, 1436, 1452, 1435, 1452, 1436, 1454, 1456, 1454, 1436, 1454, 1456, 1455, 1438, 1449, 1431, 1449, 1438, 1445, 1456, 1447, 1455, 1447, 1456, 1418, 1445, 1450, 1449, 1450, 1445, 1453, 179, 150, 149, 179, 803, 150, 583, 20, 21, 36, 20, 583, 803, 20, 36, 20, 666, 24, 666, 22, 146, 20, 22, 666, 22, 147, 802, 147, 148, 585, 22, 148, 147, 20, 148, 22, 803, 148, 20, 179, 148, 803, 179, 23, 148, 1459, 309, 1460, 309, 1459, 1461, 1460, 307, 1462, 307, 1460, 309, 1469, 1463, 1466, 1463, 1469, 1464, 1471, 1464, 1469, 1464, 1471, 1474, 1474, 1471, 1475, 1473, 1468, 1472, 1468, 1473, 1467, 1465, 1467, 1473, 1467, 1465, 1470, 1470, 1465, 1475, 1467, 1466, 1468, 1466, 1467, 1469, 1470, 1469, 1467, 1469, 1470, 1471, 1471, 1470, 1475, 1464, 1472, 1463, 1472, 1464, 1473, 1474, 1473, 1464, 1473, 1474, 1465, 1465, 1474, 1475, 1477, 1476, 1478, 1476, 1477, 1479, 1479, 1481, 1482, 1479, 1480, 1481, 1479, 1477, 1480, 1481, 1484, 1482, 1481, 1483, 1484, 1481, 1480, 1483, 1484, 1487, 1488, 1484, 1486, 1487, 1484, 1485, 1486, 1484, 1483, 1485, 1487, 1490, 1488, 1489, 1486, 1485, 1490, 1486, 1489, 1487, 1486, 1490, 1490, 1489, 1491, 1479, 1497, 1476, 1497, 1479, 1496, 1496, 1492, 1499, 1496, 1482, 1492, 1496, 1479, 1482, 1492, 1502, 1499, 1492, 1484, 1502, 1492, 1482, 1484, 1502, 1494, 1504, 1502, 1493, 1494, 1502, 1488, 1493, 1502, 1484, 1488, 1494, 1508, 1504, 1490, 1493, 1488, 1508, 1493, 1490, 1494, 1493, 1508, 1508, 1490, 1491, 1496, 1495, 1497, 1495, 1496, 1498, 1498, 1500, 1501, 1498, 1499, 1500, 1498, 1496, 1499, 1500, 1503, 1501, 1500, 1502, 1503, 1500, 1499, 1502, 1503, 1506, 1507, 1503, 1505, 1506, 1503, 1504, 1505, 1503, 1502, 1504, 1506, 1512, 1507, 1508, 1505, 1504, 1512, 1505, 1508, 1506, 1505, 1512, 1512, 1508, 1491, 1498, 1478, 1495, 1478, 1498, 1477, 1477, 1509, 1480, 1477, 1501, 1509, 1477, 1498, 1501, 1509, 1483, 1480, 1509, 1503, 1483, 1509, 1501, 1503, 1483, 1511, 1485, 1483, 1510, 1511, 1483, 1507, 1510, 1483, 1503, 1507, 1511, 1489, 1485, 1512, 1510, 1507, 1489, 1510, 1512, 1511, 1510, 1489, 1489, 1512, 1491, 1530, 1514, 1533, 1514, 1530, 1515, 1532, 1513, 1531, 1513, 1532, 1520, 1533, 1521, 1534, 1521, 1533, 1514, 1530, 1516, 1515, 1516, 1530, 1517, 1538, 1516, 1517, 1516, 1538, 1518, 1538, 1513, 1518, 1513, 1538, 1531, 1540, 1520, 1532, 1520, 1523, 1513, 1523, 1520, 1524, 1514, 1526, 1521, 1526, 1514, 1519, 1515, 1527, 1522, 1527, 1515, 1516, 1518, 1527, 1516, 1527, 1518, 1528, 1518, 1523, 1528, 1523, 1518, 1513, 1540, 1524, 1520, 1524, 1539, 1523, 1539, 1524, 1541, 1519, 1535, 1526, 1535, 1519, 1525, 1522, 0x0600, 1529, 0x0600, 1522, 1527, 1528, 0x0600, 1527, 0x0600, 1528, 1537, 1528, 1539, 1537, 1539, 1528, 1523, 1540, 1541, 1524, 1541, 1531, 1539, 1531, 1541, 1532, 1533, 1535, 1525, 1535, 1533, 1534, 1529, 1517, 1530, 1517, 1529, 0x0600, 1537, 1517, 0x0600, 1517, 1537, 1538, 1537, 1531, 1538, 1531, 1537, 1539, 1540, 1532, 1541, 1525, 1530, 1533, 1530, 1525, 1529, 1519, 1529, 1525, 1529, 1519, 1522, 1514, 1522, 1519, 1522, 1514, 1515, 1545, 1543, 0x0606, 1543, 1545, 1544, 1548, 1546, 1549, 1546, 1548, 1547, 0x0606, 1551, 1550, 1551, 0x0606, 1543, 1545, 1552, 1544, 1552, 1545, 1553, 1555, 1552, 1553, 1552, 1555, 1554, 1555, 1546, 1554, 1546, 1555, 1549, 1556, 1547, 1548, 1547, 1557, 1546, 1557, 1547, 1558, 1543, 1559, 1551, 1559, 1543, 1560, 1544, 1561, 1562, 1561, 1544, 1552, 1554, 1561, 1552, 1561, 1554, 1563, 1554, 1557, 1563, 1557, 1554, 1546, 1556, 1558, 1547, 1558, 1564, 1557, 1564, 1558, 1565, 1560, 1566, 1559, 1566, 1560, 1567, 1562, 1568, 1569, 1568, 1562, 1561, 1563, 1568, 1561, 1568, 1563, 1570, 1563, 1564, 1570, 1564, 1563, 1557, 1556, 1565, 1558, 1565, 1549, 1564, 1549, 1565, 1548, 0x0606, 1566, 1567, 1566, 0x0606, 1550, 1569, 1553, 1545, 1553, 1569, 1568, 1570, 1553, 1568, 1553, 1570, 1555, 1570, 1549, 1555, 1549, 1570, 1564, 1556, 1548, 1565, 1567, 1545, 0x0606, 1545, 1567, 1569, 1560, 1569, 1567, 1569, 1560, 1562, 1543, 1562, 1560, 1562, 1543, 1544, 154, 110, 906, 154, 158, 110, 154, 598, 158, 154, 599, 598, 154, 1820, 167, 1820, 154, 1417, 599, 167, 600, 167, 599, 154, 1574, 1572, 1571, 1572, 1574, 1573, 1577, 1575, 1578, 1575, 1577, 1576, 1571, 1580, 1579, 1580, 1571, 1572, 1574, 1581, 1573, 1581, 1574, 1582, 1584, 1581, 1582, 1581, 1584, 1583, 1584, 1575, 1583, 1575, 1584, 1578, 1585, 1576, 1577, 1576, 1586, 1575, 1586, 1576, 1587, 1572, 1588, 1580, 1588, 1572, 1589, 1573, 1590, 1591, 1590, 1573, 1581, 1583, 1590, 1581, 1590, 1583, 1592, 1583, 1586, 1592, 1586, 1583, 1575, 1585, 1587, 1576, 1587, 1593, 1586, 1593, 1587, 1594, 1589, 1595, 1588, 1595, 1589, 1596, 1591, 1597, 1598, 1597, 1591, 1590, 1592, 1597, 1590, 1597, 1592, 1599, 1592, 1593, 1599, 1593, 1592, 1586, 1585, 1594, 1587, 1594, 1578, 1593, 1578, 1594, 1577, 1571, 1595, 1596, 1595, 1571, 1579, 1598, 1582, 1574, 1582, 1598, 1597, 1599, 1582, 1597, 1582, 1599, 1584, 1599, 1578, 1584, 1578, 1599, 1593, 1585, 1577, 1594, 1596, 1574, 1571, 1574, 1596, 1598, 1589, 1598, 1596, 1598, 1589, 1591, 1572, 1591, 1589, 1591, 1572, 1573, 1601, 1600, 1606, 1600, 1601, 1602, 1604, 1600, 1602, 1600, 1604, 1603, 1631, 1626, 1629, 1626, 1631, 1627, 1628, 1600, 1603, 1600, 1628, 1629, 1630, 1603, 1604, 1603, 1630, 1628, 1607, 1606, 1605, 1606, 1607, 1601, 1609, 1621, 1608, 1621, 1609, 1623, 1612, 1614, 1620, 1614, 1612, 1610, 1611, 1612, 1613, 1612, 1611, 1610, 1618, 1615, 1616, 1615, 1618, 1619, 1621, 1611, 1608, 1611, 1621, 1622, 1609, 1611, 1613, 1611, 1609, 1608, 1616, 1617, 1618, 1617, 1616, 1622, 1614, 1619, 1620, 1619, 1614, 1615, 1617, 1621, 1623, 1621, 1617, 1622, 1607, 1624, 1625, 1624, 1607, 1605, 1625, 1626, 1627, 1626, 1625, 1624, 1631, 1628, 1630, 1628, 1631, 1629, 1632, 1634, 1633, 1634, 1632, 1636, 1633, 1643, 1632, 1634, 1635, 1637, 1635, 1634, 1636, 1639, 1640, 305, 1640, 1639, 1642, 305, 1638, 1639, 1640, 1641, 304, 1641, 1640, 1642, 1656, 1644, 1651, 1651, 1645, 1650, 1645, 1651, 1644, 1656, 1653, 1649, 1649, 1654, 1647, 1654, 1649, 1653, 1656, 1649, 1646, 1646, 1647, 1648, 1647, 1646, 1649, 1656, 1651, 1658, 1658, 1650, 1659, 1650, 1658, 1651, 1656, 1655, 1653, 1653, 1652, 1654, 1652, 1653, 1655, 1656, 1658, 1657, 1657, 1659, 1660, 1659, 1657, 1658, 1656, 1646, 1644, 1644, 1648, 1645, 1648, 1644, 1646, 1656, 1657, 1655, 1655, 1660, 1652, 1660, 1655, 1657, 1665, 1663, 1661, 1663, 1665, 1662, 1673, 1663, 1662, 1664, 1662, 1665, 1662, 1664, 1666, 1673, 1662, 1666, 1676, 1672, 1670, 1672, 1676, 1675, 1673, 1672, 1675, 1667, 1666, 1664, 1666, 1667, 1668, 1673, 1666, 1668, 1671, 1668, 1667, 1668, 1671, 1669, 1673, 1668, 1669, 1670, 1669, 1671, 1669, 1670, 1672, 1673, 1669, 1672, 1661, 1677, 1674, 1677, 1661, 1663, 1673, 1677, 1663, 1674, 1675, 1676, 1675, 1674, 1677, 1673, 1675, 1677, 1683, 1678, 1830, 1678, 1683, 1684, 1684, 1693, 1678, 1830, 1681, 1679, 1681, 1830, 1678, 1678, 1693, 1681, 1679, 1682, 1680, 1682, 1679, 1681, 1693, 1682, 1681, 1688, 1684, 1683, 1684, 1688, 1689, 1689, 1693, 1684, 1691, 1686, 1687, 1686, 1691, 1685, 1685, 1693, 1686, 1687, 1689, 1688, 1689, 1687, 1686, 1686, 1693, 1689, 1680, 1692, 1690, 1692, 1680, 1682, 1682, 1693, 1692, 1690, 1685, 1691, 1685, 1690, 1692, 1692, 1693, 1685, 1700, 1694, 1695, 1694, 1700, 1701, 1701, 1709, 1694, 1695, 1698, 1696, 1698, 1695, 1694, 1694, 1709, 1698, 1696, 1699, 1697, 1699, 1696, 1698, 1709, 1699, 1698, 1704, 1701, 1700, 1701, 1704, 1705, 1705, 1709, 1701, 1707, 1703, 1831, 1703, 1707, 1702, 1702, 1709, 1703, 1831, 1705, 1704, 1705, 1831, 1703, 1703, 1709, 1705, 1697, 1708, 1706, 1708, 1697, 1699, 1699, 1709, 1708, 1706, 1702, 1707, 1702, 1706, 1708, 1708, 1709, 1702, 1716, 1710, 1711, 1710, 1716, 1717, 1717, 1726, 1710, 1711, 1714, 1712, 1714, 1711, 1710, 1710, 1726, 1714, 1712, 1715, 1713, 1715, 1712, 1714, 1726, 1715, 1714, 1721, 1717, 1716, 1717, 1721, 1722, 1722, 1726, 1717, 1724, 1719, 1720, 1719, 1724, 1718, 1718, 1726, 1719, 1720, 1722, 1721, 1722, 1720, 1719, 1719, 1726, 1722, 1713, 1725, 1723, 1725, 1713, 1715, 1715, 1726, 1725, 1723, 1718, 1724, 1718, 1723, 1725, 1725, 1726, 1718, 1728, 1771, 1753, 1771, 1728, 1727, 1729, 1746, 1730, 1746, 1729, 1749, 1731, 1736, 1732, 1736, 1731, 1747, 1734, 1733, 1744, 1733, 1734, 1735, 1748, 1730, 1735, 1730, 1748, 1729, 1747, 1749, 1737, 1749, 1747, 1746, 1739, 1738, 1740, 1738, 1739, 1741, 1739, 1742, 1743, 1742, 1739, 1740, 1741, 1750, 1738, 1750, 1741, 1745, 1730, 1733, 1735, 1730, 1728, 1733, 1730, 1727, 1728, 1727, 1747, 1731, 1727, 1746, 1747, 1730, 1746, 1727, 1804, 1750, 1745, 1750, 1804, 1809, 1764, 1771, 1751, 1771, 1764, 1753, 1797, 1753, 1777, 1753, 1797, 1728, 1762, 1761, 1755, 1761, 1762, 1752, 1733, 1759, 1744, 1759, 1733, 1758, 1757, 0x0707, 1793, 0x0707, 1757, 1756, 1754, 1757, 1760, 1757, 1754, 1756, 1758, 1752, 1763, 1752, 1758, 1761, 1740, 1788, 1786, 1788, 1740, 1738, 1740, 1790, 1742, 1790, 1740, 1786, 1738, 1802, 1788, 1802, 1738, 1750, 1755, 0x0707, 1756, 1755, 1797, 0x0707, 1755, 1728, 1797, 1728, 1758, 1733, 1728, 1761, 1758, 1755, 1761, 1728, 1809, 1802, 1750, 1802, 1809, 1808, 1764, 1777, 1753, 1777, 1764, 1803, 1727, 1783, 1771, 1783, 1727, 1778, 1772, 1766, 1767, 1766, 1772, 1774, 1796, 1768, 0x0700, 1768, 1796, 1773, 1769, 1731, 1732, 1731, 1769, 1770, 1751, 1783, 1776, 1783, 1751, 1771, 1775, 1767, 1770, 1767, 1775, 1772, 1773, 1774, 1765, 1774, 1773, 1766, 1787, 1741, 1739, 1741, 1787, 1795, 1787, 1743, 1789, 1743, 1787, 1739, 1795, 1745, 1741, 1745, 1795, 1794, 1767, 1731, 1770, 1767, 1727, 1731, 1767, 1778, 1727, 1778, 1773, 1796, 1778, 1766, 1773, 1767, 1766, 1778, 1778, 1777, 1783, 1777, 1778, 1797, 1780, 1798, 1781, 1798, 1780, 1782, 0x0707, 1785, 1793, 1785, 0x0707, 1784, 1791, 1796, 0x0700, 1796, 1791, 1800, 1776, 1777, 1803, 1777, 1776, 1783, 1779, 1781, 1800, 1781, 1779, 1780, 1784, 1782, 1801, 1782, 1784, 1798, 1786, 1795, 1787, 1795, 1786, 1788, 1786, 1789, 1790, 1789, 1786, 1787, 1788, 1794, 1795, 1794, 1788, 1802, 1781, 1796, 1800, 1781, 1778, 1796, 1781, 1797, 1778, 1797, 1784, 0x0707, 1797, 1798, 1784, 1781, 1798, 1797, 1802, 1807, 1794, 1807, 1802, 1808, 1804, 1794, 1807, 1794, 1804, 1745, 1748, 1749, 1729, 1749, 1748, 1737, 1754, 1752, 1762, 1752, 1754, 1763, 1779, 1782, 1780, 1782, 1779, 1801, 1775, 1774, 1772, 1774, 1775, 1765, 1748, 1805, 1737, 1805, 1748, 1811, 1814, 1775, 1810, 1775, 1814, 1765, 1779, 1806, 1801, 1806, 1779, 1813, 1812, 1754, 1760, 1754, 1812, 1763, 1804, 1736, 1805, 1736, 1804, 1732, 1811, 1744, 1809, 1744, 1811, 1734, 1809, 1759, 1812, 1759, 1809, 1744, 1760, 1793, 1808, 1793, 1760, 1757, 1807, 1768, 1814, 1768, 1807, 0x0700, 1810, 1732, 1804, 1732, 1810, 1769, 1808, 1785, 1806, 1785, 1808, 1793, 1813, 0x0700, 1807, 0x0700, 1813, 1791, 1805, 1809, 1804, 1809, 1805, 1811, 1812, 1808, 1809, 1808, 1812, 1760, 1806, 1807, 1808, 1807, 1806, 1813, 1810, 1807, 1814, 1807, 1810, 1804, 640, 645, 28, 645, 640, 31, 635, 31, 32, 635, 645, 31, 652, 645, 635, 654, 226, 225, 226, 67, 68, 654, 67, 226, 1643, 1633, 304, 1643, 304, 1641, 1638, 305, 1637, 1638, 1637, 1635, 301, 302, 61, 302, 301, 64, 1758, 1812, 1759, 1812, 1758, 1763, 1748, 1734, 1811, 1734, 1748, 1735, 1747, 1805, 1736, 1805, 1747, 1737, 1775, 1769, 1810, 1769, 1775, 1770, 1773, 1814, 1768, 1814, 1773, 1765, 1779, 1791, 1813, 1791, 1779, 1800, 1784, 1806, 1785, 1806, 1784, 1801, 1754, 1755, 1756, 1755, 1754, 1762, 1605, 1626, 1624, 1626, 1605, 1606, 1629, 1606, 1600, 1606, 1629, 1626, 1614, 1616, 1615, 1616, 1614, 1610, 1622, 1610, 1611, 1610, 1622, 1616, 253, 430, 283, 687, 732, 686, 339, 732, 687, 430, 732, 339, 430, 340, 732, 48, 638, 49, 48, 341, 638, 48, 799, 341, 48, 798, 799, 340, 798, 48, 430, 798, 340, 253, 798, 430, 253, 68, 798, 67, 341, 799, 67, 32, 341, 67, 635, 32, 67, 652, 635, 67, 654, 652, 263, 93, 94, 93, 265, 636, 263, 265, 93, 263, 644, 265, 305, 1634, 1637, 1634, 305, 1640, 157, 596, 160, 624, 621, 623, 621, 624, 619, 614, 619, 421, 619, 614, 621, 262, 346, 347, 346, 262, 632, 222, 631, 806, 631, 221, 1824, 222, 221, 631, 222, 374, 221, 222, 219, 374]; + } + } +}//package wd.d3.geom.monuments.mesh.london diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/ArcDeTriomphe.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/ArcDeTriomphe.as new file mode 100644 index 0000000..faae11a --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/ArcDeTriomphe.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class ArcDeTriomphe extends Stage3DData { + + public function ArcDeTriomphe(){ + vertices = new [31.3416, 0, -50.519, 98.9327, 0, -50.519, 31.3416, 0, -15.1277, 98.9327, 0, -15.1277, 31.3416, 101.516, -50.519, 98.9327, 101.516, -50.519, 98.9327, 80.8997, -15.1277, 31.3416, 80.8997, -15.1277, 98.9327, 96.7897, 0.968227, 31.3416, 96.7897, 0.968227, 98.9327, 92.0753, -10.4133, 31.3416, 92.0753, -10.4133, 98.9327, 162.949, -50.519, 0.255539, 132.522, -50.519, 22.0034, 124.185, -50.519, -30.8306, 0, -50.519, -30.8306, 0, -15.1277, -98.4216, 0, -15.1277, -98.4216, 0, -50.519, -98.4216, 162.949, -50.519, -98.4216, 101.516, -50.519, -30.8306, 101.516, -50.519, -98.4216, 80.8997, -15.1277, -30.8306, 80.8997, -15.1277, -98.4216, 96.7897, 0.968227, -98.4216, 92.0753, -10.4133, -30.8306, 92.0753, -10.4133, -21.4923, 124.185, -50.519, 31.3416, 0, 52.4555, 31.3416, 0, 17.0641, 98.9327, 0, 17.0641, 98.9327, 0, 52.4555, 98.9327, 162.949, 52.4555, 98.9327, 101.516, 52.4555, 31.3416, 101.516, 52.4555, 98.9327, 80.8997, 17.0641, 31.3416, 80.8997, 17.0641, 98.9327, 92.0753, 12.3498, 31.3416, 92.0753, 12.3498, 22.0034, 124.185, 52.4555, 0.255539, 132.522, 52.4555, -30.8306, 0, 52.4555, -98.4216, 0, 52.4555, -98.4216, 0, 17.0641, -30.8306, 0, 17.0641, -98.4216, 162.949, 52.4555, -30.8306, 101.516, 52.4555, -98.4216, 101.516, 52.4555, -98.4216, 80.8997, 17.0641, -30.8306, 80.8997, 17.0641, -98.4216, 92.0753, 12.3498, -30.8306, 92.0753, 12.3498, -30.8306, 96.7897, 0.968227, -21.4923, 124.185, 52.4555, 97.5327, 170.956, -48.419, 97.5327, 170.956, 49.1702, -98.4216, 170.956, 49.1702, -98.4216, 170.956, -48.419, -106.208, 162.949, -56.994, 106.208, 162.949, -56.994, 106.208, 162.949, 56.7702, -106.208, 162.949, 56.7702, 106.208, 170.956, -56.994, -106.208, 170.956, -56.994, -106.208, 170.956, 56.7702, 106.208, 170.956, 56.7702, -98.4216, 194.957, -48.419, 97.5327, 194.957, -48.419, 97.5327, 194.957, 49.1702, -98.4216, 194.957, 49.1702, -97.8712, 198.49, -47.6399, 96.3787, 198.49, -47.6399, 96.3787, 198.49, 46.8851, -97.8712, 198.49, 46.8851, -101.908, 194.957, -50.994, 100.333, 194.957, -50.994, 100.333, 194.957, 51.8452, -101.908, 194.957, 51.8452, 100.333, 198.49, -50.994, -101.908, 198.49, -50.994, -101.908, 198.49, 51.8452, 100.333, 198.49, 51.8452, -92.8162, 202.59, -42.5848, 91.3237, 202.59, -42.5848, 91.3237, 202.59, 41.8301, -92.8162, 202.59, 41.8301, -97.8712, 206.765, -47.6399, 96.3787, 206.765, -47.6399, 96.3787, 206.765, 46.8851, -97.8712, 206.765, 46.8851, 91.3237, 206.765, -42.5848, -92.8162, 206.765, -42.5848, -92.8162, 206.765, 41.8301, 91.3237, 206.765, 41.8301, -47.5112, 202.59, -27.1962, 45.3388, 202.59, -27.1962, 45.3388, 202.59, 25.7305, -47.5112, 202.59, 25.7305, -47.5112, 215.99, -27.1962, 45.3388, 215.99, -27.1962, 45.3388, 215.99, 25.7305, -47.5112, 215.99, 25.7305, -83.123, 0, 52.4555, -83.123, 35.6528, 52.4555, -58.2675, 35.6528, 52.4555, -58.2675, 0, 52.4555, 57.5957, 0, 52.4554, 57.5957, 35.6528, 52.4554, 83.3075, 35.6528, 52.4555, 83.3075, 0, 52.4554, 83.3075, -1.52588E-6, -50.519, 83.3075, 35.6528, -50.519, 57.5957, 35.6528, -50.519, 57.5957, -1.52588E-6, -50.519, -58.2675, -1.52588E-6, -50.519, -58.2675, 35.6528, -50.519, -83.123, 35.6528, -50.519, -83.123, -1.52588E-6, -50.519, 57.5957, 0, -58.0977, 83.3075, 0, -58.0977, 83.3075, 35.6528, -58.0977, 57.5957, 35.6528, -58.0977, -83.123, 0, -58.0977, -58.2675, 0, -58.0977, -58.2675, 35.6528, -58.0977, -83.123, 35.6528, -58.0977, 83.3075, -1.23745E-6, 60.0341, 57.5957, 0, 60.0341, 57.5957, 35.6528, 60.0341, 83.3075, 35.6528, 60.0341, -58.2675, 0, 60.0341, -83.123, 0, 60.0341, -83.123, 35.6528, 60.0341, -58.2675, 35.6528, 60.0341]; + uvs = new [0.647401, 0.93541, 0.965286, 0.93541, 0.647401, 0.636118, 0.965286, 0.636118, 0.647401, 0.93541, 0.965286, 0.93541, 0.965286, 0.636118, 0.647401, 0.636118, 0.965286, 0.5, 0.647401, 0.5, 0.965286, 0.59625, 0.647401, 0.59625, 0.965286, 0.93541, 0.501202, 0.93541, 0.603483, 0.93541, 0.355002, 0.93541, 0.355002, 0.636118, 0.0371178, 0.636117, 0.0371178, 0.93541, 0.0371178, 0.93541, 0.0371178, 0.93541, 0.355002, 0.93541, 0.0371178, 0.636117, 0.355002, 0.636118, 0.0371179, 0.5, 0.0371178, 0.596249, 0.355002, 0.59625, 0.39892, 0.93541, 0.647401, 0.0645902, 0.647401, 0.363882, 0.965286, 0.363883, 0.965286, 0.0645903, 0.965286, 0.0645902, 0.965286, 0.0645903, 0.647401, 0.0645902, 0.965286, 0.363883, 0.647401, 0.363882, 0.965286, 0.403751, 0.647401, 0.40375, 0.603483, 0.0645902, 0.501202, 0.0645901, 0.355002, 0.06459, 0.037118, 0.0645899, 0.0371179, 0.363882, 0.355002, 0.363882, 0.037118, 0.0645898, 0.355002, 0.06459, 0.037118, 0.0645899, 0.0371179, 0.363882, 0.355002, 0.363882, 0.0371179, 0.40375, 0.355002, 0.40375, 0.355002, 0.5, 0.39892, 0.06459, 0.958701, 0.917651, 0.958701, 0.0923728, 0.037118, 0.0923724, 0.0371178, 0.917651, 0.000499547, 0.990166, 0.9995, 0.990167, 0.9995, 0.0281023, 0.000499666, 0.0281019, 0.9995, 0.990167, 0.000499547, 0.990166, 0.000499666, 0.0281019, 0.9995, 0.0281023, 0.0371178, 0.917651, 0.958701, 0.917651, 0.958701, 0.0923728, 0.037118, 0.0923724, 0.0397062, 0.911062, 0.953274, 0.911062, 0.953274, 0.111696, 0.0397063, 0.111696, 0.0207227, 0.939427, 0.97187, 0.939427, 0.97187, 0.0697513, 0.0207228, 0.0697509, 0.97187, 0.939427, 0.0207227, 0.939427, 0.0207228, 0.0697509, 0.97187, 0.0697513, 0.0634803, 0.868313, 0.9295, 0.868313, 0.9295, 0.154445, 0.0634803, 0.154445, 0.0397062, 0.911062, 0.953274, 0.911062, 0.953274, 0.111696, 0.0397063, 0.111696, 0.9295, 0.868313, 0.0634803, 0.868313, 0.0634803, 0.154445, 0.9295, 0.154445, 0.276552, 0.738177, 0.713231, 0.738177, 0.713231, 0.290594, 0.276552, 0.290594, 0.276552, 0.738177, 0.713231, 0.738177, 0.713231, 0.290594, 0.276552, 0.290594, 0.109068, 0.0645899, 0.109068, 0.0645899, 0.225965, 0.06459, 0.225965, 0.06459, 0.770876, 0.0645903, 0.770876, 0.0645903, 0.8918, 0.0645903, 0.8918, 0.0645903, 0.8918, 0.93541, 0.8918, 0.93541, 0.770876, 0.93541, 0.770876, 0.93541, 0.225965, 0.93541, 0.225965, 0.93541, 0.109068, 0.93541, 0.109068, 0.93541, 0.770876, 0.9995, 0.8918, 0.9995, 0.8918, 0.9995, 0.770876, 0.9995, 0.109068, 0.9995, 0.225965, 0.9995, 0.225965, 0.9995, 0.109068, 0.9995, 0.8918, 0.000499904, 0.770876, 0.000499845, 0.770876, 0.000499845, 0.8918, 0.000499845, 0.225965, 0.000499547, 0.109068, 0.000499487, 0.109068, 0.000499487, 0.225965, 0.000499547]; + indices = new [3, 110, 1, 119, 121, 120, 121, 119, 118, 2, 6, 7, 6, 2, 3, 5, 3, 1, 3, 5, 6, 7, 10, 11, 10, 7, 6, 34, 29, 28, 29, 34, 36, 9, 10, 8, 10, 9, 11, 20, 27, 21, 27, 20, 19, 14, 34, 39, 34, 14, 4, 14, 40, 13, 40, 14, 39, 15, 16, 114, 125, 123, 122, 123, 125, 124, 16, 22, 17, 22, 16, 23, 23, 25, 22, 25, 23, 26, 23, 15, 21, 15, 23, 16, 52, 25, 26, 25, 52, 24, 28, 29, 106, 128, 126, 129, 126, 128, 127, 29, 35, 30, 35, 29, 36, 36, 37, 35, 37, 36, 38, 9, 37, 38, 37, 9, 8, 32, 5, 12, 5, 32, 33, 34, 32, 39, 32, 34, 33, 98, 100, 99, 100, 98, 101, 43, 102, 42, 131, 133, 132, 133, 131, 130, 42, 48, 43, 48, 42, 47, 44, 48, 49, 48, 44, 43, 47, 50, 48, 49, 50, 51, 50, 49, 48, 52, 50, 24, 50, 52, 51, 20, 45, 19, 45, 20, 47, 46, 27, 53, 27, 46, 21, 40, 27, 13, 27, 40, 53, 13, 12, 14, 13, 19, 12, 27, 19, 13, 14, 5, 4, 5, 14, 12, 53, 47, 46, 47, 53, 45, 40, 45, 53, 40, 32, 45, 39, 32, 40, 11, 4, 7, 9, 4, 11, 9, 34, 4, 38, 34, 9, 51, 46, 49, 52, 46, 51, 52, 21, 46, 26, 21, 52, 35, 31, 30, 31, 35, 33, 6, 5, 10, 2, 4, 0, 4, 2, 7, 36, 34, 38, 23, 21, 26, 49, 41, 44, 41, 49, 46, 22, 18, 17, 18, 22, 20, 25, 20, 22, 24, 20, 25, 24, 47, 20, 50, 47, 24, 37, 33, 35, 8, 33, 37, 8, 5, 33, 10, 5, 8, 59, 65, 60, 65, 59, 62, 60, 64, 61, 64, 60, 65, 61, 63, 58, 63, 61, 64, 58, 62, 59, 62, 58, 63, 19, 59, 12, 59, 19, 58, 12, 60, 32, 60, 12, 59, 32, 61, 45, 61, 32, 60, 45, 58, 19, 58, 45, 61, 54, 63, 57, 63, 54, 62, 57, 64, 56, 64, 57, 63, 56, 65, 55, 65, 56, 64, 55, 62, 54, 62, 55, 65, 57, 67, 54, 67, 57, 66, 54, 68, 55, 68, 54, 67, 55, 69, 56, 69, 55, 68, 56, 66, 57, 66, 56, 69, 74, 78, 75, 78, 74, 79, 75, 81, 76, 81, 75, 78, 76, 80, 77, 80, 76, 81, 77, 79, 74, 79, 77, 80, 66, 75, 67, 75, 66, 74, 67, 76, 68, 76, 67, 75, 68, 77, 69, 77, 68, 76, 69, 74, 66, 74, 69, 77, 71, 79, 70, 79, 71, 78, 70, 80, 73, 80, 70, 79, 73, 81, 72, 81, 73, 80, 72, 78, 71, 78, 72, 81, 86, 90, 87, 90, 86, 91, 87, 93, 88, 93, 87, 90, 88, 92, 89, 92, 88, 93, 89, 91, 86, 91, 89, 92, 70, 87, 71, 87, 70, 86, 71, 88, 72, 88, 71, 87, 72, 89, 73, 89, 72, 88, 73, 86, 70, 86, 73, 89, 83, 91, 82, 91, 83, 90, 82, 92, 85, 92, 82, 91, 85, 93, 84, 93, 85, 92, 84, 90, 83, 90, 84, 93, 82, 95, 83, 95, 82, 94, 83, 96, 84, 96, 83, 95, 84, 97, 85, 97, 84, 96, 85, 94, 82, 94, 85, 97, 94, 99, 95, 99, 94, 98, 95, 100, 96, 100, 95, 99, 96, 101, 97, 101, 96, 100, 97, 98, 94, 98, 97, 101, 41, 104, 105, 104, 41, 46, 108, 31, 33, 31, 108, 109, 0, 112, 113, 112, 0, 4, 18, 116, 117, 116, 18, 20, 102, 47, 42, 47, 102, 103, 47, 104, 46, 104, 47, 103, 106, 34, 28, 34, 106, 107, 107, 33, 34, 33, 107, 108, 110, 5, 1, 5, 110, 111, 5, 112, 4, 112, 5, 111, 114, 21, 15, 21, 114, 115, 115, 20, 21, 20, 115, 116, 113, 119, 110, 119, 113, 118, 110, 120, 111, 120, 110, 119, 111, 121, 112, 121, 111, 120, 112, 118, 113, 118, 112, 121, 117, 123, 114, 123, 117, 122, 114, 124, 115, 124, 114, 123, 115, 125, 116, 125, 115, 124, 116, 122, 117, 122, 116, 125, 109, 127, 106, 127, 109, 126, 106, 128, 107, 128, 106, 127, 107, 129, 108, 129, 107, 128, 108, 126, 109, 126, 108, 129, 105, 131, 102, 131, 105, 130, 102, 132, 103, 132, 102, 131, 103, 133, 104, 133, 103, 132, 104, 130, 105, 130, 104, 133, 105, 43, 44, 43, 105, 102, 105, 44, 41, 106, 30, 109, 30, 106, 29, 109, 30, 31, 113, 3, 2, 3, 113, 110, 113, 2, 0, 114, 17, 117, 17, 114, 16, 117, 17, 18]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/EiffelTower.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/EiffelTower.as new file mode 100644 index 0000000..741c44a --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/EiffelTower.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class EiffelTower extends Stage3DData { + + public function EiffelTower(){ + vertices = new [-13.3843, 5.79304, 69.2586, 0.335107, 5.79304, 55.5392, 0.335111, 5.79304, 82.978, 14.0545, 5.79304, 69.2586, -15.9635, 6.9E-5, 69.2586, 0.335108, 6.9E-5, 52.9599, 0.335113, 6.5E-5, 85.5572, 16.6338, 6.5E-5, 69.2586, 32.7709, 43.2553, 18.5896, 13.8452, 43.2553, -0.336169, 51.6967, 43.2553, -0.336178, 32.7709, 43.2553, -19.2619, 19.2608, 43.2553, -32.7721, 0.335072, 43.2554, -13.8463, 0.335052, 43.2553, -51.6978, -18.5907, 43.2553, -32.7721, 0.334864, 259.834, -7.86216, 7.86093, 259.834, -0.336106, -7.1912, 259.834, -0.3361, 0.334869, 259.834, 7.18996, 0.334861, 265.756, -8.20084, 8.1996, 265.756, -0.336105, -7.52987, 265.756, -0.336097, 0.334867, 265.756, 7.52863, 0.334859, 270.102, -9.64794, 9.64671, 270.102, -0.336102, -8.97698, 270.102, -0.336093, 0.334867, 270.102, 8.97575, 0.334858, 274.708, -9.64794, 9.64671, 274.708, -0.336101, -8.97698, 274.708, -0.336092, 0.334866, 274.708, 8.97575, 0.33486, 274.708, -6.63611, 6.63487, 274.708, -0.336099, -5.96515, 274.708, -0.336092, 0.334864, 274.708, 5.96392, 0.334858, 279.973, -6.63611, 6.63487, 279.973, -0.336097, -5.96515, 279.973, -0.33609, 0.334863, 279.973, 5.96392, 0.334857, 279.973, -9.05132, 9.05009, 279.973, -0.336098, -8.38037, 279.973, -0.336089, 0.334864, 279.973, 8.37913, 0.334857, 281.103, -9.05132, 9.05009, 281.103, -0.336097, -8.38037, 281.103, -0.336089, 0.334864, 281.103, 8.37913, 0.334858, 281.103, -5.91187, 5.91064, 281.103, -0.336096, -5.24092, 281.103, -0.33609, 0.334862, 281.103, 5.23969, 0.334857, 283.972, -5.91187, 5.91064, 283.972, -0.336095, -5.24092, 283.972, -0.336089, 0.334862, 283.972, 5.23969, 0.334864, 283.972, -1.64667, 1.64545, 283.972, -0.336083, -0.97572, 283.972, -0.336081, 0.334865, 283.972, 0.974502, 0.334812, 313.94, -0.336128, 0.334847, 254.11, -7.86214, 7.86091, 254.11, -0.336081, -7.19121, 254.11, -0.336076, 0.334853, 254.11, 7.18998, 0.334818, 97.9879, -27.1355, 0.334811, 101.591, -26.1229, 27.1341, 97.9879, -0.336151, 26.1215, 101.591, -0.336152, 0.334801, 97.9879, 26.4632, 0.334797, 101.591, 25.4505, -26.4645, 97.9879, -0.336168, -25.4519, 101.591, -0.336163, 0.334814, 111.748, 24.7498, -24.7511, 111.748, -0.336146, -28.4811, 112.928, -0.336139, -22.0484, 113.604, -0.336137, 0.334814, 111.748, -25.4221, -28.4811, 113.604, -0.336139, 0.334815, 113.604, 22.047, 0.334816, 112.928, 28.4797, 0.334814, 112.928, -29.152, 0.334814, 113.604, -29.152, 0.334816, 113.604, 28.4797, 22.718, 113.604, -0.33614, 25.4208, 111.748, -0.336149, 0.334814, 113.604, -22.7193, 29.1507, 112.928, -0.336145, 29.1507, 113.604, -0.336145, 0.33481, 107.7, 23.784, -23.7853, 107.7, -0.336149, 0.33481, 107.7, -24.4563, 24.4549, 107.7, -0.336153, -22.0484, 112.618, -0.336137, 0.334815, 112.618, 22.047, 22.718, 112.618, -0.33614, 0.334814, 112.618, -22.7193, -19.5782, 112.618, -0.336137, 0.334814, 112.618, 19.5769, 20.2479, 112.618, -0.33614, 0.334814, 112.618, -20.2492, -19.5782, 115.804, -0.336137, 0.334814, 115.804, 19.5769, 20.2479, 115.804, -0.33614, 0.334814, 115.804, -20.2492, 0.334819, 123.706, -20.569, 20.5676, 123.706, -0.336197, -19.898, 123.706, -0.33618, 0.334836, 123.706, 19.8966, 0.334827, 134.488, -18.3737, 18.3724, 134.488, -0.336186, -17.7027, 134.488, -0.336171, 0.334843, 134.488, 17.7014, 0.334832, 144.618, -16.8225, 16.8212, 144.618, -0.336179, -16.1515, 144.618, -0.336164, 0.334846, 144.618, 16.1501, 0.33483, 155.038, -15.4294, 15.4281, 155.038, -0.336167, -14.7584, 155.038, -0.336155, 0.334844, 155.038, 14.7571, 0.334834, 165.457, -14.237, 14.2357, 165.457, -0.336159, -13.566, 165.457, -0.336148, 0.334846, 165.457, 13.5647, 45.3155, 32.0861, 13.8556, 31.1237, 32.0861, -0.336177, 59.5073, 32.0861, -0.336184, 45.3155, 32.0861, -14.528, 11.9146, 21.0862, -55.7062, 0.335075, 21.0862, -44.1267, 0.335063, 21.0862, -67.2858, -11.2445, 21.0862, -55.7062, 14.5269, 32.0861, -45.3166, 0.335052, 32.0861, -31.1248, 0.335037, 32.0861, -59.5084, -13.8568, 32.0861, -45.3166, -18.5907, 43.2553, 32.0997, 0.335055, 43.2553, 13.1739, 0.335043, 43.2553, 51.0255, 19.2608, 43.2553, 32.0997, -55.035, 21.0862, -11.9157, -43.4555, 21.0862, -0.336169, -66.6145, 21.0862, -0.336173, -55.035, 21.0862, 11.2434, -13.8568, 32.0861, 44.6443, 0.33505, 32.0861, 30.4524, 0.335041, 32.0861, 58.8361, 14.5269, 32.0861, 44.6443, -69.2597, 5.79305, -14.0556, -55.5403, 5.79305, -0.336165, -82.9791, 5.79305, -0.336169, -69.2597, 5.79305, 13.3832, -69.2597, 8.5E-5, -16.6348, -52.961, 8.1E-5, -0.336163, -85.5583, 8.4E-5, -0.336168, -69.2597, 8.1E-5, 15.9625, -11.2445, 21.0862, 55.0338, 0.335065, 21.0862, 43.4543, 0.335057, 21.0862, 66.6134, 11.9146, 21.0862, 55.0338, 55.7051, 21.0862, 11.2434, 44.1255, 21.0862, -0.336181, 67.2846, 21.0862, -0.336187, 55.7051, 21.0862, -11.9157, 14.0545, 5.79306, -69.931, 0.335087, 5.79306, -56.2116, 0.335082, 5.79305, -83.6504, -13.3843, 5.79305, -69.931, 16.6337, 8.9E-5, -69.931, 0.335087, 9.2E-5, -53.6323, 0.335081, 7.5E-5, -86.2296, -15.9636, 7.8E-5, -69.931, 69.9299, 5.79304, 13.3832, 56.2105, 5.79305, -0.336195, 83.6493, 5.79303, -0.336202, 69.9299, 5.79303, -14.0556, 69.9299, 7.4E-5, 15.9625, 53.6312, 7.9E-5, -0.336194, 86.2285, 5.6E-5, -0.336203, 69.9299, 6.2E-5, -16.6348, 67.2379, 10.0862, 7.48782, 59.4139, 10.0862, -0.336186, 75.0619, 10.0862, -0.33619, 67.2379, 10.0862, -8.1602, -7.48893, 10.0862, 66.5667, 0.335088, 10.0862, 58.7427, 0.335084, 10.0862, 74.3907, 8.1591, 10.0862, 66.5667, 0.334818, 48.4294, 48.5406, -48.5419, 48.4294, -0.336134, -49.6023, 54.1961, -0.336136, -44.139, 54.8719, -0.33614, 0.334816, 48.4294, -49.2129, -49.6023, 54.8719, -0.336136, 0.334816, 54.8719, 44.1377, 0.334816, 54.1961, 49.6009, 0.334816, 54.1961, -50.2732, 0.334816, 54.8719, -50.2732, 0.334816, 54.8719, 49.6009, 44.8087, 54.8719, -0.33614, 49.2116, 48.4294, -0.336134, 0.334818, 54.8719, -44.81, 50.2719, 54.1961, -0.336136, 50.2719, 54.8719, -0.336136, 0.334818, 60.5729, 44.1377, -44.139, 60.5729, -0.336142, -49.6023, 60.5729, -0.336136, -40.6038, 61.2487, -0.336134, 0.334816, 60.5729, -44.81, -49.6023, 61.2487, -0.336136, 0.334816, 61.2487, 40.6025, 0.334816, 60.5729, 49.6009, 0.334818, 60.5729, -50.2732, 0.334818, 61.2487, -50.2732, 0.334816, 61.2487, 49.6009, 41.2735, 61.2487, -0.336138, 44.8087, 60.5729, -0.336142, 0.33482, 61.2487, -41.2748, 50.2719, 60.5729, -0.33614, 50.2719, 61.2487, -0.33614, 0.334818, 48.4294, 23.0758, -23.0771, 48.4294, -0.336123, 0.33482, 48.4294, -23.7481, 23.7468, 48.4294, -0.336124, 0.334431, 54.196, 23.0755, -23.0775, 54.196, -0.336452, 0.334433, 54.196, -23.7484, 23.7464, 54.196, -0.336453, -40.6038, 54.196, -0.33613, 0.33482, 54.196, 40.6025, 41.2735, 54.196, -0.336136, 0.33482, 54.196, -41.2748, -32.1008, 43.2553, -19.262, -13.1751, 43.2553, -0.336175, -51.0266, 43.2553, -0.336181, -32.1008, 43.2553, 18.5896, -10.7378, 62.3888, 27.7785, -10.7378, 55.1481, 27.7785, -3.75734, 62.3888, 20.798, -3.75734, 55.1481, 20.798, -27.7798, 55.1481, 10.7364, -20.7994, 62.3888, 3.75599, -27.7798, 62.3888, 10.7364, -20.7994, 55.1481, 3.75599, -8.79771, 77.1126, 24.2592, 0.335081, 77.1126, 15.1264, 0.335078, 77.1126, 33.392, 9.46787, 77.1126, 24.2592, -24.2093, 77.1126, -9.46896, -15.0765, 77.1126, -0.336167, -33.3421, 77.1126, -0.336169, -24.2093, 77.1126, 8.79662, -7.95991, 87.9022, 21.3904, 0.335083, 87.9022, 13.0954, 0.335082, 87.9022, 29.6854, 8.63008, 87.9022, 21.3904, 0.334843, 185.064, -12.4107, 12.4094, 185.064, -0.336145, -11.7397, 185.064, -0.336134, 0.334853, 185.064, 11.7384, 28.4536, 55.1481, 10.7406, 21.469, 62.3888, 3.756, 28.4536, 62.3888, 10.7406, 4.42696, 62.3888, 20.798, 21.469, 55.1481, 3.756, 11.4116, 55.1481, 27.7826, 11.4116, 62.3888, 27.7826, 4.42696, 55.1481, 20.798, -21.3915, 87.9022, -8.63117, -13.0965, 87.9022, -0.336168, -29.6865, 87.9022, -0.336172, -21.3915, 87.9022, 7.95882, 8.6301, 87.9023, -22.0627, 0.335105, 87.9023, -13.7677, 0.335102, 87.9023, -30.3577, -7.95989, 87.9023, -22.0627, -44.6454, 32.0861, -14.528, -30.4536, 32.0861, -0.33615, -58.8372, 32.0861, -0.336155, -44.6454, 32.0861, 13.8557, 10.3218, 66.2023, -28.4846, 0.335098, 66.2023, -18.4979, 0.335095, 66.2023, -38.4713, -9.65161, 66.2023, -28.4846, -3.75733, 55.1481, -21.4703, -10.6774, 55.1481, -28.3904, -3.75733, 62.3888, -21.4703, -10.6774, 62.3888, -28.3904, -27.7194, 55.1481, -11.3483, -20.7994, 62.3888, -4.42828, -20.7994, 55.1481, -4.42828, -27.7194, 62.3888, -11.3483, 22.0617, 87.9022, 7.95884, 13.7667, 87.9022, -0.336155, 30.3567, 87.9022, -0.336152, 22.0617, 87.9022, -8.63115, -66.5678, 10.0862, -8.16017, -58.7438, 10.0862, -0.336156, -74.3918, 10.0862, -0.336158, -66.5678, 10.0862, 7.48785, 0.334836, 227.724, -9.79436, 9.79308, 227.724, -0.336123, -9.1234, 227.724, -0.336114, 0.334844, 227.724, 9.12212, 0.33485, 194.686, -11.8025, 11.8012, 194.686, -0.336137, -11.1315, 194.686, -0.336127, 0.334861, 194.686, 11.1303, 0.334843, 241.612, -8.79994, 8.79869, 241.612, -0.336102, -8.129, 241.612, -0.336095, 0.334849, 241.612, 8.12774, 0.334844, 247.897, -8.60194, 8.6007, 247.897, -0.336091, -7.93101, 247.897, -0.336084, 0.334851, 247.897, 7.92977, 0.334845, 234.867, -9.3354, 9.33415, 234.867, -0.336101, -8.66445, 234.867, -0.336094, 0.334851, 234.867, 8.6632, 0.334852, 220.022, -10.2582, 10.2569, 220.022, -0.336109, -9.58719, 220.022, -0.336102, 0.334859, 220.022, 9.58595, 0.334851, 212.069, -10.8747, 10.8734, 212.069, -0.336116, -10.2037, 212.069, -0.336108, 0.334858, 212.069, 10.2024, 0.334847, 203.607, -11.4308, 11.4296, 203.607, -0.336125, -10.7599, 203.607, -0.336116, 0.334857, 203.607, 10.7586, 0.334838, 175.224, -13.3195, 13.3182, 175.224, -0.33615, -12.6486, 175.224, -0.33614, 0.33485, 175.224, 12.6473, -27.8134, 66.2023, -10.3229, -17.8267, 66.2023, -0.33617, -37.8001, 66.2023, -0.336173, -27.8134, 66.2023, 9.65053, 28.4836, 66.2023, 9.65055, 18.4969, 66.2023, -0.336157, 38.4703, 66.2023, -0.336162, 28.4836, 66.2023, -10.3229, -9.65162, 66.2023, 27.8123, 0.335092, 66.2023, 17.8256, 0.335077, 66.2023, 37.799, 10.3218, 66.2023, 27.8123, 9.4679, 77.1126, -24.9486, 0.335118, 77.1126, -15.8158, 0.335103, 77.1126, -34.0814, -8.79768, 77.1126, -24.9486, 24.8795, 77.1126, 8.79664, 15.7467, 77.1126, -0.336147, 34.0123, 77.1126, -0.336152, 24.8795, 77.1126, -9.46894, 8.15908, 10.0862, -67.239, 0.335075, 10.0862, -59.415, 0.335067, 10.0862, -75.0631, -7.48894, 10.0862, -67.239]; + uvs = new [0.420217, 0.0952817, 0.5, 0.175065, 0.5, 0.0154986, 0.579783, 0.0952818, 0.405218, 0.0952818, 0.5, 0.190064, 0.5, 0.000499487, 0.594783, 0.0952819, 0.688626, 0.38994, 0.578566, 0.5, 0.798686, 0.5, 0.688626, 0.61006, 0.61006, 0.688626, 0.5, 0.578566, 0.5, 0.798686, 0.38994, 0.688626, 0.499999, 0.543766, 0.543765, 0.5, 0.456232, 0.499999, 0.499999, 0.456233, 0.499999, 0.545736, 0.545735, 0.5, 0.454262, 0.499999, 0.499999, 0.454263, 0.499999, 0.554151, 0.55415, 0.5, 0.445847, 0.499999, 0.499999, 0.445848, 0.499999, 0.554151, 0.55415, 0.5, 0.445847, 0.499999, 0.499999, 0.445848, 0.499999, 0.536636, 0.536635, 0.499999, 0.463362, 0.499999, 0.499999, 0.463363, 0.499999, 0.536636, 0.536635, 0.499999, 0.463362, 0.499999, 0.499999, 0.463363, 0.499999, 0.550682, 0.550681, 0.499999, 0.449316, 0.499999, 0.499999, 0.449317, 0.499999, 0.550682, 0.550681, 0.499999, 0.449316, 0.499999, 0.499999, 0.449317, 0.499999, 0.532425, 0.532424, 0.499999, 0.467573, 0.499999, 0.499999, 0.467574, 0.499999, 0.532425, 0.532424, 0.499999, 0.467573, 0.499999, 0.499999, 0.467574, 0.499999, 0.507621, 0.50762, 0.499999, 0.492377, 0.499999, 0.499999, 0.492378, 0.499998, 0.5, 0.499999, 0.543766, 0.543765, 0.499999, 0.456232, 0.499999, 0.499999, 0.456233, 0.499998, 0.655847, 0.499998, 0.649958, 0.655846, 0.5, 0.649957, 0.5, 0.499998, 0.344152, 0.499998, 0.350041, 0.344151, 0.5, 0.35004, 0.5, 0.499998, 0.354116, 0.354115, 0.5, 0.332424, 0.5, 0.369832, 0.5, 0.499998, 0.645883, 0.332424, 0.5, 0.499998, 0.369834, 0.499998, 0.332425, 0.499998, 0.667574, 0.499998, 0.667574, 0.499998, 0.332425, 0.630164, 0.5, 0.645882, 0.5, 0.499998, 0.630166, 0.667573, 0.5, 0.667573, 0.5, 0.499998, 0.359733, 0.359731, 0.5, 0.499998, 0.640267, 0.640265, 0.5, 0.369832, 0.5, 0.499998, 0.369834, 0.630164, 0.5, 0.499998, 0.630166, 0.384197, 0.5, 0.499998, 0.384198, 0.6158, 0.5, 0.499998, 0.615801, 0.384197, 0.5, 0.499998, 0.384198, 0.6158, 0.5, 0.499998, 0.615801, 0.499998, 0.617661, 0.617659, 0.5, 0.382337, 0.5, 0.499998, 0.382339, 0.499998, 0.604895, 0.604893, 0.5, 0.395104, 0.5, 0.499999, 0.395105, 0.499998, 0.595874, 0.595872, 0.5, 0.404125, 0.5, 0.499999, 0.404126, 0.499998, 0.587772, 0.587771, 0.5, 0.412226, 0.5, 0.499999, 0.412227, 0.499998, 0.580838, 0.580837, 0.5, 0.41916, 0.5, 0.499999, 0.419161, 0.761577, 0.41747, 0.679046, 0.5, 0.844107, 0.5, 0.761577, 0.58253, 0.567339, 0.821996, 0.5, 0.754657, 0.5, 0.889335, 0.432661, 0.821996, 0.58253, 0.761577, 0.5, 0.679047, 0.5, 0.844108, 0.417469, 0.761577, 0.38994, 0.311374, 0.5, 0.421434, 0.5, 0.201314, 0.61006, 0.311374, 0.178003, 0.567339, 0.245342, 0.5, 0.110664, 0.5, 0.178003, 0.432661, 0.417469, 0.238423, 0.5, 0.320953, 0.5, 0.155892, 0.58253, 0.238423, 0.0952817, 0.579783, 0.175065, 0.5, 0.0154986, 0.5, 0.0952818, 0.420217, 0.0952818, 0.594782, 0.190064, 0.5, 0.000499457, 0.5, 0.0952819, 0.405217, 0.432661, 0.178004, 0.5, 0.245343, 0.5, 0.110665, 0.567339, 0.178004, 0.821996, 0.432661, 0.754657, 0.5, 0.889335, 0.5, 0.821996, 0.567339, 0.579783, 0.904718, 0.5, 0.824935, 0.5, 0.984501, 0.420217, 0.904718, 0.594782, 0.904718, 0.5, 0.809936, 0.5, 0.999501, 0.405217, 0.904718, 0.904718, 0.420217, 0.824935, 0.5, 0.984501, 0.5, 0.904718, 0.579783, 0.904718, 0.405218, 0.809936, 0.5, 0.999501, 0.5, 0.904718, 0.594783, 0.889063, 0.454501, 0.843564, 0.5, 0.934563, 0.5, 0.889063, 0.545499, 0.454501, 0.110936, 0.5, 0.156436, 0.5, 0.065437, 0.545499, 0.110936, 0.499998, 0.215764, 0.215763, 0.5, 0.209597, 0.5, 0.241367, 0.5, 0.499998, 0.784235, 0.209597, 0.5, 0.499998, 0.241369, 0.499998, 0.209598, 0.499998, 0.790401, 0.499998, 0.790401, 0.499998, 0.209598, 0.758629, 0.5, 0.784234, 0.5, 0.499998, 0.758631, 0.7904, 0.5, 0.7904, 0.5, 0.499998, 0.241369, 0.241367, 0.5, 0.209597, 0.5, 0.261926, 0.5, 0.499998, 0.758631, 0.209597, 0.5, 0.499998, 0.261927, 0.499998, 0.209598, 0.499998, 0.790401, 0.499998, 0.790401, 0.499998, 0.209598, 0.738071, 0.5, 0.758629, 0.5, 0.499998, 0.738072, 0.7904, 0.5, 0.7904, 0.5, 0.499998, 0.363851, 0.36385, 0.5, 0.499998, 0.636148, 0.636147, 0.5, 0.499996, 0.363853, 0.363847, 0.500001, 0.499996, 0.63615, 0.636145, 0.500002, 0.261926, 0.5, 0.499998, 0.261927, 0.738071, 0.5, 0.499998, 0.738072, 0.311374, 0.61006, 0.421434, 0.5, 0.201313, 0.5, 0.311374, 0.38994, 0.435607, 0.336503, 0.435607, 0.336503, 0.476201, 0.377097, 0.476201, 0.377097, 0.336502, 0.435609, 0.377096, 0.476203, 0.336502, 0.435609, 0.377096, 0.476203, 0.44689, 0.356969, 0.5, 0.410079, 0.5, 0.303859, 0.55311, 0.356969, 0.357266, 0.55311, 0.410376, 0.5, 0.304155, 0.5, 0.357266, 0.446889, 0.451762, 0.373652, 0.5, 0.421891, 0.5, 0.325414, 0.548238, 0.373652, 0.499998, 0.570218, 0.570216, 0.5, 0.429781, 0.5, 0.499999, 0.429782, 0.663519, 0.435585, 0.622901, 0.476203, 0.663519, 0.435585, 0.523796, 0.377097, 0.622901, 0.476203, 0.564414, 0.336479, 0.564414, 0.336479, 0.523796, 0.377097, 0.373652, 0.548238, 0.421891, 0.5, 0.325414, 0.5, 0.373652, 0.451762, 0.548238, 0.626347, 0.5, 0.578109, 0.5, 0.674586, 0.451762, 0.626347, 0.238423, 0.58253, 0.320953, 0.5, 0.155892, 0.5, 0.238423, 0.417469, 0.558076, 0.663693, 0.5, 0.605617, 0.5, 0.721769, 0.441924, 0.663693, 0.476201, 0.622902, 0.435958, 0.663145, 0.476201, 0.622902, 0.435958, 0.663145, 0.336853, 0.564039, 0.377096, 0.523797, 0.377096, 0.523797, 0.336853, 0.564039, 0.626348, 0.451761, 0.578109, 0.5, 0.674586, 0.5, 0.626348, 0.548238, 0.110936, 0.545499, 0.156436, 0.5, 0.0654368, 0.5, 0.110936, 0.4545, 0.499998, 0.555003, 0.555001, 0.5, 0.444995, 0.5, 0.499999, 0.444997, 0.499999, 0.566681, 0.56668, 0.5, 0.433317, 0.5, 0.499999, 0.433319, 0.499998, 0.54922, 0.549219, 0.5, 0.450778, 0.499999, 0.499999, 0.450779, 0.499998, 0.548068, 0.548067, 0.499999, 0.45193, 0.499999, 0.499999, 0.451931, 0.499998, 0.552334, 0.552333, 0.5, 0.447664, 0.499999, 0.499999, 0.447665, 0.499999, 0.5577, 0.557699, 0.5, 0.442298, 0.499999, 0.499999, 0.442299, 0.499999, 0.561285, 0.561284, 0.5, 0.438713, 0.5, 0.499999, 0.438714, 0.499999, 0.564519, 0.564518, 0.5, 0.435479, 0.5, 0.499999, 0.43548, 0.499998, 0.575503, 0.575502, 0.5, 0.424495, 0.5, 0.499999, 0.424497, 0.336307, 0.558076, 0.394383, 0.5, 0.27823, 0.5, 0.336307, 0.441924, 0.663693, 0.441924, 0.605617, 0.5, 0.721769, 0.5, 0.663693, 0.558076, 0.441924, 0.336307, 0.5, 0.394383, 0.5, 0.27823, 0.558076, 0.336306, 0.55311, 0.64313, 0.5, 0.590019, 0.5, 0.69624, 0.44689, 0.64313, 0.642735, 0.446889, 0.589624, 0.5, 0.695845, 0.5, 0.642734, 0.55311, 0.545499, 0.889064, 0.5, 0.843564, 0.5, 0.934563, 0.4545, 0.889064]; + indices = new [7, 4, 6, 4, 7, 5, 2, 1, 3, 1, 2, 0, 5, 0, 4, 0, 5, 1, 7, 1, 5, 1, 7, 3, 6, 3, 7, 3, 6, 2, 4, 2, 6, 2, 4, 0, 11, 8, 10, 8, 11, 9, 15, 12, 14, 12, 15, 13, 59, 57, 60, 18, 17, 19, 17, 18, 16, 21, 16, 20, 16, 21, 17, 23, 17, 21, 17, 23, 19, 22, 19, 23, 19, 22, 18, 20, 18, 22, 18, 20, 16, 22, 21, 23, 21, 22, 20, 25, 20, 24, 20, 25, 21, 27, 21, 25, 21, 27, 23, 26, 23, 27, 23, 26, 22, 24, 22, 26, 22, 24, 20, 26, 25, 27, 25, 26, 24, 29, 24, 28, 24, 29, 25, 31, 25, 29, 25, 31, 27, 30, 27, 31, 27, 30, 26, 28, 26, 30, 26, 28, 24, 33, 28, 32, 28, 33, 29, 35, 29, 33, 29, 35, 31, 34, 31, 35, 31, 34, 30, 32, 30, 34, 30, 32, 28, 34, 33, 35, 33, 34, 32, 37, 32, 36, 32, 37, 33, 39, 33, 37, 33, 39, 35, 38, 35, 39, 35, 38, 34, 36, 34, 38, 34, 36, 32, 41, 36, 40, 36, 41, 37, 43, 37, 41, 37, 43, 39, 42, 39, 43, 39, 42, 38, 40, 38, 42, 38, 40, 36, 42, 41, 43, 41, 42, 40, 45, 40, 44, 40, 45, 41, 47, 41, 45, 41, 47, 43, 46, 43, 47, 43, 46, 42, 44, 42, 46, 42, 44, 40, 49, 44, 48, 44, 49, 45, 51, 45, 49, 45, 51, 47, 50, 47, 51, 47, 50, 46, 48, 46, 50, 46, 48, 44, 50, 49, 51, 49, 50, 48, 53, 48, 52, 48, 53, 49, 55, 49, 53, 49, 55, 51, 54, 51, 55, 51, 54, 50, 52, 50, 54, 50, 52, 48, 57, 52, 56, 52, 57, 53, 59, 53, 57, 53, 59, 55, 58, 55, 59, 55, 58, 54, 56, 54, 58, 54, 56, 52, 58, 57, 59, 57, 58, 56, 57, 56, 60, 58, 56, 60, 59, 58, 60, 64, 61, 63, 61, 64, 62, 68, 65, 66, 65, 68, 67, 70, 67, 68, 67, 70, 69, 72, 69, 70, 69, 72, 71, 66, 71, 72, 71, 66, 65, 68, 72, 70, 72, 68, 66, 65, 69, 71, 69, 65, 67, 81, 78, 82, 78, 81, 75, 88, 81, 82, 81, 88, 87, 88, 80, 87, 80, 88, 83, 80, 78, 75, 78, 80, 83, 77, 75, 81, 75, 77, 74, 85, 81, 87, 81, 85, 77, 87, 73, 85, 73, 87, 80, 74, 80, 75, 80, 74, 73, 83, 84, 79, 84, 83, 88, 76, 83, 79, 83, 76, 78, 86, 78, 76, 78, 86, 82, 86, 88, 82, 88, 86, 84, 74, 89, 73, 89, 74, 90, 77, 90, 74, 90, 77, 91, 85, 91, 77, 91, 85, 92, 89, 85, 73, 85, 89, 92, 89, 91, 92, 91, 89, 90, 101, 103, 104, 103, 101, 102, 96, 84, 86, 84, 96, 95, 79, 95, 94, 95, 79, 84, 94, 76, 79, 76, 94, 93, 86, 93, 96, 93, 86, 76, 99, 96, 100, 96, 99, 95, 99, 94, 95, 94, 99, 98, 97, 94, 98, 94, 97, 93, 97, 96, 93, 96, 97, 100, 103, 100, 104, 100, 103, 99, 102, 99, 103, 99, 102, 98, 101, 98, 102, 98, 101, 97, 104, 97, 101, 97, 104, 100, 108, 105, 107, 105, 108, 106, 112, 109, 111, 109, 112, 110, 116, 113, 115, 113, 116, 114, 120, 117, 119, 117, 120, 118, 124, 121, 123, 121, 124, 122, 128, 125, 127, 125, 128, 126, 132, 129, 131, 129, 132, 130, 136, 133, 135, 133, 136, 134, 140, 137, 139, 137, 140, 138, 144, 141, 143, 141, 144, 142, 148, 145, 147, 145, 148, 146, 156, 153, 155, 153, 156, 154, 151, 150, 152, 150, 151, 149, 154, 149, 153, 149, 154, 150, 156, 150, 154, 150, 156, 152, 155, 152, 156, 152, 155, 151, 153, 151, 155, 151, 153, 149, 160, 157, 159, 157, 160, 158, 164, 161, 163, 161, 164, 162, 172, 169, 171, 169, 172, 170, 167, 166, 168, 166, 167, 165, 170, 165, 169, 165, 170, 166, 172, 166, 170, 166, 172, 168, 171, 168, 172, 168, 171, 167, 169, 167, 171, 167, 169, 165, 180, 177, 179, 177, 180, 178, 175, 174, 176, 174, 175, 173, 178, 173, 177, 173, 178, 174, 180, 174, 178, 174, 180, 176, 179, 176, 180, 176, 179, 175, 177, 175, 179, 175, 177, 173, 184, 181, 183, 181, 184, 182, 188, 185, 187, 185, 188, 186, 197, 194, 198, 194, 197, 191, 204, 197, 198, 197, 204, 203, 204, 196, 203, 196, 204, 199, 196, 194, 191, 194, 196, 199, 193, 191, 197, 191, 193, 190, 201, 197, 203, 197, 201, 193, 203, 189, 201, 189, 203, 196, 190, 196, 191, 196, 190, 189, 199, 200, 195, 200, 199, 204, 192, 199, 195, 199, 192, 194, 202, 194, 192, 194, 202, 198, 202, 204, 198, 204, 202, 200, 210, 213, 207, 213, 210, 214, 220, 213, 214, 213, 220, 219, 220, 212, 219, 212, 220, 215, 212, 210, 207, 210, 212, 215, 209, 207, 213, 207, 209, 206, 217, 213, 219, 213, 217, 209, 219, 205, 217, 205, 219, 212, 206, 212, 207, 212, 206, 205, 211, 220, 216, 220, 211, 215, 210, 211, 208, 211, 210, 215, 208, 214, 210, 214, 208, 218, 218, 220, 214, 220, 218, 216, 206, 195, 205, 195, 206, 192, 200, 205, 195, 205, 200, 217, 209, 200, 202, 200, 209, 217, 206, 202, 192, 202, 206, 209, 222, 193, 223, 193, 222, 190, 221, 190, 222, 190, 221, 189, 201, 221, 224, 221, 201, 189, 223, 201, 224, 201, 223, 193, 227, 224, 228, 224, 227, 223, 226, 223, 227, 223, 226, 222, 225, 222, 226, 222, 225, 221, 228, 221, 225, 221, 228, 224, 231, 227, 228, 227, 231, 232, 229, 227, 232, 227, 229, 226, 229, 225, 226, 225, 229, 230, 231, 225, 230, 225, 231, 228, 216, 232, 231, 232, 216, 218, 229, 218, 208, 218, 229, 232, 230, 208, 211, 208, 230, 229, 231, 211, 216, 211, 231, 230, 236, 233, 235, 233, 236, 234, 240, 237, 238, 237, 240, 239, 237, 242, 243, 242, 237, 239, 237, 241, 238, 241, 237, 243, 241, 242, 244, 242, 241, 243, 238, 244, 240, 244, 238, 241, 240, 242, 239, 242, 240, 244, 248, 245, 247, 245, 248, 246, 252, 249, 251, 249, 252, 250, 0x0100, 253, 0xFF, 253, 0x0100, 254, 260, 0x0101, 259, 0x0101, 260, 258, 261, 262, 263, 262, 261, 265, 268, 262, 265, 262, 268, 264, 263, 264, 267, 264, 263, 262, 261, 267, 266, 267, 261, 263, 266, 265, 261, 265, 266, 268, 267, 268, 266, 268, 267, 264, 272, 269, 271, 269, 272, 270, 276, 273, 275, 273, 276, 274, 280, 277, 279, 277, 280, 278, 284, 281, 283, 281, 284, 282, 288, 285, 286, 285, 288, 287, 291, 287, 290, 287, 291, 285, 289, 285, 291, 285, 289, 286, 289, 290, 292, 290, 289, 291, 292, 286, 289, 286, 292, 288, 287, 292, 290, 292, 287, 288, 296, 293, 295, 293, 296, 294, 300, 297, 299, 297, 300, 298, 304, 301, 303, 301, 304, 302, 308, 305, 307, 305, 308, 306, 312, 309, 311, 309, 312, 310, 316, 313, 315, 313, 316, 314, 320, 317, 319, 317, 320, 318, 324, 321, 323, 321, 324, 322, 328, 325, 327, 325, 328, 326, 332, 329, 331, 329, 332, 330, 336, 333, 335, 333, 336, 334, 340, 337, 339, 337, 340, 338, 344, 341, 343, 341, 344, 342, 348, 345, 347, 345, 348, 346, 352, 349, 351, 349, 352, 350, 356, 353, 355, 353, 356, 354, 360, 357, 359, 357, 360, 358]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/GrandPalais.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/GrandPalais.as new file mode 100644 index 0000000..d7d412c --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/GrandPalais.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class GrandPalais extends Stage3DData { + + public function GrandPalais(){ + vertices = new [277.762, 78.9852, -118.831, 296.943, 86.5059, -95.0744, 284.196, 86.5988, -94.0227, 309.526, 85.6135, 74.588, 295.761, 79.054, 100.905, 104.466, 87.5075, -385.428, 103.118, 79.958, -401.833, 36.6353, 79.8875, -374.8, 62.4357, 87.443, -362.24, 54.7575, 90.4183, -114.227, 59.2406, 78.9855, -100.874, 56.9866, 86.6442, -75.3554, -26.6538, 76.0972, -399.865, 5.3734, 83.3976, -106.264, -3.29732, 75.1613, -115.636, 7.54369, 77.4925, -102.334, 97.8524, 76.2795, -465.908, 98.8223, 84.51, -454.106, 128.397, 76.3191, -480.526, 128.826, 76.3019, -475.308, -19.2646, 84.3849, -406.09, 28.2294, 76.2057, -437.598, -10.3432, 76.1649, -421.913, -16.3276, 76.1585, -419.48, 102.049, 91.3886, -414.842, 32.2898, 91.3147, -386.477, 61.7914, 76.2582, -466.959, 97.3736, 76.2987, -471.735, 27.138, 76.1806, -450.88, -0.218246, 76.1774, -433.256, -1.47197, 76.1801, -448.532, 56.9854, 86.6494, -75.3353, 56.9866, 86.6442, -75.3554, 186.691, 87.5074, -392.185, 185.343, 79.9579, -408.59, 184.274, 91.3885, -421.599, 255.347, 79.8872, -392.772, 231.943, 87.4428, -376.169, 280.006, 90.418, -132.736, 252.939, 86.6015, -120.661, 313.695, 76.0967, -427.833, 330.027, 83.3972, -132.942, 337.052, 75.1608, -143.604, 180.078, 76.2794, -472.665, 181.048, 84.5099, -460.863, 147.557, 76.3191, -482.101, 147.986, 76.3019, -476.882, 179.599, 76.2986, -478.492, 305.389, 84.3844, -432.768, 253.388, 76.2055, -456.1, 294.004, 76.1645, -446.923, 300.305, 76.1581, -445.499, 215.484, 76.2581, -479.588, 252.297, 76.1803, -469.382, 282.163, 76.1771, -456.46, 280.906, 76.1798, -471.736, 257.728, 91.3144, -405.002, 250.601, 84.9466, 385.547, 251.946, 77.2428, 401.868, 318.423, 77.3742, 374.821, 253.028, 88.5503, 415.002, 292.627, 85.0668, 362.35, 300.257, 90.3577, 114.381, 271.578, 86.6336, 106.85, 381.713, 73.3006, 399.83, 349.633, 83.3739, 106.331, 358.298, 75.0436, 115.61, 257.221, 72.9607, 465.898, 256.256, 81.302, 454.187, 226.679, 72.887, 480.522, 226.249, 72.919, 475.304, 374.333, 81.5353, 406.147, 326.838, 73.0983, 437.574, 365.407, 73.1745, 421.882, 371.391, 73.1863, 419.447, 322.781, 88.6881, 386.622, 293.282, 72.9018, 466.941, 257.701, 72.9249, 471.724, 327.932, 72.9479, 450.854, 355.285, 73.0887, 433.225, 356.541, 72.9474, 448.5, 168.377, 84.9466, 392.321, 169.722, 77.2428, 408.642, 99.7146, 77.3743, 392.839, 97.3464, 88.6882, 405.194, 123.122, 85.0669, 376.314, 75.0126, 90.3578, 132.937, 77.2427, 79.0541, 118.907, 102.073, 86.6337, 120.815, 70.8549, 86.9495, 94.185, 41.3701, 73.3007, 427.869, 24.9848, 83.3741, 133.077, 49.6847, 81.5354, 432.892, 17.9551, 75.0437, 143.649, 26.4783, 77.5077, 128.78, 174.997, 72.9607, 472.672, 174.032, 81.302, 460.961, 207.52, 72.887, 482.101, 207.09, 72.919, 476.882, 175.477, 72.925, 478.498, 101.683, 73.0983, 456.123, 61.0652, 73.1746, 446.954, 54.7635, 73.1864, 445.532, 139.592, 72.9018, 479.602, 102.777, 72.948, 469.403, 72.9078, 73.0888, 456.489, 74.1678, 72.9475, 471.763, 170.804, 88.5503, 421.775, 70.8504, 86.955, 94.1654, 102.073, 86.6337, 120.815, 297.349, 86.9731, 75.9325, 297.084, 78.4507, -122.462, 313.281, 78.5299, 101.39, 83.432, 86.6017, -106.732, -26.6538, 8.34465E-6, -399.865, -3.29735, 8.34465E-6, -115.636, 128.397, 8.34465E-6, -480.526, 128.826, 8.34465E-6, -475.308, -19.2646, 8.34465E-6, -406.09, -10.3432, 8.34465E-6, -421.913, -16.3276, 8.34465E-6, -419.48, 61.7914, 8.34465E-6, -466.959, 97.3736, 8.34465E-6, -471.735, 27.138, 8.34465E-6, -450.88, -0.218246, 8.34465E-6, -433.256, -1.47197, 8.34465E-6, -448.532, 313.695, 8.34465E-6, -427.833, 337.052, 8.34465E-6, -143.604, 147.557, 8.34465E-6, -482.101, 147.986, 8.34465E-6, -476.882, 179.599, 8.34465E-6, -478.492, 305.389, 8.34465E-6, -432.768, 294.004, 8.34465E-6, -446.923, 300.305, 8.34465E-6, -445.499, 215.484, 8.34465E-6, -479.588, 252.297, 8.34465E-6, -469.382, 282.163, 8.34465E-6, -456.46, 280.906, 8.34465E-6, -471.736, 381.713, 8.34465E-6, 399.83, 358.298, 8.34465E-6, 115.61, 226.679, 8.34465E-6, 480.522, 226.249, 8.34465E-6, 475.304, 374.333, 8.34465E-6, 406.147, 365.407, 8.34465E-6, 421.882, 371.391, 8.34465E-6, 419.447, 293.282, 8.34465E-6, 466.941, 257.701, 8.34465E-6, 471.724, 327.932, 8.34465E-6, 450.854, 355.285, 8.34465E-6, 433.225, 356.541, 8.34465E-6, 448.5, 41.3701, 8.34465E-6, 427.869, 49.6846, 8.34465E-6, 432.892, 17.9551, 8.34465E-6, 143.649, 207.52, 8.34465E-6, 482.101, 207.09, 8.34465E-6, 476.882, 175.477, 8.34465E-6, 478.498, 61.0652, 8.34465E-6, 446.954, 54.7635, 8.34465E-6, 445.532, 139.592, 8.34465E-6, 479.602, 102.777, 8.34465E-6, 469.403, 72.9078, 8.34465E-6, 456.489, 74.1678, 8.34465E-6, 471.763, 366.932, 75.1608, -146.059, 343.576, 76.0967, -430.289, 343.576, 8.34465E-6, -430.289, 366.932, 8.34465E-6, -146.059, 411.594, 73.3006, 397.369, 388.179, 75.0436, 113.148, 388.179, 8.34465E-6, 113.148, 411.594, 8.34465E-6, 397.369, 342.734, 86.1718, -98.8849, 356.671, 85.6135, 70.7139, 328.527, 77.4921, -128.711, 347.457, 77.5076, 102.337, 394.988, 8.34465E-6, -150.586, 416.665, 8.34465E-6, 112.882, 394.99, 95.0008, -150.586, 416.667, 95.0008, 112.882, 316.814, 8.34465E-6, -144.154, 338.492, 8.34465E-6, 119.314, 316.816, 95.0024, -144.154, 338.494, 95.0024, 119.314, 416.665, 6.43369, 112.882, 416.667, 85.7668, 112.882, 394.989, 85.7669, -150.586, 394.988, 6.43371, -150.586, 316.815, 6.43534, -144.154, 316.816, 85.7685, -144.154, 338.494, 85.7685, 119.314, 338.492, 6.43533, 119.314, 399.794, 8.34465E-6, -92.163, 411.863, 8.34465E-6, 54.5143, 411.865, 95.0008, 54.5142, 399.797, 95.0008, -92.1632, 321.623, 95.0024, -85.7312, 333.692, 95.0024, 60.9462, 333.69, 8.34465E-6, 60.9463, 321.621, 8.34465E-6, -85.731, 411.865, 85.7668, 54.5142, 399.796, 85.7668, -92.1631, 399.795, 6.4337, -92.163, 411.863, 6.43369, 54.5143, 321.623, 85.7685, -85.7312, 333.692, 85.7685, 60.9462, 333.69, 6.43533, 60.9463, 321.621, 6.43534, -85.731, 364.378, 85.7678, 58.4213, 352.31, 85.7678, -88.256, 352.308, 6.4347, -88.2559, 364.377, 6.43469, 58.4215, 397.393, 95.0012, 114.467, 375.716, 95.0012, -149, 380.523, 95.0012, -90.5773, 392.591, 95.0012, 56.1, 411.866, 127.828, 54.5141, 416.668, 127.828, 112.882, 397.394, 127.828, 114.467, 392.592, 127.828, 56.1, 394.99, 127.828, -150.586, 399.797, 127.828, -92.1632, 380.523, 127.828, -90.5774, 375.716, 127.828, -149, 83.4479, 86.6011, -106.537, 90.6836, 108.482, -90.4777, 108.083, 127.432, -80.2588, 123.146, 135.889, -78.3272, 129.315, 142.827, -69.3947, 144.03, 142.84, -74.6627, 170.611, 142.864, -84.1791, 144.516, 154.142, -47.402, 144.518, 161.701, -47.3739, 172.801, 154.168, -57.5282, 172.803, 161.727, -57.5001, 73.9537, 108.422, -70.7522, 86.8112, 127.356, -55.1781, 57.0034, 86.5062, -75.3573, 91.147, 135.774, -40.5988, 100.943, 142.725, -35.943, 98.1478, 142.676, -20.5656, 93.0984, 142.586, 7.21282, 150.793, 168.519, 2.5687, 125.086, 161.631, -24.4619, 125.084, 154.072, -24.49, 119.711, 153.977, 5.06855, 119.713, 161.536, 5.09663, 70.9326, 85.9481, 94.1492, 86.917, 107.902, 87.0017, 97.0713, 126.945, 69.6786, 98.9741, 135.461, 54.6499, 107.883, 142.447, 48.5091, 102.615, 142.497, 33.7943, 129.839, 161.441, 33.3815, 129.837, 153.882, 33.3535, 106.643, 107.842, 103.731, 122.152, 126.868, 90.9502, 102.112, 85.8532, 120.593, 136.702, 135.346, 86.6484, 141.335, 142.345, 76.8805, 156.712, 142.332, 79.6757, 152.749, 153.812, 52.7858, 179.758, 168.431, 27.1345, 152.751, 161.371, 52.8139, 281.127, 107.902, 71.0426, 268.281, 126.945, 55.6094, 298.064, 85.9478, 75.4847, 263.951, 135.461, 41.0931, 254.159, 142.447, 36.4889, 256.954, 142.496, 21.1115, 235.398, 153.977, -4.438, 204.324, 168.519, -1.83014, 230.025, 153.882, 25.1206, 230.028, 161.441, 25.1486, 235.4, 161.536, -4.40992, 248.438, 108.482, -103.441, 232.94, 127.432, -90.5189, 252.955, 86.6009, -120.466, 218.395, 135.889, -86.1542, 213.767, 142.827, -76.3345, 198.39, 142.84, -79.1297, 202.36, 154.142, -52.1553, 175.359, 168.608, -26.396, 202.362, 161.701, -52.1272, 284.135, 86.506, -94.0217, 268.164, 108.422, -86.7113, 258.021, 127.356, -69.2472, 256.124, 135.774, -54.1557, 247.219, 142.725, -47.9631, 252.487, 142.675, -33.2483, 262.003, 142.586, -6.66686, 225.272, 154.072, -32.7229, 225.274, 161.631, -32.6948, 271.62, 85.853, 106.664, 264.397, 107.842, 90.768, 247.009, 126.868, 80.6901, 231.952, 135.346, 78.8214, 225.787, 142.345, 69.9406, 211.072, 142.332, 75.2086, 182.308, 153.787, 58.1587, 184.491, 142.308, 84.725, 182.31, 161.346, 58.1868, 210.593, 153.812, 48.0325, 210.595, 161.371, 48.0606, 167.087, 179.353, 1.22978, 178.419, 179.319, 10.8407, 188.03, 179.353, -0.491162, 176.698, 179.388, -10.1021, 167.087, 194.649, 1.22982, 178.419, 194.614, 10.8407, 188.03, 194.649, -0.491138, 176.698, 194.683, -10.1021, 173.075, 204.225, 0.737878, 177.927, 204.21, 4.85363, 182.043, 204.225, 0.000891209, 177.19, 204.24, -4.11488, 173.075, 212.267, 0.737915, 177.927, 212.252, 4.85366, 182.043, 212.267, 0.000915527, 177.19, 212.282, -4.11486, 176.147, 216.266, 0.485437, 177.675, 216.261, 1.78097, 178.97, 216.266, 0.253442, 177.443, 216.271, -1.04209, 176.147, 245.321, 0.485498, 177.675, 245.317, 1.78102, 178.97, 245.321, 0.253491, 177.443, 245.326, -1.04207, 217.079, 142.968, 336.962, 205.298, 142.968, 337.93, 215.049, 147.581, 333.49, 246.809, 114.743, 376.627, 209.32, 100.303, 386.882, 249.799, 100.303, 383.556, 208.735, 114.743, 379.756, 209.471, 84.9473, 388.717, 250.584, 84.9473, 385.339, 281.974, 114.797, 357.226, 290.398, 100.365, 361.157, 241.827, 127.233, 365.05, 207.756, 127.233, 367.849, 292.614, 85.0118, 362.15, 267.947, 127.273, 350.639, 206.455, 136.877, 352.017, 235.211, 136.877, 349.654, 249.322, 136.899, 341.869, 224.897, 147.59, 330.36, 205.001, 147.581, 334.316, 160.286, 136.988, 321.98, 118.924, 85.1796, 325.185, 193.517, 142.968, 338.898, 179.223, 143.032, 320.446, 183.611, 147.634, 320.103, 170.661, 114.743, 382.884, 168.841, 100.303, 390.208, 132.8, 114.797, 369.485, 125.131, 100.365, 374.738, 173.686, 127.233, 370.649, 168.358, 84.9474, 392.095, 145.564, 127.273, 360.696, 123.107, 85.012, 376.079, 177.699, 136.877, 354.38, 162.507, 136.899, 349.003, 180.545, 142.979, 336.538, 142.5, 127.396, 323.406, 129.101, 114.945, 324.46, 121.05, 100.529, 325.068, 184.725, 147.59, 333.662, 194.952, 147.581, 335.142, 264.882, 127.396, 313.349, 247.102, 136.987, 314.846, 278.274, 114.945, 312.202, 286.316, 100.528, 311.487, 288.432, 85.1793, 311.256, 203.698, 149.476, 318.459, 228.169, 143.032, 316.424, 223.783, 147.634, 316.802, 162.656, 148.382, 65.0749, 110.049, 115.709, 92.6122, 102.829, 101.259, 103.341, 122.982, 128.178, 85.8855, 140.414, 137.784, 80.1459, 158.266, 143.872, 65.4187, 101.84, 86.2001, 116.72, 182.741, 150.316, 63.4316, 259.222, 115.709, 80.354, 268.096, 101.259, 89.7607, 245.364, 128.178, 75.8288, 227.229, 137.784, 73.012, 271.255, 86.2, 102.798, 202.825, 148.382, 61.774, 207.212, 143.872, 61.3967, 229.491, 142.979, 332.516, -24.5161, 86.1724, -68.7062, -22.5671, 128.311, -44.9871, -19.545, 143.827, -8.2109, -19.3824, 148.2, -6.23275, -10.749, 100.97, 98.829, -10.5794, 85.614, 100.893, -11.4058, 115.413, 90.8361, -12.5028, 127.908, 77.4869, -13.9612, 137.558, 59.739, -31.6066, 143.665, 42.1491, -34.1333, 148.089, 29.0666, -37.0252, 143.746, 17.91, -36.0533, 143.707, 29.7372, -30.6338, 148.052, 40.1104, -35.062, 148.126, 17.765, -15.6752, 148.052, 38.8812, -75.831, 115.534, 59.3714, -86.1478, 101.242, 21.7877, -82.8176, 101.109, 62.3127, -78.9636, 115.659, 21.2512, -88.0446, 85.8933, 21.8862, -84.6624, 85.7578, 63.0449, -56.4303, 115.413, 94.5359, -60.4191, 100.97, 102.911, -64.2037, 127.997, 54.4322, -67.0073, 128.11, 20.3153, -61.4738, 85.6141, 105.075, -49.7934, 127.908, 80.5513, -51.1363, 137.701, 19.0469, -48.7694, 137.607, 47.849, -40.9844, 137.558, 61.9596, -15.5153, 143.665, 40.8269, -17.5282, 150.19, 16.3319, -34.341, 148.2, -5.00355, -35.9907, 148.163, 6.46342, -82.0961, 115.785, -16.8689, -89.4779, 101.376, -18.7372, -68.6961, 115.905, -54.7288, -74.0074, 101.515, -62.4471, -69.8109, 128.222, -13.8015, -91.4268, 86.0288, -19.2724, -59.8577, 128.311, -41.9228, -75.4106, 86.1724, -64.524, -53.5031, 137.796, -9.75511, -48.126, 137.844, -24.9473, -23.6716, 115.905, -58.4287, -21.1028, 137.844, -27.1679, -24.3372, 101.515, -66.5287, 84.5984, 115.905, -67.3257, 73.8113, 101.514, -74.594, 91.3751, 128.311, -54.3502, 97.1533, 137.844, -36.8856, 111.905, 143.826, -19.0127, 60.3727, 86.5063, -75.6342, 112.067, 148.2, -17.0346, 115.934, 143.665, 30.025, 115.775, 148.051, 28.0794, 96.8642, 115.413, 81.939, 87.3995, 100.97, 90.7637, 101.439, 127.908, 68.1238, 104.295, 137.558, 50.0214, 74.3018, 85.9482, 93.8723, 113.922, 150.19, 5.53007, -37.9971, 143.785, 6.0827, -35.6363, 143.827, -6.8886, 138.014, 145.389, -336.521, 149.795, 145.389, -337.489, 140.044, 150.002, -333.049, 108.284, 117.164, -376.186, 145.773, 102.724, -386.441, 105.294, 102.723, -383.115, 146.358, 117.164, -379.315, 145.622, 87.3682, -388.276, 104.509, 87.3681, -384.898, 73.1194, 117.218, -356.785, 64.6956, 102.786, -360.716, 113.266, 129.654, -364.609, 147.337, 129.654, -367.409, 62.4791, 87.4326, -361.709, 87.1466, 129.694, -350.199, 148.638, 139.298, -351.576, 119.882, 139.298, -349.213, 105.771, 139.319, -341.428, 130.196, 150.011, -329.92, 150.092, 150.002, -333.875, 194.807, 139.408, -321.539, 236.169, 87.6004, -324.744, 161.577, 145.389, -338.458, 175.87, 145.453, -320.006, 171.482, 150.055, -319.662, 184.433, 117.164, -382.444, 186.252, 102.724, -389.767, 222.293, 117.218, -369.044, 229.962, 102.786, -374.297, 181.408, 129.654, -370.208, 186.735, 87.3682, -391.655, 209.529, 129.694, -360.255, 231.986, 87.4328, -375.638, 177.394, 139.298, -353.939, 192.586, 139.319, -348.562, 174.548, 145.4, -336.097, 212.593, 129.817, -322.965, 225.993, 117.366, -324.019, 234.043, 102.95, -324.627, 170.368, 150.011, -333.221, 160.141, 150.002, -334.701, 90.2109, 129.817, -312.908, 107.992, 139.408, -314.405, 76.8193, 117.366, -311.761, 68.7772, 102.949, -311.047, 66.6612, 87.6002, -310.815, 151.395, 151.897, -318.019, 126.925, 145.453, -315.984, 131.31, 150.055, -316.361, 192.987, 150.781, -57.9436, 245.044, 118.13, -92.1713, 252.264, 103.68, -102.9, 232.661, 130.577, -78.7542, 215.229, 140.183, -73.0146, 196.827, 146.293, -64.9779, 253.253, 88.621, -116.279, 172.902, 152.715, -56.3003, 95.8713, 118.13, -79.9131, 86.9975, 103.679, -89.3198, 110.279, 130.577, -68.6975, 128.414, 140.183, -65.8806, 83.8377, 88.6208, -102.357, 152.818, 150.781, -54.6427, 147.881, 146.293, -60.9558, 125.602, 145.4, -332.075, -206.707, 67.3016, -87.9359, -123.444, 67.3016, -94.778, -206.707, 97.8085, -87.9429, -123.445, 97.8085, -94.7849, -187.993, 67.3537, 139.8, -104.73, 67.3537, 132.958, -187.993, 97.8607, 139.793, -104.731, 97.8607, 132.951, -161.475, 135.639, -47.5446, -149.444, 135.673, 98.869, 272.669, 115.413, 67.4923, 283.448, 100.97, 74.6535, 305.119, 100.97, 72.8727, 265.9, 127.908, 54.6093, 260.128, 137.558, 37.2158, 245.38, 143.665, 19.3879, 296.877, 85.9478, 75.5822, 305.285, 85.9478, 74.8913, 300.352, 143.665, 14.8705, 242.942, 148.051, 17.6294, 260.404, 115.904, -81.7724, 269.86, 101.514, -90.7041, 255.836, 128.311, -67.8647, 252.986, 137.844, -49.6911, 296.323, 143.826, -34.1672, 282.948, 86.5059, -93.9242, 291.355, 86.5059, -94.6151, 241.089, 150.19, -4.91986, 241.35, 143.826, -29.6498, 239.235, 148.2, -27.4845, 305.288, 85.6136, 74.9363, 356.501, 100.97, 68.6504, 304.462, 115.413, 64.8798, 355.845, 115.413, 60.6575, 354.748, 127.908, 47.3083, 303.365, 127.908, 51.5306, 301.906, 137.558, 33.7827, 353.289, 137.558, 29.5603, 300.193, 148.051, 12.9249, 351.575, 148.051, 8.7026, 291.352, 86.1719, -94.6625, 342.913, 101.514, -96.7073, 291.53, 101.514, -92.4849, 292.196, 115.904, -84.3849, 343.579, 115.904, -88.6073, 344.683, 128.311, -75.1657, 293.301, 128.311, -70.9434, 294.765, 137.844, -53.1242, 346.148, 137.844, -57.3465, 298.34, 150.19, -9.62439, 349.722, 150.19, -13.8467, 347.868, 148.2, -36.4114, 296.485, 148.2, -32.189, 351.735, 143.665, 10.6482, 349.721, 146.025, -13.8622, 347.705, 143.826, -38.3895, 356.499, 98.188, 57.0729, 356.669, 85.8652, 58.8487, 355.843, 109.979, 50.1978, 354.746, 120.178, 38.7156, 353.287, 128.056, 23.4499, 342.911, 98.6324, -85.1581, 342.732, 86.3232, -87.0303, 343.577, 110.38, -78.1909, 344.681, 120.508, -66.6292, 346.146, 128.29, -51.3022, 351.733, 133.041, 7.18284, 349.719, 134.968, -13.8996, 347.703, 133.173, -34.9965, 350.614, 98.188, 57.5566, 349.957, 109.979, 50.6815, 348.86, 120.178, 39.1993, 347.402, 128.056, 23.9336, 337.026, 98.6324, -84.6744, 336.847, 86.3232, -86.5466, 337.691, 110.38, -77.7073, 338.796, 120.508, -66.1456, 340.26, 128.29, -50.8186, 345.848, 133.041, 7.66648, 343.833, 134.968, -13.4159, 341.818, 133.173, -34.5129, 350.61, 85.8483, 57.5108, 350.784, 85.8423, 59.3323, 349.95, 85.8712, 50.592, 348.85, 85.9091, 39.0721, 347.389, 85.9595, 23.7773, 337.022, 86.3171, -84.7201, 337.684, 86.2943, -77.7967, 338.785, 86.2563, -66.2728, 340.247, 86.2059, -50.9749, 345.833, 86.0132, 7.49189, 343.819, 86.0827, -13.5974, 341.804, 86.1522, -34.6875, -267.067, 79.5669, -242.991, -267.067, 79.5669, -212.926, -288.326, 79.5669, -191.666, -318.392, 79.5669, -191.666, -339.651, 79.5669, -212.926, -339.652, 79.5669, -242.991, -318.392, 79.5669, -264.251, -288.326, 79.5669, -264.251, -267.067, 94.0519, -242.991, -267.067, 94.0519, -212.926, -288.326, 94.0519, -191.666, -318.392, 94.0519, -191.666, -339.651, 94.0519, -212.926, -339.652, 94.0519, -242.991, -318.392, 94.0519, -264.251, -288.326, 94.0519, -264.251, -275.231, 99.2254, -239.609, -275.231, 99.2254, -216.307, -291.708, 99.2254, -199.83, -315.01, 99.2254, -199.83, -331.487, 99.2254, -216.307, -331.487, 99.2254, -239.609, -315.01, 99.2254, -256.087, -291.708, 99.2254, -256.087, -282.937, 108.766, -236.418, -282.937, 108.766, -219.499, -294.9, 108.766, -207.536, -311.818, 108.766, -207.536, -323.781, 108.766, -219.499, -323.781, 108.766, -236.418, -311.818, 108.766, -248.381, -294.9, 108.766, -248.381, -301.087, 114.846, -228.9, -301.087, 114.846, -227.017, -302.418, 114.846, -225.686, -304.3, 114.846, -225.686, -305.631, 114.846, -227.017, -305.631, 114.846, -228.9, -304.3, 114.846, -230.231, -302.418, 114.846, -230.231, -302.515, 116.837, -228.308, -302.515, 116.837, -227.609, -303.01, 116.837, -227.115, -303.709, 116.837, -227.115, -304.203, 116.837, -227.609, -304.203, 116.837, -228.308, -303.709, 116.837, -228.802, -303.01, 116.837, -228.802, -301.805, 117.518, -228.602, -301.805, 117.518, -227.315, -302.715, 117.518, -226.404, -304.003, 117.518, -226.404, -304.913, 117.518, -227.315, -304.913, 117.518, -228.602, -304.003, 117.518, -229.512, -302.715, 117.518, -229.512, -303.359, 125.145, -227.958, -272.841, 71.7919, -48.1023, -225.565, 71.7919, -0.826758, -225.565, 71.7919, 66.0309, -272.841, 71.7919, 113.306, -339.699, 71.7919, 113.306, -386.974, 71.7919, 66.0309, -386.974, 71.7919, -0.826746, -339.699, 71.7919, -48.1023, -272.841, 92.9652, -48.1023, -225.565, 92.9652, -0.82677, -225.565, 92.9652, 66.0309, -272.841, 92.9652, 113.307, -339.699, 92.9652, 113.306, -386.974, 92.9652, 66.0309, -386.974, 92.9652, -0.826746, -339.699, 92.9652, -48.1023, -280.361, 104.47, -29.9473, -243.72, 104.47, 6.69327, -243.72, 104.47, 58.5109, -280.361, 104.47, 95.1515, -332.179, 104.47, 95.1515, -368.819, 104.47, 58.5109, -368.819, 104.47, 6.69329, -332.179, 104.47, -29.9473, -287.459, 125.686, -12.8116, -260.856, 125.686, 13.7911, -260.856, 125.686, 51.413, -287.459, 125.686, 78.0158, -325.081, 125.686, 78.0158, -351.683, 125.686, 51.4131, -351.683, 125.686, 13.7911, -325.081, 125.686, -12.8116, -304.177, 139.205, 27.5491, -301.217, 139.205, 30.5091, -301.217, 139.205, 34.6951, -304.177, 139.205, 37.6551, -308.363, 139.205, 37.655, -311.323, 139.205, 34.6951, -311.323, 139.205, 30.5091, -308.363, 139.205, 27.5491, -305.493, 143.632, 30.7258, -304.393, 143.632, 31.8249, -304.393, 143.632, 33.3792, -305.493, 143.632, 34.4783, -307.047, 143.632, 34.4783, -308.146, 143.632, 33.3793, -308.146, 143.632, 31.8249, -307.047, 143.632, 30.7259, -304.838, 145.147, 29.1466, -302.814, 145.147, 31.1708, -302.814, 145.147, 34.0334, -304.838, 145.147, 36.0576, -307.701, 145.147, 36.0576, -309.725, 145.147, 34.0334, -309.725, 145.147, 31.1708, -307.701, 145.147, 29.1466, -306.27, 162.107, 32.6021, -272.878, 78.8504, 280.445, -272.878, 78.8504, 310.511, -294.138, 78.8504, 331.771, -324.203, 78.8504, 331.77, -345.463, 78.8504, 310.511, -345.463, 78.8504, 280.445, -324.203, 78.8504, 259.186, -294.138, 78.8504, 259.186, -272.878, 94.0519, 280.445, -272.878, 94.0519, 310.511, -294.138, 94.0519, 331.771, -324.203, 94.0519, 331.77, -345.463, 94.0519, 310.511, -345.463, 94.0519, 280.445, -324.203, 94.0519, 259.186, -294.138, 94.0519, 259.186, -281.042, 99.2254, 283.827, -281.042, 99.2254, 307.129, -297.519, 99.2254, 323.606, -320.822, 99.2254, 323.606, -337.299, 99.2254, 307.129, -337.299, 99.2254, 283.827, -320.822, 99.2254, 267.35, -297.519, 99.2254, 267.35, -288.748, 108.766, 287.019, -288.748, 108.766, 303.937, -300.711, 108.766, 315.9, -317.63, 108.766, 315.9, -329.593, 108.766, 303.937, -329.593, 108.766, 287.019, -317.63, 108.766, 275.056, -300.711, 108.766, 275.056, -306.898, 114.846, 294.537, -306.898, 114.846, 296.419, -308.229, 114.846, 297.75, -310.112, 114.846, 297.75, -311.443, 114.846, 296.419, -311.443, 114.846, 294.537, -310.112, 114.846, 293.206, -308.229, 114.846, 293.206, -308.327, 116.837, 295.129, -308.327, 116.837, 295.827, -308.821, 116.837, 296.322, -309.52, 116.837, 296.322, -310.014, 116.837, 295.827, -310.014, 116.837, 295.129, -309.52, 116.837, 294.634, -308.821, 116.837, 294.634, -307.617, 117.518, 294.834, -307.617, 117.518, 296.122, -308.527, 117.518, 297.032, -309.814, 117.518, 297.032, -310.724, 117.518, 296.122, -310.724, 117.518, 294.834, -309.814, 117.518, 293.924, -308.527, 117.518, 293.924, -309.17, 125.145, 295.478, -98.7508, 78.3059, -92.6843, -222.435, 78.3071, -82.5077, -214.39, 89.6199, -90.9778, -221.348, 78.3155, -176.145, 4.85632, 78.3134, -194.757, 54.0466, 89.6173, -113.064, 57.7017, 78.3044, -105.557, -73.3577, 86.1548, -62.5763, -119.255, 78.2292, -42.4431, 75.8172, 86.1534, -74.8503, -89.5805, 86.0941, -22.8265, -82.4481, 85.9558, 63.8589, -80.0787, 77.9439, 134.251, -108.52, 78.021, 88.037, -59.9463, 85.8948, 100.423, 89.2286, 85.8933, 88.1485, 76.3737, 77.9424, 121.378, 74.0463, 89.2295, 130.007, -223.594, 89.2324, 154.496, -225.893, 77.6462, 247.297, -224.284, 77.9453, 146.116, -234.06, 77.9679, 132.699, 39.3917, 77.6436, 225.469, -221.348, 8.34465E-6, -176.145, 4.85631, 8.34465E-6, -194.757, -225.893, 8.34465E-6, 247.297, 39.3917, 8.34465E-6, 225.469, -77.9442, 67.2628, 33.6563, -240.408, 67.2628, 47.0066, -77.9466, 97.9322, 33.6275, -240.41, 97.9322, 46.9779, -81.9749, 67.2166, -15.3936, -244.438, 67.2166, -2.04325, -81.9773, 97.8859, -15.4223, -244.441, 97.8859, -2.07196, -265.988, 93.2499, -195.253, -244.477, 87.0464, -209.543, -277.259, 93.2396, -190.214, -266.224, 93.2158, -177.685, -282.142, 97.7899, -163.906, -218.211, 79.304, -206.449, -222.344, 80.8569, -255.429, -244.083, 87.1204, -238.834, -217.554, 79.3814, -255.366, -265.368, 80.8576, -256.007, -258.238, 79.3821, -255.913, -270.163, 79.4529, -256.073, -258.067, 79.4022, -268.637, -350.185, 79.4038, -269.875, -350.356, 79.3837, -257.15, -380.161, 81.6121, -257.635, -342.31, 81.6127, -257.126, -332.838, 87.0451, -210.73, -277.189, 93.2497, -195.404, -361.506, 87.1096, -238.023, -387.538, 79.3844, -257.649, -340.972, 93.2146, -178.689, -340.736, 93.2487, -196.257, -325.429, 97.7892, -164.488, -327.678, 93.2489, -196.082, -303.782, 104.131, -164.445, -388.195, 79.307, -208.733, -323.431, 79.3138, -190.856, -327.677, 79.3215, -196.104, -277.258, 79.3134, -190.236, -277.189, 79.3216, -195.426, -260.717, 87.0462, -209.761, -323.432, 93.2389, -190.834, -273.571, 92.4084, 263.746, -273.335, 92.4298, 246.177, -288.878, 97.0481, 231.991, -252.451, 86.1588, 278.588, -310.525, 103.389, 231.968, -226.112, 78.541, 276.177, -231.559, 79.8233, 325.033, -252.845, 86.1401, 307.88, -226.769, 78.4636, 325.094, -274.583, 79.8241, 324.455, -267.453, 78.4644, 324.547, -267.624, 78.4442, 337.272, -359.742, 78.4459, 336.035, -359.571, 78.466, 323.31, -396.753, 78.4666, 322.81, -330.875, 78.4887, 257.763, -284.772, 78.48, 263.573, -284.702, 78.4882, 258.384, -330.876, 92.4138, 257.786, -284.703, 92.4145, 258.406, -268.692, 86.1586, 278.37, -284.773, 92.4082, 263.595, -351.528, 80.5789, 323.509, -370.203, 86.137, 303.914, -389.379, 80.5783, 323.001, -369.83, 86.157, 277.012, -348.083, 92.4286, 245.173, -332.165, 97.0474, 231.409, -348.319, 92.4072, 262.742, -335.261, 92.4074, 262.917, -340.813, 86.1575, 277.401, -343.487, 78.4602, 274.601, -337.758, 78.4603, 274.677, -335.261, 78.48, 262.895, -270.82, 79.3401, -207.156, -279.378, 78.4194, 324.387, -396.096, 78.544, 273.894, -278.721, 78.4612, 275.471, -344.144, 78.4183, 323.517, -335.586, 79.3391, -208.026, -334.929, 79.4519, -256.943, -361.856, 87.0446, -211.12, -329.858, 79.3392, -207.949, -208.786, 79.3039, -206.323, -208.129, 79.3812, -255.239, -216.687, 78.5408, 276.304, -217.344, 78.4635, 325.221, -407.453, 79.3847, -257.917, -408.11, 79.3074, -209.001, -416.668, 78.467, 322.543, -416.011, 78.5443, 273.626, -218.208, 8.34465E-6, -206.575, -217.551, 8.34465E-6, -255.491, -258.235, 8.34465E-6, -256.038, -258.064, 8.34465E-6, -268.763, -350.182, 8.34465E-6, -270, -350.353, 8.34465E-6, -257.275, -387.534, 8.34465E-6, -257.775, -388.191, 8.34465E-6, -208.858, -226.109, 8.34465E-6, 276.052, -226.766, 8.34465E-6, 324.969, -267.45, 8.34465E-6, 324.422, -267.621, 8.34465E-6, 337.147, -359.739, 8.34465E-6, 335.91, -359.568, 8.34465E-6, 323.185, -396.749, 8.34465E-6, 322.685, -396.092, 8.34465E-6, 273.769, -208.783, 8.34465E-6, -206.448, -208.126, 8.34465E-6, -255.365, -216.684, 8.34465E-6, 276.179, -217.341, 8.34465E-6, 325.095, -407.45, 8.34465E-6, -258.042, -408.107, 8.34465E-6, -209.126, -416.665, 8.34465E-6, 322.418, -416.008, 8.34465E-6, 273.501, -416.287, 8.34465E-6, 98.2922, -413.684, 8.34465E-6, -35.2819, -413.667, 92.1465, -35.2815, -416.27, 92.1465, 98.2925, -366.065, 8.34465E-6, 99.2708, -366.048, 92.1375, 99.2711, -363.445, 92.1375, -34.3029, -363.462, 8.34465E-6, -34.3033, -364.385, 8.34465E-6, 13.0986, -414.618, 8.34465E-6, 12.628, -364.375, 58.0759, 13.0987, -365.12, 58.0754, 51.3327, -365.131, 8.34465E-6, 51.3326, -415.363, 8.34465E-6, 50.8621, -404.428, 58.0788, 50.9645, -403.683, 58.0793, 12.7304, -402.75, 66.3362, -35.0688, -405.353, 66.3362, 98.5053, -402.759, 17.0761, -35.069, -403.69, 17.0761, 12.7304, -405.362, 17.0761, 98.5051, -404.435, 17.0761, 50.9644, -415.36, 17.0781, 50.8621, -414.615, 17.0781, 12.628, -413.681, 17.0781, -35.2818, -416.284, 17.0781, 98.2923, -416.275, 66.3382, 98.2925, -413.672, 66.3382, -35.2816]; + uvs = new [0.832981, 0.62312, 0.855974, 0.598506, 0.840694, 0.597416, 0.871059, 0.42272, 0.854557, 0.395454, 0.625233, 0.899339, 0.623617, 0.916336, 0.543918, 0.888327, 0.574848, 0.875313, 0.565643, 0.618349, 0.571017, 0.604515, 0.568315, 0.578075, 0.468047, 0.914297, 0.506442, 0.610099, 0.496047, 0.619809, 0.509043, 0.606028, 0.617305, 0.982723, 0.618468, 0.970495, 0.653922, 0.997869, 0.654436, 0.992462, 0.476905, 0.920746, 0.533841, 0.953391, 0.4876, 0.937141, 0.480426, 0.93462, 0.622336, 0.929814, 0.538709, 0.900425, 0.574075, 0.983812, 0.616731, 0.98876, 0.532533, 0.967153, 0.499738, 0.948892, 0.498235, 0.96472, 0.568314, 0.578054, 0.568315, 0.578075, 0.723805, 0.906339, 0.722189, 0.923336, 0.720907, 0.936815, 0.806109, 0.906948, 0.778053, 0.889745, 0.83567, 0.637527, 0.803223, 0.625016, 0.876057, 0.943274, 0.895635, 0.63774, 0.904056, 0.648787, 0.715877, 0.989724, 0.717039, 0.977496, 0.67689, 0.999501, 0.677404, 0.994094, 0.715303, 0.995761, 0.866099, 0.948387, 0.803761, 0.972561, 0.852451, 0.963053, 0.860005, 0.961578, 0.758321, 0.996897, 0.802453, 0.986323, 0.838256, 0.972935, 0.83675, 0.988762, 0.808963, 0.919619, 0.80042, 0.100538, 0.802032, 0.0836284, 0.881724, 0.111651, 0.803329, 0.0700204, 0.8508, 0.124572, 0.859947, 0.381491, 0.825566, 0.389293, 0.957597, 0.0857393, 0.919139, 0.389831, 0.929527, 0.380217, 0.808356, 0.0172874, 0.807199, 0.0294209, 0.771743, 0.00213486, 0.771227, 0.0075416, 0.948749, 0.0791949, 0.891812, 0.0466337, 0.938049, 0.0628923, 0.945223, 0.0654148, 0.886949, 0.099424, 0.851586, 0.0162068, 0.808931, 0.0112504, 0.893124, 0.0328736, 0.925914, 0.0511389, 0.927421, 0.0353125, 0.70185, 0.0935198, 0.703462, 0.07661, 0.619538, 0.0929828, 0.616699, 0.0801817, 0.647598, 0.110104, 0.589925, 0.362265, 0.592598, 0.376802, 0.622365, 0.374825, 0.584941, 0.402416, 0.549594, 0.0566887, 0.529952, 0.36212, 0.559562, 0.0514839, 0.521525, 0.351167, 0.531742, 0.366572, 0.709785, 0.010269, 0.708629, 0.0224024, 0.748774, 0.000499487, 0.748259, 0.00590622, 0.710361, 0.00423205, 0.621897, 0.0274152, 0.573205, 0.0369146, 0.56565, 0.0383884, 0.667343, 0.00308836, 0.623209, 0.0136551, 0.587402, 0.0270361, 0.588912, 0.01121, 0.704759, 0.063002, 0.584935, 0.402436, 0.622365, 0.374825, 0.856461, 0.421327, 0.856144, 0.626882, 0.875561, 0.394951, 0.600018, 0.610584, 0.468047, 0.914297, 0.496047, 0.619809, 0.653922, 0.997869, 0.654436, 0.992462, 0.476905, 0.920746, 0.4876, 0.937141, 0.480426, 0.93462, 0.574075, 0.983812, 0.616731, 0.98876, 0.532533, 0.967153, 0.499738, 0.948892, 0.498235, 0.96472, 0.876057, 0.943274, 0.904056, 0.648787, 0.67689, 0.999501, 0.677404, 0.994094, 0.715303, 0.995761, 0.866099, 0.948387, 0.852451, 0.963053, 0.860005, 0.961578, 0.758321, 0.996897, 0.802453, 0.986323, 0.838256, 0.972935, 0.83675, 0.988762, 0.957597, 0.0857393, 0.929527, 0.380217, 0.771743, 0.00213486, 0.771227, 0.0075416, 0.948749, 0.0791949, 0.938049, 0.0628923, 0.945223, 0.0654148, 0.851586, 0.0162068, 0.808931, 0.0112504, 0.893124, 0.0328736, 0.925914, 0.0511389, 0.927421, 0.0353125, 0.549594, 0.0566887, 0.559562, 0.0514839, 0.521524, 0.351167, 0.748774, 0.000499487, 0.748259, 0.00590622, 0.710361, 0.00423205, 0.573205, 0.0369146, 0.56565, 0.0383884, 0.667343, 0.00308836, 0.623209, 0.0136551, 0.587402, 0.0270361, 0.588912, 0.01121, 0.939877, 0.651331, 0.911878, 0.945819, 0.911878, 0.945819, 0.939877, 0.651331, 0.993417, 0.0882898, 0.965347, 0.382768, 0.965347, 0.382768, 0.993417, 0.0882898, 0.910869, 0.602454, 0.927576, 0.426734, 0.893838, 0.633356, 0.91653, 0.393969, 0.97351, 0.656021, 0.999497, 0.383044, 0.973512, 0.656021, 0.9995, 0.383044, 0.879796, 0.649357, 0.905784, 0.37638, 0.879799, 0.649357, 0.905786, 0.37638, 0.999497, 0.383044, 0.999499, 0.383044, 0.973512, 0.656021, 0.97351, 0.656021, 0.879796, 0.649357, 0.879798, 0.649357, 0.905786, 0.37638, 0.905784, 0.37638, 0.979272, 0.595489, 0.99374, 0.443518, 0.993743, 0.443518, 0.979275, 0.59549, 0.885561, 0.588825, 0.900029, 0.436854, 0.900026, 0.436854, 0.885559, 0.588825, 0.993742, 0.443518, 0.979275, 0.59549, 0.979273, 0.595489, 0.99374, 0.443518, 0.885561, 0.588825, 0.900029, 0.436854, 0.900027, 0.436854, 0.885559, 0.588825, 0.936816, 0.43947, 0.922348, 0.591441, 0.922346, 0.591441, 0.936814, 0.43947, 0.976394, 0.381401, 0.950407, 0.654378, 0.956169, 0.593846, 0.970637, 0.441875, 0.993743, 0.443518, 0.999501, 0.383044, 0.976395, 0.381401, 0.970638, 0.441875, 0.973513, 0.656021, 0.979276, 0.59549, 0.95617, 0.593847, 0.950408, 0.654378, 0.600037, 0.610382, 0.608711, 0.593743, 0.62957, 0.583155, 0.647627, 0.581154, 0.655022, 0.571899, 0.672662, 0.577357, 0.704528, 0.587217, 0.673245, 0.549113, 0.673248, 0.549084, 0.707153, 0.559604, 0.707156, 0.559575, 0.588655, 0.573306, 0.604069, 0.55717, 0.568335, 0.578077, 0.609267, 0.542064, 0.62101, 0.53724, 0.617659, 0.521308, 0.611606, 0.492527, 0.680771, 0.497339, 0.649953, 0.525345, 0.64995, 0.525374, 0.643509, 0.494749, 0.643511, 0.494719, 0.585034, 0.402453, 0.604196, 0.409858, 0.616369, 0.427807, 0.61865, 0.443378, 0.62933, 0.44974, 0.623014, 0.464986, 0.655651, 0.465414, 0.655648, 0.465443, 0.627843, 0.392525, 0.646435, 0.405767, 0.622412, 0.375054, 0.663879, 0.410224, 0.669432, 0.420345, 0.687866, 0.417449, 0.683115, 0.445309, 0.715494, 0.471886, 0.683118, 0.44528, 0.837015, 0.426393, 0.821615, 0.442384, 0.857318, 0.421791, 0.816423, 0.457424, 0.804685, 0.462194, 0.808036, 0.478127, 0.782195, 0.504598, 0.744943, 0.501896, 0.775754, 0.473973, 0.775756, 0.473944, 0.782197, 0.504569, 0.797827, 0.607175, 0.779248, 0.593786, 0.803242, 0.624814, 0.761811, 0.589264, 0.756263, 0.57909, 0.737829, 0.581986, 0.742588, 0.554038, 0.71022, 0.527349, 0.742591, 0.554009, 0.84062, 0.597415, 0.821474, 0.589841, 0.809315, 0.571746, 0.80704, 0.55611, 0.796365, 0.549694, 0.802681, 0.534448, 0.814089, 0.506908, 0.770055, 0.533904, 0.770058, 0.533875, 0.825617, 0.389486, 0.816959, 0.405956, 0.796114, 0.416398, 0.778063, 0.418334, 0.770673, 0.427535, 0.753033, 0.422077, 0.71855, 0.439742, 0.721167, 0.412217, 0.718553, 0.439713, 0.752458, 0.450234, 0.752461, 0.450205, 0.700304, 0.498726, 0.713888, 0.488768, 0.72541, 0.500509, 0.711825, 0.510467, 0.700304, 0.498726, 0.713888, 0.488768, 0.72541, 0.500509, 0.711825, 0.510467, 0.707481, 0.499236, 0.713299, 0.494971, 0.718233, 0.499999, 0.712415, 0.504263, 0.707481, 0.499235, 0.713299, 0.494971, 0.718233, 0.499999, 0.712415, 0.504263, 0.711165, 0.499497, 0.712996, 0.498155, 0.714549, 0.499737, 0.712718, 0.50108, 0.711165, 0.499497, 0.712996, 0.498155, 0.714549, 0.499737, 0.712718, 0.50108, 0.760234, 0.150876, 0.74611, 0.149873, 0.757801, 0.154474, 0.795874, 0.10978, 0.750933, 0.099155, 0.799459, 0.102601, 0.750231, 0.106538, 0.751114, 0.0972536, 0.800399, 0.100754, 0.838029, 0.129881, 0.848128, 0.125808, 0.789902, 0.121775, 0.749058, 0.118874, 0.850785, 0.124779, 0.821214, 0.136706, 0.747498, 0.135278, 0.781971, 0.137726, 0.798887, 0.145792, 0.769606, 0.157716, 0.745754, 0.153618, 0.692151, 0.166399, 0.642566, 0.163078, 0.731987, 0.14887, 0.714852, 0.167988, 0.720113, 0.168344, 0.704587, 0.103297, 0.702407, 0.0957086, 0.659201, 0.11718, 0.650007, 0.111737, 0.708214, 0.115974, 0.701828, 0.0937532, 0.674502, 0.126286, 0.64758, 0.110347, 0.713025, 0.13283, 0.694813, 0.138401, 0.716437, 0.151316, 0.670828, 0.164922, 0.654765, 0.163829, 0.645114, 0.1632, 0.721448, 0.154296, 0.733708, 0.152762, 0.81754, 0.175342, 0.796225, 0.173791, 0.833594, 0.17653, 0.843235, 0.177271, 0.845771, 0.17751, 0.744192, 0.170047, 0.773528, 0.172155, 0.768271, 0.171764, 0.694991, 0.432576, 0.631926, 0.404045, 0.623272, 0.392929, 0.64743, 0.411015, 0.668328, 0.416961, 0.689729, 0.43222, 0.622086, 0.379068, 0.719069, 0.434279, 0.810754, 0.416746, 0.821392, 0.407, 0.794142, 0.421434, 0.772401, 0.424353, 0.82518, 0.393492, 0.743146, 0.435997, 0.748405, 0.436387, 0.775113, 0.155483, 0.47061, 0.571186, 0.472947, 0.546611, 0.476569, 0.508507, 0.476764, 0.506458, 0.487114, 0.397604, 0.487317, 0.395466, 0.486327, 0.405885, 0.485012, 0.419716, 0.483263, 0.438105, 0.46211, 0.45633, 0.459081, 0.469884, 0.455614, 0.481444, 0.456779, 0.469189, 0.463276, 0.458442, 0.457968, 0.481594, 0.481209, 0.459715, 0.409094, 0.438486, 0.396726, 0.477426, 0.400718, 0.435438, 0.405339, 0.477982, 0.394452, 0.477324, 0.398507, 0.43468, 0.432351, 0.402052, 0.42757, 0.393375, 0.423033, 0.443603, 0.419672, 0.478951, 0.426305, 0.391133, 0.440308, 0.416541, 0.438698, 0.480266, 0.441535, 0.450424, 0.450868, 0.435804, 0.4814, 0.4577, 0.478987, 0.483079, 0.458832, 0.505184, 0.456854, 0.493303, 0.401583, 0.517478, 0.392734, 0.519413, 0.417647, 0.556704, 0.41128, 0.564701, 0.416311, 0.5143, 0.390398, 0.519968, 0.428243, 0.543436, 0.409598, 0.566853, 0.435861, 0.510107, 0.442307, 0.525848, 0.471622, 0.560537, 0.474702, 0.528148, 0.470825, 0.56893, 0.601416, 0.569756, 0.588485, 0.577286, 0.60954, 0.556312, 0.616467, 0.538217, 0.634151, 0.519699, 0.572374, 0.578364, 0.634346, 0.517649, 0.638982, 0.468891, 0.63879, 0.470907, 0.61612, 0.415104, 0.604774, 0.405961, 0.621605, 0.429417, 0.625028, 0.448173, 0.589073, 0.40274, 0.636569, 0.49427, 0.454449, 0.493698, 0.457279, 0.507137, 0.665451, 0.848667, 0.679574, 0.84967, 0.667884, 0.84507, 0.629811, 0.889763, 0.674752, 0.900388, 0.626226, 0.896942, 0.675454, 0.893005, 0.674571, 0.90229, 0.625285, 0.898789, 0.587655, 0.869662, 0.577557, 0.873735, 0.635783, 0.877768, 0.676627, 0.880669, 0.5749, 0.874764, 0.604471, 0.862838, 0.678186, 0.864265, 0.643714, 0.861817, 0.626798, 0.853751, 0.656078, 0.841827, 0.67993, 0.845925, 0.733534, 0.833144, 0.783118, 0.836465, 0.693697, 0.850673, 0.710833, 0.831555, 0.705572, 0.831199, 0.721097, 0.896246, 0.723278, 0.903835, 0.766484, 0.882363, 0.775678, 0.887806, 0.717471, 0.88357, 0.723857, 0.90579, 0.751183, 0.873257, 0.778105, 0.889196, 0.712659, 0.866713, 0.730872, 0.861142, 0.709247, 0.848227, 0.754856, 0.834621, 0.770919, 0.835714, 0.780571, 0.836343, 0.704236, 0.845247, 0.691977, 0.846781, 0.608144, 0.824202, 0.62946, 0.825752, 0.592091, 0.823013, 0.58245, 0.822273, 0.579913, 0.822033, 0.681492, 0.829496, 0.652157, 0.827388, 0.657414, 0.827779, 0.731353, 0.560035, 0.793759, 0.595498, 0.802413, 0.606614, 0.778913, 0.581597, 0.758016, 0.57565, 0.735955, 0.567323, 0.803599, 0.620475, 0.707274, 0.558332, 0.61493, 0.582797, 0.604292, 0.592543, 0.632202, 0.571177, 0.653942, 0.568258, 0.600504, 0.606051, 0.683197, 0.556615, 0.67728, 0.563156, 0.650571, 0.84406, 0.2522, 0.59111, 0.352015, 0.598199, 0.2522, 0.591117, 0.352015, 0.598206, 0.274635, 0.355154, 0.37445, 0.362243, 0.274634, 0.355161, 0.374449, 0.36225, 0.306424, 0.54926, 0.320847, 0.397563, 0.826875, 0.430072, 0.839796, 0.422652, 0.865775, 0.424497, 0.818761, 0.44342, 0.811841, 0.461441, 0.794161, 0.479912, 0.855896, 0.42169, 0.865974, 0.422406, 0.860062, 0.484593, 0.791238, 0.481734, 0.812171, 0.584724, 0.823507, 0.593978, 0.806696, 0.570314, 0.803279, 0.551485, 0.855231, 0.5354, 0.839197, 0.597314, 0.849276, 0.59803, 0.789017, 0.505097, 0.78933, 0.53072, 0.786794, 0.528476, 0.865979, 0.422359, 0.927373, 0.428872, 0.864988, 0.432779, 0.926586, 0.437153, 0.925271, 0.450984, 0.863673, 0.44661, 0.861925, 0.464998, 0.923522, 0.469373, 0.85987, 0.486609, 0.921467, 0.490983, 0.849271, 0.598079, 0.911083, 0.600198, 0.849486, 0.595823, 0.850284, 0.587431, 0.911881, 0.591805, 0.913206, 0.577879, 0.851608, 0.573504, 0.853363, 0.555042, 0.914961, 0.559416, 0.857649, 0.509972, 0.919246, 0.514347, 0.917023, 0.537726, 0.855426, 0.533351, 0.921659, 0.488968, 0.919245, 0.514363, 0.916828, 0.539775, 0.927371, 0.440867, 0.927574, 0.439027, 0.926583, 0.447991, 0.925268, 0.459887, 0.92352, 0.475704, 0.911081, 0.588232, 0.910867, 0.590171, 0.911879, 0.581013, 0.913203, 0.569034, 0.914958, 0.553154, 0.921657, 0.492558, 0.919242, 0.514401, 0.916826, 0.53626, 0.920315, 0.440366, 0.919528, 0.447489, 0.918212, 0.459386, 0.916464, 0.475203, 0.904025, 0.587731, 0.903811, 0.58967, 0.904823, 0.580512, 0.906147, 0.568533, 0.907903, 0.552653, 0.914601, 0.492057, 0.912187, 0.5139, 0.90977, 0.535759, 0.920311, 0.440414, 0.920518, 0.438526, 0.919519, 0.447582, 0.9182, 0.459518, 0.916449, 0.475365, 0.904021, 0.587778, 0.904815, 0.580605, 0.906135, 0.568665, 0.907888, 0.552815, 0.914584, 0.492238, 0.912169, 0.514088, 0.909753, 0.535939, 0.179841, 0.751761, 0.179841, 0.72061, 0.154355, 0.698583, 0.118313, 0.698583, 0.0928266, 0.72061, 0.0928265, 0.751761, 0.118313, 0.773788, 0.154355, 0.773788, 0.179841, 0.751761, 0.179841, 0.72061, 0.154355, 0.698583, 0.118313, 0.698583, 0.0928266, 0.72061, 0.0928265, 0.751761, 0.118313, 0.773788, 0.154355, 0.773788, 0.170054, 0.748257, 0.170054, 0.724114, 0.150301, 0.707042, 0.122367, 0.707042, 0.102614, 0.724114, 0.102614, 0.748257, 0.122367, 0.765329, 0.150301, 0.765329, 0.160816, 0.74495, 0.160816, 0.727421, 0.146475, 0.715026, 0.126193, 0.715026, 0.111851, 0.727421, 0.111852, 0.74495, 0.126193, 0.757345, 0.146475, 0.757345, 0.139058, 0.737161, 0.139058, 0.73521, 0.137462, 0.733831, 0.135206, 0.733831, 0.13361, 0.73521, 0.13361, 0.737161, 0.135205, 0.73854, 0.137462, 0.73854, 0.137345, 0.736548, 0.137345, 0.735824, 0.136753, 0.735311, 0.135915, 0.735311, 0.135322, 0.735824, 0.135322, 0.736548, 0.135915, 0.73706, 0.136753, 0.73706, 0.138197, 0.736853, 0.138197, 0.735519, 0.137105, 0.734576, 0.135562, 0.734576, 0.134471, 0.735519, 0.134471, 0.736853, 0.135562, 0.737796, 0.137105, 0.737796, 0.136334, 0.736186, 0.172919, 0.549838, 0.229593, 0.500857, 0.229593, 0.431586, 0.172919, 0.382604, 0.0927702, 0.382604, 0.0360964, 0.431586, 0.0360964, 0.500856, 0.0927701, 0.549838, 0.172919, 0.549838, 0.229593, 0.500857, 0.229593, 0.431586, 0.172919, 0.382604, 0.0927702, 0.382604, 0.0360964, 0.431586, 0.0360964, 0.500856, 0.0927701, 0.549838, 0.163904, 0.531028, 0.207829, 0.493065, 0.207829, 0.439377, 0.163904, 0.401414, 0.101785, 0.401414, 0.0578605, 0.439377, 0.0578605, 0.493065, 0.101785, 0.531028, 0.155395, 0.513274, 0.187286, 0.485711, 0.187286, 0.446731, 0.155395, 0.419168, 0.110294, 0.419168, 0.0784028, 0.446731, 0.0784028, 0.485711, 0.110294, 0.513274, 0.135354, 0.471456, 0.138902, 0.46839, 0.138902, 0.464053, 0.135354, 0.460986, 0.130336, 0.460986, 0.126787, 0.464053, 0.126787, 0.46839, 0.130336, 0.471456, 0.133776, 0.468165, 0.135094, 0.467026, 0.135094, 0.465416, 0.133776, 0.464277, 0.131913, 0.464277, 0.130595, 0.465416, 0.130595, 0.467026, 0.131913, 0.468165, 0.13456, 0.469801, 0.136987, 0.467704, 0.136987, 0.464738, 0.13456, 0.462641, 0.131129, 0.462641, 0.128702, 0.464738, 0.128702, 0.467704, 0.131129, 0.469801, 0.132845, 0.466221, 0.172875, 0.209433, 0.172875, 0.178282, 0.147389, 0.156255, 0.111346, 0.156255, 0.0858599, 0.178282, 0.0858599, 0.209433, 0.111346, 0.23146, 0.147389, 0.23146, 0.172875, 0.209433, 0.172875, 0.178282, 0.147389, 0.156255, 0.111346, 0.156255, 0.0858599, 0.178282, 0.08586, 0.209433, 0.111346, 0.23146, 0.147389, 0.23146, 0.163087, 0.205929, 0.163087, 0.181786, 0.143335, 0.164714, 0.1154, 0.164714, 0.0956471, 0.181786, 0.0956472, 0.205929, 0.1154, 0.223001, 0.143335, 0.223001, 0.15385, 0.202622, 0.15385, 0.185093, 0.139508, 0.172698, 0.119226, 0.172698, 0.104885, 0.185093, 0.104885, 0.202622, 0.119226, 0.215017, 0.139508, 0.215017, 0.132091, 0.194833, 0.132091, 0.192882, 0.130496, 0.191503, 0.128239, 0.191503, 0.126643, 0.192882, 0.126643, 0.194833, 0.128239, 0.196212, 0.130496, 0.196212, 0.130379, 0.19422, 0.130379, 0.193496, 0.129786, 0.192984, 0.128948, 0.192984, 0.128356, 0.193496, 0.128356, 0.19422, 0.128948, 0.194732, 0.129786, 0.194732, 0.13123, 0.194525, 0.13123, 0.193191, 0.130139, 0.192248, 0.128596, 0.192248, 0.127504, 0.193191, 0.127504, 0.194525, 0.128596, 0.195468, 0.130139, 0.195468, 0.129367, 0.193858, 0.381618, 0.596029, 0.233345, 0.585485, 0.24299, 0.594261, 0.234649, 0.682502, 0.505822, 0.701786, 0.564791, 0.617145, 0.569173, 0.609367, 0.412059, 0.564835, 0.357037, 0.543975, 0.590889, 0.577552, 0.392611, 0.52365, 0.401161, 0.433836, 0.404002, 0.360904, 0.369907, 0.408786, 0.428136, 0.395953, 0.606967, 0.40867, 0.591557, 0.374241, 0.588766, 0.365301, 0.231956, 0.339928, 0.2292, 0.243778, 0.231129, 0.34861, 0.21941, 0.362511, 0.547223, 0.266393, 0.234649, 0.682502, 0.505822, 0.701786, 0.2292, 0.243778, 0.547223, 0.266393, 0.406561, 0.465129, 0.2118, 0.451297, 0.406558, 0.465159, 0.211797, 0.451326, 0.401729, 0.515949, 0.206968, 0.502117, 0.401726, 0.515979, 0.206965, 0.502147, 0.181134, 0.7023, 0.206922, 0.717106, 0.167623, 0.697079, 0.180851, 0.684097, 0.161769, 0.669822, 0.238409, 0.7139, 0.233455, 0.764648, 0.207394, 0.747454, 0.239197, 0.764582, 0.181878, 0.765247, 0.190425, 0.765149, 0.176129, 0.765315, 0.19063, 0.778333, 0.0801987, 0.779615, 0.0799941, 0.766431, 0.0442634, 0.766933, 0.089639, 0.766406, 0.100995, 0.718335, 0.167706, 0.702456, 0.0666278, 0.746613, 0.0354209, 0.766948, 0.0912438, 0.685138, 0.0915267, 0.703341, 0.109876, 0.670424, 0.10718, 0.703159, 0.135826, 0.67038, 0.0346332, 0.716266, 0.112272, 0.697745, 0.107181, 0.703182, 0.167623, 0.697102, 0.167707, 0.702479, 0.187453, 0.717332, 0.112271, 0.697722, 0.172044, 0.226735, 0.172326, 0.244938, 0.153694, 0.259636, 0.197362, 0.211357, 0.127743, 0.259659, 0.228937, 0.213855, 0.222408, 0.163236, 0.19689, 0.181008, 0.22815, 0.163173, 0.170831, 0.163835, 0.179378, 0.163739, 0.179173, 0.150555, 0.0687421, 0.151837, 0.0689472, 0.165021, 0.024374, 0.165539, 0.103348, 0.232933, 0.158616, 0.226914, 0.1587, 0.232291, 0.103347, 0.232911, 0.158699, 0.232268, 0.177893, 0.211583, 0.158615, 0.226891, 0.0785893, 0.164815, 0.0562012, 0.185117, 0.0332138, 0.165341, 0.0566483, 0.21299, 0.0827188, 0.245978, 0.101802, 0.260239, 0.0824358, 0.227775, 0.0980896, 0.227594, 0.0914347, 0.212587, 0.0882288, 0.215489, 0.0950961, 0.215409, 0.0980903, 0.227617, 0.175342, 0.714633, 0.165083, 0.163905, 0.0251617, 0.216221, 0.16587, 0.214587, 0.087441, 0.164807, 0.0977001, 0.715534, 0.0984879, 0.766216, 0.0662084, 0.718739, 0.104567, 0.715454, 0.249707, 0.713769, 0.250495, 0.764451, 0.240236, 0.213724, 0.239448, 0.163042, 0.0115463, 0.767226, 0.0107586, 0.716543, 0.000499517, 0.165816, 0.00128725, 0.216498, 0.238413, 0.71403, 0.2392, 0.764712, 0.190429, 0.765278, 0.190633, 0.778463, 0.0802027, 0.779745, 0.079998, 0.76656, 0.0354248, 0.767078, 0.0346371, 0.716396, 0.228941, 0.213985, 0.228154, 0.163303, 0.179382, 0.163869, 0.179177, 0.150685, 0.068746, 0.151967, 0.0689511, 0.165151, 0.024378, 0.165668, 0.0251656, 0.21635, 0.249711, 0.713899, 0.250499, 0.764581, 0.24024, 0.213853, 0.239452, 0.163171, 0.0115503, 0.767355, 0.0107625, 0.716673, 0.000503451, 0.165946, 0.00129113, 0.216628, 0.000956327, 0.39816, 0.00407645, 0.536555, 0.00409648, 0.536555, 0.000976354, 0.39816, 0.0611626, 0.397146, 0.0611826, 0.397146, 0.0643028, 0.535541, 0.0642828, 0.535541, 0.0631755, 0.486429, 0.00295737, 0.486916, 0.0631882, 0.486428, 0.062295, 0.446814, 0.0622824, 0.446815, 0.00206426, 0.447302, 0.0151727, 0.447196, 0.0160658, 0.48681, 0.0171842, 0.536334, 0.014064, 0.397939, 0.0171735, 0.536335, 0.016057, 0.48681, 0.0140533, 0.39794, 0.0151638, 0.447196, 0.00206801, 0.447302, 0.00296113, 0.486916, 0.00408027, 0.536555, 0.000960141, 0.39816, 0.000970811, 0.39816, 0.00409093, 0.536555]; + indices = new [1, 0, 2, 0, 1, 111, 112, 110, 4, 110, 112, 3, 34, 5, 33, 5, 34, 6, 5, 7, 8, 7, 5, 6, 35, 6, 34, 6, 35, 24, 7, 24, 25, 24, 7, 6, 7, 9, 10, 9, 7, 25, 8, 10, 113, 10, 8, 7, 11, 113, 10, 13, 12, 14, 12, 13, 20, 15, 13, 14, 13, 10, 9, 10, 13, 15, 20, 9, 25, 9, 20, 13, 24, 20, 25, 20, 24, 17, 17, 35, 44, 35, 17, 24, 16, 44, 43, 44, 16, 17, 18, 46, 45, 46, 18, 19, 20, 22, 23, 20, 21, 22, 20, 16, 21, 20, 17, 16, 28, 27, 26, 27, 28, 16, 21, 16, 28, 21, 29, 22, 31, 32, 113, 36, 33, 37, 33, 36, 34, 36, 35, 34, 35, 36, 56, 38, 36, 0, 36, 38, 56, 0, 37, 39, 37, 0, 36, 2, 0, 39, 41, 40, 48, 40, 41, 42, 172, 42, 41, 111, 38, 0, 38, 48, 56, 48, 38, 41, 48, 35, 56, 35, 48, 44, 50, 48, 51, 48, 43, 44, 48, 49, 43, 50, 49, 48, 47, 53, 52, 53, 47, 43, 49, 55, 53, 55, 49, 54, 49, 53, 43, 82, 57, 81, 57, 82, 58, 57, 59, 61, 59, 57, 58, 107, 58, 82, 58, 107, 60, 59, 60, 75, 60, 59, 58, 59, 62, 4, 62, 59, 75, 61, 4, 63, 4, 61, 59, 110, 63, 4, 65, 64, 66, 64, 65, 71, 173, 65, 66, 65, 112, 62, 112, 65, 173, 71, 62, 75, 62, 71, 65, 75, 68, 71, 68, 75, 60, 68, 107, 96, 107, 68, 60, 67, 96, 95, 96, 67, 68, 70, 77, 67, 71, 73, 74, 78, 77, 76, 77, 78, 67, 72, 67, 78, 72, 79, 73, 83, 81, 85, 81, 83, 82, 83, 107, 82, 107, 83, 84, 86, 83, 87, 83, 86, 84, 87, 85, 88, 85, 87, 83, 89, 87, 88, 91, 90, 92, 90, 91, 93, 94, 93, 91, 87, 91, 86, 91, 87, 94, 86, 92, 84, 92, 86, 91, 96, 84, 92, 84, 96, 107, 92, 95, 96, 92, 100, 95, 101, 100, 92, 99, 104, 103, 104, 99, 95, 100, 106, 104, 106, 100, 105, 100, 104, 95, 108, 109, 89, 30, 21, 28, 21, 30, 29, 54, 49, 50, 16, 19, 27, 69, 98, 97, 98, 69, 70, 46, 16, 43, 16, 46, 19, 46, 43, 47, 98, 95, 99, 98, 67, 95, 67, 98, 70, 80, 72, 78, 72, 80, 79, 105, 100, 101, 101, 92, 102, 67, 71, 68, 72, 71, 67, 73, 71, 72, 41, 111, 172, 111, 41, 38, 112, 4, 62, 20, 114, 12, 114, 20, 118, 12, 115, 14, 115, 12, 114, 19, 122, 27, 122, 19, 117, 18, 117, 19, 117, 18, 116, 45, 116, 18, 116, 45, 128, 23, 118, 20, 118, 23, 120, 22, 120, 23, 120, 22, 119, 26, 123, 28, 123, 26, 121, 27, 121, 26, 121, 27, 122, 29, 119, 22, 119, 29, 124, 30, 124, 29, 124, 30, 125, 28, 125, 30, 125, 28, 123, 162, 164, 163, 164, 162, 165, 40, 131, 48, 131, 40, 126, 46, 128, 45, 128, 46, 129, 47, 129, 46, 129, 47, 130, 51, 132, 50, 132, 51, 133, 48, 133, 51, 133, 48, 131, 52, 130, 47, 130, 52, 134, 53, 134, 52, 134, 53, 135, 54, 137, 55, 137, 54, 136, 50, 136, 54, 136, 50, 132, 55, 135, 53, 135, 55, 137, 71, 138, 64, 138, 71, 142, 166, 168, 167, 168, 166, 169, 70, 146, 77, 146, 70, 141, 69, 141, 70, 141, 69, 140, 97, 140, 69, 140, 97, 153, 74, 142, 71, 142, 74, 144, 73, 144, 74, 144, 73, 143, 76, 147, 78, 147, 76, 145, 77, 145, 76, 145, 77, 146, 79, 143, 73, 143, 79, 148, 80, 148, 79, 148, 80, 149, 78, 149, 80, 149, 78, 147, 93, 150, 90, 150, 93, 152, 90, 151, 92, 151, 90, 150, 98, 153, 97, 153, 98, 154, 99, 154, 98, 154, 99, 155, 102, 156, 101, 156, 102, 157, 92, 157, 102, 157, 92, 151, 103, 155, 99, 155, 103, 158, 104, 158, 103, 158, 104, 159, 105, 161, 106, 161, 105, 160, 101, 160, 105, 160, 101, 156, 106, 159, 104, 159, 106, 161, 42, 163, 40, 163, 42, 162, 40, 164, 126, 164, 40, 163, 127, 162, 42, 162, 127, 165, 64, 167, 66, 167, 64, 166, 66, 168, 139, 168, 66, 167, 138, 166, 64, 166, 138, 169, 1, 172, 111, 172, 1, 170, 112, 171, 3, 171, 112, 173, 207, 209, 208, 209, 207, 206, 203, 205, 204, 205, 203, 202, 188, 182, 183, 182, 188, 189, 194, 213, 212, 213, 194, 195, 186, 184, 185, 184, 186, 187, 193, 198, 199, 198, 193, 192, 191, 200, 201, 200, 191, 190, 195, 202, 203, 202, 195, 194, 197, 204, 205, 204, 197, 196, 210, 183, 177, 181, 183, 210, 188, 183, 181, 175, 189, 179, 189, 175, 182, 178, 185, 174, 185, 178, 186, 211, 187, 180, 176, 187, 211, 184, 187, 176, 184, 200, 185, 200, 184, 199, 182, 198, 183, 198, 182, 201, 188, 204, 189, 204, 188, 203, 186, 202, 187, 202, 186, 205, 180, 212, 211, 212, 180, 194, 215, 217, 216, 217, 215, 214, 176, 199, 184, 199, 176, 193, 183, 192, 177, 192, 183, 198, 175, 201, 182, 201, 175, 191, 185, 190, 174, 190, 185, 200, 181, 203, 188, 203, 181, 195, 187, 194, 180, 194, 187, 202, 178, 205, 186, 205, 178, 197, 189, 196, 179, 196, 189, 204, 198, 207, 199, 207, 198, 206, 199, 208, 200, 208, 199, 207, 200, 209, 201, 209, 200, 208, 201, 206, 198, 206, 201, 209, 193, 213, 192, 213, 193, 212, 218, 220, 219, 220, 218, 221, 181, 213, 195, 213, 181, 210, 192, 215, 177, 215, 192, 214, 177, 216, 210, 216, 177, 215, 210, 217, 213, 217, 210, 216, 213, 214, 192, 214, 213, 217, 176, 219, 193, 219, 176, 218, 193, 220, 212, 220, 193, 219, 212, 221, 211, 221, 212, 220, 211, 218, 176, 218, 211, 221, 227, 225, 226, 231, 226, 229, 231, 227, 226, 231, 228, 227, 280, 232, 230, 231, 230, 232, 230, 231, 229, 234, 223, 233, 223, 234, 224, 223, 235, 233, 235, 223, 222, 224, 226, 225, 224, 237, 226, 224, 236, 237, 224, 234, 236, 236, 238, 237, 226, 242, 229, 242, 226, 237, 243, 238, 239, 243, 237, 238, 243, 242, 237, 230, 240, 280, 240, 230, 241, 244, 240, 241, 230, 242, 241, 242, 230, 229, 241, 243, 244, 243, 241, 242, 245, 253, 246, 253, 245, 0xFF, 253, 247, 246, 247, 253, 254, 0x0101, 254, 0x0100, 254, 248, 247, 254, 249, 248, 0x0101, 249, 254, 250, 248, 249, 0x0101, 252, 249, 252, 0x0101, 259, 243, 249, 252, 243, 250, 249, 243, 239, 250, 261, 240, 251, 240, 261, 260, 240, 244, 251, 261, 252, 259, 252, 261, 251, 243, 251, 244, 251, 243, 252, 0x0100, 258, 0x0101, 297, 258, 298, 297, 0x0101, 258, 297, 259, 0x0101, 299, 260, 261, 261, 297, 299, 297, 261, 259, 265, 267, 266, 268, 267, 288, 268, 266, 267, 268, 270, 266, 272, 269, 271, 271, 268, 272, 268, 271, 270, 274, 283, 273, 283, 274, 284, 283, 275, 273, 275, 283, 282, 284, 286, 285, 284, 277, 286, 284, 276, 277, 284, 274, 276, 276, 278, 277, 286, 279, 289, 279, 286, 277, 231, 278, 228, 231, 277, 278, 231, 279, 277, 290, 280, 269, 280, 290, 281, 232, 280, 281, 290, 279, 281, 279, 290, 289, 281, 231, 232, 231, 281, 279, 287, 285, 286, 268, 286, 289, 268, 287, 286, 268, 288, 287, 269, 272, 290, 268, 290, 272, 290, 268, 289, 291, 262, 292, 262, 291, 264, 262, 293, 292, 293, 262, 263, 266, 263, 265, 263, 294, 293, 263, 295, 294, 266, 295, 263, 296, 294, 295, 266, 300, 295, 300, 266, 270, 297, 295, 300, 297, 296, 295, 297, 298, 296, 271, 260, 301, 260, 271, 269, 260, 299, 301, 271, 300, 270, 300, 271, 301, 297, 301, 299, 301, 297, 300, 305, 240, 302, 240, 305, 280, 302, 260, 303, 260, 302, 240, 304, 280, 305, 280, 304, 269, 303, 269, 304, 269, 303, 260, 309, 302, 306, 302, 309, 305, 306, 303, 307, 303, 306, 302, 308, 305, 309, 305, 308, 304, 307, 304, 308, 304, 307, 303, 313, 306, 310, 306, 313, 309, 310, 307, 311, 307, 310, 306, 312, 309, 313, 309, 312, 308, 311, 308, 312, 308, 311, 307, 317, 310, 314, 310, 317, 313, 314, 311, 315, 311, 314, 310, 316, 313, 317, 313, 316, 312, 315, 312, 316, 312, 315, 311, 321, 314, 318, 314, 321, 317, 318, 315, 319, 315, 318, 314, 320, 317, 321, 317, 320, 316, 319, 316, 320, 316, 319, 315, 325, 318, 322, 318, 325, 321, 322, 319, 323, 319, 322, 318, 324, 321, 325, 321, 324, 320, 323, 320, 324, 320, 323, 319, 322, 324, 325, 324, 322, 323, 344, 326, 390, 326, 344, 328, 373, 344, 390, 344, 373, 374, 345, 326, 328, 326, 345, 327, 329, 330, 331, 330, 329, 332, 331, 333, 334, 333, 331, 330, 335, 331, 336, 331, 335, 329, 337, 332, 329, 332, 337, 338, 336, 334, 339, 334, 336, 331, 340, 329, 335, 329, 340, 337, 337, 341, 338, 341, 337, 342, 340, 342, 337, 342, 340, 343, 342, 390, 326, 390, 342, 343, 367, 335, 369, 335, 367, 340, 369, 336, 370, 336, 369, 335, 367, 343, 340, 343, 367, 368, 370, 339, 371, 339, 370, 336, 368, 390, 343, 390, 368, 373, 374, 372, 344, 372, 328, 344, 372, 345, 328, 361, 366, 365, 366, 361, 348, 349, 365, 350, 365, 349, 361, 327, 366, 348, 366, 327, 345, 330, 351, 352, 351, 330, 332, 352, 353, 354, 353, 352, 351, 332, 355, 351, 355, 332, 338, 333, 352, 356, 352, 333, 330, 351, 357, 353, 357, 351, 355, 356, 354, 358, 354, 356, 352, 341, 355, 338, 355, 341, 359, 359, 357, 355, 357, 359, 360, 361, 359, 348, 359, 361, 360, 353, 362, 363, 362, 353, 357, 360, 362, 357, 362, 360, 346, 354, 363, 364, 363, 354, 353, 361, 346, 360, 346, 361, 349, 358, 364, 347, 364, 358, 354, 350, 365, 372, 372, 365, 366, 372, 366, 345, 367, 386, 368, 386, 367, 385, 373, 386, 389, 386, 373, 368, 367, 383, 385, 383, 367, 369, 369, 384, 383, 384, 369, 370, 371, 384, 370, 384, 371, 387, 382, 374, 388, 374, 382, 372, 374, 389, 388, 389, 374, 373, 377, 363, 376, 363, 377, 364, 376, 362, 378, 362, 376, 363, 379, 362, 346, 362, 379, 378, 380, 346, 349, 346, 380, 379, 381, 364, 377, 364, 381, 347, 382, 350, 372, 350, 382, 375, 380, 350, 375, 350, 380, 349, 326, 341, 342, 341, 326, 327, 438, 444, 391, 444, 438, 440, 439, 438, 436, 438, 439, 440, 392, 439, 436, 439, 392, 441, 442, 392, 437, 392, 442, 441, 443, 437, 393, 437, 443, 442, 445, 423, 453, 423, 445, 394, 445, 393, 394, 393, 445, 443, 449, 396, 452, 396, 449, 395, 395, 448, 397, 448, 395, 449, 448, 398, 397, 398, 448, 450, 451, 398, 450, 398, 451, 399, 446, 399, 451, 399, 446, 422, 406, 453, 423, 453, 406, 447, 447, 422, 446, 422, 447, 406, 403, 404, 401, 404, 403, 400, 404, 422, 406, 422, 404, 400, 403, 405, 402, 405, 403, 401, 423, 401, 404, 423, 405, 401, 423, 404, 406, 407, 408, 409, 408, 407, 410, 409, 411, 412, 411, 409, 408, 413, 409, 414, 409, 413, 407, 415, 410, 407, 410, 415, 416, 414, 412, 417, 412, 414, 409, 418, 407, 413, 407, 418, 415, 415, 419, 416, 419, 415, 420, 418, 420, 415, 420, 418, 421, 420, 400, 403, 400, 420, 421, 398, 413, 397, 413, 398, 418, 397, 414, 395, 414, 397, 413, 398, 421, 418, 421, 398, 399, 395, 417, 396, 417, 395, 414, 399, 400, 421, 400, 399, 422, 455, 425, 424, 425, 455, 454, 393, 424, 394, 424, 393, 455, 425, 402, 405, 402, 425, 454, 425, 423, 424, 405, 423, 425, 424, 423, 394, 426, 408, 410, 408, 426, 427, 428, 427, 426, 427, 428, 429, 430, 410, 416, 410, 430, 426, 427, 411, 408, 411, 427, 431, 432, 426, 430, 426, 432, 428, 429, 431, 427, 431, 429, 433, 430, 419, 434, 419, 430, 416, 432, 434, 435, 434, 432, 430, 455, 434, 454, 434, 455, 435, 392, 428, 432, 428, 392, 436, 392, 435, 437, 435, 392, 432, 436, 429, 428, 429, 436, 438, 437, 455, 393, 455, 437, 435, 438, 433, 429, 433, 438, 391, 419, 454, 434, 454, 419, 402, 420, 402, 419, 402, 420, 403, 474, 456, 520, 456, 474, 458, 503, 474, 520, 474, 503, 504, 475, 456, 458, 456, 475, 457, 459, 460, 461, 460, 459, 462, 461, 463, 464, 463, 461, 460, 465, 461, 466, 461, 465, 459, 467, 462, 459, 462, 467, 468, 466, 464, 469, 464, 466, 461, 470, 459, 465, 459, 470, 467, 467, 471, 468, 471, 467, 472, 470, 472, 467, 472, 470, 473, 472, 520, 456, 520, 472, 473, 497, 465, 499, 465, 497, 470, 499, 466, 500, 466, 499, 465, 497, 473, 470, 473, 497, 498, 500, 469, 501, 469, 500, 466, 498, 520, 473, 520, 498, 503, 504, 502, 474, 502, 458, 474, 502, 475, 458, 491, 496, 495, 496, 491, 478, 479, 495, 480, 495, 479, 491, 457, 496, 478, 496, 457, 475, 460, 481, 482, 481, 460, 462, 482, 483, 484, 483, 482, 481, 462, 485, 481, 485, 462, 468, 463, 482, 486, 482, 463, 460, 481, 487, 483, 487, 481, 485, 486, 484, 488, 484, 486, 482, 471, 485, 468, 485, 471, 489, 489, 487, 485, 487, 489, 490, 491, 489, 478, 489, 491, 490, 483, 492, 493, 492, 483, 487, 490, 492, 487, 492, 490, 476, 484, 493, 494, 493, 484, 483, 491, 476, 490, 476, 491, 479, 488, 494, 477, 494, 488, 484, 480, 495, 502, 502, 495, 496, 502, 496, 475, 497, 516, 498, 516, 497, 515, 503, 516, 519, 516, 503, 498, 497, 513, 515, 513, 497, 499, 499, 0x0202, 513, 0x0202, 499, 500, 501, 0x0202, 500, 0x0202, 501, 517, 0x0200, 504, 518, 504, 0x0200, 502, 504, 519, 518, 519, 504, 503, 507, 493, 506, 493, 507, 494, 506, 492, 508, 492, 506, 493, 509, 492, 476, 492, 509, 508, 510, 476, 479, 476, 510, 509, 511, 494, 507, 494, 511, 477, 0x0200, 480, 502, 480, 0x0200, 505, 510, 480, 505, 480, 510, 479, 456, 471, 472, 471, 456, 457, 524, 521, 523, 521, 524, 522, 528, 525, 526, 525, 528, 527, 528, 522, 524, 522, 528, 526, 525, 523, 521, 523, 525, 527, 523, 529, 524, 530, 524, 529, 524, 530, 528, 528, 530, 527, 529, 527, 530, 527, 529, 523, 532, 553, 531, 553, 532, 533, 531, 556, 534, 556, 531, 553, 535, 556, 557, 556, 535, 534, 535, 539, 536, 539, 535, 557, 537, 533, 532, 533, 537, 538, 548, 559, 570, 559, 548, 540, 536, 559, 540, 559, 536, 539, 550, 570, 573, 570, 550, 548, 564, 542, 541, 542, 564, 563, 567, 541, 543, 541, 567, 564, 544, 567, 543, 567, 544, 568, 549, 568, 544, 568, 549, 545, 563, 546, 542, 546, 563, 547, 549, 573, 545, 573, 549, 550, 551, 552, 533, 552, 551, 171, 552, 553, 533, 553, 552, 554, 553, 555, 556, 555, 553, 554, 557, 555, 558, 555, 557, 556, 539, 558, 574, 558, 539, 557, 574, 559, 539, 559, 574, 560, 570, 560, 571, 560, 570, 559, 562, 561, 563, 561, 562, 170, 564, 562, 563, 562, 564, 565, 566, 564, 567, 564, 566, 565, 566, 568, 569, 568, 566, 567, 569, 545, 576, 545, 569, 568, 576, 573, 572, 573, 576, 545, 573, 571, 572, 571, 573, 570, 560, 575, 571, 575, 560, 574, 571, 576, 572, 576, 571, 575, 171, 577, 552, 577, 171, 578, 552, 579, 554, 579, 552, 577, 554, 580, 555, 580, 554, 579, 555, 581, 558, 581, 555, 580, 558, 587, 574, 587, 558, 581, 562, 583, 170, 583, 562, 582, 565, 582, 562, 582, 565, 584, 566, 584, 565, 584, 566, 585, 569, 585, 566, 585, 569, 586, 576, 586, 569, 586, 576, 589, 574, 588, 575, 588, 574, 587, 575, 589, 576, 589, 575, 588, 578, 590, 577, 590, 578, 603, 577, 591, 579, 591, 577, 590, 579, 592, 580, 592, 579, 591, 580, 593, 581, 593, 580, 592, 581, 599, 587, 599, 581, 593, 582, 595, 583, 595, 582, 594, 584, 594, 582, 594, 584, 596, 585, 596, 584, 596, 585, 597, 586, 597, 585, 597, 586, 598, 589, 598, 586, 598, 589, 601, 587, 600, 588, 600, 587, 599, 588, 601, 589, 601, 588, 600, 590, 603, 602, 590, 604, 591, 604, 590, 602, 591, 605, 592, 605, 591, 604, 592, 606, 593, 606, 592, 605, 593, 611, 599, 611, 593, 606, 594, 607, 595, 596, 607, 594, 607, 596, 608, 597, 608, 596, 608, 597, 609, 598, 609, 597, 609, 598, 610, 601, 610, 598, 610, 601, 613, 599, 612, 600, 612, 599, 611, 600, 613, 601, 613, 600, 612, 623, 614, 622, 614, 623, 615, 624, 615, 623, 615, 624, 616, 625, 616, 624, 616, 625, 617, 626, 617, 625, 617, 626, 618, 627, 618, 626, 618, 627, 619, 628, 619, 627, 619, 628, 620, 629, 620, 628, 620, 629, 621, 622, 621, 629, 621, 622, 614, 631, 622, 630, 622, 631, 623, 632, 623, 631, 623, 632, 624, 633, 624, 632, 624, 633, 625, 634, 625, 633, 625, 634, 626, 635, 626, 634, 626, 635, 627, 636, 627, 635, 627, 636, 628, 637, 628, 636, 628, 637, 629, 630, 629, 637, 629, 630, 622, 639, 630, 638, 630, 639, 631, 640, 631, 639, 631, 640, 632, 641, 632, 640, 632, 641, 633, 642, 633, 641, 633, 642, 634, 643, 634, 642, 634, 643, 635, 644, 635, 643, 635, 644, 636, 645, 636, 644, 636, 645, 637, 638, 637, 645, 637, 638, 630, 646, 639, 638, 639, 646, 647, 647, 640, 639, 640, 647, 648, 648, 641, 640, 641, 648, 649, 649, 642, 641, 642, 649, 650, 650, 643, 642, 643, 650, 651, 651, 644, 643, 644, 651, 652, 652, 645, 644, 645, 652, 653, 653, 638, 645, 638, 653, 646, 655, 646, 654, 646, 655, 647, 656, 647, 655, 647, 656, 648, 657, 648, 656, 648, 657, 649, 658, 649, 657, 649, 658, 650, 659, 650, 658, 650, 659, 651, 660, 651, 659, 651, 660, 652, 661, 652, 660, 652, 661, 653, 654, 653, 661, 653, 654, 646, 663, 654, 662, 654, 663, 655, 664, 655, 663, 655, 664, 656, 665, 656, 664, 656, 665, 657, 666, 657, 665, 657, 666, 658, 667, 658, 666, 658, 667, 659, 668, 659, 667, 659, 668, 660, 669, 660, 668, 660, 669, 661, 662, 661, 669, 661, 662, 654, 662, 670, 663, 663, 670, 664, 664, 670, 665, 665, 670, 666, 666, 670, 667, 667, 670, 668, 668, 670, 669, 669, 670, 662, 680, 671, 679, 671, 680, 672, 681, 672, 680, 672, 681, 673, 682, 673, 681, 673, 682, 674, 683, 674, 682, 674, 683, 675, 684, 675, 683, 675, 684, 676, 685, 676, 684, 676, 685, 677, 686, 677, 685, 677, 686, 678, 679, 678, 686, 678, 679, 671, 688, 679, 687, 679, 688, 680, 689, 680, 688, 680, 689, 681, 690, 681, 689, 681, 690, 682, 691, 682, 690, 682, 691, 683, 692, 683, 691, 683, 692, 684, 693, 684, 692, 684, 693, 685, 694, 685, 693, 685, 694, 686, 687, 686, 694, 686, 687, 679, 696, 687, 695, 687, 696, 688, 697, 688, 696, 688, 697, 689, 698, 689, 697, 689, 698, 690, 699, 690, 698, 690, 699, 691, 700, 691, 699, 691, 700, 692, 701, 692, 700, 692, 701, 693, 702, 693, 701, 693, 702, 694, 695, 694, 702, 694, 695, 687, 703, 696, 695, 696, 703, 704, 704, 697, 696, 697, 704, 705, 705, 698, 697, 698, 705, 706, 706, 699, 698, 699, 706, 707, 707, 700, 699, 700, 707, 708, 708, 701, 700, 701, 708, 709, 709, 702, 701, 702, 709, 710, 710, 695, 702, 695, 710, 703, 712, 703, 711, 703, 712, 704, 713, 704, 712, 704, 713, 705, 714, 705, 713, 705, 714, 706, 715, 706, 714, 706, 715, 707, 716, 707, 715, 707, 716, 708, 717, 708, 716, 708, 717, 709, 718, 709, 717, 709, 718, 710, 711, 710, 718, 710, 711, 703, 720, 711, 719, 711, 720, 712, 721, 712, 720, 712, 721, 713, 722, 713, 721, 713, 722, 714, 723, 714, 722, 714, 723, 715, 724, 715, 723, 715, 724, 716, 725, 716, 724, 716, 725, 717, 726, 717, 725, 717, 726, 718, 719, 718, 726, 718, 719, 711, 719, 727, 720, 720, 727, 721, 721, 727, 722, 722, 727, 723, 723, 727, 724, 724, 727, 725, 725, 727, 726, 726, 727, 719, 737, 728, 736, 728, 737, 729, 738, 729, 737, 729, 738, 730, 739, 730, 738, 730, 739, 731, 740, 731, 739, 731, 740, 732, 741, 732, 740, 732, 741, 733, 742, 733, 741, 733, 742, 734, 743, 734, 742, 734, 743, 735, 736, 735, 743, 735, 736, 728, 745, 736, 744, 736, 745, 737, 746, 737, 745, 737, 746, 738, 747, 738, 746, 738, 747, 739, 748, 739, 747, 739, 748, 740, 749, 740, 748, 740, 749, 741, 750, 741, 749, 741, 750, 742, 751, 742, 750, 742, 751, 743, 744, 743, 751, 743, 744, 736, 753, 744, 752, 744, 753, 745, 754, 745, 753, 745, 754, 746, 755, 746, 754, 746, 755, 747, 756, 747, 755, 747, 756, 748, 757, 748, 756, 748, 757, 749, 758, 749, 757, 749, 758, 750, 759, 750, 758, 750, 759, 751, 752, 751, 759, 751, 752, 744, 760, 753, 752, 753, 760, 761, 761, 754, 753, 754, 761, 762, 762, 755, 754, 755, 762, 763, 763, 756, 755, 756, 763, 764, 764, 757, 756, 757, 764, 765, 765, 758, 757, 758, 765, 766, 766, 759, 758, 759, 766, 767, 767, 752, 759, 752, 767, 760, 769, 760, 0x0300, 760, 769, 761, 770, 761, 769, 761, 770, 762, 0x0303, 762, 770, 762, 0x0303, 763, 772, 763, 0x0303, 763, 772, 764, 773, 764, 772, 764, 773, 765, 774, 765, 773, 765, 774, 766, 775, 766, 774, 766, 775, 767, 0x0300, 767, 775, 767, 0x0300, 760, 777, 0x0300, 776, 0x0300, 777, 769, 778, 769, 777, 769, 778, 770, 779, 770, 778, 770, 779, 0x0303, 780, 0x0303, 779, 0x0303, 780, 772, 781, 772, 780, 772, 781, 773, 782, 773, 781, 773, 782, 774, 783, 774, 782, 774, 783, 775, 776, 775, 783, 775, 776, 0x0300, 776, 784, 777, 777, 784, 778, 778, 784, 779, 779, 784, 780, 780, 784, 781, 781, 784, 782, 782, 784, 783, 783, 784, 776, 478, 471, 457, 471, 478, 489, 348, 341, 327, 341, 348, 359, 790, 785, 791, 785, 790, 787, 786, 787, 788, 789, 787, 790, 787, 789, 788, 791, 792, 794, 792, 791, 785, 795, 785, 793, 785, 795, 792, 795, 798, 796, 798, 795, 793, 786, 793, 785, 797, 796, 798, 796, 797, 799, 799, 801, 800, 801, 799, 797, 803, 797, 805, 802, 804, 807, 804, 802, 803, 804, 803, 805, 798, 805, 797, 805, 798, 806, 785, 787, 786, 798, 786, 806, 786, 798, 793, 797, 802, 801, 802, 797, 803, 789, 808, 788, 808, 789, 809, 804, 811, 807, 811, 804, 810, 812, 815, 813, 815, 812, 814, 816, 819, 818, 819, 816, 817, 812, 817, 816, 817, 812, 813, 813, 819, 817, 819, 813, 815, 815, 818, 819, 818, 815, 814, 814, 816, 818, 816, 814, 812, 851, 820, 838, 820, 851, 821, 821, 851, 887, 841, 844, 852, 844, 841, 842, 821, 823, 820, 843, 823, 824, 823, 843, 841, 845, 843, 824, 826, 821, 827, 826, 825, 821, 826, 828, 825, 829, 828, 826, 829, 830, 828, 829, 831, 830, 826, 827, 829, 832, 834, 833, 832, 893, 834, 832, 831, 893, 832, 830, 831, 834, 893, 836, 831, 895, 893, 895, 831, 887, 892, 893, 895, 850, 895, 887, 895, 850, 848, 852, 848, 847, 848, 852, 844, 837, 895, 848, 849, 852, 847, 852, 849, 822, 837, 848, 844, 851, 850, 887, 850, 822, 849, 822, 850, 838, 838, 850, 851, 836, 894, 839, 836, 892, 894, 836, 893, 892, 836, 839, 835, 835, 846, 840, 835, 894, 846, 835, 839, 894, 843, 857, 880, 857, 843, 845, 841, 894, 842, 837, 842, 894, 842, 837, 844, 895, 894, 892, 894, 895, 837, 873, 853, 856, 853, 873, 874, 853, 872, 854, 872, 853, 874, 856, 853, 854, 856, 890, 873, 854, 880, 855, 880, 854, 879, 855, 880, 857, 855, 823, 854, 823, 855, 824, 825, 823, 821, 823, 856, 854, 825, 856, 823, 825, 858, 856, 859, 858, 861, 859, 856, 858, 859, 860, 856, 862, 863, 888, 862, 861, 863, 862, 859, 861, 859, 862, 860, 888, 865, 891, 888, 864, 865, 888, 863, 864, 888, 885, 890, 888, 884, 885, 888, 891, 884, 877, 866, 867, 866, 877, 875, 885, 869, 890, 869, 885, 886, 871, 870, 868, 870, 871, 872, 886, 871, 868, 871, 886, 882, 883, 886, 885, 873, 890, 869, 872, 869, 870, 869, 872, 874, 883, 882, 886, 874, 873, 869, 875, 877, 876, 877, 878, 876, 877, 889, 878, 877, 867, 889, 879, 881, 878, 883, 881, 882, 881, 883, 878, 885, 878, 883, 878, 885, 884, 855, 845, 824, 845, 855, 857, 889, 879, 878, 879, 894, 841, 889, 894, 879, 889, 846, 894, 880, 841, 843, 841, 880, 879, 822, 820, 823, 820, 822, 838, 822, 841, 852, 841, 822, 823, 872, 879, 854, 879, 872, 871, 882, 879, 871, 879, 882, 881, 887, 827, 821, 887, 829, 827, 887, 831, 829, 875, 891, 866, 865, 866, 891, 876, 891, 875, 876, 884, 891, 876, 878, 884, 860, 890, 856, 860, 888, 890, 860, 862, 888, 835, 834, 836, 834, 835, 840, 868, 869, 886, 869, 868, 870, 850, 847, 848, 847, 850, 849, 825, 897, 896, 897, 825, 828, 861, 898, 899, 898, 861, 858, 840, 901, 900, 901, 840, 846, 889, 902, 903, 902, 889, 867, 828, 906, 905, 906, 828, 830, 830, 907, 906, 907, 830, 832, 833, 909, 908, 909, 833, 834, 832, 908, 907, 908, 832, 833, 834, 910, 909, 910, 834, 840, 858, 904, 912, 904, 858, 825, 863, 913, 914, 913, 863, 861, 864, 914, 915, 914, 864, 863, 865, 915, 916, 915, 865, 864, 867, 917, 918, 917, 867, 866, 846, 919, 911, 919, 846, 889, 866, 916, 917, 916, 866, 865, 825, 920, 904, 920, 825, 896, 897, 905, 921, 905, 897, 828, 898, 912, 922, 912, 898, 858, 861, 923, 913, 923, 861, 899, 896, 921, 920, 921, 896, 897, 899, 922, 923, 922, 899, 898, 840, 924, 910, 924, 840, 900, 901, 911, 925, 911, 901, 846, 902, 918, 926, 918, 902, 867, 889, 927, 919, 927, 889, 903, 900, 925, 924, 925, 900, 901, 903, 926, 927, 926, 903, 902, 930, 933, 934, 933, 930, 931, 943, 939, 942, 939, 943, 938, 951, 929, 937, 929, 951, 952, 953, 941, 928, 941, 953, 950, 955, 931, 930, 931, 955, 954, 955, 945, 954, 945, 955, 944, 947, 952, 951, 952, 947, 946, 950, 948, 949, 948, 950, 953, 939, 932, 940, 939, 933, 932, 938, 933, 939, 938, 934, 933, 938, 935, 934, 938, 936, 935, 947, 938, 943, 947, 936, 938, 951, 936, 947, 951, 937, 936, 939, 949, 942, 940, 949, 939, 940, 950, 949, 940, 941, 950, 945, 931, 954, 945, 933, 931, 948, 933, 945, 948, 932, 933, 948, 928, 932, 948, 953, 928, 930, 944, 955, 934, 944, 930, 934, 946, 944, 935, 946, 934, 929, 946, 935, 929, 952, 946, 948, 942, 949, 945, 942, 948, 945, 943, 942, 944, 943, 945, 946, 943, 944, 946, 947, 943]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/HotelDeVille.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/HotelDeVille.as new file mode 100644 index 0000000..49fb81f --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/HotelDeVille.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class HotelDeVille extends Stage3DData { + + public function HotelDeVille(){ + vertices = new [107.18, 137.992, -172.428, 62.8829, 137.992, -156.002, 92.6349, 118.622, -119.251, 108.582, 118.622, -125.165, 135.816, 85.1291, -152.689, -115.678, 0.0393393, -23.0404, -31.5089, 0.0393475, -66.671, -31.1963, 0.0393479, -79.3398, -166.461, 104.444, -69.9084, -158.927, 100.777, -186.702, -34.3103, 69.4815, -155.08, -148.886, 69.4815, -112.593, 27.4462, 94.4815, -207.366, 2.56525, 69.4815, -46.5532, -1.1624, 69.4815, -65.6891, -10.386, 69.4815, -29.6714, -0.245026, 69.4815, -40.4304, 0.0858459, 69.4815, -49.2264, -3.55762, 69.4815, -49.3635, -10.103, 69.4815, -57.1791, -3.88849, 69.4815, -40.5674, -6.23083, 69.4815, -46.8841, -144.879, 69.4815, -3.98426, -83.3278, 69.4815, -2.62315, 120.403, -6.23986E-6, -194.254, 102.537, -7.90507E-6, -187.628, 120.403, 100.777, -194.254, 102.537, 69.4815, -187.628, 54.0399, 85.1291, -122.364, 38.6267, 69.4815, -163.929, 54.0398, 69.4815, -122.364, 38.6268, 100.777, -163.929, 54.0399, 100.777, -122.364, -203.763, -3.77856E-5, -30.5453, -207.77, -3.77856E-5, -41.3508, -207.416, 12.562, -40.3969, -207.77, 10.9229, -41.3508, -207.416, 25.9872, -40.3969, -208.43, 31.5038, -43.1329, -148.886, 0.0393393, -112.593, -115.678, 69.4815, -23.0404, -133.44, 69.4815, -70.9407, -185.802, 69.4815, -51.5239, -185.484, 69.4815, 11.0729, -185.484, -3.75547E-5, 11.0729, -220.406, -2.56225E-5, -144.842, -185.141, -3.56771E-5, -49.7417, -185.141, 10.9229, -49.7417, -184.788, 12.562, -48.7879, -184.788, 25.9872, -48.7879, -185.802, 31.5038, -51.5239, -87.739, -2.94819E-5, 9.1471, -201.261, -3.75547E-5, -31.473, -144.799, 69.4815, -66.7285, -170.049, 100.777, -57.3654, -183.185, 100.777, -52.4945, 0.130966, -1.1988E-5, -281.027, 8.99892, -1.1988E-5, -257.113, -174.42, -2.05077E-5, -189.097, -10.386, -2.19606E-5, -29.6714, -83.3278, -2.8763E-5, -2.62317, 0.632751, -2.12416E-5, -23.6229, -22.7718, 0.0393479, -57.4918, 17.8669, 69.4815, -233.198, 77.4458, 69.4815, -255.291, 135.816, 100.777, -152.689, -193.761, 104.444, -143.529, -161.509, 122.553, 13.448, -211.755, 69.4815, -121.513, -203.763, 100.777, -30.5453, -208.43, 100.777, -43.1329, -200.957, 121.716, -40.9704, -158.698, 150.611, -20.7694, -164.858, 150.611, -37.3806, -144.799, 100.777, -66.7285, -174.42, 69.4815, -189.097, 37.0254, 69.4815, -181.533, -199.34, 108.771, -42.989, -9.73233, 73.4945, -86.8982, -0.611145, 69.4815, -78.5851, -1.49515, 73.4945, -78.2442, -10.4793, 77.1833, -85.2137, -3.21448, 77.1833, -77.5812, -12.8853, 82.8286, -79.7876, -8.75262, 82.8286, -75.4457, -16.06, 85.2295, -72.628, -0.923752, 69.4815, -65.9163, -3.4744, 77.1833, -67.0473, -8.9005, 82.8286, -69.4534, -21.6408, 77.1833, -60.0424, -28.9056, 77.1833, -67.6748, -19.2347, 82.8286, -65.4685, -23.3674, 82.8286, -69.8103, -31.5089, 69.4815, -66.671, -28.6456, 77.1833, -78.2088, -23.2195, 82.8286, -75.8027, -21.0132, 77.1833, -85.4736, -18.8777, 82.8286, -79.9354, -10.4439, 73.4945, -58.0632, -11.1068, 77.1833, -59.7825, -13.2423, 82.8286, -65.3206, -158.465, 94.4815, -138.426, -22.7718, 69.4815, -57.4917, -22.0171, 0.0393489, -88.0769, -9.3483, 69.4815, -87.7643, -22.0171, 69.4815, -88.0769, -31.1963, 69.4815, -79.3398, -87.739, 69.4815, 9.14709, 0.632751, 69.4815, -23.6229, -187.392, 104.444, -145.89, -155.367, 100.777, -177.1, -196.432, 108.771, -35.1472, -168.044, 69.4815, -164.259, -1.78987, 73.4945, -66.3003, -0.094101, 100.777, 281.014, -17.8299, 100.777, 233.185, -48.902, 139.438, 278.289, -59.673, 100.777, 303.107, -53.0611, 139.438, 267.073, -28.6009, 139.438, 258.003, -218.519, 139.438, -179.124, -220.406, 69.4815, -144.842, -194.059, 139.438, -188.194, -189.9, 139.438, -176.978, 0.130905, 100.777, -281.027, 24.4787, 139.438, -269.232, 59.7098, 100.777, -303.12, 77.4457, 100.777, -255.292, 48.9389, 139.438, -278.302, 165.589, 100.777, 165.169, 218.556, 139.438, 179.11, 183.325, 100.777, 212.998, 214.397, 139.438, 167.894, 11.4704, -7.90507E-6, 29.2694, -61.4714, 69.4815, 56.3177, 217.944, -7.90879E-6, 68.7882, 200.078, -7.90879E-6, 75.4133, 217.944, 100.777, 68.7881, 202.531, 85.1291, 27.2232, 136.168, 69.4815, 99.1123, 120.755, 69.4815, 57.5473, 120.755, 100.777, 57.5473, -17.8299, 39.8958, 233.185, -134.584, -7.90507E-6, 156.011, -130.577, -7.90507E-6, 166.816, -130.931, 12.562, 165.863, -130.577, 10.9229, 166.816, -130.931, 25.9872, 165.863, -129.916, 31.5039, 168.599, 15.8816, -7.90879E-6, 17.4992, -72.6884, 69.4815, 92.8904, -107.288, 69.4815, 160.208, -147.859, 69.4815, 112.537, -147.859, -7.90879E-6, 112.537, 20.2176, 69.4815, 58.439, -72.6839, -9.18284E-6, 253.526, -107.949, -7.90507E-6, 158.425, -107.949, 10.9229, 158.425, -108.303, 12.562, 157.472, -108.303, 25.9872, 157.472, -107.288, 31.5039, 160.208, -72.4901, -7.90879E-6, 50.2691, 75.095, 69.4815, 139.957, -132.082, -7.90879E-6, 155.083, -134.584, 100.777, 156.011, -132.082, 100.777, 155.083, -147.859, 100.777, 112.537, -120.688, 100.777, 165.176, -127.414, 100.777, 167.671, 147.989, 118.622, 30.0235, 163.936, 118.622, 24.1101, 120.755, 85.1291, 57.5473, -0.396576, 54.6887, 253.923, -0.0940704, 39.8958, 281.014, 165.893, 54.6886, 192.26, 165.589, 39.8958, 165.169, 183.325, 39.8958, 212.998, 137.314, 100.777, 146.27, 146.431, 69.4815, 113.504, -11.2228, 100.777, 201.35, -20.3219, 69.4815, 234.109, 75.095, 0.0393622, 139.957, 20.2176, 0.0393622, 58.439, -39.4805, 0.0393622, 182.443, -72.6884, 0.0393622, 92.8904, -86.7298, 69.4815, 89.8694, -54.9261, 69.4815, 140.791, 15.8816, 69.4815, 17.4992, 30.2221, 69.4815, 30.3252, 32.7015, 69.4815, 32.9984, 41.9471, 69.4815, 50.5655, 26.5786, 69.4815, 30.1881, 32.5644, 69.4815, 36.6419, 29.8912, 69.4815, 39.1213, 29.6197, 69.4815, 49.9421, 23.9054, 69.4815, 32.6675, 23.7683, 69.4815, 36.311, 26.2477, 69.4815, 38.9842, 140.499, 69.4815, 97.5063, 202.531, 100.777, 27.2232, 136.168, 100.777, 99.1123, 145.011, 137.992, 65.4746, -72.6839, 69.4815, 253.526, -131.229, 122.553, 95.1051, -107.254, 69.4815, 97.4801, -80.6363, 104.444, 161.537, -126.026, 108.771, 154.721, -129.916, 100.777, 168.599, -125.66, 121.716, 162.086, -66.2852, 69.4815, 145.003, -106.789, 150.611, 119.217, -86.7298, 100.777, 89.8694, -100.629, 150.611, 135.829, -66.2852, 100.777, 145.003, -39.4805, 69.4815, 182.443, 49.2771, 73.4946, 72.2344, 50.773, 69.4815, 59.9842, 50.133, 69.4815, 72.6407, 49.8805, 73.4946, 60.3021, 47.6124, 77.1833, 71.4441, 48.1446, 77.1833, 60.9204, 42.2504, 82.8286, 68.8986, 42.5531, 82.8286, 62.912, 35.1753, 85.2296, 65.5399, 42.2761, 69.4815, 50.5822, 41.907, 73.128, 51.3599, 41.8698, 73.4946, 51.4381, 41.0796, 77.1833, 53.1027, 38.534, 82.8286, 58.4648, 22.7382, 77.1833, 59.6356, 22.206, 77.1833, 70.1593, 28.1003, 82.8286, 62.1811, 27.7975, 82.8286, 68.1677, 29.2711, 77.1833, 77.977, 31.8166, 82.8286, 72.6149, 40.7309, 69.4815, 81.1376, 39.7948, 77.1833, 78.5092, 37.8032, 82.8286, 72.9177, 29.9376, 73.4946, 50.8347, 41.9029, 73.4946, 51.4398, 41.3765, 69.4815, 80.5542, 30.5559, 77.1833, 52.5706, 32.5475, 82.8286, 58.1621, 11.4704, 69.4815, 29.2694, 19.5776, 0.0393622, 71.0955, 19.5776, 69.4815, 71.0955, 40.731, 0.0393622, 81.1376, 50.133, 0.0393622, 72.6407, 28.0745, 0.0393622, 80.4976, 28.0745, 69.4815, 80.4976, -61.4714, -7.90507E-6, 56.3176, -72.4901, 69.4815, 50.2691, 193.688, 137.992, 60.861, -123.118, 108.771, 162.563, 41.8698, 73.4946, 51.4381, 41.907, 73.128, 51.3599, -127.11, 121.716, 158.173, -102.271, 69.4815, 173.736, -105.493, 69.4815, 165.049, -103.882, 80.1673, 169.392, -105.493, 78.3544, 165.049, -102.271, 78.3544, 173.736, -94.9741, 78.3544, 171.03, -98.1956, 78.3544, 162.343, -95.0939, 80.1673, 166.133, -92.7007, 69.4815, 199.546, -92.7007, 78.3544, 199.546, -94.3115, 80.1673, 195.202, -88.6249, 78.3544, 188.152, -95.9222, 78.3544, 190.858, -85.4034, 78.3544, 196.84, -95.9222, 69.4815, 190.858, -85.5232, 80.1673, 191.943, -76.0898, 80.1673, 244.341, -67.3015, 80.1673, 241.082, -77.7005, 78.3544, 239.997, -77.7005, 69.4815, 239.997, -67.1817, 78.3544, 245.979, -74.479, 78.3544, 248.685, -74.479, 69.4815, 248.685, -70.4032, 78.3544, 237.291, -85.6604, 80.1673, 218.531, -79.9738, 78.3544, 211.482, -76.8722, 80.1673, 215.273, -87.2712, 78.3544, 214.188, -76.7524, 78.3544, 220.169, -84.0497, 78.3544, 222.875, -87.2712, 69.4815, 214.188, -84.0497, 69.4815, 222.875, 210.048, 78.3544, 102.301, 210.048, 69.4815, 102.301, 208.437, 80.1673, 97.9573, 202.751, 78.3544, 105.007, 199.649, 80.1673, 101.216, 199.529, 78.3544, 96.3196, 206.826, 78.3544, 93.6136, 206.826, 69.4815, 93.6136, 218.425, 78.3544, 124.892, 215.204, 78.3544, 116.205, 216.814, 80.1673, 120.549, 211.128, 78.3544, 127.598, 207.906, 78.3544, 118.911, 215.204, 69.4815, 116.205, 218.425, 69.4815, 124.892, 208.026, 80.1673, 123.807, -15.4916, 78.3544, -248.031, -15.4916, 69.4815, -248.031, -6.8042, 78.3544, -251.253, -11.1479, 80.1673, -249.642, -12.7856, 78.3544, -240.734, -4.09821, 78.3544, -243.955, -6.8042, 69.4815, -251.253, -7.88905, 80.1673, -240.854, -42.1186, 80.1673, -238.157, -38.8597, 80.1673, -229.369, -46.4623, 78.3544, -236.547, -46.4623, 69.4815, -236.547, -35.0689, 78.3544, -232.471, -37.7749, 78.3544, -239.768, -37.7749, 69.4815, -239.768, -43.7564, 78.3544, -229.249, -76.3994, 78.3544, -225.445, -67.712, 78.3544, -228.667, -72.0557, 80.1673, -227.056, -73.6935, 78.3544, -218.148, -76.3994, 69.4815, -225.445, -65.006, 78.3544, -221.37, -67.712, 69.4815, -228.667, -68.7969, 80.1673, -218.268, -107.518, 78.3544, -213.906, -98.8304, 69.4815, -217.128, -103.174, 80.1673, -215.517, -99.9152, 80.1673, -206.729, -96.1244, 78.3544, -209.83, -98.8304, 78.3544, -217.128, -107.518, 69.4815, -213.906, -104.812, 78.3544, -206.609, -129.432, 69.4815, -205.78, -129.432, 78.3544, -205.78, -133.776, 80.1673, -204.169, -130.517, 80.1673, -195.381, -138.119, 78.3544, -202.559, -126.726, 78.3544, -198.483, -138.119, 69.4815, -202.559, -135.413, 78.3544, -195.261, -167.614, 78.3544, -191.622, -163.27, 80.1673, -193.232, -164.908, 78.3544, -184.324, -158.926, 78.3544, -194.843, -158.926, 69.4815, -194.843, -156.22, 78.3544, -187.546, -167.614, 69.4815, -191.622, -160.011, 80.1673, -184.444, -190.819, 69.4815, -65.0523, -187.597, 69.4815, -56.3648, -189.208, 80.1673, -60.7085, -180.42, 80.1673, -63.9674, -187.597, 78.3544, -56.3648, -190.819, 78.3544, -65.0523, -183.521, 78.3544, -67.7582, -180.3, 78.3544, -59.0708, -197.168, 78.3544, -82.1745, -198.779, 80.1673, -86.5182, -200.39, 78.3544, -90.8619, -193.092, 78.3544, -93.5679, -197.168, 69.4815, -82.1745, -200.39, 69.4815, -90.8619, -189.871, 78.3544, -84.8804, -189.991, 80.1673, -89.777, -218.611, 78.3544, -140.001, -217, 80.1673, -135.657, -208.092, 78.3544, -134.02, -215.39, 78.3544, -131.314, -215.39, 69.4815, -131.314, -218.611, 69.4815, -140.001, -211.314, 78.3544, -142.707, -208.212, 80.1673, -138.916, -207.43, 80.1673, -109.848, -198.522, 78.3544, -108.21, -205.819, 78.3544, -105.504, -205.819, 69.4815, -105.504, -201.743, 78.3544, -116.898, -209.041, 78.3544, -114.192, -209.041, 69.4815, -114.192, -198.642, 80.1673, -113.107, 95.7875, 78.3544, -205.829, 94.1767, 80.1673, -210.172, 85.2687, 78.3544, -211.81, 92.566, 78.3544, -214.516, 88.4902, 78.3544, -203.123, 92.566, 69.4815, -214.516, 95.7875, 69.4815, -205.829, 85.3885, 80.1673, -206.913, 84.1887, 69.4815, -237.107, 85.7994, 80.1673, -232.764, 77.0112, 80.1673, -229.505, 84.1887, 78.3544, -237.107, 87.4102, 78.3544, -228.42, 87.4102, 69.4815, -228.42, 80.1129, 78.3544, -225.714, 76.8914, 78.3544, -234.401, 126.624, 100.777, 73.3766, 138.045, 115.036, 69.1415, 141.719, 115.036, 79.0481, 128.461, 118.776, 78.3299, 139.124, 118.776, 74.3759, 142.878, 118.776, 72.9839, 126.624, 100.777, 73.3766, 138.045, 115.036, 69.1415, 141.719, 115.036, 79.0481, 126.624, 115.036, 73.3766, 130.298, 100.777, 83.2832, 130.298, 115.036, 83.2832, -74.7088, 115.036, 122.287, -86.1297, 115.036, 126.522, -87.2085, 118.776, 121.287, -90.9622, 118.776, 122.679, -90.9622, 118.776, 122.679, -86.1297, 115.036, 126.522, -78.3824, 100.777, 112.38, -76.5456, 118.776, 117.333, -78.3824, 100.777, 112.38, -78.3824, 115.036, 112.38, -100.474, 83.7406, 178.584, -89.0529, 83.7406, 174.349, -85.3794, 83.7406, 184.255, -96.8003, 83.7406, 188.49, -98.637, 87.4807, 183.537, -100.474, 69.4815, 178.584, -89.0529, 83.7406, 174.349, -85.3794, 83.7406, 184.255, -100.474, 69.4815, 178.584, -80.4019, 83.7406, 197.678, -76.7283, 83.7406, 207.585, -88.1492, 83.7406, 211.82, -89.986, 87.4807, 206.867, -75.5695, 87.4807, 201.521, -91.8228, 69.4815, 201.913, -80.4019, 83.7406, 197.678, -76.7283, 83.7406, 207.585, -91.8228, 69.4815, 201.913, -91.8228, 83.7406, 201.913, -139.512, 115.036, 135.048, -139.512, 100.777, 135.048, -128.091, 115.036, 130.813, -124.417, 115.036, 140.719, -135.838, 115.036, 144.955, -139.512, 100.777, 135.048, -128.091, 115.036, 130.813, -124.417, 115.036, 140.719, -137.675, 118.776, 140.001, 200.653, 115.036, 57.194, 208.4, 115.036, 43.0524, 210.237, 118.776, 48.0057, 199.574, 118.776, 51.9597, 195.821, 118.776, 53.3516, 195.821, 118.776, 53.3516, 200.653, 115.036, 57.194, 208.4, 100.777, 43.0524, 212.074, 115.036, 52.959, 208.4, 100.777, 43.0524, -71.7508, 83.7406, 221.008, -68.0772, 83.7406, 230.914, -81.3349, 87.4807, 230.196, -66.9184, 87.4807, 224.85, -83.1717, 69.4815, 225.243, -71.7508, 83.7406, 221.008, -79.4981, 69.4815, 235.149, -68.0772, 83.7406, 230.914, -83.1717, 69.4815, 225.243, -79.4981, 83.7406, 235.149, -156.56, 69.4815, 89.0738, -145.139, 83.7406, 84.8387, -141.465, 83.7406, 94.7453, -152.886, 69.4815, 98.9804, -152.886, 83.7406, 98.9804, -154.723, 87.4807, 94.0271, -144.06, 87.4807, 90.0731, -156.56, 69.4815, 89.0738, -145.139, 83.7406, 84.8387, -141.465, 83.7406, 94.7453, -156.56, 83.7406, 89.0738, 218.068, 115.036, 200.115, 213.833, 115.036, 188.694, 203.926, 115.036, 192.368, 208.161, 115.036, 203.789, 209.161, 118.776, 191.289, 207.769, 118.776, 187.535, 213.833, 115.036, 188.694, 213.115, 118.776, 201.952, 218.068, 100.777, 200.115, 208.161, 100.777, 203.789, 232.197, 115.036, 162.032, 224.45, 115.036, 176.173, 234.034, 118.776, 166.985, 223.371, 118.776, 170.939, 219.617, 118.776, 172.331, 219.617, 118.776, 172.331, 232.197, 100.777, 162.032, 220.776, 115.036, 166.267, 224.45, 115.036, 176.173, 232.197, 100.777, 162.032, 235.871, 115.036, 171.938, -7.12733, 115.036, 262.047, -18.5482, 115.036, 266.282, -10.8009, 115.036, 252.14, -19.627, 118.776, 261.048, -23.3806, 118.776, 262.439, -23.3806, 118.776, 262.439, -18.5482, 115.036, 266.282, -10.8009, 100.777, 252.14, -22.2218, 115.036, 256.375, -8.96413, 118.776, 257.094, -10.8009, 100.777, 252.14, -34.8369, 100.777, 293.897, -29.1654, 115.036, 278.802, -29.8836, 118.776, 292.06, -33.8376, 118.776, 281.397, -35.2295, 118.776, 277.644, -39.0719, 115.036, 282.476, -29.1654, 115.036, 278.802, -34.8369, 115.036, 293.897, -24.9303, 100.777, 290.223, -24.9303, 115.036, 290.223, -58.9589, 115.036, 269.998, -55.2854, 115.036, 279.905, -68.543, 118.776, 279.186, -57.8802, 118.776, 275.232, -58.9589, 115.036, 269.998, -55.2854, 115.036, 279.905, -70.3798, 100.777, 274.233, -70.3798, 115.036, 274.233, -66.7063, 100.777, 284.14, -66.7063, 115.036, 284.14, -149.227, 83.7406, -185.448, -139.32, 83.7406, -189.122, -144.554, 87.4807, -188.043, -148.508, 87.4807, -198.706, -153.462, 69.4815, -196.869, -153.462, 83.7406, -196.869, -143.555, 83.7406, -200.543, -118.731, 83.7406, -196.757, -108.824, 83.7406, -200.43, -113.059, 69.4815, -211.851, -113.059, 83.7406, -211.851, -114.058, 87.4807, -199.352, -118.012, 87.4807, -210.015, -122.966, 69.4815, -208.178, -26.973, 83.7406, -230.783, -17.0664, 83.7406, -234.456, -21.3015, 69.4815, -245.877, -21.3015, 83.7406, -245.877, -26.2548, 87.4807, -244.04, -22.3008, 87.4807, -233.377, -20.9089, 87.4807, -229.624, -31.2081, 69.4815, -242.203, -31.2081, 83.7406, -242.203, -57.6537, 83.7406, -219.405, -47.747, 83.7406, -223.079, -51.9821, 83.7406, -234.5, -52.9814, 87.4807, -222, -56.9354, 87.4807, -232.663, -61.8887, 69.4815, -230.826, -93.0233, 69.4815, -219.281, -88.7883, 83.7406, -207.86, -78.8817, 83.7406, -211.534, -88.0701, 87.4807, -221.118, -84.1161, 87.4807, -210.455, -93.0233, 83.7406, -219.281, -83.1168, 83.7406, -222.955, 48.17, 115.036, -138.194, 48.17, 100.777, -138.194, 59.5909, 115.036, -142.429, 55.9174, 115.036, -152.335, 44.4965, 115.036, -148.1, 46.3333, 118.776, -143.147, 56.9962, 118.776, -147.101, 59.5909, 115.036, -142.429, 55.9174, 115.036, -152.335, 44.4965, 100.777, -148.1, -136.376, 115.036, -44.0122, -147.797, 115.036, -39.7771, -144.123, 115.036, -29.8705, -134.539, 118.776, -39.0589, -136.376, 100.777, -44.0122, -147.797, 115.036, -39.7771, -144.123, 115.036, -29.8705, -136.376, 100.777, -44.0122, -132.702, 115.036, -34.1056, -192.617, 69.4815, -69.9001, -181.196, 83.7406, -74.1352, -184.869, 83.7406, -84.0418, -194.453, 87.4807, -74.8534, -181.196, 83.7406, -74.1352, -196.29, 69.4815, -79.8067, -184.869, 83.7406, -84.0418, -192.616, 83.7406, -69.9001, -196.29, 69.4815, -79.8067, -196.29, 83.7406, -79.8067, -201.268, 83.7406, -93.2296, -189.847, 83.7406, -97.4647, -193.52, 83.7406, -107.371, -203.104, 87.4807, -98.1829, -188.688, 87.4807, -103.529, -189.847, 83.7406, -97.4647, -204.941, 69.4815, -103.136, -193.52, 83.7406, -107.371, -201.268, 69.4815, -93.2296, -204.941, 69.4815, -103.136, -204.941, 83.7406, -103.136, -193.831, 115.036, -11.4376, -182.411, 115.036, -15.6727, -186.084, 115.036, -25.5793, -197.505, 115.036, -21.3442, -181.252, 118.776, -21.7369, -182.411, 115.036, -15.6727, -197.505, 100.777, -21.3442, -186.084, 115.036, -25.5793, -195.668, 118.776, -16.3909, -197.505, 100.777, -21.3442, 114.852, 115.036, -174.189, 118.525, 115.036, -164.283, 129.946, 115.036, -168.518, 117.447, 118.776, -169.517, 113.693, 118.776, -168.125, 118.525, 115.036, -164.283, 128.109, 118.776, -173.471, 126.273, 100.777, -178.424, 126.273, 115.036, -178.424, -198.498, 83.7406, -120.794, -202.171, 83.7406, -130.701, -213.592, 69.4815, -126.466, -213.592, 83.7406, -126.466, -211.755, 87.4807, -121.513, -197.339, 87.4807, -126.858, -198.498, 83.7406, -120.794, -213.592, 69.4815, -126.466, -202.171, 83.7406, -130.701, -209.919, 69.4815, -116.559, -209.919, 83.7406, -116.559, -176.783, 83.7406, 34.5365, -165.362, 83.7406, 30.3014, -169.036, 83.7406, 20.3948, -164.204, 87.4807, 24.2373, -165.362, 83.7406, 30.3014, -169.036, 83.7406, 20.3948, -178.62, 87.4807, 29.5832, -176.783, 69.4815, 34.5365, -180.457, 69.4815, 24.6299, -180.457, 83.7406, 24.6299, 34.8737, 115.036, -293.91, 39.1088, 115.036, -282.49, 29.2022, 115.036, -278.816, 29.9204, 118.776, -292.074, 33.8744, 118.776, -281.411, 35.2663, 118.776, -277.657, 39.1088, 115.036, -282.49, 24.9671, 100.777, -290.237, 29.2022, 115.036, -278.816, 24.9671, 100.777, -290.237, 24.9671, 115.036, -290.237, 70.4168, 115.036, -274.247, 58.9959, 115.036, -270.012, 66.7432, 115.036, -284.153, 57.9171, 118.776, -275.246, 54.1635, 118.776, -273.854, 54.1635, 118.776, -273.854, 58.9959, 115.036, -270.012, 66.7432, 100.777, -284.153, 55.3223, 115.036, -279.918, 68.58, 118.776, -279.2, 70.4168, 100.777, -274.247, 66.7432, 100.777, -284.153, -213.796, 115.036, -188.708, -203.889, 115.036, -192.381, -208.124, 115.036, -203.802, -213.078, 118.776, -201.965, -209.124, 118.776, -191.302, -218.031, 100.777, -200.128, -213.796, 115.036, -188.708, -203.889, 115.036, -192.381, -218.031, 100.777, -200.128, -218.031, 115.036, -200.128, -220.739, 115.036, -166.28, -224.413, 115.036, -176.187, -223.334, 118.776, -170.953, -220.739, 115.036, -166.28, -224.413, 115.036, -176.187, -233.997, 118.776, -166.999, -232.16, 100.777, -162.045, -232.16, 115.036, -162.045, -235.834, 100.777, -171.952, 187.713, 115.036, 189.796, 184.039, 115.036, 179.89, 185.118, 118.776, 185.124, 188.872, 118.776, 183.732, 187.713, 115.036, 189.796, 184.039, 115.036, 179.89, 174.455, 118.776, 189.078, 176.292, 115.036, 194.031, 172.618, 100.777, 184.125, 172.618, 115.036, 184.125, 167.532, 148.133, 40.0012, 155.615, 143.763, 44.4202, 167.532, 143.763, 40.0012, 155.615, 148.133, 44.4202, 168.849, 148.133, 43.5525, 168.849, 143.763, 43.5525, 156.932, 148.133, 47.9714, 156.932, 143.763, 47.9714, 181.759, 148.133, 78.3669, 169.842, 143.763, 82.7858, 181.759, 143.763, 78.3669, 169.842, 148.133, 82.7858, 183.076, 148.133, 81.9181, 183.076, 143.763, 81.9181, 171.159, 148.133, 86.337, 171.159, 143.763, 86.337, -92.2921, 159.241, 149.907, -107.004, 153.846, 155.362, -92.2921, 153.846, 149.907, -107.004, 159.241, 155.362, -90.6663, 159.241, 154.291, -90.6663, 153.846, 154.291, -105.378, 159.241, 159.746, -105.378, 153.846, 159.746, -109.646, 159.241, 103.107, -124.358, 153.846, 108.563, -109.646, 153.846, 103.107, -124.358, 159.241, 108.563, -111.272, 159.241, 98.723, -111.272, 153.846, 98.723, -125.984, 159.241, 104.178, -125.984, 153.846, 104.178, 189.342, 148.133, 156.108, 201.258, 143.763, 151.689, 189.342, 143.763, 156.108, 201.258, 148.133, 151.689, 190.658, 148.133, 159.659, 190.658, 143.763, 159.659, 202.575, 148.133, 155.24, 202.575, 143.763, 155.24, 242.904, -1.31913E-5, 190.905, 225.168, 100.777, 143.076, 242.904, 100.777, 190.905, -41.7475, 148.133, 241.8, -53.6641, 143.763, 246.219, -41.7475, 143.763, 241.8, -53.6641, 148.133, 246.219, -40.4306, 148.133, 245.352, -40.4306, 143.763, 245.352, -52.3472, 148.133, 249.771, -52.3472, 143.763, 249.771, -59.673, -1.03712E-5, 303.107, -77.4088, -1.03712E-5, 255.278, -77.4088, 100.777, 255.278, 107.745, 69.4815, 52.1468, 80.5026, 69.4815, 62.2488, 116.834, 69.4815, 76.6576, 89.5917, 69.4815, 86.7596, 107.745, 71.6862, 52.1468, 116.834, 71.6862, 76.6576, 89.5917, 71.6862, 86.7596, 80.5026, 71.6862, 62.2488, 75.095, -1.05202E-5, 139.957, 50.133, -1.05202E-5, 72.6407, 100.948, 148.133, -139.559, 89.0311, 143.763, -135.14, 100.948, 143.763, -139.559, 89.0311, 148.133, -135.14, 99.6308, 148.133, -143.11, 99.6308, 143.763, -143.11, 87.7142, 148.133, -138.691, 87.7142, 143.763, -138.691, 86.721, 148.133, -177.924, 74.8044, 143.763, -173.505, 86.721, 143.763, -177.924, 74.8044, 148.133, -173.505, 85.4041, 148.133, -181.475, 85.4041, 143.763, -181.475, 73.4875, 148.133, -177.057, 73.4875, 143.763, -177.057, -167.716, 159.241, -53.4907, -182.428, 153.846, -48.0352, -167.716, 153.846, -53.4907, -182.428, 159.241, -48.0352, -169.341, 159.241, -57.8749, -169.341, 153.846, -57.8749, -184.053, 159.241, -52.4195, -184.053, 153.846, -52.4195, -150.362, 159.241, -6.69114, -165.073, 153.846, -1.23569, -150.362, 153.846, -6.69114, -165.073, 159.241, -1.23569, -148.736, 159.241, -2.30688, -148.736, 153.846, -2.30688, -163.448, 159.241, 3.14857, -163.448, 153.846, 3.14857, 6.6127, 148.133, -263.008, 11.0316, 143.763, -251.091, 6.6127, 143.763, -263.008, 11.0316, 148.133, -251.091, 10.1639, 148.133, -264.325, 10.1639, 143.763, -264.325, 14.5829, 148.133, -252.408, 14.5829, 143.763, -252.408, 41.7843, 148.133, -241.814, 53.701, 143.763, -246.233, 41.7843, 143.763, -241.814, 53.701, 148.133, -246.233, 40.4675, 148.133, -245.365, 40.4675, 143.763, -245.365, 52.3841, 148.133, -249.784, 52.3841, 143.763, -249.784, 59.7099, -1.04122E-5, -303.12, 8.99892, 69.4815, -257.113, 17.8668, 100.777, -233.198, -189.322, 148.133, -156.169, -201.239, 143.763, -151.75, -189.322, 143.763, -156.169, -201.239, 148.133, -151.75, -190.639, 148.133, -159.72, -190.639, 143.763, -159.72, -202.556, 148.133, -155.301, -202.556, 143.763, -155.301, -176.45, 148.133, -195.111, -172.031, 143.763, -183.195, -176.45, 143.763, -195.111, -172.031, 148.133, -183.195, -180.002, 148.133, -193.795, -180.002, 143.763, -193.795, -175.583, 148.133, -181.878, -175.583, 143.763, -181.878, -183.288, -2.05077E-5, -213.012, -242.867, -1.31503E-5, -190.919, -165.552, 69.4815, -165.183, -183.288, 100.777, -213.012, -165.552, 100.777, -165.183, -225.131, -1.31503E-5, -143.09, -225.131, 100.777, -143.09, -242.867, 100.777, -190.919, 47.6178, 69.4815, -110.707, 38.7067, 69.4815, -134.737, 11.7227, 69.4815, -124.731, 20.6338, 69.4815, -100.7, 47.6178, 71.6862, -110.707, 20.6338, 71.6862, -100.7, 38.7067, 71.6862, -134.737, 11.7227, 71.6862, -124.731, -34.3103, 0.0196664, -155.08, -9.3483, 0.0196664, -87.7643, -124.355, 100.777, -11.595, -124.355, 69.4815, -11.595, -185.484, 100.777, 11.073, -147.589, 207.916, 56.1729, -148.605, 207.915, 55.0773, -147.122, 208.992, 55.1509, -146.777, 209.124, 54.3993, -146.489, 208.994, 55.1747, -148.389, 202.663, 54.9969, -147.236, 203.408, 55.4195, -147.487, 202.664, 55.969, -147.823, 203.407, 54.787, -147.552, 208.992, 54.6867, -148.249, 204.426, 54.9453, -147.082, 205.281, 55.0771, -147.427, 204.427, 55.832, -147.472, 205.28, 54.6569, -147.518, 206.447, 56.0229, -148.449, 206.446, 55.0192, -144.944, 207.923, 53.7196, -145, 207.922, 55.2129, -146.025, 208.995, 54.7442, -146.001, 208.995, 54.1116, -146.432, 208.995, 53.6475, -146.509, 205.282, 55.0986, -145.332, 204.432, 55.0551, -146.218, 204.43, 55.8775, -146.089, 205.283, 54.7089, -146.374, 203.41, 55.4519, -145.742, 203.411, 54.8653, -146.026, 206.452, 52.7718, -145.095, 206.453, 53.7755, -146.096, 207.919, 56.2291, -145.96, 207.922, 52.6239, -145.19, 202.669, 55.1173, -146.162, 202.667, 56.0189, -145.14, 202.67, 53.7924, -145.709, 203.412, 54.0033, -145.146, 206.452, 55.1435, -146.15, 206.449, 56.0744, -145.286, 204.433, 53.8465, -146.067, 205.283, 54.1362, -146.457, 205.283, 53.716, -147.158, 203.41, 53.3384, -148.339, 202.664, 53.672, -147.367, 202.667, 52.7704, -147.79, 203.408, 53.925, -146.109, 204.432, 52.9598, -148.549, 207.916, 53.584, -146.296, 203.411, 53.3709, -146.042, 202.669, 52.8203, -147.064, 208.994, 53.6237, -147.45, 205.281, 54.0842, -147.453, 207.919, 52.5678, -148.204, 204.427, 53.7368, -147.394, 206.449, 52.7203, -148.397, 206.447, 53.6513, -147.03, 205.282, 53.6944, -147.317, 204.43, 52.9144, -147.528, 208.992, 54.0542, -146.289, 165.104, 43.6629, -138.838, 165.116, 47.083, -138.722, 169.969, 54.6713, -140.847, 169.969, 48.9413, -157.396, 165.075, 53.965, -153.976, 165.087, 46.5135, -153.116, 98.2225, 69.0014, -131.606, 122.577, 61.0249, -131.558, 98.2699, 61.0075, -153.163, 122.529, 69.0189, -155.11, 159.676, 62.1814, -147.094, 165.087, 65.0724, -154.546, 165.075, 61.6524, -146.908, 201.707, 58.259, -144.132, 201.713, 57.2298, -146.401, 169.96, 46.392, -135.987, 165.116, 54.7704, -151.526, 198.801, 58.8156, -153.258, 198.801, 54.1474, -152.555, 169.938, 59.8011, -147.001, 169.947, 62.3504, -149.393, 201.707, 51.5582, -150.628, 201.703, 54.2486, -149.598, 201.703, 57.0241, -141.271, 169.96, 60.2256, -149.364, 173.717, 56.837, -152.131, 169.947, 48.5168, -146.249, 159.707, 42.8759, -152.066, 195.115, 59.3196, -147.022, 195.123, 61.6344, -139.407, 165.104, 62.2218, -154.68, 169.938, 54.071, -153.995, 195.115, 54.1167, -146.765, 203.092, 54.395, -139.6, 122.577, 39.4672, -161.11, 98.2225, 47.4437, -139.552, 98.2699, 39.4498, -161.157, 122.529, 47.4612, -151.181, 198.808, 49.6224, -151.68, 195.123, 49.0735, -144.053, 173.73, 51.9108, -147.002, 198.808, 60.8925, -146.617, 201.713, 50.529, -142.333, 198.818, 59.1614, -141.434, 195.143, 49.4589, -146.477, 195.134, 47.1441, -141.82, 195.134, 59.705, -151.717, 198.057, 58.993, -147.01, 198.064, 61.1535, -151.357, 198.064, 49.43, -153.518, 198.057, 54.137, -140.256, 198.826, 54.6364, -146.512, 198.818, 47.8913, -141.987, 198.826, 49.9682, -139.505, 195.143, 54.6618, -143.927, 201.718, 51.7638, -142.898, 201.718, 54.5394, -138.18, 122.575, 46.5195, -146.177, 122.562, 42.8492, -135.121, 122.575, 54.7693, -138.792, 122.562, 62.7659, -147.041, 122.544, 65.825, -158.097, 122.531, 53.905, -154.427, 122.544, 45.9083, -155.038, 122.531, 62.1547, -146.501, 198.075, 47.6293, -139.993, 198.082, 54.6457, -142.154, 198.075, 59.3528, -141.794, 198.082, 49.7897, -143.089, 173.73, 54.51, -150.328, 173.717, 54.2377, -149.171, 173.721, 51.7182, -144.245, 173.726, 57.0295, -146.845, 173.721, 57.9934, -146.572, 173.726, 50.7544, -151.674, 176.085, 58.9772, -151.691, 98.2256, 68.4729, -162.687, 98.2225, 72.5505, -166.684, 101.766, 61.7716, -159.685, 98.2256, 46.9152, -170.681, 98.2225, 50.9928, -157.12, 101.766, 58.2251, -170.681, 69.4815, 50.9928, -162.687, 69.4815, 72.5505, 29.5067, 95.4657, 31.8838, 25.464, 95.4657, 33.3829, 27.1749, 95.4657, 31.7961, 31.0935, 95.4657, 33.5947, 31.0058, 95.4657, 35.9265, 25.3763, 95.4657, 35.7147, 26.9631, 95.4657, 37.4256, 29.2949, 95.4657, 37.5133, -0.629578, 95.4657, -47.6678, -4.67226, 95.4657, -46.1687, -2.9614, 95.4657, -47.7555, 0.95726, 95.4657, -45.9569, 0.869537, 95.4657, -43.6251, -4.75996, 95.4657, -43.8369, -3.17314, 95.4657, -42.126, -0.841339, 95.4657, -42.0383, -6.3679, 69.4815, -43.2406, 2.42819, 69.4815, -42.9098, -147.041, 122.544, 65.825, -138.792, 122.562, 62.7659, -147.113, 159.689, 65.8517, -145.478, 141.643, 65.2453, -145.499, 152.509, 65.2531, -140.937, 141.653, 63.5616, -138.863, 159.707, 62.7926, -140.958, 152.519, 63.5694, -146.967, 176.092, 61.1377, -142.147, 194.771, 59.3504, -142.111, 176.103, 59.337, -147.003, 194.76, 61.1511, -158.097, 122.531, 53.905, -155.176, 141.637, 47.4735, -155.197, 152.503, 47.4813, -157.196, 141.63, 51.8746, -158.169, 159.676, 53.9317, -157.217, 152.496, 51.8824, -151.315, 176.092, 49.4142, -153.511, 194.752, 54.1346, -153.475, 176.085, 54.1212, -153.524, 141.629, 62.8805, -153.545, 152.496, 62.8883, -149.122, 141.637, 64.9006, -149.144, 152.503, 64.9084, -154.427, 122.544, 45.9083, -147.815, 141.654, 43.4564, -147.836, 152.521, 43.4642, -152.355, 141.644, 45.1401, -154.499, 159.689, 45.935, -152.376, 152.511, 45.1479, -151.351, 194.76, 49.4276, -138.116, 141.66, 61.2281, -138.138, 152.527, 61.2359, -136.096, 141.668, 56.827, -136.117, 152.534, 56.8348, -135.121, 122.575, 54.7693, -138.18, 122.575, 46.5195, -135.193, 159.72, 54.7959, -135.752, 141.671, 53.1824, -135.773, 152.537, 53.1902, -137.435, 141.671, 48.642, -138.252, 159.72, 46.5462, -137.457, 152.537, 48.6498, -139.951, 176.11, 54.6299, -141.788, 194.778, 49.7874, -141.752, 176.11, 49.7739, -139.987, 194.778, 54.6434, -155.038, 122.531, 62.1547, -157.541, 141.627, 55.5193, -157.562, 152.493, 55.5271, -155.857, 141.627, 60.0597, -155.878, 152.493, 60.0675, -151.711, 194.752, 58.9906, -146.177, 122.562, 42.8492, -139.769, 141.668, 45.8211, -139.79, 152.534, 45.8289, -144.17, 141.661, 43.8011, -144.191, 152.527, 43.8089, -146.495, 194.771, 47.6269, -146.459, 176.103, 47.6135, -2.10069, 27.5905, 20.5479, -2.10069, -1.31503E-5, 20.5479, -56.8678, 27.5905, 40.8566, -56.8678, -1.05985E-5, 40.8566, -14.9897, 27.5905, -14.2103, -14.9897, -1.05985E-5, -14.2103, -25.8732, 40.3464, 9.59436, -69.7568, 27.5905, 6.09838, -69.7568, -1.3154E-5, 6.09838, -45.9842, 40.3464, 17.0519, 168.145, 100.777, 43.6132, 162.829, 100.777, 45.5846, 157.505, 100.777, 47.5587, 157.505, 143.763, 47.5587, 166.959, 100.777, 40.4139, 166.959, 143.763, 40.4139, 156.319, 100.777, 44.3594, 170.546, 100.777, 82.725, 182.372, 100.777, 81.9789, 171.732, 143.763, 85.9243, 182.372, 143.763, 81.9789, 171.732, 100.777, 85.9243, 181.185, 100.777, 78.7795, 181.185, 143.763, 78.7795, -92.9996, 110.996, 150.416, -98.0982, 100.777, 156.8, -106.135, 110.996, 155.287, -104.671, 153.846, 159.237, -92.9997, 153.846, 150.416, -111.98, 100.777, 99.2325, -110.515, 100.777, 103.182, -125.115, 100.777, 104.103, -123.651, 100.777, 108.053, -125.115, 153.846, 104.103, -111.98, 153.846, 99.2325, -123.651, 153.846, 108.053, 191.232, 100.777, 159.247, 201.871, 143.763, 155.301, 191.232, 143.763, 159.247, 201.871, 100.777, 155.301, 200.685, 143.763, 152.102, 200.685, 100.777, 152.102, 190.045, 100.777, 156.047, -41.1342, 100.777, 245.413, -51.7741, 143.763, 249.358, -41.1342, 143.763, 245.413, -51.7741, 100.777, 249.358, -52.9604, 100.777, 246.159, -42.3206, 100.777, 242.213, -42.3206, 143.763, 242.213, 89.6042, 100.777, -135.552, 88.4178, 143.763, -138.752, 99.0577, 100.777, -142.697, 99.0577, 143.763, -142.697, 88.4178, 100.777, -138.752, 89.6042, 143.763, -135.552, 100.244, 100.777, -139.498, 84.831, 100.777, -181.063, 74.1912, 100.777, -177.117, 75.3775, 100.777, -173.918, 74.1911, 143.763, -177.117, 84.831, 143.763, -181.063, 75.3775, 143.763, -173.918, 86.0174, 100.777, -177.864, -168.584, 110.996, -53.4156, -181.72, 110.996, -48.5447, -168.585, 153.846, -53.4156, -183.185, 153.846, -52.4945, -170.049, 153.846, -57.3654, -181.72, 153.846, -48.5447, -151.069, 100.777, -6.18165, -149.605, 100.777, -2.23187, -162.74, 153.846, 2.63906, -149.605, 153.846, -2.23187, -162.74, 100.777, 2.63906, -164.205, 100.777, -1.31072, -151.069, 153.846, -6.18165, -191.212, 100.777, -159.307, -201.852, 100.777, -155.362, -191.212, 143.763, -159.307, -200.666, 143.763, -152.162, -200.666, 100.777, -152.162, -190.026, 100.777, -156.108, -179.589, 100.777, -193.221, -176.39, 100.777, -194.408, -175.643, 100.777, -182.582, -172.444, 100.777, -183.768, -175.643, 143.763, -182.582, -176.39, 143.763, -194.408, 10.2247, 100.777, -263.621, 14.1702, 100.777, -252.981, 7.02542, 143.763, -262.435, 14.1702, 143.763, -252.981, 10.2247, 143.763, -263.621, 10.9709, 143.763, -251.795, 10.9709, 100.777, -251.795, 7.02541, 100.777, -262.435, 52.9973, 100.777, -246.172, 41.1711, 100.777, -245.426, 51.811, 100.777, -249.371, 51.811, 143.763, -249.371, 52.9973, 143.763, -246.172, 42.3575, 100.777, -242.227, 42.3575, 143.763, -242.227, 68.5858, 105.703, -187.804, 51.8108, 105.703, -233.041, 191.224, 105.703, 142.919, 174.449, 105.703, 97.6816, -1.18672, 100.777, -245.195, 42.9576, 69.4815, -165.535, -34.3103, 69.4815, -155.08, 67.2632, 137.992, -144.19, -160.092, 104.444, -72.27, -201.261, 100.777, -31.473, -199.202, 100.777, -46.555, -199.506, 121.716, -37.0576, -24.4419, 139.438, 269.218, -214.36, 139.438, -167.908, 28.6378, 139.438, -258.016, 53.0979, 139.438, -267.087, 194.096, 139.438, 188.18, 189.937, 139.438, 176.964, 200.078, 69.4815, 75.4133, 225.168, 69.4815, 143.076, -91.535, 100.777, 154.366, -104.671, 100.777, 159.237, -17.8299, 69.4815, 233.185, -53.3365, 104.444, 235.157, 149.391, 137.992, 77.287, -74.2676, 104.444, 159.175, -74.7088, 100.777, 122.287, -89.8033, 115.036, 116.615, -96.8003, 69.4815, 188.49, -84.2205, 87.4807, 178.191, -88.1492, 69.4815, 211.82, -123.258, 118.776, 134.655, -135.838, 100.777, 144.955, 212.074, 100.777, 52.959, 196.98, 115.036, 47.2875, -83.1717, 83.7406, 225.243, -140.307, 87.4807, 88.6812, 207.769, 118.776, 187.535, 208.161, 100.777, 203.789, 235.871, 100.777, 171.938, -7.12733, 100.777, 262.047, -34.8369, 100.777, 293.897, -35.2295, 118.776, 277.644, -54.1265, 118.776, 273.84, -70.3798, 100.777, 274.233, -143.163, 87.4807, -184.289, -143.555, 69.4815, -200.543, -122.966, 83.7406, -208.178, -112.667, 87.4807, -195.598, -51.9822, 69.4815, -234.5, -51.5895, 87.4807, -218.247, -61.8887, 83.7406, -230.826, -83.1168, 69.4815, -222.955, -82.7242, 87.4807, -206.701, 44.4965, 100.777, -148.1, 60.7498, 118.776, -148.493, -132.702, 100.777, -34.1056, -148.955, 118.776, -33.713, -180.037, 87.4807, -80.1993, -193.831, 100.777, -11.4376, 126.273, 100.777, -178.424, 129.946, 100.777, -168.518, 113.693, 118.776, -168.125, -180.457, 69.4815, 24.6299, 34.8737, 100.777, -293.91, -208.124, 100.777, -203.802, -207.732, 118.776, -187.549, -235.834, 115.036, -171.952, -219.581, 118.776, -172.345, -235.834, 100.777, -171.952, 176.292, 100.777, 194.031, 172.618, 100.777, 184.125, 168.145, 143.763, 43.6133, 156.319, 143.763, 44.3594, 170.546, 143.763, 82.725, -91.535, 153.846, 154.366, -106.135, 153.846, 155.287, -110.515, 153.846, 103.182, 190.045, 143.763, 156.047, -52.9604, 143.763, 246.159, 100.244, 143.763, -139.498, 86.0173, 143.763, -177.864, -164.205, 153.846, -1.31072, -201.852, 143.763, -155.362, -190.026, 143.763, -156.108, -172.444, 143.763, -183.768, -179.589, 143.763, -193.221, 41.1711, 143.763, -245.426, 111.56, 137.992, -160.616, 2.37376, 100.777, -235.594, -46.9677, 104.444, 232.796, 189.307, 137.992, 49.0485, 165.589, 69.4815, 165.169]; + uvs = new [0.735874, 0.94417, 0.735874, 0.81338, 0.650929, 0.855232, 0.650929, 0.902317, 0.681905, 0.9995, 0.617216, 0.221915, 0.639293, 0.482386, 0.661609, 0.495391, 0.73401, 0.135211, 0.93667, 0.267183, 0.798306, 0.56021, 0.798306, 0.221915, 0.850544, 0.770836, 0.581067, 0.551467, 0.617543, 0.56021, 0.559594, 0.501601, 0.572035, 0.538279, 0.587454, 0.547605, 0.5901, 0.538279, 0.608308, 0.528812, 0.574681, 0.528954, 0.587454, 0.528954, 0.602589, 0.127777, 0.559594, 0.286233, 0.765957, 0.999501, 0.765957, 0.946748, 0.765957, 0.999501, 0.765957, 0.946748, 0.681905, 0.758049, 0.765957, 0.758049, 0.681906, 0.758049, 0.765957, 0.758049, 0.681905, 0.758049, 0.688624, 0.000499666, 0.710474, 0.000499666, 0.708545, 0.000499666, 0.710474, 0.000499666, 0.708545, 0.000499666, 0.714078, 0.000499666, 0.798306, 0.221915, 0.617216, 0.221915, 0.714078, 0.221915, 0.714078, 0.0673115, 0.602589, 0.00788623, 0.602589, 0.00788629, 0.902783, 0.0673116, 0.710474, 0.0673115, 0.710474, 0.0673115, 0.708545, 0.0673115, 0.708545, 0.0673115, 0.714078, 0.0673115, 0.541578, 0.263454, 0.688624, 0.00788629, 0.714078, 0.188376, 0.714078, 0.113824, 0.714078, 0.0750399, 0.9995, 0.770836, 0.951141, 0.770836, 0.951142, 0.229273, 0.559594, 0.501601, 0.559594, 0.286233, 0.541578, 0.52438, 0.617216, 0.496229, 0.902783, 0.770836, 0.902783, 0.946748, 0.681905, 0.9995, 0.882883, 0.135211, 0.582562, 0.0678316, 0.855606, 0.0673116, 0.688624, 0.000499666, 0.714078, 0.000499666, 0.705307, 0.017817, 0.641538, 0.108062, 0.675129, 0.108062, 0.714078, 0.188376, 0.951142, 0.229273, 0.798306, 0.770836, 0.70783, 0.0239562, 0.660896, 0.55838, 0.640105, 0.574054, 0.640082, 0.571431, 0.658394, 0.55482, 0.640037, 0.56633, 0.650334, 0.543351, 0.639891, 0.5499, 0.639699, 0.52822, 0.617789, 0.561048, 0.621482, 0.555516, 0.629336, 0.543748, 0.621004, 0.50162, 0.639362, 0.490109, 0.629064, 0.513088, 0.639507, 0.50654, 0.639293, 0.482386, 0.657917, 0.500923, 0.650062, 0.512692, 0.6658, 0.527727, 0.654547, 0.527939, 0.610105, 0.528778, 0.613598, 0.528713, 0.624851, 0.5285, 0.850545, 0.221915, 0.617216, 0.496229, 0.67109, 0.527627, 0.662183, 0.56021, 0.67109, 0.527627, 0.661609, 0.495391, 0.541578, 0.263454, 0.541578, 0.52438, 0.882883, 0.154016, 0.917254, 0.267183, 0.691972, 0.0239562, 0.902783, 0.221915, 0.619043, 0.55917, 0.000499725, 0.229273, 0.0972175, 0.229273, 0.0375185, 0.105206, 0.000499755, 0.0533604, 0.0601988, 0.105206, 0.0601988, 0.177427, 0.962482, 0.105207, 0.902783, 0.0673116, 0.962482, 0.177427, 0.939801, 0.177427, 0.9995, 0.770836, 0.962482, 0.822682, 0.999501, 0.946748, 0.902783, 0.946748, 0.962482, 0.894903, 0.0972174, 0.770836, 0.0375183, 0.894902, 0.000499547, 0.770836, 0.0601986, 0.894902, 0.440406, 0.501601, 0.440406, 0.286233, 0.234043, 0.9995, 0.234043, 0.946748, 0.234043, 0.9995, 0.318094, 0.9995, 0.234043, 0.758048, 0.318094, 0.758049, 0.318094, 0.758049, 0.0972174, 0.229273, 0.311376, 0.000499547, 0.289526, 0.000499547, 0.291455, 0.000499547, 0.289526, 0.000499547, 0.291455, 0.000499547, 0.285922, 0.000499547, 0.458422, 0.52438, 0.382784, 0.221915, 0.285922, 0.0673114, 0.397411, 0.00788611, 0.397411, 0.00788617, 0.382784, 0.496229, 0.0972174, 0.0673113, 0.289526, 0.0673114, 0.289526, 0.0673114, 0.291455, 0.0673114, 0.291455, 0.0673114, 0.285922, 0.0673114, 0.458422, 0.263454, 0.201694, 0.56021, 0.311376, 0.00788617, 0.311376, 0.000499547, 0.311376, 0.00788617, 0.397411, 0.00788611, 0.285922, 0.0277474, 0.285922, 0.00788617, 0.349071, 0.855232, 0.349071, 0.902317, 0.318094, 0.758049, 0.0488584, 0.254563, 0.000499666, 0.229273, 0.0488583, 0.74555, 0.0972172, 0.770836, 0.000499547, 0.770836, 0.149455, 0.715633, 0.201693, 0.770836, 0.149455, 0.277065, 0.0972173, 0.221915, 0.201694, 0.56021, 0.382784, 0.496229, 0.201694, 0.221915, 0.382784, 0.221915, 0.397411, 0.188376, 0.285922, 0.221915, 0.458422, 0.52438, 0.426168, 0.549258, 0.419781, 0.55312, 0.382457, 0.56021, 0.428813, 0.539932, 0.413394, 0.549258, 0.410749, 0.539932, 0.391692, 0.528812, 0.426168, 0.530607, 0.419781, 0.526744, 0.413394, 0.530607, 0.234043, 0.770836, 0.318094, 0.9995, 0.234043, 0.758049, 0.288012, 0.813379, 0.0972174, 0.0673113, 0.417438, 0.0678316, 0.397411, 0.127777, 0.26599, 0.135211, 0.308028, 0.0239561, 0.285922, 0.000499547, 0.294693, 0.0178168, 0.285922, 0.188376, 0.358462, 0.108062, 0.397411, 0.188376, 0.324871, 0.108062, 0.285922, 0.188376, 0.201694, 0.221915, 0.339104, 0.55838, 0.359895, 0.574054, 0.337817, 0.56021, 0.359918, 0.571431, 0.341606, 0.554819, 0.359963, 0.56633, 0.349666, 0.543351, 0.360109, 0.549899, 0.360301, 0.52822, 0.38221, 0.561048, 0.381071, 0.559341, 0.380957, 0.55917, 0.378518, 0.555516, 0.370664, 0.543748, 0.378996, 0.50162, 0.360638, 0.490109, 0.370936, 0.513088, 0.360493, 0.50654, 0.342083, 0.500923, 0.349937, 0.512692, 0.32891, 0.527627, 0.3342, 0.527727, 0.345453, 0.527939, 0.389895, 0.528778, 0.380932, 0.559254, 0.329522, 0.529864, 0.386402, 0.528712, 0.375149, 0.5285, 0.440406, 0.501601, 0.360707, 0.482386, 0.360707, 0.482386, 0.32891, 0.527627, 0.337817, 0.56021, 0.338391, 0.495391, 0.338391, 0.495391, 0.440406, 0.286233, 0.458422, 0.263454, 0.264125, 0.944169, 0.29217, 0.0239561, 0.380957, 0.55917, 0.381071, 0.559341, 0.302605, 0.0178168, 0.258565, 0.0673114, 0.276133, 0.0673114, 0.267349, 0.0673114, 0.276133, 0.0673114, 0.258565, 0.0673114, 0.258565, 0.0888575, 0.276133, 0.0888575, 0.267349, 0.0932596, 0.206374, 0.0673114, 0.206374, 0.0673114, 0.215158, 0.0673114, 0.223942, 0.0888575, 0.223942, 0.0673114, 0.206374, 0.0888575, 0.223942, 0.0673114, 0.215158, 0.0932596, 0.115791, 0.0673113, 0.115791, 0.0932595, 0.124574, 0.0673113, 0.124574, 0.0673113, 0.107007, 0.0888574, 0.107007, 0.0673113, 0.107007, 0.0673113, 0.124574, 0.0888574, 0.167982, 0.0673113, 0.176765, 0.0888574, 0.167982, 0.0932595, 0.176765, 0.0673113, 0.159198, 0.0888574, 0.159198, 0.0673113, 0.176765, 0.0673113, 0.159198, 0.0673113, 0.179672, 0.946748, 0.179672, 0.946748, 0.188456, 0.946748, 0.179672, 0.925202, 0.188456, 0.9208, 0.197239, 0.925202, 0.197239, 0.946748, 0.197239, 0.946748, 0.133989, 0.946748, 0.151556, 0.946748, 0.142772, 0.946748, 0.133989, 0.925202, 0.151556, 0.925202, 0.151556, 0.946748, 0.133989, 0.946748, 0.142772, 0.9208, 0.951142, 0.698525, 0.951142, 0.698525, 0.951142, 0.724176, 0.951142, 0.711351, 0.936385, 0.698525, 0.936385, 0.724176, 0.951142, 0.724176, 0.93337, 0.711351, 0.951141, 0.619907, 0.93337, 0.619907, 0.951141, 0.607081, 0.951141, 0.607081, 0.936385, 0.632732, 0.951141, 0.632732, 0.951141, 0.632732, 0.936385, 0.607081, 0.951141, 0.518689, 0.951141, 0.54434, 0.951141, 0.531514, 0.936385, 0.518689, 0.951141, 0.518689, 0.936385, 0.54434, 0.951141, 0.54434, 0.93337, 0.531514, 0.951141, 0.426809, 0.951141, 0.45246, 0.951141, 0.439634, 0.93337, 0.439634, 0.936385, 0.45246, 0.951141, 0.45246, 0.951141, 0.426809, 0.936385, 0.426809, 0.951142, 0.362106, 0.951142, 0.362106, 0.951142, 0.349281, 0.93337, 0.349281, 0.951142, 0.336455, 0.936385, 0.362106, 0.951142, 0.336455, 0.936385, 0.336455, 0.951142, 0.249371, 0.951142, 0.262196, 0.936385, 0.249371, 0.951142, 0.275022, 0.951142, 0.275022, 0.936385, 0.275022, 0.951142, 0.249371, 0.93337, 0.262196, 0.741435, 0.0673115, 0.723867, 0.0673115, 0.732651, 0.0673115, 0.732651, 0.0932598, 0.723867, 0.0673115, 0.741435, 0.0673115, 0.741435, 0.0888576, 0.723867, 0.0888576, 0.776058, 0.0673115, 0.784842, 0.0673115, 0.793626, 0.0673115, 0.793626, 0.0888575, 0.776058, 0.0673115, 0.793626, 0.0673115, 0.776058, 0.0888575, 0.784842, 0.0932597, 0.892993, 0.0673116, 0.88421, 0.0673116, 0.875426, 0.0888577, 0.875426, 0.0673116, 0.875426, 0.0673116, 0.892993, 0.0673116, 0.892993, 0.0888577, 0.88421, 0.0932598, 0.832018, 0.0673116, 0.823235, 0.0888577, 0.823235, 0.0673116, 0.823235, 0.0673116, 0.840802, 0.0888577, 0.840802, 0.0673116, 0.840802, 0.0673116, 0.832018, 0.0932598, 0.802761, 0.946748, 0.811544, 0.946748, 0.820328, 0.925202, 0.820328, 0.946748, 0.802761, 0.925202, 0.820328, 0.946748, 0.802761, 0.946748, 0.811544, 0.9208, 0.866011, 0.946748, 0.857228, 0.946748, 0.857228, 0.9208, 0.866011, 0.946748, 0.848444, 0.946748, 0.848444, 0.946748, 0.848444, 0.925202, 0.866011, 0.925202, 0.286085, 0.758048, 0.286085, 0.79177, 0.266052, 0.79177, 0.276069, 0.758048, 0.276069, 0.789532, 0.276069, 0.800614, 0.286085, 0.758048, 0.286085, 0.79177, 0.266052, 0.79177, 0.286085, 0.758048, 0.266052, 0.758048, 0.266052, 0.758048, 0.331858, 0.188376, 0.331858, 0.154655, 0.341875, 0.156893, 0.341875, 0.14581, 0.341875, 0.14581, 0.331858, 0.154655, 0.351891, 0.188376, 0.341875, 0.188376, 0.351891, 0.188376, 0.351891, 0.188376, 0.248762, 0.0673113, 0.248762, 0.101033, 0.22873, 0.101033, 0.22873, 0.0673113, 0.238746, 0.0673113, 0.248762, 0.0673113, 0.248762, 0.101033, 0.22873, 0.101033, 0.248762, 0.0673113, 0.201586, 0.101033, 0.181553, 0.101033, 0.181553, 0.0673113, 0.19157, 0.0673113, 0.19157, 0.109877, 0.201586, 0.0673113, 0.201586, 0.101033, 0.181553, 0.101033, 0.201586, 0.0673113, 0.201586, 0.0673113, 0.351891, 0.00788611, 0.351891, 0.00788611, 0.351891, 0.0416074, 0.331858, 0.0416074, 0.331858, 0.00788611, 0.351891, 0.00788611, 0.351891, 0.0416074, 0.331858, 0.0416074, 0.341875, 0.00788611, 0.266052, 0.965779, 0.286085, 0.9995, 0.276069, 0.9995, 0.276069, 0.968017, 0.276069, 0.956934, 0.276069, 0.956934, 0.266052, 0.965779, 0.286085, 0.9995, 0.266052, 0.9995, 0.286085, 0.9995, 0.15441, 0.101033, 0.134377, 0.101033, 0.144394, 0.0673113, 0.144394, 0.109877, 0.15441, 0.0673113, 0.15441, 0.101033, 0.134377, 0.0673113, 0.134377, 0.101033, 0.15441, 0.0673113, 0.134377, 0.0673113, 0.444858, 0.00788605, 0.444858, 0.0416073, 0.424826, 0.0416073, 0.424826, 0.00788605, 0.424826, 0.00788605, 0.434842, 0.00788605, 0.434842, 0.0393692, 0.444858, 0.00788605, 0.444858, 0.0416073, 0.424826, 0.0416073, 0.444858, 0.00788605, 0.000499517, 0.873417, 0.0235944, 0.873417, 0.0235945, 0.844167, 0.000499547, 0.844167, 0.0220616, 0.858792, 0.0296521, 0.858792, 0.0235944, 0.873417, 0.000499517, 0.858792, 0.000499517, 0.873417, 0.000499547, 0.844167, 0.0588866, 0.946748, 0.0388539, 0.913026, 0.0488703, 0.946748, 0.0488703, 0.915264, 0.0488703, 0.904182, 0.0488703, 0.904182, 0.0588866, 0.946748, 0.0588866, 0.913026, 0.0388539, 0.913026, 0.0588866, 0.946748, 0.0388539, 0.946748, 0.0388537, 0.229273, 0.0388537, 0.195552, 0.0588864, 0.229273, 0.0488701, 0.19779, 0.0488701, 0.186707, 0.0488701, 0.186707, 0.0388537, 0.195552, 0.0588864, 0.229273, 0.0588864, 0.195552, 0.0488701, 0.229273, 0.0588864, 0.229273, 0.000499666, 0.126691, 0.0235946, 0.155942, 0.000499666, 0.141317, 0.0220618, 0.141317, 0.0296522, 0.141317, 0.0235946, 0.126691, 0.0235946, 0.155942, 0.000499666, 0.126691, 0.000499636, 0.155942, 0.000499666, 0.155942, 0.0588867, 0.0870818, 0.038854, 0.0870818, 0.0488704, 0.0533605, 0.0488704, 0.0848438, 0.0588867, 0.0870818, 0.038854, 0.0870818, 0.0588867, 0.0533605, 0.0588867, 0.0533605, 0.0388539, 0.0533605, 0.038854, 0.0533605, 0.928046, 0.291155, 0.928046, 0.320405, 0.929579, 0.30578, 0.951141, 0.30578, 0.951141, 0.291155, 0.951141, 0.291155, 0.951141, 0.320406, 0.928047, 0.381198, 0.928047, 0.410448, 0.951141, 0.410448, 0.951141, 0.410448, 0.929579, 0.395823, 0.951141, 0.395823, 0.951141, 0.381198, 0.928047, 0.652121, 0.928047, 0.681371, 0.951142, 0.681371, 0.951142, 0.681371, 0.951142, 0.666746, 0.92958, 0.666746, 0.921989, 0.666746, 0.951142, 0.652121, 0.951142, 0.652121, 0.928047, 0.561534, 0.928047, 0.590784, 0.951142, 0.590784, 0.929579, 0.576159, 0.951142, 0.576159, 0.951142, 0.561534, 0.951142, 0.469606, 0.928047, 0.469606, 0.928047, 0.498856, 0.951142, 0.484231, 0.929579, 0.484231, 0.951142, 0.469606, 0.951142, 0.498856, 0.713915, 0.758049, 0.713915, 0.758049, 0.713915, 0.79177, 0.733947, 0.79177, 0.733947, 0.758049, 0.723931, 0.758049, 0.723931, 0.789532, 0.713915, 0.79177, 0.733947, 0.79177, 0.733947, 0.758049, 0.668142, 0.188376, 0.668142, 0.154655, 0.648109, 0.154655, 0.658125, 0.188376, 0.668142, 0.188376, 0.668142, 0.154655, 0.648109, 0.154655, 0.668142, 0.188376, 0.648109, 0.188376, 0.751238, 0.0673113, 0.751238, 0.101033, 0.771271, 0.101033, 0.761254, 0.0673114, 0.751238, 0.101033, 0.771271, 0.0673114, 0.771271, 0.101033, 0.751238, 0.0673113, 0.771271, 0.0673114, 0.771271, 0.0673114, 0.798414, 0.0673115, 0.798414, 0.101033, 0.818447, 0.101033, 0.80843, 0.0673115, 0.80843, 0.109878, 0.798414, 0.101033, 0.818447, 0.0673115, 0.818447, 0.101033, 0.798414, 0.0673115, 0.818447, 0.0673115, 0.818447, 0.0673115, 0.648109, 0.00788611, 0.648109, 0.0416074, 0.668142, 0.0416074, 0.668142, 0.00788611, 0.658125, 0.0504522, 0.648109, 0.0416074, 0.668142, 0.00788611, 0.668142, 0.0416074, 0.658125, 0.00788611, 0.668142, 0.00788611, 0.733948, 0.965779, 0.713915, 0.965779, 0.713915, 0.9995, 0.723931, 0.968017, 0.723931, 0.956934, 0.713915, 0.965779, 0.723931, 0.9995, 0.733947, 0.9995, 0.733947, 0.9995, 0.84559, 0.101033, 0.865623, 0.101033, 0.865623, 0.0673118, 0.865623, 0.0673118, 0.855607, 0.0673118, 0.855607, 0.109878, 0.84559, 0.101033, 0.865623, 0.0673118, 0.865623, 0.101033, 0.84559, 0.0673116, 0.84559, 0.0673118, 0.555142, 0.00788629, 0.555142, 0.0416076, 0.575174, 0.0416076, 0.565158, 0.0504524, 0.555142, 0.0416076, 0.575174, 0.0416076, 0.565158, 0.00788629, 0.555142, 0.00788629, 0.575174, 0.00788629, 0.575174, 0.00788629, 0.9995, 0.873417, 0.976405, 0.873417, 0.976405, 0.844167, 0.9995, 0.858792, 0.977938, 0.858792, 0.970348, 0.858792, 0.976405, 0.873417, 0.9995, 0.844167, 0.976405, 0.844167, 0.9995, 0.844167, 0.9995, 0.844167, 0.941114, 0.946749, 0.941114, 0.913027, 0.961146, 0.946749, 0.95113, 0.915265, 0.95113, 0.904182, 0.95113, 0.904182, 0.941114, 0.913027, 0.961146, 0.946749, 0.961146, 0.913027, 0.95113, 0.946749, 0.941114, 0.946749, 0.961146, 0.946749, 0.976405, 0.126692, 0.976405, 0.155942, 0.9995, 0.155942, 0.9995, 0.141317, 0.977938, 0.141317, 0.9995, 0.126692, 0.976405, 0.126692, 0.976405, 0.155942, 0.9995, 0.126692, 0.9995, 0.126692, 0.941114, 0.087082, 0.961146, 0.087082, 0.95113, 0.0848439, 0.941114, 0.087082, 0.961146, 0.087082, 0.95113, 0.0533608, 0.941114, 0.0533608, 0.941114, 0.0533608, 0.961146, 0.0533608, 0.0388538, 0.804557, 0.0588866, 0.804557, 0.0488702, 0.802319, 0.0488702, 0.813402, 0.0388538, 0.804557, 0.0588866, 0.804557, 0.0488702, 0.770835, 0.0388538, 0.770835, 0.0588866, 0.770835, 0.0588866, 0.770835, 0.31845, 0.896356, 0.31845, 0.861171, 0.31845, 0.896356, 0.31845, 0.861171, 0.311269, 0.896356, 0.311269, 0.896356, 0.311269, 0.861171, 0.311269, 0.861171, 0.240868, 0.896356, 0.240868, 0.861171, 0.240868, 0.896356, 0.240868, 0.861171, 0.233687, 0.896356, 0.233687, 0.896356, 0.233687, 0.861171, 0.233687, 0.861171, 0.294349, 0.116151, 0.294349, 0.0727127, 0.294349, 0.116151, 0.294349, 0.0727127, 0.285483, 0.116151, 0.285483, 0.116151, 0.285483, 0.0727127, 0.285483, 0.0727127, 0.388985, 0.116151, 0.388985, 0.0727127, 0.388985, 0.116151, 0.388985, 0.0727127, 0.397851, 0.116151, 0.397851, 0.116151, 0.397851, 0.0727127, 0.397851, 0.0727127, 0.0976679, 0.841211, 0.0976679, 0.876396, 0.0976679, 0.841211, 0.0976679, 0.876396, 0.0904867, 0.841211, 0.0904867, 0.841211, 0.0904867, 0.876396, 0.0904867, 0.876396, 0.000499517, 0.946748, 0.0972173, 0.946748, 0.000499547, 0.946748, 0.0976679, 0.158898, 0.097668, 0.123713, 0.0976679, 0.158898, 0.097668, 0.123713, 0.0904867, 0.158898, 0.0904867, 0.158898, 0.0904867, 0.123713, 0.0904867, 0.123713, 0.000499755, 0.0533603, 0.0972175, 0.0533605, 0.0972175, 0.0533605, 0.336271, 0.729478, 0.336271, 0.649042, 0.286706, 0.729478, 0.286706, 0.649042, 0.336271, 0.729478, 0.286706, 0.729478, 0.286706, 0.649042, 0.336271, 0.649042, 0.201694, 0.56021, 0.337817, 0.56021, 0.68155, 0.896356, 0.68155, 0.861171, 0.68155, 0.896356, 0.68155, 0.861171, 0.688731, 0.896356, 0.688731, 0.896356, 0.688731, 0.861171, 0.688731, 0.861171, 0.759131, 0.896356, 0.759131, 0.861171, 0.759131, 0.896356, 0.759131, 0.861171, 0.766312, 0.896356, 0.766312, 0.896356, 0.766312, 0.861171, 0.766312, 0.861171, 0.705652, 0.116151, 0.705652, 0.0727129, 0.705652, 0.116151, 0.705652, 0.0727129, 0.714517, 0.116151, 0.714517, 0.116151, 0.714517, 0.0727129, 0.714517, 0.0727129, 0.611015, 0.116151, 0.611015, 0.0727127, 0.611015, 0.116151, 0.611015, 0.0727127, 0.60215, 0.116151, 0.60215, 0.116151, 0.60215, 0.0727127, 0.60215, 0.0727127, 0.963194, 0.770316, 0.939097, 0.770316, 0.963194, 0.770316, 0.939097, 0.770316, 0.963194, 0.780802, 0.963194, 0.780802, 0.939097, 0.780802, 0.939097, 0.780802, 0.902332, 0.841211, 0.902332, 0.876396, 0.902332, 0.841211, 0.902332, 0.876396, 0.909513, 0.841211, 0.909513, 0.841211, 0.909513, 0.876396, 0.909513, 0.876396, 0.9995, 0.946748, 0.951141, 0.770836, 0.902783, 0.770836, 0.902427, 0.158898, 0.902427, 0.123713, 0.902427, 0.158898, 0.902427, 0.123713, 0.909608, 0.158898, 0.909608, 0.158898, 0.909608, 0.123713, 0.909608, 0.123713, 0.963171, 0.229793, 0.939074, 0.229793, 0.963171, 0.229793, 0.939074, 0.229793, 0.963171, 0.219307, 0.963171, 0.219307, 0.939074, 0.219307, 0.939074, 0.219307, 0.9995, 0.229273, 0.9995, 0.0533605, 0.902783, 0.229273, 0.9995, 0.229273, 0.902783, 0.229273, 0.902783, 0.0533606, 0.902783, 0.0533606, 0.999501, 0.0533606, 0.665415, 0.730158, 0.714009, 0.730158, 0.714009, 0.650485, 0.665415, 0.650485, 0.665415, 0.730158, 0.665415, 0.650485, 0.714009, 0.730158, 0.714009, 0.650485, 0.798306, 0.56021, 0.662183, 0.56021, 0.602589, 0.188376, 0.602589, 0.188376, 0.602589, 0.00788623, 0.497433, 0.0628393, 0.500051, 0.0612561, 0.498942, 0.0650362, 0.500051, 0.0666544, 0.498483, 0.0666552, 0.500051, 0.0618957, 0.49854, 0.0644808, 0.497728, 0.0633004, 0.500051, 0.063567, 0.500051, 0.0643656, 0.500051, 0.0623069, 0.499047, 0.0652106, 0.497932, 0.0635881, 0.500051, 0.0646034, 0.497653, 0.0631685, 0.500051, 0.0617182, 0.500051, 0.0720665, 0.497433, 0.0704834, 0.498942, 0.0682742, 0.500051, 0.0689448, 0.50116, 0.0682742, 0.498631, 0.0666764, 0.497932, 0.0697745, 0.497055, 0.0666813, 0.499047, 0.0681423, 0.497914, 0.0666871, 0.49854, 0.0688934, 0.502449, 0.0701711, 0.500051, 0.0716214, 0.496349, 0.0666614, 0.502668, 0.0704834, 0.497728, 0.0700824, 0.496766, 0.0666913, 0.500051, 0.0714869, 0.500051, 0.0698073, 0.497653, 0.0701711, 0.496659, 0.0666698, 0.500051, 0.0710557, 0.500051, 0.0687495, 0.501055, 0.0681423, 0.502188, 0.0666871, 0.502373, 0.0633004, 0.503335, 0.0666913, 0.501562, 0.0644808, 0.502169, 0.0697745, 0.502668, 0.0628393, 0.501562, 0.0688934, 0.502373, 0.0700824, 0.501619, 0.0666552, 0.501055, 0.0652106, 0.503753, 0.0666614, 0.502169, 0.0635881, 0.503442, 0.0666698, 0.502449, 0.0631685, 0.501471, 0.0666764, 0.503047, 0.0666813, 0.50116, 0.0650362, 0.518815, 0.0782551, 0.507823, 0.0943047, 0.494257, 0.0873009, 0.505844, 0.0873009, 0.507823, 0.0395079, 0.518815, 0.0555575, 0.478271, 0.036145, 0.478271, 0.099657, 0.478271, 0.0997961, 0.478271, 0.036006, 0.49171, 0.0375343, 0.481286, 0.0555575, 0.492278, 0.0395079, 0.493276, 0.0625994, 0.493276, 0.0707944, 0.514038, 0.0753378, 0.492278, 0.0943047, 0.495331, 0.0500754, 0.504771, 0.0500754, 0.494257, 0.046456, 0.486064, 0.0584192, 0.506826, 0.0625994, 0.502857, 0.0568045, 0.497244, 0.0568045, 0.486064, 0.0753378, 0.497423, 0.057593, 0.514038, 0.0584192, 0.520188, 0.0791163, 0.49479, 0.048191, 0.487351, 0.0590535, 0.481286, 0.0782551, 0.505844, 0.046456, 0.505311, 0.048191, 0.500051, 0.066689, 0.521864, 0.099657, 0.521864, 0.036145, 0.521864, 0.0997961, 0.521864, 0.036006, 0.511446, 0.0598217, 0.512751, 0.0590535, 0.502679, 0.0761209, 0.488656, 0.0598217, 0.506826, 0.0707944, 0.488656, 0.0736052, 0.505311, 0.0852781, 0.512751, 0.0744155, 0.487351, 0.0744155, 0.495141, 0.0494103, 0.488197, 0.0595488, 0.511904, 0.0595488, 0.504961, 0.0494103, 0.495331, 0.0833515, 0.511446, 0.0736052, 0.504771, 0.0833515, 0.49479, 0.0852781, 0.502857, 0.0765892, 0.497244, 0.0765892, 0.508392, 0.0965525, 0.520188, 0.0793287, 0.491709, 0.0965525, 0.479913, 0.0793287, 0.479913, 0.0549705, 0.508392, 0.0377467, 0.520188, 0.0549705, 0.49171, 0.0377467, 0.511904, 0.0738866, 0.495141, 0.084025, 0.488197, 0.0738866, 0.504961, 0.084025, 0.497423, 0.0761209, 0.502679, 0.057593, 0.506395, 0.0630197, 0.493706, 0.0706941, 0.493706, 0.0630197, 0.506395, 0.0706941, 0.495141, 0.049536, 0.478271, 0.0403529, 0.478271, 0.00788605, 0.500068, 0.00788605, 0.521864, 0.0403529, 0.521864, 0.00788605, 0.500068, 0.0361248, 0.521864, 0.00788605, 0.478271, 0.00788605, 0.423869, 0.545901, 0.423869, 0.533964, 0.425562, 0.539932, 0.419781, 0.548373, 0.415694, 0.545901, 0.419781, 0.531492, 0.415694, 0.533964, 0.414001, 0.539932, 0.585155, 0.544247, 0.585155, 0.532311, 0.586848, 0.538279, 0.581067, 0.546719, 0.57698, 0.544247, 0.581067, 0.529839, 0.57698, 0.532311, 0.575287, 0.538279, 0.581067, 0.525091, 0.574681, 0.547605, 0.479913, 0.0549705, 0.479913, 0.0793288, 0.479913, 0.0547581, 0.479913, 0.0595873, 0.479913, 0.0595252, 0.479913, 0.0729932, 0.479913, 0.0791163, 0.479913, 0.0729311, 0.488197, 0.0596744, 0.488197, 0.0739056, 0.488197, 0.0740124, 0.488197, 0.0595676, 0.508392, 0.0377468, 0.517899, 0.0515198, 0.517899, 0.0514576, 0.511407, 0.0420403, 0.508392, 0.0375343, 0.511407, 0.0419782, 0.511904, 0.0596744, 0.504961, 0.0494293, 0.504961, 0.0495361, 0.489421, 0.040979, 0.489421, 0.0409169, 0.482929, 0.0504584, 0.482929, 0.0503963, 0.520188, 0.0549707, 0.520188, 0.0744938, 0.520188, 0.0744315, 0.520188, 0.0610878, 0.520188, 0.0547582, 0.520188, 0.0610256, 0.511904, 0.0595677, 0.482202, 0.0825613, 0.482202, 0.0824991, 0.488694, 0.0920407, 0.488694, 0.0919786, 0.491709, 0.0965526, 0.508392, 0.0965526, 0.491709, 0.0963401, 0.494946, 0.0964434, 0.494946, 0.0963812, 0.504128, 0.0964434, 0.508392, 0.0963401, 0.504128, 0.0963812, 0.495141, 0.0841508, 0.50496, 0.0840439, 0.50496, 0.0841507, 0.495141, 0.084044, 0.49171, 0.0377467, 0.505155, 0.0376375, 0.505155, 0.0375754, 0.495974, 0.0376375, 0.495974, 0.0375754, 0.495141, 0.0494292, 0.520188, 0.0793288, 0.51068, 0.0931017, 0.51068, 0.0930395, 0.517173, 0.0836223, 0.517173, 0.08356, 0.511904, 0.0739056, 0.511904, 0.0740124, 0.464857, 0.474769, 0.464857, 0.474769, 0.464857, 0.313064, 0.464857, 0.313064, 0.535143, 0.474769, 0.535143, 0.474769, 0.5, 0.423607, 0.535143, 0.313064, 0.535143, 0.313064, 0.5, 0.364227, 0.311625, 0.894471, 0.311625, 0.878774, 0.311625, 0.863056, 0.311625, 0.863056, 0.318094, 0.894471, 0.318094, 0.894471, 0.318094, 0.863056, 0.240513, 0.863055, 0.234043, 0.89447, 0.234043, 0.863055, 0.234043, 0.89447, 0.234043, 0.863055, 0.240513, 0.89447, 0.240513, 0.89447, 0.293909, 0.113824, 0.285922, 0.0944454, 0.293909, 0.0750397, 0.285922, 0.0750398, 0.293909, 0.113824, 0.397411, 0.113824, 0.389424, 0.113824, 0.397411, 0.0750397, 0.389424, 0.0750397, 0.397411, 0.0750397, 0.397411, 0.113824, 0.389424, 0.0750397, 0.0908425, 0.843095, 0.0908424, 0.874511, 0.0908425, 0.843095, 0.0908424, 0.874511, 0.097312, 0.874511, 0.097312, 0.874511, 0.097312, 0.843095, 0.0908425, 0.157013, 0.0908425, 0.125598, 0.0908425, 0.157013, 0.0908425, 0.125598, 0.0973121, 0.125598, 0.0973121, 0.157013, 0.0973121, 0.157013, 0.681905, 0.863056, 0.688375, 0.863056, 0.688375, 0.894471, 0.688375, 0.894471, 0.688375, 0.863056, 0.681905, 0.863056, 0.681905, 0.894471, 0.765957, 0.894471, 0.765957, 0.863056, 0.759487, 0.863056, 0.765957, 0.863056, 0.765957, 0.894471, 0.759487, 0.863056, 0.759487, 0.894471, 0.706091, 0.113824, 0.706091, 0.0750399, 0.706091, 0.113824, 0.714078, 0.0750398, 0.714078, 0.113824, 0.706091, 0.0750398, 0.610576, 0.113824, 0.602589, 0.113824, 0.602589, 0.0750399, 0.602589, 0.113824, 0.602589, 0.0750399, 0.610576, 0.0750399, 0.610576, 0.113824, 0.909252, 0.157013, 0.909252, 0.125598, 0.909252, 0.157013, 0.902783, 0.125598, 0.902783, 0.125598, 0.902783, 0.157013, 0.96188, 0.219827, 0.96188, 0.229273, 0.940365, 0.219827, 0.940365, 0.229273, 0.940365, 0.219827, 0.96188, 0.229273, 0.961903, 0.780282, 0.940388, 0.780282, 0.961903, 0.770836, 0.940388, 0.780282, 0.961903, 0.780282, 0.940388, 0.770836, 0.940388, 0.770836, 0.961903, 0.770836, 0.902688, 0.874511, 0.909157, 0.843096, 0.909157, 0.874511, 0.909157, 0.874511, 0.902688, 0.874511, 0.902688, 0.843096, 0.902688, 0.843096, 0.788649, 0.858792, 0.880127, 0.858792, 0.119873, 0.858792, 0.211351, 0.858792, 0.93667, 0.732927, 0.765957, 0.770836, 0.798306, 0.56021, 0.711988, 0.81338, 0.73401, 0.154016, 0.688624, 0.00788629, 0.714078, 0.0277475, 0.697395, 0.017817, 0.0375185, 0.177427, 0.939801, 0.105207, 0.939801, 0.822682, 0.939801, 0.894903, 0.0375183, 0.822681, 0.0601986, 0.822681, 0.234043, 0.946748, 0.0972172, 0.946748, 0.285922, 0.113824, 0.285922, 0.0750398, 0.0972174, 0.229273, 0.117117, 0.135211, 0.264125, 0.813379, 0.26599, 0.154015, 0.331858, 0.188376, 0.351891, 0.154655, 0.22873, 0.0673112, 0.238746, 0.109877, 0.181553, 0.0673112, 0.341875, 0.0504522, 0.331858, 0.00788611, 0.266052, 0.9995, 0.286085, 0.965779, 0.15441, 0.0673113, 0.434842, 0.0504522, 0.0296521, 0.858792, 0.000499547, 0.844167, 0.0388539, 0.946748, 0.0388537, 0.229273, 0.000499666, 0.126691, 0.0296522, 0.141317, 0.0488704, 0.0959266, 0.0588867, 0.0533605, 0.921989, 0.30578, 0.951141, 0.320406, 0.951141, 0.381198, 0.921989, 0.395823, 0.951142, 0.590784, 0.921989, 0.576159, 0.951142, 0.561534, 0.951142, 0.498856, 0.921989, 0.484231, 0.733947, 0.758049, 0.723931, 0.800615, 0.648109, 0.188376, 0.658125, 0.14581, 0.761254, 0.109878, 0.648109, 0.00788611, 0.733947, 0.9995, 0.713915, 0.9995, 0.723931, 0.956934, 0.575174, 0.00788629, 0.9995, 0.873417, 0.9995, 0.155942, 0.970348, 0.141317, 0.961146, 0.0533608, 0.95113, 0.0959269, 0.961146, 0.0533608, 0.0388538, 0.770835, 0.0588866, 0.770835, 0.311625, 0.894471, 0.318094, 0.863056, 0.240513, 0.863055, 0.285922, 0.113824, 0.293909, 0.0750398, 0.389424, 0.113824, 0.097312, 0.843095, 0.0973121, 0.125598, 0.681905, 0.894471, 0.759487, 0.894471, 0.610576, 0.0750399, 0.909252, 0.125598, 0.902783, 0.157013, 0.940365, 0.229273, 0.96188, 0.219827, 0.909157, 0.843096, 0.711988, 0.94417, 0.917254, 0.732927, 0.117117, 0.154015, 0.288012, 0.944169, 0.0972172, 0.770836]; + indices = new [0, 1185, 1266, 1185, 0, 1, 170, 2, 169, 2, 170, 3, 2, 171, 169, 171, 2, 28, 4, 2, 3, 2, 4, 28, 170, 4, 3, 4, 170, 138, 62, 39, 5, 6, 39, 62, 7, 39, 6, 103, 39, 7, 103, 849, 39, 103, 850, 849, 1186, 66, 8, 66, 1186, 109, 1182, 110, 1267, 110, 1182, 9, 76, 1184, 10, 1184, 101, 11, 76, 101, 1184, 76, 12, 101, 12, 112, 101, 12, 835, 112, 12, 63, 835, 40, 53, 852, 53, 40, 41, 135, 4, 138, 4, 135, 24, 25, 26, 24, 26, 25, 27, 4, 32, 28, 32, 4, 65, 28, 29, 30, 28, 31, 29, 28, 32, 31, 171, 30, 140, 30, 171, 28, 35, 34, 33, 34, 35, 36, 64, 25, 814, 25, 64, 27, 11, 5, 39, 11, 40, 5, 11, 41, 40, 47, 45, 46, 48, 45, 47, 49, 45, 48, 50, 45, 49, 42, 45, 50, 42, 121, 45, 42, 68, 121, 44, 152, 43, 152, 44, 153, 107, 161, 51, 161, 107, 251, 69, 52, 1187, 52, 69, 33, 1184, 849, 10, 1184, 39, 849, 1184, 11, 39, 46, 36, 47, 36, 46, 34, 48, 36, 35, 36, 48, 47, 38, 49, 37, 49, 38, 50, 37, 48, 35, 48, 37, 49, 70, 42, 38, 42, 70, 1188, 43, 52, 44, 43, 1187, 52, 43, 853, 1187, 59, 23, 60, 23, 59, 15, 187, 61, 149, 61, 187, 108, 5, 102, 62, 102, 5, 40, 63, 1179, 64, 1178, 1183, 27, 65, 0, 1266, 0, 65, 26, 0, 31, 1, 31, 0, 26, 1, 32, 1185, 32, 1, 31, 1266, 32, 65, 32, 1266, 1185, 76, 1178, 63, 1178, 76, 1183, 63, 1178, 1179, 1178, 64, 1179, 64, 1178, 27, 109, 121, 66, 121, 109, 112, 67, 204, 22, 204, 67, 203, 8, 68, 42, 8, 121, 68, 8, 66, 121, 109, 11, 112, 109, 41, 11, 109, 1186, 41, 1189, 1187, 111, 1187, 1189, 69, 70, 1189, 71, 1189, 70, 69, 1188, 70, 71, 77, 71, 1189, 71, 77, 1188, 77, 1189, 111, 22, 43, 67, 1186, 53, 41, 1186, 42, 53, 8, 42, 1186, 152, 67, 43, 67, 152, 203, 72, 853, 851, 851, 73, 72, 73, 851, 74, 72, 1187, 853, 72, 111, 1187, 72, 77, 111, 72, 73, 77, 55, 77, 1139, 77, 55, 1188, 75, 1182, 815, 1182, 75, 9, 835, 1267, 110, 1267, 835, 63, 63, 1182, 1267, 1182, 63, 815, 9, 835, 110, 835, 9, 75, 79, 78, 80, 78, 79, 104, 80, 81, 82, 81, 80, 78, 82, 83, 84, 83, 82, 81, 84, 83, 85, 80, 86, 79, 86, 80, 113, 113, 82, 87, 82, 113, 80, 87, 84, 88, 84, 87, 82, 84, 85, 88, 89, 93, 102, 93, 89, 90, 90, 91, 92, 91, 90, 89, 91, 85, 92, 93, 94, 106, 94, 93, 90, 94, 92, 95, 92, 94, 90, 92, 85, 95, 105, 94, 96, 94, 105, 106, 96, 95, 97, 95, 96, 94, 85, 97, 95, 105, 78, 104, 78, 96, 81, 105, 96, 78, 89, 98, 99, 98, 102, 19, 89, 102, 98, 89, 100, 91, 100, 89, 99, 87, 98, 113, 98, 87, 99, 99, 88, 100, 88, 99, 87, 88, 85, 100, 100, 85, 91, 96, 83, 81, 83, 96, 97, 83, 97, 85, 12, 76, 63, 101, 112, 11, 86, 19, 14, 113, 19, 86, 113, 98, 19, 103, 104, 850, 104, 103, 105, 105, 7, 106, 7, 105, 103, 7, 93, 106, 93, 7, 6, 51, 23, 107, 23, 51, 60, 59, 108, 15, 108, 59, 61, 6, 102, 93, 102, 6, 62, 1190, 118, 116, 118, 1190, 119, 119, 114, 115, 114, 119, 1190, 119, 755, 118, 755, 119, 115, 1190, 117, 114, 117, 1190, 116, 117, 118, 755, 118, 117, 116, 754, 202, 155, 755, 202, 754, 755, 1200, 202, 755, 115, 1200, 117, 173, 114, 173, 117, 753, 122, 1191, 123, 1191, 122, 120, 123, 836, 122, 836, 123, 837, 1191, 837, 123, 837, 1191, 839, 836, 120, 122, 120, 836, 840, 840, 1191, 120, 1191, 840, 839, 837, 121, 835, 121, 838, 45, 121, 839, 838, 837, 839, 121, 836, 834, 840, 834, 836, 833, 1192, 124, 816, 124, 1192, 125, 816, 1193, 1192, 1193, 816, 127, 125, 126, 124, 126, 125, 128, 126, 1193, 127, 1193, 126, 128, 127, 63, 64, 63, 127, 816, 56, 126, 814, 126, 56, 124, 1192, 128, 125, 128, 1192, 1193, 132, 1194, 130, 1194, 132, 1195, 1195, 131, 1194, 131, 1195, 129, 132, 129, 1195, 129, 132, 743, 131, 130, 1194, 130, 131, 744, 744, 132, 130, 132, 744, 743, 129, 1197, 1270, 1197, 129, 743, 131, 742, 744, 742, 131, 176, 134, 133, 250, 133, 134, 243, 135, 1196, 136, 1196, 135, 137, 138, 141, 199, 141, 138, 171, 171, 200, 141, 171, 139, 200, 171, 140, 139, 145, 143, 146, 147, 143, 145, 147, 164, 143, 148, 164, 147, 148, 207, 164, 1196, 742, 136, 742, 1196, 1197, 142, 1270, 1200, 1270, 142, 175, 214, 150, 186, 214, 184, 150, 214, 183, 184, 151, 155, 202, 155, 157, 156, 155, 158, 157, 155, 159, 158, 155, 160, 159, 151, 160, 155, 154, 184, 182, 184, 154, 150, 163, 164, 165, 164, 163, 143, 214, 181, 183, 181, 214, 162, 144, 157, 146, 157, 144, 156, 158, 146, 157, 146, 158, 145, 148, 159, 160, 159, 148, 147, 147, 158, 159, 158, 147, 145, 160, 207, 148, 151, 207, 160, 207, 167, 168, 151, 167, 207, 151, 1199, 167, 151, 1198, 1199, 151, 213, 1198, 151, 209, 213, 152, 165, 166, 152, 163, 165, 152, 153, 163, 252, 201, 1202, 201, 252, 1269, 172, 142, 173, 174, 142, 172, 142, 174, 175, 176, 172, 173, 172, 176, 174, 177, 1270, 178, 162, 177, 178, 162, 179, 177, 162, 214, 179, 179, 214, 180, 177, 1200, 1270, 179, 1200, 177, 179, 180, 1200, 174, 176, 175, 171, 170, 169, 170, 171, 138, 183, 182, 184, 183, 244, 182, 183, 248, 244, 183, 246, 248, 181, 246, 183, 181, 247, 246, 1201, 1203, 205, 1203, 1201, 1268, 1270, 1197, 1180, 1181, 1196, 198, 199, 252, 137, 252, 199, 1269, 200, 252, 1202, 252, 200, 137, 1269, 141, 201, 141, 1269, 199, 1181, 1270, 1180, 1181, 178, 1270, 1181, 198, 178, 1268, 202, 180, 202, 1268, 1201, 205, 202, 1201, 202, 205, 151, 1268, 186, 1203, 1268, 214, 186, 1268, 180, 214, 0x0100, 206, 165, 165, 164, 0x0100, 207, 0x0100, 164, 0x0100, 207, 208, 208, 168, 167, 168, 208, 207, 253, 208, 167, 208, 253, 0x0100, 253, 206, 0x0100, 152, 204, 203, 209, 1203, 186, 1203, 151, 205, 209, 151, 1203, 210, 211, 166, 211, 212, 213, 212, 211, 210, 210, 253, 212, 210, 206, 253, 210, 165, 206, 210, 166, 165, 212, 1198, 213, 212, 1098, 1198, 212, 1100, 1098, 253, 1100, 212, 253, 1199, 1100, 253, 167, 1199, 1202, 141, 200, 141, 1202, 201, 216, 215, 217, 215, 216, 218, 218, 219, 215, 219, 218, 220, 221, 220, 222, 220, 221, 219, 222, 223, 221, 218, 225, 226, 218, 224, 225, 218, 216, 224, 226, 220, 218, 220, 226, 227, 222, 227, 228, 227, 222, 220, 222, 228, 223, 229, 245, 230, 245, 229, 154, 231, 230, 232, 230, 231, 229, 223, 231, 232, 230, 249, 233, 249, 230, 245, 232, 233, 234, 233, 232, 230, 223, 232, 234, 235, 233, 249, 233, 235, 236, 236, 234, 233, 234, 236, 237, 237, 223, 234, 154, 238, 194, 238, 229, 241, 154, 229, 238, 254, 239, 0xFF, 215, 240, 217, 215, 235, 240, 215, 236, 235, 215, 219, 236, 242, 229, 231, 229, 242, 241, 190, 225, 224, 194, 225, 190, 194, 226, 225, 194, 238, 226, 238, 227, 226, 227, 238, 241, 228, 241, 242, 241, 228, 227, 228, 242, 223, 223, 242, 231, 236, 221, 237, 221, 236, 219, 221, 223, 237, 133, 187, 149, 187, 133, 243, 244, 154, 182, 154, 244, 245, 246, 240, 235, 246, 217, 240, 246, 247, 217, 235, 248, 246, 248, 235, 249, 248, 245, 244, 245, 248, 249, 161, 134, 250, 134, 161, 251, 260, 261, 259, 260, 0x0101, 261, 260, 258, 0x0101, 263, 259, 264, 259, 263, 260, 263, 258, 260, 262, 259, 261, 259, 262, 264, 262, 261, 0x0101, 269, 266, 267, 269, 265, 266, 269, 271, 265, 268, 267, 272, 267, 268, 269, 268, 271, 269, 270, 267, 266, 267, 270, 272, 270, 266, 265, 275, 278, 273, 275, 279, 278, 275, 276, 279, 280, 273, 274, 273, 280, 275, 280, 276, 275, 277, 273, 278, 273, 277, 274, 277, 278, 279, 284, 286, 281, 284, 288, 286, 284, 287, 288, 282, 281, 283, 281, 282, 284, 282, 287, 284, 285, 281, 286, 281, 285, 283, 285, 286, 288, 289, 295, 291, 289, 296, 295, 289, 290, 296, 292, 291, 293, 291, 292, 289, 292, 290, 289, 294, 291, 295, 291, 294, 293, 294, 295, 296, 297, 298, 299, 297, 302, 298, 297, 303, 302, 300, 299, 304, 299, 300, 297, 300, 303, 297, 301, 299, 298, 299, 301, 304, 301, 298, 302, 305, 311, 306, 305, 307, 311, 305, 308, 307, 309, 308, 305, 308, 309, 312, 309, 305, 306, 310, 308, 312, 308, 310, 307, 310, 311, 307, 315, 319, 316, 315, 318, 319, 315, 313, 318, 320, 313, 315, 313, 320, 314, 320, 315, 316, 317, 313, 314, 313, 317, 318, 317, 319, 318, 321, 327, 325, 321, 322, 327, 321, 323, 322, 324, 323, 321, 323, 324, 328, 324, 321, 325, 326, 323, 328, 323, 326, 322, 326, 327, 322, 329, 330, 335, 329, 334, 330, 329, 331, 334, 336, 331, 329, 331, 336, 332, 336, 329, 335, 333, 331, 332, 331, 333, 334, 333, 330, 334, 341, 337, 343, 341, 338, 337, 341, 339, 338, 344, 339, 341, 339, 344, 340, 344, 341, 343, 342, 339, 340, 339, 342, 338, 342, 337, 338, 345, 349, 351, 345, 348, 349, 345, 346, 348, 347, 346, 345, 346, 347, 352, 347, 345, 351, 350, 346, 352, 346, 350, 348, 350, 349, 348, 357, 353, 354, 357, 358, 353, 357, 355, 358, 360, 355, 357, 355, 360, 356, 360, 357, 354, 359, 355, 356, 355, 359, 358, 359, 353, 358, 361, 366, 365, 361, 363, 366, 361, 362, 363, 367, 362, 361, 362, 367, 368, 367, 361, 365, 364, 362, 368, 362, 364, 363, 364, 366, 363, 372, 374, 373, 372, 369, 374, 372, 370, 369, 371, 370, 372, 370, 371, 376, 371, 372, 373, 375, 370, 376, 370, 375, 369, 375, 374, 369, 379, 383, 380, 379, 382, 383, 379, 377, 382, 378, 377, 379, 377, 378, 384, 378, 379, 380, 381, 377, 384, 377, 381, 382, 381, 383, 382, 388, 391, 390, 388, 385, 391, 388, 386, 385, 387, 386, 388, 386, 387, 392, 387, 388, 390, 389, 386, 392, 386, 389, 385, 389, 391, 385, 396, 398, 393, 396, 397, 398, 396, 394, 397, 400, 394, 396, 394, 400, 395, 400, 396, 393, 399, 394, 395, 394, 399, 397, 399, 398, 397, 410, 402, 401, 403, 412, 411, 402, 405, 406, 402, 404, 405, 402, 410, 404, 405, 403, 406, 405, 412, 403, 405, 404, 412, 406, 411, 409, 406, 407, 411, 406, 408, 407, 404, 411, 412, 404, 401, 411, 404, 410, 401, 413, 414, 1204, 1205, 422, 421, 414, 415, 416, 414, 420, 415, 414, 413, 420, 415, 1205, 416, 415, 422, 1205, 415, 420, 422, 417, 419, 1205, 417, 1204, 419, 417, 418, 1204, 420, 421, 422, 420, 1204, 421, 420, 413, 1204, 423, 424, 431, 425, 426, 1206, 424, 427, 1207, 427, 424, 423, 1207, 426, 425, 426, 1207, 427, 1207, 1206, 430, 1207, 428, 1206, 1207, 429, 428, 427, 1206, 426, 427, 431, 1206, 427, 423, 431, 441, 432, 440, 433, 434, 1208, 432, 435, 436, 435, 432, 441, 436, 434, 433, 434, 436, 435, 436, 1208, 439, 436, 437, 1208, 436, 438, 437, 435, 1208, 434, 435, 440, 1208, 435, 441, 440, 442, 444, 443, 445, 446, 1210, 444, 450, 1209, 450, 444, 442, 1209, 446, 445, 446, 1209, 450, 1209, 1210, 449, 1209, 447, 1210, 1209, 448, 447, 450, 1210, 446, 450, 443, 1210, 450, 442, 443, 459, 451, 1211, 1212, 452, 460, 451, 454, 455, 451, 453, 454, 451, 459, 453, 454, 1212, 455, 454, 452, 1212, 454, 453, 452, 456, 458, 1212, 456, 1211, 458, 456, 457, 1211, 453, 460, 452, 453, 1211, 460, 453, 459, 1211, 1213, 461, 465, 462, 470, 467, 461, 463, 464, 463, 461, 1213, 464, 470, 462, 470, 464, 463, 464, 467, 468, 464, 465, 467, 464, 466, 465, 463, 467, 470, 463, 469, 467, 463, 1213, 469, 481, 472, 471, 473, 475, 474, 472, 477, 1214, 472, 476, 477, 472, 481, 476, 477, 473, 1214, 477, 475, 473, 477, 476, 475, 1214, 474, 480, 1214, 478, 474, 1214, 479, 478, 476, 474, 475, 476, 471, 474, 476, 481, 471, 482, 490, 483, 484, 491, 485, 483, 489, 482, 483, 486, 489, 483, 487, 486, 486, 485, 489, 486, 484, 485, 486, 487, 484, 1215, 490, 488, 1215, 1216, 490, 1215, 484, 1216, 489, 490, 482, 489, 491, 490, 489, 485, 491, 492, 501, 499, 493, 1217, 502, 499, 494, 492, 499, 495, 494, 499, 496, 495, 495, 502, 494, 495, 493, 502, 495, 496, 493, 497, 498, 499, 497, 1217, 498, 497, 500, 1217, 494, 501, 492, 494, 1217, 501, 494, 502, 1217, 503, 504, 1218, 511, 505, 513, 504, 506, 507, 504, 0x0200, 506, 504, 503, 0x0200, 506, 511, 507, 506, 505, 511, 506, 0x0200, 505, 508, 510, 511, 508, 1218, 510, 508, 509, 1218, 0x0200, 513, 505, 0x0200, 1218, 513, 0x0200, 503, 1218, 521, 519, 0x0202, 515, 523, 522, 519, 517, 518, 519, 516, 517, 519, 521, 516, 517, 515, 518, 517, 523, 515, 517, 516, 523, 1220, 522, 520, 1220, 1219, 522, 1220, 519, 1219, 516, 522, 523, 516, 0x0202, 522, 516, 521, 0x0202, 531, 524, 530, 525, 533, 532, 524, 527, 1221, 524, 526, 527, 524, 531, 526, 527, 525, 1221, 527, 533, 525, 527, 526, 533, 1221, 532, 529, 1221, 1222, 532, 1221, 528, 1222, 526, 532, 533, 526, 530, 532, 526, 531, 530, 539, 538, 534, 535, 1224, 540, 534, 537, 539, 534, 536, 537, 534, 1223, 536, 536, 540, 537, 536, 535, 540, 536, 1223, 535, 537, 538, 539, 537, 1224, 538, 537, 540, 1224, 1225, 547, 541, 542, 543, 544, 541, 546, 1225, 541, 545, 546, 541, 1226, 545, 545, 544, 546, 545, 542, 544, 545, 1226, 542, 546, 547, 1225, 546, 543, 547, 546, 544, 543, 556, 555, 548, 549, 550, 551, 548, 552, 556, 548, 553, 552, 548, 554, 553, 553, 551, 552, 553, 549, 551, 553, 554, 549, 552, 555, 556, 552, 550, 555, 552, 551, 550, 1229, 562, 557, 558, 1227, 559, 557, 561, 1229, 557, 560, 561, 557, 1228, 560, 560, 559, 561, 560, 558, 559, 560, 1228, 558, 561, 562, 1229, 561, 1227, 562, 561, 559, 1227, 568, 563, 564, 565, 1230, 569, 564, 566, 568, 564, 567, 566, 564, 1231, 567, 567, 569, 566, 567, 565, 569, 567, 1231, 565, 566, 563, 568, 566, 1230, 563, 566, 569, 1230, 570, 571, 572, 573, 1232, 574, 572, 575, 570, 572, 576, 575, 572, 1233, 576, 576, 574, 575, 576, 573, 574, 576, 1233, 573, 1233, 571, 577, 1233, 1232, 571, 1233, 578, 1232, 575, 571, 570, 575, 579, 571, 575, 574, 579, 580, 584, 581, 582, 1234, 588, 581, 583, 580, 583, 581, 1235, 583, 582, 588, 582, 583, 1235, 1235, 584, 585, 1235, 1234, 584, 1235, 586, 1234, 583, 587, 580, 583, 1234, 587, 583, 588, 1234, 596, 589, 590, 591, 597, 598, 590, 592, 596, 592, 590, 1236, 592, 591, 598, 591, 592, 1236, 1236, 589, 593, 1236, 594, 589, 1236, 595, 594, 592, 589, 596, 592, 597, 589, 592, 598, 597, 599, 607, 600, 601, 608, 609, 600, 602, 599, 602, 600, 603, 602, 601, 609, 601, 602, 603, 603, 607, 604, 603, 605, 607, 603, 606, 605, 602, 607, 599, 602, 608, 607, 602, 609, 608, 610, 1237, 611, 612, 619, 613, 611, 618, 610, 618, 611, 614, 618, 612, 613, 612, 618, 614, 614, 1237, 615, 614, 616, 1237, 614, 617, 616, 618, 1237, 610, 618, 619, 1237, 618, 613, 619, 628, 627, 620, 621, 1239, 622, 620, 626, 628, 620, 623, 626, 620, 624, 623, 623, 622, 626, 623, 621, 622, 623, 624, 621, 1240, 1238, 620, 1240, 1239, 1238, 1240, 625, 1239, 626, 627, 628, 626, 1239, 627, 626, 622, 1239, 639, 638, 629, 630, 631, 632, 629, 633, 639, 633, 629, 634, 633, 630, 632, 630, 633, 634, 634, 638, 635, 634, 636, 638, 634, 637, 636, 633, 638, 639, 633, 631, 638, 633, 632, 631, 640, 647, 641, 642, 648, 649, 641, 646, 640, 646, 641, 643, 646, 642, 649, 642, 646, 643, 643, 647, 644, 643, 1241, 647, 643, 645, 1241, 646, 647, 640, 646, 648, 647, 646, 649, 648, 650, 651, 1242, 652, 660, 659, 651, 654, 655, 651, 653, 654, 651, 650, 653, 654, 652, 655, 654, 660, 652, 654, 653, 660, 655, 657, 658, 655, 1242, 657, 655, 656, 1242, 653, 659, 660, 653, 1242, 659, 653, 650, 1242, 661, 662, 671, 669, 663, 672, 662, 664, 665, 662, 670, 664, 662, 661, 670, 664, 669, 665, 664, 663, 669, 664, 670, 663, 666, 668, 669, 666, 671, 668, 666, 667, 671, 670, 672, 663, 670, 671, 672, 670, 661, 671, 682, 681, 673, 674, 1243, 675, 673, 676, 682, 673, 677, 676, 673, 1244, 677, 677, 675, 676, 677, 674, 675, 677, 1244, 674, 1244, 678, 679, 1244, 1243, 678, 1244, 680, 1243, 676, 681, 682, 676, 1243, 681, 676, 675, 1243, 690, 689, 683, 684, 1247, 1245, 683, 688, 690, 683, 685, 688, 683, 1246, 685, 685, 1245, 688, 685, 684, 1245, 685, 1246, 684, 1246, 689, 686, 1246, 1247, 689, 1246, 687, 1247, 688, 689, 690, 688, 691, 689, 688, 1245, 691, 699, 1248, 692, 693, 700, 701, 692, 698, 699, 692, 694, 698, 692, 695, 694, 698, 693, 701, 694, 693, 698, 694, 695, 693, 695, 1248, 696, 695, 1249, 1248, 695, 697, 1249, 698, 1248, 699, 698, 700, 1248, 698, 701, 700, 703, 702, 704, 702, 703, 705, 704, 706, 707, 706, 704, 702, 708, 702, 705, 702, 708, 706, 709, 705, 703, 705, 709, 708, 706, 709, 707, 709, 706, 708, 704, 709, 703, 709, 704, 707, 711, 710, 712, 710, 711, 713, 712, 714, 715, 714, 712, 710, 716, 710, 713, 710, 716, 714, 717, 713, 711, 713, 717, 716, 714, 717, 715, 717, 714, 716, 712, 717, 711, 717, 712, 715, 719, 718, 720, 718, 719, 721, 720, 722, 723, 722, 720, 718, 724, 718, 721, 718, 724, 722, 725, 721, 719, 721, 725, 724, 722, 725, 723, 725, 722, 724, 720, 725, 719, 725, 720, 723, 727, 726, 729, 726, 727, 728, 728, 730, 726, 730, 728, 731, 732, 726, 730, 726, 732, 729, 733, 729, 732, 729, 733, 727, 730, 733, 732, 733, 730, 731, 728, 733, 731, 733, 728, 727, 735, 734, 737, 734, 735, 736, 736, 738, 734, 738, 736, 739, 740, 734, 738, 734, 740, 737, 741, 737, 740, 737, 741, 735, 738, 741, 740, 741, 738, 739, 736, 741, 739, 741, 736, 735, 176, 1270, 175, 1270, 131, 129, 176, 131, 1270, 746, 745, 747, 745, 746, 748, 747, 749, 750, 749, 747, 745, 751, 745, 748, 745, 751, 749, 752, 748, 746, 748, 752, 751, 749, 752, 750, 752, 749, 751, 747, 752, 746, 752, 747, 750, 114, 1200, 115, 1200, 173, 142, 114, 173, 1200, 755, 753, 117, 753, 755, 754, 756, 763, 760, 763, 756, 757, 756, 761, 758, 761, 756, 760, 761, 759, 758, 759, 761, 762, 759, 763, 757, 763, 759, 762, 764, 217, 765, 217, 764, 162, 209, 211, 213, 211, 209, 185, 166, 185, 152, 185, 166, 211, 767, 766, 769, 766, 767, 0x0300, 0x0300, 770, 766, 770, 0x0300, 0x0303, 772, 766, 770, 766, 772, 769, 773, 769, 772, 769, 773, 767, 770, 773, 772, 773, 770, 0x0303, 0x0300, 773, 0x0303, 773, 0x0300, 767, 775, 774, 777, 774, 775, 776, 776, 778, 774, 778, 776, 779, 780, 774, 778, 774, 780, 777, 781, 777, 780, 777, 781, 775, 778, 781, 780, 781, 778, 779, 776, 781, 779, 781, 776, 775, 783, 782, 785, 782, 783, 784, 784, 786, 782, 786, 784, 787, 788, 782, 786, 782, 788, 785, 789, 785, 788, 785, 789, 783, 786, 789, 788, 789, 786, 787, 784, 789, 787, 789, 784, 783, 791, 790, 792, 790, 791, 793, 792, 794, 795, 794, 792, 790, 796, 790, 793, 790, 796, 794, 797, 793, 791, 793, 797, 796, 794, 797, 795, 797, 794, 796, 792, 797, 791, 797, 792, 795, 799, 798, 800, 798, 799, 801, 800, 802, 803, 802, 800, 798, 804, 798, 801, 798, 804, 802, 805, 801, 799, 801, 805, 804, 802, 805, 803, 805, 802, 804, 800, 805, 799, 805, 800, 803, 807, 806, 808, 806, 807, 809, 808, 810, 811, 810, 808, 806, 812, 806, 809, 806, 812, 810, 813, 809, 807, 809, 813, 812, 810, 813, 811, 813, 810, 812, 808, 813, 807, 813, 808, 811, 127, 814, 126, 814, 127, 64, 818, 817, 820, 817, 818, 819, 819, 821, 817, 821, 819, 822, 823, 817, 821, 817, 823, 820, 824, 820, 823, 820, 824, 818, 821, 824, 823, 824, 821, 822, 819, 824, 822, 824, 819, 818, 826, 825, 828, 825, 826, 827, 827, 829, 825, 829, 827, 830, 831, 825, 829, 825, 831, 828, 832, 828, 831, 828, 832, 826, 829, 832, 831, 832, 829, 830, 827, 832, 830, 832, 827, 826, 834, 839, 840, 839, 834, 838, 847, 843, 848, 843, 847, 842, 841, 847, 845, 847, 841, 842, 841, 846, 844, 846, 841, 845, 843, 846, 848, 846, 843, 844, 849, 104, 10, 104, 849, 850, 58, 815, 57, 815, 58, 75, 852, 74, 851, 74, 852, 53, 851, 43, 852, 43, 851, 853, 854, 869, 868, 869, 854, 855, 856, 858, 857, 860, 859, 861, 859, 860, 862, 854, 863, 855, 863, 854, 856, 865, 864, 866, 864, 865, 867, 865, 869, 867, 869, 865, 868, 864, 860, 866, 860, 864, 862, 863, 856, 857, 872, 870, 873, 870, 872, 871, 858, 872, 857, 873, 884, 874, 884, 873, 870, 876, 875, 877, 875, 876, 878, 875, 889, 890, 889, 875, 878, 876, 879, 880, 879, 876, 877, 871, 882, 870, 882, 871, 889, 881, 892, 893, 892, 881, 882, 883, 872, 858, 872, 883, 871, 885, 879, 886, 879, 885, 880, 857, 872, 873, 887, 880, 885, 880, 887, 888, 871, 890, 889, 890, 871, 883, 857, 873, 874, 884, 882, 881, 882, 884, 870, 880, 891, 876, 891, 880, 888, 892, 889, 878, 889, 892, 882, 891, 878, 876, 878, 891, 892, 895, 894, 896, 894, 895, 897, 898, 892, 891, 892, 898, 893, 855, 907, 869, 907, 855, 899, 888, 898, 891, 898, 888, 900, 887, 900, 888, 900, 887, 901, 902, 857, 874, 874, 904, 902, 904, 874, 884, 867, 907, 903, 907, 867, 869, 884, 906, 904, 906, 884, 881, 854, 890, 883, 890, 854, 868, 867, 905, 864, 905, 867, 903, 868, 875, 890, 875, 868, 865, 854, 858, 856, 858, 854, 883, 886, 860, 861, 860, 886, 879, 879, 866, 860, 866, 879, 877, 877, 865, 866, 865, 877, 875, 906, 899, 904, 899, 906, 907, 894, 901, 896, 901, 894, 900, 907, 908, 903, 908, 907, 906, 904, 910, 902, 910, 904, 899, 881, 908, 906, 908, 881, 893, 894, 898, 900, 898, 894, 909, 909, 893, 898, 893, 909, 908, 910, 857, 902, 905, 862, 864, 862, 905, 897, 863, 857, 910, 905, 894, 897, 894, 905, 909, 903, 909, 905, 909, 903, 908, 855, 910, 899, 910, 855, 863, 897, 859, 862, 859, 897, 895, 914, 911, 926, 911, 914, 912, 913, 951, 980, 951, 913, 914, 937, 915, 942, 915, 937, 916, 918, 917, 919, 917, 918, 920, 911, 1042, 916, 1042, 911, 938, 1015, 923, 921, 923, 1015, 922, 922, 930, 923, 930, 922, 931, 925, 944, 924, 914, 985, 951, 985, 914, 926, 927, 914, 913, 914, 927, 912, 935, 980, 983, 980, 935, 913, 933, 928, 934, 928, 933, 929, 930, 984, 936, 984, 930, 931, 933, 949, 929, 949, 933, 932, 926, 916, 937, 916, 926, 911, 952, 934, 928, 934, 952, 924, 912, 938, 911, 938, 912, 1055, 944, 933, 934, 985, 937, 982, 937, 985, 926, 1029, 923, 915, 923, 1029, 921, 1051, 912, 927, 912, 1051, 1055, 944, 932, 933, 0x0400, 939, 1066, 939, 0x0400, 940, 913, 941, 927, 941, 913, 935, 927, 1019, 1051, 1019, 927, 941, 981, 937, 942, 937, 981, 982, 1032, 939, 943, 939, 1032, 1066, 946, 945, 947, 945, 946, 948, 942, 923, 930, 923, 942, 915, 936, 942, 930, 942, 936, 981, 931, 941, 935, 941, 931, 922, 924, 944, 934, 960, 929, 949, 960, 961, 929, 950, 961, 960, 943, 961, 950, 945, 919, 947, 919, 945, 918, 928, 959, 952, 958, 959, 928, 958, 940, 959, 958, 939, 940, 984, 935, 983, 935, 984, 931, 1044, 943, 950, 943, 1044, 1032, 915, 1042, 1029, 1042, 915, 916, 917, 948, 946, 948, 917, 920, 922, 1019, 941, 1019, 922, 1015, 929, 958, 928, 961, 958, 929, 961, 939, 958, 961, 943, 939, 1031, 985, 982, 985, 1031, 1073, 953, 932, 944, 952, 925, 924, 925, 952, 954, 955, 1072, 956, 1072, 955, 1058, 959, 954, 952, 959, 978, 954, 940, 978, 959, 940, 957, 978, 954, 967, 925, 967, 954, 962, 966, 963, 953, 963, 966, 964, 985, 1059, 951, 1059, 985, 1073, 986, 981, 936, 981, 986, 1033, 951, 1057, 980, 1057, 951, 1059, 978, 962, 954, 978, 977, 962, 957, 977, 978, 957, 965, 977, 1033, 982, 981, 982, 1033, 1031, 986, 984, 1021, 984, 986, 936, 966, 953, 944, 967, 964, 966, 964, 967, 962, 944, 967, 966, 948, 974, 945, 948, 973, 974, 920, 973, 948, 920, 975, 973, 920, 972, 975, 969, 945, 974, 968, 945, 969, 968, 918, 945, 970, 918, 968, 971, 918, 970, 972, 918, 971, 920, 918, 972, 963, 960, 949, 976, 960, 963, 956, 960, 976, 950, 960, 956, 984, 1023, 1021, 1023, 984, 983, 965, 1058, 955, 1058, 965, 1060, 962, 979, 964, 977, 979, 962, 977, 955, 979, 977, 965, 955, 965, 1022, 1060, 1022, 965, 957, 967, 944, 925, 956, 1044, 950, 1044, 956, 1072, 953, 949, 932, 949, 953, 963, 979, 963, 964, 979, 976, 963, 979, 956, 976, 955, 956, 979, 1022, 940, 0x0400, 940, 1022, 957, 983, 1057, 1023, 1057, 983, 980, 974, 968, 969, 973, 968, 974, 975, 968, 973, 975, 970, 968, 975, 971, 970, 975, 972, 971, 917, 994, 987, 994, 917, 988, 992, 988, 917, 988, 992, 989, 993, 946, 990, 946, 993, 991, 991, 992, 946, 992, 991, 989, 946, 992, 917, 988, 993, 994, 989, 993, 988, 989, 991, 993, 996, 995, 997, 1000, 995, 996, 1001, 995, 1000, 995, 999, 998, 1001, 999, 995, 1001, 1002, 999, 196, 996, 195, 996, 196, 1000, 191, 996, 997, 996, 191, 195, 189, 999, 192, 999, 189, 998, 188, 998, 189, 998, 188, 995, 191, 995, 188, 995, 191, 997, 999, 193, 192, 193, 999, 1002, 1001, 193, 1002, 193, 1001, 197, 197, 1000, 196, 1000, 197, 1001, 1004, 1003, 1005, 1008, 1003, 1004, 1009, 1003, 1008, 1003, 1007, 1006, 1009, 1007, 1003, 1009, 1010, 1007, 1011, 1004, 21, 1004, 1011, 1008, 18, 1004, 1005, 1004, 18, 21, 13, 1007, 1012, 1007, 13, 1006, 17, 1006, 13, 1006, 17, 1003, 18, 1003, 17, 1003, 18, 1005, 1007, 16, 1012, 16, 1007, 1010, 1009, 16, 1010, 16, 1009, 20, 20, 1008, 1011, 1008, 20, 1009, 1022, 1021, 1023, 1021, 1022, 0x0400, 1032, 1031, 1033, 1031, 1032, 1044, 0x0400, 986, 1021, 986, 0x0400, 1066, 1041, 1067, 1038, 1067, 1041, 1039, 1044, 1073, 1031, 1073, 1044, 1072, 1060, 1023, 1057, 1023, 1060, 1022, 1054, 1049, 1050, 1049, 1054, 1052, 1058, 1057, 1059, 1057, 1058, 1060, 1066, 1033, 986, 1033, 1066, 1032, 1072, 1059, 1073, 1059, 1072, 1058, 1077, 1074, 1076, 1074, 1077, 1075, 1078, 1075, 1079, 1075, 1078, 1074, 1074, 1078, 1080, 1074, 1083, 1076, 1083, 1074, 1080, 1077, 1081, 1082, 1081, 1077, 1076, 1076, 1083, 1081, 1079, 1081, 1078, 1081, 1079, 1082, 1083, 1078, 1081, 1078, 1083, 1080, 1087, 1084, 1250, 1087, 1085, 1084, 1087, 1086, 1085, 1086, 1251, 1090, 1251, 1086, 1087, 1251, 1088, 1090, 1088, 1251, 1089, 1088, 1250, 1084, 1250, 1088, 1089, 1093, 1092, 1094, 1092, 1093, 1095, 1095, 1252, 1091, 1252, 1095, 1093, 1252, 1096, 1091, 1096, 1252, 1097, 1096, 1094, 1092, 1094, 1096, 1097, 1101, 1198, 1253, 1101, 1099, 1198, 1101, 1199, 1099, 1199, 1254, 1100, 1254, 1199, 1101, 1254, 1098, 1100, 1098, 1254, 1102, 1098, 1253, 1198, 1253, 1098, 1102, 1103, 1107, 1108, 1107, 1103, 1105, 1105, 1109, 1107, 1109, 1105, 1106, 1109, 1104, 1255, 1104, 1109, 1106, 1104, 1108, 1255, 1108, 1104, 1103, 1110, 1111, 1112, 1111, 1110, 1113, 1113, 1114, 1111, 1114, 1113, 1115, 1114, 1116, 1256, 1116, 1114, 1115, 1116, 1112, 1256, 1112, 1116, 1110, 1118, 1117, 1119, 1117, 1118, 1120, 1120, 1257, 1121, 1257, 1120, 1118, 1257, 1122, 1121, 1122, 1257, 1123, 1122, 1119, 1117, 1119, 1122, 1123, 1126, 1125, 1127, 1125, 1126, 1128, 1128, 1129, 1125, 1129, 1128, 1124, 1129, 1130, 1258, 1130, 1129, 1124, 1130, 1127, 1258, 1127, 1130, 1126, 1131, 1134, 1135, 1134, 1131, 1132, 1132, 1136, 1134, 1136, 1132, 1133, 1136, 1137, 1259, 1137, 1136, 1133, 1137, 1135, 1259, 1135, 1137, 1131, 54, 1141, 1142, 1141, 54, 55, 55, 1143, 1141, 1143, 55, 1139, 1143, 1138, 1140, 1138, 1143, 1139, 1138, 1142, 1140, 1142, 1138, 54, 1146, 1145, 1147, 1145, 1146, 1148, 1148, 1260, 1149, 1260, 1148, 1146, 1260, 1144, 1149, 1144, 1260, 1150, 1144, 1147, 1145, 1147, 1144, 1150, 1151, 1261, 1153, 1261, 1151, 1152, 1152, 1154, 1261, 1154, 1152, 1155, 1154, 1156, 1262, 1156, 1154, 1155, 1156, 1153, 1262, 1153, 1156, 1151, 1158, 1263, 1160, 1263, 1158, 1162, 1157, 1161, 1264, 1161, 1157, 1159, 1159, 1263, 1161, 1263, 1159, 1160, 1158, 1264, 1162, 1264, 1158, 1157, 1166, 1163, 1167, 1163, 1166, 1164, 1164, 1168, 1169, 1168, 1164, 1166, 1168, 1170, 1169, 1170, 1168, 1165, 1170, 1167, 1163, 1167, 1170, 1165, 1174, 1172, 1265, 1172, 1174, 1173, 1173, 1175, 1171, 1175, 1173, 1174, 1175, 1176, 1171, 1176, 1175, 1177, 1176, 1265, 1172, 1265, 1176, 1177, 38, 42, 50, 173, 742, 176, 742, 173, 753, 146, 143, 144, 37, 70, 38, 37, 69, 70, 35, 69, 37, 35, 33, 69, 845, 848, 846, 848, 845, 847, 760, 762, 761, 762, 760, 763, 23, 852, 107, 852, 23, 40, 15, 40, 23, 15, 20, 40, 108, 20, 15, 187, 20, 108, 187, 16, 20, 187, 1012, 16, 187, 13, 1012, 1011, 40, 20, 21, 40, 1011, 18, 40, 21, 40, 19, 102, 18, 19, 40, 17, 19, 18, 17, 14, 19, 13, 14, 17, 187, 14, 13, 14, 189, 190, 14, 188, 189, 14, 191, 188, 14, 195, 191, 14, 196, 195, 187, 196, 14, 243, 196, 187, 243, 197, 196, 192, 190, 189, 193, 190, 192, 197, 190, 193, 243, 190, 197, 243, 194, 190, 134, 194, 243, 194, 150, 154, 134, 150, 194, 185, 22, 204, 22, 185, 852, 150, 209, 186, 209, 150, 185, 134, 185, 150, 185, 134, 251, 107, 185, 251, 185, 107, 852, 1138, 74, 54, 1138, 73, 74, 1139, 73, 1138, 1139, 77, 73, 1184, 757, 844, 1184, 759, 757, 1184, 162, 759, 758, 140, 756, 140, 758, 139, 1180, 1196, 1181, 1196, 1180, 1197, 56, 815, 124, 815, 56, 57, 815, 816, 124, 816, 815, 63, 58, 836, 75, 836, 58, 833, 75, 837, 835, 837, 75, 836, 841, 757, 756, 757, 841, 844, 1184, 844, 843, 758, 178, 139, 759, 178, 758, 162, 178, 759, 139, 178, 198, 29, 1183, 76, 843, 76, 1184, 842, 76, 843, 29, 76, 842, 30, 756, 140, 756, 30, 841, 1070, 1050, 1067, 1050, 1070, 1068, 1054, 1055, 1056, 1055, 1054, 1050, 1047, 1051, 1048, 1051, 1047, 1049, 1047, 1014, 1049, 1014, 1047, 1045, 1018, 1013, 1014, 1013, 1018, 1016, 1018, 1019, 1020, 1019, 1018, 1014, 1036, 1015, 1037, 1015, 1036, 1013, 1036, 1061, 1013, 1061, 1036, 1034, 1064, 1025, 1061, 1025, 1064, 1062, 921, 1064, 1061, 1064, 921, 1065, 0x0404, 1038, 1025, 1038, 0x0404, 1026, 1041, 1042, 1043, 1042, 1041, 1038, 1067, 1071, 1070, 1071, 1067, 938, 0x0404, 1029, 1030, 1029, 0x0404, 1025, 1025, 1063, 1029, 1063, 1025, 1062, 1063, 921, 1029, 921, 1063, 1065, 1034, 921, 1061, 921, 1034, 1035, 1035, 1015, 921, 1015, 1035, 1037, 1046, 1051, 1019, 1051, 1046, 1048, 1046, 1014, 1045, 1014, 1046, 1019, 1052, 1051, 1049, 1051, 1052, 1053, 1053, 1055, 1051, 1055, 1053, 1056, 1026, 1042, 1038, 1042, 1026, 1027, 1027, 1029, 1042, 1029, 1027, 1030, 1069, 938, 1055, 938, 1069, 1071, 1068, 1055, 1050, 1055, 1068, 1069, 1039, 938, 1067, 938, 1039, 1040, 1040, 1042, 938, 1042, 1040, 1043, 1016, 1015, 1013, 1015, 1016, 1017, 1017, 1019, 1015, 1019, 1017, 1020, 742, 743, 744, 743, 742, 1197, 198, 200, 139, 1196, 200, 198, 1196, 137, 200, 137, 138, 199, 138, 137, 135, 4, 26, 65, 26, 4, 24, 31, 1183, 29, 31, 27, 1183, 26, 27, 31, 42, 74, 53, 42, 54, 74, 42, 55, 54, 42, 1188, 55, 30, 842, 841, 842, 30, 29]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Invalides.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Invalides.as new file mode 100644 index 0000000..154a1c2 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Invalides.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Invalides extends Stage3DData { + + public function Invalides(){ + vertices = new [-842.272, -0.000396729, 738.654, -465.193, -0.000366211, 711.172, -433.244, -0.000366211, 1149.54, -842.272, 149.999, 738.654, -465.193, 149.999, 711.171, -433.244, 149.999, 1149.54, -541.66, -0.000396729, -412.029, -514.139, -0.000396729, -34.4141, -863.982, -0.000396729, -8.91677, -851.275, -0.000396729, 165.437, -506.797, -0.000396729, 140.331, -475.874, -0.000366211, 564.619, -852.953, -0.000396729, 592.102, -883.876, -0.000396729, 167.813, -1011.23, -0.000396729, 177.095, -44.4634, -0.000366211, 1121.2, -288.307, -0.000366211, 1138.98, -361.86, -0.000366211, 129.768, -126.07, -0.000366211, -62.6973, -363.712, -0.000396729, -45.3774, -391.234, -0.000457764, -422.993, -541.66, 149.999, -412.029, -514.139, 149.999, -34.414, -863.982, 149.999, -8.91677, -851.275, 149.999, 165.437, -506.797, 149.999, 140.331, -475.874, 149.999, 564.619, -852.953, 149.999, 592.102, -883.876, 149.999, 167.813, -1011.23, 149.999, 177.095, -937.681, 149.999, 1186.3, -288.308, 149.999, 1138.98, -361.861, 149.999, 129.768, -162.633, 150, -564.367, -126.07, 149.999, -62.6972, -363.712, 149.999, -45.3774, -391.234, 149.999, -422.993, -466.447, 170, -417.511, -857.629, 170, 78.2602, -947.555, 170, 172.454, -37.4721, 170, 1217.13, -436.627, 170, 47.5767, -803.332, 170, 1272.95, -874.002, 170, 1181.66, -810.323, 149.999, 1177.02, -30.4808, -0.000366211, 1313.06, -796.34, -0.000366211, 1368.87, -44.4634, 149.999, 1121.2, -810.323, -0.000396729, 1177.02, -937.681, -0.000396729, 1186.3, -796.341, 149.999, 1368.87, -30.4808, 149.999, 1313.06, -810.323, 149.999, 1177.02, -353.784, 170, 1240.18, -910.778, 170, 677.058, -396.038, 170, 632.466, -164.44, -0.000366211, -586.542, -159.893, -0.000366211, -608.321, -159.893, 150, -608.321, -149.363, -0.000366211, -627.921, -149.363, 150, -627.921, -133.714, -0.000366211, -643.736, -133.714, 150, -643.736, -114.226, -0.000366211, -654.471, -114.226, 150, -654.471, -164.44, 150, -586.542, -114.595, 150, -654.267, -162.633, -0.000366211, -564.366, 852.046, -0.000335693, 615.169, 474.966, -0.000335693, 642.651, 506.915, -0.000335693, 1081.02, 852.046, 149.999, 615.169, 474.966, 149.999, 642.651, 506.915, 150, 1081.02, 387.768, -0.000366211, -479.768, 415.29, -0.000366211, -102.153, 765.133, -0.000335693, -127.65, 777.841, -0.000335693, 46.7039, 433.362, -0.000335693, 71.8102, 464.285, -0.000335693, 496.099, 841.365, -0.000335693, 468.616, 810.442, -0.000335693, 44.3279, 937.799, -0.000335693, 35.0458, 118.135, -0.000335693, 1109.35, 361.979, -0.000335693, 1091.58, 288.426, -0.000366211, 82.3734, -36.7173, -0.000366211, 106.071, 27.2211, -0.000366211, -73.8695, 264.863, -0.000366211, -91.1893, 237.342, -0.000427246, -468.805, 387.768, 149.999, -479.768, 415.29, 149.999, -102.153, 765.133, 149.999, -127.65, 777.841, 149.999, 46.7039, 433.362, 150, 71.8102, 464.285, 149.999, 496.099, 841.365, 149.999, 468.616, 810.442, 149.999, 44.3279, 937.799, 149.999, 35.0458, 1011.35, 150, 1044.25, 361.979, 150, 1091.58, 288.426, 149.999, 82.3735, -36.7173, 149.999, 106.071, -9.34155, 150, -575.539, 27.2211, 149.999, -73.8695, 264.863, 149.999, -91.1893, 237.342, 149.999, -468.805, 312.555, 170, -474.286, 771.487, 170, -40.473, 874.12, 170, 39.6869, 125.126, 170, 1205.28, -85.9873, 170, -569.953, -43.071, 170, 18.8936, 350.485, 170, -9.78958, 890.986, 170, 1149.46, 947.674, 170, 1048.89, 883.995, 150, 1053.54, 132.118, -0.000335693, 1301.21, 897.977, -0.000305176, 1245.39, 118.135, 150, 1109.35, 883.995, -0.000305176, 1053.54, 1011.35, -0.000305176, 1044.25, 897.978, 149.999, 1245.39, 132.118, 150, 1301.21, 883.995, 149.999, 1053.54, 441.438, 170, 1182.23, 910.897, 170, 544.291, 395.13, 170, 574.805, -36.7173, 1.68445, 106.071, -10.7685, -0.000366211, -597.742, -18.4257, -0.000366211, -618.632, -18.4257, 150, -618.632, -31.6859, -0.000366211, -636.498, -31.6859, 150, -636.498, -49.4632, -0.000366211, -649.877, -49.4632, 150, -649.877, -70.3019, -0.000366211, -657.672, -70.3019, 150, -657.672, -10.7685, 150, -597.742, -69.9068, 150, -657.525, -9.34156, -0.000366211, -575.539, -92.4952, -0.000366211, -659.247, -92.4952, 150, -659.247, -481.784, -0.000396729, -573.949, -530.42, -0.000396729, -1241.26, -1478.9, -0.000427246, -1172.14, -1385.7, -0.000427246, 106.557, -1293.08, -0.000488281, 99.8066, -1326.22, -0.000427246, -354.849, -1004.54, -0.000396729, -378.294, -979.716, -0.000396729, -37.7527, -870.645, -0.000396729, -45.702, -895.465, -0.000396729, -386.243, -593.856, -0.000396729, -408.225, -601.754, -0.000396729, -516.594, -925.787, -0.000396729, -492.977, -944.102, -0.000427246, -744.274, -620.069, -0.000396729, -767.89, -605.278, -0.000396729, -564.948, -481.785, 99.9996, -573.949, -530.42, 99.9996, -1241.26, -1478.9, 99.9995, -1172.14, -1385.7, 99.9995, 106.557, -1293.08, 99.9995, 99.8065, -1326.22, 99.9995, -354.849, -1004.54, 99.9996, -378.294, -979.716, 99.9996, -37.7526, -870.645, 99.9996, -45.702, -895.465, 99.9996, -386.243, -593.856, 99.9996, -408.225, -601.754, 99.9996, -516.594, -925.787, 99.9996, -492.977, -944.102, 99.9995, -744.274, -620.069, 99.9996, -767.89, -605.278, 99.9996, -564.948, -543.531, 119.999, -569.449, -588.505, 119.999, -1186.52, -964.249, 119.999, -435.702, -925.181, 119.999, -41.7273, -597.805, 119.999, -462.409, -1000.7, 119.999, -793.788, -646.59, -0.000396729, -1131.78, -627.846, -0.000396729, -874.601, -951.879, -0.000427246, -850.985, -970.623, -0.000427246, -1108.17, -646.59, 99.9996, -1131.78, -627.846, 99.9996, -874.601, -951.879, 99.9995, -850.985, -970.623, 99.9995, -1108.17, -562.211, 119.999, -825.746, -1057.3, -0.000427246, -843.302, -1360.21, -0.000427246, -821.225, -1378.95, -0.000427246, -1078.41, -1076.04, -0.000427246, -1100.48, -1057.3, 99.9995, -843.302, -1360.21, 99.9995, -821.225, -1378.95, 99.9995, -1078.41, -1076.05, 99.9995, -1100.48, -1428.93, 119.999, -1125.27, -1031.21, -0.000427246, -485.294, -1334.12, -0.000427246, -463.218, -1352.43, -0.000427246, -714.514, -1049.52, -0.000427246, -736.591, -1031.21, 99.9995, -485.294, -1334.12, 99.9995, -463.218, -1352.43, 99.9995, -714.514, -1049.52, 99.9995, -736.591, -1301.4, -0.000488281, -14.3078, -1301.4, 99.9995, -14.3078, -1343.55, 119.999, 46.1245, -1065.68, 99.9995, 83.2328, -1065.68, -0.000457764, 83.2329, -1074, -0.000457764, -30.8815, -1074, 99.9995, -30.8814, -1069.84, 119.999, 26.1757, -1376.48, 119.999, -405.658, -1402.63, 119.999, -764.495, -1027, 119.999, -1154.56, 301.087, -0.000427246, -631.006, 252.452, -0.000366211, -1298.32, 1200.93, -0.000457764, -1367.45, 1294.12, -0.000427246, -88.754, 1201.5, -0.000457764, -82.0036, 1168.37, -0.000396729, -536.659, 846.683, -0.000396729, -513.214, 871.503, -0.000396729, -172.673, 762.431, -0.000396729, -164.724, 737.612, -0.000396729, -505.265, 436.003, -0.000427246, -483.283, 428.105, -0.000427246, -591.652, 752.138, -0.000396729, -615.268, 733.823, -0.000427246, -866.565, 409.79, -0.000427246, -842.948, 424.581, -0.000427246, -640.006, 301.087, 99.9996, -631.006, 252.452, 99.9996, -1298.32, 1200.93, 99.9995, -1367.45, 1294.12, 99.9996, -88.754, 1201.5, 99.9995, -82.0037, 1168.37, 99.9996, -536.659, 846.683, 99.9996, -513.214, 871.503, 99.9996, -172.673, 762.431, 99.9996, -164.724, 737.612, 99.9996, -505.265, 436.003, 99.9996, -483.283, 428.105, 99.9996, -591.652, 752.138, 99.9996, -615.268, 733.823, 99.9995, -866.565, 409.79, 99.9996, -842.948, 424.581, 99.9996, -640.007, 362.834, 119.999, -635.506, 317.86, 119.999, -1252.58, 798.498, 119.999, -564.175, 816.967, 119.999, -168.698, 432.054, 119.999, -537.467, 782.645, 119.999, -923.762, 383.268, -0.000427246, -1206.84, 402.012, -0.000427246, -949.659, 726.046, -0.000427246, -973.275, 707.302, -0.000427246, -1230.46, 383.269, 99.9996, -1206.84, 402.012, 99.9996, -949.659, 726.046, 99.9995, -973.276, 707.302, 99.9996, -1230.46, 344.154, 119.999, -891.804, 831.468, -0.000396729, -980.959, 1134.38, -0.000396729, -1003.04, 1115.63, -0.000396729, -1260.22, 812.724, -0.000427246, -1238.14, 831.468, 99.9996, -980.959, 1134.38, 99.9995, -1003.04, 1115.63, 99.9995, -1260.22, 812.724, 99.9996, -1238.14, 1158.28, 119.999, -1313.83, 857.56, -0.000396729, -622.951, 1160.47, -0.000396729, -645.028, 1142.15, -0.000396729, -896.325, 839.245, -0.000396729, -874.248, 857.56, 99.9996, -622.951, 1160.47, 99.9995, -645.028, 1142.15, 99.9995, -896.325, 839.245, 99.9996, -874.248, 1193.19, -0.000457764, -196.118, 1193.19, 99.9995, -196.118, 1243.65, 119.999, -142.436, 974.1, 99.9995, -65.4302, 974.1, -0.000457764, -65.4301, 965.783, -0.000457764, -179.545, 965.783, 99.9995, -179.544, 969.941, 119.999, -122.487, 1210.73, 119.999, -594.219, 1184.57, 119.999, -953.055, 756.351, 119.999, -1284.54, 143.295, 247.022, -785.277, 106.606, -0.000366211, -1288.68, 106.606, 247.022, -1288.68, 143.295, -0.000366211, -785.277, -384.717, 247.022, -1252.87, -384.717, -0.000366211, -1252.87, -281.225, 247.022, -1260.41, -348.028, -0.000396729, -749.468, -348.028, 247.022, -749.468, -208.812, -0.000396729, -759.615, -202.681, -0.000396729, -731.887, -189.647, -0.000396729, -706.657, -170.58, -0.000396729, -685.612, -146.755, -0.000396729, -670.159, -119.765, -0.000366211, -661.33, -91.4128, -0.000366211, -659.716, -63.5947, -0.000366211, -665.424, -38.1697, -0.000366211, -678.073, -16.8372, -0.000366211, -696.818, -1.0232, -0.000366211, -720.404, 10.2611, -0.000366211, -775.581, 8.21541, -0.000366211, -747.257, -281.225, 282.275, -1260.41, -278.299, 282.275, -1220.27, -4.31641, 247.022, -1240.23, -227.466, 282.275, -1223.97, -62.5241, 282.275, -1235.99, -4.31641, 282.275, -1240.23, -147.937, 317.528, -1229.77, -7.24238, 282.275, -1280.38, -150.863, 317.528, -1269.91, -65.4501, 282.275, -1276.14, -230.392, 282.275, -1264.12, -202.681, 247.022, -731.887, 10.2611, 247.022, -775.581, -208.812, 247.022, -759.615, -189.647, 247.022, -706.657, -170.58, 247.022, -685.612, -146.755, 247.022, -670.159, -119.764, 247.022, -661.33, -91.4128, 247.022, -659.716, -63.5947, 247.022, -665.424, -38.1697, 247.022, -678.073, -16.8372, 247.022, -696.818, -1.02319, 247.022, -720.404, 8.21543, 247.022, -747.257, -7.24238, 247.022, -1280.38, -278.299, 247.022, -1220.27, -114.319, 580.556, -1014.54, -111.438, 573.5, -975.01, -121.768, 573.5, -975.611, -131.591, 573.5, -978.866, -140.237, 573.5, -984.552, -147.116, 573.5, -992.282, -151.761, 573.5, -1001.53, -153.854, 573.5, -1011.66, -153.252, 573.5, -1021.99, -149.998, 573.5, -1031.82, -144.312, 573.5, -1040.46, -136.582, 573.5, -1047.34, -127.334, 573.5, -1051.99, -117.2, 573.5, -1054.08, -106.87, 573.5, -1053.48, -97.0471, 573.5, -1050.22, -88.4013, 573.5, -1044.54, -81.5218, 573.5, -1036.81, -76.8774, 573.5, -1027.56, -74.7845, 573.5, -1017.43, -75.3859, 573.5, -1007.1, -78.6404, 573.5, -997.272, -84.3264, 573.5, -988.627, -92.0564, 573.5, -981.747, -101.303, 573.5, -977.103, -108.753, 552.814, -938.169, -128.71, 552.814, -939.331, -147.686, 552.814, -945.619, -164.388, 552.814, -956.603, -177.678, 552.814, -971.536, -186.651, 552.814, -989.4, -190.694, 552.814, -1008.98, -189.532, 552.814, -1028.93, -183.245, 552.814, -1047.91, -172.26, 552.814, -1064.61, -157.327, 552.814, -1077.9, -139.463, 552.814, -1086.88, -119.885, 552.814, -1090.92, -99.9285, 552.814, -1089.76, -80.9522, 552.814, -1083.47, -64.2499, 552.814, -1072.49, -50.9597, 552.814, -1057.55, -41.9873, 552.814, -1039.69, -37.9442, 552.814, -1020.11, -39.1059, 552.814, -1000.15, -45.3933, 552.814, -981.178, -56.3778, 552.814, -964.475, -71.3109, 552.814, -951.185, -89.175, 552.814, -942.213, -106.447, 519.907, -906.534, -134.67, 519.907, -908.177, -161.507, 519.907, -917.069, -185.127, 519.907, -932.603, -203.923, 519.907, -953.722, -216.612, 519.907, -978.985, -222.329, 519.907, -1006.67, -220.686, 519.907, -1034.9, -211.795, 519.907, -1061.73, -196.26, 519.907, -1085.35, -175.142, 519.907, -1104.15, -149.878, 519.907, -1116.84, -122.191, 519.907, -1122.55, -93.9677, 519.907, -1120.91, -67.1313, 519.907, -1112.02, -43.5106, 519.907, -1096.49, -24.7154, 519.907, -1075.37, -12.0265, 519.907, -1050.1, -6.30871, 519.907, -1022.42, -7.95162, 519.907, -994.193, -16.8433, 519.907, -967.357, -32.3778, 519.907, -943.736, -53.4964, 519.907, -924.941, -78.76, 519.907, -912.252, -104.678, 477.021, -882.259, -139.244, 477.021, -884.271, -172.112, 477.021, -895.161, -201.041, 477.021, -914.187, -224.061, 477.021, -940.052, -239.601, 477.021, -970.994, -246.604, 477.021, -1004.9, -244.592, 477.021, -1039.47, -233.702, 477.021, -1072.34, -214.676, 477.021, -1101.27, -188.811, 477.021, -1124.29, -157.87, 477.021, -1139.83, -123.96, 477.021, -1146.83, -89.3938, 477.021, -1144.82, -56.5261, 477.021, -1133.93, -27.5968, 477.021, -1114.9, -4.57738, 477.021, -1089.04, 10.9632, 477.021, -1058.1, 17.966, 477.021, -1024.19, 15.9539, 477.021, -989.619, 5.06388, 477.021, -956.751, -13.9619, 477.021, -927.822, -39.8268, 477.021, -904.803, -70.7683, 477.021, -889.262, -103.566, 427.08, -866.999, -142.119, 427.08, -869.244, -178.779, 427.08, -881.39, -211.045, 427.08, -902.61, -236.72, 427.08, -931.459, -254.053, 427.08, -965.97, -261.864, 427.08, -1003.79, -259.62, 427.08, -1042.34, -247.473, 427.08, -1079, -226.253, 427.08, -1111.27, -197.404, 427.08, -1136.95, -162.893, 427.08, -1154.28, -125.072, 427.08, -1162.09, -86.5186, 427.08, -1159.84, -49.8594, 427.08, -1147.7, -17.5929, 427.08, -1126.48, 8.08186, 427.08, -1097.63, 25.4151, 427.08, -1063.12, 33.2258, 427.08, -1025.3, 30.9816, 427.08, -986.744, 18.8353, 427.08, -950.085, -2.38517, 427.08, -917.818, -31.2338, 427.08, -892.144, -65.7445, 427.08, -874.81, -103.186, 373.487, -861.795, -143.1, 373.487, -864.118, -181.053, 373.487, -876.693, -214.457, 373.487, -898.662, -241.038, 373.487, -928.528, -258.982, 373.487, -964.256, -267.069, 373.487, -1003.41, -264.745, 373.487, -1043.33, -252.17, 373.487, -1081.28, -230.201, 373.487, -1114.68, -200.335, 373.487, -1141.26, -164.607, 373.487, -1159.21, -125.452, 373.487, -1167.29, -85.5379, 373.487, -1164.97, -47.5855, 373.487, -1152.4, -14.1808, 373.487, -1130.43, 12.3997, 373.487, -1100.56, 30.3445, 373.487, -1064.83, 38.4307, 373.487, -1025.68, 36.1072, 373.487, -985.763, 23.5325, 373.487, -947.811, 1.56342, 373.487, -914.406, -28.3028, 373.487, -887.826, -64.031, 373.487, -869.881, -103.186, 247.022, -861.795, -143.1, 247.022, -864.118, -181.053, 247.022, -876.693, -214.457, 247.022, -898.662, -241.038, 247.022, -928.528, -258.982, 247.022, -964.256, -267.069, 247.022, -1003.41, -264.745, 247.022, -1043.33, -252.17, 247.022, -1081.28, -230.201, 247.022, -1114.68, -200.335, 247.022, -1141.26, -164.607, 247.022, -1159.21, -125.452, 247.022, -1167.29, -85.5379, 247.022, -1164.97, -47.5855, 247.022, -1152.4, -14.1808, 247.022, -1130.43, 12.3997, 247.022, -1100.56, 30.3445, 247.022, -1064.83, 38.4306, 247.022, -1025.68, 36.1072, 247.022, -985.763, 23.5325, 247.022, -947.811, 1.56343, 247.022, -914.406, -28.3028, 247.022, -887.826, -64.031, 247.022, -869.881, -137.99, 566.827, -1049.42, -156.355, 566.827, -1011.48, -90.6477, 566.827, -979.672, -72.2828, 566.827, -1017.61, -95.9541, 566.827, -1052.48, -132.684, 566.827, -976.608, -137.99, 687.242, -1049.42, -156.355, 687.242, -1011.48, -90.6477, 687.242, -979.672, -72.2828, 687.242, -1017.61, -95.9541, 687.242, -1052.48, -132.684, 687.242, -976.608, -85.4828, 657.867, -990.341, -77.4477, 657.867, -1006.94, -77.4477, 627.158, -1006.94, -85.4828, 627.158, -990.341, -78.94, 657.867, -1027.42, -89.2969, 657.867, -1042.67, -89.2969, 627.158, -1042.67, -78.94, 627.158, -1027.42, -120.862, 657.867, -977.47, -102.47, 657.867, -978.81, -102.47, 627.158, -978.81, -120.862, 627.158, -977.47, -107.776, 657.867, -1051.62, -126.168, 657.867, -1050.28, -126.168, 627.158, -1050.28, -107.776, 627.158, -1051.62, -143.155, 657.867, -1038.75, -151.19, 657.867, -1022.15, -151.19, 627.158, -1022.15, -143.155, 627.158, -1038.75, -149.698, 657.867, -1001.67, -139.341, 657.867, -986.416, -139.341, 627.158, -986.416, -149.698, 627.158, -1001.67, -131.102, 687.242, -1013.32, -130.847, 687.242, -1017.71, -129.466, 687.242, -1021.88, -127.052, 687.242, -1025.55, -123.77, 687.242, -1028.47, -119.844, 687.242, -1030.44, -115.542, 687.242, -1031.33, -111.157, 687.242, -1031.07, -106.987, 687.242, -1029.69, -103.316, 687.242, -1027.28, -100.396, 687.242, -1024, -98.424, 687.242, -1020.07, -97.5355, 687.242, -1015.77, -121.651, 687.242, -999.398, -125.322, 687.242, -1001.81, -128.242, 687.242, -1005.09, -130.214, 687.242, -1009.02, -117.481, 687.242, -998.016, -113.096, 687.242, -997.761, -108.794, 687.242, -998.649, -104.868, 687.242, -1000.62, -101.586, 687.242, -1003.54, -99.1725, 687.242, -1007.21, -97.7908, 687.242, -1011.38, -114.316, 879.851, -1014.5, -114.305, 879.851, -1014.5, -114.333, 879.851, -1014.59, -114.344, 879.851, -1014.58, -114.29, 879.851, -1014.58, -114.3, 879.851, -1014.58, -114.348, 879.851, -1014.51, -114.355, 879.851, -1014.52, -114.338, 879.851, -1014.51, -114.322, 879.851, -1014.59, -114.362, 879.851, -1014.55, -114.36, 879.851, -1014.53, -114.363, 879.851, -1014.54, -114.358, 879.851, -1014.56, -114.352, 879.851, -1014.57, -114.327, 879.851, -1014.5, -114.311, 879.851, -1014.59, -114.295, 879.851, -1014.51, -114.286, 879.851, -1014.52, -114.283, 879.851, -1014.57, -114.28, 879.851, -1014.53, -114.278, 879.851, -1014.56, -114.276, 879.851, -1014.54, -114.275, 879.851, -1014.55, -44.4634, -0.000427246, 1121.2, 118.135, -0.000396729, 1109.35, 118.135, 149.999, 1109.35, -44.4634, 149.999, 1121.2, -30.4808, -0.000610352, 1313.06, -30.4808, 149.999, 1313.06, 132.118, 149.999, 1301.21, 132.118, -0.000579834, 1301.21, -17.0224, 149.999, 1312.08, 118.659, 149.999, 1302.19, -31.0048, 149.999, 1120.22, -26.3163, 160.293, 1119.88, -12.3338, 160.293, 1311.73, 1.65857, 176.484, 1310.71, 40.1349, 194.102, 1307.91, 113.97, 160.293, 1302.53, 99.9878, 160.293, 1110.68, 104.676, 149.999, 1110.33, 85.9955, 176.484, 1111.7, 5.65095, 188.066, 1117.55, -12.324, 176.484, 1118.86, 19.6335, 188.066, 1309.4, 26.1523, 194.102, 1116.06, 61.5018, 194.102, 1306.35, 47.5192, 194.102, 1114.5, 82.0031, 188.066, 1304.86, 68.0206, 188.066, 1113.01, 99.9781, 176.484, 1303.55, -971.559, -0.000457764, 1188.77, -957.576, -0.000457764, 1380.62, -971.559, 150, 1188.77, -957.576, 150, 1380.62, -810.323, -0.000457764, 1177.02, -796.341, -0.000427246, 1368.87, -810.323, 150, 1177.02, -796.341, 150, 1368.87, -893.531, 190, 1273.31, -892.631, 190, 1285.67, -874.368, 190, 1284.33, -875.269, 190, 1271.98, -1070.04, -0.000396729, -31.1705, -1054.63, -0.000396729, 180.257, -1070.04, 150, -31.1705, -1054.63, 150, 180.257, -866.684, -0.000396729, -45.9911, -851.275, -0.000396729, 165.437, -866.684, 150, -45.9911, -851.275, 150, 165.436, -973.435, 190, 52.3054, -971.129, 190, 83.9459, -947.854, 190, 82.2496, -950.16, 190, 50.6091, -605.278, -0.000396729, -564.949, -593.856, -0.000396729, -408.225, -605.278, 150, -564.949, -593.856, 150, -408.225, -406.617, -0.000396729, -579.428, -395.194, -0.000457764, -422.704, -406.617, 150, -579.428, -395.194, 150, -422.704, -512.116, 190, -502.817, -510.687, 190, -483.209, -488.357, 190, -484.836, -489.786, 190, -504.444, 424.581, -0.000488281, -640.007, 436.003, -0.000488281, -483.283, 424.581, 150, -640.007, 436.003, 150, -483.283, 225.919, -0.000488281, -625.528, 237.342, -0.000488281, -468.804, 225.919, 150, -625.528, 237.342, 150, -468.804, 341.412, 190, -565.023, 342.841, 190, -545.415, 320.511, 190, -543.788, 319.082, 190, -563.396, 965.783, -0.000488281, -179.544, 981.192, -0.000549316, 31.8832, 965.783, 149.999, -179.544, 981.192, 149.999, 31.8832, 762.431, -0.000488281, -164.724, 777.84, -0.000488281, 46.7037, 762.431, 150, -164.724, 777.84, 149.999, 46.7037, 882.307, 189.999, -82.9442, 884.613, 189.999, -51.3038, 861.338, 189.999, -49.6075, 859.032, 189.999, -81.2479, 1045.23, -0.000518799, 1041.78, 1059.21, -0.000518799, 1233.64, 1045.23, 149.999, 1041.78, 1059.21, 149.999, 1233.64, 883.995, -0.000518799, 1053.54, 897.977, -0.000518799, 1245.39, 883.995, 149.999, 1053.54, 897.977, 149.999, 1245.39, 980.285, 189.999, 1136.74, 981.185, 189.999, 1149.1, 962.923, 189.999, 1150.43, 962.023, 189.999, 1138.08]; + uvs = new [0.838812, 0.278735, 0.702966, 0.268746, 0.714476, 0.109404, 0.838812, 0.278735, 0.702966, 0.268746, 0.714476, 0.109404, 0.671553, 0.676733, 0.681467, 0.539474, 0.807501, 0.548742, 0.812079, 0.485366, 0.687978, 0.47624, 0.699118, 0.322016, 0.834964, 0.332006, 0.823824, 0.48623, 0.869705, 0.489604, 0.574415, 0.0991043, 0.662262, 0.105564, 0.635764, 0.472401, 0.541663, 0.529193, 0.627275, 0.535489, 0.61736, 0.672748, 0.671553, 0.676733, 0.681467, 0.539474, 0.807501, 0.548742, 0.812079, 0.485366, 0.687978, 0.47624, 0.699118, 0.322016, 0.834964, 0.332006, 0.823824, 0.48623, 0.869705, 0.489604, 0.896204, 0.122767, 0.662262, 0.105564, 0.635764, 0.472401, 0.528491, 0.711545, 0.541663, 0.529193, 0.627275, 0.535489, 0.61736, 0.672748, 0.644456, 0.674741, 0.80979, 0.517054, 0.846765, 0.487917, 0.576934, 0.0642359, 0.658121, 0.505901, 0.852841, 0.0845251, 0.873263, 0.12108, 0.850322, 0.119393, 0.579453, 0.0293677, 0.855359, 0.0496567, 0.574415, 0.0991043, 0.850322, 0.119393, 0.896204, 0.122767, 0.855359, 0.0496567, 0.579453, 0.0293677, 0.850322, 0.119393, 0.690888, 0.0726157, 0.860014, 0.304499, 0.674205, 0.293407, 0.527977, 0.719616, 0.525218, 0.727209, 0.525218, 0.727209, 0.520441, 0.733703, 0.520441, 0.733703, 0.514037, 0.738566, 0.514037, 0.738566, 0.506529, 0.7414, 0.506529, 0.7414, 0.527977, 0.719616, 0.506672, 0.741346, 0.528491, 0.711545, 0.228421, 0.23385, 0.364267, 0.243839, 0.375777, 0.0844971, 0.228421, 0.23385, 0.364267, 0.243839, 0.375777, 0.0844971, 0.336719, 0.652111, 0.346634, 0.514852, 0.2206, 0.505584, 0.225178, 0.442208, 0.349279, 0.451334, 0.360419, 0.297109, 0.224574, 0.28712, 0.213433, 0.441344, 0.167552, 0.43797, 0.515838, 0.0947967, 0.427991, 0.0883368, 0.401493, 0.455173, 0.518629, 0.463787, 0.486439, 0.525132, 0.400826, 0.518837, 0.390911, 0.656096, 0.336719, 0.652111, 0.346634, 0.514852, 0.2206, 0.505584, 0.225178, 0.442208, 0.349279, 0.451334, 0.360419, 0.297109, 0.224574, 0.28712, 0.213433, 0.441344, 0.167552, 0.43797, 0.19405, 0.0711335, 0.427991, 0.0883367, 0.401493, 0.455173, 0.518629, 0.463787, 0.473266, 0.707484, 0.486439, 0.525132, 0.400826, 0.518837, 0.390911, 0.656096, 0.363815, 0.654104, 0.222889, 0.473896, 0.190493, 0.439657, 0.518357, 0.0599283, 0.500879, 0.709515, 0.51634, 0.495475, 0.374558, 0.485049, 0.24245, 0.0396393, 0.216991, 0.0728206, 0.239931, 0.0745076, 0.520875, 0.0250601, 0.244969, 0.00477099, 0.515838, 0.0947967, 0.239931, 0.0745076, 0.19405, 0.0711336, 0.244969, 0.00477093, 0.520875, 0.0250601, 0.239931, 0.0745076, 0.404403, 0.0515486, 0.203742, 0.256239, 0.389181, 0.272448, 0.518629, 0.463787, 0.472615, 0.715545, 0.474254, 0.723461, 0.474254, 0.723461, 0.478047, 0.730586, 0.478047, 0.730586, 0.483685, 0.736334, 0.483685, 0.736334, 0.490706, 0.740236, 0.490706, 0.740236, 0.472615, 0.715545, 0.490572, 0.740162, 0.473266, 0.707484, 0.498534, 0.741972, 0.498534, 0.741972, 0.641752, 0.731812, 0.624231, 0.974374, 0.965927, 0.999501, 0.999501, 0.534709, 0.966133, 0.532255, 0.954196, 0.697518, 0.838307, 0.688996, 0.847248, 0.565213, 0.807955, 0.562323, 0.799013, 0.686106, 0.690356, 0.678116, 0.687511, 0.717507, 0.804246, 0.726091, 0.797648, 0.817435, 0.680913, 0.808851, 0.686241, 0.735083, 0.641752, 0.731812, 0.624231, 0.974374, 0.965927, 0.999501, 0.999501, 0.534709, 0.966133, 0.532255, 0.954196, 0.697518, 0.838307, 0.688996, 0.847248, 0.565212, 0.807955, 0.562323, 0.799013, 0.686106, 0.690356, 0.678116, 0.687511, 0.717507, 0.804246, 0.726091, 0.797648, 0.817435, 0.680913, 0.808851, 0.686241, 0.735083, 0.663997, 0.733448, 0.647795, 0.957748, 0.820948, 0.707519, 0.827602, 0.563768, 0.688934, 0.697811, 0.815237, 0.838225, 0.671358, 0.941121, 0.678111, 0.847639, 0.794846, 0.856223, 0.788094, 0.949706, 0.671358, 0.941122, 0.678111, 0.847639, 0.794846, 0.856223, 0.788094, 0.949706, 0.657267, 0.826609, 0.832825, 0.859016, 0.94195, 0.867041, 0.935198, 0.960523, 0.826073, 0.952499, 0.832825, 0.859016, 0.94195, 0.867041, 0.935198, 0.960523, 0.826073, 0.952499, 0.950562, 0.980012, 0.842225, 0.728884, 0.95135, 0.736909, 0.944752, 0.828252, 0.835627, 0.820228, 0.842225, 0.728884, 0.95135, 0.736909, 0.944752, 0.828252, 0.835627, 0.820228, 0.963137, 0.573735, 0.963137, 0.573735, 0.981319, 0.554222, 0.88421, 0.526231, 0.88421, 0.526231, 0.881214, 0.56771, 0.881214, 0.56771, 0.882712, 0.546971, 0.969457, 0.71844, 0.960035, 0.848873, 0.805764, 0.969364, 0.359717, 0.711072, 0.342196, 0.953634, 0.000499547, 0.928507, 0.0340734, 0.463715, 0.0674405, 0.466169, 0.0555029, 0.631431, 0.171392, 0.639953, 0.180333, 0.51617, 0.219627, 0.51906, 0.210685, 0.642843, 0.319342, 0.650833, 0.316497, 0.690224, 0.199762, 0.68164, 0.193163, 0.772983, 0.309899, 0.781568, 0.315227, 0.7078, 0.359717, 0.711072, 0.342195, 0.953634, 0.000499547, 0.928507, 0.0340734, 0.463715, 0.0674404, 0.466169, 0.0555029, 0.631431, 0.171392, 0.639953, 0.180333, 0.51617, 0.219627, 0.51906, 0.210685, 0.642843, 0.319342, 0.650833, 0.316497, 0.690224, 0.199762, 0.68164, 0.193163, 0.772983, 0.309899, 0.781568, 0.315227, 0.7078, 0.337472, 0.709436, 0.32127, 0.933736, 0.185905, 0.660821, 0.19998, 0.517615, 0.31792, 0.670528, 0.172773, 0.790981, 0.300344, 0.913839, 0.307097, 0.820356, 0.190362, 0.811772, 0.183609, 0.905254, 0.300344, 0.913839, 0.307097, 0.820356, 0.190362, 0.811772, 0.183609, 0.905254, 0.330743, 0.802598, 0.152383, 0.808979, 0.0432576, 0.800954, 0.0365049, 0.894437, 0.14563, 0.902462, 0.152383, 0.808979, 0.0432576, 0.800954, 0.0365049, 0.894437, 0.14563, 0.902462, 0.0185022, 0.911472, 0.161783, 0.678847, 0.0526575, 0.670822, 0.0460594, 0.762166, 0.155184, 0.770191, 0.161783, 0.678847, 0.0526575, 0.670822, 0.0460594, 0.762166, 0.155184, 0.770191, 0.0644441, 0.507648, 0.0644442, 0.507648, 0.0492588, 0.485682, 0.149364, 0.472193, 0.149364, 0.472193, 0.146368, 0.513673, 0.146368, 0.513673, 0.147866, 0.492933, 0.0373966, 0.6499, 0.0279749, 0.780333, 0.1633, 0.92212, 0.407903, 0.774871, 0.394686, 0.957852, 0.394686, 0.957852, 0.407903, 0.774871, 0.571689, 0.970869, 0.571689, 0.970869, 0.534405, 0.968127, 0.584906, 0.787888, 0.584906, 0.787888, 0.534752, 0.784199, 0.534016, 0.773904, 0.530687, 0.764143, 0.52499, 0.75557, 0.517305, 0.748756, 0.508145, 0.744159, 0.498124, 0.742084, 0.48791, 0.742671, 0.478186, 0.74588, 0.469603, 0.751497, 0.462734, 0.759146, 0.45583, 0.778396, 0.458039, 0.768317, 0.534405, 0.968127, 0.535459, 0.953534, 0.436755, 0.946276, 0.517146, 0.952187, 0.457725, 0.947818, 0.436755, 0.946276, 0.488495, 0.950081, 0.435701, 0.960869, 0.487441, 0.964673, 0.45667, 0.962411, 0.516092, 0.96678, 0.534016, 0.773904, 0.45583, 0.778396, 0.534752, 0.784199, 0.530687, 0.764143, 0.52499, 0.75557, 0.517305, 0.748756, 0.508145, 0.744159, 0.498124, 0.742084, 0.48791, 0.742671, 0.478186, 0.74588, 0.469603, 0.751497, 0.462734, 0.759146, 0.458039, 0.768317, 0.435701, 0.960869, 0.535459, 0.953534, 0.487754, 0.870904, 0.488792, 0.856534, 0.492443, 0.857295, 0.495774, 0.858983, 0.498559, 0.861484, 0.500608, 0.864626, 0.50178, 0.868197, 0.501997, 0.871952, 0.501243, 0.875635, 0.49957, 0.878997, 0.497091, 0.881806, 0.493977, 0.883873, 0.490438, 0.885056, 0.486716, 0.885275, 0.483065, 0.884514, 0.479734, 0.882826, 0.476949, 0.880325, 0.474901, 0.877183, 0.473728, 0.873612, 0.473512, 0.869857, 0.474266, 0.866173, 0.475939, 0.862812, 0.478417, 0.860002, 0.481532, 0.857936, 0.485071, 0.856753, 0.48976, 0.843143, 0.496812, 0.844613, 0.503248, 0.847874, 0.508628, 0.852705, 0.512585, 0.858776, 0.51485, 0.865674, 0.515269, 0.872928, 0.513812, 0.880044, 0.51058, 0.886537, 0.505792, 0.891965, 0.499775, 0.895958, 0.492939, 0.898244, 0.485749, 0.898666, 0.478696, 0.897196, 0.47226, 0.893935, 0.46688, 0.889104, 0.462923, 0.883033, 0.460658, 0.876135, 0.46024, 0.868881, 0.461696, 0.861765, 0.464929, 0.855271, 0.469716, 0.849843, 0.475734, 0.845851, 0.48257, 0.843565, 0.49059, 0.831644, 0.500565, 0.833722, 0.509666, 0.838334, 0.517274, 0.845166, 0.522871, 0.853752, 0.526074, 0.863507, 0.526666, 0.873766, 0.524606, 0.88383, 0.520035, 0.893013, 0.513263, 0.900689, 0.504754, 0.906336, 0.495086, 0.909568, 0.484918, 0.910165, 0.474944, 0.908087, 0.465842, 0.903474, 0.458234, 0.896643, 0.452638, 0.888057, 0.449435, 0.878302, 0.448843, 0.868043, 0.450903, 0.857979, 0.455474, 0.848796, 0.462245, 0.84112, 0.470754, 0.835473, 0.480422, 0.832241, 0.491228, 0.82282, 0.503444, 0.825366, 0.514591, 0.831015, 0.523909, 0.839382, 0.530763, 0.849897, 0.534686, 0.861844, 0.535411, 0.874409, 0.532888, 0.886735, 0.527289, 0.897981, 0.518997, 0.907383, 0.508575, 0.914299, 0.496734, 0.918257, 0.484281, 0.918989, 0.472065, 0.916443, 0.460918, 0.910794, 0.4516, 0.902427, 0.444746, 0.891912, 0.440822, 0.879964, 0.440098, 0.8674, 0.44262, 0.855074, 0.448219, 0.843827, 0.456512, 0.834426, 0.466934, 0.82751, 0.478775, 0.823552, 0.491628, 0.817273, 0.505253, 0.820112, 0.517686, 0.826413, 0.528079, 0.835745, 0.535724, 0.847474, 0.5401, 0.860799, 0.540908, 0.874813, 0.538094, 0.888561, 0.53185, 0.901105, 0.522601, 0.911591, 0.510976, 0.919305, 0.49777, 0.92372, 0.48388, 0.924535, 0.470255, 0.921696, 0.457822, 0.915396, 0.447429, 0.906063, 0.439784, 0.894335, 0.435409, 0.88101, 0.4346, 0.866996, 0.437414, 0.853248, 0.443658, 0.840704, 0.452908, 0.830218, 0.464532, 0.822504, 0.477739, 0.818089, 0.491765, 0.815382, 0.505871, 0.818321, 0.518742, 0.824843, 0.529502, 0.834505, 0.537416, 0.846647, 0.541946, 0.860443, 0.542783, 0.874951, 0.53987, 0.889184, 0.533406, 0.90217, 0.52383, 0.913026, 0.511796, 0.921012, 0.498123, 0.925583, 0.483744, 0.926427, 0.469638, 0.923488, 0.456766, 0.916965, 0.446007, 0.907304, 0.438092, 0.895161, 0.433562, 0.881366, 0.432725, 0.866858, 0.435638, 0.852625, 0.442103, 0.839639, 0.451679, 0.828782, 0.463713, 0.820797, 0.477386, 0.816226, 0.491765, 0.815382, 0.505871, 0.818321, 0.518742, 0.824843, 0.529502, 0.834505, 0.537416, 0.846647, 0.541946, 0.860443, 0.542783, 0.874951, 0.53987, 0.889184, 0.533406, 0.90217, 0.52383, 0.913026, 0.511796, 0.921012, 0.498123, 0.925583, 0.483744, 0.926427, 0.469638, 0.923488, 0.456766, 0.916965, 0.446007, 0.907304, 0.438092, 0.895161, 0.433562, 0.881366, 0.432725, 0.866858, 0.435638, 0.852625, 0.442103, 0.839639, 0.451679, 0.828782, 0.463713, 0.820797, 0.477386, 0.816226, 0.49437, 0.884694, 0.502898, 0.872018, 0.481138, 0.857115, 0.47261, 0.869791, 0.479226, 0.88358, 0.496282, 0.858229, 0.49437, 0.884694, 0.502898, 0.872018, 0.481138, 0.857115, 0.47261, 0.869791, 0.479226, 0.88358, 0.496282, 0.858229, 0.47874, 0.86068, 0.475009, 0.866226, 0.475009, 0.866226, 0.47874, 0.86068, 0.474471, 0.873669, 0.477366, 0.879702, 0.477366, 0.879702, 0.474471, 0.873669, 0.492023, 0.857916, 0.485397, 0.857428, 0.485397, 0.857428, 0.492023, 0.857916, 0.483485, 0.883893, 0.490111, 0.884381, 0.490111, 0.884381, 0.483485, 0.883893, 0.496769, 0.881129, 0.5005, 0.875583, 0.5005, 0.875583, 0.496769, 0.881129, 0.501037, 0.86814, 0.498143, 0.862107, 0.498143, 0.862107, 0.501037, 0.86814, 0.493801, 0.871349, 0.493481, 0.872913, 0.49277, 0.87434, 0.491718, 0.875533, 0.490396, 0.87641, 0.488893, 0.876912, 0.487314, 0.877005, 0.485764, 0.876682, 0.484349, 0.875965, 0.483167, 0.874904, 0.482298, 0.87357, 0.4818, 0.872054, 0.481708, 0.87046, 0.491159, 0.865843, 0.492341, 0.866905, 0.493211, 0.868239, 0.493709, 0.869755, 0.489745, 0.865127, 0.488195, 0.864804, 0.486615, 0.864897, 0.485113, 0.865399, 0.48379, 0.866276, 0.482738, 0.867469, 0.482028, 0.868896, 0.487755, 0.870889, 0.487751, 0.870889, 0.487757, 0.87092, 0.487761, 0.870919, 0.487742, 0.870915, 0.487745, 0.870918, 0.487766, 0.870894, 0.487768, 0.870898, 0.487763, 0.870891, 0.487753, 0.87092, 0.487769, 0.87091, 0.48777, 0.870901, 0.48777, 0.870906, 0.487767, 0.870913, 0.487764, 0.870916, 0.487759, 0.870889, 0.487749, 0.870919, 0.487747, 0.87089, 0.487744, 0.870892, 0.48774, 0.870911, 0.487741, 0.870896, 0.487739, 0.870907, 0.487739, 0.870899, 0.487739, 0.870903, 0.574415, 0.099104, 0.515838, 0.0947965, 0.515838, 0.0947965, 0.574415, 0.099104, 0.579453, 0.0293677, 0.579453, 0.0293676, 0.520875, 0.0250601, 0.520875, 0.0250601, 0.574604, 0.0290111, 0.525724, 0.0254166, 0.569567, 0.0987475, 0.567878, 0.0986235, 0.572915, 0.0288869, 0.567874, 0.0285162, 0.554013, 0.0274968, 0.527413, 0.0255408, 0.522376, 0.0952774, 0.520687, 0.095153, 0.527417, 0.0956481, 0.556361, 0.0977767, 0.562837, 0.0982528, 0.561399, 0.02804, 0.548975, 0.0972334, 0.546315, 0.0269308, 0.541278, 0.0966674, 0.53893, 0.0263876, 0.533892, 0.0961243, 0.532454, 0.0259115, 0.908408, 0.123665, 0.913446, 0.0539285, 0.908408, 0.123665, 0.913446, 0.0539285, 0.850322, 0.119394, 0.855359, 0.0496571, 0.850322, 0.119394, 0.855359, 0.0496571, 0.885011, 0.0891483, 0.885336, 0.0846575, 0.878756, 0.0841738, 0.878432, 0.0886645, 0.879787, 0.567605, 0.885338, 0.490754, 0.879787, 0.567605, 0.885338, 0.490754, 0.806528, 0.562218, 0.812079, 0.485367, 0.806528, 0.562218, 0.812079, 0.485367, 0.849714, 0.532492, 0.850544, 0.520991, 0.842159, 0.520375, 0.841329, 0.531876, 0.686241, 0.735083, 0.690356, 0.678116, 0.686241, 0.735083, 0.690356, 0.678116, 0.614672, 0.729821, 0.618787, 0.672853, 0.614672, 0.729821, 0.618787, 0.672853, 0.656279, 0.707828, 0.656794, 0.700701, 0.648749, 0.700109, 0.648235, 0.707236, 0.315227, 0.7078, 0.319342, 0.650833, 0.315227, 0.7078, 0.319342, 0.650833, 0.386796, 0.713063, 0.390911, 0.656096, 0.386796, 0.713063, 0.390911, 0.656096, 0.34879, 0.685216, 0.349304, 0.678089, 0.357349, 0.67868, 0.356834, 0.685808, 0.146368, 0.513672, 0.151919, 0.436821, 0.146368, 0.513672, 0.151919, 0.436821, 0.219627, 0.51906, 0.225178, 0.442208, 0.219627, 0.51906, 0.225178, 0.442208, 0.181169, 0.48333, 0.182, 0.471829, 0.190385, 0.472445, 0.189554, 0.483947, 0.181845, 0.0702361, 0.186882, 0.000499547, 0.181845, 0.0702361, 0.186882, 0.000499547, 0.239931, 0.0745076, 0.244969, 0.00477099, 0.239931, 0.0745076, 0.244969, 0.00477099, 0.209955, 0.039507, 0.21028, 0.0350162, 0.216859, 0.0355, 0.216534, 0.0399908]; + indices = new [48, 3, 0, 3, 48, 52, 0, 4, 1, 4, 0, 3, 1, 5, 2, 5, 1, 4, 2, 52, 48, 52, 2, 5, 52, 54, 3, 54, 52, 43, 3, 55, 4, 55, 3, 54, 4, 53, 5, 53, 4, 55, 6, 22, 7, 22, 6, 21, 7, 23, 8, 23, 7, 22, 8, 24, 9, 24, 8, 23, 9, 25, 10, 25, 9, 24, 10, 26, 11, 26, 10, 25, 11, 27, 12, 27, 11, 26, 12, 28, 13, 28, 12, 27, 13, 29, 14, 29, 13, 28, 30, 14, 29, 14, 30, 49, 52, 49, 30, 49, 44, 48, 50, 48, 44, 48, 50, 46, 51, 46, 50, 46, 51, 45, 45, 47, 15, 47, 45, 51, 15, 31, 16, 31, 15, 47, 32, 16, 31, 16, 32, 17, 67, 34, 18, 34, 67, 33, 18, 35, 19, 35, 18, 34, 19, 36, 20, 36, 19, 35, 20, 21, 6, 21, 20, 36, 21, 41, 22, 41, 21, 37, 22, 38, 23, 38, 22, 41, 38, 24, 23, 24, 41, 25, 41, 24, 38, 25, 55, 26, 55, 25, 41, 26, 54, 27, 54, 26, 55, 27, 39, 28, 39, 27, 54, 39, 29, 28, 54, 29, 39, 54, 30, 29, 43, 30, 54, 42, 50, 52, 42, 51, 50, 53, 51, 42, 40, 51, 53, 40, 47, 51, 47, 53, 31, 53, 47, 40, 55, 31, 53, 55, 32, 31, 41, 32, 55, 32, 112, 102, 112, 32, 41, 112, 33, 111, 33, 112, 34, 34, 41, 35, 41, 34, 112, 35, 37, 36, 37, 35, 41, 37, 21, 36, 52, 30, 43, 42, 5, 53, 5, 42, 52, 102, 17, 32, 128, 17, 102, 86, 17, 128, 56, 33, 67, 33, 56, 65, 57, 65, 56, 65, 57, 58, 59, 58, 57, 58, 59, 60, 60, 61, 62, 61, 60, 59, 62, 64, 66, 62, 63, 64, 62, 61, 63, 63, 142, 64, 142, 63, 141, 33, 65, 111, 65, 58, 111, 58, 60, 111, 60, 62, 111, 62, 66, 111, 66, 142, 111, 120, 71, 124, 71, 120, 68, 68, 72, 71, 72, 68, 69, 69, 73, 72, 73, 69, 70, 70, 124, 73, 124, 70, 120, 124, 126, 115, 126, 124, 71, 71, 127, 126, 127, 71, 72, 72, 125, 127, 125, 72, 73, 74, 91, 90, 91, 74, 75, 75, 92, 91, 92, 75, 76, 76, 93, 92, 93, 76, 77, 77, 94, 93, 94, 77, 78, 78, 95, 94, 95, 78, 79, 79, 96, 95, 96, 79, 80, 80, 97, 96, 97, 80, 81, 81, 98, 97, 98, 81, 82, 99, 82, 121, 82, 99, 98, 124, 99, 121, 121, 120, 116, 122, 120, 118, 120, 122, 116, 123, 118, 117, 118, 123, 122, 117, 83, 119, 119, 123, 117, 83, 100, 119, 100, 83, 84, 101, 84, 85, 84, 101, 100, 140, 104, 103, 104, 140, 87, 87, 105, 104, 105, 87, 88, 88, 106, 105, 106, 88, 89, 89, 90, 106, 90, 89, 74, 90, 113, 107, 113, 90, 91, 91, 108, 113, 108, 91, 92, 108, 92, 93, 93, 113, 108, 113, 93, 94, 94, 127, 113, 127, 94, 95, 95, 126, 127, 126, 95, 96, 96, 109, 126, 109, 96, 97, 109, 97, 98, 98, 126, 109, 99, 126, 98, 115, 126, 99, 114, 124, 122, 123, 114, 122, 123, 125, 114, 110, 125, 123, 110, 123, 119, 119, 125, 110, 125, 119, 100, 100, 127, 125, 101, 127, 100, 113, 127, 101, 101, 112, 113, 112, 101, 102, 112, 103, 104, 103, 112, 111, 104, 113, 112, 113, 104, 105, 105, 107, 113, 107, 105, 106, 107, 106, 90, 124, 115, 99, 114, 73, 124, 73, 114, 125, 85, 102, 101, 85, 128, 102, 86, 128, 85, 129, 103, 138, 103, 129, 140, 130, 138, 131, 138, 130, 129, 132, 131, 133, 131, 132, 130, 133, 134, 132, 134, 133, 135, 135, 136, 134, 135, 137, 136, 135, 139, 137, 136, 142, 141, 142, 136, 137, 103, 111, 138, 138, 111, 131, 131, 111, 133, 133, 111, 135, 135, 111, 139, 139, 111, 142, 160, 143, 159, 143, 160, 144, 161, 144, 160, 144, 161, 145, 162, 145, 161, 145, 162, 146, 146, 163, 147, 163, 146, 162, 210, 212, 211, 212, 210, 213, 148, 165, 149, 165, 148, 164, 149, 166, 150, 166, 149, 165, 150, 167, 151, 167, 150, 166, 151, 168, 152, 168, 151, 167, 152, 169, 153, 169, 152, 168, 153, 170, 154, 170, 153, 169, 154, 171, 155, 171, 154, 170, 155, 172, 156, 172, 155, 171, 156, 173, 157, 173, 156, 172, 157, 174, 158, 174, 157, 173, 158, 159, 143, 159, 158, 174, 189, 159, 175, 176, 159, 189, 176, 160, 159, 217, 160, 176, 198, 160, 217, 198, 161, 160, 216, 161, 198, 215, 161, 216, 215, 162, 161, 215, 209, 162, 162, 209, 163, 210, 214, 213, 164, 177, 165, 177, 164, 215, 165, 178, 166, 178, 165, 177, 178, 167, 166, 167, 177, 168, 177, 167, 178, 168, 179, 169, 179, 168, 177, 179, 170, 169, 170, 177, 171, 177, 170, 179, 171, 180, 172, 180, 171, 177, 172, 189, 173, 189, 172, 180, 173, 175, 174, 175, 173, 189, 175, 159, 174, 181, 186, 182, 186, 181, 185, 182, 187, 183, 187, 182, 186, 183, 188, 184, 188, 183, 187, 184, 185, 181, 185, 184, 188, 185, 189, 186, 189, 185, 176, 186, 180, 187, 180, 186, 189, 187, 217, 188, 217, 187, 180, 188, 176, 185, 176, 188, 217, 190, 195, 191, 195, 190, 194, 191, 196, 192, 196, 191, 195, 192, 197, 193, 197, 192, 196, 193, 194, 190, 194, 193, 197, 194, 216, 195, 216, 194, 180, 195, 198, 196, 198, 195, 216, 196, 217, 197, 217, 196, 198, 197, 180, 194, 180, 197, 217, 199, 204, 200, 204, 199, 203, 200, 205, 201, 205, 200, 204, 201, 206, 202, 206, 201, 205, 202, 203, 199, 203, 202, 206, 203, 215, 204, 215, 203, 177, 204, 216, 205, 216, 204, 215, 205, 180, 206, 180, 205, 216, 206, 177, 203, 177, 206, 180, 208, 148, 207, 148, 208, 164, 209, 164, 208, 164, 209, 215, 211, 163, 210, 163, 211, 147, 213, 207, 212, 207, 213, 208, 214, 208, 213, 208, 214, 209, 210, 209, 214, 209, 210, 163, 235, 218, 219, 218, 235, 234, 236, 219, 220, 219, 236, 235, 237, 220, 221, 220, 237, 236, 221, 238, 237, 238, 221, 222, 285, 287, 288, 287, 285, 286, 223, 240, 239, 240, 223, 224, 224, 241, 240, 241, 224, 225, 225, 242, 241, 242, 225, 226, 226, 243, 242, 243, 226, 227, 227, 244, 243, 244, 227, 228, 228, 245, 244, 245, 228, 229, 229, 246, 245, 246, 229, 230, 230, 247, 246, 247, 230, 231, 231, 248, 247, 248, 231, 232, 232, 249, 248, 249, 232, 233, 233, 234, 249, 234, 233, 218, 251, 234, 235, 234, 264, 250, 251, 264, 234, 273, 235, 236, 235, 292, 251, 273, 292, 235, 290, 237, 284, 290, 236, 237, 236, 291, 273, 290, 291, 236, 237, 238, 284, 285, 288, 289, 239, 252, 290, 252, 239, 240, 240, 253, 252, 253, 240, 241, 253, 241, 242, 242, 252, 253, 252, 242, 243, 243, 254, 252, 254, 243, 244, 254, 244, 245, 245, 252, 254, 252, 245, 246, 246, 0xFF, 252, 0xFF, 246, 247, 247, 264, 0xFF, 264, 247, 248, 248, 250, 264, 250, 248, 249, 250, 249, 234, 0x0100, 261, 260, 261, 0x0100, 0x0101, 0x0101, 262, 261, 262, 0x0101, 258, 258, 263, 262, 263, 258, 259, 259, 260, 263, 260, 259, 0x0100, 260, 264, 251, 264, 260, 261, 261, 0xFF, 264, 0xFF, 261, 262, 262, 292, 0xFF, 292, 262, 263, 263, 251, 292, 251, 263, 260, 265, 270, 269, 270, 265, 266, 266, 271, 270, 271, 266, 267, 267, 272, 271, 272, 267, 268, 268, 269, 272, 269, 268, 265, 269, 291, 0xFF, 291, 269, 270, 270, 273, 291, 273, 270, 271, 271, 292, 273, 292, 271, 272, 272, 0xFF, 292, 0xFF, 272, 269, 274, 279, 278, 279, 274, 275, 275, 280, 279, 280, 275, 276, 276, 281, 280, 281, 276, 277, 277, 278, 281, 278, 277, 274, 278, 290, 252, 290, 278, 279, 279, 291, 290, 291, 279, 280, 280, 0xFF, 291, 0xFF, 280, 281, 281, 252, 0xFF, 252, 281, 278, 283, 223, 239, 223, 283, 282, 284, 239, 290, 239, 284, 283, 286, 238, 222, 238, 286, 285, 288, 282, 283, 282, 288, 287, 289, 283, 284, 283, 289, 288, 285, 284, 238, 284, 285, 289, 294, 293, 295, 293, 294, 296, 299, 297, 298, 297, 300, 298, 300, 297, 301, 315, 340, 299, 340, 315, 316, 316, 317, 340, 318, 317, 316, 317, 319, 320, 318, 319, 317, 318, 321, 319, 339, 320, 322, 320, 339, 317, 339, 315, 299, 339, 325, 315, 322, 325, 339, 324, 325, 322, 324, 323, 325, 322, 319, 324, 319, 322, 320, 324, 321, 323, 321, 324, 319, 323, 318, 325, 318, 323, 321, 325, 316, 315, 316, 325, 318, 327, 326, 328, 327, 329, 326, 327, 330, 329, 327, 331, 330, 327, 332, 331, 327, 333, 332, 327, 334, 333, 327, 335, 334, 327, 336, 335, 327, 337, 336, 327, 338, 337, 327, 296, 313, 296, 327, 293, 301, 302, 300, 302, 301, 328, 317, 339, 295, 334, 310, 309, 310, 334, 335, 306, 332, 307, 332, 306, 331, 314, 327, 313, 327, 314, 338, 328, 303, 302, 303, 328, 326, 312, 338, 314, 338, 312, 337, 305, 331, 306, 331, 305, 330, 307, 333, 308, 333, 307, 332, 333, 309, 308, 309, 333, 334, 335, 311, 310, 311, 335, 336, 311, 337, 312, 337, 311, 336, 326, 304, 303, 304, 326, 329, 329, 305, 304, 305, 329, 330, 339, 294, 295, 298, 339, 299, 339, 298, 294, 297, 299, 340, 340, 301, 297, 301, 327, 328, 340, 327, 301, 317, 327, 340, 295, 327, 317, 295, 293, 327, 341, 342, 343, 341, 343, 344, 341, 344, 345, 341, 345, 346, 341, 346, 347, 341, 347, 348, 341, 348, 349, 341, 349, 350, 341, 350, 351, 341, 351, 352, 341, 352, 353, 341, 353, 354, 341, 354, 355, 341, 355, 356, 341, 356, 357, 341, 357, 358, 341, 358, 359, 341, 359, 360, 341, 360, 361, 341, 361, 362, 341, 362, 363, 341, 363, 364, 341, 364, 365, 341, 365, 342, 367, 342, 366, 342, 367, 343, 368, 343, 367, 343, 368, 344, 369, 344, 368, 344, 369, 345, 370, 345, 369, 345, 370, 346, 371, 346, 370, 346, 371, 347, 372, 347, 371, 347, 372, 348, 373, 348, 372, 348, 373, 349, 374, 349, 373, 349, 374, 350, 375, 350, 374, 350, 375, 351, 376, 351, 375, 351, 376, 352, 377, 352, 376, 352, 377, 353, 378, 353, 377, 353, 378, 354, 379, 354, 378, 354, 379, 355, 380, 355, 379, 355, 380, 356, 381, 356, 380, 356, 381, 357, 382, 357, 381, 357, 382, 358, 383, 358, 382, 358, 383, 359, 384, 359, 383, 359, 384, 360, 385, 360, 384, 360, 385, 361, 386, 361, 385, 361, 386, 362, 387, 362, 386, 362, 387, 363, 388, 363, 387, 363, 388, 364, 389, 364, 388, 364, 389, 365, 366, 365, 389, 365, 366, 342, 391, 366, 390, 366, 391, 367, 392, 367, 391, 367, 392, 368, 393, 368, 392, 368, 393, 369, 394, 369, 393, 369, 394, 370, 395, 370, 394, 370, 395, 371, 396, 371, 395, 371, 396, 372, 397, 372, 396, 372, 397, 373, 398, 373, 397, 373, 398, 374, 399, 374, 398, 374, 399, 375, 400, 375, 399, 375, 400, 376, 401, 376, 400, 376, 401, 377, 402, 377, 401, 377, 402, 378, 403, 378, 402, 378, 403, 379, 404, 379, 403, 379, 404, 380, 405, 380, 404, 380, 405, 381, 406, 381, 405, 381, 406, 382, 407, 382, 406, 382, 407, 383, 408, 383, 407, 383, 408, 384, 409, 384, 408, 384, 409, 385, 410, 385, 409, 385, 410, 386, 411, 386, 410, 386, 411, 387, 412, 387, 411, 387, 412, 388, 413, 388, 412, 388, 413, 389, 390, 389, 413, 389, 390, 366, 415, 390, 414, 390, 415, 391, 416, 391, 415, 391, 416, 392, 417, 392, 416, 392, 417, 393, 418, 393, 417, 393, 418, 394, 419, 394, 418, 394, 419, 395, 420, 395, 419, 395, 420, 396, 421, 396, 420, 396, 421, 397, 422, 397, 421, 397, 422, 398, 423, 398, 422, 398, 423, 399, 424, 399, 423, 399, 424, 400, 425, 400, 424, 400, 425, 401, 426, 401, 425, 401, 426, 402, 427, 402, 426, 402, 427, 403, 428, 403, 427, 403, 428, 404, 429, 404, 428, 404, 429, 405, 430, 405, 429, 405, 430, 406, 431, 406, 430, 406, 431, 407, 432, 407, 431, 407, 432, 408, 433, 408, 432, 408, 433, 409, 434, 409, 433, 409, 434, 410, 435, 410, 434, 410, 435, 411, 436, 411, 435, 411, 436, 412, 437, 412, 436, 412, 437, 413, 414, 413, 437, 413, 414, 390, 439, 414, 438, 414, 439, 415, 440, 415, 439, 415, 440, 416, 441, 416, 440, 416, 441, 417, 442, 417, 441, 417, 442, 418, 443, 418, 442, 418, 443, 419, 444, 419, 443, 419, 444, 420, 445, 420, 444, 420, 445, 421, 446, 421, 445, 421, 446, 422, 447, 422, 446, 422, 447, 423, 448, 423, 447, 423, 448, 424, 449, 424, 448, 424, 449, 425, 450, 425, 449, 425, 450, 426, 451, 426, 450, 426, 451, 427, 452, 427, 451, 427, 452, 428, 453, 428, 452, 428, 453, 429, 454, 429, 453, 429, 454, 430, 455, 430, 454, 430, 455, 431, 456, 431, 455, 431, 456, 432, 457, 432, 456, 432, 457, 433, 458, 433, 457, 433, 458, 434, 459, 434, 458, 434, 459, 435, 460, 435, 459, 435, 460, 436, 461, 436, 460, 436, 461, 437, 438, 437, 461, 437, 438, 414, 463, 438, 462, 438, 463, 439, 464, 439, 463, 439, 464, 440, 465, 440, 464, 440, 465, 441, 466, 441, 465, 441, 466, 442, 467, 442, 466, 442, 467, 443, 468, 443, 467, 443, 468, 444, 469, 444, 468, 444, 469, 445, 470, 445, 469, 445, 470, 446, 471, 446, 470, 446, 471, 447, 472, 447, 471, 447, 472, 448, 473, 448, 472, 448, 473, 449, 474, 449, 473, 449, 474, 450, 475, 450, 474, 450, 475, 451, 476, 451, 475, 451, 476, 452, 477, 452, 476, 452, 477, 453, 478, 453, 477, 453, 478, 454, 479, 454, 478, 454, 479, 455, 480, 455, 479, 455, 480, 456, 481, 456, 480, 456, 481, 457, 482, 457, 481, 457, 482, 458, 483, 458, 482, 458, 483, 459, 484, 459, 483, 459, 484, 460, 485, 460, 484, 460, 485, 461, 462, 461, 485, 461, 462, 438, 463, 486, 487, 486, 463, 462, 464, 487, 488, 487, 464, 463, 465, 488, 489, 488, 465, 464, 466, 489, 490, 489, 466, 465, 467, 490, 491, 490, 467, 466, 468, 491, 492, 491, 468, 467, 469, 492, 493, 492, 469, 468, 470, 493, 494, 493, 470, 469, 471, 494, 495, 494, 471, 470, 472, 495, 496, 495, 472, 471, 473, 496, 497, 496, 473, 472, 474, 497, 498, 497, 474, 473, 475, 498, 499, 498, 475, 474, 476, 499, 500, 499, 476, 475, 477, 500, 501, 500, 477, 476, 478, 501, 502, 501, 478, 477, 479, 502, 503, 502, 479, 478, 480, 503, 504, 503, 480, 479, 481, 504, 505, 504, 481, 480, 482, 505, 506, 505, 482, 481, 483, 506, 507, 506, 483, 482, 484, 507, 508, 507, 484, 483, 485, 508, 509, 508, 485, 484, 462, 509, 486, 509, 462, 485, 518, 523, 522, 523, 518, 519, 519, 524, 523, 524, 519, 513, 513, 525, 524, 525, 513, 0x0200, 0x0200, 522, 525, 522, 0x0200, 518, 519, 527, 526, 527, 519, 520, 520, 528, 527, 528, 520, 0x0202, 0x0202, 529, 528, 529, 0x0202, 513, 513, 526, 529, 526, 513, 519, 521, 531, 530, 531, 521, 518, 518, 532, 531, 532, 518, 0x0200, 0x0200, 533, 532, 533, 0x0200, 515, 515, 530, 533, 530, 515, 521, 520, 535, 534, 535, 520, 516, 516, 536, 535, 536, 516, 510, 510, 537, 536, 537, 510, 0x0202, 0x0202, 534, 537, 534, 0x0202, 520, 516, 539, 538, 539, 516, 517, 517, 540, 539, 540, 517, 511, 511, 541, 540, 541, 511, 510, 510, 538, 541, 538, 510, 516, 517, 543, 542, 543, 517, 521, 521, 544, 543, 544, 521, 515, 515, 545, 544, 545, 515, 511, 511, 542, 545, 542, 511, 517, 519, 516, 520, 516, 521, 517, 519, 521, 516, 518, 521, 519, 565, 570, 571, 570, 565, 564, 550, 572, 573, 572, 550, 551, 554, 574, 575, 574, 554, 555, 561, 576, 560, 576, 561, 577, 559, 576, 578, 576, 559, 560, 551, 579, 572, 579, 551, 552, 580, 581, 582, 583, 581, 580, 583, 577, 581, 584, 577, 583, 584, 576, 577, 573, 576, 584, 573, 578, 576, 572, 578, 573, 572, 585, 578, 579, 585, 572, 579, 570, 585, 586, 570, 579, 586, 571, 570, 575, 571, 586, 575, 587, 571, 574, 587, 575, 574, 588, 587, 589, 588, 574, 589, 590, 588, 591, 590, 589, 591, 592, 590, 591, 593, 592, 549, 573, 584, 573, 549, 550, 590, 569, 568, 569, 590, 592, 589, 557, 591, 557, 589, 556, 566, 571, 587, 571, 566, 565, 553, 575, 586, 575, 553, 554, 588, 568, 567, 568, 588, 590, 564, 585, 570, 585, 564, 563, 593, 569, 592, 569, 593, 558, 552, 586, 579, 586, 552, 553, 548, 584, 583, 584, 548, 549, 563, 578, 585, 578, 563, 559, 562, 577, 561, 577, 562, 581, 546, 581, 562, 581, 546, 582, 567, 587, 588, 587, 567, 566, 546, 580, 582, 580, 546, 547, 547, 583, 580, 583, 547, 548, 574, 556, 589, 556, 574, 555, 591, 558, 593, 558, 591, 557, 601, 596, 595, 596, 601, 600, 599, 594, 597, 594, 599, 598, 602, 597, 604, 597, 602, 599, 596, 603, 611, 603, 596, 600, 614, 606, 605, 606, 614, 607, 607, 613, 615, 613, 607, 614, 608, 613, 616, 613, 608, 615, 617, 616, 618, 616, 617, 608, 617, 620, 619, 620, 617, 618, 621, 620, 612, 620, 621, 619, 621, 610, 609, 610, 621, 612, 597, 611, 604, 611, 595, 596, 611, 594, 595, 597, 594, 611, 602, 598, 599, 602, 601, 598, 601, 603, 600, 602, 603, 601, 602, 605, 606, 605, 602, 604, 609, 619, 621, 603, 619, 609, 619, 608, 617, 603, 608, 619, 603, 615, 608, 603, 607, 615, 603, 606, 607, 602, 606, 603, 610, 603, 609, 603, 610, 611, 604, 614, 605, 604, 613, 614, 604, 616, 613, 604, 618, 616, 604, 620, 618, 604, 612, 620, 604, 610, 612, 611, 610, 604, 622, 625, 623, 625, 622, 624, 626, 629, 628, 629, 626, 627, 623, 629, 627, 629, 623, 625, 631, 633, 632, 633, 631, 630, 624, 626, 628, 626, 624, 622, 624, 631, 625, 631, 624, 630, 625, 632, 629, 632, 625, 631, 629, 633, 628, 633, 629, 632, 628, 630, 624, 630, 628, 633, 634, 637, 635, 637, 634, 636, 638, 641, 640, 641, 638, 639, 635, 641, 639, 641, 635, 637, 643, 645, 644, 645, 643, 642, 636, 638, 640, 638, 636, 634, 636, 643, 637, 643, 636, 642, 637, 644, 641, 644, 637, 643, 641, 645, 640, 645, 641, 644, 640, 642, 636, 642, 640, 645, 646, 649, 647, 649, 646, 648, 650, 653, 652, 653, 650, 651, 647, 653, 651, 653, 647, 649, 655, 657, 656, 657, 655, 654, 648, 650, 652, 650, 648, 646, 648, 655, 649, 655, 648, 654, 649, 656, 653, 656, 649, 655, 653, 657, 652, 657, 653, 656, 652, 654, 648, 654, 652, 657, 658, 661, 660, 661, 658, 659, 662, 665, 663, 665, 662, 664, 659, 665, 661, 665, 659, 663, 667, 669, 666, 669, 667, 668, 660, 662, 658, 662, 660, 664, 660, 667, 666, 667, 660, 661, 661, 668, 667, 668, 661, 665, 665, 669, 668, 669, 665, 664, 664, 666, 669, 666, 664, 660, 670, 673, 672, 673, 670, 671, 674, 677, 675, 677, 674, 676, 671, 677, 673, 677, 671, 675, 679, 681, 678, 681, 679, 680, 672, 674, 670, 674, 672, 676, 672, 679, 678, 679, 672, 673, 673, 680, 679, 680, 673, 677, 677, 681, 680, 681, 677, 676, 676, 678, 681, 678, 676, 672, 682, 685, 684, 685, 682, 683, 686, 689, 687, 689, 686, 688, 683, 689, 685, 689, 683, 687, 691, 693, 690, 693, 691, 692, 684, 686, 682, 686, 684, 688, 684, 691, 690, 691, 684, 685, 685, 692, 691, 692, 685, 689, 689, 693, 692, 693, 689, 688, 688, 690, 693, 690, 688, 684]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/NotreDame.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/NotreDame.as new file mode 100644 index 0000000..a1296b3 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/NotreDame.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class NotreDame extends Stage3DData { + + public function NotreDame(){ + vertices = new [-210.238, 264.749, 124.156, -150.831, 264.749, 95.7974, -181.88, 264.749, 183.563, -122.472, 264.749, 155.204, -210.238, -0.738464, 124.156, -150.831, -0.738464, 95.7974, -181.88, -0.738464, 183.563, -122.472, -0.738464, 155.204, -210.238, 89.2457, 124.156, -181.88, 89.2457, 183.563, -189.374, -0.738464, 187.14, -217.732, -0.738464, 127.733, -217.732, 89.2457, 127.733, -189.374, 89.2457, 187.14, -210.238, 188.522, 124.156, -150.831, 188.522, 95.7974, -122.472, 188.522, 155.204, -181.88, 188.522, 183.563, -196.059, 264.749, 153.859, -196.059, 188.522, 153.859, -180.534, 264.749, 109.977, -180.534, 188.522, 109.977, -136.652, 264.749, 125.501, -136.652, 188.522, 125.501, -152.176, 264.749, 169.384, -152.176, 188.522, 169.384, -202.275, 245.388, 120.354, -202.275, 189.558, 120.354, -188.498, 189.558, 113.778, -188.498, 245.388, 113.778, -147.03, 245.388, 103.761, -147.03, 189.558, 103.761, -140.453, 189.558, 117.538, -140.453, 245.388, 117.538, -130.436, 245.388, 159.006, -130.436, 189.558, 159.006, -144.213, 189.558, 165.582, -144.213, 245.388, 165.582, -185.681, 245.388, 175.6, -185.681, 189.558, 175.6, -192.257, 189.558, 161.823, -192.257, 245.388, 161.823, -199.86, 189.558, 145.896, -206.437, 189.558, 132.119, -206.437, 245.388, 132.119, -199.86, 245.388, 145.896, -172.571, 189.558, 106.175, -158.794, 189.558, 99.5988, -158.794, 245.388, 99.5988, -172.571, 245.388, 106.175, -132.85, 189.558, 133.464, -126.274, 189.558, 147.241, -126.274, 245.388, 147.241, -132.85, 245.388, 133.464, -160.139, 189.558, 173.185, -173.916, 189.558, 179.762, -173.916, 245.388, 179.762, -160.139, 245.388, 173.185, -196.856, 242.015, 123.875, -196.856, 192.931, 123.875, -189.168, 192.931, 120.205, -189.168, 242.015, 120.205, -150.55, 242.015, 109.18, -150.55, 192.931, 109.18, -146.88, 192.931, 116.868, -146.88, 242.015, 116.868, -135.855, 242.015, 155.485, -135.855, 192.931, 155.485, -143.543, 192.931, 159.155, -143.543, 242.015, 159.155, -182.16, 242.015, 170.181, -182.16, 192.931, 170.181, -185.83, 192.931, 162.493, -185.83, 242.015, 162.493, -196.339, 192.931, 140.477, -200.009, 192.931, 132.789, -200.009, 242.015, 132.789, -196.339, 242.015, 140.477, -167.152, 192.931, 109.696, -159.464, 192.931, 106.026, -159.464, 242.015, 106.026, -167.152, 242.015, 109.696, -136.371, 192.931, 138.883, -132.701, 192.931, 146.571, -132.701, 242.015, 146.571, -136.371, 242.015, 138.883, -165.558, 192.931, 169.664, -173.246, 192.931, 173.334, -173.246, 242.015, 173.334, -165.558, 242.015, 169.664, -195.386, 253.257, 117.066, -143.741, 253.257, 110.649, -137.324, 253.257, 162.294, -188.969, 253.257, 168.711, -203.148, 253.257, 139.008, -165.683, 253.257, 102.887, -129.562, 253.257, 140.353, -167.028, 253.257, 176.473, -193.012, 249.883, 122.04, -148.715, 249.883, 113.024, -139.699, 249.883, 157.32, -183.995, 249.883, 166.337, -198.174, 249.883, 136.633, -163.308, 249.883, 107.861, -134.536, 249.883, 142.727, -169.402, 249.883, 171.499, 27.9884, 0, 91.8363, -53.8061, 0, -79.5119, -4.70819, 0, -102.949, 77.0864, 0, 68.3989, 27.9884, 151.097, 91.8363, -53.8061, 151.097, -79.5119, -4.70819, 151.097, -102.949, 77.0864, 151.097, 68.3989, -29.2572, 186.535, -91.2306, 52.5374, 186.535, 80.1176, 182.89, -0.738495, 18.3095, -123.287, -0.738495, 164.466, -205.405, -0.738495, -7.56137, 100.771, -0.738495, -153.717, 149.285, -0.738495, -162.589, 194.431, -0.738495, -146.618, 226.984, -0.738495, -108.353, 236.266, -0.738495, -58.9787, 220.295, -0.738495, -13.8331, 182.89, 47.3592, 18.3095, -123.287, 47.3592, 164.466, -205.405, 47.3592, -7.56139, 100.771, 47.3592, -153.717, 149.285, 47.3592, -162.589, 194.431, 47.3592, -146.618, 226.984, 47.3592, -108.353, 236.266, 47.3592, -58.9787, 220.295, 47.3592, -13.8331, 161.036, 47.3592, -15.2198, -140.378, 47.3592, 128.663, -188.315, 47.3592, 28.2414, 113.099, 47.3592, -115.641, 146.021, 47.3592, -121.662, 171.232, 47.3592, -112.743, 191.181, 47.3592, -91.2619, 195.338, 47.3592, -62.2425, 186.42, 47.3592, -37.032, 161.036, 84.1205, -15.2198, -140.378, 84.1205, 128.663, -188.315, 84.1205, 28.2414, 113.099, 84.1205, -115.641, 146.021, 84.1205, -121.662, 171.232, 84.1205, -112.743, 191.181, 84.1205, -91.2619, 195.338, 84.1205, -62.2425, 186.42, 84.1205, -37.032, 145.373, 84.1205, -39.252, -152.628, 84.1205, 103.001, -176.065, 84.1205, 53.9032, 121.935, 84.1205, -88.3499, 143.682, 84.1205, -92.3267, 155.155, 84.1205, -88.268, 164.294, 84.1205, -78.4271, 166.198, 84.1205, -65.1328, 162.14, 84.1205, -53.6599, 145.373, 151.097, -39.252, -152.628, 151.097, 103.001, -176.065, 151.097, 53.9032, 121.935, 151.097, -88.3499, 143.682, 151.097, -92.3267, 155.155, 151.097, -88.268, 164.294, 151.097, -78.4271, 166.198, 151.097, -65.1328, 162.14, 151.097, -53.6599, -164.346, 186.535, 78.4521, 133.654, 186.535, -63.8009, 20.0979, 0, -9.6071, 20.4753, 0, -2.44853, 15.6803, 0, 2.88022, 8.52168, 0, 3.25761, 3.19296, 0, -1.53738, 2.81552, 0, -8.69597, 7.61055, 0, -14.0247, 14.7691, 0, -14.4021, 20.0979, 236.179, -9.60709, 20.4753, 236.179, -2.44852, 15.6803, 236.179, 2.88023, 8.52168, 236.179, 3.25763, 3.19295, 236.179, -1.53737, 2.81552, 236.179, -8.69595, 7.61055, 236.179, -14.0247, 14.7691, 236.179, -14.4021, 11.6454, 335.96, -5.57224, -144.957, 264.749, 129.465, -144.001, 264.749, 147.588, -156.141, 264.749, 161.079, -174.263, 264.749, 162.034, -187.754, 264.749, 149.895, -188.709, 264.749, 131.772, -176.57, 264.749, 118.282, -158.447, 264.749, 117.326, -164.893, 282.531, 138.982, -164.827, 282.531, 140.221, -165.657, 282.531, 141.143, -166.896, 282.531, 141.208, -167.818, 282.531, 140.378, -167.883, 282.531, 139.14, -167.053, 282.531, 138.218, -165.815, 282.531, 138.152, -166.355, 326.085, 139.68, -191.818, 264.749, 31.2969, -190.863, 264.749, 49.4196, -203.002, 264.749, 62.91, -221.125, 264.749, 63.8654, -234.615, 264.749, 51.7263, -235.571, 264.749, 33.6035, -223.432, 264.749, 20.1132, -205.309, 264.749, 19.1578, -211.754, 282.531, 40.8135, -211.689, 282.531, 42.052, -212.519, 282.531, 42.974, -213.757, 282.531, 43.0393, -214.679, 282.531, 42.2097, -214.745, 282.531, 40.9711, -213.915, 282.531, 40.0491, -212.676, 282.531, 39.9838, -213.217, 326.085, 41.5116, -117.07, 47.3592, 161.498, -113.091, 47.3592, 159.598, -126.558, 47.3592, 141.622, -122.579, 47.3592, 139.723, -117.07, 97.8178, 161.498, -113.091, 97.8178, 159.598, -126.558, 97.8178, 141.622, -122.579, 97.8178, 139.723, -146.998, 135.699, 98.8032, -143.019, 135.699, 96.9036, -143.019, 128.826, 96.9036, -146.998, 128.826, 98.8032, 159.076, 47.3592, 29.6771, 163.055, 47.3592, 27.7776, 149.588, 47.3592, 9.80133, 153.567, 47.3592, 7.90176, 159.076, 97.8178, 29.6771, 163.055, 97.8178, 27.7776, 149.588, 97.8178, 9.80133, 153.567, 97.8178, 7.90176, 129.148, 135.699, -33.0176, 133.127, 135.699, -34.9172, 133.127, 128.826, -34.9172, 129.148, 128.826, -33.0176, 139.242, 47.3592, 39.1452, 143.221, 47.3592, 37.2456, 129.754, 47.3592, 19.2694, 133.733, 47.3592, 17.3698, 139.242, 97.8178, 39.1452, 143.221, 97.8178, 37.2456, 129.754, 97.8178, 19.2694, 133.733, 97.8178, 17.3698, 109.314, 135.699, -23.5496, 113.293, 135.699, -25.4491, 113.293, 128.826, -25.4491, 109.314, 128.826, -23.5496, 119.408, 47.3592, 48.6132, 123.387, 47.3592, 46.7137, 109.92, 47.3592, 28.7374, 113.899, 47.3592, 26.8379, 119.408, 97.8178, 48.6132, 123.387, 97.8178, 46.7137, 109.92, 97.8178, 28.7374, 113.899, 97.8178, 26.8379, 89.4796, 135.699, -14.0815, 93.459, 135.699, -15.9811, 93.459, 128.826, -15.9811, 89.4796, 128.826, -14.0815, 99.5733, 47.3592, 58.0813, 103.553, 47.3592, 56.1817, 90.0854, 47.3592, 38.2055, 94.0647, 47.3592, 36.3059, 99.5733, 97.8178, 58.0813, 103.553, 97.8178, 56.1817, 90.0854, 97.8178, 38.2055, 94.0647, 97.8178, 36.3059, 69.6454, 135.699, -4.61348, 73.6247, 135.699, -6.51303, 73.6247, 128.826, -6.51303, 69.6454, 128.826, -4.61348, 1.93607, 47.3592, 104.689, 5.91537, 47.3592, 102.79, -7.55182, 47.3592, 84.8135, -3.57251, 47.3592, 82.9139, 1.93607, 97.8178, 104.689, 5.91537, 97.8178, 102.79, -7.55182, 97.8178, 84.8135, -3.57251, 97.8178, 82.9139, -27.9918, 135.699, 41.9945, -24.0125, 135.699, 40.095, -24.0125, 128.826, 40.095, -27.9918, 128.826, 41.9945, -17.8983, 47.3592, 114.157, -13.919, 47.3592, 112.258, -27.3862, 47.3592, 94.2816, -23.4069, 47.3592, 92.382, -17.8983, 97.8178, 114.157, -13.919, 97.8178, 112.258, -27.3862, 97.8178, 94.2816, -23.4069, 97.8178, 92.382, -47.8262, 135.699, 51.4626, -43.8469, 135.699, 49.5631, -43.8469, 128.826, 49.5631, -47.8262, 128.826, 51.4626, -37.7328, 47.3592, 123.626, -33.7534, 47.3592, 121.726, -47.2206, 47.3592, 103.75, -43.2413, 47.3592, 101.85, -37.7328, 97.8178, 123.626, -33.7534, 97.8178, 121.726, -47.2206, 97.8178, 103.75, -43.2413, 97.8178, 101.85, -67.6606, 135.699, 60.9308, -63.6813, 135.699, 59.0312, -63.6813, 128.826, 59.0312, -67.6606, 128.826, 60.9308, -57.5672, 47.3592, 133.094, -53.5878, 47.3592, 131.194, -67.055, 47.3592, 113.218, -63.0757, 47.3592, 111.318, -57.5672, 97.8178, 133.094, -53.5878, 97.8178, 131.194, -67.055, 97.8178, 113.218, -63.0757, 97.8178, 111.318, -87.495, 135.699, 70.3989, -83.5157, 135.699, 68.4993, -83.5157, 128.826, 68.4993, -87.495, 128.826, 70.3989, -77.4016, 47.3592, 142.562, -73.4223, 47.3592, 140.662, -86.8894, 47.3592, 122.686, -82.9101, 47.3592, 120.786, -77.4016, 97.8178, 142.562, -73.4223, 97.8178, 140.662, -86.8894, 97.8178, 122.686, -82.9101, 97.8178, 120.786, -107.329, 135.699, 79.867, -103.35, 135.699, 77.9675, -103.35, 128.826, 77.9675, -107.329, 128.826, 79.867, -97.236, 47.3592, 152.03, -93.2567, 47.3592, 150.13, -106.724, 47.3592, 132.154, -102.745, 47.3592, 130.255, -97.236, 97.8178, 152.03, -93.2567, 97.8178, 150.13, -106.724, 97.8178, 132.154, -102.745, 97.8178, 130.255, -127.164, 135.699, 89.3352, -123.185, 135.699, 87.4356, -123.185, 128.826, 87.4356, -127.164, 128.826, 89.3352, 154.629, 47.3592, -158.804, 158.965, 47.3592, -158.002, 150.622, 47.3592, -137.147, 154.958, 47.3592, -136.345, 154.629, 97.8178, -158.804, 158.965, 97.8178, -158.002, 150.622, 97.8178, -137.147, 154.958, 97.8178, -136.345, 140.171, 141.152, -80.6586, 144.507, 141.152, -79.8564, 144.507, 134.279, -79.8564, 140.171, 134.279, -80.6586, 205.879, 47.3592, -132.502, 208.916, 47.3592, -129.305, 189.908, 47.3592, -117.337, 192.945, 47.3592, -114.139, 205.879, 97.8178, -132.502, 208.916, 97.8178, -129.305, 189.908, 97.8178, -117.337, 192.945, 97.8178, -114.139, 148.25, 141.152, -77.7795, 151.286, 141.152, -74.5819, 151.286, 134.279, -74.5819, 148.25, 134.279, -77.7795, 231.913, 47.3592, -81.1288, 232.49, 47.3592, -76.7572, 210.078, 47.3592, -78.2473, 210.655, 47.3592, -73.8757, 231.913, 97.8178, -81.1288, 232.49, 97.8178, -76.7572, 210.078, 97.8178, -78.2473, 210.655, 97.8178, -73.8757, 153.124, 141.152, -70.7311, 153.701, 141.152, -66.3595, 153.701, 134.279, -66.3595, 153.124, 134.279, -70.7311, 222.815, 47.3592, -24.2445, 220.713, 47.3592, -20.3687, 203.457, 47.3592, -34.7475, 201.354, 47.3592, -30.8717, 222.815, 97.8178, -24.2445, 220.713, 97.8178, -20.3687, 203.457, 97.8178, -34.7475, 201.354, 97.8178, -30.8717, 152.962, 141.152, -62.1432, 150.86, 141.152, -58.2675, 150.86, 134.279, -58.2675, 152.962, 134.279, -62.1432, 182.852, 47.3592, 18.2315, 178.873, 47.3592, 20.1311, 173.365, 47.3592, -1.64424, 169.385, 47.3592, 0.255325, 182.852, 97.8178, 18.2315, 178.873, 97.8178, 20.1311, 173.365, 97.8178, -1.64424, 169.385, 97.8178, 0.255325, 148.617, 141.152, -53.4877, 144.637, 141.152, -51.5882, 144.637, 134.279, -51.5882, 148.617, 134.279, -53.4877, 96.8289, 47.3592, -151.74, 100.808, 47.3592, -153.639, 106.317, 47.3592, -131.864, 110.296, 47.3592, -133.764, 96.8289, 97.8178, -151.74, 100.808, 97.8178, -153.639, 106.317, 97.8178, -131.864, 110.296, 97.8178, -133.764, 131.065, 141.152, -80.0206, 135.044, 141.152, -81.9202, 135.044, 134.279, -81.9202, 131.065, 134.279, -80.0206, 76.9947, 47.3592, -142.272, 80.974, 47.3592, -144.171, 86.4826, 47.3592, -122.396, 90.4619, 47.3592, -124.296, 76.9947, 97.8178, -142.272, 80.974, 97.8178, -144.171, 86.4826, 97.8178, -122.396, 90.4619, 97.8178, -124.296, 106.923, 135.699, -79.5771, 110.902, 135.699, -81.4767, 110.902, 128.826, -81.4767, 106.923, 128.826, -79.5771, 57.1604, 47.3592, -132.804, 61.1398, 47.3592, -134.703, 66.6483, 47.3592, -112.928, 70.6276, 47.3592, -114.828, 57.1604, 97.8178, -132.804, 61.1398, 97.8178, -134.703, 66.6483, 97.8178, -112.928, 70.6276, 97.8178, -114.828, 87.0883, 135.699, -70.109, 91.0677, 135.699, -72.0086, 91.0677, 128.826, -72.0086, 87.0883, 128.826, -70.109, 37.3262, 47.3592, -123.336, 41.3055, 47.3592, -125.235, 46.814, 47.3592, -103.46, 50.7934, 47.3592, -105.359, 37.3262, 97.8178, -123.336, 41.3055, 97.8178, -125.235, 46.814, 97.8178, -103.46, 50.7934, 97.8178, -105.359, 67.2541, 135.699, -60.641, 71.2334, 135.699, -62.5405, 71.2334, 128.826, -62.5405, 67.2541, 128.826, -60.641, 17.492, 47.3592, -113.868, 21.4713, 47.3592, -115.767, 26.9798, 47.3592, -93.9919, 30.9591, 47.3592, -95.8914, 17.492, 97.8178, -113.868, 21.4713, 97.8178, -115.767, 26.9798, 97.8178, -93.9919, 30.9591, 97.8178, -95.8914, 47.4199, 135.699, -51.1729, 51.3991, 135.699, -53.0725, 51.3991, 128.826, -53.0725, 47.4199, 128.826, -51.1729, -80.1453, 47.3592, -67.2597, -76.166, 47.3592, -69.1592, -70.6574, 47.3592, -47.3839, -66.6781, 47.3592, -49.2835, -80.1453, 97.8178, -67.2597, -76.166, 97.8178, -69.1592, -70.6574, 97.8178, -47.3839, -66.6781, 97.8178, -49.2835, -50.2174, 135.699, -4.56494, -46.2381, 135.699, -6.46451, -46.2381, 128.826, -6.46451, -50.2174, 128.826, -4.56494, -99.9797, 47.3592, -57.7916, -96.0004, 47.3592, -59.6911, -90.4918, 47.3592, -37.9158, -86.5125, 47.3592, -39.8153, -99.9797, 97.8178, -57.7916, -96.0004, 97.8178, -59.6911, -90.4918, 97.8178, -37.9158, -86.5125, 97.8178, -39.8153, -70.0518, 135.699, 4.90318, -66.0725, 135.699, 3.00363, -66.0725, 128.826, 3.00363, -70.0518, 128.826, 4.90318, -119.814, 47.3592, -48.3234, -115.835, 47.3592, -50.223, -110.326, 47.3592, -28.4476, -106.347, 47.3592, -30.3472, -119.814, 97.8178, -48.3234, -115.835, 97.8178, -50.223, -110.326, 97.8178, -28.4476, -106.347, 97.8178, -30.3472, -89.8862, 135.699, 14.3713, -85.9069, 135.699, 12.4718, -85.9069, 128.826, 12.4718, -89.8862, 128.826, 14.3713, -139.648, 47.3592, -38.8553, -135.669, 47.3592, -40.7549, -130.161, 47.3592, -18.9795, -126.181, 47.3592, -20.8791, -139.648, 97.8178, -38.8553, -135.669, 97.8178, -40.7549, -130.161, 97.8178, -18.9795, -126.181, 97.8178, -20.8791, -109.721, 135.699, 23.8394, -105.741, 135.699, 21.9399, -105.741, 128.826, 21.9399, -109.721, 128.826, 23.8394, -159.483, 47.3592, -29.3872, -155.504, 47.3592, -31.2867, -149.995, 47.3592, -9.51138, -146.016, 47.3592, -11.4109, -159.483, 97.8178, -29.3872, -155.504, 97.8178, -31.2867, -149.995, 97.8178, -9.51138, -146.016, 97.8178, -11.4109, -129.555, 135.699, 33.3076, -125.576, 135.699, 31.408, -125.576, 128.826, 31.408, -129.555, 128.826, 33.3076, -199.152, 47.3592, -10.451, -195.172, 47.3592, -12.3506, -189.664, 47.3592, 9.42479, -185.684, 47.3592, 7.52522, -199.152, 97.8178, -10.451, -195.172, 97.8178, -12.3506, -189.664, 97.8178, 9.42479, -185.684, 97.8178, 7.52522, -169.224, 135.699, 52.2438, -165.244, 135.699, 50.3442, -165.244, 128.826, 50.3442, -169.224, 128.826, 52.2438, -179.317, 47.3592, -19.9191, -175.338, 47.3592, -21.8186, -169.829, 47.3592, -0.0432587, -165.85, 47.3592, -1.94283, -179.317, 97.8178, -19.9191, -175.338, 97.8178, -21.8186, -169.829, 97.8178, -0.0432587, -165.85, 97.8178, -1.94283, -149.389, 135.699, 42.7757, -145.41, 135.699, 40.8761, -145.41, 128.826, 40.8761, -149.389, 128.826, 42.7757, -228.741, -0.738464, 85.3943, -169.334, -0.738464, 57.0359, -210.238, -0.738464, 124.156, -150.831, -0.738464, 95.7974, -228.741, 153.156, 85.3943, -169.334, 153.156, 57.0359, -210.238, 153.156, 124.156, -150.831, 153.156, 95.7974, -219.894, 153.156, 81.1709, -201.391, 153.156, 119.932, -228.741, 193.921, 85.3943, -219.894, 193.921, 81.1709, -201.391, 193.921, 119.932, -210.238, 193.921, 124.156, -228.741, 89.2457, 85.3943, -210.238, 89.2457, 124.156, -217.732, -0.738464, 127.733, -236.235, -0.738464, 88.9718, -236.235, 89.2457, 88.9718, -217.732, 89.2457, 127.733, -257.1, 264.749, 25.9873, -197.693, 264.749, -2.37117, -228.741, 264.749, 85.3943, -169.334, 264.749, 57.0359, -257.1, -0.738464, 25.9873, -197.693, -0.738464, -2.37117, -228.741, -0.738464, 85.3943, -169.334, -0.738464, 57.0359, -257.1, 89.2457, 25.9873, -228.741, 89.2457, 85.3943, -236.235, -0.738464, 88.9718, -264.594, -0.738464, 29.5647, -264.594, 89.2457, 29.5647, -236.235, 89.2457, 88.9718, -257.1, 188.522, 25.9873, -197.693, 188.522, -2.37117, -169.334, 188.522, 57.0359, -228.741, 188.522, 85.3943, -242.92, 264.749, 55.6908, -242.92, 188.522, 55.6908, -227.396, 264.749, 11.8081, -227.396, 188.522, 11.8081, -183.513, 264.749, 27.3323, -183.513, 188.522, 27.3323, -199.038, 264.749, 71.2151, -199.038, 188.522, 71.2151, -249.136, 245.388, 22.1859, -249.136, 189.558, 22.1859, -235.36, 189.558, 15.6095, -235.36, 245.388, 15.6095, -193.891, 245.388, 5.59225, -193.891, 189.558, 5.59225, -187.315, 189.558, 19.3689, -187.315, 245.388, 19.3689, -177.298, 245.388, 60.8373, -177.298, 189.558, 60.8373, -191.074, 189.558, 67.4137, -191.074, 245.388, 67.4137, -232.543, 245.388, 77.4309, -232.543, 189.558, 77.4309, -239.119, 189.558, 63.6543, -239.119, 245.388, 63.6543, -246.722, 189.558, 47.7274, -253.298, 189.558, 33.9507, -253.298, 245.388, 33.9507, -246.722, 245.388, 47.7274, -219.433, 189.558, 8.00665, -205.656, 189.558, 1.43024, -205.656, 245.388, 1.43024, -219.433, 245.388, 8.00665, -179.712, 189.558, 35.2958, -173.136, 189.558, 49.0724, -173.136, 245.388, 49.0724, -179.712, 245.388, 35.2958, -207.001, 189.558, 75.0165, -220.778, 189.558, 81.5929, -220.778, 245.388, 81.5929, -207.001, 245.388, 75.0165, -243.717, 242.015, 25.7068, -243.717, 192.931, 25.7068, -236.029, 192.931, 22.0368, -236.029, 242.015, 22.0368, -197.412, 242.015, 11.011, -197.412, 192.931, 11.011, -193.742, 192.931, 18.699, -193.742, 242.015, 18.699, -182.716, 242.015, 57.3164, -182.716, 192.931, 57.3164, -190.404, 192.931, 60.9863, -190.404, 242.015, 60.9863, -229.022, 242.015, 72.0121, -229.022, 192.931, 72.0121, -232.692, 192.931, 64.3241, -232.692, 242.015, 64.3241, -243.201, 192.931, 42.3086, -246.871, 192.931, 34.6206, -246.871, 242.015, 34.6206, -243.201, 242.015, 42.3086, -214.014, 192.931, 11.5276, -206.326, 192.931, 7.8576, -206.326, 242.015, 7.8576, -214.014, 242.015, 11.5276, -183.233, 192.931, 40.7145, -179.563, 192.931, 48.4026, -179.563, 242.015, 48.4026, -183.233, 242.015, 40.7145, -212.42, 192.931, 71.4956, -220.108, 192.931, 75.1656, -220.108, 242.015, 75.1656, -212.42, 242.015, 71.4956, -242.248, 253.257, 18.8977, -190.603, 253.257, 12.4806, -184.186, 253.257, 64.1255, -235.831, 253.257, 70.5426, -250.01, 253.257, 40.8391, -212.544, 253.257, 4.71844, -176.424, 253.257, 42.1841, -213.889, 253.257, 78.3047, -239.873, 249.883, 23.8718, -195.577, 249.883, 14.855, -186.56, 249.883, 59.1513, -230.857, 249.883, 68.1681, -245.036, 249.883, 38.4646, -210.17, 249.883, 9.69258, -181.398, 249.883, 44.5585, -216.264, 249.883, 73.3306]; + uvs = new [0.0169913, 0.387452, 0.147722, 0.387452, 0.0169913, 0.0424612, 0.147723, 0.0424612, 0.0169913, 0.387452, 0.147722, 0.387452, 0.0169913, 0.0424612, 0.147723, 0.0424612, 0.0169913, 0.387452, 0.0169913, 0.0424612, 0.000499606, 0.0424612, 0.000499576, 0.387452, 0.000499576, 0.387452, 0.000499606, 0.0424612, 0.0169913, 0.387452, 0.147722, 0.387452, 0.147723, 0.0424612, 0.0169913, 0.0424612, 0.0169913, 0.214956, 0.0169913, 0.214956, 0.0823569, 0.387452, 0.0823569, 0.387452, 0.147723, 0.214957, 0.147723, 0.214957, 0.0823569, 0.0424612, 0.0823569, 0.0424612, 0.0345156, 0.387452, 0.0345156, 0.387452, 0.0648326, 0.387452, 0.0648326, 0.387452, 0.147722, 0.341206, 0.147722, 0.341206, 0.147722, 0.261202, 0.147722, 0.261202, 0.130198, 0.0424612, 0.130198, 0.0424612, 0.0998812, 0.0424612, 0.0998812, 0.0424612, 0.0169913, 0.0887066, 0.0169913, 0.0887066, 0.0169913, 0.168711, 0.0169913, 0.168711, 0.0169913, 0.261202, 0.0169913, 0.341206, 0.0169913, 0.341206, 0.0169913, 0.261202, 0.0998812, 0.387452, 0.130198, 0.387452, 0.130198, 0.387452, 0.0998812, 0.387452, 0.147723, 0.168711, 0.147723, 0.0887067, 0.147723, 0.0887067, 0.147723, 0.168711, 0.0648326, 0.0424612, 0.0345156, 0.0424612, 0.0345156, 0.0424612, 0.0648326, 0.0424612, 0.0412149, 0.358566, 0.0412149, 0.358566, 0.0581332, 0.358566, 0.0581332, 0.358566, 0.136776, 0.323527, 0.136776, 0.323527, 0.136776, 0.278881, 0.136776, 0.278881, 0.123499, 0.0713472, 0.123499, 0.0713472, 0.106581, 0.0713472, 0.106581, 0.0713472, 0.0279374, 0.106386, 0.0279374, 0.106386, 0.0279374, 0.151032, 0.0279374, 0.151032, 0.0279374, 0.278881, 0.0279374, 0.323527, 0.0279374, 0.323527, 0.0279374, 0.278881, 0.106581, 0.358566, 0.123499, 0.358566, 0.123499, 0.358566, 0.106581, 0.358566, 0.136776, 0.151032, 0.136776, 0.106386, 0.136776, 0.106386, 0.136776, 0.151032, 0.0581332, 0.0713471, 0.041215, 0.0713471, 0.041215, 0.0713471, 0.0581332, 0.0713471, 0.0496741, 0.387452, 0.147722, 0.301204, 0.11504, 0.0424612, 0.0169913, 0.128709, 0.0169913, 0.301204, 0.11504, 0.387452, 0.147723, 0.128709, 0.0496741, 0.0424612, 0.0496741, 0.358566, 0.136776, 0.301204, 0.11504, 0.0713472, 0.0279374, 0.128709, 0.0279374, 0.301204, 0.11504, 0.358566, 0.136776, 0.128709, 0.0496741, 0.0713471, 0.471593, 0.0024702, 0.471593, 0.997529, 0.579638, 0.99753, 0.579638, 0.00247043, 0.471593, 0.0024702, 0.471593, 0.997529, 0.579638, 0.99753, 0.579638, 0.00247043, 0.525615, 0.99753, 0.525615, 0.00247037, 0.812112, 0.000499904, 0.13834, 0.000499487, 0.13834, 0.9995, 0.812112, 0.999501, 0.906649, 0.931931, 0.973896, 0.754472, 0.999501, 0.5, 0.973896, 0.245529, 0.906649, 0.0680693, 0.812112, 0.000499904, 0.13834, 0.000499487, 0.13834, 0.9995, 0.812112, 0.999501, 0.906649, 0.931931, 0.973896, 0.754472, 0.999501, 0.5, 0.973896, 0.245529, 0.906649, 0.0680693, 0.801631, 0.208415, 0.13834, 0.208415, 0.13834, 0.791585, 0.801631, 0.791585, 0.865785, 0.745732, 0.903337, 0.646634, 0.920713, 0.5, 0.903337, 0.353366, 0.865785, 0.254268, 0.801631, 0.208415, 0.13834, 0.208415, 0.13834, 0.791585, 0.801631, 0.791585, 0.865785, 0.745732, 0.903337, 0.646634, 0.920713, 0.5, 0.903337, 0.353366, 0.865785, 0.254268, 0.794119, 0.357438, 0.13834, 0.357438, 0.13834, 0.642561, 0.794119, 0.642562, 0.836496, 0.612274, 0.853585, 0.567176, 0.861545, 0.5, 0.853585, 0.432824, 0.836496, 0.387727, 0.794119, 0.357438, 0.13834, 0.357438, 0.13834, 0.642561, 0.794119, 0.642562, 0.836496, 0.612274, 0.853585, 0.567176, 0.861545, 0.5, 0.853585, 0.432824, 0.836496, 0.387727, 0.13834, 0.5, 0.794119, 0.5, 0.544239, 0.500062, 0.538791, 0.465354, 0.525638, 0.450977, 0.512486, 0.465354, 0.507038, 0.500062, 0.512486, 0.534771, 0.525638, 0.549148, 0.538791, 0.534771, 0.544239, 0.500062, 0.538791, 0.465354, 0.525638, 0.450977, 0.512486, 0.465354, 0.507038, 0.500062, 0.512486, 0.534771, 0.525638, 0.549148, 0.538791, 0.534771, 0.525638, 0.500062, 0.129446, 0.214956, 0.115654, 0.127088, 0.0823569, 0.0906911, 0.0490597, 0.127088, 0.0352676, 0.214956, 0.0490597, 0.302825, 0.0823569, 0.339222, 0.115654, 0.302825, 0.0855751, 0.214957, 0.0846325, 0.208951, 0.0823569, 0.206464, 0.0800813, 0.208951, 0.0791387, 0.214957, 0.0800813, 0.220962, 0.0823569, 0.223449, 0.0846325, 0.220962, 0.0823569, 0.214957, 0.129446, 0.785044, 0.115654, 0.697176, 0.0823569, 0.660779, 0.0490597, 0.697176, 0.0352676, 0.785044, 0.0490597, 0.872913, 0.0823568, 0.90931, 0.115654, 0.872913, 0.0855751, 0.785045, 0.0846325, 0.779039, 0.0823568, 0.776552, 0.0800812, 0.779039, 0.0791386, 0.785045, 0.0800812, 0.79105, 0.0823568, 0.793537, 0.0846325, 0.79105, 0.0823569, 0.785045, 0.15202, 0.000499487, 0.160777, 0.000499487, 0.15202, 0.115923, 0.160777, 0.115923, 0.15202, 0.000499487, 0.160777, 0.000499487, 0.15202, 0.115923, 0.160777, 0.115923, 0.15202, 0.364583, 0.160777, 0.364583, 0.160777, 0.364583, 0.15202, 0.364583, 0.759708, 0.000499904, 0.768465, 0.000499904, 0.759708, 0.115923, 0.768465, 0.115923, 0.759708, 0.000499904, 0.768465, 0.000499904, 0.759708, 0.115923, 0.768465, 0.115923, 0.759708, 0.364583, 0.768465, 0.364583, 0.768465, 0.364583, 0.759708, 0.364583, 0.716061, 0.000499845, 0.724817, 0.000499845, 0.716061, 0.115923, 0.724817, 0.115923, 0.716061, 0.000499845, 0.724817, 0.000499845, 0.716061, 0.115923, 0.724817, 0.115923, 0.716061, 0.364583, 0.724817, 0.364583, 0.724817, 0.364583, 0.716061, 0.364583, 0.672413, 0.000499845, 0.68117, 0.000499845, 0.672413, 0.115923, 0.68117, 0.115923, 0.672413, 0.000499845, 0.68117, 0.000499845, 0.672413, 0.115923, 0.68117, 0.115923, 0.672413, 0.364583, 0.68117, 0.364583, 0.68117, 0.364583, 0.672413, 0.364583, 0.628766, 0.000499785, 0.637523, 0.000499785, 0.628766, 0.115923, 0.637523, 0.115923, 0.628766, 0.000499785, 0.637523, 0.000499785, 0.628766, 0.115923, 0.637523, 0.115923, 0.628766, 0.364583, 0.637523, 0.364583, 0.637523, 0.364583, 0.628766, 0.364583, 0.413906, 0.000499666, 0.422662, 0.000499666, 0.413905, 0.115923, 0.422662, 0.115923, 0.413906, 0.000499666, 0.422662, 0.000499666, 0.413905, 0.115923, 0.422662, 0.115923, 0.413905, 0.364583, 0.422662, 0.364583, 0.422662, 0.364583, 0.413905, 0.364583, 0.370258, 0.000499606, 0.379015, 0.000499666, 0.370258, 0.115923, 0.379015, 0.115923, 0.370258, 0.000499606, 0.379015, 0.000499666, 0.370258, 0.115923, 0.379015, 0.115923, 0.370258, 0.364583, 0.379015, 0.364583, 0.379015, 0.364583, 0.370258, 0.364583, 0.32661, 0.000499606, 0.335367, 0.000499606, 0.32661, 0.115923, 0.335367, 0.115923, 0.32661, 0.000499606, 0.335367, 0.000499606, 0.32661, 0.115923, 0.335367, 0.115923, 0.32661, 0.364583, 0.335367, 0.364583, 0.335367, 0.364583, 0.32661, 0.364583, 0.282963, 0.000499606, 0.29172, 0.000499606, 0.282963, 0.115923, 0.29172, 0.115923, 0.282963, 0.000499606, 0.29172, 0.000499606, 0.282963, 0.115923, 0.29172, 0.115923, 0.282963, 0.364583, 0.291719, 0.364583, 0.291719, 0.364583, 0.282963, 0.364583, 0.239315, 0.000499547, 0.248072, 0.000499547, 0.239315, 0.115923, 0.248072, 0.115923, 0.239315, 0.000499547, 0.248072, 0.000499547, 0.239315, 0.115923, 0.248072, 0.115923, 0.239315, 0.364583, 0.248072, 0.364583, 0.248072, 0.364583, 0.239315, 0.364583, 0.195667, 0.000499547, 0.204424, 0.000499547, 0.195667, 0.115923, 0.204424, 0.115923, 0.195667, 0.000499547, 0.204424, 0.000499547, 0.195667, 0.115923, 0.204424, 0.115923, 0.195667, 0.364583, 0.204424, 0.364583, 0.204424, 0.364583, 0.195667, 0.364583, 0.912989, 0.901963, 0.920073, 0.88838, 0.88728, 0.808584, 0.894364, 0.795001, 0.912989, 0.901963, 0.920073, 0.88838, 0.88728, 0.808584, 0.894364, 0.795001, 0.820221, 0.565015, 0.827306, 0.551432, 0.827306, 0.551432, 0.820221, 0.565015, 0.982338, 0.661862, 0.985044, 0.639885, 0.94074, 0.626194, 0.943446, 0.604217, 0.982338, 0.661862, 0.985044, 0.639885, 0.94074, 0.626194, 0.943446, 0.604217, 0.832237, 0.533159, 0.834943, 0.511182, 0.834943, 0.511182, 0.832237, 0.533159, 0.985044, 0.360116, 0.982338, 0.338139, 0.943446, 0.395784, 0.94074, 0.373806, 0.985044, 0.360116, 0.982338, 0.338139, 0.943446, 0.395784, 0.94074, 0.373806, 0.834943, 0.488819, 0.832237, 0.466841, 0.832237, 0.466841, 0.834943, 0.488819, 0.920073, 0.11162, 0.912989, 0.0980372, 0.894364, 0.205, 0.88728, 0.191417, 0.920073, 0.11162, 0.912989, 0.0980372, 0.894364, 0.205, 0.88728, 0.191417, 0.827306, 0.448568, 0.820221, 0.434985, 0.820221, 0.434985, 0.827306, 0.448568, 0.812112, 0.000952661, 0.803355, 0.000952601, 0.812112, 0.116376, 0.803355, 0.116376, 0.812112, 0.000952661, 0.803355, 0.000952601, 0.812112, 0.116376, 0.803355, 0.116376, 0.812112, 0.417443, 0.803355, 0.417443, 0.803355, 0.417443, 0.812112, 0.417443, 0.803355, 0.999048, 0.812112, 0.999048, 0.803355, 0.883624, 0.812112, 0.883624, 0.803355, 0.999048, 0.812112, 0.999048, 0.803355, 0.883624, 0.812112, 0.883624, 0.803355, 0.582557, 0.812112, 0.582557, 0.812112, 0.582557, 0.803355, 0.582557, 0.759708, 0.999048, 0.768465, 0.999048, 0.759708, 0.883624, 0.768465, 0.883624, 0.759708, 0.999048, 0.768465, 0.999048, 0.759708, 0.883624, 0.768465, 0.883624, 0.759708, 0.634965, 0.768465, 0.634965, 0.768465, 0.634965, 0.759708, 0.634965, 0.71606, 0.999048, 0.724817, 0.999048, 0.71606, 0.883624, 0.724817, 0.883624, 0.71606, 0.999048, 0.724817, 0.999048, 0.71606, 0.883624, 0.724817, 0.883624, 0.71606, 0.634965, 0.724817, 0.634965, 0.724817, 0.634965, 0.71606, 0.634965, 0.672413, 0.999048, 0.68117, 0.999048, 0.672413, 0.883624, 0.68117, 0.883624, 0.672413, 0.999048, 0.68117, 0.999048, 0.672413, 0.883624, 0.68117, 0.883624, 0.672413, 0.634965, 0.68117, 0.634965, 0.68117, 0.634965, 0.672413, 0.634965, 0.628766, 0.999048, 0.637523, 0.999048, 0.628766, 0.883624, 0.637523, 0.883624, 0.628766, 0.999048, 0.637523, 0.999048, 0.628766, 0.883624, 0.637523, 0.883624, 0.628766, 0.634965, 0.637523, 0.634965, 0.637523, 0.634965, 0.628766, 0.634965, 0.413905, 0.999047, 0.422662, 0.999048, 0.413905, 0.883624, 0.422662, 0.883624, 0.413905, 0.999047, 0.422662, 0.999048, 0.413905, 0.883624, 0.422662, 0.883624, 0.413905, 0.634964, 0.422662, 0.634964, 0.422662, 0.634964, 0.413905, 0.634964, 0.370258, 0.999047, 0.379015, 0.999047, 0.370258, 0.883624, 0.379015, 0.883624, 0.370258, 0.999047, 0.379015, 0.999047, 0.370258, 0.883624, 0.379015, 0.883624, 0.370258, 0.634964, 0.379015, 0.634964, 0.379015, 0.634964, 0.370258, 0.634964, 0.32661, 0.999047, 0.335367, 0.999047, 0.32661, 0.883624, 0.335367, 0.883624, 0.32661, 0.999047, 0.335367, 0.999047, 0.32661, 0.883624, 0.335367, 0.883624, 0.32661, 0.634964, 0.335367, 0.634964, 0.335367, 0.634964, 0.32661, 0.634964, 0.282963, 0.999047, 0.291719, 0.999047, 0.282963, 0.883624, 0.291719, 0.883624, 0.282963, 0.999047, 0.291719, 0.999047, 0.282963, 0.883624, 0.291719, 0.883624, 0.282963, 0.634964, 0.291719, 0.634964, 0.291719, 0.634964, 0.282963, 0.634964, 0.239315, 0.999047, 0.248072, 0.999047, 0.239315, 0.883624, 0.248072, 0.883624, 0.239315, 0.999047, 0.248072, 0.999047, 0.239315, 0.883624, 0.248072, 0.883624, 0.239315, 0.634964, 0.248072, 0.634964, 0.248072, 0.634964, 0.239315, 0.634964, 0.15202, 0.999047, 0.160777, 0.999047, 0.15202, 0.883624, 0.160777, 0.883624, 0.15202, 0.999047, 0.160777, 0.999047, 0.15202, 0.883624, 0.160777, 0.883624, 0.15202, 0.634964, 0.160777, 0.634964, 0.160777, 0.634964, 0.15202, 0.634964, 0.195667, 0.999047, 0.204424, 0.999047, 0.195667, 0.883624, 0.204424, 0.883624, 0.195667, 0.999047, 0.204424, 0.999047, 0.195667, 0.883624, 0.204424, 0.883624, 0.195667, 0.634964, 0.204424, 0.634964, 0.204424, 0.634964, 0.195667, 0.634964, 0.0169912, 0.612549, 0.147722, 0.612549, 0.0169913, 0.387452, 0.147723, 0.387452, 0.0169912, 0.612549, 0.147722, 0.612549, 0.0169913, 0.387452, 0.147723, 0.387452, 0.0364611, 0.612549, 0.0364611, 0.387452, 0.0169912, 0.612549, 0.0364611, 0.612549, 0.0364611, 0.387452, 0.0169913, 0.387452, 0.0169912, 0.612549, 0.0169913, 0.387452, 0.000499547, 0.387452, 0.000499517, 0.612549, 0.000499517, 0.612549, 0.000499547, 0.387452, 0.0169912, 0.95754, 0.147722, 0.95754, 0.0169913, 0.612549, 0.147722, 0.612549, 0.0169912, 0.95754, 0.147722, 0.95754, 0.0169913, 0.612549, 0.147722, 0.612549, 0.0169912, 0.95754, 0.0169913, 0.612549, 0.000499547, 0.612549, 0.000499517, 0.95754, 0.000499517, 0.95754, 0.000499547, 0.612549, 0.0169912, 0.95754, 0.147722, 0.95754, 0.147722, 0.612549, 0.0169913, 0.612549, 0.0169913, 0.785044, 0.0169913, 0.785044, 0.0823568, 0.95754, 0.0823568, 0.95754, 0.147722, 0.785044, 0.147722, 0.785044, 0.0823569, 0.612549, 0.0823569, 0.612549, 0.0345155, 0.95754, 0.0345155, 0.95754, 0.0648325, 0.95754, 0.0648325, 0.95754, 0.147722, 0.911294, 0.147722, 0.911294, 0.147722, 0.83129, 0.147722, 0.83129, 0.130198, 0.612549, 0.130198, 0.612549, 0.0998812, 0.612549, 0.0998812, 0.612549, 0.0169913, 0.658795, 0.0169913, 0.658795, 0.0169913, 0.738799, 0.0169913, 0.738799, 0.0169913, 0.83129, 0.0169912, 0.911294, 0.0169912, 0.911294, 0.0169913, 0.83129, 0.0998811, 0.95754, 0.130198, 0.95754, 0.130198, 0.95754, 0.0998811, 0.95754, 0.147722, 0.738799, 0.147722, 0.658795, 0.147722, 0.658795, 0.147722, 0.738799, 0.0648326, 0.612549, 0.0345156, 0.612549, 0.0345156, 0.612549, 0.0648326, 0.612549, 0.0412149, 0.928654, 0.0412149, 0.928654, 0.0581332, 0.928654, 0.0581332, 0.928654, 0.136776, 0.893615, 0.136776, 0.893615, 0.136776, 0.848969, 0.136776, 0.848969, 0.123499, 0.641435, 0.123499, 0.641435, 0.106581, 0.641435, 0.106581, 0.641435, 0.0279374, 0.676474, 0.0279374, 0.676474, 0.0279374, 0.72112, 0.0279374, 0.72112, 0.0279373, 0.848969, 0.0279373, 0.893615, 0.0279373, 0.893615, 0.0279373, 0.848969, 0.10658, 0.928654, 0.123499, 0.928654, 0.123499, 0.928654, 0.10658, 0.928654, 0.136776, 0.72112, 0.136776, 0.676474, 0.136776, 0.676474, 0.136776, 0.72112, 0.0581332, 0.641435, 0.0412149, 0.641435, 0.0412149, 0.641435, 0.0581332, 0.641435, 0.049674, 0.95754, 0.147722, 0.871292, 0.11504, 0.612549, 0.0169913, 0.698797, 0.0169912, 0.871292, 0.11504, 0.95754, 0.147722, 0.698797, 0.0496741, 0.612549, 0.049674, 0.928654, 0.136776, 0.871292, 0.11504, 0.641435, 0.0279374, 0.698797, 0.0279373, 0.871292, 0.11504, 0.928654, 0.136776, 0.698797, 0.0496741, 0.641435]; + indices = new [20, 22, 1, 20, 3, 22, 0, 3, 20, 24, 18, 2, 3, 18, 24, 0, 18, 3, 4, 7, 6, 7, 4, 5, 59, 61, 60, 59, 98, 61, 58, 98, 59, 63, 65, 64, 63, 99, 65, 62, 99, 63, 67, 69, 68, 67, 100, 69, 66, 100, 67, 71, 73, 72, 71, 101, 73, 70, 101, 71, 10, 12, 11, 12, 10, 13, 6, 11, 4, 11, 6, 10, 4, 12, 8, 12, 4, 11, 8, 13, 9, 13, 8, 12, 9, 10, 6, 10, 9, 13, 8, 5, 4, 14, 5, 8, 5, 21, 15, 14, 21, 5, 5, 16, 7, 5, 23, 16, 15, 23, 5, 16, 6, 7, 16, 9, 6, 9, 25, 17, 16, 25, 9, 9, 14, 8, 9, 19, 14, 17, 19, 9, 75, 102, 76, 75, 77, 102, 74, 77, 75, 79, 103, 80, 79, 81, 103, 78, 81, 79, 83, 104, 84, 83, 85, 104, 82, 85, 83, 87, 105, 88, 87, 89, 105, 86, 89, 87, 0, 27, 14, 27, 0, 26, 14, 28, 21, 28, 14, 27, 21, 29, 20, 29, 21, 28, 0, 90, 26, 1, 31, 15, 31, 1, 30, 15, 32, 23, 32, 15, 31, 23, 33, 22, 33, 23, 32, 1, 91, 30, 3, 35, 16, 35, 3, 34, 16, 36, 25, 36, 16, 35, 25, 37, 24, 37, 25, 36, 3, 92, 34, 2, 39, 17, 39, 2, 38, 17, 40, 19, 40, 17, 39, 19, 41, 18, 41, 19, 40, 2, 93, 38, 19, 43, 14, 43, 19, 42, 14, 44, 0, 44, 14, 43, 18, 94, 45, 18, 42, 19, 42, 18, 45, 21, 47, 15, 47, 21, 46, 15, 48, 1, 48, 15, 47, 20, 95, 49, 20, 46, 21, 46, 20, 49, 23, 51, 16, 51, 23, 50, 16, 52, 3, 52, 16, 51, 22, 96, 53, 22, 50, 23, 50, 22, 53, 25, 55, 17, 55, 25, 54, 17, 56, 2, 56, 17, 55, 24, 97, 57, 24, 54, 25, 54, 24, 57, 26, 59, 27, 59, 26, 58, 27, 60, 28, 60, 27, 59, 28, 61, 29, 61, 28, 60, 90, 61, 98, 61, 90, 29, 30, 63, 31, 63, 30, 62, 31, 64, 32, 64, 31, 63, 32, 65, 33, 65, 32, 64, 91, 65, 99, 65, 91, 33, 34, 67, 35, 67, 34, 66, 35, 68, 36, 68, 35, 67, 36, 69, 37, 69, 36, 68, 92, 69, 100, 69, 92, 37, 38, 71, 39, 71, 38, 70, 39, 72, 40, 72, 39, 71, 40, 73, 41, 73, 40, 72, 93, 73, 101, 73, 93, 41, 42, 75, 43, 75, 42, 74, 43, 76, 44, 76, 43, 75, 94, 76, 102, 76, 94, 44, 45, 74, 42, 74, 45, 77, 46, 79, 47, 79, 46, 78, 47, 80, 48, 80, 47, 79, 95, 80, 103, 80, 95, 48, 49, 78, 46, 78, 49, 81, 50, 83, 51, 83, 50, 82, 51, 84, 52, 84, 51, 83, 96, 84, 104, 84, 96, 52, 53, 82, 50, 82, 53, 85, 54, 87, 55, 87, 54, 86, 55, 88, 56, 88, 55, 87, 97, 88, 105, 88, 97, 56, 57, 86, 54, 86, 57, 89, 90, 58, 26, 58, 90, 98, 91, 62, 30, 62, 91, 99, 92, 66, 34, 66, 92, 100, 93, 70, 38, 70, 93, 101, 94, 77, 45, 77, 94, 102, 95, 81, 49, 81, 95, 103, 96, 85, 53, 85, 96, 104, 97, 89, 57, 89, 97, 105, 94, 18, 0, 93, 18, 41, 93, 2, 18, 94, 0, 44, 90, 20, 29, 90, 0, 20, 95, 20, 1, 95, 1, 48, 91, 22, 33, 91, 1, 22, 96, 22, 3, 96, 3, 52, 92, 24, 37, 92, 3, 24, 97, 24, 2, 97, 2, 56, 106, 111, 107, 111, 106, 110, 107, 112, 108, 112, 107, 111, 108, 113, 109, 113, 108, 112, 110, 114, 111, 114, 110, 115, 111, 114, 112, 112, 115, 113, 115, 112, 114, 110, 113, 115, 106, 113, 110, 109, 113, 106, 109, 107, 108, 107, 109, 106, 126, 116, 125, 116, 126, 117, 127, 117, 126, 117, 127, 118, 128, 118, 127, 118, 128, 119, 129, 119, 128, 119, 129, 120, 130, 120, 129, 120, 130, 121, 131, 121, 130, 121, 131, 122, 132, 122, 131, 122, 132, 123, 133, 123, 132, 123, 133, 124, 125, 124, 133, 124, 125, 116, 122, 120, 121, 123, 120, 122, 124, 120, 123, 116, 120, 124, 116, 119, 120, 117, 119, 116, 117, 118, 119, 125, 135, 126, 135, 125, 134, 126, 136, 127, 136, 126, 135, 127, 137, 128, 137, 127, 136, 128, 138, 129, 138, 128, 137, 129, 139, 130, 139, 129, 138, 130, 140, 131, 140, 130, 139, 131, 141, 132, 141, 131, 140, 132, 142, 133, 142, 132, 141, 133, 134, 125, 134, 133, 142, 134, 144, 135, 144, 134, 143, 135, 144, 153, 136, 146, 137, 146, 136, 145, 137, 147, 138, 147, 137, 146, 138, 148, 139, 148, 138, 147, 139, 149, 140, 149, 139, 148, 140, 150, 141, 150, 140, 149, 141, 151, 142, 151, 141, 150, 142, 143, 134, 143, 142, 151, 143, 153, 144, 153, 143, 152, 145, 155, 146, 155, 145, 154, 146, 156, 147, 156, 146, 155, 147, 157, 148, 157, 147, 156, 148, 158, 149, 158, 148, 157, 149, 159, 150, 159, 149, 158, 150, 160, 151, 160, 150, 159, 151, 152, 143, 152, 151, 160, 136, 154, 145, 135, 154, 136, 154, 135, 153, 152, 162, 153, 162, 152, 161, 153, 163, 154, 163, 153, 162, 154, 164, 155, 164, 154, 163, 155, 165, 156, 165, 155, 164, 156, 166, 157, 166, 156, 165, 157, 167, 158, 167, 157, 166, 158, 168, 159, 168, 158, 167, 159, 169, 160, 169, 159, 168, 160, 161, 152, 161, 160, 169, 161, 170, 162, 170, 161, 171, 162, 170, 163, 163, 171, 164, 171, 163, 170, 164, 171, 165, 165, 171, 166, 166, 171, 167, 167, 171, 168, 168, 171, 169, 169, 171, 161, 172, 181, 173, 181, 172, 180, 173, 182, 174, 182, 173, 181, 174, 183, 175, 183, 174, 182, 175, 184, 176, 184, 175, 183, 176, 185, 177, 185, 176, 184, 177, 186, 178, 186, 177, 185, 178, 187, 179, 187, 178, 186, 179, 180, 172, 180, 179, 187, 178, 176, 177, 176, 174, 175, 174, 172, 173, 176, 172, 174, 178, 172, 176, 179, 172, 178, 180, 188, 181, 181, 188, 182, 182, 188, 183, 183, 188, 184, 184, 188, 185, 185, 188, 186, 186, 188, 187, 187, 188, 180, 189, 198, 190, 198, 189, 197, 190, 199, 191, 199, 190, 198, 191, 200, 192, 200, 191, 199, 192, 201, 193, 201, 192, 200, 193, 202, 194, 202, 193, 201, 194, 203, 195, 203, 194, 202, 195, 204, 196, 204, 195, 203, 196, 197, 189, 197, 196, 204, 195, 193, 194, 193, 191, 192, 191, 189, 190, 193, 189, 191, 195, 189, 193, 196, 189, 195, 197, 205, 198, 198, 205, 199, 199, 205, 200, 200, 205, 201, 201, 205, 202, 202, 205, 203, 203, 205, 204, 204, 205, 197, 206, 215, 207, 215, 206, 214, 207, 216, 208, 216, 207, 215, 208, 217, 209, 217, 208, 216, 209, 218, 210, 218, 209, 217, 210, 219, 211, 219, 210, 218, 211, 220, 212, 220, 211, 219, 212, 221, 213, 221, 212, 220, 213, 214, 206, 214, 213, 221, 212, 210, 211, 210, 208, 209, 208, 206, 207, 210, 206, 208, 212, 206, 210, 213, 206, 212, 214, 222, 215, 215, 222, 216, 216, 222, 217, 217, 222, 218, 218, 222, 219, 219, 222, 220, 220, 222, 221, 221, 222, 214, 223, 226, 224, 226, 223, 225, 231, 233, 234, 233, 231, 232, 223, 228, 227, 228, 223, 224, 224, 230, 228, 230, 224, 226, 226, 229, 230, 229, 226, 225, 225, 227, 229, 227, 225, 223, 227, 232, 231, 232, 227, 228, 228, 233, 232, 233, 228, 230, 230, 234, 233, 234, 230, 229, 229, 231, 234, 231, 229, 227, 235, 238, 236, 238, 235, 237, 243, 245, 246, 245, 243, 244, 235, 240, 239, 240, 235, 236, 236, 242, 240, 242, 236, 238, 238, 241, 242, 241, 238, 237, 237, 239, 241, 239, 237, 235, 239, 244, 243, 244, 239, 240, 240, 245, 244, 245, 240, 242, 242, 246, 245, 246, 242, 241, 241, 243, 246, 243, 241, 239, 247, 250, 248, 250, 247, 249, 0xFF, 0x0101, 258, 0x0101, 0xFF, 0x0100, 247, 252, 251, 252, 247, 248, 248, 254, 252, 254, 248, 250, 250, 253, 254, 253, 250, 249, 249, 251, 253, 251, 249, 247, 251, 0x0100, 0xFF, 0x0100, 251, 252, 252, 0x0101, 0x0100, 0x0101, 252, 254, 254, 258, 0x0101, 258, 254, 253, 253, 0xFF, 258, 0xFF, 253, 251, 259, 262, 260, 262, 259, 261, 267, 269, 270, 269, 267, 268, 259, 264, 263, 264, 259, 260, 260, 266, 264, 266, 260, 262, 262, 265, 266, 265, 262, 261, 261, 263, 265, 263, 261, 259, 263, 268, 267, 268, 263, 264, 264, 269, 268, 269, 264, 266, 266, 270, 269, 270, 266, 265, 265, 267, 270, 267, 265, 263, 271, 274, 272, 274, 271, 273, 279, 281, 282, 281, 279, 280, 271, 276, 275, 276, 271, 272, 272, 278, 276, 278, 272, 274, 274, 277, 278, 277, 274, 273, 273, 275, 277, 275, 273, 271, 275, 280, 279, 280, 275, 276, 276, 281, 280, 281, 276, 278, 278, 282, 281, 282, 278, 277, 277, 279, 282, 279, 277, 275, 283, 286, 284, 286, 283, 285, 291, 293, 294, 293, 291, 292, 283, 288, 287, 288, 283, 284, 284, 290, 288, 290, 284, 286, 286, 289, 290, 289, 286, 285, 285, 287, 289, 287, 285, 283, 287, 292, 291, 292, 287, 288, 288, 293, 292, 293, 288, 290, 290, 294, 293, 294, 290, 289, 289, 291, 294, 291, 289, 287, 295, 298, 296, 298, 295, 297, 303, 305, 306, 305, 303, 304, 295, 300, 299, 300, 295, 296, 296, 302, 300, 302, 296, 298, 298, 301, 302, 301, 298, 297, 297, 299, 301, 299, 297, 295, 299, 304, 303, 304, 299, 300, 300, 305, 304, 305, 300, 302, 302, 306, 305, 306, 302, 301, 301, 303, 306, 303, 301, 299, 307, 310, 308, 310, 307, 309, 315, 317, 318, 317, 315, 316, 307, 312, 311, 312, 307, 308, 308, 314, 312, 314, 308, 310, 310, 313, 314, 313, 310, 309, 309, 311, 313, 311, 309, 307, 311, 316, 315, 316, 311, 312, 312, 317, 316, 317, 312, 314, 314, 318, 317, 318, 314, 313, 313, 315, 318, 315, 313, 311, 319, 322, 320, 322, 319, 321, 327, 329, 330, 329, 327, 328, 319, 324, 323, 324, 319, 320, 320, 326, 324, 326, 320, 322, 322, 325, 326, 325, 322, 321, 321, 323, 325, 323, 321, 319, 323, 328, 327, 328, 323, 324, 324, 329, 328, 329, 324, 326, 326, 330, 329, 330, 326, 325, 325, 327, 330, 327, 325, 323, 331, 334, 332, 334, 331, 333, 339, 341, 342, 341, 339, 340, 331, 336, 335, 336, 331, 332, 332, 338, 336, 338, 332, 334, 334, 337, 338, 337, 334, 333, 333, 335, 337, 335, 333, 331, 335, 340, 339, 340, 335, 336, 336, 341, 340, 341, 336, 338, 338, 342, 341, 342, 338, 337, 337, 339, 342, 339, 337, 335, 343, 346, 344, 346, 343, 345, 351, 353, 354, 353, 351, 352, 343, 348, 347, 348, 343, 344, 344, 350, 348, 350, 344, 346, 346, 349, 350, 349, 346, 345, 345, 347, 349, 347, 345, 343, 347, 352, 351, 352, 347, 348, 348, 353, 352, 353, 348, 350, 350, 354, 353, 354, 350, 349, 349, 351, 354, 351, 349, 347, 355, 358, 357, 358, 355, 356, 363, 365, 364, 365, 363, 366, 355, 360, 356, 360, 355, 359, 356, 362, 358, 362, 356, 360, 358, 361, 357, 361, 358, 362, 357, 359, 355, 359, 357, 361, 359, 364, 360, 364, 359, 363, 360, 365, 362, 365, 360, 364, 362, 366, 361, 366, 362, 365, 361, 363, 359, 363, 361, 366, 367, 370, 369, 370, 367, 368, 375, 377, 376, 377, 375, 378, 367, 372, 368, 372, 367, 371, 368, 374, 370, 374, 368, 372, 370, 373, 369, 373, 370, 374, 369, 371, 367, 371, 369, 373, 371, 376, 372, 376, 371, 375, 372, 377, 374, 377, 372, 376, 374, 378, 373, 378, 374, 377, 373, 375, 371, 375, 373, 378, 379, 382, 381, 382, 379, 380, 387, 389, 388, 389, 387, 390, 379, 384, 380, 384, 379, 383, 380, 386, 382, 386, 380, 384, 382, 385, 381, 385, 382, 386, 381, 383, 379, 383, 381, 385, 383, 388, 384, 388, 383, 387, 384, 389, 386, 389, 384, 388, 386, 390, 385, 390, 386, 389, 385, 387, 383, 387, 385, 390, 391, 394, 393, 394, 391, 392, 399, 401, 400, 401, 399, 402, 391, 396, 392, 396, 391, 395, 392, 398, 394, 398, 392, 396, 394, 397, 393, 397, 394, 398, 393, 395, 391, 395, 393, 397, 395, 400, 396, 400, 395, 399, 396, 401, 398, 401, 396, 400, 398, 402, 397, 402, 398, 401, 397, 399, 395, 399, 397, 402, 403, 406, 405, 406, 403, 404, 411, 413, 412, 413, 411, 414, 403, 408, 404, 408, 403, 407, 404, 410, 406, 410, 404, 408, 406, 409, 405, 409, 406, 410, 405, 407, 403, 407, 405, 409, 407, 412, 408, 412, 407, 411, 408, 413, 410, 413, 408, 412, 410, 414, 409, 414, 410, 413, 409, 411, 407, 411, 409, 414, 415, 418, 417, 418, 415, 416, 423, 425, 424, 425, 423, 426, 415, 420, 416, 420, 415, 419, 416, 422, 418, 422, 416, 420, 418, 421, 417, 421, 418, 422, 417, 419, 415, 419, 417, 421, 419, 424, 420, 424, 419, 423, 420, 425, 422, 425, 420, 424, 422, 426, 421, 426, 422, 425, 421, 423, 419, 423, 421, 426, 427, 430, 429, 430, 427, 428, 435, 437, 436, 437, 435, 438, 427, 432, 428, 432, 427, 431, 428, 434, 430, 434, 428, 432, 430, 433, 429, 433, 430, 434, 429, 431, 427, 431, 429, 433, 431, 436, 432, 436, 431, 435, 432, 437, 434, 437, 432, 436, 434, 438, 433, 438, 434, 437, 433, 435, 431, 435, 433, 438, 439, 442, 441, 442, 439, 440, 447, 449, 448, 449, 447, 450, 439, 444, 440, 444, 439, 443, 440, 446, 442, 446, 440, 444, 442, 445, 441, 445, 442, 446, 441, 443, 439, 443, 441, 445, 443, 448, 444, 448, 443, 447, 444, 449, 446, 449, 444, 448, 446, 450, 445, 450, 446, 449, 445, 447, 443, 447, 445, 450, 451, 454, 453, 454, 451, 452, 459, 461, 460, 461, 459, 462, 451, 456, 452, 456, 451, 455, 452, 458, 454, 458, 452, 456, 454, 457, 453, 457, 454, 458, 453, 455, 451, 455, 453, 457, 455, 460, 456, 460, 455, 459, 456, 461, 458, 461, 456, 460, 458, 462, 457, 462, 458, 461, 457, 459, 455, 459, 457, 462, 463, 466, 465, 466, 463, 464, 471, 473, 472, 473, 471, 474, 463, 468, 464, 468, 463, 467, 464, 470, 466, 470, 464, 468, 466, 469, 465, 469, 466, 470, 465, 467, 463, 467, 465, 469, 467, 472, 468, 472, 467, 471, 468, 473, 470, 473, 468, 472, 470, 474, 469, 474, 470, 473, 469, 471, 467, 471, 469, 474, 475, 478, 477, 478, 475, 476, 483, 485, 484, 485, 483, 486, 475, 480, 476, 480, 475, 479, 476, 482, 478, 482, 476, 480, 478, 481, 477, 481, 478, 482, 477, 479, 475, 479, 477, 481, 479, 484, 480, 484, 479, 483, 480, 485, 482, 485, 480, 484, 482, 486, 481, 486, 482, 485, 481, 483, 479, 483, 481, 486, 487, 490, 489, 490, 487, 488, 495, 497, 496, 497, 495, 498, 487, 492, 488, 492, 487, 491, 488, 494, 490, 494, 488, 492, 490, 493, 489, 493, 490, 494, 489, 491, 487, 491, 489, 493, 491, 496, 492, 496, 491, 495, 492, 497, 494, 497, 492, 496, 494, 498, 493, 498, 494, 497, 493, 495, 491, 495, 493, 498, 499, 502, 501, 502, 499, 500, 507, 509, 508, 509, 507, 510, 499, 504, 500, 504, 499, 503, 500, 506, 502, 506, 500, 504, 502, 505, 501, 505, 502, 506, 501, 503, 499, 503, 501, 505, 503, 508, 504, 508, 503, 507, 504, 509, 506, 509, 504, 508, 506, 510, 505, 510, 506, 509, 505, 507, 503, 507, 505, 510, 511, 0x0202, 513, 0x0202, 511, 0x0200, 519, 521, 520, 521, 519, 522, 511, 516, 0x0200, 516, 511, 515, 0x0200, 518, 0x0202, 518, 0x0200, 516, 0x0202, 517, 513, 517, 0x0202, 518, 513, 515, 511, 515, 513, 517, 515, 520, 516, 520, 515, 519, 516, 521, 518, 521, 516, 520, 518, 522, 517, 522, 518, 521, 517, 519, 515, 519, 517, 522, 523, 526, 525, 526, 523, 524, 531, 533, 532, 533, 531, 534, 523, 528, 524, 528, 523, 527, 524, 530, 526, 530, 524, 528, 526, 529, 525, 529, 526, 530, 525, 527, 523, 527, 525, 529, 527, 532, 528, 532, 527, 531, 528, 533, 530, 533, 528, 532, 530, 534, 529, 534, 530, 533, 529, 531, 527, 531, 529, 534, 535, 538, 537, 538, 535, 536, 543, 545, 544, 545, 543, 546, 535, 540, 536, 540, 535, 539, 536, 542, 538, 542, 536, 540, 538, 541, 537, 541, 538, 542, 537, 539, 535, 539, 537, 541, 539, 544, 540, 544, 539, 543, 540, 545, 542, 545, 540, 544, 542, 546, 541, 546, 542, 545, 541, 543, 539, 543, 541, 546, 547, 550, 549, 550, 547, 548, 555, 557, 556, 557, 555, 558, 547, 552, 548, 552, 547, 551, 548, 554, 550, 554, 548, 552, 550, 553, 549, 553, 550, 554, 549, 551, 547, 551, 549, 553, 551, 556, 552, 556, 551, 555, 552, 557, 554, 557, 552, 556, 554, 558, 553, 558, 554, 557, 553, 555, 551, 555, 553, 558, 559, 562, 561, 562, 559, 560, 570, 572, 571, 572, 570, 569, 559, 564, 560, 559, 567, 564, 567, 573, 563, 559, 573, 567, 560, 566, 562, 566, 560, 564, 562, 574, 561, 562, 565, 574, 562, 568, 565, 562, 566, 568, 576, 578, 577, 578, 576, 575, 564, 568, 566, 568, 564, 567, 563, 570, 567, 570, 563, 569, 567, 571, 568, 571, 567, 570, 568, 572, 565, 572, 568, 571, 565, 569, 563, 569, 565, 572, 563, 574, 565, 574, 563, 573, 561, 576, 559, 576, 561, 575, 559, 577, 573, 577, 559, 576, 573, 578, 574, 578, 573, 577, 574, 575, 561, 575, 574, 578, 599, 601, 580, 599, 582, 601, 579, 582, 599, 603, 597, 581, 582, 597, 603, 579, 597, 582, 583, 586, 585, 586, 583, 584, 638, 640, 639, 638, 677, 640, 637, 677, 638, 642, 644, 643, 642, 678, 644, 641, 678, 642, 646, 648, 647, 646, 679, 648, 645, 679, 646, 650, 652, 651, 650, 680, 652, 649, 680, 650, 589, 591, 590, 591, 589, 592, 585, 590, 583, 590, 585, 589, 583, 591, 587, 591, 583, 590, 587, 592, 588, 592, 587, 591, 588, 589, 585, 589, 588, 592, 587, 584, 583, 593, 584, 587, 584, 600, 594, 593, 600, 584, 584, 595, 586, 584, 602, 595, 594, 602, 584, 595, 585, 586, 595, 588, 585, 588, 604, 596, 595, 604, 588, 588, 593, 587, 588, 598, 593, 596, 598, 588, 654, 681, 655, 654, 656, 681, 653, 656, 654, 658, 682, 659, 658, 660, 682, 657, 660, 658, 662, 683, 663, 662, 664, 683, 661, 664, 662, 666, 684, 667, 666, 668, 684, 665, 668, 666, 579, 606, 593, 606, 579, 605, 593, 607, 600, 607, 593, 606, 600, 608, 599, 608, 600, 607, 579, 669, 605, 580, 610, 594, 610, 580, 609, 594, 611, 602, 611, 594, 610, 602, 612, 601, 612, 602, 611, 580, 670, 609, 582, 614, 595, 614, 582, 613, 595, 615, 604, 615, 595, 614, 604, 616, 603, 616, 604, 615, 582, 671, 613, 581, 618, 596, 618, 581, 617, 596, 619, 598, 619, 596, 618, 598, 620, 597, 620, 598, 619, 581, 672, 617, 598, 622, 593, 622, 598, 621, 593, 623, 579, 623, 593, 622, 597, 673, 624, 597, 621, 598, 621, 597, 624, 600, 626, 594, 626, 600, 625, 594, 627, 580, 627, 594, 626, 599, 674, 628, 599, 625, 600, 625, 599, 628, 602, 630, 595, 630, 602, 629, 595, 631, 582, 631, 595, 630, 601, 675, 632, 601, 629, 602, 629, 601, 632, 604, 634, 596, 634, 604, 633, 596, 635, 581, 635, 596, 634, 603, 676, 636, 603, 633, 604, 633, 603, 636, 605, 638, 606, 638, 605, 637, 606, 639, 607, 639, 606, 638, 607, 640, 608, 640, 607, 639, 669, 640, 677, 640, 669, 608, 609, 642, 610, 642, 609, 641, 610, 643, 611, 643, 610, 642, 611, 644, 612, 644, 611, 643, 670, 644, 678, 644, 670, 612, 613, 646, 614, 646, 613, 645, 614, 647, 615, 647, 614, 646, 615, 648, 616, 648, 615, 647, 671, 648, 679, 648, 671, 616, 617, 650, 618, 650, 617, 649, 618, 651, 619, 651, 618, 650, 619, 652, 620, 652, 619, 651, 672, 652, 680, 652, 672, 620, 621, 654, 622, 654, 621, 653, 622, 655, 623, 655, 622, 654, 673, 655, 681, 655, 673, 623, 624, 653, 621, 653, 624, 656, 625, 658, 626, 658, 625, 657, 626, 659, 627, 659, 626, 658, 674, 659, 682, 659, 674, 627, 628, 657, 625, 657, 628, 660, 629, 662, 630, 662, 629, 661, 630, 663, 631, 663, 630, 662, 675, 663, 683, 663, 675, 631, 632, 661, 629, 661, 632, 664, 633, 666, 634, 666, 633, 665, 634, 667, 635, 667, 634, 666, 676, 667, 684, 667, 676, 635, 636, 665, 633, 665, 636, 668, 669, 637, 605, 637, 669, 677, 670, 641, 609, 641, 670, 678, 671, 645, 613, 645, 671, 679, 672, 649, 617, 649, 672, 680, 673, 656, 624, 656, 673, 681, 674, 660, 628, 660, 674, 682, 675, 664, 632, 664, 675, 683, 676, 668, 636, 668, 676, 684, 673, 597, 579, 672, 597, 620, 672, 581, 597, 673, 579, 623, 669, 599, 608, 669, 579, 599, 674, 599, 580, 674, 580, 627, 670, 601, 612, 670, 580, 601, 675, 601, 582, 675, 582, 631, 671, 603, 616, 671, 582, 603, 676, 603, 581, 676, 581, 635]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Obelisque.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Obelisque.as new file mode 100644 index 0000000..c2c3e44 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/Obelisque.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class Obelisque extends Stage3DData { + + public function Obelisque(){ + vertices = new [-7.87402, 3.05176E-5, 7.87401, 7.87402, 3.05176E-5, -7.87402, -7.87402, 3.05176E-5, -7.87402, 7.87402, 3.05176E-5, 7.87401, -7.87402, 3.93703, -7.87402, -7.10341, 3.93703, -7.10341, -7.87402, 3.93703, 7.87401, 7.87402, 3.93703, -7.87402, 7.10341, 3.93703, -7.10341, 7.10341, 3.93703, 7.10341, -7.10341, 3.93703, 7.10341, 7.87402, 3.93703, 7.87401, 7.10341, 7.87405, 7.10341, -6.96849, 30.7914, 6.96849, -6.96849, 30.7914, -6.96849, 6.96849, 30.7914, 6.96849, 6.3304, 30.7914, 6.3304, 6.96849, 30.7914, -6.96849, -6.96849, 31.6024, 6.96849, -6.96849, 31.6024, -6.96849, 6.96849, 31.6024, -6.96849, 6.96849, 31.6024, 6.96849, -7.49496, 31.6024, 7.49496, -7.49496, 31.6024, -7.49496, 7.49496, 31.6024, 7.49496, 7.49496, 31.6024, -7.49496, -7.49496, 33.1575, -7.49496, -6.6501, 33.1575, -6.6501, -7.49496, 33.1575, 7.49496, 7.49496, 33.1575, -7.49496, 6.6501, 33.1575, -6.6501, 6.6501, 33.1575, 6.6501, -6.6501, 33.1575, 6.6501, 7.49496, 33.1575, 7.49496, -6.6501, 34.9567, -6.6501, -6.07683, 34.9567, -6.07683, -6.6501, 34.9567, 6.6501, 6.6501, 34.9567, -6.6501, 6.6501, 34.9567, 6.6501, -6.48938, 9.84254, -6.48938, 6.3304, 30.7914, -6.3304, 0.169673, 161.572, -0.0523381, 0.0253662, 161.572, -0.0523381, -4.00719, 147.366, -3.99855, -3.91466, 147.366, -3.90393, -4.00719, 147.366, 3.97546, 3.7906, 147.366, -3.99855, 3.69807, 147.366, -3.90393, -3.91466, 147.366, 3.88084, 3.7906, 147.366, 3.97546, -6.48938, 10.63, -6.48938, -6.3304, 10.63, -6.3304, -6.48938, 10.63, 6.48938, 6.48938, 10.63, -6.48938, 6.3304, 10.63, -6.3304, -6.3304, 10.63, 6.3304, 6.48938, 10.63, 6.48938, -6.3304, 30.7914, 6.3304, -6.3304, 30.7914, -6.3304, 6.3304, 10.63, 6.3304, -6.07683, 34.9567, 6.07683, 6.07683, 34.9567, -6.07683, 6.07683, 34.9567, 6.07683, 0.0253662, 161.572, 0.169674, 3.69807, 147.366, 3.88084, 0.169673, 161.572, 0.169674, -7.10341, 7.87405, 7.10341, 6.48938, 9.84254, 6.48938, 7.10341, 7.87405, -7.10341, -6.48938, 9.84254, 6.48938, 6.48938, 9.84254, -6.48938, -7.10341, 7.87405, -7.10341, -7.10341, 7.87405, 6.48938]; + uvs = new [0.000499725, 0.000499487, 0.9995, 0.999501, 0.000499487, 0.9995, 0.999501, 0.000499725, 0.000499487, 0.9995, 0.0493839, 0.950616, 0.000499725, 0.000499487, 0.9995, 0.999501, 0.950616, 0.950616, 0.950616, 0.0493839, 0.0493842, 0.0493836, 0.999501, 0.000499725, 0.950616, 0.0493839, 0.0579429, 0.0579427, 0.0579427, 0.942057, 0.942057, 0.057943, 0.901579, 0.0984213, 0.942057, 0.942057, 0.0579429, 0.0579427, 0.0579427, 0.942057, 0.942057, 0.942057, 0.942057, 0.057943, 0.0245457, 0.0245453, 0.0245455, 0.975454, 0.975455, 0.0245456, 0.975454, 0.975454, 0.0245455, 0.975454, 0.0781404, 0.921859, 0.0245457, 0.0245453, 0.975454, 0.975454, 0.921859, 0.92186, 0.92186, 0.0781406, 0.0781406, 0.0781404, 0.975455, 0.0245456, 0.0781404, 0.921859, 0.114507, 0.885493, 0.0781406, 0.0781404, 0.921859, 0.92186, 0.92186, 0.0781406, 0.0883361, 0.911664, 0.901579, 0.901579, 0.510763, 0.50332, 0.501609, 0.50332, 0.245797, 0.753654, 0.251667, 0.747652, 0.245798, 0.24781, 0.740463, 0.753654, 0.734593, 0.747652, 0.251667, 0.253813, 0.740463, 0.24781, 0.0883361, 0.911664, 0.0984212, 0.901579, 0.0883362, 0.0883361, 0.911664, 0.911664, 0.901579, 0.901579, 0.0984214, 0.0984212, 0.911664, 0.0883363, 0.0984214, 0.0984212, 0.0984212, 0.901579, 0.901579, 0.0984213, 0.114507, 0.114507, 0.885493, 0.885493, 0.885493, 0.114507, 0.501609, 0.489236, 0.734593, 0.253813, 0.510763, 0.489236, 0.0493842, 0.0493836, 0.911664, 0.0883363, 0.950616, 0.950616, 0.0883362, 0.0883361, 0.911664, 0.911664, 0.0493839, 0.950616, 0.0493841, 0.0883361]; + indices = new [1, 0, 2, 0, 1, 3, 11, 9, 10, 2, 6, 4, 6, 2, 0, 3, 6, 0, 6, 3, 11, 7, 3, 1, 3, 7, 11, 2, 7, 1, 7, 2, 4, 72, 10, 66, 72, 5, 10, 72, 71, 5, 5, 68, 8, 68, 5, 71, 9, 68, 12, 68, 9, 8, 9, 66, 10, 66, 9, 12, 69, 12, 67, 12, 69, 66, 67, 68, 70, 68, 67, 12, 14, 18, 19, 18, 14, 13, 14, 20, 17, 20, 14, 19, 20, 15, 17, 15, 20, 21, 15, 18, 13, 18, 15, 21, 19, 23, 25, 33, 32, 28, 32, 33, 31, 24, 28, 22, 28, 24, 33, 23, 28, 26, 28, 23, 22, 23, 29, 25, 29, 23, 26, 29, 24, 25, 24, 29, 33, 38, 60, 36, 60, 38, 62, 27, 36, 34, 36, 27, 32, 27, 37, 30, 37, 27, 34, 37, 31, 30, 31, 37, 38, 31, 36, 32, 36, 31, 38, 39, 68, 71, 68, 39, 70, 69, 72, 66, 72, 39, 71, 69, 39, 72, 63, 41, 42, 41, 63, 65, 49, 48, 45, 48, 49, 64, 56, 59, 55, 53, 67, 70, 67, 53, 56, 67, 52, 69, 52, 67, 56, 39, 52, 50, 52, 39, 69, 39, 53, 70, 53, 39, 50, 51, 57, 58, 57, 51, 55, 51, 40, 54, 40, 51, 58, 40, 59, 54, 59, 40, 16, 59, 57, 55, 57, 59, 16, 60, 43, 35, 43, 60, 45, 35, 46, 61, 46, 35, 43, 62, 45, 60, 45, 62, 49, 46, 62, 61, 62, 46, 49, 48, 42, 44, 42, 48, 63, 44, 41, 47, 41, 44, 42, 64, 63, 48, 63, 64, 65, 41, 64, 47, 64, 41, 65, 44, 45, 48, 45, 44, 43, 44, 46, 43, 46, 44, 47, 46, 64, 49, 64, 46, 47, 35, 36, 60, 36, 35, 34, 27, 28, 32, 28, 27, 26, 37, 35, 61, 35, 37, 34, 29, 27, 30, 27, 29, 26, 37, 62, 38, 62, 37, 61, 29, 31, 33, 31, 29, 30, 25, 20, 19, 18, 24, 22, 24, 18, 21, 18, 23, 19, 23, 18, 22, 15, 40, 17, 40, 15, 16, 17, 58, 14, 58, 17, 40, 14, 57, 13, 57, 14, 58, 13, 16, 15, 16, 13, 57, 25, 21, 20, 21, 25, 24, 5, 6, 10, 6, 5, 4, 7, 5, 8, 5, 7, 4, 7, 9, 11, 9, 7, 8, 10, 6, 11, 51, 53, 50, 53, 51, 54, 53, 59, 56, 59, 53, 54, 55, 52, 56, 51, 52, 55, 52, 51, 50]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/PalaisGarnier.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/PalaisGarnier.as new file mode 100644 index 0000000..7127978 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/PalaisGarnier.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class PalaisGarnier extends Stage3DData { + + public function PalaisGarnier(){ + vertices = new [12.0534, 0.724365, -304.634, -29.7562, 0.724365, -315.924, 182.483, 0.724365, -225.987, 190.694, 0.724365, -256.394, 190.694, 118.835, -256.394, 182.483, 108.992, -225.988, 182.483, 99.1496, -225.987, 148.885, 0.724365, -267.685, 146.832, 0.724365, -260.083, -37.9671, 108.992, -285.517, -37.9671, 0.724365, -285.517, 146.487, 126.709, -231.63, 146.487, 118.835, -231.63, 177.582, 126.709, -245.664, 152.742, 118.835, -252.951, 174.533, 118.835, -235.272, -25.363, 118.835, -289.116, -25.363, 126.709, -289.116, -27.945, 118.835, -278.733, -0.239176, 118.835, -293.893, -22.781, 126.709, -299.498, -5.51541, 126.709, -272.676, 171.485, 126.709, -224.879, 148.885, 118.835, -267.685, 121.126, 0.724365, 91.8419, -109.012, 0.724365, -113.034, -153.683, 0.724365, -125.097, 157.049, 0.724365, -41.1885, -144.935, 0.724365, 19.9959, -144.935, 39.2338, 19.9959, -191.121, 0.724365, 191.035, -189.606, 38.6844, 7.9332, 205.288, 99.1496, -219.829, 196.051, 0.724365, -185.621, 200.409, 0.724365, 17.375, 188.071, 0.724365, 63.0645, 175.698, 0.724365, 67.2375, 197.904, 0.724365, 54.4744, 197.904, 105.055, 54.4744, 203.702, 0.724365, 42.775, 203.702, 105.055, 42.775, 204.582, 0.724365, 29.7474, 204.582, 105.055, 29.7474, 154.719, 99.1496, 5.03716, 144.885, 105.055, 13.6273, 139.088, 99.1496, 25.3267, 139.088, 105.055, 25.3267, 138.208, 99.1496, 38.3543, 138.208, 105.055, 38.3543, 150.971, 105.055, 60.5604, 162.671, 105.055, 66.3582, -179.704, 105.055, -28.7339, -150.556, 99.1496, -87.5508, -163.584, 99.1496, -88.4301, -150.556, 105.055, -87.5508, -138.857, 99.1496, -81.7529, -138.857, 105.055, -81.7529, -130.267, 99.1496, -71.9193, -130.267, 105.055, -71.9193, -126.094, 99.1496, -59.5468, -126.094, 105.055, -59.5468, -126.973, 105.055, -46.5192, -132.771, 99.1496, -34.8198, -132.771, 105.055, -34.8198, -142.605, 99.1496, -26.2297, -154.977, 105.055, -22.0567, -191.588, 0.724365, -63.9675, -185.79, 0.724365, -75.667, -192.467, 0.724365, -50.94, -175.956, 0.724365, -84.2571, -188.294, 0.724365, -38.5675, 39.2376, 148.362, -133.47, -144.935, 99.1496, 19.9959, -168.005, 99.1496, -22.936, -154.977, 99.1496, -22.0567, -37.9671, 99.1496, -285.517, 56.5113, 118.835, 74.3936, 77.416, 126.709, 80.0386, -11.9044, 148.362, 55.9189, -80.32, 118.835, 37.4442, 21.8919, 148.362, -69.2358, 64.4506, 190.488, 211.112, -110.005, 190.488, 41.6622, 165.797, 99.1496, 103.905, 162.671, 99.1496, 66.3582, 175.698, 99.1496, 67.2375, 167.091, 99.1496, 0.864121, 180.119, 99.1496, 1.74345, -107.502, 99.1496, 213.615, -106.363, 99.1496, 254.703, 0.557594, 99.1496, 206.093, -4.65382, 99.1496, 331.104, 52.1341, 118.835, 256.723, -8.67974, 118.835, 240.301, 61.3715, 118.835, 222.515, -107.502, 118.835, 213.615, -29.7562, 118.835, -315.924, -22.781, 118.835, -299.498, 12.0534, 118.835, -304.634, 10.0006, 118.835, -297.032, -2.87729, 118.835, -283.284, 146.832, 118.835, -260.083, 149.615, 118.835, -242.291, 177.582, 118.835, -245.664, 149.615, 126.709, -242.291, -27.945, 126.709, -278.733, 152.742, 126.709, -252.951, -0.239176, 126.709, -293.893, 144.817, 105.055, 26.7627, 151.998, 105.055, 14.4362, 164.173, 105.055, 60.5911, 164.38, 105.055, 7.35151, 178.438, 105.055, 60.6466, 178.645, 105.055, 7.40703, 198.001, 105.055, 41.2354, -168.316, 108.992, 197.193, -156, 108.992, 151.583, -125.209, 108.992, 37.5568, -109.012, 99.1496, -113.034, 95.2417, 108.992, 97.0862, 98.3208, 108.992, 85.6836, 157.049, 99.1496, -41.1885, -50.4561, 118.835, 33.6611, -60.2386, 118.835, 12.5756, -50.4561, 142.457, 33.6611, -62.2194, 118.835, -10.5841, -56.1596, 118.835, -33.0245, -42.7903, 142.457, -52.0391, -23.7238, 118.835, -65.3344, -42.7903, 118.835, -52.0391, -23.7238, 142.457, -65.3344, -1.2599, 118.835, -71.3067, -1.2599, 142.457, -71.3067, 42.9392, 118.835, -59.3714, 42.9392, 142.457, -59.3714, 59.3433, 118.835, -42.9033, 69.1258, 142.457, -21.8178, 69.1258, 118.835, -21.8178, 71.1066, 118.835, 1.34192, -31.3489, 118.835, -279.652, 154.394, 126.709, -205.026, 171.485, 118.835, -224.879, 181.457, 118.835, -222.187, -11.3662, 118.835, -217.906, 125.465, 118.835, -180.957, -34.052, 118.835, 50.1293, -34.052, 142.457, 50.1293, 32.611, 118.835, 56.0922, 51.6775, 142.457, 42.797, 51.6775, 118.835, 42.797, 65.0468, 118.835, 23.7824, 21.8919, 118.835, -69.2358, 21.8919, 142.457, -69.2358, -13.4439, 234.099, 61.6202, -2.0413, 229.374, 64.6993, -0.501748, 229.374, 58.998, 95.2417, 193.924, 97.0862, 95.2417, 190.488, 97.0862, -140.796, 190.488, 155.688, -45.7746, 234.099, 181.348, -142.208, 194.144, 155.307, -60.7723, 0.724365, -291.675, 142.381, 105.055, 50.7267, 188.071, 105.055, 63.0645, 200.409, 105.055, 17.375, 154.719, 105.055, 5.03716, 167.091, 105.055, 0.864121, 191.818, 105.055, 7.5413, 142.381, 99.1496, 50.7267, 144.885, 99.1496, 13.6273, 0.557594, 118.835, 206.093, -98.265, 118.835, 179.407, -168.316, 99.1496, 197.193, 41.8704, 0.724365, 294.731, -156.689, 0.724365, 290.05, -106.363, 0.724365, 254.703, -24.8465, 229.374, 58.5411, 201.72, 99.1496, -29.1258, 201.72, 0.724365, -29.1258, 191.818, 0.724365, 7.5413, 165.797, 0.724365, 103.905, -153.683, 99.1496, -125.097, -154.196, 0.724365, -123.197, -163.584, 0.724365, -88.4301, -189.606, 99.1496, 7.9332, -179.704, 0.724365, -28.7339, -179.704, 99.1496, -28.7339, -189.606, 0.724365, 7.9332, -132.647, 105.055, -62.3244, -140.385, 114.111, -74.0658, -133.505, 114.111, -62.0962, -137.073, 122.428, -61.1476, -142.988, 129.161, -59.575, -147.337, 129.161, -67.1408, -150.65, 133.627, -57.538, -159.281, 135.372, -55.2434, -132.675, 105.055, -48.0588, -133.532, 114.111, -48.2903, -137.096, 122.428, -49.2528, -143.005, 129.161, -50.8484, -150.659, 133.627, -52.9153, -140.458, 114.111, -36.3476, -139.831, 105.055, -35.7183, -143.064, 122.428, -38.9632, -147.383, 129.161, -43.2995, -152.978, 133.627, -48.9164, -152.428, 114.111, -29.4679, -152.2, 105.055, -28.6096, -153.376, 122.428, -33.0358, -154.949, 129.161, -38.951, -156.986, 133.627, -46.6128, -166.234, 114.111, -29.4948, -166.465, 105.055, -28.6373, -165.271, 122.428, -33.059, -163.676, 129.161, -38.968, -161.609, 133.627, -46.6218, -178.176, 114.111, -36.421, -178.806, 105.055, -35.7942, -175.561, 122.428, -39.0264, -171.224, 129.161, -43.3459, -165.608, 133.627, -48.941, -185.914, 105.055, -48.1624, -185.056, 114.111, -48.3906, -181.488, 122.428, -49.3392, -175.573, 129.161, -50.9118, -167.911, 133.627, -52.9488, -185.029, 114.111, -62.1964, -185.887, 105.055, -62.428, -181.465, 122.428, -61.234, -175.556, 129.161, -59.6383, -167.902, 133.627, -57.5715, -178.103, 114.111, -74.1392, -178.73, 105.055, -74.7685, -175.498, 122.428, -71.5236, -171.178, 129.161, -67.1872, -165.583, 133.627, -61.5704, -166.362, 105.055, -81.8772, -166.133, 114.111, -81.0189, -165.185, 122.428, -77.451, -163.612, 129.161, -71.5358, -161.575, 133.627, -63.8739, -152.328, 114.111, -80.992, -152.096, 105.055, -81.8495, 197.198, 114.111, 27.1965, 198.056, 105.055, 26.9699, 197.144, 114.111, 41.0022, 178.412, 114.111, 8.26404, 164.606, 114.111, 8.21031, 190.341, 114.111, 15.2134, 190.972, 105.055, 14.5879, 187.721, 122.428, 17.8138, 187.71, 129.161, 29.6992, 183.376, 129.161, 22.1249, 193.628, 122.428, 28.1381, 193.582, 122.428, 40.0328, 187.676, 129.161, 38.4257, 180.044, 133.627, 31.7213, 180.026, 133.627, 36.344, 177.443, 122.428, 11.8263, 173.754, 133.627, 25.3821, 169.131, 133.627, 25.3641, 165.548, 122.428, 11.7801, 175.836, 129.161, 17.7322, 177.748, 133.627, 27.709, 167.109, 129.161, 17.6983, 165.119, 133.627, 27.6598, 159.535, 129.161, 22.0321, 155.097, 122.428, 50.1843, 145.62, 114.111, 40.8017, 149.19, 122.428, 39.8601, 152.477, 114.111, 52.7847, 144.761, 105.055, 41.0282, 151.846, 105.055, 53.4103, 162.774, 133.627, 36.2768, 159.442, 129.161, 45.8733, 155.108, 129.161, 38.2989, 165.07, 133.627, 40.2892, 169.064, 133.627, 42.6161, 166.982, 129.161, 50.2659, 165.375, 122.428, 56.1718, 164.406, 114.111, 59.7341, 173.687, 133.627, 42.6341, 175.709, 129.161, 50.2999, 190.195, 114.111, 52.9315, 190.82, 105.055, 53.562, 183.283, 129.161, 45.966, 177.699, 133.627, 40.3383, 177.27, 122.428, 56.2181, 178.212, 114.111, 59.7878, 187.594, 122.428, 50.3108, 13.6411, 191.213, -38.6812, 1.43714, 191.213, -39.7728, 18.5238, 185.154, -56.763, -0.158936, 185.154, -58.4342, 21.1387, 177.531, -66.4464, -1.01369, 177.531, -68.428, 21.8919, 166.079, -69.2358, -10.4042, 191.213, -36.6246, -18.2865, 185.154, -53.6147, -22.5078, 177.531, -62.7134, -23.7238, 166.079, -65.3344, -20.4546, 191.213, -29.6163, -33.6726, 185.154, -42.8859, -40.7512, 177.531, -49.9921, -42.7903, 166.079, -52.0391, -13.3809, 193.638, -12.975, -27.5019, 191.213, -19.5933, -44.4612, 185.154, -27.5417, -53.5434, 177.531, -31.7984, -30.6962, 191.213, -7.76431, -49.3512, 185.154, -9.433, -59.3416, 177.531, -10.3266, -62.2194, 166.079, -10.5841, -29.652, 191.213, 4.44376, -47.7528, 185.154, 9.25611, -57.4463, 177.531, 11.8333, -60.2386, 166.079, 12.5756, -24.4955, 191.213, 15.5585, -39.8587, 185.154, 26.2714, -48.0862, 177.531, 32.0085, -26.6211, 185.154, 39.5606, -15.8484, 191.213, 24.2393, -32.3902, 177.531, 47.7657, -6.87862, 193.638, 11.482, -4.75384, 191.213, 29.439, -9.63659, 185.154, 47.5209, -12.2515, 177.531, 57.2043, 7.45008, 191.213, 30.5307, 9.04615, 185.154, 49.1921, 19.2914, 191.213, 27.3825, 27.1738, 185.154, 44.3726, 9.9009, 177.531, 59.1858, 31.395, 177.531, 53.4713, 32.611, 166.079, 56.0922, 29.3418, 191.213, 20.3742, 42.5598, 185.154, 33.6437, 49.6384, 177.531, 40.75, 36.3892, 191.213, 10.3511, 53.3484, 185.154, 18.2996, 62.4307, 177.531, 22.5562, 65.0468, 166.079, 23.7824, 39.5834, 191.213, -1.47782, 58.2384, 185.154, 0.190864, 68.2288, 177.531, 1.0845, 71.1066, 166.079, 1.34192, 38.5393, 191.213, -13.6859, 23.4678, 193.638, -9.67892, 56.64, 185.154, -18.4982, 66.3335, 177.531, -21.0754, 33.3827, 191.213, -24.8006, 20.5906, 193.638, -15.8805, 48.7459, 185.154, -35.5136, 56.9734, 177.531, -41.2507, 24.7356, 191.213, -33.4814, 35.5083, 185.154, -48.8028, 41.2774, 177.531, -57.0079, 42.9392, 166.079, -59.3714, 0.165733, 213.513, -6.62602, -15.1631, 209.576, -6.37489, -0.12219, 213.513, -3.40718, -14.5806, 209.576, 0.436787, -11.7034, 209.576, 6.63841, 1.72627, 213.513, -0.756338, -6.87862, 209.576, 11.482, 4.84621, 213.513, 0.0861564, 6.12111, 209.576, 14.9924, 12.7281, 209.576, 13.2358, 7.77777, 213.513, -1.27391, 22.2681, 209.576, 3.73289, 9.14923, 213.513, -4.20015, 23.4678, 209.576, -9.67892, 8.31888, 213.513, -7.32334, 15.7658, 209.576, -20.7241, 5.67525, 213.513, -9.18211, 9.57546, 209.576, -23.6254, 2.76611, 209.576, -24.2345, 2.45532, 213.513, -8.90671, -9.4487, 209.576, -18.5675, -191.588, 105.055, -63.9675, -188.294, 105.055, -38.5675, -192.467, 105.055, -50.94, -185.79, 105.055, -75.667, -175.956, 105.055, -84.2571, -168.005, 105.055, -22.936, -163.584, 105.055, -88.4301, -142.605, 105.055, -26.2297, 61.3715, 194.144, 222.515, 98.3208, 172.268, 85.6836, 84.5289, 194.144, 81.9593, -122.13, 194.363, 26.1542, -11.9044, 234.099, 55.9189, -23.307, 229.374, 52.8398, -159.079, 194.144, 162.985, 98.3208, 118.835, 85.6836, 9.57546, 193.638, -23.6254, 15.7658, 193.638, -20.7241, 20.5906, 209.576, -15.8805, 18.3359, 193.638, 9.32542, 22.2681, 193.638, 3.73289, 18.3359, 209.576, 9.32542, 12.7281, 193.638, 13.2358, 6.12111, 193.638, 14.9924, -0.688243, 209.576, 14.3833, -0.688243, 193.638, 14.3833, -3.84092, 193.638, -22.4779, 2.76611, 193.638, -24.2345, -3.84092, 209.576, -22.4779, -14.5806, 193.638, 0.436787, -11.7034, 193.638, 6.63841, -15.1631, 193.638, -6.37489, -13.3809, 209.576, -12.975, -9.4487, 193.638, -18.5675, 24.0504, 193.638, -2.86725, 24.0504, 209.576, -2.86725, 10.1471, 142.457, 62.0646, -13.0047, 118.835, 59.9937, 10.1471, 118.835, 62.0646, -13.0047, 166.079, 59.9937, 10.1471, 166.079, 62.0646, -50.4561, 166.079, 33.6611, -56.1596, 142.457, -33.0245, -56.1596, 166.079, -33.0245, 71.1066, 142.457, 1.34192, 65.0468, 142.457, 23.7824, 51.6775, 166.079, 42.797, 32.611, 142.457, 56.0922, -60.2386, 142.457, 12.5756, -62.2194, 142.457, -10.5841, -125.209, 194.363, 37.5568, 98.3208, 194.144, 85.6836, 49.8113, 194.144, 217.069, 51.868, 194.144, 209.877, 61.1718, 194.144, 212.932, 59.8905, 194.144, 220.446, -156, 194.144, 151.583, -154.605, 194.144, 154.614, -146.398, 194.144, 156.887, -148.002, 194.144, 163.796, -168.316, 0.724365, 197.193, -151.16, 221.703, 159.245, 55.8792, 221.703, 215.162, -178.58, 99.1496, 235.202, -178.58, 0.724365, 235.202, -156.689, 99.1496, 290.05, -118.68, 0.724365, 300.313, -118.68, 99.1496, 300.313, -30.346, 0.724365, 275.23, -30.346, 99.1496, 275.23, -42.6625, 0.724365, 320.841, -42.6625, 99.1496, 320.841, -4.65382, 0.724365, 331.104, 41.8704, 99.1496, 294.731, 149.615, 157.941, -242.291, 174.533, 157.941, -235.272, -2.87729, 126.709, -283.284, -25.363, 159.873, -289.116, -2.87729, 159.873, -283.284, -24.9141, 277.748, 58.5228, -13.4439, 234.099, 61.6202, -24.8465, 229.374, 58.5411, -2.10894, 277.748, 64.681, -2.0413, 229.374, 64.6993, -156.952, 133.627, -63.865, -139.756, 105.055, -74.6926, 171.409, 135.372, 33.9991, 145.674, 114.111, 26.9959, -1.2599, 166.079, -71.3067, 180.119, 105.055, 1.74345, -126.973, 99.1496, -46.5192, -5.51541, 118.835, -272.676, -8.67974, 99.1496, 240.301, -154.886, 129.161, -71.5188, 155.142, 129.161, 29.5725, -156.209, 194.144, 161.523, 21.8919, 148.362, -69.2358, 59.3433, 142.457, -42.9033, 64.4506, 108.992, 211.112, 52.1341, 108.992, 256.723, -14.9835, 229.858, 67.3215, -122.13, 118.835, 26.1542, -48.8537, 234.099, 192.75, 80.0382, 190.488, 92.9808, -111.417, 194.144, 41.2811, 180.43, 118.835, -218.386, -25.363, 126.709, -289.116, 205.288, 0.724365, -219.829, -125.209, 190.488, 37.5568, -156, 190.488, 151.583, 150.971, 99.1496, 60.5604, -38.9935, 118.835, -281.716, 149.615, 126.709, -242.291, -122.13, 108.992, 26.1542, -191.121, 99.1496, 191.035, 61.3715, 108.992, 222.515, 121.126, 99.1496, 91.8419, 74.9393, 0.724365, 262.881, -101.225, 126.709, 31.7992, -24.247, 126.709, -253.266, 81.4498, 194.144, 93.3619, -14.9835, 234.099, 67.3215, -45.7746, 229.858, 181.348, 47.5796, 194.144, 218.791, -145.287, 194.144, 166.71, 203.236, 0.724365, -212.228, 175.698, 105.055, 67.2375, 191.818, 99.1496, 7.5413, 49.2471, 190.488, 207.007, -143, 122.428, -71.4604, -153.29, 122.428, -77.4278, 149.236, 122.428, 27.9653, -34.052, 166.079, 50.1293, 59.3433, 166.079, -42.9033, 64.4506, 194.144, 211.112, -38.9935, 108.992, -281.716, 50.6587, 194.144, 207.388, -98.265, 99.1496, 179.407, 174.533, 126.709, -235.272, 152.623, 114.111, 15.0667, 162.792, 133.627, 31.6542, 10.0006, 0.724365, -297.032, -60.7723, 99.1496, -291.675, 52.1341, 99.1496, 256.723, -152.954, 133.627, -61.5458, 180.43, 108.992, -218.386, 52.1341, 0.724365, 256.723, -108.338, 194.144, 29.8785, 155.224, 122.428, 17.6873, 69.1258, 166.079, -21.8178, 74.9393, 99.1496, 262.881, 196.051, 99.1496, -185.621, -159.079, 118.835, 162.985, -168.316, 118.835, 197.193, -108.338, 212.833, 29.8785, -122.13, 212.833, 26.1542, 98.3208, 212.306, 85.6836, 84.5289, 212.306, 81.9593, 98.3208, 194.144, 85.6836, 84.5289, 194.144, 81.9593, -122.13, 194.363, 26.1542, -108.338, 194.144, 29.8785]; + uvs = new [0.514172, 0.982069, 0.409164, 0.9995, 0.942223, 0.86064, 0.962846, 0.907588, 0.962846, 0.907588, 0.942223, 0.86064, 0.942223, 0.86064, 0.857837, 0.92502, 0.852681, 0.913283, 0.388541, 0.952553, 0.388541, 0.952553, 0.851816, 0.869352, 0.851816, 0.869352, 0.929914, 0.891021, 0.867526, 0.902272, 0.922256, 0.874975, 0.420198, 0.958109, 0.420198, 0.958109, 0.413713, 0.942078, 0.483299, 0.965485, 0.426683, 0.97414, 0.470047, 0.932726, 0.914599, 0.858929, 0.857837, 0.92502, 0.788119, 0.369917, 0.210106, 0.686242, 0.0979109, 0.704867, 0.878343, 0.575314, 0.119882, 0.480846, 0.119882, 0.480846, 0.00388017, 0.216764, 0.00768709, 0.49947, 0.9995, 0.851132, 0.9763, 0.798316, 0.987244, 0.484893, 0.956257, 0.414349, 0.925182, 0.407906, 0.980955, 0.427612, 0.980955, 0.427612, 0.995517, 0.445675, 0.995517, 0.445675, 0.997725, 0.46579, 0.997725, 0.46579, 0.872491, 0.503942, 0.847793, 0.490679, 0.833231, 0.472615, 0.833231, 0.472615, 0.831022, 0.452501, 0.831022, 0.452501, 0.863078, 0.418215, 0.892462, 0.409263, 0.0325554, 0.556084, 0.105763, 0.646896, 0.0730426, 0.648254, 0.105763, 0.646896, 0.135147, 0.637944, 0.135147, 0.637944, 0.156722, 0.622761, 0.156722, 0.622761, 0.167203, 0.603658, 0.167203, 0.603658, 0.164994, 0.583544, 0.150432, 0.56548, 0.150432, 0.56548, 0.125734, 0.552217, 0.0946596, 0.545774, 0.00270811, 0.610484, 0.0172699, 0.628548, 0.000499576, 0.59037, 0.0419681, 0.641811, 0.0109806, 0.571267, 0.582448, 0.717795, 0.119882, 0.480846, 0.0619396, 0.547132, 0.0946596, 0.545774, 0.388541, 0.952553, 0.625833, 0.396857, 0.678337, 0.388141, 0.454001, 0.425381, 0.282168, 0.453906, 0.538883, 0.618618, 0.645773, 0.185765, 0.207611, 0.447393, 0.900314, 0.351292, 0.892462, 0.409263, 0.925182, 0.407906, 0.903565, 0.510385, 0.936285, 0.509027, 0.213897, 0.181901, 0.216758, 0.118462, 0.4853, 0.193515, 0.472211, 0.000499487, 0.614839, 0.115344, 0.4621, 0.140699, 0.63804, 0.16816, 0.213897, 0.181901, 0.409164, 0.999501, 0.426683, 0.97414, 0.514172, 0.982069, 0.509017, 0.970332, 0.476673, 0.949105, 0.852681, 0.913283, 0.859671, 0.885812, 0.929914, 0.891021, 0.859671, 0.885812, 0.413713, 0.942078, 0.867526, 0.902272, 0.483299, 0.965485, 0.847621, 0.470398, 0.865656, 0.48943, 0.896234, 0.418168, 0.896755, 0.500369, 0.932063, 0.418082, 0.932584, 0.500283, 0.981197, 0.448052, 0.0611576, 0.207256, 0.0920914, 0.277678, 0.169426, 0.453732, 0.210106, 0.686242, 0.723108, 0.36182, 0.730841, 0.379425, 0.878343, 0.575314, 0.357174, 0.459747, 0.332605, 0.492303, 0.357174, 0.459747, 0.32763, 0.528061, 0.342849, 0.562708, 0.376428, 0.592067, 0.424315, 0.612594, 0.376428, 0.592067, 0.424315, 0.612594, 0.480735, 0.621816, 0.480735, 0.621816, 0.591745, 0.603388, 0.591745, 0.603388, 0.632946, 0.577961, 0.657515, 0.545406, 0.657515, 0.545406, 0.66249, 0.509647, 0.405164, 0.943497, 0.871674, 0.828277, 0.914599, 0.858929, 0.939645, 0.854772, 0.455352, 0.848163, 0.799016, 0.791113, 0.398375, 0.43432, 0.398375, 0.43432, 0.565805, 0.425114, 0.613692, 0.445641, 0.613692, 0.445641, 0.647271, 0.475, 0.538883, 0.618618, 0.538883, 0.618618, 0.450134, 0.416579, 0.478773, 0.411825, 0.482639, 0.420627, 0.723108, 0.36182, 0.723108, 0.36182, 0.130276, 0.271339, 0.368932, 0.231722, 0.126731, 0.271928, 0.331264, 0.962061, 0.841503, 0.433398, 0.956257, 0.414349, 0.987244, 0.484893, 0.872491, 0.503942, 0.903565, 0.510385, 0.96567, 0.500076, 0.841503, 0.433398, 0.847793, 0.490679, 0.4853, 0.193515, 0.237098, 0.234717, 0.0611576, 0.207256, 0.589061, 0.056659, 0.0903616, 0.0638874, 0.216758, 0.118462, 0.421495, 0.421333, 0.990538, 0.556689, 0.990538, 0.556689, 0.96567, 0.500076, 0.900314, 0.351292, 0.0979109, 0.704867, 0.096622, 0.701933, 0.0730426, 0.648254, 0.00768709, 0.49947, 0.0325554, 0.556084, 0.0325554, 0.556084, 0.00768709, 0.49947, 0.150745, 0.607947, 0.13131, 0.626076, 0.148589, 0.607595, 0.139628, 0.60613, 0.124771, 0.603702, 0.113849, 0.615384, 0.105528, 0.600557, 0.0838511, 0.597014, 0.150675, 0.585921, 0.148521, 0.586279, 0.139569, 0.587765, 0.124728, 0.590228, 0.105505, 0.593419, 0.131125, 0.567839, 0.1327, 0.566868, 0.124582, 0.571878, 0.113733, 0.578573, 0.0996802, 0.587245, 0.101063, 0.557217, 0.101636, 0.555892, 0.0986801, 0.562726, 0.0947303, 0.571859, 0.0896141, 0.583689, 0.0663879, 0.557259, 0.0658064, 0.555935, 0.0688052, 0.562762, 0.0728128, 0.571885, 0.0780038, 0.583703, 0.0363925, 0.567953, 0.034812, 0.566985, 0.0429618, 0.571975, 0.053853, 0.578645, 0.0679603, 0.587283, 0.0169577, 0.586081, 0.0191136, 0.586433, 0.0280747, 0.587898, 0.0429312, 0.590326, 0.0621746, 0.593471, 0.019181, 0.607749, 0.0170275, 0.608107, 0.0281328, 0.606263, 0.0429739, 0.6038, 0.0621972, 0.600609, 0.0365768, 0.626189, 0.0350025, 0.62716, 0.0431206, 0.62215, 0.0539695, 0.615455, 0.068022, 0.606783, 0.0660665, 0.638136, 0.0666396, 0.636811, 0.0690221, 0.631302, 0.0729719, 0.622169, 0.0780881, 0.610339, 0.101314, 0.636769, 0.101896, 0.638093, 0.97918, 0.469728, 0.981337, 0.470078, 0.979045, 0.448413, 0.931998, 0.49896, 0.897324, 0.499043, 0.96196, 0.48823, 0.963543, 0.489196, 0.955377, 0.484215, 0.95535, 0.465864, 0.944465, 0.477559, 0.970214, 0.468275, 0.970098, 0.449909, 0.955265, 0.452391, 0.936097, 0.462742, 0.936051, 0.455605, 0.929563, 0.49346, 0.920298, 0.47253, 0.908688, 0.472558, 0.899689, 0.493531, 0.925527, 0.484341, 0.930331, 0.468937, 0.90361, 0.484393, 0.898611, 0.469013, 0.884586, 0.477702, 0.873441, 0.434235, 0.849638, 0.448722, 0.858604, 0.450176, 0.866859, 0.430221, 0.847481, 0.448372, 0.865275, 0.429255, 0.892721, 0.455708, 0.884353, 0.440892, 0.873468, 0.452586, 0.898487, 0.449513, 0.90852, 0.445921, 0.903291, 0.43411, 0.899255, 0.424991, 0.89682, 0.419491, 0.92013, 0.445893, 0.925209, 0.434057, 0.961591, 0.429994, 0.963162, 0.429021, 0.944232, 0.440748, 0.930207, 0.449438, 0.92913, 0.424919, 0.931494, 0.419408, 0.95506, 0.43404, 0.51816, 0.571442, 0.487509, 0.573128, 0.530424, 0.59936, 0.4835, 0.601941, 0.536991, 0.614311, 0.481353, 0.617371, 0.538883, 0.618618, 0.457768, 0.568267, 0.437971, 0.594499, 0.427369, 0.608548, 0.424315, 0.612594, 0.432526, 0.557446, 0.399328, 0.577934, 0.381549, 0.588906, 0.376428, 0.592067, 0.450292, 0.531752, 0.414826, 0.541971, 0.372231, 0.554243, 0.34942, 0.560815, 0.406803, 0.523707, 0.359949, 0.526284, 0.334857, 0.527663, 0.32763, 0.528061, 0.409425, 0.504858, 0.363964, 0.497428, 0.339618, 0.493449, 0.332605, 0.492303, 0.422377, 0.487697, 0.383791, 0.471157, 0.363127, 0.462299, 0.417038, 0.450638, 0.444095, 0.474294, 0.402548, 0.43797, 0.466623, 0.493991, 0.47196, 0.466266, 0.459696, 0.438348, 0.453129, 0.423397, 0.502611, 0.46458, 0.50662, 0.435767, 0.532351, 0.469441, 0.552149, 0.443209, 0.508766, 0.420337, 0.562751, 0.42916, 0.565805, 0.425114, 0.557594, 0.480262, 0.590792, 0.459774, 0.608571, 0.448802, 0.575294, 0.495737, 0.617889, 0.483465, 0.6407, 0.476893, 0.647271, 0.475, 0.583317, 0.514001, 0.630171, 0.511425, 0.655262, 0.510045, 0.66249, 0.509647, 0.580694, 0.53285, 0.542841, 0.526663, 0.626156, 0.54028, 0.650502, 0.544259, 0.567743, 0.550011, 0.535615, 0.536238, 0.606329, 0.566552, 0.626993, 0.57541, 0.546025, 0.563414, 0.573082, 0.58707, 0.587571, 0.599738, 0.591745, 0.603388, 0.484316, 0.52195, 0.445816, 0.521562, 0.483593, 0.51698, 0.447279, 0.511045, 0.454505, 0.50147, 0.488235, 0.512887, 0.466623, 0.493991, 0.496071, 0.511586, 0.499273, 0.488571, 0.515867, 0.491283, 0.503434, 0.513686, 0.539828, 0.505956, 0.506879, 0.518204, 0.542841, 0.526663, 0.504793, 0.523026, 0.523497, 0.543717, 0.498153, 0.525896, 0.507949, 0.548196, 0.490847, 0.549137, 0.490066, 0.525471, 0.460168, 0.540387, 0.00270811, 0.610484, 0.0109806, 0.571267, 0.000499576, 0.59037, 0.0172699, 0.628548, 0.0419681, 0.641811, 0.0619396, 0.547132, 0.0730426, 0.648254, 0.125734, 0.552217, 0.63804, 0.16816, 0.730841, 0.379425, 0.696202, 0.385175, 0.17716, 0.471338, 0.454001, 0.425381, 0.425362, 0.430135, 0.0843579, 0.260072, 0.730841, 0.379425, 0.507949, 0.548196, 0.523497, 0.543717, 0.535615, 0.536238, 0.529952, 0.497321, 0.539828, 0.505956, 0.529952, 0.497321, 0.515867, 0.491283, 0.499273, 0.488571, 0.482171, 0.489512, 0.482171, 0.489512, 0.474253, 0.546425, 0.490847, 0.549137, 0.474253, 0.546425, 0.447279, 0.511045, 0.454505, 0.50147, 0.445816, 0.521562, 0.450292, 0.531752, 0.460168, 0.540387, 0.544304, 0.516146, 0.544304, 0.516146, 0.509385, 0.415892, 0.451237, 0.41909, 0.509385, 0.415892, 0.451237, 0.41909, 0.509385, 0.415892, 0.357174, 0.459747, 0.342849, 0.562708, 0.342849, 0.562708, 0.66249, 0.509647, 0.647271, 0.475, 0.613692, 0.445641, 0.565805, 0.425114, 0.332605, 0.492303, 0.32763, 0.528061, 0.169426, 0.453732, 0.730841, 0.379425, 0.609005, 0.176569, 0.614171, 0.187673, 0.637538, 0.182955, 0.63432, 0.171354, 0.0920915, 0.277678, 0.0955948, 0.272997, 0.116206, 0.269489, 0.112177, 0.258821, 0.0611576, 0.207256, 0.104246, 0.265848, 0.624245, 0.179513, 0.0353794, 0.148571, 0.0353794, 0.148571, 0.0903616, 0.0638874, 0.185824, 0.0480404, 0.185824, 0.0480404, 0.407683, 0.0867683, 0.407683, 0.0867683, 0.376749, 0.0163466, 0.376749, 0.0163466, 0.472211, 0.000499487, 0.589061, 0.056659, 0.859671, 0.885812, 0.922256, 0.874975, 0.476673, 0.949105, 0.420198, 0.958109, 0.476673, 0.949105, 0.421325, 0.421361, 0.450134, 0.416579, 0.421495, 0.421333, 0.478603, 0.411853, 0.478773, 0.411825, 0.0896984, 0.610326, 0.13289, 0.627043, 0.914409, 0.459225, 0.849773, 0.470038, 0.480735, 0.621816, 0.936285, 0.509027, 0.164994, 0.583544, 0.470047, 0.932726, 0.4621, 0.140699, 0.0948894, 0.622143, 0.873553, 0.46606, 0.0915661, 0.26233, 0.538883, 0.618618, 0.632946, 0.577961, 0.645773, 0.185765, 0.614839, 0.115344, 0.446267, 0.407776, 0.17716, 0.471338, 0.361199, 0.214116, 0.684923, 0.368159, 0.204066, 0.447982, 0.937067, 0.848903, 0.420198, 0.958109, 0.9995, 0.851132, 0.169426, 0.453732, 0.0920915, 0.277678, 0.863078, 0.418215, 0.385963, 0.946684, 0.859671, 0.885812, 0.17716, 0.471338, 0.00388017, 0.216764, 0.63804, 0.16816, 0.788119, 0.369917, 0.672117, 0.105836, 0.229664, 0.462622, 0.423001, 0.902757, 0.688468, 0.36757, 0.446267, 0.407776, 0.368932, 0.231722, 0.6034, 0.17391, 0.118998, 0.254322, 0.994345, 0.839395, 0.925182, 0.407906, 0.96567, 0.500076, 0.607588, 0.192104, 0.12474, 0.622053, 0.098897, 0.631266, 0.85872, 0.468541, 0.398375, 0.43432, 0.632946, 0.577961, 0.645773, 0.185765, 0.385963, 0.946684, 0.611134, 0.191516, 0.237098, 0.234717, 0.922256, 0.874975, 0.867227, 0.488457, 0.892767, 0.462846, 0.509017, 0.970332, 0.331264, 0.962061, 0.614839, 0.115344, 0.099742, 0.606745, 0.937067, 0.848903, 0.614839, 0.115344, 0.211799, 0.465587, 0.873758, 0.48441, 0.657515, 0.545406, 0.672117, 0.105836, 0.9763, 0.798316, 0.0843579, 0.260072, 0.0611576, 0.207256, 0.211799, 0.465587, 0.17716, 0.471338, 0.730841, 0.379425, 0.696202, 0.385175, 0.730841, 0.379425, 0.696202, 0.385175, 0.17716, 0.471338, 0.211799, 0.465587]; + indices = new [519, 98, 99, 98, 519, 0, 523, 142, 483, 4, 2, 3, 2, 5, 6, 4, 5, 2, 142, 5, 4, 523, 5, 142, 101, 7, 8, 7, 101, 23, 8, 99, 101, 99, 8, 519, 9, 10, 75, 9, 1, 10, 9, 96, 1, 9, 489, 96, 9, 513, 489, 102, 11, 490, 11, 102, 12, 14, 13, 103, 13, 14, 106, 13, 15, 103, 15, 13, 516, 16, 105, 484, 105, 16, 18, 20, 19, 97, 19, 20, 107, 107, 100, 19, 100, 107, 454, 97, 484, 20, 484, 97, 16, 454, 469, 100, 469, 454, 21, 516, 141, 15, 141, 516, 22, 14, 490, 106, 490, 14, 102, 3, 23, 4, 23, 3, 7, 0, 96, 98, 96, 0, 1, 495, 494, 528, 494, 495, 24, 494, 180, 83, 180, 494, 24, 161, 118, 520, 118, 161, 25, 118, 26, 181, 26, 118, 25, 121, 33, 529, 33, 121, 27, 178, 121, 177, 121, 178, 27, 492, 28, 30, 28, 72, 29, 492, 72, 28, 29, 187, 28, 187, 29, 31, 503, 529, 33, 503, 32, 529, 503, 485, 32, 179, 164, 34, 179, 167, 164, 179, 505, 167, 85, 163, 504, 85, 35, 163, 85, 36, 35, 37, 163, 35, 163, 37, 38, 38, 39, 40, 39, 38, 37, 40, 41, 42, 41, 40, 39, 164, 41, 34, 41, 164, 42, 167, 87, 467, 87, 167, 505, 467, 86, 166, 86, 467, 87, 166, 43, 165, 43, 166, 86, 165, 169, 44, 169, 165, 43, 44, 45, 46, 45, 44, 169, 46, 47, 48, 47, 46, 45, 48, 168, 162, 168, 48, 47, 162, 488, 49, 488, 162, 168, 488, 50, 49, 50, 488, 84, 50, 85, 504, 85, 50, 84, 384, 52, 53, 52, 384, 54, 54, 55, 52, 55, 54, 56, 56, 57, 55, 57, 56, 58, 58, 59, 57, 59, 58, 60, 60, 468, 59, 468, 60, 61, 61, 62, 468, 62, 61, 63, 62, 385, 64, 385, 62, 63, 64, 65, 74, 65, 64, 385, 74, 383, 73, 383, 74, 65, 73, 51, 186, 51, 73, 383, 66, 381, 67, 381, 66, 378, 66, 380, 378, 380, 66, 68, 67, 382, 69, 382, 67, 381, 68, 379, 380, 379, 68, 70, 51, 185, 186, 185, 379, 70, 51, 379, 185, 53, 382, 384, 382, 183, 69, 53, 183, 382, 144, 143, 71, 118, 59, 468, 118, 57, 59, 118, 55, 57, 118, 52, 55, 52, 181, 53, 118, 181, 52, 62, 72, 468, 72, 186, 184, 72, 73, 186, 72, 74, 73, 72, 64, 74, 62, 64, 72, 77, 144, 76, 144, 77, 140, 140, 483, 142, 140, 393, 483, 140, 77, 393, 143, 80, 71, 143, 78, 80, 143, 79, 78, 71, 76, 144, 76, 80, 78, 71, 80, 76, 81, 481, 506, 481, 81, 157, 158, 486, 487, 486, 158, 82, 84, 83, 85, 494, 47, 45, 494, 168, 47, 83, 168, 494, 83, 488, 168, 84, 488, 83, 177, 87, 505, 177, 86, 87, 169, 121, 45, 43, 121, 169, 86, 121, 43, 177, 121, 86, 89, 443, 445, 443, 89, 441, 92, 170, 93, 170, 92, 94, 95, 530, 531, 530, 95, 171, 139, 96, 489, 142, 15, 141, 142, 103, 15, 4, 103, 142, 4, 14, 103, 23, 14, 4, 23, 102, 14, 101, 102, 23, 101, 12, 102, 99, 12, 101, 12, 100, 469, 12, 19, 100, 99, 19, 12, 98, 19, 99, 98, 97, 19, 96, 97, 98, 97, 18, 16, 96, 18, 97, 139, 18, 96, 22, 490, 11, 490, 22, 516, 141, 11, 12, 11, 141, 22, 21, 484, 105, 484, 21, 454, 469, 105, 18, 105, 469, 21, 516, 106, 490, 106, 516, 13, 454, 20, 484, 20, 454, 107, 114, 249, 244, 108, 272, 271, 109, 272, 108, 109, 110, 272, 111, 110, 109, 111, 112, 110, 113, 112, 111, 113, 284, 112, 249, 284, 113, 114, 284, 249, 520, 513, 9, 520, 118, 513, 118, 491, 513, 118, 117, 491, 115, 72, 492, 116, 72, 115, 117, 72, 116, 117, 468, 72, 118, 468, 117, 528, 493, 477, 528, 476, 493, 5, 529, 32, 523, 529, 5, 523, 121, 529, 523, 45, 121, 523, 494, 45, 120, 494, 523, 119, 494, 120, 119, 528, 494, 119, 476, 528, 528, 477, 521, 521, 495, 528, 495, 521, 524, 426, 122, 124, 122, 426, 123, 427, 123, 426, 123, 427, 125, 420, 125, 427, 125, 420, 126, 128, 127, 130, 127, 128, 129, 131, 130, 132, 130, 131, 128, 133, 475, 135, 475, 133, 134, 135, 136, 137, 136, 135, 475, 137, 422, 138, 422, 137, 136, 141, 140, 142, 497, 139, 489, 497, 18, 139, 497, 469, 18, 140, 469, 497, 140, 12, 469, 141, 12, 140, 79, 497, 496, 497, 79, 143, 140, 143, 144, 143, 140, 497, 127, 126, 420, 126, 127, 129, 124, 145, 146, 145, 124, 122, 416, 425, 414, 425, 416, 147, 147, 148, 425, 148, 147, 149, 150, 148, 149, 148, 150, 423, 138, 423, 150, 423, 138, 422, 151, 132, 152, 132, 151, 131, 133, 152, 134, 152, 133, 151, 498, 153, 499, 498, 154, 153, 498, 155, 154, 498, 388, 155, 481, 498, 478, 478, 498, 499, 482, 478, 499, 478, 482, 82, 500, 82, 158, 82, 500, 478, 159, 501, 0x0202, 501, 159, 480, 160, 480, 159, 480, 160, 502, 6, 485, 2, 6, 32, 485, 6, 5, 32, 10, 520, 75, 520, 10, 161, 520, 9, 75, 164, 40, 42, 162, 46, 48, 162, 44, 46, 162, 108, 44, 162, 271, 108, 49, 271, 162, 49, 272, 271, 50, 272, 49, 50, 110, 272, 504, 110, 50, 504, 112, 110, 163, 112, 504, 163, 284, 112, 38, 284, 163, 38, 114, 284, 40, 114, 38, 40, 244, 114, 164, 244, 40, 109, 44, 108, 109, 165, 44, 111, 165, 109, 111, 166, 165, 113, 166, 111, 113, 467, 166, 249, 467, 113, 249, 167, 467, 244, 167, 249, 164, 167, 244, 489, 496, 497, 479, 496, 489, 172, 115, 492, 492, 438, 172, 438, 492, 30, 170, 515, 90, 515, 170, 171, 506, 478, 500, 478, 506, 481, 81, 0x0202, 0x0200, 506, 0x0202, 81, 500, 0x0202, 506, 500, 159, 0x0202, 500, 160, 159, 158, 160, 500, 390, 154, 155, 154, 390, 153, 391, 153, 390, 153, 391, 176, 499, 525, 482, 525, 176, 391, 176, 499, 153, 525, 499, 176, 178, 505, 179, 505, 178, 177, 180, 85, 83, 85, 180, 36, 53, 182, 183, 53, 26, 182, 53, 181, 26, 184, 187, 31, 184, 185, 187, 184, 186, 185, 29, 184, 31, 184, 29, 72, 189, 188, 463, 188, 189, 190, 507, 190, 189, 190, 507, 191, 192, 507, 193, 507, 192, 191, 194, 193, 522, 193, 194, 192, 194, 522, 195, 190, 196, 188, 196, 190, 197, 191, 197, 190, 197, 191, 198, 192, 198, 191, 198, 192, 199, 199, 194, 200, 194, 199, 192, 194, 195, 200, 201, 196, 197, 196, 201, 202, 203, 197, 198, 197, 203, 201, 203, 199, 204, 199, 203, 198, 204, 200, 205, 200, 204, 199, 200, 195, 205, 202, 206, 207, 206, 202, 201, 201, 208, 206, 208, 201, 203, 208, 204, 209, 204, 208, 203, 209, 205, 210, 205, 209, 204, 205, 195, 210, 207, 211, 212, 211, 207, 206, 206, 213, 211, 213, 206, 208, 208, 214, 213, 214, 208, 209, 209, 215, 214, 215, 209, 210, 210, 195, 215, 212, 216, 217, 216, 212, 211, 211, 218, 216, 218, 211, 213, 213, 219, 218, 219, 213, 214, 214, 220, 219, 220, 214, 215, 195, 220, 215, 221, 216, 222, 216, 221, 217, 222, 218, 223, 218, 222, 216, 218, 224, 223, 224, 218, 219, 219, 225, 224, 225, 219, 220, 195, 225, 220, 221, 226, 227, 226, 221, 222, 222, 228, 226, 228, 222, 223, 223, 229, 228, 229, 223, 224, 225, 229, 224, 229, 225, 230, 195, 230, 225, 227, 231, 232, 231, 227, 226, 226, 233, 231, 233, 226, 228, 229, 233, 228, 233, 229, 234, 230, 234, 229, 234, 230, 235, 195, 235, 230, 231, 236, 232, 236, 231, 237, 233, 237, 231, 237, 233, 238, 235, 239, 234, 239, 235, 240, 195, 240, 235, 236, 241, 242, 241, 236, 237, 237, 508, 241, 508, 237, 238, 240, 471, 239, 471, 240, 462, 462, 240, 195, 508, 193, 507, 193, 508, 471, 471, 522, 193, 522, 471, 462, 522, 462, 195, 508, 189, 241, 189, 508, 507, 241, 463, 242, 463, 241, 189, 243, 114, 244, 114, 243, 245, 111, 246, 113, 246, 111, 247, 248, 244, 249, 244, 248, 243, 251, 250, 252, 250, 251, 253, 251, 254, 253, 254, 251, 0xFF, 0xFF, 0x0100, 0x0101, 0x0100, 0xFF, 251, 250, 243, 248, 243, 250, 253, 246, 250, 248, 250, 246, 258, 259, 260, 464, 247, 258, 246, 258, 247, 261, 252, 258, 262, 258, 252, 250, 263, 262, 259, 262, 263, 252, 253, 245, 243, 245, 253, 254, 261, 262, 258, 262, 261, 264, 464, 260, 265, 265, 264, 266, 264, 265, 260, 109, 247, 111, 247, 109, 517, 517, 261, 247, 261, 517, 526, 266, 261, 526, 261, 266, 264, 268, 267, 269, 267, 268, 270, 271, 270, 268, 270, 271, 272, 274, 273, 275, 273, 274, 276, 464, 276, 277, 278, 276, 274, 276, 278, 277, 279, 274, 267, 274, 279, 278, 279, 270, 280, 270, 279, 267, 267, 275, 269, 275, 267, 274, 280, 272, 110, 272, 280, 270, 281, 464, 277, 282, 277, 278, 277, 282, 281, 266, 518, 265, 518, 266, 472, 526, 472, 266, 472, 526, 509, 464, 265, 518, 526, 465, 509, 465, 526, 517, 0x0100, 464, 0x0101, 263, 259, 464, 0x0100, 263, 464, 283, 114, 245, 114, 283, 284, 0x0100, 252, 263, 252, 0x0100, 251, 260, 262, 264, 262, 260, 259, 113, 248, 249, 248, 113, 246, 285, 0x0101, 286, 0x0101, 285, 0xFF, 287, 278, 279, 278, 287, 282, 0x0101, 464, 286, 284, 288, 112, 288, 284, 283, 289, 245, 254, 245, 289, 283, 283, 287, 288, 287, 283, 289, 287, 285, 282, 285, 287, 289, 287, 280, 288, 280, 287, 279, 282, 286, 281, 286, 282, 285, 286, 464, 281, 289, 0xFF, 285, 0xFF, 289, 254, 288, 110, 112, 110, 288, 280, 464, 518, 273, 472, 273, 518, 273, 472, 275, 472, 269, 275, 269, 472, 509, 268, 509, 465, 509, 268, 269, 271, 465, 108, 465, 271, 268, 464, 273, 276, 517, 108, 465, 108, 517, 109, 405, 290, 291, 290, 405, 394, 291, 292, 293, 292, 291, 290, 293, 294, 295, 294, 293, 292, 466, 294, 296, 294, 466, 295, 404, 291, 297, 291, 404, 405, 297, 293, 298, 293, 297, 291, 298, 295, 299, 295, 298, 293, 300, 295, 466, 295, 300, 299, 411, 297, 301, 297, 411, 404, 301, 298, 302, 298, 301, 297, 302, 299, 303, 299, 302, 298, 304, 299, 300, 299, 304, 303, 305, 301, 306, 301, 305, 411, 306, 302, 307, 302, 306, 301, 307, 303, 308, 303, 307, 302, 421, 303, 304, 303, 421, 308, 409, 306, 309, 306, 409, 305, 309, 307, 310, 307, 309, 306, 310, 308, 311, 308, 310, 307, 312, 308, 421, 308, 312, 311, 313, 409, 309, 409, 313, 407, 314, 309, 310, 309, 314, 313, 315, 310, 311, 310, 315, 314, 316, 311, 312, 311, 316, 315, 317, 407, 313, 407, 317, 408, 318, 313, 314, 313, 318, 317, 319, 314, 315, 314, 319, 318, 316, 319, 315, 319, 316, 419, 320, 317, 318, 317, 320, 321, 322, 318, 319, 318, 322, 320, 419, 322, 319, 322, 419, 510, 324, 323, 321, 323, 324, 403, 325, 321, 320, 321, 325, 324, 326, 320, 322, 320, 326, 325, 417, 322, 510, 322, 417, 326, 327, 403, 324, 403, 327, 401, 328, 324, 325, 324, 328, 327, 327, 400, 401, 400, 327, 329, 328, 329, 327, 329, 328, 330, 331, 330, 328, 330, 331, 332, 333, 331, 418, 331, 333, 332, 329, 397, 400, 397, 329, 334, 330, 334, 329, 334, 330, 335, 332, 335, 330, 335, 332, 336, 424, 332, 333, 332, 424, 336, 334, 398, 397, 398, 334, 337, 335, 337, 334, 337, 335, 338, 336, 338, 335, 338, 336, 339, 336, 340, 339, 340, 336, 424, 337, 412, 398, 412, 337, 341, 338, 341, 337, 341, 338, 342, 339, 342, 338, 342, 339, 343, 339, 344, 343, 344, 339, 340, 412, 345, 346, 345, 412, 341, 341, 347, 345, 347, 341, 342, 342, 348, 347, 348, 342, 343, 348, 344, 527, 344, 348, 343, 346, 349, 350, 349, 346, 345, 345, 351, 349, 351, 345, 347, 347, 352, 351, 352, 347, 348, 352, 527, 511, 527, 352, 348, 350, 353, 395, 353, 350, 349, 349, 354, 353, 354, 349, 351, 351, 355, 354, 355, 351, 352, 355, 511, 356, 511, 355, 352, 395, 290, 394, 290, 395, 353, 353, 292, 290, 292, 353, 354, 354, 294, 292, 294, 354, 355, 296, 355, 356, 355, 296, 294, 331, 325, 326, 325, 331, 328, 418, 326, 417, 326, 418, 331, 357, 410, 358, 357, 358, 359, 359, 358, 360, 359, 360, 361, 362, 359, 361, 362, 361, 363, 362, 363, 402, 364, 362, 402, 365, 364, 402, 366, 364, 365, 366, 367, 364, 399, 367, 366, 368, 367, 399, 368, 369, 367, 413, 369, 368, 413, 370, 369, 396, 372, 371, 370, 396, 371, 370, 371, 369, 372, 373, 371, 372, 374, 373, 374, 375, 373, 373, 375, 376, 375, 406, 376, 376, 406, 377, 376, 377, 357, 357, 377, 410, 371, 367, 369, 362, 357, 359, 362, 376, 357, 364, 376, 362, 364, 373, 376, 367, 373, 364, 371, 373, 367, 321, 408, 317, 408, 321, 323, 58, 61, 60, 58, 63, 61, 379, 378, 380, 379, 381, 378, 51, 381, 379, 51, 382, 381, 383, 382, 51, 383, 384, 382, 65, 384, 383, 65, 54, 384, 385, 54, 65, 385, 56, 54, 63, 56, 385, 58, 56, 63, 234, 238, 233, 238, 234, 239, 238, 471, 508, 471, 238, 239, 386, 81, 0x0200, 429, 387, 388, 428, 117, 486, 117, 479, 491, 117, 389, 479, 428, 389, 117, 117, 487, 486, 487, 117, 116, 156, 387, 429, 393, 119, 120, 387, 119, 393, 156, 119, 387, 157, 119, 156, 157, 476, 119, 476, 157, 81, 483, 120, 523, 120, 483, 393, 491, 489, 513, 489, 491, 479, 394, 372, 395, 372, 394, 374, 372, 350, 395, 350, 372, 396, 368, 397, 398, 397, 368, 399, 397, 366, 400, 366, 397, 399, 400, 365, 401, 365, 400, 366, 401, 402, 403, 402, 401, 365, 403, 363, 323, 363, 403, 402, 404, 375, 405, 375, 404, 406, 405, 374, 394, 374, 405, 375, 407, 361, 360, 361, 407, 408, 409, 360, 358, 360, 409, 407, 305, 358, 410, 358, 305, 409, 411, 410, 377, 410, 411, 305, 411, 406, 404, 406, 411, 377, 396, 346, 350, 346, 396, 370, 370, 412, 346, 412, 370, 413, 413, 398, 412, 398, 413, 368, 408, 363, 361, 363, 408, 323, 414, 415, 416, 414, 417, 415, 414, 418, 417, 417, 145, 415, 417, 146, 145, 417, 510, 146, 419, 146, 510, 146, 419, 124, 304, 420, 421, 420, 304, 127, 422, 340, 423, 340, 422, 344, 423, 424, 148, 424, 423, 340, 425, 424, 333, 424, 425, 148, 414, 333, 418, 333, 414, 425, 130, 304, 300, 304, 130, 127, 132, 300, 466, 300, 132, 130, 316, 124, 419, 124, 316, 426, 312, 426, 316, 426, 312, 427, 466, 152, 132, 466, 474, 152, 466, 296, 474, 474, 134, 152, 474, 356, 134, 474, 296, 356, 511, 134, 356, 134, 511, 475, 475, 527, 136, 527, 475, 511, 136, 344, 422, 344, 136, 527, 421, 427, 312, 427, 421, 420, 482, 389, 428, 389, 482, 525, 156, 388, 498, 388, 156, 429, 386, 430, 501, 386, 433, 430, 386, 432, 433, 430, 0x0202, 501, 431, 0x0202, 430, 431, 0x0200, 0x0202, 432, 0x0200, 431, 386, 0x0200, 432, 470, 521, 477, 90, 93, 170, 93, 90, 470, 171, 88, 515, 88, 171, 95, 88, 531, 115, 531, 88, 95, 439, 436, 435, 430, 440, 431, 440, 432, 431, 433, 432, 440, 440, 430, 433, 439, 473, 437, 437, 436, 439, 473, 439, 435, 174, 441, 442, 441, 174, 443, 444, 443, 174, 443, 444, 445, 89, 444, 175, 444, 89, 445, 446, 89, 175, 89, 446, 447, 448, 447, 446, 447, 448, 449, 450, 449, 448, 449, 450, 91, 173, 91, 450, 91, 173, 451, 521, 173, 524, 173, 521, 451, 442, 172, 438, 172, 442, 441, 516, 452, 453, 452, 516, 104, 455, 454, 17, 454, 455, 456, 458, 460, 461, 458, 457, 460, 458, 459, 457, 81, 493, 476, 81, 94, 493, 81, 386, 94, 496, 78, 79, 78, 77, 76, 77, 155, 388, 78, 155, 77, 155, 391, 390, 78, 391, 155, 496, 391, 78, 496, 525, 391, 77, 387, 393, 387, 77, 388, 91, 447, 449, 447, 91, 451, 441, 88, 172, 88, 441, 89, 502, 501, 480, 481, 156, 498, 156, 481, 157, 482, 486, 82, 486, 482, 428, 88, 90, 515, 90, 88, 470, 470, 451, 521, 451, 470, 447, 89, 470, 88, 470, 89, 447, 116, 531, 530, 531, 116, 115, 171, 502, 530, 501, 94, 386, 502, 94, 501, 502, 170, 94, 171, 170, 502, 88, 115, 172, 92, 470, 477, 470, 92, 93, 92, 493, 94, 493, 92, 477, 496, 389, 525, 389, 496, 479, 487, 160, 158, 160, 487, 434, 487, 392, 434, 392, 487, 530, 530, 502, 392, 487, 116, 530, 160, 437, 502, 437, 160, 436, 502, 473, 392, 473, 502, 437, 392, 435, 434, 435, 392, 473, 434, 436, 160, 436, 434, 435, 538, 532, 539, 532, 538, 533, 537, 534, 536, 534, 537, 535]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/SacreCoeur.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/SacreCoeur.as new file mode 100644 index 0000000..92af286 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/SacreCoeur.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class SacreCoeur extends Stage3DData { + + public function SacreCoeur(){ + vertices = new [-24.7612, 97.7781, -159.586, 47.3797, 97.7781, -154.389, -39.8421, 97.7781, 49.7574, 32.2987, 97.7781, 54.9544, -24.7612, 9.15527E-5, -159.586, 47.3797, 6.10352E-5, -154.389, -39.8422, 9.15527E-5, 49.7574, 32.2987, 6.10352E-5, 54.9544, 11.3093, 122.927, -156.987, -3.77167, 122.927, 52.3559, -24.7612, 55.4979, -159.586, 47.3797, 55.4978, -154.389, -22.3963, 9.15527E-5, -192.414, 49.7446, 6.10352E-5, -187.217, 49.7446, 55.4978, -187.217, -22.3962, 55.4979, -192.414, 47.3797, 8.82422, -154.389, -24.7612, 8.82425, -159.586, 49.7446, 8.82422, -187.217, -22.3963, 8.82425, -192.414, 67.9719, 4.57764E-5, -152.905, -41.588, 0.000106812, -213.335, -45.3533, 0.000106812, -161.069, 71.7371, 4.57764E-5, -205.172, -108.747, 55.3761, 76.2133, -101.785, 55.3761, 121.516, -75.8562, 55.3761, 159.312, -36.0963, 55.3761, 182.115, 9.61998, 55.376, 185.408, 52.2378, 55.376, 168.54, 83.3163, 55.376, 134.851, 96.6999, 55.376, 91.0136, -108.747, 0.00012207, 76.2133, -101.785, 0.00012207, 121.516, -75.8562, 0.000106812, 159.312, -36.0963, 8.39233E-5, 182.115, 9.61995, 6.86646E-5, 185.408, 52.2378, 4.57764E-5, 168.54, 83.3163, 3.05176E-5, 134.851, 96.6999, 3.05176E-5, 91.0136, -6.02354, 7.62939E-5, 83.6135, -107.475, 55.3761, 58.5546, -107.475, 0.00012207, 58.5546, -4.75142, 7.62939E-5, 65.9548, 97.972, 3.05176E-5, 73.3549, 97.9721, 55.376, 73.3549, -3.4887, 55.3761, 48.4269, -39.9947, 74.744, 97.0594, -42.4645, 74.744, 80.9883, -41.1923, 74.744, 63.3296, 31.6896, 74.744, 68.58, 30.4175, 74.744, 86.2386, 25.6696, 74.744, 101.79, 14.6446, 74.744, 113.741, -0.474003, 74.744, 119.725, -16.6918, 74.744, 118.557, -30.7965, 74.744, 110.467, 93.621, 3.05176E-5, 73.0415, 93.621, 55.376, 73.0415, 93.621, 56.6474, 73.0415, -103.124, 0.00012207, 58.8681, -103.124, 55.3761, 58.8681, -103.124, 56.6475, 58.8681, -3.48872, 7.62939E-5, 48.4269, 94.8837, 3.05176E-5, 55.5137, 94.8837, 55.376, 55.5137, 94.8837, 56.6474, 55.5137, 32.9523, 74.744, 51.0522, -3.48869, 74.744, 48.427, -39.9296, 74.744, 45.8018, -101.861, 56.6475, 41.3403, -101.861, 55.3761, 41.3403, -101.861, 0.00012207, 41.3403, -39.9947, 80.8883, 97.0594, -42.4645, 80.8883, 80.9883, -41.1923, 80.8883, 63.3296, -39.9296, 80.8883, 45.8018, -3.48869, 80.8883, 48.427, 32.9523, 80.8883, 51.0522, 31.6896, 80.8883, 68.58, 30.4175, 80.8883, 86.2386, 25.6696, 80.8883, 101.79, 14.6446, 80.8883, 113.741, -0.474, 80.8883, 119.725, -16.6918, 80.8883, 118.557, -30.7965, 80.8883, 110.467, -6.02349, 111.866, 83.6135, -3.48867, 111.866, 48.427, -4.75136, 111.866, 65.9548, -68.803, 90.2362, -118.256, -72.1948, 90.2362, -115.32, -76.6693, 90.2362, -115.642, -79.6053, 90.2362, -119.034, -79.283, 90.2362, -123.509, -75.8911, 90.2362, -126.445, -71.4166, 90.2362, -126.122, -68.4807, 90.2362, -122.731, -68.803, 105.648, -118.256, -72.1948, 105.648, -115.32, -76.6693, 105.648, -115.642, -79.6053, 105.648, -119.034, -79.283, 105.648, -123.509, -75.8911, 105.648, -126.445, -71.4166, 105.648, -126.122, -68.4806, 105.648, -122.731, -69.5431, 109.886, -118.627, -72.4559, 109.886, -116.106, -76.2983, 109.886, -116.383, -78.8196, 109.886, -119.295, -78.5428, 109.886, -123.138, -75.6301, 109.886, -125.659, -71.7876, 109.886, -125.382, -69.2663, 109.886, -122.469, -72.554, 114.563, -120.136, -73.5178, 114.563, -119.302, -74.7893, 114.563, -119.393, -75.6236, 114.563, -120.357, -75.532, 114.563, -121.629, -74.5681, 114.563, -122.463, -73.2967, 114.563, -122.371, -72.4624, 114.563, -121.408, -72.554, 115.378, -120.136, -73.5178, 115.378, -119.302, -74.7893, 115.378, -119.393, -75.6236, 115.378, -120.357, -75.532, 115.378, -121.629, -74.5681, 115.378, -122.463, -73.2967, 115.378, -122.371, -72.4624, 115.378, -121.408, -73.0459, 115.881, -120.383, -73.6913, 115.881, -119.824, -74.5427, 115.881, -119.885, -75.1013, 115.881, -120.531, -75.04, 115.881, -121.382, -74.3946, 115.881, -121.941, -73.5432, 115.881, -121.879, -72.9846, 115.881, -121.234, -73.0459, 119.924, -120.383, -73.6913, 119.924, -119.824, -74.5427, 119.924, -119.885, -75.1013, 119.924, -120.531, -75.04, 119.924, -121.382, -74.3946, 119.924, -121.941, -73.5432, 119.924, -121.879, -72.9846, 119.924, -121.234, -73.2007, 120.982, -120.46, -73.7459, 120.982, -119.988, -74.4651, 120.982, -120.04, -74.937, 120.982, -120.585, -74.8852, 120.982, -121.305, -74.34, 120.982, -121.776, -73.6208, 120.982, -121.725, -73.1489, 120.982, -121.179, -74.043, 122.745, -120.882, -15.9486, 81.8904, -156.907, -19.3404, 81.8904, -153.971, -23.8149, 81.8904, -154.294, -26.7509, 81.8904, -157.685, -26.4285, 81.8904, -162.16, -23.0367, 81.8904, -165.096, -18.5622, 81.8904, -164.774, -15.6262, 81.8904, -161.382, -15.9485, 114.016, -156.907, -19.3404, 114.016, -153.971, -23.8149, 114.016, -154.294, -26.7509, 114.016, -157.685, -26.4285, 114.016, -162.16, -23.0367, 114.016, -165.096, -18.5622, 114.016, -164.774, -15.6262, 114.016, -161.382, -16.6887, 118.254, -157.278, -19.6014, 118.254, -154.757, -23.4439, 118.254, -155.034, -25.9652, 118.254, -157.946, -25.6884, 118.254, -161.789, -22.7756, 118.254, -164.31, -18.9332, 118.254, -164.033, -16.4118, 118.254, -161.121, -19.6995, 122.931, -158.787, -20.6634, 122.931, -157.953, -21.9348, 122.931, -158.045, -22.7691, 122.931, -159.008, -22.6775, 122.931, -160.28, -21.7137, 122.931, -161.114, -20.4422, 122.931, -161.023, -19.6079, 122.931, -160.059, -19.6995, 123.746, -158.787, -20.6634, 123.746, -157.953, -21.9348, 123.746, -158.045, -22.7691, 123.746, -159.008, -22.6775, 123.746, -160.28, -21.7137, 123.746, -161.114, -20.4422, 123.746, -161.023, -19.6079, 123.746, -160.059, -20.1915, 124.249, -159.034, -20.8369, 124.249, -158.475, -21.6882, 124.249, -158.537, -22.2469, 124.249, -159.182, -22.1856, 124.249, -160.033, -21.5402, 124.249, -160.592, -20.6888, 124.249, -160.531, -20.1301, 124.249, -159.885, -20.1915, 128.292, -159.034, -20.8369, 128.292, -158.475, -21.6882, 128.292, -158.537, -22.2469, 128.292, -159.182, -22.1856, 128.292, -160.033, -21.5402, 128.292, -160.592, -20.6888, 128.292, -160.531, -20.1301, 128.292, -159.885, -20.3463, 129.35, -159.111, -20.8915, 129.35, -158.64, -21.6106, 129.35, -158.691, -22.0825, 129.35, -159.237, -22.0307, 129.35, -159.956, -21.4856, 129.35, -160.428, -20.7664, 129.35, -160.376, -20.2945, 129.35, -159.831, -21.1885, 131.113, -159.534, 49.0766, 81.8904, -152.223, 45.6847, 81.8904, -149.287, 41.2102, 81.8904, -149.609, 38.2742, 81.8904, -153.001, 38.5966, 81.8904, -157.476, 41.9884, 81.8904, -160.412, 46.4629, 81.8904, -160.089, 49.3989, 81.8904, -156.697, 49.0766, 114.016, -152.223, 45.6847, 114.016, -149.287, 41.2103, 114.016, -149.609, 38.2743, 114.016, -153.001, 38.5966, 114.016, -157.476, 41.9884, 114.016, -160.412, 46.4629, 114.016, -160.089, 49.3989, 114.016, -156.697, 48.3365, 118.254, -152.594, 45.4237, 118.254, -150.073, 41.5812, 118.254, -150.349, 39.0599, 118.254, -153.262, 39.3367, 118.254, -157.105, 42.2495, 118.254, -159.626, 46.092, 118.254, -159.349, 48.6133, 118.254, -156.436, 45.3256, 122.931, -154.103, 44.3618, 122.931, -153.269, 43.0903, 122.931, -153.36, 42.256, 122.931, -154.324, 42.3476, 122.931, -155.595, 43.3114, 122.931, -156.43, 44.5829, 122.931, -156.338, 45.4172, 122.931, -155.374, 45.3256, 123.746, -154.103, 44.3618, 123.746, -153.269, 43.0903, 123.746, -153.36, 42.256, 123.746, -154.324, 42.3476, 123.746, -155.595, 43.3114, 123.746, -156.43, 44.5829, 123.746, -156.338, 45.4172, 123.746, -155.374, 44.8336, 124.249, -154.349, 44.1882, 124.249, -153.791, 43.3369, 124.249, -153.852, 42.7782, 124.249, -154.498, 42.8396, 124.249, -155.349, 43.4849, 124.249, -155.908, 44.3363, 124.249, -155.846, 44.895, 124.249, -155.201, 44.8336, 128.292, -154.349, 44.1882, 128.292, -153.791, 43.3369, 128.292, -153.852, 42.7782, 128.292, -154.498, 42.8396, 128.292, -155.349, 43.4849, 128.292, -155.908, 44.3363, 128.292, -155.846, 44.895, 128.292, -155.201, 44.6788, 129.35, -154.427, 44.1336, 129.35, -153.955, 43.4145, 129.35, -154.007, 42.9426, 129.35, -154.552, 42.9944, 129.35, -155.271, 43.5395, 129.35, -155.743, 44.2587, 129.35, -155.691, 44.7306, 129.35, -155.146, 43.8366, 131.113, -154.849, -37.4338, 9.15527E-5, -19.204, -16.4422, 8.39233E-5, 5.04676, 15.5489, 6.86646E-5, 7.35138, 39.7997, 6.10352E-5, -13.6402, 42.1043, 6.10352E-5, -45.6313, 21.1128, 6.86646E-5, -69.8821, -10.8783, 8.39233E-5, -72.1867, -35.1291, 9.15527E-5, -51.1952, -37.4337, 192.164, -19.204, -16.4421, 192.164, 5.04675, 15.549, 192.164, 7.35138, 39.7998, 192.164, -13.6402, 42.1044, 192.164, -45.6313, 21.1129, 192.164, -69.8821, -10.8783, 192.164, -72.1867, -35.129, 192.164, -51.1952, -31.8165, 222.459, -21.0704, -13.7899, 222.459, -0.244869, 13.6827, 222.459, 1.73425, 34.5082, 222.459, -16.2924, 36.4873, 222.459, -43.765, 18.4607, 222.459, -64.5905, -9.01189, 222.459, -66.5696, -29.8374, 222.459, -48.543, -8.9654, 255.9, -28.6629, -3.00042, 255.9, -21.7717, 6.09022, 255.9, -21.1168, 12.9813, 255.9, -27.0818, 13.6362, 255.9, -36.1725, 7.67125, 255.9, -43.0636, -1.41939, 255.9, -43.7185, -8.31051, 255.9, -37.7535, -8.96539, 261.728, -28.6629, -3.00042, 261.728, -21.7717, 6.09022, 261.728, -21.1168, 12.9813, 261.728, -27.0818, 13.6362, 261.728, -36.1725, 7.67125, 261.728, -43.0636, -1.41938, 261.728, -43.7185, -8.31051, 261.728, -37.7535, -5.23162, 265.321, -29.9034, -1.23746, 265.321, -25.2891, 4.84964, 265.321, -24.8506, 9.46395, 265.321, -28.8448, 9.90246, 265.321, -34.9319, 5.9083, 265.321, -39.5462, -0.178802, 265.321, -39.9847, -4.79311, 265.321, -35.9905, -5.23161, 294.227, -29.9034, -1.23745, 294.227, -25.2891, 4.84965, 294.227, -24.8506, 9.46396, 294.227, -28.8448, 9.90248, 294.227, -34.9319, 5.90832, 294.227, -39.5462, -0.178789, 294.227, -39.9847, -4.7931, 294.227, -35.9905, -4.05659, 301.794, -30.2938, -0.682646, 301.794, -26.396, 4.45925, 301.794, -26.0256, 8.35705, 301.794, -29.3996, 8.72746, 301.794, -34.5415, 5.35352, 301.794, -38.4393, 0.211624, 301.794, -38.8097, -3.68617, 301.794, -35.4357, 2.33544, 314.396, -32.4177, -81.8691, 102.338, 11.0423, -67.9215, 102.338, -1.03077, -49.5221, 102.338, 0.294724, -37.449, 102.338, 14.2424, -38.7745, 102.338, 32.6418, -52.7221, 102.338, 44.7149, -71.1215, 102.338, 43.3894, -83.1946, 102.338, 29.4418, -81.8691, 132.83, 11.0423, -67.9215, 132.83, -1.03077, -49.522, 132.83, 0.294724, -37.4489, 132.83, 14.2424, -38.7744, 132.83, 32.6418, -52.7221, 132.83, 44.7149, -71.1215, 132.83, 43.3894, -83.1946, 132.83, 29.4418, -78.8257, 150.254, 12.5677, -66.8481, 150.254, 2.19988, -51.0474, 150.254, 3.33815, -40.6796, 150.254, 15.3158, -41.8179, 150.254, 31.1164, -53.7955, 150.254, 41.4842, -69.5961, 150.254, 40.346, -79.9639, 150.254, 28.3684, -66.4447, 169.487, 18.7732, -62.4813, 169.487, 15.3425, -57.2529, 169.487, 15.7191, -53.8222, 169.487, 19.6825, -54.1988, 169.487, 24.9109, -58.1622, 169.487, 28.3416, -63.3906, 169.487, 27.965, -66.8213, 169.487, 24.0016, -66.4447, 172.84, 18.7732, -62.4813, 172.84, 15.3425, -57.2529, 172.84, 15.7191, -53.8222, 172.84, 19.6825, -54.1988, 172.84, 24.9109, -58.1622, 172.84, 28.3416, -63.3906, 172.84, 27.965, -66.8213, 172.84, 24.0016, -64.4217, 174.906, 19.7871, -61.7678, 174.906, 17.4899, -58.2668, 174.906, 17.7421, -55.9696, 174.906, 20.396, -56.2218, 174.906, 23.897, -58.8757, 174.906, 26.1942, -62.3767, 174.906, 25.942, -64.6739, 174.906, 23.2881, -64.4217, 191.531, 19.7871, -61.7678, 191.531, 17.4899, -58.2668, 191.531, 17.7421, -55.9696, 191.531, 20.396, -56.2218, 191.531, 23.897, -58.8757, 191.531, 26.1942, -62.3767, 191.531, 25.942, -64.6739, 191.531, 23.2881, -63.785, 195.883, 20.1062, -61.5432, 195.883, 18.1657, -58.5859, 195.883, 18.3788, -56.6454, 195.883, 20.6206, -56.8585, 195.883, 23.5779, -59.1003, 195.883, 25.5184, -62.0576, 195.883, 25.3053, -63.9981, 195.883, 23.0635, -60.3217, 203.131, 21.8421, -74.7721, 102.338, -87.4733, -62.699, 102.338, -73.5256, -44.2995, 102.338, -72.2001, -30.3519, 102.338, -84.2733, -29.0264, 102.338, -102.673, -41.0995, 102.338, -116.62, -59.499, 102.338, -117.946, -73.4466, 102.338, -105.873, -74.7721, 132.83, -87.4733, -62.699, 132.83, -73.5256, -44.2995, 132.83, -72.2001, -30.3519, 132.83, -84.2733, -29.0264, 132.83, -102.673, -41.0995, 132.83, -116.62, -59.4989, 132.83, -117.946, -73.4466, 132.83, -105.873, -71.5414, 150.254, -88.5467, -61.1736, 150.254, -76.5691, -45.3729, 150.254, -75.4308, -33.3953, 150.254, -85.7986, -32.2571, 150.254, -101.599, -42.6249, 150.254, -113.577, -58.4255, 150.254, -114.715, -70.4031, 150.254, -104.347, -58.3988, 169.487, -92.9134, -54.9681, 169.487, -88.9501, -49.7397, 169.487, -88.5734, -45.7763, 169.487, -92.0041, -45.3997, 169.487, -97.2325, -48.8304, 169.487, -101.196, -54.0588, 169.487, -101.573, -58.0221, 169.487, -98.1418, -58.3988, 172.84, -92.9134, -54.9681, 172.84, -88.9501, -49.7397, 172.84, -88.5734, -45.7763, 172.84, -92.0041, -45.3997, 172.84, -97.2325, -48.8304, 172.84, -101.196, -54.0588, 172.84, -101.573, -58.0221, 172.84, -98.1418, -56.2513, 174.906, -93.6269, -53.9541, 174.906, -90.9731, -50.4532, 174.906, -90.7208, -47.7993, 174.906, -93.0181, -47.5471, 174.906, -96.519, -49.8443, 174.906, -99.1729, -53.3453, 174.906, -99.4251, -55.9991, 174.906, -97.1279, -56.2513, 191.531, -93.6269, -53.9541, 191.531, -90.9731, -50.4532, 191.531, -90.7208, -47.7993, 191.531, -93.0181, -47.5471, 191.531, -96.519, -49.8443, 191.531, -99.1729, -53.3452, 191.531, -99.4251, -55.9991, 191.531, -97.1279, -55.5755, 195.883, -93.8515, -53.635, 195.883, -91.6097, -50.6777, 195.883, -91.3967, -48.4359, 195.883, -93.3371, -48.2229, 195.883, -96.2945, -50.1634, 195.883, -98.5362, -53.1207, 195.883, -98.7493, -55.3625, 195.883, -96.8088, -51.8992, 203.131, -95.073, 79.441, 102.338, 22.6631, 67.3679, 102.338, 8.71544, 48.9684, 102.338, 7.38996, 35.0208, 102.338, 19.4631, 33.6953, 102.338, 37.8625, 45.7684, 102.338, 51.8101, 64.1679, 102.338, 53.1356, 78.1155, 102.338, 41.0625, 79.441, 132.83, 22.6631, 67.3679, 132.83, 8.71544, 48.9684, 132.83, 7.38996, 35.0208, 132.83, 19.4631, 33.6953, 132.83, 37.8625, 45.7684, 132.83, 51.8101, 64.1679, 132.83, 53.1356, 78.1155, 132.83, 41.0625, 76.2103, 150.254, 23.7365, 65.8425, 150.254, 11.7589, 50.0419, 150.254, 10.6206, 38.0643, 150.254, 20.9885, 36.926, 150.254, 36.7891, 47.2938, 150.254, 48.7667, 63.0945, 150.254, 49.905, 75.0721, 150.254, 39.5371, 63.0677, 169.487, 28.1032, 59.637, 169.487, 24.1399, 54.4086, 169.487, 23.7632, 50.4453, 169.487, 27.1939, 50.0686, 169.487, 32.4223, 53.4993, 169.487, 36.3857, 58.7277, 169.487, 36.7623, 62.6911, 169.487, 33.3316, 63.0677, 172.84, 28.1032, 59.637, 172.84, 24.1399, 54.4086, 172.84, 23.7632, 50.4453, 172.84, 27.1939, 50.0686, 172.84, 32.4223, 53.4993, 172.84, 36.3857, 58.7277, 172.84, 36.7623, 62.6911, 172.84, 33.3316, 60.9203, 174.906, 28.8167, 58.6231, 174.906, 26.1629, 55.1221, 174.906, 25.9107, 52.4683, 174.906, 28.2079, 52.2161, 174.906, 31.7088, 54.5133, 174.906, 34.3627, 58.0142, 174.906, 34.6149, 60.6681, 174.906, 32.3177, 60.9203, 191.531, 28.8167, 58.6231, 191.531, 26.1629, 55.1222, 191.531, 25.9107, 52.4683, 191.531, 28.2079, 52.2161, 191.531, 31.7088, 54.5133, 191.531, 34.3627, 58.0142, 191.531, 34.6149, 60.6681, 191.531, 32.3177, 60.2445, 195.883, 29.0413, 58.304, 195.883, 26.7995, 55.3467, 195.883, 26.5865, 53.1049, 195.883, 28.527, 52.8919, 195.883, 31.4843, 54.8324, 195.883, 33.7261, 57.7897, 195.883, 33.9391, 60.0315, 195.883, 31.9986, 56.5682, 203.131, 30.2628, 86.538, 102.338, -75.8525, 72.5904, 102.338, -63.7794, 54.191, 102.338, -65.1049, 42.1178, 102.338, -79.0525, 43.4433, 102.338, -97.452, 57.391, 102.338, -109.525, 75.7904, 102.338, -108.2, 87.8635, 102.338, -94.252, 86.538, 132.83, -75.8525, 72.5904, 132.83, -63.7794, 54.191, 132.83, -65.1049, 42.1179, 132.83, -79.0525, 43.4434, 132.83, -97.452, 57.391, 132.83, -109.525, 75.7904, 132.83, -108.2, 87.8635, 132.83, -94.252, 83.4946, 150.254, -77.3779, 71.517, 150.254, -67.0101, 55.7164, 150.254, -68.1483, 45.3485, 150.254, -80.1259, 46.4868, 150.254, -95.9266, 58.4644, 150.254, -106.294, 74.265, 150.254, -105.156, 84.6329, 150.254, -93.1786, 71.1136, 169.487, -83.5834, 67.1502, 169.487, -80.1527, 61.9218, 169.487, -80.5293, 58.4911, 169.487, -84.4927, 58.8678, 169.487, -89.7211, 62.8312, 169.487, -93.1518, 68.0596, 169.487, -92.7752, 71.4903, 169.487, -88.8118, 71.1136, 172.84, -83.5834, 67.1502, 172.84, -80.1527, 61.9218, 172.84, -80.5293, 58.4911, 172.84, -84.4927, 58.8678, 172.84, -89.7211, 62.8312, 172.84, -93.1518, 68.0596, 172.84, -92.7752, 71.4903, 172.84, -88.8118, 69.0906, 174.906, -84.5973, 66.4367, 174.906, -82.3001, 62.9358, 174.906, -82.5523, 60.6386, 174.906, -85.2062, 60.8908, 174.906, -88.7072, 63.5447, 174.906, -91.0044, 67.0456, 174.906, -90.7522, 69.3428, 174.906, -88.0983, 69.0906, 191.531, -84.5973, 66.4367, 191.531, -82.3001, 62.9358, 191.531, -82.5523, 60.6386, 191.531, -85.2062, 60.8908, 191.531, -88.7072, 63.5447, 191.531, -91.0044, 67.0456, 191.531, -90.7522, 69.3428, 191.531, -88.0983, 68.454, 195.883, -84.9164, 66.2122, 195.883, -82.9759, 63.2549, 195.883, -83.189, 61.3144, 195.883, -85.4308, 61.5274, 195.883, -88.3881, 63.7692, 195.883, -90.3286, 66.7265, 195.883, -90.1155, 68.667, 195.883, -87.8737, 64.9907, 203.131, -86.6522, 3.4403, 216.456, 183.393, -2.25557, 216.456, 194.757, -14.3189, 216.456, 198.765, -25.6832, 216.456, 193.069, -29.6913, 216.456, 181.006, -23.9955, 216.456, 169.642, -11.9321, 216.456, 165.633, -0.567864, 216.456, 171.329, 3.4403, 236.614, 183.393, -2.25556, 236.614, 194.757, -14.3189, 236.614, 198.765, -25.6832, 236.614, 193.069, -29.6913, 236.614, 181.006, -23.9955, 236.614, 169.642, -11.9321, 236.614, 165.633, -0.567855, 236.614, 171.329, -8.38719, 264.161, 182.541, -10.0164, 264.161, 185.791, -13.4668, 264.161, 186.938, -16.7173, 264.161, 185.308, -17.8638, 264.161, 181.858, -16.2346, 264.161, 178.607, -12.7842, 264.161, 177.461, -9.53364, 264.161, 179.09, -8.38719, 275.999, 182.541, -10.0164, 275.999, 185.791, -13.4668, 275.999, 186.938, -16.7173, 275.999, 185.308, -17.8638, 275.999, 181.858, -16.2346, 275.999, 178.607, -12.7841, 275.999, 177.461, -9.53364, 275.999, 179.09, -11.9954, 287.868, 182.281, -12.3839, 287.868, 183.056, -13.2069, 287.868, 183.329, -13.9822, 287.868, 182.941, -14.2556, 287.868, 182.118, -13.867, 287.868, 181.343, -13.0441, 287.868, 181.069, -12.2688, 287.868, 181.458, -79.1445, 0.000114441, -126.776, -68.1494, 0.000114441, -125.984, -79.9366, 0.000114441, -115.781, -68.9415, 0.000114441, -114.989, -79.1445, 90.2362, -126.776, -68.1494, 90.2362, -125.984, -79.9366, 90.2362, -115.781, -68.9415, 90.2362, -114.989, -26.2901, 9.15527E-5, -165.427, -15.295, 9.15527E-5, -164.635, -27.0822, 9.15527E-5, -154.432, -16.0871, 9.15527E-5, -153.64, -26.2901, 81.8904, -165.427, -15.2949, 81.8904, -164.635, -27.0821, 81.8904, -154.432, -16.087, 81.8904, -153.64, 38.735, 6.10352E-5, -160.743, 49.7301, 6.10352E-5, -159.951, 37.9429, 6.10352E-5, -149.748, 48.938, 6.10352E-5, -148.956, 38.7351, 81.8904, -160.743, 49.7302, 81.8904, -159.951, 37.943, 81.8904, -149.748, 48.9381, 81.8904, -148.956, 0.825997, 53.0963, -159.953, 22.1094, 53.0963, -158.42, 0.492188, 53.0963, -155.319, 21.7756, 53.0963, -153.786, 0.826032, 127.85, -159.953, 22.1095, 127.85, -158.42, 0.492224, 127.85, -155.319, 21.7757, 127.85, -153.786, 9.86837, 138.724, -159.302, 13.0671, 138.724, -159.071, 12.7333, 138.724, -154.437, 9.53456, 138.724, -154.668, 104.57, 97.778, -61.3104, 99.3728, 97.778, 10.8304, -94.702, 97.7781, -75.6659, -99.899, 97.7781, -3.525, 104.57, 3.05176E-5, -61.3104, 99.3727, 3.05176E-5, 10.8304, -94.7021, 0.00012207, -75.6659, -99.8991, 0.00012207, -3.52501, 101.971, 122.927, -25.24, -97.3005, 122.927, -39.5954, -39.5592, 9.15527E-5, 45.8284, -84.3333, 0.000114441, 42.6029, -36.3355, 9.15527E-5, 1.07941, -81.1096, 0.000114441, -2.1461, -39.5591, 66.5482, 45.8284, -84.3333, 66.5483, 42.6029, -36.3354, 66.5482, 1.07941, -81.1096, 66.5483, -2.1461, -101.861, 0.00012207, 41.3402, -98.6374, 0.00012207, -3.40879, -98.6374, 66.5483, -3.40879, -101.861, 66.5483, 41.3402, -39.5591, 102.338, 45.8284, -84.3332, 102.338, 42.6029, -81.1095, 102.338, -2.1461, -36.3354, 102.338, 1.07941, -27.9129, 9.15527E-5, -115.836, -72.687, 0.000114441, -119.061, -31.1366, 9.15527E-5, -71.0866, -75.9107, 0.000114441, -74.3121, -27.9129, 66.5482, -115.836, -72.687, 66.5483, -119.061, -31.1366, 66.5482, -71.0866, -75.9107, 66.5483, -74.3121, -26.6484, 9.15527E-5, -133.389, -71.4225, 0.000114441, -136.614, -71.4225, 66.5483, -136.614, -26.6484, 66.5482, -133.389, -90.2149, 0.00012207, -120.324, -93.4386, 0.00012207, -75.5748, -93.4385, 66.5483, -75.5748, -90.2149, 66.5483, -120.324, -27.9129, 102.338, -115.836, -72.687, 102.338, -119.061, -75.9107, 102.338, -74.3121, -31.1366, 102.338, -71.0866, 32.5817, 6.10352E-5, 51.0255, 77.3559, 3.8147E-5, 54.251, 35.8054, 6.10352E-5, 6.27645, 80.5796, 3.8147E-5, 9.50195, 32.5818, 66.5482, 51.0255, 77.3559, 66.5482, 54.251, 35.8055, 66.5482, 6.27645, 80.5796, 66.5482, 9.50195, 94.8837, 3.05176E-5, 55.5137, 98.1074, 3.05176E-5, 10.7646, 98.1074, 66.5482, 10.7646, 94.8837, 66.5482, 55.5137, 32.5818, 102.338, 51.0255, 77.3559, 102.338, 54.251, 80.5796, 102.338, 9.50195, 35.8055, 102.338, 6.27645, 44.228, 6.10352E-5, -110.639, 89.0021, 3.8147E-5, -107.413, 41.0043, 6.10352E-5, -65.8896, 85.7784, 3.8147E-5, -62.6641, 44.228, 66.5482, -110.639, 89.0021, 66.5482, -107.413, 41.0043, 66.5482, -65.8896, 85.7784, 66.5482, -62.6641, 45.4925, 6.10352E-5, -128.192, 90.2666, 3.8147E-5, -124.966, 90.2666, 66.5482, -124.966, 45.4925, 66.5482, -128.192, 106.53, 3.05176E-5, -106.15, 103.306, 3.05176E-5, -61.4014, 103.306, 66.5482, -61.4014, 106.53, 66.5482, -106.15, 44.228, 102.338, -110.639, 89.0021, 102.338, -107.413, 85.7784, 102.338, -62.6641, 41.0043, 102.338, -65.8896, -38.2306, 9.15527E-5, 153.196, 15.8772, 6.10352E-5, 157.094, -42.1285, 9.15527E-5, 207.304, 11.9793, 6.10352E-5, 211.202, -38.2306, 46.2996, 153.196, 15.8773, 46.2996, 157.094, -42.1285, 46.2996, 207.304, 11.9794, 46.2996, 211.202, -31.0803, 82.9356, 161.457, 7.61687, 82.9356, 164.245, 4.82915, 82.9356, 202.942, -33.8681, 82.9356, 200.154, -31.0803, 214.688, 161.457, 7.61693, 214.688, 164.245, 4.82921, 214.688, 202.942, -33.868, 214.688, 200.154, -22.6249, 223.926, 171.225, -2.15126, 223.926, 172.7, -3.62617, 223.926, 193.174, -24.0998, 223.926, 191.699]; + uvs = new [0.324605, 0.874738, 0.675395, 0.874738, 0.324605, 0.375023, 0.675395, 0.375023, 0.324605, 0.874738, 0.675395, 0.874738, 0.324605, 0.375023, 0.675395, 0.375023, 0.5, 0.874738, 0.5, 0.375023, 0.324605, 0.874738, 0.675395, 0.874738, 0.324605, 0.953101, 0.675395, 0.953101, 0.675395, 0.953101, 0.324605, 0.953101, 0.675395, 0.874738, 0.324605, 0.874738, 0.675395, 0.953101, 0.324605, 0.953101, 0.775526, 0.874738, 0.224474, 0.9995, 0.224474, 0.874738, 0.775526, 0.9995, 0.000499576, 0.300409, 0.0499657, 0.194018, 0.188567, 0.108699, 0.388851, 0.06135, 0.611149, 0.06135, 0.811433, 0.108699, 0.950034, 0.194018, 0.9995, 0.300409, 0.000499576, 0.300409, 0.0499657, 0.194018, 0.188567, 0.108699, 0.388851, 0.06135, 0.611149, 0.06135, 0.811433, 0.108699, 0.950034, 0.194018, 0.9995, 0.300409, 0.5, 0.300409, 0.000499547, 0.342562, 0.000499547, 0.342562, 0.5, 0.342562, 0.9995, 0.342562, 0.9995, 0.342562, 0.5, 0.384402, 0.340351, 0.262667, 0.322803, 0.300409, 0.322803, 0.342562, 0.677197, 0.342562, 0.677197, 0.300409, 0.659649, 0.262667, 0.61048, 0.2324, 0.53943, 0.215603, 0.46057, 0.215603, 0.38952, 0.2324, 0.978343, 0.342562, 0.978343, 0.342562, 0.978343, 0.342562, 0.0216569, 0.342562, 0.0216569, 0.342562, 0.0216569, 0.342562, 0.5, 0.384402, 0.978343, 0.384402, 0.978343, 0.384402, 0.978343, 0.384402, 0.677197, 0.384402, 0.5, 0.384402, 0.322803, 0.384402, 0.0216569, 0.384402, 0.0216569, 0.384402, 0.0216569, 0.384402, 0.340351, 0.262667, 0.322803, 0.300409, 0.322803, 0.342562, 0.322803, 0.384402, 0.5, 0.384402, 0.677197, 0.384402, 0.677197, 0.342562, 0.677197, 0.300409, 0.659649, 0.262667, 0.61048, 0.2324, 0.53943, 0.215603, 0.46057, 0.215603, 0.38952, 0.2324, 0.5, 0.300409, 0.5, 0.384402, 0.5, 0.342562, 0.125957, 0.769056, 0.110572, 0.761504, 0.0888145, 0.761504, 0.0734296, 0.769056, 0.0734296, 0.779737, 0.0888144, 0.78729, 0.110572, 0.78729, 0.125957, 0.779737, 0.125957, 0.769056, 0.110572, 0.761504, 0.0888145, 0.761504, 0.0734296, 0.769056, 0.0734296, 0.779737, 0.0888144, 0.78729, 0.110572, 0.78729, 0.125957, 0.779737, 0.122247, 0.76981, 0.109035, 0.763325, 0.090351, 0.763325, 0.0771392, 0.76981, 0.0771392, 0.778983, 0.090351, 0.785468, 0.109035, 0.785468, 0.122247, 0.778983, 0.107156, 0.772879, 0.102784, 0.770733, 0.0966019, 0.770733, 0.0922301, 0.772879, 0.0922301, 0.775914, 0.0966018, 0.77806, 0.102784, 0.77806, 0.107156, 0.775914, 0.107156, 0.772879, 0.102784, 0.770733, 0.0966019, 0.770733, 0.0922301, 0.772879, 0.0922301, 0.775914, 0.0966018, 0.77806, 0.102784, 0.77806, 0.107156, 0.775914, 0.10469, 0.77338, 0.101763, 0.771943, 0.0976232, 0.771943, 0.0946959, 0.77338, 0.0946959, 0.775413, 0.0976232, 0.77685, 0.101763, 0.77685, 0.10469, 0.775413, 0.10469, 0.77338, 0.101763, 0.771943, 0.0976232, 0.771943, 0.0946959, 0.77338, 0.0946959, 0.775413, 0.0976232, 0.77685, 0.101763, 0.77685, 0.10469, 0.775413, 0.103914, 0.773538, 0.101442, 0.772324, 0.0979446, 0.772324, 0.0954718, 0.773538, 0.0954718, 0.775255, 0.0979446, 0.776469, 0.101442, 0.776469, 0.103914, 0.775255, 0.0996931, 0.774397, 0.368169, 0.869885, 0.352784, 0.862332, 0.331027, 0.862332, 0.315642, 0.869885, 0.315642, 0.880565, 0.331027, 0.888118, 0.352784, 0.888118, 0.368169, 0.880565, 0.368169, 0.869885, 0.352784, 0.862332, 0.331027, 0.862332, 0.315642, 0.869885, 0.315642, 0.880565, 0.331027, 0.888118, 0.352784, 0.888118, 0.368169, 0.880565, 0.364459, 0.870639, 0.351248, 0.864153, 0.332563, 0.864153, 0.319351, 0.870639, 0.319351, 0.879811, 0.332563, 0.886297, 0.351248, 0.886297, 0.364459, 0.879811, 0.349368, 0.873707, 0.344997, 0.871561, 0.338814, 0.871561, 0.334442, 0.873707, 0.334442, 0.876742, 0.338814, 0.878889, 0.344997, 0.878889, 0.349368, 0.876742, 0.349368, 0.873707, 0.344997, 0.871561, 0.338814, 0.871561, 0.334442, 0.873707, 0.334442, 0.876742, 0.338814, 0.878889, 0.344997, 0.878889, 0.349368, 0.876742, 0.346903, 0.874209, 0.343975, 0.872772, 0.339835, 0.872772, 0.336908, 0.874209, 0.336908, 0.876241, 0.339835, 0.877678, 0.343975, 0.877678, 0.346903, 0.876241, 0.346903, 0.874209, 0.343975, 0.872772, 0.339835, 0.872772, 0.336908, 0.874209, 0.336908, 0.876241, 0.339835, 0.877678, 0.343975, 0.877678, 0.346903, 0.876241, 0.346127, 0.874367, 0.343654, 0.873153, 0.340157, 0.873153, 0.337684, 0.874367, 0.337684, 0.876083, 0.340157, 0.877297, 0.343654, 0.877297, 0.346127, 0.876083, 0.341905, 0.875225, 0.684358, 0.869885, 0.668974, 0.862332, 0.647216, 0.862332, 0.631831, 0.869885, 0.631831, 0.880565, 0.647216, 0.888118, 0.668974, 0.888118, 0.684358, 0.880565, 0.684358, 0.869885, 0.668974, 0.862332, 0.647216, 0.862332, 0.631831, 0.869885, 0.631831, 0.880565, 0.647216, 0.888118, 0.668974, 0.888118, 0.684358, 0.880565, 0.680649, 0.870639, 0.667437, 0.864153, 0.648753, 0.864153, 0.635541, 0.870639, 0.635541, 0.879811, 0.648753, 0.886297, 0.667437, 0.886297, 0.680649, 0.879811, 0.665558, 0.873707, 0.661186, 0.871561, 0.655003, 0.871561, 0.650632, 0.873707, 0.650632, 0.876743, 0.655003, 0.878889, 0.661186, 0.878889, 0.665558, 0.876743, 0.665558, 0.873707, 0.661186, 0.871561, 0.655003, 0.871561, 0.650632, 0.873707, 0.650632, 0.876743, 0.655003, 0.878889, 0.661186, 0.878889, 0.665558, 0.876743, 0.663092, 0.874209, 0.660165, 0.872772, 0.656025, 0.872772, 0.653098, 0.874209, 0.653098, 0.876241, 0.656025, 0.877678, 0.660165, 0.877678, 0.663092, 0.876241, 0.663092, 0.874209, 0.660165, 0.872772, 0.656025, 0.872772, 0.653098, 0.874209, 0.653098, 0.876241, 0.656025, 0.877678, 0.660165, 0.877678, 0.663092, 0.876241, 0.662316, 0.874367, 0.659843, 0.873153, 0.656346, 0.873153, 0.653874, 0.874367, 0.653874, 0.876083, 0.656346, 0.877297, 0.659843, 0.877297, 0.662316, 0.876083, 0.658095, 0.875225, 0.312223, 0.5392, 0.42222, 0.485202, 0.57778, 0.485202, 0.687777, 0.5392, 0.687777, 0.615565, 0.57778, 0.669563, 0.42222, 0.669563, 0.312223, 0.615565, 0.312223, 0.5392, 0.42222, 0.485202, 0.57778, 0.485202, 0.687777, 0.5392, 0.687777, 0.615565, 0.57778, 0.669563, 0.42222, 0.669563, 0.312223, 0.615565, 0.338746, 0.544593, 0.433206, 0.498222, 0.566794, 0.498222, 0.661254, 0.544593, 0.661254, 0.610172, 0.566794, 0.656543, 0.433206, 0.656543, 0.338746, 0.610172, 0.446641, 0.566533, 0.477898, 0.551188, 0.522102, 0.551188, 0.553359, 0.566533, 0.553359, 0.588233, 0.522102, 0.603577, 0.477898, 0.603577, 0.446641, 0.588233, 0.446641, 0.566533, 0.477898, 0.551188, 0.522102, 0.551188, 0.553359, 0.566533, 0.553359, 0.588233, 0.522102, 0.603577, 0.477898, 0.603577, 0.446641, 0.588233, 0.464271, 0.570117, 0.4852, 0.559843, 0.514799, 0.559843, 0.535729, 0.570117, 0.535729, 0.584648, 0.514799, 0.594922, 0.4852, 0.594922, 0.464271, 0.584648, 0.464271, 0.570117, 0.4852, 0.559843, 0.514799, 0.559843, 0.535729, 0.570117, 0.535729, 0.584648, 0.514799, 0.594922, 0.4852, 0.594922, 0.464271, 0.584648, 0.469819, 0.571246, 0.487499, 0.562567, 0.512501, 0.562567, 0.530181, 0.571246, 0.530181, 0.58352, 0.512501, 0.592199, 0.487499, 0.592199, 0.469819, 0.58352, 0.5, 0.577383, 0.107809, 0.459771, 0.171073, 0.490828, 0.260541, 0.490828, 0.323805, 0.459771, 0.323805, 0.415851, 0.260541, 0.384794, 0.171073, 0.384794, 0.107809, 0.415851, 0.107809, 0.459771, 0.171073, 0.490828, 0.260541, 0.490828, 0.323805, 0.459771, 0.323805, 0.415851, 0.260541, 0.384794, 0.171073, 0.384794, 0.107809, 0.415851, 0.123063, 0.45667, 0.177391, 0.483339, 0.254223, 0.483339, 0.308551, 0.45667, 0.308551, 0.418952, 0.254223, 0.392282, 0.177391, 0.392283, 0.123063, 0.418952, 0.185118, 0.444051, 0.203095, 0.452876, 0.228519, 0.452876, 0.246496, 0.444051, 0.246496, 0.431571, 0.228519, 0.422746, 0.203095, 0.422746, 0.185118, 0.431571, 0.185118, 0.444051, 0.203095, 0.452876, 0.228519, 0.452876, 0.246496, 0.444051, 0.246496, 0.431571, 0.228519, 0.422746, 0.203095, 0.422746, 0.185118, 0.431571, 0.195258, 0.441989, 0.207295, 0.447899, 0.224319, 0.447899, 0.236356, 0.441989, 0.236356, 0.433633, 0.224319, 0.427723, 0.207295, 0.427723, 0.195258, 0.433633, 0.195258, 0.441989, 0.207295, 0.447899, 0.224319, 0.447899, 0.236356, 0.441989, 0.236356, 0.433633, 0.224319, 0.427723, 0.207295, 0.427723, 0.195258, 0.433633, 0.198449, 0.441341, 0.208617, 0.446332, 0.222997, 0.446332, 0.233165, 0.441341, 0.233165, 0.434281, 0.222997, 0.42929, 0.208617, 0.42929, 0.198449, 0.434281, 0.215807, 0.437811, 0.107809, 0.694934, 0.171073, 0.663877, 0.260541, 0.663877, 0.323805, 0.694934, 0.323805, 0.738855, 0.260541, 0.769911, 0.171073, 0.769911, 0.107809, 0.738855, 0.107809, 0.694934, 0.171073, 0.663877, 0.260541, 0.663877, 0.323805, 0.694934, 0.323805, 0.738855, 0.260541, 0.769911, 0.171073, 0.769911, 0.107809, 0.738855, 0.123063, 0.698036, 0.177391, 0.671366, 0.254223, 0.671366, 0.308551, 0.698036, 0.308551, 0.735753, 0.254223, 0.762423, 0.177391, 0.762423, 0.123063, 0.735753, 0.185118, 0.710654, 0.203095, 0.701829, 0.228519, 0.701829, 0.246496, 0.710654, 0.246496, 0.723135, 0.228519, 0.73196, 0.203095, 0.73196, 0.185118, 0.723135, 0.185118, 0.710654, 0.203095, 0.701829, 0.228519, 0.701829, 0.246496, 0.710654, 0.246496, 0.723135, 0.228519, 0.73196, 0.203095, 0.73196, 0.185118, 0.723135, 0.195258, 0.712716, 0.207295, 0.706806, 0.224319, 0.706806, 0.236356, 0.712716, 0.236356, 0.721073, 0.224319, 0.726982, 0.207295, 0.726982, 0.195258, 0.721073, 0.195258, 0.712716, 0.207295, 0.706806, 0.224319, 0.706806, 0.236356, 0.712716, 0.236356, 0.721073, 0.224319, 0.726982, 0.207295, 0.726982, 0.195258, 0.721073, 0.198449, 0.713365, 0.208617, 0.708373, 0.222997, 0.708373, 0.233165, 0.713365, 0.233165, 0.720424, 0.222997, 0.725416, 0.208617, 0.725416, 0.198449, 0.720424, 0.215807, 0.716894, 0.892191, 0.459771, 0.828927, 0.490828, 0.739459, 0.490828, 0.676195, 0.459771, 0.676195, 0.415851, 0.739459, 0.384794, 0.828927, 0.384794, 0.892191, 0.415851, 0.892191, 0.459771, 0.828927, 0.490828, 0.739459, 0.490828, 0.676195, 0.459771, 0.676195, 0.415851, 0.739459, 0.384794, 0.828927, 0.384794, 0.892191, 0.415851, 0.876937, 0.45667, 0.822609, 0.483339, 0.745777, 0.483339, 0.691449, 0.456669, 0.691449, 0.418952, 0.745777, 0.392282, 0.822609, 0.392282, 0.876937, 0.418952, 0.814882, 0.444051, 0.796905, 0.452876, 0.771481, 0.452876, 0.753504, 0.444051, 0.753504, 0.431571, 0.771481, 0.422746, 0.796905, 0.422746, 0.814882, 0.431571, 0.814882, 0.444051, 0.796905, 0.452876, 0.771481, 0.452876, 0.753504, 0.444051, 0.753504, 0.431571, 0.771481, 0.422746, 0.796905, 0.422746, 0.814882, 0.431571, 0.804742, 0.441989, 0.792705, 0.447899, 0.775681, 0.447899, 0.763644, 0.441989, 0.763644, 0.433632, 0.775681, 0.427723, 0.792705, 0.427723, 0.804742, 0.433632, 0.804742, 0.441989, 0.792705, 0.447899, 0.775681, 0.447899, 0.763644, 0.441989, 0.763644, 0.433632, 0.775681, 0.427723, 0.792705, 0.427723, 0.804742, 0.433632, 0.801551, 0.441341, 0.791383, 0.446332, 0.777003, 0.446332, 0.766835, 0.441341, 0.766835, 0.434281, 0.777003, 0.42929, 0.791383, 0.42929, 0.801551, 0.434281, 0.784193, 0.437811, 0.892191, 0.694934, 0.828927, 0.663877, 0.739459, 0.663877, 0.676195, 0.694934, 0.676195, 0.738854, 0.739459, 0.769911, 0.828927, 0.769911, 0.892191, 0.738855, 0.892191, 0.694934, 0.828927, 0.663877, 0.739459, 0.663877, 0.676195, 0.694934, 0.676195, 0.738854, 0.739459, 0.769911, 0.828927, 0.769911, 0.892191, 0.738855, 0.876937, 0.698036, 0.822609, 0.671366, 0.745777, 0.671366, 0.691449, 0.698036, 0.691449, 0.735753, 0.745777, 0.762423, 0.822609, 0.762423, 0.876937, 0.735753, 0.814882, 0.710654, 0.796905, 0.701829, 0.771481, 0.701829, 0.753504, 0.710654, 0.753504, 0.723134, 0.771481, 0.73196, 0.796905, 0.73196, 0.814882, 0.723134, 0.814882, 0.710654, 0.796905, 0.701829, 0.771481, 0.701829, 0.753504, 0.710654, 0.753504, 0.723134, 0.771481, 0.73196, 0.796905, 0.73196, 0.814882, 0.723134, 0.804742, 0.712716, 0.792705, 0.706806, 0.775681, 0.706806, 0.763644, 0.712716, 0.763644, 0.721073, 0.775681, 0.726982, 0.792705, 0.726982, 0.804742, 0.721073, 0.804742, 0.712716, 0.792705, 0.706806, 0.775681, 0.706806, 0.763644, 0.712716, 0.763644, 0.721073, 0.775681, 0.726982, 0.792705, 0.726982, 0.804742, 0.721073, 0.801551, 0.713365, 0.791383, 0.708373, 0.777003, 0.708373, 0.766835, 0.713365, 0.766835, 0.720424, 0.777003, 0.725416, 0.791383, 0.725416, 0.801551, 0.720424, 0.784193, 0.716894, 0.580553, 0.065079, 0.556959, 0.0371174, 0.5, 0.0255353, 0.443041, 0.0371174, 0.419447, 0.065079, 0.443041, 0.0930405, 0.5, 0.104623, 0.556959, 0.0930405, 0.580553, 0.065079, 0.556959, 0.0371174, 0.5, 0.0255353, 0.443041, 0.0371174, 0.419447, 0.065079, 0.443041, 0.0930405, 0.5, 0.104623, 0.556959, 0.0930405, 0.52304, 0.065079, 0.516292, 0.0570811, 0.5, 0.0537683, 0.483708, 0.0570811, 0.47696, 0.065079, 0.483708, 0.0730768, 0.5, 0.0763896, 0.516292, 0.0730768, 0.52304, 0.065079, 0.516292, 0.0570811, 0.5, 0.0537683, 0.483708, 0.0570811, 0.47696, 0.065079, 0.483708, 0.0730768, 0.5, 0.0763896, 0.516292, 0.0730768, 0.505495, 0.065079, 0.503886, 0.0631714, 0.5, 0.0623813, 0.496114, 0.0631714, 0.494505, 0.065079, 0.496114, 0.0669865, 0.5, 0.0677766, 0.503886, 0.0669865, 0.0729609, 0.78752, 0.126425, 0.78752, 0.0729609, 0.761274, 0.126425, 0.761274, 0.0729609, 0.78752, 0.126425, 0.78752, 0.0729609, 0.761274, 0.126425, 0.761274, 0.315173, 0.888348, 0.368638, 0.888348, 0.315173, 0.862102, 0.368638, 0.862102, 0.315173, 0.888348, 0.368638, 0.888348, 0.315173, 0.862102, 0.368638, 0.862102, 0.631362, 0.888348, 0.684827, 0.888348, 0.631363, 0.862102, 0.684827, 0.862102, 0.631362, 0.888348, 0.684827, 0.888348, 0.631363, 0.862102, 0.684827, 0.862102, 0.448254, 0.879987, 0.551746, 0.879987, 0.448254, 0.868926, 0.551746, 0.868926, 0.448254, 0.879987, 0.551746, 0.879987, 0.448254, 0.868926, 0.551746, 0.868926, 0.492223, 0.879987, 0.507777, 0.879987, 0.507777, 0.868926, 0.492223, 0.868926, 0.984487, 0.663485, 0.984487, 0.49128, 0.0155131, 0.663485, 0.0155132, 0.49128, 0.984487, 0.663485, 0.984487, 0.49128, 0.0155131, 0.663485, 0.0155132, 0.49128, 0.984487, 0.577383, 0.0155132, 0.577383, 0.324605, 0.384402, 0.106887, 0.384402, 0.324605, 0.49122, 0.106887, 0.49122, 0.324605, 0.384402, 0.106887, 0.384402, 0.324605, 0.49122, 0.106887, 0.49122, 0.0216569, 0.384402, 0.0216568, 0.49122, 0.0216568, 0.49122, 0.0216569, 0.384402, 0.324605, 0.384402, 0.106887, 0.384402, 0.106887, 0.49122, 0.324605, 0.49122, 0.324605, 0.770304, 0.106887, 0.770304, 0.324605, 0.663485, 0.106887, 0.663485, 0.324605, 0.770304, 0.106887, 0.770304, 0.324605, 0.663485, 0.106887, 0.663485, 0.324605, 0.812204, 0.106887, 0.812204, 0.106887, 0.812204, 0.324605, 0.812204, 0.0216569, 0.770304, 0.021657, 0.663485, 0.021657, 0.663485, 0.0216569, 0.770304, 0.324605, 0.770304, 0.106887, 0.770304, 0.106887, 0.663485, 0.324605, 0.663485, 0.675395, 0.384402, 0.893113, 0.384402, 0.675395, 0.49122, 0.893113, 0.49122, 0.675395, 0.384402, 0.893113, 0.384402, 0.675395, 0.49122, 0.893113, 0.49122, 0.978343, 0.384402, 0.978343, 0.49122, 0.978343, 0.49122, 0.978343, 0.384402, 0.675395, 0.384402, 0.893113, 0.384402, 0.893113, 0.49122, 0.675395, 0.49122, 0.675395, 0.770304, 0.893113, 0.770304, 0.675395, 0.663485, 0.893113, 0.663485, 0.675395, 0.770304, 0.893113, 0.770304, 0.675395, 0.663485, 0.893113, 0.663485, 0.675395, 0.812204, 0.893113, 0.812204, 0.893113, 0.812204, 0.675395, 0.812204, 0.978343, 0.770304, 0.978343, 0.663485, 0.978343, 0.663485, 0.978343, 0.770304, 0.675395, 0.770304, 0.893113, 0.770304, 0.893113, 0.663485, 0.675395, 0.663485, 0.368448, 0.129658, 0.631552, 0.129658, 0.368448, 0.000499606, 0.631552, 0.000499606, 0.368448, 0.129658, 0.631552, 0.129658, 0.368448, 0.000499606, 0.631552, 0.000499606, 0.405916, 0.111265, 0.594084, 0.111265, 0.594084, 0.0188927, 0.405916, 0.0188927, 0.405916, 0.111265, 0.594084, 0.111265, 0.594084, 0.0188927, 0.405916, 0.0188927, 0.450223, 0.0895148, 0.549777, 0.0895148, 0.549777, 0.0406431, 0.450223, 0.0406431]; + indices = new [8, 2, 9, 2, 8, 0, 4, 7, 6, 7, 4, 5, 11, 8, 1, 10, 8, 11, 0, 8, 10, 16, 7, 5, 11, 7, 16, 1, 7, 11, 1, 3, 7, 3, 6, 7, 6, 9, 2, 3, 9, 6, 2, 4, 6, 2, 17, 4, 2, 10, 17, 2, 0, 10, 1, 9, 3, 9, 1, 8, 19, 14, 18, 14, 19, 15, 4, 13, 5, 13, 4, 12, 11, 15, 10, 15, 11, 14, 17, 15, 19, 15, 17, 10, 11, 18, 14, 18, 11, 16, 5, 20, 16, 16, 23, 18, 23, 16, 20, 18, 21, 19, 21, 18, 23, 19, 22, 17, 22, 19, 21, 17, 22, 4, 4, 21, 12, 21, 4, 22, 12, 23, 13, 23, 12, 21, 13, 20, 5, 20, 13, 23, 24, 33, 25, 33, 24, 32, 25, 34, 26, 34, 25, 33, 26, 35, 27, 35, 26, 34, 27, 36, 28, 36, 27, 35, 28, 37, 29, 37, 28, 36, 29, 38, 30, 38, 29, 37, 30, 39, 31, 39, 30, 38, 58, 44, 57, 44, 58, 45, 71, 63, 72, 63, 71, 46, 33, 35, 34, 35, 37, 36, 37, 39, 38, 35, 39, 37, 33, 39, 35, 33, 40, 39, 32, 40, 33, 24, 42, 32, 42, 24, 41, 32, 43, 40, 32, 60, 43, 32, 42, 60, 40, 44, 39, 40, 57, 44, 40, 43, 57, 39, 45, 31, 45, 39, 44, 25, 48, 24, 48, 25, 47, 24, 62, 41, 24, 49, 62, 24, 48, 49, 41, 62, 61, 65, 67, 66, 46, 67, 65, 46, 68, 67, 45, 51, 31, 51, 59, 50, 45, 59, 51, 31, 52, 30, 52, 31, 51, 30, 53, 29, 53, 30, 52, 29, 54, 28, 54, 29, 53, 28, 55, 27, 55, 28, 54, 27, 56, 26, 56, 27, 55, 26, 47, 25, 47, 26, 56, 46, 64, 63, 64, 46, 65, 58, 59, 45, 41, 60, 42, 60, 41, 61, 46, 69, 68, 46, 70, 69, 71, 70, 46, 43, 64, 57, 64, 43, 63, 57, 65, 58, 65, 57, 64, 58, 66, 59, 66, 58, 65, 59, 67, 50, 67, 59, 66, 49, 70, 62, 70, 49, 69, 62, 71, 61, 71, 62, 70, 61, 72, 60, 72, 61, 71, 60, 63, 43, 63, 60, 72, 47, 74, 48, 74, 47, 73, 48, 75, 49, 75, 48, 74, 49, 76, 69, 76, 49, 75, 69, 77, 68, 77, 69, 76, 68, 78, 67, 78, 68, 77, 67, 79, 50, 79, 67, 78, 50, 80, 51, 80, 50, 79, 51, 81, 52, 81, 51, 80, 52, 82, 53, 82, 52, 81, 53, 83, 54, 83, 53, 82, 54, 84, 55, 84, 54, 83, 55, 85, 56, 85, 55, 84, 56, 73, 47, 73, 56, 85, 73, 86, 74, 74, 88, 75, 88, 74, 86, 75, 87, 76, 87, 75, 88, 76, 87, 77, 77, 87, 78, 78, 88, 79, 88, 78, 87, 79, 86, 80, 86, 79, 88, 80, 86, 81, 81, 86, 82, 82, 86, 83, 83, 86, 84, 84, 86, 85, 85, 86, 73, 89, 98, 90, 98, 89, 97, 90, 99, 91, 99, 90, 98, 91, 100, 92, 100, 91, 99, 92, 101, 93, 101, 92, 100, 93, 102, 94, 102, 93, 101, 94, 103, 95, 103, 94, 102, 95, 104, 96, 104, 95, 103, 96, 97, 89, 97, 96, 104, 95, 93, 94, 93, 91, 92, 91, 89, 90, 93, 89, 91, 95, 89, 93, 96, 89, 95, 97, 106, 98, 106, 97, 105, 98, 107, 99, 107, 98, 106, 99, 108, 100, 108, 99, 107, 100, 109, 101, 109, 100, 108, 101, 110, 102, 110, 101, 109, 102, 111, 103, 111, 102, 110, 103, 112, 104, 112, 103, 111, 104, 105, 97, 105, 104, 112, 105, 114, 106, 114, 105, 113, 106, 115, 107, 115, 106, 114, 107, 116, 108, 116, 107, 115, 108, 117, 109, 117, 108, 116, 109, 118, 110, 118, 109, 117, 110, 119, 111, 119, 110, 118, 111, 120, 112, 120, 111, 119, 112, 113, 105, 113, 112, 120, 113, 122, 114, 122, 113, 121, 114, 123, 115, 123, 114, 122, 115, 124, 116, 124, 115, 123, 116, 125, 117, 125, 116, 124, 117, 126, 118, 126, 117, 125, 118, 127, 119, 127, 118, 126, 119, 128, 120, 128, 119, 127, 120, 121, 113, 121, 120, 128, 121, 130, 122, 130, 121, 129, 122, 131, 123, 131, 122, 130, 123, 132, 124, 132, 123, 131, 124, 133, 125, 133, 124, 132, 125, 134, 126, 134, 125, 133, 126, 135, 127, 135, 126, 134, 127, 136, 128, 136, 127, 135, 128, 129, 121, 129, 128, 136, 129, 138, 130, 138, 129, 137, 130, 139, 131, 139, 130, 138, 131, 140, 132, 140, 131, 139, 132, 141, 133, 141, 132, 140, 133, 142, 134, 142, 133, 141, 134, 143, 135, 143, 134, 142, 135, 144, 136, 144, 135, 143, 136, 137, 129, 137, 136, 144, 137, 146, 138, 146, 137, 145, 138, 147, 139, 147, 138, 146, 139, 148, 140, 148, 139, 147, 140, 149, 141, 149, 140, 148, 141, 150, 142, 150, 141, 149, 142, 151, 143, 151, 142, 150, 143, 152, 144, 152, 143, 151, 144, 145, 137, 145, 144, 152, 145, 153, 146, 146, 153, 147, 147, 153, 148, 148, 153, 149, 149, 153, 150, 150, 153, 151, 151, 153, 152, 152, 153, 145, 154, 163, 155, 163, 154, 162, 155, 164, 156, 164, 155, 163, 156, 165, 157, 165, 156, 164, 157, 166, 158, 166, 157, 165, 158, 167, 159, 167, 158, 166, 159, 168, 160, 168, 159, 167, 160, 169, 161, 169, 160, 168, 161, 162, 154, 162, 161, 169, 160, 158, 159, 158, 156, 157, 156, 154, 155, 158, 154, 156, 160, 154, 158, 161, 154, 160, 162, 171, 163, 171, 162, 170, 163, 172, 164, 172, 163, 171, 164, 173, 165, 173, 164, 172, 165, 174, 166, 174, 165, 173, 166, 175, 167, 175, 166, 174, 167, 176, 168, 176, 167, 175, 168, 177, 169, 177, 168, 176, 169, 170, 162, 170, 169, 177, 170, 179, 171, 179, 170, 178, 171, 180, 172, 180, 171, 179, 172, 181, 173, 181, 172, 180, 173, 182, 174, 182, 173, 181, 174, 183, 175, 183, 174, 182, 175, 184, 176, 184, 175, 183, 176, 185, 177, 185, 176, 184, 177, 178, 170, 178, 177, 185, 178, 187, 179, 187, 178, 186, 179, 188, 180, 188, 179, 187, 180, 189, 181, 189, 180, 188, 181, 190, 182, 190, 181, 189, 182, 191, 183, 191, 182, 190, 183, 192, 184, 192, 183, 191, 184, 193, 185, 193, 184, 192, 185, 186, 178, 186, 185, 193, 186, 195, 187, 195, 186, 194, 187, 196, 188, 196, 187, 195, 188, 197, 189, 197, 188, 196, 189, 198, 190, 198, 189, 197, 190, 199, 191, 199, 190, 198, 191, 200, 192, 200, 191, 199, 192, 201, 193, 201, 192, 200, 193, 194, 186, 194, 193, 201, 194, 203, 195, 203, 194, 202, 195, 204, 196, 204, 195, 203, 196, 205, 197, 205, 196, 204, 197, 206, 198, 206, 197, 205, 198, 207, 199, 207, 198, 206, 199, 208, 200, 208, 199, 207, 200, 209, 201, 209, 200, 208, 201, 202, 194, 202, 201, 209, 202, 211, 203, 211, 202, 210, 203, 212, 204, 212, 203, 211, 204, 213, 205, 213, 204, 212, 205, 214, 206, 214, 205, 213, 206, 215, 207, 215, 206, 214, 207, 216, 208, 216, 207, 215, 208, 217, 209, 217, 208, 216, 209, 210, 202, 210, 209, 217, 210, 218, 211, 211, 218, 212, 212, 218, 213, 213, 218, 214, 214, 218, 215, 215, 218, 216, 216, 218, 217, 217, 218, 210, 219, 228, 220, 228, 219, 227, 220, 229, 221, 229, 220, 228, 221, 230, 222, 230, 221, 229, 222, 231, 223, 231, 222, 230, 223, 232, 224, 232, 223, 231, 224, 233, 225, 233, 224, 232, 225, 234, 226, 234, 225, 233, 226, 227, 219, 227, 226, 234, 225, 223, 224, 223, 221, 222, 221, 219, 220, 223, 219, 221, 225, 219, 223, 226, 219, 225, 227, 236, 228, 236, 227, 235, 228, 237, 229, 237, 228, 236, 229, 238, 230, 238, 229, 237, 230, 239, 231, 239, 230, 238, 231, 240, 232, 240, 231, 239, 232, 241, 233, 241, 232, 240, 233, 242, 234, 242, 233, 241, 234, 235, 227, 235, 234, 242, 235, 244, 236, 244, 235, 243, 236, 245, 237, 245, 236, 244, 237, 246, 238, 246, 237, 245, 238, 247, 239, 247, 238, 246, 239, 248, 240, 248, 239, 247, 240, 249, 241, 249, 240, 248, 241, 250, 242, 250, 241, 249, 242, 243, 235, 243, 242, 250, 243, 252, 244, 252, 243, 251, 244, 253, 245, 253, 244, 252, 245, 254, 246, 254, 245, 253, 246, 0xFF, 247, 0xFF, 246, 254, 247, 0x0100, 248, 0x0100, 247, 0xFF, 248, 0x0101, 249, 0x0101, 248, 0x0100, 249, 258, 250, 258, 249, 0x0101, 250, 251, 243, 251, 250, 258, 251, 260, 252, 260, 251, 259, 252, 261, 253, 261, 252, 260, 253, 262, 254, 262, 253, 261, 254, 263, 0xFF, 263, 254, 262, 0xFF, 264, 0x0100, 264, 0xFF, 263, 0x0100, 265, 0x0101, 265, 0x0100, 264, 0x0101, 266, 258, 266, 0x0101, 265, 258, 259, 251, 259, 258, 266, 259, 268, 260, 268, 259, 267, 260, 269, 261, 269, 260, 268, 261, 270, 262, 270, 261, 269, 262, 271, 263, 271, 262, 270, 263, 272, 264, 272, 263, 271, 264, 273, 265, 273, 264, 272, 265, 274, 266, 274, 265, 273, 266, 267, 259, 267, 266, 274, 267, 276, 268, 276, 267, 275, 268, 277, 269, 277, 268, 276, 269, 278, 270, 278, 269, 277, 270, 279, 271, 279, 270, 278, 271, 280, 272, 280, 271, 279, 272, 281, 273, 281, 272, 280, 273, 282, 274, 282, 273, 281, 274, 275, 267, 275, 274, 282, 275, 283, 276, 276, 283, 277, 277, 283, 278, 278, 283, 279, 279, 283, 280, 280, 283, 281, 281, 283, 282, 282, 283, 275, 284, 293, 292, 293, 284, 285, 285, 294, 293, 294, 285, 286, 286, 295, 294, 295, 286, 287, 287, 296, 295, 296, 287, 288, 288, 297, 296, 297, 288, 289, 289, 298, 297, 298, 289, 290, 290, 299, 298, 299, 290, 291, 291, 292, 299, 292, 291, 284, 284, 286, 285, 286, 288, 287, 284, 288, 286, 288, 290, 289, 284, 290, 288, 291, 290, 284, 292, 301, 300, 301, 292, 293, 293, 302, 301, 302, 293, 294, 294, 303, 302, 303, 294, 295, 295, 304, 303, 304, 295, 296, 296, 305, 304, 305, 296, 297, 297, 306, 305, 306, 297, 298, 298, 307, 306, 307, 298, 299, 299, 300, 307, 300, 299, 292, 300, 309, 308, 309, 300, 301, 301, 310, 309, 310, 301, 302, 302, 311, 310, 311, 302, 303, 303, 312, 311, 312, 303, 304, 304, 313, 312, 313, 304, 305, 305, 314, 313, 314, 305, 306, 306, 315, 314, 315, 306, 307, 307, 308, 315, 308, 307, 300, 308, 317, 316, 317, 308, 309, 309, 318, 317, 318, 309, 310, 310, 319, 318, 319, 310, 311, 311, 320, 319, 320, 311, 312, 312, 321, 320, 321, 312, 313, 313, 322, 321, 322, 313, 314, 314, 323, 322, 323, 314, 315, 315, 316, 323, 316, 315, 308, 316, 325, 324, 325, 316, 317, 317, 326, 325, 326, 317, 318, 318, 327, 326, 327, 318, 319, 319, 328, 327, 328, 319, 320, 320, 329, 328, 329, 320, 321, 321, 330, 329, 330, 321, 322, 322, 331, 330, 331, 322, 323, 323, 324, 331, 324, 323, 316, 324, 333, 332, 333, 324, 325, 325, 334, 333, 334, 325, 326, 326, 335, 334, 335, 326, 327, 327, 336, 335, 336, 327, 328, 328, 337, 336, 337, 328, 329, 329, 338, 337, 338, 329, 330, 330, 339, 338, 339, 330, 331, 331, 332, 339, 332, 331, 324, 332, 341, 340, 341, 332, 333, 333, 342, 341, 342, 333, 334, 334, 343, 342, 343, 334, 335, 335, 344, 343, 344, 335, 336, 336, 345, 344, 345, 336, 337, 337, 346, 345, 346, 337, 338, 338, 347, 346, 347, 338, 339, 339, 340, 347, 340, 339, 332, 340, 341, 348, 341, 342, 348, 342, 343, 348, 343, 344, 348, 344, 345, 348, 345, 346, 348, 346, 347, 348, 347, 340, 348, 349, 358, 350, 358, 349, 357, 350, 359, 351, 359, 350, 358, 351, 360, 352, 360, 351, 359, 352, 361, 353, 361, 352, 360, 353, 362, 354, 362, 353, 361, 354, 363, 355, 363, 354, 362, 355, 364, 356, 364, 355, 363, 356, 357, 349, 357, 356, 364, 355, 353, 354, 353, 351, 352, 351, 349, 350, 353, 349, 351, 355, 349, 353, 356, 349, 355, 357, 366, 358, 366, 357, 365, 358, 367, 359, 367, 358, 366, 359, 368, 360, 368, 359, 367, 360, 369, 361, 369, 360, 368, 361, 370, 362, 370, 361, 369, 362, 371, 363, 371, 362, 370, 363, 372, 364, 372, 363, 371, 364, 365, 357, 365, 364, 372, 365, 374, 366, 374, 365, 373, 366, 375, 367, 375, 366, 374, 367, 376, 368, 376, 367, 375, 368, 377, 369, 377, 368, 376, 369, 378, 370, 378, 369, 377, 370, 379, 371, 379, 370, 378, 371, 380, 372, 380, 371, 379, 372, 373, 365, 373, 372, 380, 373, 382, 374, 382, 373, 381, 374, 383, 375, 383, 374, 382, 375, 384, 376, 384, 375, 383, 376, 385, 377, 385, 376, 384, 377, 386, 378, 386, 377, 385, 378, 387, 379, 387, 378, 386, 379, 388, 380, 388, 379, 387, 380, 381, 373, 381, 380, 388, 381, 390, 382, 390, 381, 389, 382, 391, 383, 391, 382, 390, 383, 392, 384, 392, 383, 391, 384, 393, 385, 393, 384, 392, 385, 394, 386, 394, 385, 393, 386, 395, 387, 395, 386, 394, 387, 396, 388, 396, 387, 395, 388, 389, 381, 389, 388, 396, 389, 398, 390, 398, 389, 397, 390, 399, 391, 399, 390, 398, 391, 400, 392, 400, 391, 399, 392, 401, 393, 401, 392, 400, 393, 402, 394, 402, 393, 401, 394, 403, 395, 403, 394, 402, 395, 404, 396, 404, 395, 403, 396, 397, 389, 397, 396, 404, 397, 406, 398, 406, 397, 405, 398, 407, 399, 407, 398, 406, 399, 408, 400, 408, 399, 407, 400, 409, 401, 409, 400, 408, 401, 410, 402, 410, 401, 409, 402, 411, 403, 411, 402, 410, 403, 412, 404, 412, 403, 411, 404, 405, 397, 405, 404, 412, 405, 413, 406, 406, 413, 407, 407, 413, 408, 408, 413, 409, 409, 413, 410, 410, 413, 411, 411, 413, 412, 412, 413, 405, 414, 423, 422, 423, 414, 415, 415, 424, 423, 424, 415, 416, 416, 425, 424, 425, 416, 417, 417, 426, 425, 426, 417, 418, 418, 427, 426, 427, 418, 419, 419, 428, 427, 428, 419, 420, 420, 429, 428, 429, 420, 421, 421, 422, 429, 422, 421, 414, 414, 416, 415, 416, 418, 417, 414, 418, 416, 418, 420, 419, 414, 420, 418, 421, 420, 414, 422, 431, 430, 431, 422, 423, 423, 432, 431, 432, 423, 424, 424, 433, 432, 433, 424, 425, 425, 434, 433, 434, 425, 426, 426, 435, 434, 435, 426, 427, 427, 436, 435, 436, 427, 428, 428, 437, 436, 437, 428, 429, 429, 430, 437, 430, 429, 422, 430, 439, 438, 439, 430, 431, 431, 440, 439, 440, 431, 432, 432, 441, 440, 441, 432, 433, 433, 442, 441, 442, 433, 434, 434, 443, 442, 443, 434, 435, 435, 444, 443, 444, 435, 436, 436, 445, 444, 445, 436, 437, 437, 438, 445, 438, 437, 430, 438, 447, 446, 447, 438, 439, 439, 448, 447, 448, 439, 440, 440, 449, 448, 449, 440, 441, 441, 450, 449, 450, 441, 442, 442, 451, 450, 451, 442, 443, 443, 452, 451, 452, 443, 444, 444, 453, 452, 453, 444, 445, 445, 446, 453, 446, 445, 438, 446, 455, 454, 455, 446, 447, 447, 456, 455, 456, 447, 448, 448, 457, 456, 457, 448, 449, 449, 458, 457, 458, 449, 450, 450, 459, 458, 459, 450, 451, 451, 460, 459, 460, 451, 452, 452, 461, 460, 461, 452, 453, 453, 454, 461, 454, 453, 446, 454, 463, 462, 463, 454, 455, 455, 464, 463, 464, 455, 456, 456, 465, 464, 465, 456, 457, 457, 466, 465, 466, 457, 458, 458, 467, 466, 467, 458, 459, 459, 468, 467, 468, 459, 460, 460, 469, 468, 469, 460, 461, 461, 462, 469, 462, 461, 454, 462, 471, 470, 471, 462, 463, 463, 472, 471, 472, 463, 464, 464, 473, 472, 473, 464, 465, 465, 474, 473, 474, 465, 466, 466, 475, 474, 475, 466, 467, 467, 476, 475, 476, 467, 468, 468, 477, 476, 477, 468, 469, 469, 470, 477, 470, 469, 462, 470, 471, 478, 471, 472, 478, 472, 473, 478, 473, 474, 478, 474, 475, 478, 475, 476, 478, 476, 477, 478, 477, 470, 478, 479, 488, 487, 488, 479, 480, 480, 489, 488, 489, 480, 481, 481, 490, 489, 490, 481, 482, 482, 491, 490, 491, 482, 483, 483, 492, 491, 492, 483, 484, 484, 493, 492, 493, 484, 485, 485, 494, 493, 494, 485, 486, 486, 487, 494, 487, 486, 479, 479, 481, 480, 481, 483, 482, 479, 483, 481, 483, 485, 484, 479, 485, 483, 486, 485, 479, 487, 496, 495, 496, 487, 488, 488, 497, 496, 497, 488, 489, 489, 498, 497, 498, 489, 490, 490, 499, 498, 499, 490, 491, 491, 500, 499, 500, 491, 492, 492, 501, 500, 501, 492, 493, 493, 502, 501, 502, 493, 494, 494, 495, 502, 495, 494, 487, 495, 504, 503, 504, 495, 496, 496, 505, 504, 505, 496, 497, 497, 506, 505, 506, 497, 498, 498, 507, 506, 507, 498, 499, 499, 508, 507, 508, 499, 500, 500, 509, 508, 509, 500, 501, 501, 510, 509, 510, 501, 502, 502, 503, 510, 503, 502, 495, 503, 0x0200, 511, 0x0200, 503, 504, 504, 513, 0x0200, 513, 504, 505, 505, 0x0202, 513, 0x0202, 505, 506, 506, 515, 0x0202, 515, 506, 507, 507, 516, 515, 516, 507, 508, 508, 517, 516, 517, 508, 509, 509, 518, 517, 518, 509, 510, 510, 511, 518, 511, 510, 503, 511, 520, 519, 520, 511, 0x0200, 0x0200, 521, 520, 521, 0x0200, 513, 513, 522, 521, 522, 513, 0x0202, 0x0202, 523, 522, 523, 0x0202, 515, 515, 524, 523, 524, 515, 516, 516, 525, 524, 525, 516, 517, 517, 526, 525, 526, 517, 518, 518, 519, 526, 519, 518, 511, 519, 528, 527, 528, 519, 520, 520, 529, 528, 529, 520, 521, 521, 530, 529, 530, 521, 522, 522, 531, 530, 531, 522, 523, 523, 532, 531, 532, 523, 524, 524, 533, 532, 533, 524, 525, 525, 534, 533, 534, 525, 526, 526, 527, 534, 527, 526, 519, 527, 536, 535, 536, 527, 528, 528, 537, 536, 537, 528, 529, 529, 538, 537, 538, 529, 530, 530, 539, 538, 539, 530, 531, 531, 540, 539, 540, 531, 532, 532, 541, 540, 541, 532, 533, 533, 542, 541, 542, 533, 534, 534, 535, 542, 535, 534, 527, 535, 536, 543, 536, 537, 543, 537, 538, 543, 538, 539, 543, 539, 540, 543, 540, 541, 543, 541, 542, 543, 542, 535, 543, 544, 553, 545, 553, 544, 552, 545, 554, 546, 554, 545, 553, 546, 555, 547, 555, 546, 554, 547, 556, 548, 556, 547, 555, 548, 557, 549, 557, 548, 556, 549, 558, 550, 558, 549, 557, 550, 559, 551, 559, 550, 558, 551, 552, 544, 552, 551, 559, 550, 548, 549, 548, 546, 547, 546, 544, 545, 548, 544, 546, 550, 544, 548, 551, 544, 550, 552, 561, 553, 561, 552, 560, 553, 562, 554, 562, 553, 561, 554, 563, 555, 563, 554, 562, 555, 564, 556, 564, 555, 563, 556, 565, 557, 565, 556, 564, 557, 566, 558, 566, 557, 565, 558, 567, 559, 567, 558, 566, 559, 560, 552, 560, 559, 567, 560, 569, 561, 569, 560, 568, 561, 570, 562, 570, 561, 569, 562, 571, 563, 571, 562, 570, 563, 572, 564, 572, 563, 571, 564, 573, 565, 573, 564, 572, 565, 574, 566, 574, 565, 573, 566, 575, 567, 575, 566, 574, 567, 568, 560, 568, 567, 575, 568, 577, 569, 577, 568, 576, 569, 578, 570, 578, 569, 577, 570, 579, 571, 579, 570, 578, 571, 580, 572, 580, 571, 579, 572, 581, 573, 581, 572, 580, 573, 582, 574, 582, 573, 581, 574, 583, 575, 583, 574, 582, 575, 576, 568, 576, 575, 583, 576, 585, 577, 585, 576, 584, 577, 586, 578, 586, 577, 585, 578, 587, 579, 587, 578, 586, 579, 588, 580, 588, 579, 587, 580, 589, 581, 589, 580, 588, 581, 590, 582, 590, 581, 589, 582, 591, 583, 591, 582, 590, 583, 584, 576, 584, 583, 591, 584, 593, 585, 593, 584, 592, 585, 594, 586, 594, 585, 593, 586, 595, 587, 595, 586, 594, 587, 596, 588, 596, 587, 595, 588, 597, 589, 597, 588, 596, 589, 598, 590, 598, 589, 597, 590, 599, 591, 599, 590, 598, 591, 592, 584, 592, 591, 599, 592, 601, 593, 601, 592, 600, 593, 602, 594, 602, 593, 601, 594, 603, 595, 603, 594, 602, 595, 604, 596, 604, 595, 603, 596, 605, 597, 605, 596, 604, 597, 606, 598, 606, 597, 605, 598, 607, 599, 607, 598, 606, 599, 600, 592, 600, 599, 607, 600, 608, 601, 601, 608, 602, 602, 608, 603, 603, 608, 604, 604, 608, 605, 605, 608, 606, 606, 608, 607, 607, 608, 600, 609, 618, 610, 618, 609, 617, 610, 619, 611, 619, 610, 618, 611, 620, 612, 620, 611, 619, 612, 621, 613, 621, 612, 620, 613, 622, 614, 622, 613, 621, 614, 623, 615, 623, 614, 622, 615, 624, 616, 624, 615, 623, 616, 617, 609, 617, 616, 624, 615, 613, 614, 613, 611, 612, 611, 609, 610, 613, 609, 611, 615, 609, 613, 616, 609, 615, 642, 644, 643, 644, 646, 645, 646, 648, 647, 644, 648, 646, 642, 648, 644, 641, 648, 642, 617, 626, 618, 626, 617, 625, 618, 627, 619, 627, 618, 626, 619, 628, 620, 628, 619, 627, 620, 629, 621, 629, 620, 628, 621, 630, 622, 630, 621, 629, 622, 631, 623, 631, 622, 630, 623, 632, 624, 632, 623, 631, 624, 625, 617, 625, 624, 632, 625, 634, 626, 634, 625, 633, 626, 635, 627, 635, 626, 634, 627, 636, 628, 636, 627, 635, 628, 637, 629, 637, 628, 636, 629, 638, 630, 638, 629, 637, 630, 639, 631, 639, 630, 638, 631, 640, 632, 640, 631, 639, 632, 633, 625, 633, 632, 640, 633, 642, 634, 642, 633, 641, 634, 643, 635, 643, 634, 642, 635, 644, 636, 644, 635, 643, 636, 645, 637, 645, 636, 644, 637, 646, 638, 646, 637, 645, 638, 647, 639, 647, 638, 646, 639, 648, 640, 648, 639, 647, 640, 641, 633, 641, 640, 648, 649, 652, 651, 652, 649, 650, 653, 656, 654, 656, 653, 655, 649, 654, 650, 654, 649, 653, 650, 656, 652, 656, 650, 654, 652, 655, 651, 655, 652, 656, 651, 653, 649, 653, 651, 655, 657, 660, 659, 660, 657, 658, 661, 664, 662, 664, 661, 663, 657, 662, 658, 662, 657, 661, 658, 664, 660, 664, 658, 662, 660, 663, 659, 663, 660, 664, 659, 661, 657, 661, 659, 663, 665, 668, 667, 668, 665, 666, 669, 672, 670, 672, 669, 671, 665, 670, 666, 670, 665, 669, 666, 672, 668, 672, 666, 670, 668, 671, 667, 671, 668, 672, 667, 669, 665, 669, 667, 671, 673, 676, 675, 676, 673, 674, 681, 683, 682, 683, 681, 684, 673, 678, 674, 678, 673, 677, 674, 680, 676, 680, 674, 678, 676, 679, 675, 679, 676, 680, 675, 677, 673, 677, 675, 679, 677, 682, 678, 682, 677, 681, 678, 683, 680, 683, 678, 682, 680, 684, 679, 684, 680, 683, 679, 681, 677, 681, 679, 684, 693, 687, 694, 687, 693, 685, 689, 692, 691, 692, 689, 690, 685, 690, 689, 690, 693, 686, 685, 693, 690, 686, 692, 690, 692, 686, 688, 688, 691, 692, 691, 694, 687, 688, 694, 691, 687, 689, 691, 689, 687, 685, 686, 694, 688, 694, 686, 693, 695, 698, 697, 698, 695, 696, 707, 709, 708, 709, 707, 710, 703, 705, 704, 705, 703, 706, 698, 701, 697, 701, 698, 702, 697, 699, 695, 699, 697, 701, 696, 704, 698, 704, 696, 703, 698, 705, 702, 705, 698, 704, 702, 706, 700, 706, 702, 705, 700, 703, 696, 703, 700, 706, 699, 708, 700, 708, 699, 707, 700, 709, 702, 709, 700, 708, 702, 710, 701, 710, 702, 709, 701, 707, 699, 707, 701, 710, 700, 695, 699, 695, 700, 696, 711, 714, 712, 714, 711, 713, 727, 729, 730, 729, 727, 728, 719, 721, 722, 721, 719, 720, 723, 725, 726, 725, 723, 724, 714, 717, 718, 717, 714, 713, 713, 715, 717, 715, 713, 711, 711, 720, 719, 720, 711, 712, 712, 721, 720, 721, 712, 716, 716, 722, 721, 722, 716, 715, 715, 719, 722, 719, 715, 711, 712, 724, 723, 724, 712, 714, 714, 725, 724, 725, 714, 718, 718, 726, 725, 726, 718, 716, 716, 723, 726, 723, 716, 712, 715, 728, 727, 728, 715, 716, 716, 729, 728, 729, 716, 718, 718, 730, 729, 730, 718, 717, 717, 727, 730, 727, 717, 715, 731, 734, 732, 734, 731, 733, 743, 745, 746, 745, 743, 744, 739, 741, 742, 741, 739, 740, 734, 737, 738, 737, 734, 733, 733, 735, 737, 735, 733, 731, 732, 740, 739, 740, 732, 734, 734, 741, 740, 741, 734, 738, 738, 742, 741, 742, 738, 736, 736, 739, 742, 739, 736, 732, 735, 744, 743, 744, 735, 736, 736, 745, 744, 745, 736, 738, 738, 746, 745, 746, 738, 737, 737, 743, 746, 743, 737, 735, 736, 731, 732, 731, 736, 735, 747, 750, 749, 750, 747, 748, 763, 765, 764, 765, 763, 766, 755, 757, 756, 757, 755, 758, 759, 761, 760, 761, 759, 762, 750, 753, 749, 753, 750, 754, 749, 751, 747, 751, 749, 753, 747, 756, 748, 756, 747, 755, 748, 757, 752, 757, 748, 756, 752, 758, 751, 758, 752, 757, 751, 755, 747, 755, 751, 758, 748, 760, 750, 760, 748, 759, 750, 761, 754, 761, 750, 760, 754, 762, 752, 762, 754, 761, 752, 759, 748, 759, 752, 762, 751, 764, 752, 764, 751, 763, 752, 765, 754, 765, 752, 764, 754, 766, 753, 766, 754, 765, 753, 763, 751, 763, 753, 766, 767, 770, 769, 770, 767, 0x0300, 783, 785, 784, 785, 783, 786, 767, 772, 0x0300, 772, 767, 0x0303, 0x0300, 774, 770, 774, 0x0300, 772, 770, 773, 769, 773, 770, 774, 769, 0x0303, 767, 0x0303, 769, 773, 0x0303, 776, 772, 776, 0x0303, 775, 772, 777, 774, 777, 772, 776, 774, 778, 773, 778, 774, 777, 773, 775, 0x0303, 775, 773, 778, 775, 780, 776, 780, 775, 779, 776, 781, 777, 781, 776, 780, 777, 782, 778, 782, 777, 781, 778, 779, 775, 779, 778, 782, 779, 784, 780, 784, 779, 783, 780, 785, 781, 785, 780, 784, 781, 786, 782, 786, 781, 785, 782, 783, 779, 783, 782, 786]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/TourMontparnasse.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/TourMontparnasse.as new file mode 100644 index 0000000..194b2ea --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/TourMontparnasse.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class TourMontparnasse extends Stage3DData { + + public function TourMontparnasse(){ + vertices = new [68.2556, 3.05176E-5, 98.4977, 43.3369, 3.05176E-5, 140.478, 68.2556, 742.874, 98.4977, 43.3369, 742.874, 140.478, 78.3309, 3.05176E-5, 81.4133, 65.895, 3.05176E-5, 92.2644, 78.3309, 742.874, 81.4133, 65.895, 742.874, 92.2644, 130.307, 3.05176E-5, 69.0019, 84.1315, 3.05176E-5, 84.8485, 130.307, 742.874, 69.0019, 84.1315, 742.874, 84.8485, -130.307, 3.05176E-5, -69.0019, -84.1315, 3.05176E-5, -84.8485, -130.307, 742.874, -69.0019, -84.1315, 742.874, -84.8485, -68.2556, 3.05176E-5, -98.4977, -43.3369, 3.05176E-5, -140.478, -68.2556, 742.874, -98.4977, -43.3369, 742.874, -140.478, -78.3309, 3.05176E-5, -81.4133, -65.895, 3.05176E-5, -92.2644, -78.3309, 742.874, -81.4133, -65.895, 742.874, -92.2644, -43.3369, 3.05176E-5, -140.478, -23.5981, 3.05176E-5, -128.359, -4.61671, 3.05176E-5, -115.085, -43.3369, 742.874, -140.478, -23.5981, 742.874, -128.359, -4.61671, 742.874, -115.085, -112.535, 3.05176E-5, -26.2443, -122.059, 3.05176E-5, -47.358, -130.307, 3.05176E-5, -69.0019, -112.535, 742.874, -26.2443, -122.059, 742.874, -47.358, -130.307, 742.874, -69.0019, 112.535, 3.05176E-5, 26.2443, 122.059, 3.05176E-5, 47.358, 130.307, 3.05176E-5, 69.0019, 112.535, 742.874, 26.2443, 122.059, 742.874, 47.358, 130.307, 742.874, 69.0019, 43.3369, 3.05176E-5, 140.478, 23.5981, 3.05176E-5, 128.359, 4.61671, 3.05176E-5, 115.085, 43.3369, 742.874, 140.478, 23.5981, 742.874, 128.359, 4.61671, 742.874, 115.085, 65.895, 3.05176E-5, 92.2644, 69.4613, 3.05176E-5, 96.4664, 68.2556, 3.05176E-5, 98.4977, 65.895, 742.874, 92.2644, 69.4613, 742.874, 96.4664, 68.2556, 742.874, 98.4977, -65.895, 3.05176E-5, -92.2644, -69.4613, 3.05176E-5, -96.4664, -68.2556, 3.05176E-5, -98.4977, -65.895, 742.874, -92.2644, -69.4613, 742.874, -96.4664, -68.2556, 742.874, -98.4977, -84.1315, 3.05176E-5, -84.8485, -81.8972, 3.05176E-5, -85.6153, -78.3309, 3.05176E-5, -81.4133, -84.1315, 742.874, -84.8485, -81.8972, 742.874, -85.6153, -78.3309, 742.874, -81.4133, 84.1315, 3.05176E-5, 84.8485, 81.8972, 3.05176E-5, 85.6153, 78.3309, 3.05176E-5, 81.4133, 84.1315, 742.874, 84.8485, 81.8972, 742.874, 85.6153, 78.3309, 742.874, 81.4133, 112.535, 3.05176E-5, 26.2443, 122.059, 3.05176E-5, 47.358, 130.307, 3.05176E-5, 69.0019, 84.1315, 3.05176E-5, 84.8485, 81.8972, 3.05176E-5, 85.6153, 78.3309, 3.05176E-5, 81.4133, 65.895, 3.05176E-5, 92.2644, 69.4613, 3.05176E-5, 96.4664, 68.2556, 3.05176E-5, 98.4977, 43.3369, 3.05176E-5, 140.478, 23.5981, 3.05176E-5, 128.359, 4.61671, 3.05176E-5, 115.085, -112.535, 3.05176E-5, -26.2443, -122.059, 3.05176E-5, -47.358, -130.307, 3.05176E-5, -69.0019, -84.1315, 3.05176E-5, -84.8485, -81.8972, 3.05176E-5, -85.6153, -78.3309, 3.05176E-5, -81.4133, -65.895, 3.05176E-5, -92.2644, -69.4613, 3.05176E-5, -96.4664, -68.2556, 3.05176E-5, -98.4977, -43.3369, 3.05176E-5, -140.478, -23.5981, 3.05176E-5, -128.359, -4.61671, 3.05176E-5, -115.085, 13.5396, 742.874, -100.704, 30.8064, 742.874, -85.2651, 47.1222, 742.874, -68.8249, 62.4291, 742.874, -51.4413, 76.6724, 742.874, -33.1762, 89.8017, 742.874, -14.0946, 101.77, 742.874, 5.73577, 112.535, 742.874, 26.2443, 122.059, 742.874, 47.358, 130.307, 742.874, 69.0019, 84.1315, 742.874, 84.8485, 81.8972, 742.874, 85.6153, 78.3309, 742.874, 81.4133, 65.895, 742.874, 92.2644, 69.4613, 742.874, 96.4664, 68.2556, 742.874, 98.4977, 43.3369, 742.874, 140.478, 23.5981, 742.874, 128.359, 4.61671, 742.874, 115.085, -13.5396, 742.874, 100.704, -30.8064, 742.874, 85.2651, -47.1222, 742.874, 68.8249, -62.4291, 742.874, 51.4413, -76.6724, 742.874, 33.1762, -89.8017, 742.874, 14.0946, -101.77, 742.874, -5.73576, -112.535, 742.874, -26.2443, -122.059, 742.874, -47.358, -130.307, 742.874, -69.0019, -84.1315, 742.874, -84.8485, -81.8972, 742.874, -85.6153, -78.3309, 742.874, -81.4133, -65.895, 742.874, -92.2644, -69.4613, 742.874, -96.4664, -68.2556, 742.874, -98.4977, -43.3369, 742.874, -140.478, -23.5981, 742.874, -128.359, -4.61671, 742.874, -115.085, 18.6037, 3.05176E-5, -106.719, 36.22, 3.05176E-5, -90.9681, 52.8662, 3.05176E-5, -74.195, 68.4829, 3.05176E-5, -56.4595, 83.0146, 3.05176E-5, -37.8246, 96.4097, 3.05176E-5, -18.3566, 108.621, 3.05176E-5, 1.87516, 119.498, 3.05176E-5, 22.5896, 119.498, 742.874, 22.5897, 108.621, 742.874, 1.87518, 96.4097, 742.874, -18.3566, 83.0146, 742.874, -37.8246, 68.4829, 742.874, -56.4595, 52.8662, 742.874, -74.195, 36.22, 742.874, -90.9681, 18.6037, 742.874, -106.719, 0.265701, 742.874, -121.249, 0.265701, 3.05176E-5, -121.249, -0.265705, 742.874, 121.249, -0.265706, 3.05176E-5, 121.249, -18.6037, 3.05176E-5, 106.719, -36.22, 3.05176E-5, 90.9681, -52.8662, 3.05176E-5, 74.195, -68.4829, 3.05176E-5, 56.4595, -83.0146, 3.05176E-5, 37.8246, -96.4097, 3.05176E-5, 18.3567, -108.621, 3.05176E-5, -1.87515, -119.498, 3.05176E-5, -22.5896, -119.498, 742.874, -22.5896, -108.621, 742.874, -1.87515, -96.4098, 742.874, 18.3566, -83.0146, 742.874, 37.8247, -68.4829, 742.874, 56.4595, -52.8662, 742.874, 74.195, -36.22, 742.874, 90.9681, -18.6037, 742.874, 106.719, 13.5396, 826.772, -100.704, 30.8064, 826.772, -85.2651, 47.1222, 826.772, -68.8249, 62.4291, 826.772, -51.4413, 76.6724, 826.772, -33.1762, 89.8017, 826.772, -14.0946, 101.77, 826.772, 5.73577, 112.535, 826.772, 26.2443, 122.059, 826.772, 47.358, 130.307, 826.772, 69.0019, 84.1315, 826.772, 84.8485, 81.8972, 826.772, 85.6153, 78.3309, 826.772, 81.4133, 65.895, 826.772, 92.2644, 69.4613, 826.772, 96.4664, 68.2556, 826.772, 98.4977, 43.3369, 826.772, 140.478, 23.5981, 826.772, 128.359, 4.61671, 826.772, 115.085, -13.5396, 826.772, 100.704, -30.8064, 826.772, 85.2651, -47.1222, 826.772, 68.8249, -62.4291, 826.772, 51.4413, -76.6724, 826.772, 33.1762, -89.8017, 826.772, 14.0946, -101.77, 826.772, -5.73576, -112.535, 826.772, -26.2443, -122.059, 826.772, -47.358, -130.307, 826.772, -69.0019, -84.1315, 826.772, -84.8485, -81.8972, 826.772, -85.6153, -78.3309, 826.772, -80.1898, -65.895, 826.772, -91.0408, -69.4613, 826.772, -96.4664, -68.2556, 826.772, -98.4977, -43.3369, 826.772, -140.478, -23.5981, 826.772, -128.359, -4.61671, 826.772, -115.085, 47.4394, 826.772, -21.8707, 47.4394, 836.614, -21.8707, 38.2966, 836.614, -33.3796, 38.2966, 826.772, -33.3796, -2.9953, 836.614, -75.1358, -14.4013, 836.614, -84.4067, -14.4013, 826.772, -84.4067, -2.9953, 826.772, -75.1358, 18.5572, 836.614, -55.1542, 7.99778, 836.614, -65.3789, 7.99778, 826.772, -65.3789, 18.5572, 826.772, -55.1542, -20.1077, 836.614, 53.2872, -9.5482, 836.614, 63.5119, -9.5482, 826.772, 63.5119, -20.1077, 826.772, 53.2872, -26.1987, 836.614, -93.174, -26.1987, 826.772, -93.174, 85.2248, 826.772, 41.0029, 85.2248, 836.614, 41.0029, 78.774, 836.614, 27.7956, 78.774, 826.772, 27.7956, -86.7752, 836.614, -42.8699, -86.7752, 826.772, -42.8699, 28.6632, 836.614, -44.4811, 28.6632, 826.772, -44.4811, -73.3068, 836.614, -16.7476, -73.3068, 826.772, -16.7476, -80.3244, 826.772, -29.6626, -80.3244, 836.614, -29.6626, -30.2136, 826.772, 42.6141, -30.2136, 836.614, 42.6141, 1.44488, 836.614, 73.2688, 1.44488, 826.772, 73.2688, -65.7354, 836.614, -4.14915, -65.7354, 826.772, -4.14915, 12.8509, 836.614, 82.5397, 12.8509, 826.772, 82.5397, 71.7563, 826.772, 14.8806, 71.7563, 836.614, 14.8806, 64.185, 836.614, 2.28214, 64.185, 826.772, 2.28214, 24.6483, 836.614, 91.307, 24.6483, 826.772, 91.307, -57.6247, 836.614, 8.10897, -57.6247, 826.772, 8.10897, -39.847, 826.772, 31.5126, -39.847, 836.614, 31.5126, -48.9898, 836.614, 20.0037, -48.9898, 826.772, 20.0037, 56.0743, 826.772, -9.97598, 56.0743, 836.614, -9.97598]; + uvs = new [0.761642, 0.14977, 0.666122, 0.000499606, 0.761642, 0.14977, 0.666122, 0.000499606, 0.800263, 0.210517, 0.752593, 0.171934, 0.800263, 0.210517, 0.752593, 0.171934, 0.9995, 0.254649, 0.822498, 0.198302, 0.999501, 0.254649, 0.822498, 0.198302, 0.000499547, 0.745351, 0.177502, 0.801698, 0.000499517, 0.745351, 0.177502, 0.801698, 0.238358, 0.85023, 0.333878, 0.9995, 0.238358, 0.85023, 0.333878, 0.999501, 0.199737, 0.789483, 0.247407, 0.828066, 0.199737, 0.789483, 0.247407, 0.828066, 0.333878, 0.9995, 0.409542, 0.956409, 0.482303, 0.909211, 0.333878, 0.999501, 0.409542, 0.956409, 0.482303, 0.909211, 0.0686225, 0.593317, 0.0321164, 0.668392, 0.000499547, 0.745351, 0.0686225, 0.593317, 0.0321164, 0.668392, 0.000499517, 0.745351, 0.931378, 0.406683, 0.967884, 0.331608, 0.9995, 0.254649, 0.931378, 0.406683, 0.967884, 0.331608, 0.999501, 0.254649, 0.666122, 0.000499606, 0.590458, 0.0435907, 0.517697, 0.0907888, 0.666122, 0.000499606, 0.590458, 0.0435907, 0.517697, 0.0907888, 0.752593, 0.171934, 0.766263, 0.156992, 0.761642, 0.14977, 0.752593, 0.171934, 0.766263, 0.156992, 0.761642, 0.14977, 0.247407, 0.828066, 0.233737, 0.843008, 0.238358, 0.85023, 0.247407, 0.828066, 0.233737, 0.843008, 0.238358, 0.85023, 0.177502, 0.801698, 0.186067, 0.804424, 0.199737, 0.789483, 0.177502, 0.801698, 0.186066, 0.804424, 0.199737, 0.789483, 0.822498, 0.198302, 0.813933, 0.195576, 0.800263, 0.210517, 0.822498, 0.198302, 0.813933, 0.195576, 0.800263, 0.210517, 0.931378, 0.406683, 0.967884, 0.331608, 0.9995, 0.254649, 0.822498, 0.198302, 0.813933, 0.195576, 0.800263, 0.210517, 0.752593, 0.171934, 0.766263, 0.156992, 0.761642, 0.14977, 0.666122, 0.000499606, 0.590458, 0.0435907, 0.517697, 0.0907888, 0.0686225, 0.593317, 0.0321164, 0.668392, 0.000499547, 0.745351, 0.177502, 0.801698, 0.186067, 0.804424, 0.199737, 0.789483, 0.247407, 0.828066, 0.233737, 0.843008, 0.238358, 0.85023, 0.333878, 0.9995, 0.409542, 0.956409, 0.482303, 0.909211, 0.551901, 0.858074, 0.618089, 0.803179, 0.680632, 0.744722, 0.739307, 0.682911, 0.793905, 0.617965, 0.844233, 0.550116, 0.890112, 0.479605, 0.931378, 0.406683, 0.967884, 0.331608, 0.999501, 0.254649, 0.822498, 0.198302, 0.813933, 0.195576, 0.800263, 0.210517, 0.752593, 0.171934, 0.766263, 0.156992, 0.761642, 0.14977, 0.666122, 0.000499606, 0.590458, 0.0435907, 0.517697, 0.0907888, 0.448099, 0.141926, 0.381911, 0.196821, 0.319368, 0.255278, 0.260693, 0.317089, 0.206095, 0.382035, 0.155767, 0.449884, 0.109888, 0.520395, 0.0686225, 0.593317, 0.0321164, 0.668392, 0.000499517, 0.745351, 0.177502, 0.801698, 0.186066, 0.804424, 0.199737, 0.789483, 0.247407, 0.828066, 0.233737, 0.843008, 0.238358, 0.85023, 0.333878, 0.999501, 0.409542, 0.956409, 0.482303, 0.909211, 0.571313, 0.879463, 0.638841, 0.823457, 0.70265, 0.763817, 0.762513, 0.700754, 0.818217, 0.634494, 0.869564, 0.565271, 0.916371, 0.493333, 0.958066, 0.419678, 0.958066, 0.419678, 0.916371, 0.493333, 0.869564, 0.565271, 0.818217, 0.634494, 0.762513, 0.700754, 0.70265, 0.763817, 0.638841, 0.823457, 0.571313, 0.879463, 0.501018, 0.931128, 0.501018, 0.931128, 0.498982, 0.0688719, 0.498982, 0.0688719, 0.428687, 0.120537, 0.361159, 0.176543, 0.29735, 0.236183, 0.237487, 0.299246, 0.181783, 0.365506, 0.130436, 0.434729, 0.0836291, 0.506667, 0.0419339, 0.580322, 0.0419339, 0.580322, 0.0836291, 0.506667, 0.130436, 0.434729, 0.181783, 0.365506, 0.237487, 0.299246, 0.29735, 0.236183, 0.361159, 0.176543, 0.428687, 0.120537, 0.551901, 0.858074, 0.618089, 0.803179, 0.680632, 0.744722, 0.739307, 0.682911, 0.793905, 0.617965, 0.844233, 0.550116, 0.890112, 0.479605, 0.931378, 0.406683, 0.967884, 0.331608, 0.999501, 0.254649, 0.822498, 0.198302, 0.813933, 0.195576, 0.800263, 0.210517, 0.752593, 0.171934, 0.766263, 0.156992, 0.761642, 0.14977, 0.666122, 0.000499606, 0.590458, 0.0435907, 0.517697, 0.0907888, 0.448099, 0.141926, 0.381911, 0.196821, 0.319368, 0.255278, 0.260693, 0.317089, 0.206095, 0.382035, 0.155767, 0.449884, 0.109888, 0.520395, 0.0686225, 0.593317, 0.0321164, 0.668392, 0.000499517, 0.745351, 0.177502, 0.801698, 0.186066, 0.804424, 0.199737, 0.785133, 0.247407, 0.823716, 0.233737, 0.843008, 0.238358, 0.85023, 0.333878, 0.999501, 0.409542, 0.956409, 0.482303, 0.909211, 0.681848, 0.577766, 0.681848, 0.577766, 0.646801, 0.618689, 0.646801, 0.618689, 0.488518, 0.767162, 0.444796, 0.800127, 0.444796, 0.800127, 0.488518, 0.767162, 0.571135, 0.696113, 0.530658, 0.732469, 0.530658, 0.732469, 0.571135, 0.696113, 0.422922, 0.310526, 0.463399, 0.27417, 0.463399, 0.27417, 0.422922, 0.310526, 0.399573, 0.831301, 0.399573, 0.831301, 0.826689, 0.354205, 0.826689, 0.354205, 0.801961, 0.401167, 0.801961, 0.401167, 0.167368, 0.652433, 0.167368, 0.652433, 0.609873, 0.658162, 0.609873, 0.658162, 0.218996, 0.55955, 0.218996, 0.55955, 0.192095, 0.605472, 0.192095, 0.605472, 0.384183, 0.348476, 0.384183, 0.348476, 0.505539, 0.239477, 0.505539, 0.239477, 0.248019, 0.514753, 0.248019, 0.514753, 0.549261, 0.206512, 0.549261, 0.206512, 0.775061, 0.447089, 0.775061, 0.447089, 0.746038, 0.491885, 0.746038, 0.491885, 0.594483, 0.175338, 0.594483, 0.175338, 0.27911, 0.471167, 0.27911, 0.471167, 0.347256, 0.38795, 0.347256, 0.38795, 0.312209, 0.428872, 0.312209, 0.428872, 0.714947, 0.535472, 0.714947, 0.535472]; + indices = new [3, 0, 2, 0, 3, 1, 7, 4, 6, 4, 7, 5, 11, 8, 10, 8, 11, 9, 15, 12, 14, 12, 15, 13, 19, 16, 18, 16, 19, 17, 23, 20, 22, 20, 23, 21, 28, 24, 27, 24, 28, 25, 29, 25, 28, 25, 29, 26, 34, 30, 33, 30, 34, 31, 35, 31, 34, 31, 35, 32, 40, 36, 39, 36, 40, 37, 41, 37, 40, 37, 41, 38, 46, 42, 45, 42, 46, 43, 47, 43, 46, 43, 47, 44, 52, 48, 51, 48, 52, 49, 53, 49, 52, 49, 53, 50, 58, 54, 57, 54, 58, 55, 59, 55, 58, 55, 59, 56, 64, 60, 63, 60, 64, 61, 65, 61, 64, 61, 65, 62, 70, 66, 69, 66, 70, 67, 71, 67, 70, 67, 71, 68, 148, 134, 149, 134, 148, 135, 147, 135, 148, 135, 147, 136, 146, 136, 147, 136, 146, 137, 145, 137, 146, 137, 145, 138, 144, 138, 145, 138, 144, 139, 143, 139, 144, 139, 143, 140, 142, 140, 143, 140, 142, 141, 104, 72, 103, 72, 104, 73, 105, 73, 104, 73, 105, 74, 106, 74, 105, 74, 106, 75, 107, 75, 106, 75, 107, 76, 108, 76, 107, 76, 108, 77, 109, 77, 108, 77, 109, 78, 110, 78, 109, 78, 110, 79, 111, 79, 110, 79, 111, 80, 112, 80, 111, 80, 112, 81, 113, 81, 112, 81, 113, 82, 114, 82, 113, 82, 114, 83, 169, 153, 152, 153, 169, 154, 168, 154, 169, 154, 168, 155, 167, 155, 168, 155, 167, 156, 166, 156, 167, 156, 166, 157, 165, 157, 166, 157, 165, 158, 164, 158, 165, 158, 164, 159, 163, 159, 164, 159, 163, 160, 162, 160, 163, 160, 162, 161, 123, 84, 122, 84, 123, 85, 124, 85, 123, 85, 124, 86, 125, 86, 124, 86, 125, 87, 126, 87, 125, 87, 126, 88, 127, 88, 126, 88, 127, 89, 128, 89, 127, 89, 128, 90, 129, 90, 128, 90, 129, 91, 130, 91, 129, 91, 130, 92, 131, 92, 130, 92, 131, 93, 132, 93, 131, 93, 132, 94, 133, 94, 132, 94, 133, 95, 149, 151, 150, 151, 149, 134, 72, 142, 103, 142, 72, 141, 103, 143, 102, 143, 103, 142, 102, 144, 101, 144, 102, 143, 101, 145, 100, 145, 101, 144, 100, 146, 99, 146, 100, 145, 99, 147, 98, 147, 99, 146, 98, 148, 97, 148, 98, 147, 97, 149, 96, 149, 97, 148, 96, 150, 133, 150, 96, 149, 133, 151, 95, 151, 133, 150, 114, 153, 83, 153, 114, 152, 84, 162, 122, 162, 84, 161, 122, 163, 121, 163, 122, 162, 121, 164, 120, 164, 121, 163, 120, 165, 119, 165, 120, 164, 119, 166, 118, 166, 119, 165, 118, 167, 117, 167, 118, 166, 117, 168, 116, 168, 117, 167, 116, 169, 115, 169, 116, 168, 115, 152, 114, 152, 115, 169, 96, 171, 97, 171, 96, 170, 97, 172, 98, 172, 97, 171, 98, 173, 99, 173, 98, 172, 99, 174, 100, 174, 99, 173, 100, 175, 101, 175, 100, 174, 101, 176, 102, 176, 101, 175, 102, 177, 103, 177, 102, 176, 103, 178, 104, 178, 103, 177, 104, 179, 105, 179, 104, 178, 105, 180, 106, 180, 105, 179, 106, 181, 107, 181, 106, 180, 107, 182, 108, 182, 107, 181, 108, 183, 109, 183, 108, 182, 109, 184, 110, 184, 109, 183, 110, 185, 111, 185, 110, 184, 111, 186, 112, 186, 111, 185, 112, 187, 113, 187, 112, 186, 113, 188, 114, 188, 113, 187, 114, 189, 115, 189, 114, 188, 115, 190, 116, 190, 115, 189, 116, 191, 117, 191, 116, 190, 117, 192, 118, 192, 117, 191, 118, 193, 119, 193, 118, 192, 119, 194, 120, 194, 119, 193, 120, 195, 121, 195, 120, 194, 121, 196, 122, 196, 121, 195, 122, 197, 123, 197, 122, 196, 123, 198, 124, 198, 123, 197, 124, 199, 125, 199, 124, 198, 125, 200, 126, 200, 125, 199, 126, 201, 127, 201, 126, 200, 127, 202, 128, 202, 127, 201, 128, 203, 129, 203, 128, 202, 129, 204, 130, 204, 129, 203, 130, 205, 131, 205, 130, 204, 131, 206, 132, 206, 131, 205, 132, 207, 133, 207, 132, 206, 133, 170, 96, 170, 133, 207, 208, 210, 209, 210, 208, 211, 212, 214, 213, 214, 212, 215, 216, 218, 217, 218, 216, 219, 217, 215, 212, 215, 217, 218, 220, 222, 221, 222, 220, 223, 213, 225, 224, 225, 213, 214, 226, 228, 227, 228, 226, 229, 224, 231, 230, 231, 224, 225, 211, 232, 210, 232, 211, 233, 234, 236, 235, 236, 234, 237, 220, 238, 223, 238, 220, 239, 221, 241, 240, 241, 221, 222, 242, 235, 243, 235, 242, 234, 240, 245, 244, 245, 240, 241, 246, 248, 247, 248, 246, 249, 250, 226, 227, 226, 250, 251, 229, 247, 228, 247, 229, 246, 237, 231, 236, 231, 237, 230, 252, 243, 253, 243, 252, 242, 239, 254, 238, 254, 239, 0xFF, 244, 251, 250, 251, 244, 245, 0x0100, 253, 0x0101, 253, 0x0100, 252, 0xFF, 0x0101, 254, 0x0101, 0xFF, 0x0100, 258, 209, 259, 209, 258, 208, 249, 259, 248, 259, 249, 258, 233, 216, 232, 216, 233, 219, 228, 240, 244, 240, 228, 247, 227, 244, 250, 244, 227, 228, 220, 248, 259, 248, 220, 221, 247, 221, 240, 221, 247, 248, 0xFF, 209, 210, 209, 0xFF, 239, 259, 239, 220, 239, 259, 209, 252, 232, 216, 232, 252, 0x0100, 210, 0x0100, 0xFF, 0x0100, 210, 232, 234, 217, 212, 217, 234, 242, 216, 242, 252, 242, 216, 217, 230, 213, 224, 213, 230, 237, 212, 237, 234, 237, 212, 213, 180, 182, 181, 182, 180, 179, 185, 183, 186, 183, 185, 184, 251, 182, 226, 182, 251, 183, 202, 204, 203, 204, 202, 205, 199, 201, 200, 201, 199, 198, 202, 231, 225, 231, 202, 201, 178, 182, 179, 197, 231, 201, 231, 197, 196, 233, 171, 219, 171, 233, 172, 225, 206, 202, 206, 225, 207, 238, 192, 191, 192, 238, 254, 183, 187, 186, 197, 201, 198, 202, 206, 205, 187, 251, 188, 251, 187, 183, 226, 178, 177, 178, 226, 182, 173, 208, 174, 208, 173, 211, 173, 233, 211, 233, 173, 172, 176, 246, 229, 196, 236, 231, 236, 196, 195, 0x0101, 192, 254, 192, 0x0101, 193, 238, 190, 223, 190, 238, 191, 223, 190, 222, 253, 193, 0x0101, 193, 253, 194, 214, 207, 225, 207, 214, 170, 258, 174, 208, 174, 258, 175, 177, 229, 226, 229, 177, 176, 171, 218, 219, 236, 195, 235, 235, 194, 243, 194, 235, 195, 243, 194, 253, 245, 188, 251, 188, 245, 189, 241, 189, 245, 241, 190, 189, 190, 241, 222, 249, 175, 258, 246, 175, 249, 175, 246, 176, 215, 170, 214, 215, 171, 170, 171, 215, 218]; + } + } +}//package wd.d3.geom.monuments.mesh.paris diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileDenon.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileDenon.as new file mode 100644 index 0000000..f93e2c2 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileDenon.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris.louvre { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class AileDenon extends Stage3DData { + + public function AileDenon(){ + vertices = new [302.382, 88.9335, -274.062, 284.064, 111.847, -240.259, 253.949, 88.9335, -258.325, 297.134, 7.62939E-6, -272.357, 302.382, 7.62939E-6, -274.062, 297.134, 49.021, -272.357, 295.492, 49.021, -277.412, 295.492, 7.62939E-6, -277.412, 257.974, 7.62939E-6, -265.221, 257.974, 49.021, -265.221, 259.616, 49.021, -260.166, 259.616, 7.62939E-6, -260.166, 253.949, 7.62939E-6, -258.325, 323.327, 88.9335, -44.8035, 357.735, 111.847, -13.5212, 341.613, 99.6028, -23.2689, 323.327, 7.62939E-6, -44.8036, 379.292, 7.62939E-6, -37.3567, 379.293, 88.9335, -37.3567, 367.127, 99.6028, -32.808, 426.452, 99.6028, -54.9889, 419.988, 119.288, -27.2095, 288.975, 99.6028, -3.58841, 305.513, 99.6028, 40.644, 281.214, 88.9335, -24.3466, 280.673, 99.6028, 49.9312, 256.374, 88.9335, -15.0594, 280.673, 1.52588E-5, 49.9312, 305.513, 1.52588E-5, 40.6441, 305.614, 99.6028, 40.9159, 305.614, 1.52588E-5, 40.9159, 345.103, 99.6028, 26.1518, 345.103, 1.52588E-5, 26.1518, 366.748, 99.6028, 39.0751, 366.747, 1.52588E-5, 39.0751, 395.807, 99.6028, 28.2104, 395.806, 1.52588E-5, 28.2103, 403.663, 99.6028, 4.25691, 403.663, 1.52588E-5, 4.25686, 443.091, 99.6028, -10.4846, 443.091, 1.52588E-5, -10.4846, 426.452, 1.52588E-5, -54.9889, 366.111, 119.288, -6.92178, 312.078, 119.288, 13.1365, 256.551, 7.62939E-6, -250.319, 257.298, 89.7235, -250.592, 264.424, 90.4132, -230.907, 287.784, 92.6745, -166.374, 256.55, 0.741993, -250.321, 256.55, 88.9335, -250.321, 284.243, 7.62939E-6, -165.092, 257.102, 89.253, -13.1131, 288.906, 88.9335, -31.934, 290.451, 90.7053, -27.8004, 288.906, 3.0848, -31.934, 288.906, 1.52588E-5, -31.934, 290.074, 90.7053, -27.6594, 281.214, 90.7053, -24.3466, 284.243, 88.9335, -165.092, 244.499, 2.67029E-5, -150.705, 287.784, 117.992, -166.374, 257.298, 117.992, -250.592, 138.372, 117.992, -207.541, 138.372, 3.05176E-5, -207.541, 138.586, 1.90735E-5, -206.949, 159.117, 1.52588E-5, -150.236, 244.499, 91.7204, -150.705, 290.451, 91.7204, -27.8004, 269.858, 91.7204, -37.9244, 229.694, 91.7204, -145.346, 229.694, 98.905, -145.346, 194.752, 110.88, -132.697, 168.858, 117.992, -123.324, 181.224, 139.252, -148.804, 267.515, 139.252, -180.042, 251.421, 139.252, -224.502, 165.129, 139.252, -193.265, 162.576, 102.938, -140.68, 156.494, 90.8429, -157.481, 141.209, 90.8429, -199.705, 138.586, 87.0301, -206.949, -445.708, 87.0301, 4.56202, -445.708, 7.62939E-6, 4.56201, -171.105, 7.62939E-6, -30.6977, -76.5154, 7.62939E-6, -64.9386, -19.3263, 1.90735E-5, 88.0207, -113.547, 1.90735E-5, 123.248, -78.5722, 1.90735E-5, 188.435, 2.55684, 1.90735E-5, 158.102, 209.694, 7.62939E-6, 80.6568, 183.767, 7.62939E-6, 12.0873, 184.021, 7.62939E-6, 11.9921, 283.425, 2.67029E-5, 57.2931, 283.425, 103.587, 57.2931, 256.374, 91.7204, -15.0593, 256.374, 103.587, -15.0593, 256.209, 103.587, -9.98706, 280.389, 103.587, 54.6855, 254.313, 151.441, 40.9013, 244.01, 151.441, 13.3446, 187.474, 103.587, 15.7118, 211.464, 151.441, 25.5129, 221.767, 151.441, 53.0696, 211.654, 103.587, 80.3844, 211.073, 103.587, 84.3445, 184.021, 103.587, 11.9921, 203.394, 99.6028, 63.8102, 184.021, 99.6028, 11.9921, 177.377, 99.6028, 28.2399, 189.042, 99.6028, 59.4377, 168.304, 108.107, 52.9135, 15.0435, 108.107, 110.215, -9.18276, 99.6028, 97.9918, -23.1159, 99.6028, 89.4376, -3.77412, 99.6028, 141.169, 2.48164, 99.6028, 129.19, -9.52993, 132.248, 125.775, -4.30947, 132.248, 139.738, -9.52993, 187.563, 125.775, -4.30947, 187.563, 139.738, -12.1273, 187.563, 142.661, -17.3479, 187.563, 128.698, -17.3479, 143.14, 128.698, -12.1273, 143.14, 142.661, -33.7544, 155.328, 96.4598, -12.1233, 155.328, 154.315, -21.6895, 169.927, 149.955, -38.1139, 169.927, 106.026, -82.043, 169.927, 122.45, -91.6091, 155.328, 118.091, -63.6417, 147.134, 104.708, -101.34, 132.727, 113.656, -66.7448, 147.134, 96.4078, -107.309, 130.905, 111.574, -69.5757, 108.593, 97.4662, -107.309, 96.4931, 111.574, -164.52, 95.751, -34.3864, -106.022, 108.593, -0.0137599, -84.4234, 95.751, -64.3332, -29.5274, 95.751, 82.4928, -26.1803, 132.126, 81.2413, -26.1803, 95.751, 81.2414, -23.1159, 95.751, 89.4376, -19.3263, 95.751, 88.0207, 183.767, 91.7204, 12.0874, 196.436, 91.7204, -10.4731, 196.436, 98.905, -10.4731, 269.858, 98.905, -37.9244, 221.994, 110.88, -59.8344, 168.858, 102.881, -123.324, 149.571, 98.905, -135.818, 149.571, 91.7204, -135.818, 162.576, 91.7204, -140.68, 159.116, 91.7203, -150.236, 127.497, 91.7204, -138.414, 159.116, 87.0301, -150.236, 127.497, 1.52588E-5, -138.414, -76.5154, 87.0301, -64.9385, -80.3678, 92.4733, -75.2423, 136.496, 101.953, -174.12, -411.422, 101.953, 24.2235, -174.588, 91.9521, -40.0148, -385.835, 94.5049, 30.9692, -171.105, 87.0301, -30.6977, -380.545, 87.0301, 45.1186, -385.835, 96.3397, 30.9692, -322.17, 96.3397, 201.249, -330.561, 96.3397, 191.208, -389.904, 96.3397, 32.4903, -351.28, 103.896, 183.235, -405.466, 103.896, 38.3087, -418.454, 94.3244, 43.165, -424.715, 96.3397, 45.5059, -429.825, 96.3391, 47.4164, -429.825, 87.233, 47.4164, -425.178, 87.0301, 61.2754, -424.714, 87.3149, 61.1075, -425.178, 49.3759, 61.2754, -424.714, 49.3759, 61.1076, -379.403, 49.3759, 222.648, -366.243, 49.3759, 217.728, -366.243, 96.3397, 217.728, -383.091, 103.587, 224.027, -383.091, 2.67029E-5, 224.027, -379.403, 1.52588E-5, 222.648, -443.068, 1.52588E-5, 52.3677, -443.068, 49.3759, 52.3677, -430.151, 49.3759, 47.5381, -430.151, 1.52588E-5, 47.538, -322.17, 1.52588E-5, 201.249, -380.545, 1.52588E-5, 45.1186, -356.039, 2.67029E-5, 296.379, -285.065, 2.67029E-5, 265.64, -310.738, 2.67029E-5, 196.975, -310.738, 99.6028, 196.975, -113.547, 95.751, 123.248, -104.245, 99.6028, 119.771, -112.433, 99.6028, 132.73, -299.731, 99.6028, 202.758, -286.494, 99.6028, 238.16, -291.396, 99.6028, 248.709, -310.738, 103.587, 196.975, -283.687, 103.587, 269.328, -310.903, 103.587, 202.047, -286.723, 103.587, 266.72, -312.799, 151.441, 252.936, -323.102, 151.441, 225.379, -379.638, 103.587, 227.746, -355.648, 151.441, 237.547, -345.345, 151.441, 265.104, -355.458, 103.587, 292.419, -356.039, 103.587, 296.379, -283.687, 2.67029E-5, 269.328, -285.066, 47.4768, 265.64, -78.5722, 47.4768, 188.435, -76.9764, 130.905, 192.703, -76.9764, 1.90735E-5, 192.703, 4.15264, 1.90735E-5, 162.37, 4.15264, 132.126, 162.37, 2.55684, 47.4768, 158.102, -2.9207, 133.953, 158.508, -9.24839, 133.953, 141.584, -40.0906, 147.134, 167.698, -69.9781, 155.328, 175.946, -74.4125, 132.727, 185.676, -80.8838, 132.727, 168.368, -77.9526, 142.081, 167.272, -83.173, 142.081, 153.309, -83.173, 187.563, 153.309, -77.9526, 187.563, 167.272, -85.4386, 187.563, 170.071, -90.659, 187.563, 156.108, -85.4385, 130.905, 170.071, -90.659, 130.905, 156.108, -86.1043, 132.727, 154.405, -84.8712, 99.6028, 171.588, -84.8712, 47.4768, 171.588, -291.396, 47.4768, 248.709, -99.197, 99.6028, 168.132, -123.301, 107.477, 156.969, -275.626, 107.477, 213.921, -36.4119, 147.134, 177.537, -312.799, 157.255, 252.936, -345.345, 157.255, 265.104, -323.102, 157.255, 225.379, -355.648, 157.255, 237.547, -106.56, 95.751, 120.636, -104.245, 96.4931, 119.771, -174.588, 95.751, -40.0148, -80.3678, 95.751, -75.2423, -365.373, 96.3397, 204.224, -29.5605, 133.953, 87.2572, -14.4689, 133.953, 127.621, -65.6186, 169.927, 166.379, -31.1281, 181.821, 145.654, -61.3172, 181.821, 156.941, -42.4153, 181.821, 115.465, -72.6044, 181.821, 126.752, -3.77324, 47.4768, 141.172, 203.394, 47.4768, 63.8102, 209.694, 47.4768, 80.6568, 211.073, 2.67029E-5, 84.3446, 254.313, 157.255, 40.9013, 221.767, 157.255, 53.0696, 244.01, 157.255, 13.3446, 211.464, 157.255, 25.5129]; + uvs = new [0.841345, 0.993668, 0.820755, 0.934815, 0.786907, 0.96627, 0.835446, 0.9907, 0.841345, 0.993668, 0.835446, 0.9907, 0.8336, 0.9995, 0.8336, 0.9995, 0.79143, 0.978276, 0.79143, 0.978276, 0.793276, 0.969476, 0.793276, 0.969476, 0.786907, 0.96627, 0.864886, 0.594517, 0.903561, 0.540053, 0.88544, 0.557024, 0.864886, 0.594517, 0.927791, 0.581552, 0.927791, 0.581552, 0.914117, 0.573632, 0.980798, 0.612251, 0.973533, 0.563885, 0.826275, 0.522759, 0.844864, 0.445749, 0.817552, 0.558901, 0.816944, 0.429579, 0.789632, 0.542731, 0.816944, 0.429579, 0.844864, 0.445748, 0.844978, 0.445275, 0.844978, 0.445275, 0.889363, 0.47098, 0.889362, 0.47098, 0.913691, 0.44848, 0.913691, 0.44848, 0.946353, 0.467396, 0.946353, 0.467396, 0.955184, 0.5091, 0.955184, 0.5091, 0.999501, 0.534766, 0.999501, 0.534766, 0.980798, 0.612251, 0.912975, 0.528563, 0.852243, 0.49364, 0.789831, 0.952331, 0.790671, 0.952806, 0.79868, 0.918534, 0.824937, 0.806178, 0.78983, 0.952335, 0.78983, 0.952335, 0.820956, 0.803946, 0.79045, 0.539342, 0.826198, 0.572111, 0.827935, 0.564914, 0.826198, 0.572111, 0.826198, 0.572111, 0.827511, 0.564668, 0.817552, 0.558901, 0.820956, 0.803946, 0.776285, 0.778898, 0.824937, 0.806178, 0.790671, 0.952806, 0.656999, 0.877852, 0.656999, 0.877852, 0.65724, 0.876822, 0.680316, 0.778082, 0.776285, 0.778898, 0.827935, 0.564914, 0.804788, 0.58254, 0.759644, 0.769567, 0.759644, 0.769567, 0.720369, 0.747544, 0.691265, 0.731225, 0.705164, 0.775588, 0.802155, 0.829974, 0.784065, 0.907382, 0.687074, 0.852996, 0.684204, 0.761443, 0.677367, 0.790694, 0.660187, 0.864208, 0.65724, 0.876822, 0.000499487, 0.508569, 0.000499547, 0.508569, 0.30915, 0.569958, 0.415468, 0.629573, 0.479748, 0.363263, 0.373845, 0.30193, 0.413156, 0.188436, 0.504344, 0.241247, 0.737164, 0.376084, 0.708022, 0.495467, 0.708308, 0.495633, 0.820038, 0.416762, 0.820037, 0.416762, 0.789632, 0.542731, 0.789632, 0.542731, 0.789446, 0.5339, 0.816624, 0.421301, 0.787315, 0.4453, 0.775735, 0.493278, 0.712189, 0.489157, 0.739154, 0.472092, 0.750735, 0.424115, 0.739367, 0.376558, 0.738714, 0.369663, 0.708309, 0.495633, 0.730083, 0.405415, 0.708308, 0.495633, 0.700841, 0.467345, 0.713951, 0.413028, 0.690642, 0.424387, 0.518379, 0.324621, 0.491149, 0.345903, 0.475488, 0.360796, 0.497228, 0.270728, 0.50426, 0.291586, 0.490759, 0.297531, 0.496627, 0.273221, 0.490759, 0.297531, 0.496627, 0.273221, 0.487839, 0.268132, 0.481972, 0.292442, 0.481972, 0.292442, 0.487839, 0.268132, 0.463531, 0.34857, 0.487844, 0.247842, 0.477092, 0.255432, 0.458631, 0.331915, 0.409255, 0.303319, 0.398503, 0.310909, 0.429938, 0.33421, 0.387566, 0.31863, 0.42645, 0.34866, 0.380856, 0.322255, 0.423268, 0.346818, 0.380856, 0.322255, 0.316552, 0.57638, 0.382303, 0.516536, 0.406579, 0.628519, 0.468282, 0.372887, 0.472044, 0.375066, 0.472044, 0.375066, 0.475488, 0.360796, 0.479748, 0.363263, 0.708022, 0.495467, 0.722262, 0.534746, 0.722262, 0.534746, 0.804788, 0.58254, 0.750989, 0.620687, 0.691265, 0.731225, 0.669587, 0.752977, 0.669587, 0.752977, 0.684204, 0.761443, 0.680315, 0.778081, 0.644775, 0.757498, 0.680315, 0.778081, 0.644775, 0.757498, 0.415468, 0.629573, 0.411138, 0.647513, 0.654891, 0.819665, 0.0390357, 0.474337, 0.305235, 0.58618, 0.0677955, 0.462592, 0.30915, 0.569958, 0.0737417, 0.437958, 0.0677955, 0.462592, 0.139355, 0.166126, 0.129923, 0.183608, 0.0632228, 0.459944, 0.106635, 0.19749, 0.0457312, 0.449814, 0.031132, 0.441359, 0.0240947, 0.437283, 0.0183512, 0.433957, 0.0183512, 0.433957, 0.023575, 0.409828, 0.0240963, 0.41012, 0.023575, 0.409828, 0.0240963, 0.41012, 0.0750253, 0.12887, 0.0898167, 0.137436, 0.0898167, 0.137436, 0.0708804, 0.126469, 0.0708804, 0.126469, 0.0750254, 0.12887, 0.00346634, 0.425337, 0.00346634, 0.425336, 0.0179856, 0.433745, 0.0179855, 0.433745, 0.139355, 0.166126, 0.0737417, 0.437958, 0.101286, 0.000499547, 0.18106, 0.0540183, 0.152204, 0.173567, 0.152204, 0.173567, 0.373845, 0.30193, 0.3843, 0.307985, 0.375097, 0.285421, 0.164576, 0.163499, 0.179454, 0.101863, 0.173945, 0.0834953, 0.152204, 0.173567, 0.182609, 0.0475977, 0.152018, 0.164736, 0.179196, 0.0521376, 0.149887, 0.0761367, 0.138307, 0.124114, 0.0747609, 0.119993, 0.101726, 0.102929, 0.113306, 0.054951, 0.101939, 0.00739449, 0.101286, 0.000499606, 0.182609, 0.0475977, 0.18106, 0.0540181, 0.413156, 0.188436, 0.41495, 0.181005, 0.41495, 0.181005, 0.506138, 0.233816, 0.506138, 0.233816, 0.504344, 0.241247, 0.498188, 0.24054, 0.491075, 0.270006, 0.456409, 0.224541, 0.422816, 0.210181, 0.417831, 0.19324, 0.410558, 0.223374, 0.413852, 0.225283, 0.407985, 0.249593, 0.407985, 0.249593, 0.413852, 0.225283, 0.405438, 0.22041, 0.399571, 0.24472, 0.405438, 0.22041, 0.399571, 0.24472, 0.40469, 0.247684, 0.406076, 0.217768, 0.406076, 0.217768, 0.173945, 0.0834953, 0.389974, 0.223785, 0.362881, 0.24322, 0.191669, 0.144064, 0.460544, 0.20741, 0.149887, 0.0761367, 0.113306, 0.054951, 0.138307, 0.124114, 0.101726, 0.102929, 0.381698, 0.306477, 0.3843, 0.307985, 0.305235, 0.58618, 0.411138, 0.647513, 0.0907948, 0.160947, 0.468245, 0.364592, 0.485207, 0.294316, 0.427716, 0.226836, 0.466483, 0.262921, 0.432551, 0.243269, 0.453796, 0.315482, 0.419864, 0.29583, 0.497229, 0.270724, 0.730083, 0.405415, 0.737164, 0.376084, 0.738714, 0.369663, 0.787315, 0.4453, 0.750735, 0.424115, 0.775735, 0.493278, 0.739154, 0.472092]; + indices = new [0, 2, 1, 0, 3, 5, 3, 0, 4, 7, 5, 3, 5, 7, 6, 10, 8, 11, 8, 10, 9, 6, 8, 9, 8, 6, 7, 9, 5, 6, 5, 9, 10, 12, 10, 11, 10, 12, 2, 0, 10, 2, 10, 0, 5, 14, 13, 15, 13, 14, 1, 18, 4, 0, 4, 18, 17, 21, 19, 14, 19, 21, 20, 24, 22, 57, 22, 24, 23, 26, 23, 24, 23, 51, 25, 26, 51, 23, 25, 28, 23, 28, 25, 27, 28, 29, 23, 29, 28, 30, 32, 29, 30, 29, 32, 31, 34, 31, 32, 31, 34, 33, 34, 35, 33, 35, 34, 36, 36, 37, 35, 37, 36, 38, 40, 37, 38, 37, 40, 39, 41, 39, 40, 39, 41, 20, 42, 21, 43, 21, 37, 39, 42, 37, 21, 42, 35, 37, 33, 35, 42, 31, 33, 42, 43, 31, 42, 31, 43, 29, 43, 23, 29, 23, 43, 22, 39, 20, 21, 19, 0, 1, 0, 19, 18, 18, 19, 20, 19, 1, 14, 41, 18, 20, 18, 41, 17, 15, 43, 14, 43, 15, 22, 14, 43, 21, 48, 12, 44, 48, 2, 12, 49, 2, 48, 54, 16, 55, 54, 13, 16, 54, 52, 13, 58, 16, 13, 16, 58, 50, 46, 60, 47, 46, 61, 60, 46, 45, 61, 44, 64, 63, 7, 11, 8, 11, 7, 3, 53, 66, 67, 52, 66, 53, 54, 66, 52, 54, 59, 66, 54, 55, 59, 68, 66, 69, 66, 68, 67, 69, 66, 70, 70, 60, 71, 60, 70, 66, 71, 60, 72, 73, 60, 74, 60, 73, 72, 75, 60, 61, 60, 75, 74, 73, 75, 76, 75, 73, 74, 76, 61, 62, 61, 76, 75, 72, 76, 62, 76, 72, 73, 72, 62, 77, 78, 62, 79, 62, 78, 77, 79, 62, 80, 64, 62, 63, 62, 64, 80, 81, 64, 82, 64, 81, 80, 83, 64, 84, 64, 83, 82, 83, 85, 86, 85, 83, 84, 87, 85, 88, 85, 87, 86, 85, 89, 88, 89, 90, 91, 85, 90, 89, 93, 94, 95, 94, 51, 26, 94, 25, 51, 93, 25, 94, 92, 25, 93, 27, 25, 92, 93, 96, 97, 96, 93, 95, 98, 96, 99, 96, 98, 97, 99, 100, 101, 100, 99, 96, 102, 100, 103, 100, 102, 101, 104, 100, 105, 100, 104, 103, 106, 105, 107, 105, 106, 104, 95, 107, 105, 106, 108, 109, 108, 106, 107, 108, 110, 109, 111, 108, 112, 108, 111, 110, 113, 108, 107, 108, 113, 112, 112, 114, 115, 114, 112, 113, 109, 114, 106, 114, 109, 115, 111, 109, 110, 109, 111, 115, 114, 116, 117, 116, 114, 113, 117, 118, 119, 118, 117, 116, 120, 118, 121, 118, 120, 119, 122, 118, 116, 118, 122, 121, 121, 123, 120, 123, 121, 122, 123, 124, 125, 124, 123, 122, 126, 124, 127, 124, 126, 125, 128, 124, 129, 124, 128, 127, 130, 129, 124, 129, 130, 131, 131, 132, 133, 132, 131, 130, 133, 134, 135, 134, 133, 132, 136, 134, 137, 134, 136, 135, 138, 134, 139, 134, 138, 137, 140, 134, 132, 134, 140, 139, 139, 140, 141, 113, 140, 116, 140, 113, 141, 113, 142, 141, 113, 143, 142, 143, 113, 107, 107, 85, 143, 85, 144, 90, 107, 144, 85, 94, 107, 95, 107, 94, 144, 144, 68, 145, 68, 144, 94, 146, 68, 147, 68, 146, 145, 147, 148, 146, 148, 70, 71, 70, 148, 147, 149, 148, 71, 148, 149, 146, 149, 150, 146, 150, 149, 77, 151, 77, 152, 77, 151, 150, 77, 153, 152, 152, 154, 151, 154, 152, 153, 155, 154, 153, 155, 156, 154, 155, 65, 156, 65, 157, 84, 157, 65, 155, 155, 158, 157, 159, 155, 78, 159, 158, 155, 159, 160, 158, 160, 80, 81, 80, 159, 79, 160, 159, 80, 158, 160, 161, 162, 161, 160, 163, 162, 164, 162, 163, 161, 164, 165, 166, 165, 164, 162, 167, 165, 168, 165, 167, 166, 169, 168, 170, 168, 169, 167, 170, 171, 172, 171, 170, 168, 173, 171, 174, 171, 173, 172, 81, 171, 160, 171, 81, 174, 175, 174, 81, 174, 175, 176, 176, 177, 178, 177, 176, 175, 178, 179, 180, 179, 178, 177, 181, 179, 182, 179, 181, 180, 183, 179, 184, 179, 183, 182, 185, 179, 186, 179, 185, 184, 185, 187, 188, 187, 185, 186, 82, 187, 81, 187, 82, 188, 177, 187, 186, 188, 184, 185, 189, 188, 190, 188, 189, 184, 83, 188, 82, 188, 83, 190, 164, 83, 163, 83, 164, 190, 189, 164, 166, 164, 189, 190, 191, 189, 192, 189, 191, 184, 192, 189, 193, 193, 166, 194, 166, 193, 189, 194, 181, 182, 181, 194, 166, 193, 195, 86, 195, 193, 194, 195, 194, 196, 197, 194, 198, 194, 197, 196, 199, 194, 200, 194, 199, 198, 200, 201, 202, 201, 200, 194, 202, 203, 204, 203, 202, 201, 205, 203, 206, 203, 205, 204, 206, 207, 208, 207, 206, 203, 209, 207, 210, 207, 209, 208, 211, 207, 182, 207, 211, 210, 210, 202, 204, 202, 210, 211, 212, 211, 191, 211, 212, 202, 183, 211, 182, 211, 183, 191, 213, 212, 192, 212, 213, 202, 214, 192, 87, 192, 214, 213, 215, 87, 216, 87, 215, 214, 217, 87, 88, 87, 217, 216, 215, 217, 218, 217, 215, 216, 218, 88, 219, 88, 218, 217, 218, 219, 117, 220, 117, 221, 117, 220, 218, 117, 123, 221, 125, 221, 123, 221, 125, 220, 125, 222, 220, 222, 125, 223, 222, 223, 224, 225, 223, 226, 223, 225, 224, 226, 129, 227, 129, 226, 223, 226, 228, 229, 228, 226, 227, 230, 228, 231, 228, 230, 229, 232, 231, 233, 231, 232, 230, 231, 234, 233, 231, 227, 234, 231, 228, 227, 131, 227, 129, 227, 131, 234, 233, 131, 133, 131, 233, 234, 235, 233, 196, 233, 235, 232, 196, 133, 135, 133, 196, 233, 235, 214, 232, 236, 214, 235, 237, 235, 200, 235, 237, 236, 200, 238, 199, 238, 200, 235, 197, 235, 196, 235, 197, 238, 238, 197, 239, 240, 197, 198, 197, 240, 239, 238, 240, 199, 240, 238, 239, 213, 200, 202, 200, 213, 237, 236, 213, 214, 213, 236, 237, 230, 226, 229, 230, 225, 226, 230, 232, 225, 224, 232, 215, 232, 224, 225, 224, 241, 222, 241, 224, 215, 220, 241, 218, 241, 220, 222, 215, 218, 241, 214, 215, 232, 205, 210, 204, 210, 205, 209, 209, 242, 243, 242, 209, 205, 243, 244, 245, 244, 243, 242, 245, 206, 208, 206, 245, 244, 206, 242, 205, 242, 206, 244, 209, 245, 208, 245, 209, 243, 182, 203, 201, 203, 182, 207, 194, 182, 201, 240, 198, 199, 246, 196, 247, 196, 246, 195, 196, 135, 247, 135, 246, 247, 248, 246, 136, 246, 248, 195, 249, 136, 138, 136, 249, 248, 248, 158, 161, 158, 248, 249, 158, 143, 157, 143, 158, 249, 141, 143, 249, 195, 161, 163, 161, 195, 248, 192, 86, 87, 86, 192, 193, 191, 192, 212, 184, 191, 183, 178, 181, 176, 181, 178, 180, 177, 186, 179, 176, 181, 173, 173, 250, 172, 250, 173, 181, 167, 181, 166, 181, 167, 250, 187, 175, 81, 175, 187, 177, 176, 173, 174, 172, 169, 170, 169, 172, 250, 162, 168, 165, 168, 162, 171, 169, 250, 167, 195, 83, 86, 83, 195, 163, 162, 160, 171, 156, 144, 154, 144, 156, 90, 151, 144, 145, 144, 151, 154, 153, 78, 155, 146, 151, 145, 151, 146, 150, 157, 85, 84, 85, 157, 143, 143, 141, 142, 139, 249, 138, 249, 139, 141, 138, 136, 137, 135, 136, 246, 251, 132, 130, 132, 251, 140, 116, 251, 252, 251, 116, 140, 122, 251, 124, 251, 122, 252, 122, 116, 252, 130, 124, 251, 128, 223, 253, 223, 128, 129, 126, 223, 125, 223, 126, 253, 253, 254, 0xFF, 254, 253, 126, 0xFF, 0x0100, 0x0101, 0x0100, 0xFF, 254, 0x0101, 127, 128, 127, 0x0101, 0x0100, 127, 254, 126, 254, 127, 0x0100, 253, 0x0101, 128, 0x0101, 253, 0xFF, 119, 123, 117, 123, 119, 120, 114, 117, 219, 114, 219, 258, 259, 219, 260, 219, 259, 258, 89, 219, 88, 219, 89, 260, 260, 261, 104, 261, 260, 89, 104, 92, 93, 92, 104, 261, 106, 260, 104, 260, 106, 259, 258, 106, 114, 106, 258, 259, 111, 112, 115, 103, 93, 97, 93, 103, 104, 98, 103, 97, 103, 98, 102, 102, 262, 263, 262, 102, 98, 263, 264, 265, 264, 263, 262, 265, 99, 101, 99, 265, 264, 99, 262, 98, 262, 99, 264, 102, 265, 101, 265, 102, 263, 105, 96, 95, 96, 105, 100, 78, 79, 159, 153, 77, 78, 77, 149, 72, 71, 72, 149, 69, 147, 68, 147, 69, 70, 68, 94, 67, 57, 26, 24, 57, 94, 26, 56, 94, 57, 56, 67, 94, 53, 67, 56, 84, 64, 65, 13, 22, 15, 22, 56, 57, 22, 53, 56, 13, 53, 22, 13, 52, 53, 45, 1, 2, 58, 59, 50, 59, 60, 66, 58, 60, 59, 58, 47, 60, 45, 62, 61, 49, 62, 45, 63, 48, 44, 62, 48, 63, 49, 48, 62, 45, 2, 49, 1, 47, 13, 1, 46, 47, 1, 45, 46, 13, 47, 58, 32, 36, 34, 36, 32, 38, 38, 41, 40, 41, 38, 17, 156, 91, 90, 91, 156, 65, 11, 44, 12, 44, 3, 4, 11, 3, 44, 64, 59, 65, 59, 64, 44, 44, 4, 50, 59, 44, 50, 89, 92, 261, 92, 89, 27, 28, 55, 30, 27, 55, 28, 27, 91, 55, 27, 89, 91, 32, 55, 16, 55, 32, 30, 32, 17, 38, 17, 32, 16, 55, 65, 59, 65, 55, 91, 50, 17, 16, 17, 50, 4]; + } + } +}//package wd.d3.geom.monuments.mesh.paris.louvre diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileRichelieu.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileRichelieu.as new file mode 100644 index 0000000..70b6fa0 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/AileRichelieu.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris.louvre { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class AileRichelieu extends Stage3DData { + + public function AileRichelieu(){ + vertices = new [239.649, -4.88311E-5, -280.627, 232.218, -3.05176E-5, -256.538, 290.381, -3.05176E-5, -279.467, 268.511, -4.88311E-5, -292.005, 232.218, 99.8046, -256.538, 290.381, 99.8046, -279.467, 268.511, 99.8046, -292.005, 239.649, 99.8046, -280.627, 269.963, 119.49, -246.026, 192.997, -2.4423E-5, -241.077, 220.168, -4.88311E-5, -172.151, 282.489, -4.88311E-5, -196.719, 272.743, -4.88311E-5, -221.442, 346.967, -2.4423E-5, -250.702, 329.541, -2.4423E-5, -294.905, 329.541, 99.8046, -294.905, 192.997, 99.8046, -241.077, 210.422, 99.8046, -196.874, 220.168, 89.1353, -172.151, 346.967, 99.8046, -250.702, 282.489, 89.1353, -196.719, 272.743, 99.8046, -221.442, 323.571, 119.49, -267.015, 216.393, 119.49, -224.764, -165.981, -7.62939E-6, -101.92, -134.216, -5.64605E-5, -21.3413, -53.6366, -3.20524E-5, -53.1068, -85.4022, -7.62939E-6, -133.686, -134.216, 131.107, -21.3413, -165.981, 131.107, -101.92, -125.692, 147.336, -117.803, -93.9261, 147.336, -37.2241, -85.4022, 132.327, -133.686, -53.6366, 132.327, -53.1068, -159.373, 132.929, -98.4153, -131.174, 132.929, -26.8841, -60.1745, 134.155, -55.314, -97.1759, 147.336, -45.4676, -88.0725, 134.155, -126.082, -121.839, 147.336, -108.031, -92.1026, 155.53, -116.807, -149.565, 155.53, -94.154, -126.912, 155.53, -36.6916, -69.45, 155.53, -59.3442, -96.292, 170.129, -107.165, -79.0918, 170.129, -63.5336, -100.426, 182.023, -97.6514, -88.6052, 182.023, -67.6671, -130.41, 182.023, -85.8311, -118.589, 182.023, -55.8467, -122.723, 170.129, -46.3334, -139.923, 170.129, -89.9646, -71.4031, 132.45, -97.2085, -76.8702, 132.45, -111.077, -84.3054, 143.342, -108.145, -81.446, 134.155, -109.273, -77.0556, 132.519, -111.003, -78.8384, 143.342, -94.2774, -75.9789, 134.155, -95.4046, -78.8384, 187.765, -94.2774, -71.4031, 187.765, -97.2085, -76.8702, 187.765, -111.077, -84.3054, 187.765, -108.145, -151.652, 131.107, -65.5728, -157.119, 131.107, -79.4409, -144.217, 142.283, -68.5039, -149.684, 142.283, -82.372, -152.596, 132.929, -81.2243, -147.129, 132.929, -67.3562, -151.652, 187.765, -65.5728, -157.119, 187.765, -79.4409, -149.684, 187.765, -82.372, -144.217, 187.765, -68.5039, 346.841, 99.8046, -13.4394, 364.851, 111.419, -38.7558, 392.835, 99.8046, -36.0817, 264.41, 99.8046, -244.74, 288.395, 111.419, -253.288, 312.38, 99.8046, -261.836, 264.41, -2.4423E-5, -244.74, 346.841, -7.32541E-5, -13.4394, 392.835, -7.32541E-5, -36.0817, 312.38, -2.4423E-5, -261.836, -5.82282, -4.88311E-5, 83.2097, -5.82282, 92.997, 83.2097, -60.3875, 92.9971, -55.2029, -60.3874, -4.88311E-5, -55.2029, -79.7418, 92.997, 112.35, -79.7418, -4.88311E-5, 112.35, -134.306, -4.88311E-5, -26.0627, -134.306, 92.997, -26.0627, -97.3469, 104.808, -40.6328, -42.7823, 104.808, 97.7798, 243.76, -6.10352E-5, -29.747, 194.165, -3.66271E-5, -155.552, 156.161, -3.66271E-5, -140.571, 205.756, -6.10352E-5, -14.7651, 156.161, 92.997, -140.571, 194.165, 92.997, -155.552, 243.76, 92.997, -29.7469, 205.756, 92.997, -14.7651, 263.886, -4.88311E-5, 27.3992, 346.841, -4.88311E-5, -13.4394, 325.274, -4.88311E-5, -73.9562, 235.698, -4.88311E-5, -29.8584, 346.841, 99.8046, -13.4394, 325.274, 99.8046, -73.9562, 235.698, 99.8046, -29.8585, 321.22, 109.135, -35.7455, 250.049, 109.135, -0.708405, 263.886, 99.8046, 27.3992, 235.698, -7.32541E-5, -29.8585, -5.63223, -7.32541E-5, 88.9471, 22.5554, -7.32541E-5, 146.205, 263.886, -7.32541E-5, 27.3992, 263.886, 83.0758, 27.3992, 22.5554, 83.0758, 146.205, -5.63223, 93.5574, 88.9471, 4.00644, 106.248, 108.526, 13.2809, 106.248, 127.365, 235.698, 93.5574, -29.8585, 245.337, 106.248, -10.2794, 254.611, 106.248, 8.55988, -157.075, 99.8046, -81.1997, -136.785, 99.8046, -29.734, -334.959, 99.8046, 46.1116, -154.682, 99.8046, -24.9566, -169.858, 99.8046, -63.4514, -350.135, 99.8046, 7.6169, -342.518, 99.8046, 51.3693, -362.806, 99.8046, -0.0966187, -169.858, 103.742, -63.4514, -154.682, 103.742, -24.9566, -177.427, 114.411, -38.2287, -327.39, 114.411, 20.889, -334.959, 103.742, 46.1116, -350.135, 103.742, 7.6169, -369.403, 47.6786, -16.8297, -163.67, 47.6786, -97.933, -157.075, 47.6786, -81.1997, -362.775, 47.6786, -0.013443, -362.775, 99.8046, -0.0134583, -369.403, -3.66271E-5, -16.8297, -163.67, 1.22041E-5, -97.933, -136.785, -3.66271E-5, -29.734, -342.518, -3.66271E-5, 51.3693, -343.122, -3.66271E-5, 49.8351, 115.814, 103.742, -176.068, 130.989, 103.742, -137.573, 108.244, 114.411, -150.845, -41.7181, 114.411, -91.7277, -49.2877, 103.742, -66.5051, -64.463, 103.742, -105, 130.989, 99.8046, -137.573, 115.814, 99.8046, -176.068, -64.463, 99.8046, -105, -49.2877, 99.8046, -66.5051, -83.7311, 47.6786, -129.447, 122.002, 47.6786, -210.55, 128.597, 47.6786, -193.816, -77.1033, 47.6786, -112.63, 128.597, 99.8046, -193.816, 148.887, 99.8046, -142.351, -56.8458, 99.8046, -61.2475, -77.1033, 99.8046, -112.63, -83.731, -3.66271E-5, -129.447, 122.002, -3.66271E-5, -210.55, 148.887, -3.66271E-5, -142.351, -56.8458, -3.66271E-5, -61.2475, -57.4506, -3.66271E-5, -62.7816, 20.4388, 117.8, 148.946, -7.87549, 117.8, 77.1221, -5.45676, 117.8, 70.8659, 26.2022, 117.8, 151.174, -28.4813, 153.391, 130.148, -15.6648, 146.107, 97.2696, 1.87818, 146.107, 141.77, -58.8409, 146.107, 118.525, -77.4014, 117.8, 111.349, -83.1649, 117.8, 109.121, -41.2979, 146.107, 163.026, -49.0872, 117.8, 183.173, -51.5059, 117.8, 189.43, -83.1649, -2.4423E-5, 109.121, -51.5059, -2.4423E-5, 189.43, 26.2022, -2.4423E-5, 151.174, -5.45676, -2.4423E-5, 70.8659, 192.419, -6.10352E-5, -242.542, 120.557, -6.10352E-5, -214.213, 148.886, -6.10352E-5, -142.351, 220.748, -6.10352E-5, -170.68, 148.886, 99.8046, -142.351, 220.748, 99.8046, -170.68, 192.419, 99.8046, -242.542, 120.557, 99.8046, -214.213, 190.568, 99.8046, -234.915, 213.971, 99.8046, -175.549, 127.047, 99.8046, -209.873, 150.449, 99.8046, -150.507, 160.226, 145.818, -170.765, 192.551, 145.818, -183.508, 181.761, 145.818, -210.877, 149.436, 145.818, -198.134, 181.761, 151.408, -210.877, 149.436, 151.408, -198.134, 160.226, 151.408, -170.765, 192.551, 151.408, -183.508, -370.847, -6.10352E-5, -20.4924, -442.708, -6.10352E-5, 7.83669, -414.379, -6.10352E-5, 79.6984, -342.518, -6.10352E-5, 51.3693, -414.379, 99.8046, 79.6984, -342.518, 99.8046, 51.3693, -370.847, 99.8046, -20.4925, -442.708, 99.8046, 7.83667, -372.697, 99.8046, -12.8653, -349.294, 99.8046, 46.5005, -436.219, 99.8046, 12.1762, -412.816, 99.8046, 71.542, -403.04, 145.818, 51.2847, -370.715, 145.818, 38.5417, -381.505, 145.818, 11.1719, -413.83, 145.818, 23.9149, -381.505, 151.408, 11.1719, -413.83, 151.408, 23.9149, -403.04, 151.408, 51.2847, -370.715, 151.408, 38.5417, -330.891, 92.8356, 242.195, -330.891, 47.6786, 242.195, -397.898, 47.6786, 72.464, -397.898, 92.8361, 72.464, -344.044, -3.66271E-5, 247.38, -410.969, -2.4423E-5, 77.615, -410.969, 47.6786, 77.615, -344.044, 47.6786, 247.38, -287.2, -3.66271E-5, 224.971, -354.124, 92.8362, 55.2058, -354.124, -2.4423E-5, 55.2058, -291.24, 92.8362, 226.564, -325.816, 92.8362, 240.194, -306.697, 100.102, 232.657, -363.442, 100.102, 88.7137, -387.961, 92.8361, 82.5524, -353.386, 92.8362, 68.9221, -287.2, 92.8362, 224.971, -322.293, -2.82377E-5, 244.837, -294.105, -2.82377E-5, 302.095, -52.7747, -2.82377E-5, 183.289, -80.9622, -2.82377E-5, 126.032, -71.3236, 106.248, 145.611, -80.9623, 93.5574, 126.032, -52.7747, 83.0758, 183.289, -62.0491, 106.248, 164.45, -312.654, 106.248, 264.416, -322.293, 93.5574, 244.837, -303.38, 106.248, 283.255, -294.105, 83.0758, 302.095, 190.168, -3.35723E-5, -160.324, 282.489, -3.35723E-5, -196.719, 324.354, -3.35723E-5, -75.4889, 240.712, -5.64605E-5, -32.1258, 190.168, 90.753, -160.324, 282.489, 90.753, -196.719, 324.354, 90.753, -75.4889, 240.712, 90.753, -32.1258, 222.973, 106.93, -146.116, 267.279, 106.93, -163.582, 293.268, 106.93, -87.9296, 253.958, 106.93, -67.5172, 250.232, 116.519, -134.272, 254.543, 116.519, -135.972, 267.507, 116.519, -98.233, 264.961, 116.519, -96.9107, -64.3459, -3.35723E-5, -59.9903, 155.703, -3.35723E-5, -146.738, 207.457, -3.35723E-5, -15.9554, -5.63226, -5.64605E-5, 88.9471, -64.3459, 90.753, -59.9903, 155.703, 90.753, -146.738, 207.457, 90.753, -15.9554, -5.63226, 90.753, 88.9471, -31.743, 106.93, -48.3089, 139.93, 106.93, -115.985, 175.593, 106.93, -25.8985, 9.06129, 106.93, 55.975, -5.28426, 116.519, -39.2762, 126.753, 116.519, -91.3274, 149.746, 116.519, -33.3794, 21.5647, 116.519, 29.6079, 22.6448, 125.25, -29.7415, 112.843, 125.25, -65.2993, 122.541, 125.25, -41.4398, 35.1167, 125.25, 1.87782, -354.698, -3.35723E-5, 54.4716, -134.648, -3.35723E-5, -32.2759, -74.5162, -3.35723E-5, 119.647, -286.345, -5.64605E-5, 227.74, -354.698, 90.753, 54.4716, -134.648, 90.753, -32.2759, -74.5162, 90.753, 119.647, -286.345, 90.753, 227.74, -320.96, 106.93, 68.9152, -149.287, 106.93, 1.23868, -107.283, 106.93, 107.048, -272.908, 106.93, 191.584, -293.408, 116.519, 81.1011, -161.112, 116.519, 28.9478, -134.194, 116.519, 96.8683, -261.696, 116.519, 161.942, -264.164, 125.25, 93.593, -173.784, 125.25, 58.1138, -162.601, 125.25, 86.123, -249.86, 125.25, 130.653]; + uvs = new [0.892472, 0.9995, 0.873506, 0.942724, 0.948804, 0.942724, 0.929837, 0.9995, 0.873506, 0.942724, 0.948804, 0.942724, 0.929837, 0.9995, 0.892472, 0.9995, 0.911155, 0.874592, 0.822731, 0.942724, 0.822731, 0.729036, 0.90341, 0.729036, 0.90341, 0.805684, 0.9995, 0.805684, 0.9995, 0.942724, 0.9995, 0.942724, 0.822731, 0.942724, 0.822731, 0.805684, 0.822731, 0.729036, 0.9995, 0.805684, 0.90341, 0.729036, 0.90341, 0.805684, 0.980492, 0.874204, 0.841739, 0.874204, 0.359043, 0.949053, 0.359043, 0.699237, 0.46336, 0.699237, 0.46336, 0.949053, 0.359043, 0.699237, 0.359043, 0.949053, 0.411201, 0.949053, 0.411201, 0.699237, 0.46336, 0.949053, 0.46336, 0.699237, 0.364899, 0.932658, 0.364899, 0.710892, 0.457009, 0.712075, 0.411201, 0.724794, 0.457009, 0.931475, 0.411201, 0.918756, 0.448397, 0.910849, 0.374006, 0.91085, 0.374006, 0.7327, 0.448397, 0.7327, 0.439444, 0.889409, 0.439444, 0.754141, 0.43061, 0.868255, 0.43061, 0.775295, 0.391793, 0.868255, 0.391793, 0.775295, 0.382959, 0.754141, 0.382959, 0.889409, 0.462933, 0.836366, 0.462933, 0.879361, 0.453307, 0.879361, 0.457009, 0.879361, 0.462693, 0.879361, 0.453307, 0.836366, 0.457009, 0.836366, 0.453307, 0.836366, 0.462933, 0.836366, 0.462933, 0.879361, 0.453307, 0.879361, 0.359043, 0.836366, 0.359043, 0.879361, 0.368668, 0.836366, 0.368668, 0.879361, 0.364899, 0.879361, 0.364899, 0.836366, 0.359043, 0.836366, 0.359043, 0.879361, 0.368668, 0.879361, 0.368668, 0.836366, 0.89456, 0.169176, 0.92592, 0.218057, 0.956095, 0.18128, 0.904365, 0.877013, 0.935015, 0.874578, 0.965665, 0.872144, 0.904365, 0.877013, 0.89456, 0.169176, 0.956095, 0.18128, 0.965665, 0.872144, 0.456722, 0.282885, 0.456722, 0.282885, 0.456721, 0.712002, 0.456721, 0.712002, 0.361027, 0.282885, 0.361027, 0.282885, 0.361027, 0.712002, 0.361027, 0.712002, 0.408874, 0.712002, 0.408874, 0.282885, 0.786264, 0.321972, 0.786264, 0.712003, 0.737064, 0.712003, 0.737064, 0.321972, 0.737064, 0.712003, 0.786264, 0.712003, 0.786264, 0.321972, 0.737064, 0.321972, 0.783572, 0.147345, 0.89456, 0.169176, 0.897125, 0.354373, 0.77728, 0.330799, 0.89456, 0.169176, 0.897125, 0.354373, 0.77728, 0.330799, 0.875704, 0.256132, 0.780483, 0.237402, 0.783572, 0.147345, 0.77728, 0.330799, 0.454401, 0.267289, 0.460693, 0.0838341, 0.783572, 0.147345, 0.783572, 0.147345, 0.460693, 0.0838341, 0.454401, 0.267289, 0.456552, 0.204557, 0.458623, 0.144195, 0.77728, 0.330799, 0.779432, 0.268067, 0.781502, 0.207706, 0.359869, 0.884034, 0.359871, 0.724474, 0.104322, 0.730587, 0.337708, 0.730587, 0.337707, 0.849931, 0.104322, 0.849931, 0.0935313, 0.724474, 0.0935314, 0.884032, 0.337707, 0.849931, 0.337708, 0.730587, 0.318085, 0.790259, 0.123945, 0.790259, 0.104322, 0.730587, 0.104322, 0.849931, 0.0935313, 0.93591, 0.359871, 0.93591, 0.359869, 0.884034, 0.0935296, 0.883776, 0.0935296, 0.883776, 0.0935313, 0.93591, 0.359871, 0.93591, 0.359871, 0.724474, 0.0935314, 0.724474, 0.0935313, 0.729231, 0.707536, 0.849932, 0.707536, 0.730588, 0.687913, 0.79026, 0.493773, 0.79026, 0.474151, 0.730587, 0.474151, 0.849932, 0.707536, 0.730588, 0.707536, 0.849932, 0.474151, 0.849932, 0.474151, 0.730587, 0.46336, 0.93591, 0.729699, 0.93591, 0.729698, 0.884034, 0.463358, 0.883777, 0.729698, 0.884034, 0.729699, 0.724475, 0.46336, 0.724475, 0.463358, 0.883777, 0.46336, 0.93591, 0.729699, 0.93591, 0.729699, 0.724475, 0.46336, 0.724475, 0.46336, 0.729231, 0.457111, 0.0787171, 0.457111, 0.301391, 0.462584, 0.31562, 0.462584, 0.0666416, 0.410601, 0.180906, 0.439484, 0.255569, 0.439484, 0.117605, 0.381718, 0.244207, 0.364091, 0.283094, 0.358617, 0.29517, 0.381718, 0.106242, 0.364091, 0.06042, 0.358617, 0.0461915, 0.358617, 0.29517, 0.358617, 0.0461913, 0.462584, 0.0666416, 0.462584, 0.31562, 0.822731, 0.947267, 0.729699, 0.947267, 0.729699, 0.724476, 0.822731, 0.724476, 0.729699, 0.724476, 0.822731, 0.724476, 0.822731, 0.947267, 0.729699, 0.947266, 0.817288, 0.928758, 0.817288, 0.744708, 0.735053, 0.928758, 0.735053, 0.744708, 0.754955, 0.788723, 0.796803, 0.788723, 0.796803, 0.873576, 0.754955, 0.873576, 0.796803, 0.873576, 0.754955, 0.873576, 0.754955, 0.788723, 0.796803, 0.788723, 0.0935312, 0.947265, 0.000499666, 0.947265, 0.000499547, 0.724474, 0.0935312, 0.724474, 0.000499606, 0.724474, 0.0935313, 0.724474, 0.0935313, 0.947265, 0.000499785, 0.947265, 0.0880888, 0.928757, 0.0880887, 0.744707, 0.00585371, 0.928757, 0.00585365, 0.744707, 0.0257555, 0.788721, 0.0676032, 0.788721, 0.0676032, 0.873575, 0.0257556, 0.873575, 0.0676032, 0.873575, 0.0257556, 0.873575, 0.0257555, 0.788721, 0.0676032, 0.788721, 0.0222693, 0.200139, 0.0222694, 0.200139, 0.0221618, 0.726452, 0.0221619, 0.726453, 0.00524139, 0.200139, 0.00524133, 0.726457, 0.00524133, 0.726457, 0.00524139, 0.200139, 0.0788323, 0.200139, 0.0788321, 0.726457, 0.0788321, 0.726457, 0.0736011, 0.200139, 0.0288398, 0.200139, 0.0535912, 0.200139, 0.0535912, 0.646402, 0.0288396, 0.688871, 0.0736009, 0.688871, 0.0788323, 0.200139, 0.0307366, 0.183954, 0.0370288, 0.000499547, 0.359908, 0.0640097, 0.353616, 0.247464, 0.355767, 0.184732, 0.353616, 0.247464, 0.359908, 0.0640097, 0.357838, 0.124371, 0.0328882, 0.121222, 0.0307366, 0.183954, 0.0349585, 0.0608607, 0.0370288, 0.000499547, 0.783893, 0.729036, 0.90341, 0.729036, 0.896771, 0.359459, 0.783899, 0.33158, 0.783893, 0.729036, 0.90341, 0.729036, 0.896771, 0.359459, 0.783899, 0.33158, 0.814374, 0.656211, 0.871732, 0.656211, 0.867435, 0.425723, 0.814374, 0.412532, 0.839685, 0.595596, 0.845266, 0.595596, 0.843122, 0.480619, 0.839685, 0.479765, 0.454401, 0.729035, 0.739275, 0.729036, 0.739496, 0.323367, 0.454401, 0.267289, 0.454401, 0.729035, 0.739275, 0.729036, 0.739496, 0.323367, 0.454401, 0.267289, 0.485771, 0.663203, 0.708018, 0.663203, 0.708186, 0.383752, 0.485428, 0.340219, 0.511428, 0.610978, 0.682362, 0.610978, 0.682529, 0.431166, 0.511085, 0.397743, 0.53851, 0.555851, 0.65528, 0.555851, 0.655607, 0.481572, 0.538517, 0.457815, 0.0785135, 0.729034, 0.363388, 0.729035, 0.363658, 0.257776, 0.078567, 0.191803, 0.0785135, 0.729034, 0.363388, 0.729035, 0.363658, 0.257776, 0.078567, 0.191803, 0.109935, 0.654591, 0.332182, 0.654591, 0.332509, 0.326245, 0.109592, 0.274609, 0.135424, 0.592748, 0.306694, 0.592748, 0.306853, 0.382025, 0.135249, 0.342284, 0.162674, 0.528294, 0.279612, 0.527892, 0.279771, 0.440906, 0.162331, 0.413721]; + indices = new [3, 5, 2, 5, 3, 6, 4, 0, 1, 0, 4, 7, 7, 8, 6, 8, 5, 6, 4, 8, 7, 0, 6, 3, 6, 0, 7, 5, 14, 2, 14, 5, 15, 9, 17, 16, 9, 18, 17, 9, 10, 18, 14, 19, 13, 19, 14, 15, 16, 1, 9, 1, 16, 4, 11, 18, 10, 18, 11, 20, 11, 21, 20, 21, 11, 12, 15, 22, 19, 16, 17, 23, 21, 23, 17, 21, 22, 23, 21, 19, 22, 21, 18, 20, 18, 21, 17, 13, 21, 12, 21, 13, 19, 5, 22, 15, 22, 5, 8, 23, 4, 16, 4, 23, 8, 12, 2, 13, 2, 12, 1, 1, 3, 2, 3, 1, 0, 1, 10, 9, 10, 12, 11, 1, 12, 10, 13, 2, 14, 26, 24, 27, 24, 26, 25, 28, 33, 31, 28, 26, 33, 28, 25, 26, 26, 32, 33, 32, 26, 27, 32, 29, 30, 32, 24, 29, 32, 27, 24, 28, 24, 25, 24, 64, 29, 24, 63, 64, 28, 63, 24, 34, 30, 29, 30, 34, 39, 43, 44, 45, 44, 43, 40, 45, 46, 47, 46, 45, 44, 47, 48, 49, 48, 47, 46, 50, 48, 51, 48, 50, 49, 42, 51, 41, 51, 42, 50, 49, 45, 47, 45, 49, 50, 51, 46, 44, 46, 51, 48, 41, 44, 40, 44, 41, 51, 43, 50, 42, 50, 43, 45, 52, 61, 60, 61, 52, 53, 56, 61, 53, 56, 62, 61, 56, 54, 62, 56, 55, 54, 62, 57, 59, 57, 62, 54, 61, 59, 60, 59, 61, 62, 58, 59, 57, 58, 60, 59, 58, 52, 60, 68, 28, 35, 28, 68, 63, 64, 69, 70, 69, 64, 63, 71, 69, 72, 69, 71, 70, 65, 71, 72, 71, 65, 66, 66, 70, 71, 67, 70, 66, 67, 64, 70, 68, 69, 63, 69, 65, 72, 68, 65, 69, 39, 40, 38, 39, 41, 40, 39, 34, 41, 43, 37, 36, 42, 37, 43, 42, 35, 37, 40, 55, 38, 55, 40, 54, 33, 37, 31, 37, 33, 36, 67, 41, 34, 41, 67, 66, 34, 64, 67, 64, 34, 29, 38, 30, 39, 30, 38, 32, 53, 55, 56, 55, 32, 38, 53, 32, 55, 53, 33, 32, 52, 33, 53, 58, 33, 52, 36, 33, 58, 35, 31, 37, 31, 35, 28, 42, 68, 35, 68, 42, 65, 65, 41, 66, 41, 65, 42, 57, 40, 43, 40, 57, 54, 58, 43, 36, 43, 58, 57, 73, 75, 74, 76, 74, 77, 74, 76, 73, 77, 75, 78, 75, 77, 74, 81, 79, 82, 79, 81, 80, 73, 79, 80, 79, 73, 76, 82, 75, 81, 75, 82, 78, 76, 82, 79, 82, 76, 78, 81, 73, 80, 73, 81, 75, 78, 76, 77, 85, 83, 86, 83, 85, 84, 89, 87, 90, 87, 89, 88, 85, 90, 91, 84, 88, 83, 88, 84, 87, 89, 83, 88, 83, 89, 86, 84, 91, 92, 91, 84, 85, 92, 90, 87, 90, 92, 91, 87, 84, 92, 85, 89, 90, 89, 85, 86, 95, 93, 96, 93, 95, 94, 99, 97, 100, 97, 99, 98, 96, 97, 95, 97, 96, 100, 99, 96, 93, 96, 99, 100, 99, 94, 98, 94, 99, 93, 95, 98, 94, 98, 95, 97, 103, 101, 104, 101, 103, 102, 103, 105, 102, 105, 103, 106, 108, 107, 109, 107, 108, 106, 106, 108, 105, 110, 108, 109, 108, 110, 105, 103, 107, 106, 107, 103, 104, 107, 101, 110, 101, 107, 104, 110, 102, 105, 102, 110, 101, 107, 110, 109, 113, 111, 114, 111, 113, 112, 113, 115, 116, 115, 113, 114, 112, 116, 117, 116, 112, 113, 117, 111, 112, 111, 117, 120, 111, 115, 114, 115, 111, 120, 117, 121, 120, 121, 117, 118, 121, 119, 122, 119, 121, 118, 116, 122, 119, 122, 116, 115, 122, 120, 121, 120, 122, 115, 117, 119, 118, 119, 117, 116, 128, 129, 125, 129, 128, 130, 131, 133, 132, 134, 136, 135, 132, 134, 135, 134, 132, 133, 134, 131, 136, 131, 134, 133, 131, 126, 127, 126, 131, 132, 136, 127, 128, 127, 136, 131, 126, 135, 125, 135, 126, 132, 128, 135, 136, 135, 128, 125, 139, 137, 140, 137, 139, 138, 140, 123, 139, 123, 140, 141, 137, 143, 142, 143, 137, 138, 144, 129, 145, 129, 144, 124, 142, 140, 137, 140, 142, 146, 129, 146, 145, 129, 140, 146, 129, 141, 140, 144, 138, 139, 138, 144, 143, 142, 145, 146, 143, 145, 142, 144, 145, 143, 144, 123, 124, 123, 144, 139, 124, 126, 125, 125, 129, 124, 127, 124, 123, 124, 127, 126, 128, 123, 130, 123, 128, 127, 147, 149, 148, 150, 152, 151, 148, 150, 151, 150, 148, 149, 150, 147, 152, 147, 150, 149, 147, 153, 154, 153, 147, 148, 152, 154, 155, 154, 152, 147, 153, 151, 156, 151, 153, 148, 155, 151, 152, 151, 155, 156, 159, 157, 160, 157, 159, 158, 160, 161, 159, 161, 160, 164, 157, 166, 165, 166, 157, 158, 167, 163, 168, 163, 167, 162, 165, 160, 157, 160, 165, 169, 163, 169, 168, 169, 164, 160, 163, 164, 169, 167, 161, 162, 161, 167, 159, 168, 166, 167, 168, 165, 166, 168, 169, 165, 162, 154, 153, 154, 162, 161, 164, 156, 155, 156, 164, 163, 164, 154, 161, 154, 164, 155, 156, 162, 153, 162, 156, 163, 167, 158, 159, 158, 167, 166, 172, 170, 173, 170, 172, 171, 174, 176, 175, 171, 176, 170, 176, 171, 175, 177, 174, 175, 179, 171, 172, 171, 179, 178, 170, 180, 181, 180, 170, 176, 180, 176, 174, 177, 180, 174, 180, 178, 181, 178, 180, 177, 170, 182, 173, 182, 170, 181, 178, 182, 181, 182, 178, 179, 178, 175, 171, 175, 178, 177, 185, 183, 186, 183, 185, 184, 186, 173, 185, 173, 186, 172, 182, 183, 184, 183, 182, 179, 173, 184, 185, 184, 173, 182, 183, 172, 186, 172, 183, 179, 189, 187, 190, 187, 189, 188, 191, 190, 192, 190, 191, 189, 187, 192, 190, 192, 187, 193, 187, 194, 193, 194, 187, 188, 189, 194, 188, 194, 189, 191, 198, 200, 199, 200, 198, 196, 196, 201, 200, 201, 196, 195, 201, 197, 202, 197, 201, 195, 202, 198, 199, 198, 202, 197, 203, 202, 204, 202, 203, 201, 205, 202, 199, 202, 205, 204, 204, 206, 203, 206, 204, 205, 200, 205, 199, 205, 200, 206, 203, 200, 201, 200, 203, 206, 194, 197, 193, 195, 193, 197, 198, 194, 191, 194, 198, 197, 198, 192, 196, 192, 198, 191, 196, 193, 195, 193, 196, 192, 209, 207, 210, 207, 209, 208, 211, 210, 212, 210, 211, 209, 207, 212, 210, 212, 207, 213, 207, 214, 213, 214, 207, 208, 209, 214, 208, 214, 209, 211, 218, 220, 219, 220, 218, 216, 216, 221, 220, 221, 216, 215, 221, 217, 222, 217, 221, 215, 222, 218, 219, 218, 222, 217, 223, 222, 224, 222, 223, 221, 225, 222, 219, 222, 225, 224, 224, 226, 223, 226, 224, 225, 220, 225, 219, 225, 220, 226, 223, 220, 221, 220, 223, 226, 214, 217, 213, 215, 213, 217, 218, 214, 211, 214, 218, 217, 218, 212, 216, 212, 218, 211, 216, 213, 215, 213, 216, 212, 229, 227, 230, 227, 229, 228, 231, 233, 232, 233, 231, 234, 244, 237, 236, 237, 244, 235, 228, 239, 227, 237, 231, 232, 231, 237, 235, 241, 239, 240, 239, 241, 242, 238, 241, 240, 241, 238, 243, 241, 243, 242, 227, 242, 230, 242, 227, 239, 243, 244, 236, 244, 243, 238, 234, 229, 233, 229, 234, 228, 229, 236, 237, 236, 229, 230, 243, 230, 242, 230, 243, 236, 239, 238, 240, 231, 228, 234, 228, 231, 235, 228, 238, 239, 238, 228, 235, 238, 235, 244, 233, 237, 232, 237, 233, 229, 247, 245, 248, 245, 247, 246, 248, 251, 247, 251, 248, 250, 250, 253, 249, 253, 250, 254, 249, 0xFF, 252, 0xFF, 249, 253, 251, 0xFF, 0x0100, 0xFF, 251, 252, 247, 0x0100, 246, 0x0100, 247, 251, 245, 250, 248, 250, 245, 254, 245, 0x0100, 254, 0x0100, 245, 246, 252, 250, 249, 250, 252, 251, 254, 0xFF, 253, 0xFF, 254, 0x0100, 262, 0x0101, 261, 0x0101, 262, 258, 263, 258, 262, 258, 263, 259, 264, 259, 263, 259, 264, 260, 261, 260, 264, 260, 261, 0x0101, 259, 0x0101, 258, 0x0101, 259, 260, 261, 266, 262, 266, 261, 265, 262, 267, 263, 267, 262, 266, 263, 268, 264, 268, 263, 267, 264, 265, 261, 265, 264, 268, 265, 270, 266, 270, 265, 269, 266, 271, 267, 271, 266, 270, 267, 272, 268, 272, 267, 271, 268, 269, 265, 269, 268, 272, 271, 269, 272, 269, 271, 270, 278, 273, 277, 273, 278, 274, 279, 274, 278, 274, 279, 275, 280, 275, 279, 275, 280, 276, 277, 276, 280, 276, 277, 273, 275, 273, 274, 273, 275, 276, 289, 291, 290, 291, 289, 292, 277, 282, 278, 282, 277, 281, 278, 283, 279, 283, 278, 282, 279, 284, 280, 284, 279, 283, 280, 281, 277, 281, 280, 284, 281, 286, 282, 286, 281, 285, 282, 287, 283, 287, 282, 286, 283, 288, 284, 288, 283, 287, 284, 285, 281, 285, 284, 288, 285, 290, 286, 290, 285, 289, 286, 291, 287, 291, 286, 290, 287, 292, 288, 292, 287, 291, 288, 289, 285, 289, 288, 292, 298, 293, 297, 293, 298, 294, 299, 294, 298, 294, 299, 295, 300, 295, 299, 295, 300, 296, 297, 296, 300, 296, 297, 293, 295, 293, 294, 293, 295, 296, 309, 311, 310, 311, 309, 312, 297, 302, 298, 302, 297, 301, 298, 303, 299, 303, 298, 302, 299, 304, 300, 304, 299, 303, 300, 301, 297, 301, 300, 304, 301, 306, 302, 306, 301, 305, 302, 307, 303, 307, 302, 306, 303, 308, 304, 308, 303, 307, 304, 305, 301, 305, 304, 308, 305, 310, 306, 310, 305, 309, 306, 311, 307, 311, 306, 310, 307, 312, 308, 312, 307, 311, 308, 309, 305, 309, 308, 312]; + } + } +}//package wd.d3.geom.monuments.mesh.paris.louvre diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/CourCarree.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/CourCarree.as new file mode 100644 index 0000000..8a4ec3f --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/CourCarree.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris.louvre { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class CourCarree extends Stage3DData { + + public function CourCarree(){ + vertices = new [-220.962, -5.91278E-5, 118.445, -220.962, 93.0133, 118.445, -286.33, 93.0133, 140.607, -286.33, -5.91278E-5, 140.607, -229.311, 93.0141, 308.789, -229.289, -5.91278E-5, 308.853, -233.018, -5.91278E-5, 310.117, -233.039, 93.0141, 310.053, -220.128, 93.0133, 348.137, -220.128, -4.76837E-5, 348.137, -151.032, -4.76837E-5, 324.711, -151.032, 93.0133, 324.711, -261.194, 110.416, 161.243, -230.362, 110.416, 150.79, -171.11, 110.416, 325.559, -201.942, 110.416, 336.012, -274.734, 94.7881, 149.951, -226.151, 94.7881, 133.479, -210.653, 94.7881, 338.965, -226.151, 93.0133, 133.479, -162.07, 93.0133, 322.494, -162.07, 94.7881, 322.494, -210.653, 93.0133, 338.965, -274.734, 93.0134, 149.951, -283.979, 105.406, 148.628, -276.494, 105.406, 170.706, -293.906, 105.406, 176.609, -301.391, 105.406, 154.531, -286.332, 109.134, 141.688, -284.997, 108.163, 145.624, -302.41, 108.163, 151.527, -303.744, 109.134, 147.591, -319.269, 105.079, 44.5367, -312.035, 105.079, 65.8728, -329.448, 105.079, 71.7761, -336.681, 105.079, 50.4398, -310.733, 108.051, 69.7137, -309.431, 109.134, 73.5548, -326.843, 109.134, 79.4583, -328.145, 108.051, 75.6173, -213.525, 133.031, 117.004, -225.074, 147.638, 82.9376, -236.624, 132.835, 48.8711, -286.332, -4.76837E-5, 141.688, -309.431, -4.76837E-5, 73.5548, -319.269, -4.76837E-5, 44.5367, -293.906, -4.76837E-5, 176.609, -276.494, -4.76837E-5, 170.706, -336.681, -4.76837E-5, 50.4398, -213.525, -4.76837E-5, 117.004, -236.624, -4.76837E-5, 48.8711, -278.281, 132.835, 62.9943, -315.294, 147.638, 113.525, -303.744, 133.031, 147.591, -326.843, 132.835, 79.4583, -217.596, 134.33, 115.008, -258.439, 133.031, 132.231, -259.465, 134.33, 129.203, -306.099, 147.638, 110.407, -301.027, 134.33, 143.293, -290.026, 132.835, 66.976, -289.029, 134.113, 69.919, -322.19, 134.113, 81.162, -306.272, 156.38, 88.6349, -314.373, 148.506, 84.8314, -242.555, 148.506, 60.4828, -246.673, 156.38, 68.429, -299.104, 161.616, 92.0002, -250.317, 161.616, 75.4599, -291.425, 166.104, 95.6049, -254.22, 166.104, 82.9918, -285.448, 166.104, 113.233, -248.244, 166.104, 100.62, -240.565, 161.616, 104.224, -289.352, 161.616, 120.765, -233.396, 156.38, 107.59, -292.995, 156.38, 127.796, -225.295, 148.506, 111.393, -297.113, 148.506, 135.741, -277.284, 134.113, 65.9374, -276.297, 141.504, 68.8481, -276.297, 164.254, 68.8481, -278.281, 164.254, 62.9943, -290.026, 164.254, 66.976, -288.042, 141.504, 72.83, -288.042, 164.254, 72.83, -272.168, 141.504, 130.359, -260.423, 141.504, 126.377, -260.423, 164.451, 126.377, -272.168, 164.451, 130.359, -271.21, 134.33, 133.184, -270.184, 164.451, 136.213, -270.184, 133.031, 136.213, -258.439, 164.451, 132.231, -233.569, 147.638, 85.8175, -234.96, 143.887, 76.6653, -238.582, 134.113, 52.8163, -69.1107, -4.19617E-5, -337.024, -69.1107, 106.258, -337.024, -105.856, 121.181, -324.567, -142.6, 106.258, -312.109, -142.6, -4.19617E-5, -312.109, -34.5252, -4.19617E-5, -235.011, -34.5252, 106.258, -235.011, -108.015, 106.258, -210.096, -108.015, -4.19617E-5, -210.096, -71.2701, 121.181, -222.553, 329.311, 101.929, 156.477, 117.956, 101.929, 228.133, 117.956, -5.72205E-6, 228.133, 329.311, -5.72205E-6, 156.477, 205.096, -5.72205E-6, 263.323, 205.096, 101.929, 263.323, 348.995, 101.929, 214.537, 348.995, -5.72205E-6, 214.537, 209.52, -5.72205E-6, 276.373, 142.065, -5.72205E-6, 299.242, 142.065, 101.929, 299.242, 209.52, 101.929, 276.373, 334.799, 101.929, 208.966, 138.553, 101.929, 275.499, 142.469, 109.094, 252.467, 313.833, 109.094, 194.369, 125.478, 101.929, 236.932, 321.724, 101.929, 170.398, -137.839, -3.62396E-5, 387.154, -159.998, -3.62396E-5, 321.792, -234.54, -3.62396E-5, 347.064, -212.381, -3.62396E-5, 412.426, -159.998, 101.929, 321.792, -224.51, 101.929, 343.664, -224.51, 106.378, 343.664, -234.54, 106.378, 347.064, -231.276, 106.378, 356.693, -231.276, 101.929, 356.693, -212.381, 101.929, 412.426, -137.839, 101.929, 387.154, -221.246, 106.378, 353.293, -221.246, 101.929, 353.293, -208.884, 101.929, 399.124, -205.489, 112.859, 373.257, -161.492, 112.859, 358.34, -147.325, 101.929, 378.254, -222.182, 101.929, 359.899, -160.624, 101.929, 339.029, 48.5369, 101.929, 251.668, -159.823, 101.929, 322.309, -159.823, 0, 322.309, 48.5369, 0, 251.668, 72.6452, 0, 322.778, 72.6452, 101.929, 322.778, -140.139, 101.929, 380.368, -140.139, 0, 380.368, 0.765335, 101.929, 332.597, 0.765335, 0, 332.597, 5.18961, 101.929, 345.647, 5.18961, 0, 345.647, 62.1534, 106.929, 298.355, 44.4229, 114.606, 283.86, 49.3229, 106.929, 260.511, -130.128, 106.929, 363.545, -142.959, 106.929, 325.7, -125.972, 114.606, 341.629, 2.16095, 106.929, 318.695, 67.1718, 101.929, 313.158, 7.1794, 101.929, 333.497, 2.16095, 101.929, 318.695, -130.128, 101.929, 363.545, -142.959, 101.929, 325.7, 49.3229, 101.929, 260.511, 62.1534, 101.929, 298.355, 150.576, -4.19617E-5, 310.961, 150.576, 106.258, 310.961, 118.683, 106.258, 216.89, 118.683, -4.19617E-5, 216.89, 77.0859, 106.258, 335.876, 77.0859, -4.19617E-5, 335.876, 45.1929, -4.19617E-5, 241.805, 45.1929, 106.258, 241.805, 113.831, 121.181, 323.419, 81.9377, 121.181, 229.347, 424.099, -5.91278E-5, 215.718, 357.097, -5.91278E-5, 238.434, 357.097, 102.323, 238.434, 424.099, 102.323, 215.718, 326.48, 102.323, 148.128, 326.48, -8.39233E-5, 148.128, 393.483, -8.39233E-5, 125.412, 393.483, 102.323, 125.412, 382.178, 102.323, 129.245, 410.696, 102.323, 213.361, 376.305, 112.677, 193.094, 357.495, 112.677, 137.613, 361.33, 102.323, 230.098, 332.812, 102.323, 145.982, 321.505, 37.2078, -74.3014, 314.048, 37.2078, -71.7731, 245.592, -1.14441E-5, -48.5645, 321.505, -1.14441E-5, -74.3014, 230.444, 37.2078, -342.894, 222.987, 37.2078, -340.366, 154.531, -5.72205E-6, -317.158, 230.444, -5.72205E-6, -342.894, 297.734, 85.9763, -144.415, 290.277, 85.9763, -141.887, 221.821, 99.3644, -118.678, 297.734, 99.3644, -144.415, 245.592, 99.3644, -48.5645, 321.505, 99.3644, -74.3014, 396.772, 99.3644, 147.706, 320.859, 99.3644, 173.443, 154.531, 99.3644, -317.158, 230.444, 99.3644, -342.894, 221.821, -5.72205E-6, -118.678, 320.859, -1.14441E-5, 173.443, 396.772, 85.9763, 147.706, 389.315, 85.9763, 150.234, 230.444, 85.9763, -342.894, 297.734, -5.72205E-6, -144.415, 297.734, 37.2078, -144.415, 290.277, 37.2078, -141.887, 222.987, 85.9763, -340.366, 396.772, 37.2078, 147.706, 396.772, -1.14441E-5, 147.706, 389.315, 37.2078, 150.234, 314.048, 85.9763, -71.7731, 321.505, 85.9763, -74.3014, 204.703, -8.39233E-5, -431.411, 204.703, 102.323, -431.411, 137.701, 102.323, -408.696, 137.701, -8.39233E-5, -408.696, 168.317, 102.323, -318.39, 168.317, -8.39233E-5, -318.39, 176.762, 102.323, -321.253, 221.517, 102.323, -336.426, 235.319, -8.39233E-5, -341.106, 235.319, 102.323, -341.106, 193.583, 107.48, -418.82, 178.792, 114.961, -388.855, 148.828, 107.48, -403.646, 176.762, 107.48, -321.253, 199.139, 115.354, -328.84, 221.517, 107.48, -336.426, 148.828, 102.323, -403.646, 193.583, 102.323, -418.82, -320.817, 101.929, -152.559, -320.817, -7.82013E-5, -152.559, -387.819, -7.82013E-5, -129.843, -387.819, 101.929, -129.843, -388.262, -7.82013E-5, -131.148, -418.436, -5.34058E-5, -220.149, -418.436, 101.929, -220.149, -351.434, -5.34058E-5, -242.865, -351.434, 101.929, -242.865, -321.26, -7.82013E-5, -153.864, -356.35, 107.402, -235.235, -371.572, 118.858, -208.651, -403.032, 107.402, -219.408, -333.837, 107.402, -168.829, -380.518, 107.402, -153.003, -363.28, 118.858, -184.192, -333.837, 101.929, -168.829, -356.35, 101.929, -235.235, -380.518, 101.929, -153.003, -403.032, 101.929, -219.408, -103.694, -4.19617E-5, -218.192, -135.726, -4.19617E-5, -312.674, -350.423, -4.19617E-5, -239.885, -318.391, -4.19617E-5, -145.404, 138.711, -4.76837E-5, -405.716, 170.743, -4.76837E-5, -311.235, 170.743, 101.929, -311.235, 138.711, 101.929, -405.716, -318.391, 101.929, -145.404, -322.371, 101.929, -157.143, -103.694, 101.929, -218.192, -135.726, 101.929, -312.674, -40.6117, 101.929, -239.579, -40.6117, -4.76837E-5, -239.579, -72.6437, -4.76837E-5, -334.061, -72.6437, 101.929, -334.061, -350.423, 101.929, -239.885, 155.989, 105.866, -315.964, 103.042, 113.74, -342.1, 129.177, 105.866, -395.047, -10.4928, 113.74, -303.608, -36.6285, 105.866, -250.661, -63.4398, 105.866, -329.744, 155.989, 101.929, -315.964, -36.6285, 101.929, -250.661, 129.177, 101.929, -395.047, -63.4398, 101.929, -329.744, -297.987, 113.74, -206.541, -169.765, 113.74, -250.013, -120.366, 105.866, -225.629, -322.371, 105.866, -157.143, -120.366, 101.929, -225.629, -145.381, 105.866, -299.411, -145.381, 101.929, -299.411, -347.385, 105.866, -230.925, -347.385, 101.929, -230.925, 241.676, 4.19617E-5, -40.5542, 241.676, 103.607, -40.5542, 297.865, 103.607, -59.6041, 297.865, 4.19617E-5, -59.6041, 271.425, 103.515, -137.592, 215.236, 103.515, -118.543, 215.236, 4.19617E-5, -118.543, 271.425, 4.19617E-5, -137.592, 228.455, 118.231, -79.5495, 284.645, 118.231, -98.5993, -244.063, -5.91278E-5, 51.3935, -309.431, -5.91278E-5, 73.5548, -309.431, 93.0133, 73.5548, -244.064, 93.0133, 51.3933, -366.45, 93.0141, -94.6273, -366.471, -5.91278E-5, -94.6909, -370.2, -5.91278E-5, -93.4269, -370.178, 93.0141, -93.3632, -383.09, 93.0133, -131.446, -383.09, -4.76837E-5, -131.446, -313.994, -4.76837E-5, -154.872, -313.994, 93.0133, -154.872, -302.028, 110.416, 41.8872, -361.28, 110.416, -132.882, -330.448, 110.416, -143.335, -271.196, 110.416, 31.4345, -257.326, 94.7881, 42.6149, -305.909, 94.7881, 59.0861, -369.99, 94.7881, -129.929, -321.408, 94.7881, -146.4, -321.408, 93.0133, -146.4, -257.326, 93.0133, 42.615, -305.909, 93.0134, 59.086, -369.99, 93.0133, -129.929, 304.261, 0.0474281, -40.7395, 304.261, 101.062, -40.7395, 336.289, 101.062, -51.5979, 336.289, 0.0474281, -51.5979, 265.901, 101.122, -153.884, 265.901, -0.04739, -153.884, 297.929, -0.04739, -164.743, 297.929, 101.122, -164.743, 317.109, 121.056, -108.172, 285.08, 121.056, -97.3133]; + uvs = new [0.13133, 0.560066, 0.13133, 0.560066, 0.0284302, 0.560066, 0.0284302, 0.560066, 0.0284301, 0.818796, 0.0284301, 0.818894, 0.0225608, 0.818894, 0.0225608, 0.818795, 0.0225607, 0.877383, 0.0225607, 0.877383, 0.13133, 0.877383, 0.131329, 0.877383, 0.0540408, 0.600298, 0.102575, 0.600298, 0.102575, 0.869161, 0.0540407, 0.869161, 0.0403289, 0.578383, 0.116807, 0.578383, 0.0403289, 0.869161, 0.116807, 0.578383, 0.116807, 0.869161, 0.116807, 0.869161, 0.0403289, 0.869161, 0.0403289, 0.578383, 0.0279096, 0.572233, 0.0279096, 0.606198, 0.000499547, 0.606198, 0.000499547, 0.572233, 0.0279095, 0.561556, 0.0279095, 0.567612, 0.000499547, 0.567612, 0.000499547, 0.561556, 0.0279095, 0.4121, 0.0279096, 0.444923, 0.000499547, 0.444923, 0.000499517, 0.4121, 0.0279096, 0.450832, 0.0279096, 0.456741, 0.000499547, 0.456742, 0.000499576, 0.450833, 0.142521, 0.561556, 0.142521, 0.509149, 0.142521, 0.456742, 0.0279095, 0.561556, 0.0279096, 0.456741, 0.0279095, 0.4121, 0.000499547, 0.606198, 0.0279096, 0.606198, 0.000499517, 0.4121, 0.142521, 0.561556, 0.142521, 0.456742, 0.0769444, 0.456742, 0.000499606, 0.509149, 0.000499547, 0.561556, 0.000499547, 0.456742, 0.137728, 0.556897, 0.0718185, 0.561556, 0.0718185, 0.556897, 0.0149739, 0.509149, 0.00639355, 0.556897, 0.0584557, 0.456741, 0.0584557, 0.461269, 0.00625387, 0.461269, 0.0251512, 0.479027, 0.0155337, 0.469989, 0.128588, 0.469989, 0.11897, 0.479027, 0.0336613, 0.487023, 0.11046, 0.487023, 0.0427775, 0.495589, 0.101344, 0.49559, 0.0427775, 0.522708, 0.101344, 0.522708, 0.11046, 0.531274, 0.0336613, 0.531274, 0.11897, 0.539271, 0.0251511, 0.539271, 0.128588, 0.548308, 0.0155337, 0.548308, 0.0769443, 0.461269, 0.0769443, 0.465747, 0.0769443, 0.465747, 0.0769443, 0.456741, 0.0584557, 0.456741, 0.0584557, 0.465747, 0.0584557, 0.465747, 0.05333, 0.55255, 0.0718185, 0.552551, 0.0718185, 0.552551, 0.05333, 0.55255, 0.0533299, 0.556897, 0.0533299, 0.561556, 0.0533299, 0.561556, 0.0718185, 0.561556, 0.129148, 0.509149, 0.131566, 0.49587, 0.137868, 0.461269, 0.563748, 0.0026468, 0.563748, 0.0026468, 0.505905, 0.0026468, 0.448062, 0.0026468, 0.448062, 0.0026468, 0.563747, 0.159583, 0.563747, 0.159583, 0.448062, 0.159583, 0.448062, 0.159583, 0.505905, 0.159583, 0.890049, 0.869955, 0.55734, 0.869955, 0.55734, 0.869955, 0.890049, 0.869955, 0.663527, 0.959274, 0.663527, 0.959274, 0.890049, 0.959274, 0.890049, 0.959274, 0.663527, 0.979349, 0.55734, 0.979349, 0.55734, 0.979349, 0.663527, 0.979349, 0.872673, 0.944946, 0.563747, 0.944946, 0.580301, 0.914998, 0.850058, 0.914998, 0.563747, 0.885614, 0.872673, 0.885614, 0.120068, 0.969713, 0.120068, 0.869162, 0.00272548, 0.869161, 0.00272545, 0.969713, 0.120068, 0.869162, 0.0185141, 0.869161, 0.0185141, 0.869161, 0.00272548, 0.869161, 0.00272551, 0.883975, 0.00272551, 0.883975, 0.00272545, 0.969713, 0.120068, 0.969713, 0.0185141, 0.883975, 0.0185141, 0.883975, 0.0140301, 0.952994, 0.0312048, 0.918891, 0.100463, 0.918891, 0.110934, 0.952994, 0.01403, 0.892652, 0.110934, 0.892652, 0.448062, 0.869955, 0.120068, 0.869956, 0.120068, 0.869956, 0.448062, 0.869955, 0.448062, 0.97935, 0.448062, 0.97935, 0.120068, 0.959274, 0.120068, 0.959274, 0.341875, 0.959274, 0.341875, 0.959274, 0.341875, 0.97935, 0.341875, 0.97935, 0.444939, 0.940744, 0.426844, 0.912449, 0.444939, 0.882524, 0.142255, 0.940744, 0.142255, 0.882524, 0.158613, 0.912449, 0.350501, 0.940744, 0.444939, 0.963516, 0.350501, 0.963516, 0.350501, 0.940744, 0.142255, 0.940744, 0.142255, 0.882524, 0.444939, 0.882524, 0.444939, 0.940744, 0.563747, 0.9995, 0.563747, 0.9995, 0.563747, 0.854782, 0.563747, 0.854782, 0.448062, 0.9995, 0.448062, 0.9995, 0.448062, 0.854782, 0.448062, 0.854782, 0.505905, 0.9995, 0.505905, 0.854782, 0.995522, 0.996036, 0.890049, 0.996036, 0.890049, 0.996036, 0.995522, 0.996036, 0.890049, 0.857111, 0.890049, 0.857111, 0.995522, 0.857111, 0.995522, 0.857111, 0.977726, 0.857111, 0.977726, 0.986514, 0.938871, 0.942462, 0.938871, 0.857111, 0.900016, 0.986514, 0.900016, 0.857111, 0.989495, 0.547877, 0.977756, 0.547877, 0.869995, 0.547877, 0.989495, 0.547877, 0.989495, 0.134676, 0.977756, 0.134676, 0.869995, 0.134676, 0.989495, 0.134676, 0.989495, 0.440015, 0.977756, 0.440015, 0.869995, 0.440015, 0.989495, 0.440015, 0.869995, 0.547877, 0.989495, 0.547877, 0.989495, 0.88941, 0.869995, 0.88941, 0.869995, 0.134676, 0.989495, 0.134676, 0.869995, 0.440015, 0.869995, 0.88941, 0.989495, 0.88941, 0.977756, 0.88941, 0.989495, 0.134676, 0.989495, 0.440015, 0.989495, 0.440015, 0.977756, 0.440015, 0.977756, 0.134676, 0.989495, 0.88941, 0.989495, 0.88941, 0.977756, 0.88941, 0.977756, 0.547877, 0.989495, 0.547877, 0.995522, 0.000499785, 0.995522, 0.000499785, 0.890049, 0.000499725, 0.890049, 0.000499725, 0.890049, 0.139425, 0.890049, 0.139425, 0.903343, 0.139425, 0.973795, 0.139425, 0.995522, 0.139425, 0.995522, 0.139425, 0.973795, 0.0126719, 0.938569, 0.0470973, 0.903343, 0.012672, 0.903343, 0.139425, 0.938569, 0.139425, 0.973795, 0.139425, 0.903343, 0.012672, 0.973795, 0.0126719, 0.120068, 0.139425, 0.120068, 0.139425, 0.0145949, 0.139425, 0.0145949, 0.139425, 0.0145949, 0.137417, 0.0145949, 0.000499487, 0.0145949, 0.000499487, 0.120068, 0.000499487, 0.120068, 0.000499487, 0.120068, 0.137417, 0.109474, 0.00872743, 0.0752575, 0.0382865, 0.0359894, 0.00872725, 0.109474, 0.110885, 0.0359893, 0.110885, 0.0752574, 0.0759143, 0.109474, 0.110885, 0.109474, 0.00872743, 0.0359893, 0.110885, 0.0359894, 0.00872725, 0.458038, 0.150432, 0.458038, 0.00508314, 0.120069, 0.00508302, 0.120068, 0.150432, 0.89005, 0.00508302, 0.89005, 0.150432, 0.89005, 0.150432, 0.89005, 0.00508302, 0.120068, 0.150432, 0.120068, 0.132372, 0.458038, 0.150432, 0.458038, 0.00508314, 0.557341, 0.150432, 0.557341, 0.150432, 0.557341, 0.00508296, 0.557341, 0.00508296, 0.120069, 0.00508302, 0.871481, 0.137005, 0.809237, 0.076175, 0.871481, 0.0153453, 0.630514, 0.0761749, 0.568269, 0.137005, 0.568269, 0.0153452, 0.871481, 0.137005, 0.568269, 0.137005, 0.871482, 0.015345, 0.568269, 0.015345, 0.178141, 0.0756199, 0.379986, 0.0756198, 0.438059, 0.132373, 0.120068, 0.132373, 0.438059, 0.132373, 0.438059, 0.0188669, 0.438059, 0.018867, 0.120068, 0.0188668, 0.120068, 0.0188666, 0.860631, 0.557098, 0.860631, 0.557098, 0.949083, 0.557098, 0.949083, 0.557098, 0.949083, 0.437121, 0.860632, 0.437121, 0.860631, 0.437121, 0.949083, 0.437121, 0.860631, 0.497108, 0.949083, 0.497108, 0.130809, 0.456742, 0.0279096, 0.456741, 0.0279096, 0.456741, 0.130809, 0.456741, 0.0279097, 0.198012, 0.0279096, 0.197914, 0.0220404, 0.197914, 0.0220402, 0.198012, 0.0220403, 0.139425, 0.0220403, 0.139425, 0.130809, 0.139425, 0.130809, 0.139425, 0.0535203, 0.41651, 0.0535202, 0.147646, 0.102055, 0.147647, 0.102055, 0.41651, 0.116286, 0.438425, 0.0398084, 0.438425, 0.0398085, 0.147647, 0.116286, 0.147646, 0.116286, 0.147646, 0.116286, 0.438425, 0.0398085, 0.438425, 0.0398085, 0.147647, 0.949083, 0.586119, 0.949083, 0.586119, 0.9995, 0.586119, 0.9995, 0.586119, 0.949083, 0.412058, 0.949083, 0.412058, 0.999501, 0.412058, 0.999501, 0.412058, 0.999501, 0.499086, 0.949082, 0.499086]; + indices = new [0, 2, 1, 2, 0, 3, 4, 3, 5, 3, 4, 2, 6, 4, 5, 4, 6, 7, 8, 6, 9, 6, 8, 7, 6, 10, 9, 10, 3, 0, 10, 5, 3, 6, 5, 10, 9, 11, 8, 11, 9, 10, 10, 1, 11, 1, 10, 0, 12, 14, 13, 14, 12, 15, 12, 17, 16, 17, 12, 13, 15, 16, 18, 16, 15, 12, 17, 20, 19, 20, 17, 21, 18, 23, 22, 23, 18, 16, 17, 23, 16, 23, 17, 19, 13, 21, 17, 21, 13, 14, 20, 18, 22, 20, 15, 18, 20, 14, 15, 20, 21, 14, 11, 19, 20, 19, 11, 1, 22, 7, 8, 7, 22, 4, 22, 11, 20, 11, 22, 8, 2, 19, 1, 19, 2, 23, 2, 22, 23, 22, 2, 4, 26, 24, 27, 24, 26, 25, 30, 28, 31, 28, 30, 29, 24, 30, 27, 30, 24, 29, 34, 32, 35, 32, 34, 33, 38, 36, 39, 36, 38, 37, 36, 34, 39, 34, 36, 33, 40, 42, 41, 28, 24, 43, 24, 28, 29, 32, 44, 45, 44, 32, 33, 25, 46, 47, 46, 25, 26, 48, 32, 45, 32, 48, 35, 50, 43, 44, 43, 50, 49, 31, 27, 30, 27, 39, 34, 31, 39, 27, 31, 38, 39, 46, 43, 47, 46, 44, 43, 46, 45, 44, 46, 48, 45, 40, 43, 49, 43, 40, 28, 50, 51, 42, 52, 31, 53, 52, 38, 31, 52, 54, 38, 34, 46, 27, 46, 34, 48, 48, 34, 35, 27, 46, 26, 36, 44, 33, 44, 36, 37, 24, 47, 43, 47, 24, 25, 40, 57, 56, 57, 40, 55, 59, 52, 53, 52, 59, 58, 60, 62, 61, 62, 60, 54, 65, 63, 66, 63, 65, 64, 66, 67, 68, 67, 66, 63, 68, 69, 70, 69, 68, 67, 70, 71, 72, 71, 70, 69, 73, 71, 74, 71, 73, 72, 75, 74, 76, 74, 75, 73, 76, 67, 63, 67, 76, 74, 77, 76, 78, 76, 77, 75, 66, 77, 65, 77, 66, 75, 73, 66, 68, 66, 73, 75, 72, 68, 70, 68, 72, 73, 74, 69, 67, 69, 74, 71, 78, 63, 64, 63, 78, 76, 78, 58, 59, 64, 58, 78, 62, 58, 64, 80, 82, 81, 79, 82, 80, 79, 51, 82, 83, 51, 60, 51, 83, 82, 61, 83, 60, 84, 83, 61, 84, 85, 83, 84, 81, 85, 81, 84, 80, 83, 81, 82, 81, 83, 85, 86, 88, 87, 88, 86, 89, 90, 89, 86, 89, 92, 91, 90, 92, 89, 93, 92, 56, 92, 93, 91, 89, 93, 88, 93, 89, 91, 56, 88, 93, 56, 87, 88, 56, 57, 87, 28, 53, 31, 28, 92, 53, 28, 56, 92, 28, 40, 56, 41, 95, 94, 41, 96, 95, 42, 96, 41, 65, 95, 96, 65, 94, 95, 77, 94, 65, 77, 55, 94, 64, 61, 62, 64, 84, 61, 65, 84, 64, 65, 80, 84, 80, 96, 79, 65, 96, 80, 86, 59, 90, 86, 78, 59, 86, 77, 78, 87, 77, 86, 57, 77, 87, 57, 55, 77, 55, 41, 94, 41, 55, 40, 59, 92, 90, 92, 59, 53, 52, 62, 54, 62, 52, 58, 96, 51, 79, 51, 96, 42, 51, 44, 60, 44, 51, 50, 60, 38, 54, 38, 60, 37, 37, 60, 44, 42, 49, 50, 49, 42, 40, 98, 100, 99, 97, 100, 98, 97, 101, 100, 102, 98, 103, 98, 102, 97, 104, 101, 105, 101, 104, 100, 105, 106, 104, 105, 103, 106, 105, 102, 103, 99, 103, 98, 103, 99, 106, 100, 106, 99, 106, 100, 104, 105, 97, 102, 97, 105, 101, 108, 110, 109, 110, 108, 107, 111, 113, 112, 113, 111, 114, 111, 116, 109, 116, 111, 115, 114, 107, 113, 107, 114, 110, 117, 109, 116, 109, 117, 108, 116, 118, 117, 118, 116, 115, 109, 114, 111, 114, 109, 110, 115, 112, 118, 112, 115, 111, 119, 121, 120, 121, 119, 122, 120, 121, 123, 119, 124, 122, 122, 123, 121, 123, 122, 124, 124, 108, 123, 108, 124, 107, 108, 120, 123, 120, 108, 117, 124, 113, 107, 113, 124, 119, 112, 119, 120, 119, 112, 113, 112, 117, 118, 117, 112, 120, 125, 127, 126, 127, 125, 128, 130, 132, 131, 130, 127, 132, 129, 127, 130, 129, 126, 127, 134, 128, 135, 134, 127, 128, 133, 127, 134, 133, 132, 127, 135, 125, 136, 125, 135, 128, 126, 136, 125, 136, 126, 129, 131, 133, 137, 133, 131, 132, 138, 131, 137, 131, 138, 130, 133, 138, 137, 138, 133, 134, 139, 141, 140, 141, 139, 142, 143, 141, 144, 141, 143, 140, 139, 140, 143, 141, 142, 144, 136, 139, 135, 139, 136, 142, 143, 144, 138, 130, 144, 129, 144, 130, 138, 134, 143, 138, 134, 139, 143, 134, 135, 139, 136, 144, 142, 144, 136, 129, 145, 147, 146, 147, 145, 148, 149, 145, 150, 145, 149, 148, 146, 152, 151, 152, 146, 147, 152, 153, 151, 153, 152, 154, 155, 154, 156, 154, 155, 153, 155, 149, 150, 149, 155, 156, 149, 147, 148, 147, 154, 152, 149, 154, 147, 156, 154, 149, 157, 159, 158, 160, 162, 161, 157, 160, 163, 157, 162, 160, 157, 158, 162, 164, 163, 165, 163, 164, 157, 163, 166, 165, 158, 161, 162, 161, 158, 159, 167, 163, 160, 163, 167, 166, 161, 167, 160, 167, 161, 168, 161, 169, 168, 169, 161, 159, 157, 169, 159, 169, 157, 170, 157, 164, 170, 150, 165, 155, 165, 150, 164, 167, 146, 151, 146, 167, 168, 145, 164, 150, 145, 170, 164, 169, 170, 145, 145, 168, 169, 168, 145, 146, 166, 155, 165, 155, 166, 153, 167, 153, 166, 153, 167, 151, 171, 173, 172, 173, 171, 174, 175, 177, 176, 177, 175, 178, 173, 179, 172, 179, 173, 180, 180, 175, 179, 175, 180, 178, 176, 174, 171, 174, 176, 177, 173, 177, 178, 177, 173, 174, 173, 178, 180, 175, 172, 179, 176, 172, 175, 172, 176, 171, 183, 181, 184, 181, 183, 182, 182, 185, 186, 185, 182, 183, 187, 189, 188, 188, 181, 187, 181, 188, 184, 186, 181, 182, 181, 186, 187, 190, 192, 191, 192, 190, 189, 193, 190, 191, 192, 193, 191, 193, 192, 194, 194, 192, 189, 183, 190, 193, 190, 183, 184, 193, 185, 183, 185, 193, 194, 190, 188, 189, 188, 190, 184, 194, 186, 185, 186, 189, 187, 189, 186, 194, 195, 197, 196, 197, 195, 198, 199, 201, 200, 201, 199, 202, 203, 205, 204, 205, 203, 206, 208, 210, 209, 210, 208, 207, 212, 205, 206, 205, 212, 211, 205, 201, 213, 201, 205, 211, 210, 197, 214, 197, 210, 207, 215, 210, 216, 210, 215, 209, 203, 212, 206, 212, 203, 217, 218, 199, 219, 199, 218, 202, 220, 221, 204, 221, 220, 200, 219, 200, 220, 200, 219, 199, 204, 217, 203, 217, 204, 221, 222, 198, 195, 198, 222, 223, 224, 225, 216, 225, 224, 196, 195, 224, 222, 224, 195, 196, 216, 226, 215, 226, 216, 225, 224, 210, 214, 210, 224, 216, 222, 214, 223, 214, 222, 224, 217, 211, 212, 211, 217, 221, 200, 211, 221, 211, 200, 201, 196, 207, 225, 207, 196, 197, 226, 207, 208, 207, 226, 225, 208, 215, 226, 215, 208, 209, 198, 214, 197, 214, 198, 223, 213, 202, 218, 202, 213, 201, 220, 205, 213, 205, 220, 204, 219, 213, 218, 213, 219, 220, 227, 229, 228, 229, 227, 230, 231, 230, 232, 230, 231, 229, 233, 235, 234, 235, 233, 232, 228, 235, 227, 235, 228, 236, 232, 227, 235, 227, 232, 230, 237, 239, 238, 240, 242, 241, 240, 234, 242, 240, 233, 234, 237, 241, 242, 241, 237, 238, 238, 240, 241, 240, 238, 239, 240, 243, 233, 243, 240, 239, 234, 237, 242, 237, 234, 244, 237, 243, 239, 243, 237, 244, 229, 244, 228, 244, 229, 243, 232, 233, 231, 234, 235, 236, 243, 231, 233, 231, 243, 229, 236, 244, 234, 244, 236, 228, 245, 247, 246, 247, 245, 248, 249, 251, 250, 249, 248, 251, 249, 247, 248, 251, 252, 250, 252, 251, 253, 253, 254, 252, 254, 245, 246, 253, 245, 254, 254, 250, 252, 246, 250, 254, 246, 249, 250, 246, 247, 249, 0xFF, 0x0101, 0x0100, 258, 260, 259, 0xFF, 260, 258, 260, 0xFF, 0x0100, 261, 0xFF, 258, 0xFF, 261, 262, 259, 261, 258, 261, 259, 263, 259, 264, 263, 264, 259, 0x0101, 0x0101, 260, 0x0100, 260, 0x0101, 259, 0xFF, 264, 0x0101, 264, 0xFF, 262, 263, 251, 248, 251, 263, 264, 261, 253, 262, 253, 261, 245, 263, 245, 261, 245, 263, 248, 253, 264, 262, 264, 253, 251, 265, 267, 266, 267, 265, 268, 269, 271, 270, 271, 269, 272, 273, 274, 268, 265, 276, 275, 276, 265, 266, 277, 279, 278, 279, 277, 280, 266, 281, 276, 281, 266, 267, 280, 269, 279, 269, 280, 272, 277, 270, 271, 270, 277, 278, 275, 268, 265, 268, 275, 273, 282, 284, 283, 285, 287, 286, 286, 288, 282, 288, 286, 289, 288, 284, 282, 284, 288, 290, 284, 291, 287, 291, 284, 290, 286, 291, 289, 291, 286, 287, 285, 282, 283, 282, 285, 286, 284, 285, 283, 285, 284, 287, 292, 294, 293, 294, 292, 295, 295, 296, 294, 296, 295, 274, 296, 297, 294, 297, 296, 298, 298, 299, 297, 299, 298, 300, 295, 300, 274, 300, 295, 299, 294, 297, 293, 292, 299, 295, 297, 292, 293, 292, 297, 299, 267, 274, 300, 274, 267, 268, 267, 300, 281, 296, 276, 298, 276, 296, 275, 280, 289, 291, 289, 280, 277, 288, 272, 290, 272, 288, 271, 279, 270, 278, 270, 279, 269, 290, 280, 291, 280, 290, 272, 288, 277, 271, 277, 288, 289, 298, 281, 300, 281, 298, 276, 296, 273, 275, 273, 296, 274, 301, 303, 302, 303, 301, 304, 305, 307, 306, 307, 305, 308, 302, 307, 301, 307, 309, 306, 302, 309, 307, 310, 306, 309, 306, 310, 305, 310, 302, 303, 302, 310, 309, 303, 305, 310, 304, 305, 303, 308, 305, 304, 307, 304, 301, 304, 307, 308, 311, 313, 312, 313, 311, 314, 315, 312, 313, 312, 315, 316, 317, 315, 318, 315, 317, 316, 319, 317, 318, 317, 319, 320, 312, 321, 311, 316, 321, 312, 317, 321, 316, 317, 320, 321, 320, 322, 321, 322, 320, 319, 321, 314, 311, 314, 321, 322, 323, 325, 324, 325, 323, 326, 323, 327, 326, 327, 323, 328, 324, 328, 323, 328, 324, 329, 327, 331, 330, 331, 327, 332, 329, 333, 328, 333, 329, 334, 327, 333, 332, 333, 327, 328, 326, 330, 325, 330, 326, 327, 331, 325, 330, 331, 324, 325, 331, 329, 324, 331, 334, 329, 322, 332, 314, 332, 322, 331, 334, 318, 315, 318, 334, 319, 334, 322, 319, 322, 334, 331, 313, 332, 333, 332, 313, 314, 313, 334, 315, 334, 313, 333, 335, 337, 336, 337, 335, 338, 339, 341, 340, 341, 339, 342, 342, 338, 341, 338, 343, 337, 342, 343, 338, 343, 336, 337, 336, 343, 344, 343, 339, 344, 339, 343, 342, 341, 335, 340, 335, 341, 338, 339, 336, 344, 340, 336, 339, 335, 336, 340]; + } + } +}//package wd.d3.geom.monuments.mesh.paris.louvre diff --git a/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/PyramideLouvre.as b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/PyramideLouvre.as new file mode 100644 index 0000000..65d1645 --- /dev/null +++ b/flash_decompiled/monuments/wd/d3/geom/monuments/mesh/paris/louvre/PyramideLouvre.as @@ -0,0 +1,13 @@ +package wd.d3.geom.monuments.mesh.paris.louvre { + import fr.seraf.stage3D.*; + import __AS3__.vec.*; + + public class PyramideLouvre extends Stage3DData { + + public function PyramideLouvre(){ + vertices = new [-21.5725, 84.9202, 7.83353, 68.4018, 5.62992, 48.0228, -61.8738, 5.62992, 97.7648, -111.616, 5.62992, -32.5108, 18.66, 5.62992, -82.2526, -95.8955, 6.14178, 7.39888, -85.3066, 15.2103, 12.774, -85.3066, 6.14178, 12.774, -73.8672, 15.2103, 44.5212, -73.8672, 6.14178, 44.5212, -78.0451, 6.14178, 54.1497, 16.5344, 2.59847, -81.822, -75.3432, 5.27564, -123.512, -75.3432, 2.59847, -123.512, 16.5344, 5.27564, -81.822, -112.739, 5.27564, -32.4626, -112.739, 2.59847, -32.4626, -107.059, 5.27564, -38.0029, 8.36036, 5.27564, -82.0723, 8.36036, 4.29139, -82.0723, -107.059, 4.29139, -38.0029, -73.6705, 4.29139, -119.295, -73.6705, 5.27564, -119.295, -62.5091, 2.59847, 99.092, -62.5091, 5.27564, 99.092, 28.0944, 5.27564, 147.394, 28.0944, 2.59847, 147.394, 66.7646, 2.59847, 49.7326, 66.7646, 5.27564, 49.7326, 26.4642, 5.27564, 142.955, 61.201, 5.27564, 55.2283, 61.201, 4.29139, 55.2283, 26.4642, 4.29139, 142.955, -54.9232, 4.29139, 99.5669, -54.9232, 5.27564, 99.5669, 22.2096, 5.27564, -75.7881, 16.5344, 5.27564, -81.822, 103.271, 5.27564, -42.4643, 99.2387, 5.27564, -40.8354, 16.5344, 2.59847, -81.822, 103.271, 2.59847, -42.4643, 66.7646, 5.27564, 49.7327, 66.7646, 2.59847, 49.7327, 99.2387, 4.25202, -40.8354, 66.818, 4.25202, 41.0428, 22.2096, 4.25202, -75.7881, 66.818, 5.27564, 41.0428, 113.118, 5.27564, -53.4124, -73.9609, 5.27564, -138.236, -65.7844, 5.23942, -137.987, 107.445, 5.23942, -59.443, 113.118, 2.59847, -53.4124, -73.9609, 2.59847, -138.236, -73.9609, 0.590605, -138.236, 61.0486, 0.5906, -189.785, 61.0486, 4.09453, -189.785, 59.225, 3.16157, -185.709, 107.44, 4.25523, -59.4327, -65.7891, 4.25523, -137.976, 59.2297, 4.14576, -185.72, 113.119, 0.590605, -53.4124, 171.177, 4.09453, 98.6445, 167.111, 4.14577, 96.8256, 118.909, 5.23941, -29.4172, 119.12, 5.27564, -37.6947, 36.2008, 5.27564, 150.181, 36.2008, 2.59847, 150.181, 119.12, 2.59847, -37.6947, 119.12, 0.590605, -37.6947, 171.177, 0.5906, 98.6445, 118.899, 4.25522, -29.4218, 167.101, 3.16158, 96.8211, 42.1201, 4.25522, 144.541, 42.1304, 5.23941, 144.546, 36.2008, 0.590605, 150.181, -127.023, 2.59847, -36.8792, -127.023, 6.45674, -36.8792, -85.4945, 5.27564, -133.832, -85.4945, 2.59847, -133.832, -127.023, 0.5906, -36.8792, -220.375, 0.5906, -82.332, -220.375, 4.09453, -82.332, -91.3, 4.30492, -128.22, -128.6, 5.36576, -41.1389, -212.448, 3.24407, -81.9638, -128.616, 6.34971, -41.1577, -91.3158, 5.28886, -128.239, -212.463, 4.22802, -81.9826, -85.4945, 0.590605, -133.832, 19.7421, 2.59847, 156.465, 19.7421, 5.66934, 156.465, -68.8219, 6.85044, 115.551, -68.8219, 2.59847, 115.551, -110.247, 0.5906, 206.098, -68.8219, 0.5906, 115.551, 11.6365, 4.89813, 156.169, -104.183, 3.84578, 200.391, -67.2736, 5.95049, 119.714, 11.6373, 5.68525, 156.19, -104.182, 4.6329, 200.412, -67.2728, 6.73761, 119.735, -110.247, 4.48824, 206.098, 19.7421, 0.590603, 156.466, -84.7718, 21.8988, -161.368, -62.9286, 3.10134, -169.711, -76.4336, 3.10134, -139.523, -106.628, 3.10134, -153.031, -93.123, 3.10134, -183.219, 145.368, 21.8988, -56.8703, 167.211, 3.10134, -65.2131, 153.706, 3.10134, -35.0254, 123.512, 3.10134, -48.5333, 137.017, 3.10134, -78.721, -62.5092, 2.59847, 99.092, -68.8219, 2.59847, 115.551, -127.023, 2.59847, -36.8792, -112.739, 2.59847, -32.4627, -68.8219, 0.5906, 115.551, -127.023, 0.5906, -36.8792, 19.7421, 2.59847, 156.465, 28.0943, 2.59847, 147.394, -85.4945, 2.59847, -133.832, -75.3431, 2.59847, -123.512, -73.9609, 2.59847, -138.236, 16.5344, 2.59847, -81.822, 113.118, 2.59847, -53.4124, 119.12, 2.59847, -37.6947, 103.271, 2.59847, -42.4644, 66.7646, 2.59847, 49.7326, -73.9609, 0.590605, -138.236, -85.4945, 0.590605, -133.832, 36.2008, 0.590605, 150.181, 19.7421, 0.5906, 156.465, 36.2008, 2.59847, 150.181, 119.12, 0.590605, -37.6947, 113.118, 0.590605, -53.4124, 37.1492, 21.8988, 178.538, 58.9923, 3.10134, 170.195, 45.4873, 3.10134, 200.383, 15.293, 3.10134, 186.875, 28.7979, 3.10134, 156.687, 69.8248, 2.38419E-6, 48.6596, 19.2966, 2.38419E-6, -83.6758, 68.4019, 2.38419E-6, 48.023, 68.4019, 5.62992, 48.023, 18.6599, 2.38419E-6, -82.2527, 18.6599, 5.62992, -82.2527, -111.616, 5.62992, -32.5108, -111.616, 2.38419E-6, -32.5108, -61.8738, 2.38419E-6, 97.7648, -61.8738, 5.62992, 97.7648, 19.2966, 5.62992, -83.6758, -113.848, 5.62992, -32.8385, -113.848, 2.81496, -32.8385, -113.848, 2.38419E-6, -32.8385, 69.8248, 5.62992, 48.6596, -96.9229, 5.62992, 11.4886, -79.9978, 5.62992, 55.8158, -74.3537, 3.26772, 103.71, -124.882, 3.26772, -28.6255, -63.3196, 2.81496, 99.4967, -63.3196, 5.62992, 99.4967, -63.3196, 2.38419E-6, 99.4967, -79.9978, 5.62992, 55.8158, -63.3196, 2.81496, 99.4967, -113.848, 2.81496, -32.8385]; + uvs = new [0.563895, 0.500139, 0.366165, 0.66745, 0.754324, 0.673903, 0.761658, 0.332415, 0.3735, 0.325962, 0.75815, 0.437429, 0.735488, 0.458607, 0.735488, 0.458607, 0.735488, 0.541258, 0.735488, 0.541258, 0.755517, 0.559976, 0.379474, 0.32519, 0.580772, 0.15284, 0.580772, 0.15284, 0.379474, 0.32519, 0.764647, 0.331593, 0.764647, 0.331593, 0.744541, 0.323543, 0.400647, 0.317826, 0.400647, 0.317826, 0.744541, 0.323543, 0.580371, 0.163948, 0.580371, 0.163948, 0.75724, 0.676433, 0.75724, 0.676433, 0.565519, 0.862959, 0.565519, 0.862959, 0.372067, 0.67003, 0.372067, 0.67003, 0.5656, 0.851379, 0.391826, 0.678074, 0.391826, 0.678074, 0.5656, 0.851379, 0.73782, 0.683826, 0.73782, 0.683826, 0.370304, 0.343805, 0.379474, 0.32519, 0.189439, 0.487895, 0.201538, 0.488301, 0.379474, 0.32519, 0.189439, 0.487895, 0.372067, 0.67003, 0.372067, 0.67003, 0.201538, 0.488301, 0.363726, 0.650051, 0.370304, 0.343805, 0.363726, 0.650051, 0.153315, 0.470844, 0.563256, 0.120061, 0.542076, 0.127424, 0.162485, 0.452237, 0.153315, 0.470844, 0.563256, 0.120061, 0.563256, 0.120061, 0.160993, 0.113374, 0.160993, 0.113374, 0.169616, 0.121252, 0.162507, 0.452257, 0.542098, 0.127444, 0.169594, 0.121232, 0.153315, 0.470844, 0.144754, 0.869427, 0.153686, 0.86186, 0.160794, 0.530943, 0.15243, 0.512045, 0.546917, 0.876113, 0.546917, 0.876113, 0.15243, 0.512045, 0.15243, 0.512045, 0.144754, 0.869427, 0.160817, 0.530924, 0.153709, 0.861841, 0.526091, 0.868031, 0.526068, 0.86805, 0.546918, 0.876113, 0.79789, 0.309557, 0.79789, 0.309557, 0.597621, 0.120632, 0.597621, 0.120632, 0.79789, 0.309557, 0.9995, 0.127313, 0.9995, 0.127313, 0.618123, 0.128743, 0.798, 0.298432, 0.979083, 0.134744, 0.798024, 0.298376, 0.618146, 0.128687, 0.979107, 0.134688, 0.597621, 0.120632, 0.595957, 0.876928, 0.595957, 0.876928, 0.789308, 0.709118, 0.789308, 0.709118, 0.983261, 0.883367, 0.789308, 0.709118, 0.616907, 0.869514, 0.961993, 0.875251, 0.789182, 0.719996, 0.616924, 0.869563, 0.962011, 0.8753, 0.789199, 0.720045, 0.983261, 0.883367, 0.595957, 0.876928, 0.569741, 0.057783, 0.504656, 0.056695, 0.568518, 0.115042, 0.634854, 0.0588468, 0.570993, 0.000499547, 0.0655842, 0.489653, 0.000499547, 0.488565, 0.0643612, 0.546912, 0.130697, 0.490716, 0.0668359, 0.432369, 0.757241, 0.676433, 0.789308, 0.709117, 0.79789, 0.309557, 0.764647, 0.331593, 0.789308, 0.709117, 0.79789, 0.309557, 0.595956, 0.876928, 0.565519, 0.862959, 0.597621, 0.120632, 0.580772, 0.15284, 0.563256, 0.120061, 0.379474, 0.32519, 0.153315, 0.470844, 0.15243, 0.512045, 0.189439, 0.487895, 0.372067, 0.67003, 0.563256, 0.120061, 0.597621, 0.120632, 0.546918, 0.876113, 0.595957, 0.876928, 0.546918, 0.876113, 0.15243, 0.512045, 0.153315, 0.470844, 0.571195, 0.942241, 0.506111, 0.941154, 0.569972, 0.999501, 0.636309, 0.943305, 0.572447, 0.884958, 0.363039, 0.670098, 0.37049, 0.323211, 0.366166, 0.66745, 0.366166, 0.66745, 0.3735, 0.325962, 0.3735, 0.325962, 0.761659, 0.332415, 0.761659, 0.332415, 0.754324, 0.673903, 0.754324, 0.673903, 0.37049, 0.323211, 0.767196, 0.329807, 0.767196, 0.329807, 0.767196, 0.329807, 0.363039, 0.670098, 0.7647, 0.446, 0.762204, 0.562193, 0.792621, 0.67724, 0.800072, 0.330353, 0.759745, 0.676693, 0.759745, 0.676693, 0.759745, 0.676693, 0.762204, 0.562193, 0.759745, 0.676693, 0.767196, 0.329807]; + indices = new [0, 2, 1, 0, 4, 3, 0, 1, 4, 4, 2, 3, 2, 4, 1, 5, 7, 6, 7, 8, 6, 8, 7, 9, 9, 10, 8, 5, 9, 7, 9, 5, 10, 10, 3, 2, 3, 10, 5, 6, 3, 5, 3, 6, 0, 0, 6, 8, 8, 2, 0, 2, 8, 10, 11, 13, 12, 12, 14, 11, 15, 16, 11, 11, 14, 15, 15, 13, 16, 13, 15, 12, 14, 17, 15, 17, 14, 18, 19, 21, 20, 18, 21, 19, 21, 18, 22, 19, 17, 18, 17, 19, 20, 20, 22, 17, 22, 20, 21, 17, 12, 15, 12, 17, 22, 14, 22, 18, 22, 14, 12, 25, 23, 26, 23, 25, 24, 27, 23, 24, 24, 28, 27, 26, 27, 28, 28, 25, 26, 28, 29, 25, 29, 28, 30, 31, 33, 32, 32, 34, 29, 34, 32, 33, 34, 31, 30, 31, 34, 33, 29, 31, 32, 31, 29, 30, 34, 25, 29, 25, 34, 24, 28, 34, 30, 34, 28, 24, 37, 35, 38, 35, 37, 36, 40, 36, 37, 36, 40, 39, 41, 39, 42, 39, 41, 36, 42, 37, 41, 37, 42, 40, 43, 45, 44, 44, 35, 46, 35, 44, 45, 38, 45, 43, 45, 38, 35, 46, 43, 44, 43, 46, 38, 37, 46, 41, 46, 37, 38, 35, 41, 46, 41, 35, 36, 47, 49, 48, 49, 47, 50, 51, 48, 52, 48, 51, 47, 48, 53, 52, 53, 55, 54, 48, 55, 53, 56, 58, 57, 56, 50, 59, 50, 56, 57, 50, 58, 49, 58, 50, 57, 59, 58, 56, 58, 59, 49, 51, 55, 47, 51, 54, 55, 51, 60, 54, 49, 55, 48, 55, 49, 59, 47, 59, 50, 59, 47, 55, 63, 61, 64, 61, 63, 62, 66, 64, 67, 64, 66, 65, 64, 68, 67, 68, 61, 69, 64, 61, 68, 70, 72, 71, 72, 62, 71, 62, 72, 73, 63, 72, 70, 72, 63, 73, 71, 63, 70, 63, 71, 62, 64, 73, 63, 73, 64, 65, 61, 73, 65, 73, 61, 62, 66, 61, 65, 66, 69, 61, 66, 74, 69, 75, 77, 76, 77, 75, 78, 76, 79, 75, 76, 80, 79, 76, 81, 80, 82, 84, 83, 85, 82, 83, 82, 85, 86, 84, 85, 83, 85, 84, 87, 87, 82, 86, 82, 87, 84, 76, 86, 85, 86, 76, 77, 86, 81, 87, 81, 86, 77, 87, 76, 85, 76, 87, 81, 78, 81, 77, 78, 80, 81, 78, 88, 80, 89, 91, 90, 91, 89, 92, 92, 94, 93, 95, 97, 96, 95, 99, 98, 99, 95, 96, 99, 97, 100, 97, 99, 96, 100, 95, 98, 95, 100, 97, 99, 91, 101, 91, 99, 100, 90, 99, 101, 99, 90, 98, 91, 98, 90, 98, 91, 100, 92, 101, 91, 101, 92, 93, 101, 89, 90, 89, 93, 102, 101, 93, 89, 103, 105, 104, 103, 107, 106, 106, 105, 103, 103, 104, 107, 107, 105, 106, 105, 107, 104, 108, 110, 109, 108, 112, 111, 111, 110, 108, 108, 109, 112, 112, 110, 111, 110, 112, 109, 115, 113, 116, 113, 115, 114, 115, 117, 114, 117, 115, 118, 113, 119, 120, 119, 113, 114, 116, 121, 115, 121, 116, 122, 122, 123, 121, 124, 125, 123, 125, 127, 126, 128, 126, 127, 121, 129, 130, 129, 121, 123, 119, 131, 133, 131, 119, 132, 125, 134, 135, 134, 125, 126, 133, 120, 119, 133, 128, 120, 128, 133, 126, 125, 124, 127, 124, 123, 122, 136, 138, 137, 136, 140, 139, 139, 138, 136, 136, 137, 140, 140, 138, 139, 138, 140, 137, 141, 143, 142, 144, 145, 143, 145, 144, 146, 147, 145, 146, 145, 147, 148, 149, 147, 150, 147, 149, 148, 144, 149, 150, 149, 144, 143, 151, 153, 152, 151, 154, 153, 151, 142, 154, 141, 151, 155, 151, 141, 142, 156, 158, 157, 158, 156, 159, 160, 155, 161, 160, 141, 155, 160, 162, 141, 156, 154, 162, 154, 156, 153, 162, 163, 156, 162, 160, 157, 155, 144, 150, 160, 161, 157, 164, 157, 158, 156, 152, 153, 156, 165, 159, 150, 161, 155, 150, 157, 161, 150, 156, 157, 147, 156, 150, 147, 152, 156, 151, 147, 146, 147, 151, 152, 151, 144, 155, 144, 151, 146, 148, 142, 145, 142, 148, 154, 148, 162, 154, 162, 148, 149, 145, 142, 143, 141, 149, 143, 149, 141, 162]; + } + } +}//package wd.d3.geom.monuments.mesh.paris.louvre diff --git a/flash_decompiled/watchdog/AdPopinIconAsset.as b/flash_decompiled/watchdog/AdPopinIconAsset.as new file mode 100644 index 0000000..1516dfb --- /dev/null +++ b/flash_decompiled/watchdog/AdPopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class AdPopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/AidanFaceAsset.as b/flash_decompiled/watchdog/AidanFaceAsset.as new file mode 100644 index 0000000..d278798 --- /dev/null +++ b/flash_decompiled/watchdog/AidanFaceAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class AidanFaceAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/ArrowAsset.as b/flash_decompiled/watchdog/ArrowAsset.as new file mode 100644 index 0000000..e622f11 --- /dev/null +++ b/flash_decompiled/watchdog/ArrowAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ArrowAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/BlackCrossAsset.as b/flash_decompiled/watchdog/BlackCrossAsset.as new file mode 100644 index 0000000..69487cc --- /dev/null +++ b/flash_decompiled/watchdog/BlackCrossAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class BlackCrossAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/CompassAsset.as b/flash_decompiled/watchdog/CompassAsset.as new file mode 100644 index 0000000..15a1a45 --- /dev/null +++ b/flash_decompiled/watchdog/CompassAsset.as @@ -0,0 +1,15 @@ +package { + import flash.display.*; + + public dynamic class CompassAsset extends MovieClip { + + public var left:MovieClip; + public var more:MovieClip; + public var min:MovieClip; + public var north:MovieClip; + public var right:MovieClip; + public var topView:MovieClip; + public var less:MovieClip; + + } +}//package diff --git a/flash_decompiled/watchdog/ControlsAsset.as b/flash_decompiled/watchdog/ControlsAsset.as new file mode 100644 index 0000000..5cdab5f --- /dev/null +++ b/flash_decompiled/watchdog/ControlsAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ControlsAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/CrossAsset.as b/flash_decompiled/watchdog/CrossAsset.as new file mode 100644 index 0000000..8a12fd4 --- /dev/null +++ b/flash_decompiled/watchdog/CrossAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class CrossAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/DistrictPanelInfoBubbleCloseAsset.as b/flash_decompiled/watchdog/DistrictPanelInfoBubbleCloseAsset.as new file mode 100644 index 0000000..1bd0c2e --- /dev/null +++ b/flash_decompiled/watchdog/DistrictPanelInfoBubbleCloseAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class DistrictPanelInfoBubbleCloseAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/DistrictPanelInfoBubbleEndAsset.as b/flash_decompiled/watchdog/DistrictPanelInfoBubbleEndAsset.as new file mode 100644 index 0000000..5d45e5f --- /dev/null +++ b/flash_decompiled/watchdog/DistrictPanelInfoBubbleEndAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class DistrictPanelInfoBubbleEndAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/DistrictPanelInfoBubbleStartAsset.as b/flash_decompiled/watchdog/DistrictPanelInfoBubbleStartAsset.as new file mode 100644 index 0000000..e459621 --- /dev/null +++ b/flash_decompiled/watchdog/DistrictPanelInfoBubbleStartAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class DistrictPanelInfoBubbleStartAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/DropListArrowAsset.as b/flash_decompiled/watchdog/DropListArrowAsset.as new file mode 100644 index 0000000..57ba461 --- /dev/null +++ b/flash_decompiled/watchdog/DropListArrowAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class DropListArrowAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/ElectroPopinIconAsset.as b/flash_decompiled/watchdog/ElectroPopinIconAsset.as new file mode 100644 index 0000000..be6e560 --- /dev/null +++ b/flash_decompiled/watchdog/ElectroPopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ElectroPopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FacebookFAsset.as b/flash_decompiled/watchdog/FacebookFAsset.as new file mode 100644 index 0000000..b2d3283 --- /dev/null +++ b/flash_decompiled/watchdog/FacebookFAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FacebookFAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagDEdeAsset.as b/flash_decompiled/watchdog/FlagDEdeAsset.as new file mode 100644 index 0000000..95bdb7f --- /dev/null +++ b/flash_decompiled/watchdog/FlagDEdeAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagDEdeAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagENenAsset.as b/flash_decompiled/watchdog/FlagENenAsset.as new file mode 100644 index 0000000..d6bb8a1 --- /dev/null +++ b/flash_decompiled/watchdog/FlagENenAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagENenAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagESesAsset.as b/flash_decompiled/watchdog/FlagESesAsset.as new file mode 100644 index 0000000..e411edf --- /dev/null +++ b/flash_decompiled/watchdog/FlagESesAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagESesAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagFRfrAsset.as b/flash_decompiled/watchdog/FlagFRfrAsset.as new file mode 100644 index 0000000..0e2cbe0 --- /dev/null +++ b/flash_decompiled/watchdog/FlagFRfrAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagFRfrAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagITitAsset.as b/flash_decompiled/watchdog/FlagITitAsset.as new file mode 100644 index 0000000..d29f085 --- /dev/null +++ b/flash_decompiled/watchdog/FlagITitAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagITitAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagJPjpAsset.as b/flash_decompiled/watchdog/FlagJPjpAsset.as new file mode 100644 index 0000000..e47e089 --- /dev/null +++ b/flash_decompiled/watchdog/FlagJPjpAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagJPjpAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagNLnlAsset.as b/flash_decompiled/watchdog/FlagNLnlAsset.as new file mode 100644 index 0000000..ab97eae --- /dev/null +++ b/flash_decompiled/watchdog/FlagNLnlAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagNLnlAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagPLplAsset.as b/flash_decompiled/watchdog/FlagPLplAsset.as new file mode 100644 index 0000000..56e7e01 --- /dev/null +++ b/flash_decompiled/watchdog/FlagPLplAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagPLplAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagRUruAsset.as b/flash_decompiled/watchdog/FlagRUruAsset.as new file mode 100644 index 0000000..f40e1e5 --- /dev/null +++ b/flash_decompiled/watchdog/FlagRUruAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagRUruAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlagSWswAsset.as b/flash_decompiled/watchdog/FlagSWswAsset.as new file mode 100644 index 0000000..6fad807 --- /dev/null +++ b/flash_decompiled/watchdog/FlagSWswAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlagSWswAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FlickRPopinIconAsset.as b/flash_decompiled/watchdog/FlickRPopinIconAsset.as new file mode 100644 index 0000000..2b4b2b8 --- /dev/null +++ b/flash_decompiled/watchdog/FlickRPopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FlickRPopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FooterLogoAsset.as b/flash_decompiled/watchdog/FooterLogoAsset.as new file mode 100644 index 0000000..5f09c12 --- /dev/null +++ b/flash_decompiled/watchdog/FooterLogoAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FooterLogoAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FoursquarePopinIcon2Asset.as b/flash_decompiled/watchdog/FoursquarePopinIcon2Asset.as new file mode 100644 index 0000000..043104d --- /dev/null +++ b/flash_decompiled/watchdog/FoursquarePopinIcon2Asset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FoursquarePopinIcon2Asset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FoursquarePopinIconAsset.as b/flash_decompiled/watchdog/FoursquarePopinIconAsset.as new file mode 100644 index 0000000..616d976 --- /dev/null +++ b/flash_decompiled/watchdog/FoursquarePopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FoursquarePopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FoursquarePopinMayorIcon.as b/flash_decompiled/watchdog/FoursquarePopinMayorIcon.as new file mode 100644 index 0000000..2463939 --- /dev/null +++ b/flash_decompiled/watchdog/FoursquarePopinMayorIcon.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FoursquarePopinMayorIcon extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/FullscreenBtnAsset.as b/flash_decompiled/watchdog/FullscreenBtnAsset.as new file mode 100644 index 0000000..a8b3471 --- /dev/null +++ b/flash_decompiled/watchdog/FullscreenBtnAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class FullscreenBtnAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/HelpPopinContent.as b/flash_decompiled/watchdog/HelpPopinContent.as new file mode 100644 index 0000000..7914f04 --- /dev/null +++ b/flash_decompiled/watchdog/HelpPopinContent.as @@ -0,0 +1,20 @@ +package { + import flash.display.*; + + public dynamic class HelpPopinContent extends MovieClip { + + public var scrollbar:ScrollBar; + public var masque:mcMaskHelp; + public var contenu:help_content; + + public function HelpPopinContent(){ + addFrameScript(0, this.frame1); + } + function frame1(){ + this.masque.cacheAsBitmap = true; + this.contenu.cacheAsBitmap = true; + this.contenu.mask = this.masque; + } + + } +}//package diff --git a/flash_decompiled/watchdog/Help_1_asset.as b/flash_decompiled/watchdog/Help_1_asset.as new file mode 100644 index 0000000..25b3352 --- /dev/null +++ b/flash_decompiled/watchdog/Help_1_asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class Help_1_asset extends BitmapData { + + public function Help_1_asset(_arg1:int=206, _arg2:int=86){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/Help_2_asset.as b/flash_decompiled/watchdog/Help_2_asset.as new file mode 100644 index 0000000..80e4c16 --- /dev/null +++ b/flash_decompiled/watchdog/Help_2_asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class Help_2_asset extends BitmapData { + + public function Help_2_asset(_arg1:int=130, _arg2:int=51){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/Help_3_asset.as b/flash_decompiled/watchdog/Help_3_asset.as new file mode 100644 index 0000000..713aae2 --- /dev/null +++ b/flash_decompiled/watchdog/Help_3_asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class Help_3_asset extends BitmapData { + + public function Help_3_asset(_arg1:int=94, _arg2:int=94){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/InstagramPopinCommentAsset.as b/flash_decompiled/watchdog/InstagramPopinCommentAsset.as new file mode 100644 index 0000000..e8d425c --- /dev/null +++ b/flash_decompiled/watchdog/InstagramPopinCommentAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class InstagramPopinCommentAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/InstagramPopinIconAsset.as b/flash_decompiled/watchdog/InstagramPopinIconAsset.as new file mode 100644 index 0000000..1b1469b --- /dev/null +++ b/flash_decompiled/watchdog/InstagramPopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class InstagramPopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/InstagramPopinLikeAsset.as b/flash_decompiled/watchdog/InstagramPopinLikeAsset.as new file mode 100644 index 0000000..4e09fee --- /dev/null +++ b/flash_decompiled/watchdog/InstagramPopinLikeAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class InstagramPopinLikeAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/InstagramPopinLocAsset.as b/flash_decompiled/watchdog/InstagramPopinLocAsset.as new file mode 100644 index 0000000..59998c2 --- /dev/null +++ b/flash_decompiled/watchdog/InstagramPopinLocAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class InstagramPopinLocAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/Main.as b/flash_decompiled/watchdog/Main.as new file mode 100644 index 0000000..189f497 --- /dev/null +++ b/flash_decompiled/watchdog/Main.as @@ -0,0 +1,157 @@ +package { + import wd.sound.*; + import wd.providers.*; + import wd.core.*; + import wd.d3.geom.monuments.*; + import flash.events.*; + import flash.display.*; + import wd.utils.*; + import wd.d3.*; + import wd.footer.*; + import wd.hud.*; + import wd.intro.*; + import wd.events.*; + import wd.d3.control.*; + import aze.motion.*; + import wd.hud.items.*; + + public class Main extends MovieClip { + + public static var RENDER:String = "RENDER"; + + private var initialized:Boolean; + public var footer:Footer; + public var simulation:Simulation; + public var hud:Hud; + public var intro:Intro; + + public function Main(){ + super(); + SoundManager.init(); + new MetroLineColors(Config.city_xml.metroLineColors.line); + MonumentsProvider.setMeshData(Config.city_xml.monuments, Config.CITY); + if (stage == null){ + addEventListener(Event.ADDED_TO_STAGE, this.onAdded); + } else { + this.initialize(); + }; + } + private function onAdded(e:Event):void{ + stage.stageFocusRect = false; + removeEventListener(Event.ADDED_TO_STAGE, this.onAdded); + this.initialize(); + } + private function initialize():void{ + stage.scaleMode = StageScaleMode.NO_SCALE; + stage.align = StageAlign.TOP_LEFT; + if (Config.STARTING_PLACE != null){ + Locator.STARTING_PLACE = Config.STARTING_PLACE; + }; + new Locator(Config.CITY, Config.WORLD_RECT, Config.WORLD_SCALE); + AppState.isHQ = SharedData.isHq; + this.simulation = new Simulation(); + this.simulation.addEventListener(Simulation.CONTEXT_READY, this.mapContextReady, false, 0, true); + addChild(this.simulation); + } + protected function mapContextReady(event:Event):void{ + this.footer = new Footer(this); + this.hud = new Hud(this.simulation, this.footer); + this.intro = new Intro(this); + this.intro.addEventListener(NavigatorEvent.INTRO_SHOW, this.showIntro); + this.intro.addEventListener(NavigatorEvent.INTRO_HIDE, this.hideIntro); + this.intro.addEventListener(NavigatorEvent.INTRO_HIDDEN, this.onIntroHidden); + this.intro.addEventListener(NavigatorEvent.INTRO_VISIBLE, this.onIntroVisible); + addChild(this.intro); + addChild(this.hud); + addChild(this.footer); + this.simulation.alpha = (this.hud.alpha = 0); + this.simulation.visible = (this.hud.visible = false); + this.simulation.controller.addEventListener(NavigatorEvent.INTRO_SHOW, this.showIntro); + this.simulation.controller.addEventListener(NavigatorEvent.INTRO_HIDE, this.hideIntro); + new Keys(this, this.hud, this.simulation, stage); + stage.addEventListener(Event.RESIZE, this.onResize); + this.onResize(null); + } + private function hideIntro(e:NavigatorEvent):void{ + CameraController.forceLocation(); + CameraController.locked = true; + this.intro.hide(); + this.start(); + } + private function onIntroHidden(e:NavigatorEvent):void{ + trace("Main.onHidden"); + this.intro.visible = false; + this.initialized = true; + eaze(this.hud).to(1, {alpha:1}).onComplete(this.hud.start); + this.hud.visible = true; + CameraController.instance.zoomLevel = 0; + CameraController.locked = false; + } + private function showIntro(e:NavigatorEvent):void{ + Tracker.hide(); + this.intro.show(); + this.intro.storeLocation(); + CameraController.locked = true; + eaze(this.hud).to(1, {alpha:0}); + } + private function onIntroVisible(e:NavigatorEvent):void{ + this.pause(); + this.footer.showIntroItems(); + CameraController.locked = false; + } + public function start():void{ + trace("START"); + if (!(hasEventListener(Event.ENTER_FRAME))){ + this.initialized = true; + this.simulation.visible = true; + this.onResize(null); + this.simulation.navigation.reset(); + this.simulation.location.reset(); + this.simulation.start(); + this.footer.showAllItems(); + addEventListener(Event.ENTER_FRAME, this.oef); + }; + Tracker.show(); + } + public function pause():void{ + removeEventListener(Event.ENTER_FRAME, this.oef); + this.hud.pause(); + this.simulation.pause(); + } + public function oef(e:Event):void{ + this.update(); + this.render(); + } + private function update():void{ + this.simulation.update(); + this.hud.update(); + } + public function render():void{ + this.simulation.stage3DProxy.clear(); + this.simulation.render(); + this.hud.render(); + this.simulation.stage3DProxy.present(); + } + public function onResize(e:Event=null):void{ + this.footer.resize(stage.stageWidth, stage.stageHeight); + if (this.initialized){ + this.simulation.resize(); + this.hud.resize(); + }; + this.intro.resize(); + } + public function onCityChange(e:Event):void{ + this.disposeView(); + this.resetView(); + } + private function resetView():void{ + this.simulation.reset(); + this.hud.reset(); + } + private function disposeView():void{ + this.simulation.dispose(); + this.hud.dispose(); + } + + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine10Asset.as b/flash_decompiled/watchdog/MetroLine10Asset.as new file mode 100644 index 0000000..a19f822 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine10Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine10Asset extends BitmapData { + + public function MetroLine10Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine11Asset.as b/flash_decompiled/watchdog/MetroLine11Asset.as new file mode 100644 index 0000000..e284bbe --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine11Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine11Asset extends BitmapData { + + public function MetroLine11Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine12Asset.as b/flash_decompiled/watchdog/MetroLine12Asset.as new file mode 100644 index 0000000..25a5fe2 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine12Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine12Asset extends BitmapData { + + public function MetroLine12Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine13Asset.as b/flash_decompiled/watchdog/MetroLine13Asset.as new file mode 100644 index 0000000..87caca9 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine13Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine13Asset extends BitmapData { + + public function MetroLine13Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine14Asset.as b/flash_decompiled/watchdog/MetroLine14Asset.as new file mode 100644 index 0000000..dbdd79e --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine14Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine14Asset extends BitmapData { + + public function MetroLine14Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine1Asset.as b/flash_decompiled/watchdog/MetroLine1Asset.as new file mode 100644 index 0000000..7210fac --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine1Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine1Asset extends BitmapData { + + public function MetroLine1Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine2Asset.as b/flash_decompiled/watchdog/MetroLine2Asset.as new file mode 100644 index 0000000..9006074 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine2Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine2Asset extends BitmapData { + + public function MetroLine2Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine3Asset.as b/flash_decompiled/watchdog/MetroLine3Asset.as new file mode 100644 index 0000000..c67c9dc --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine3Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine3Asset extends BitmapData { + + public function MetroLine3Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine3BISAsset.as b/flash_decompiled/watchdog/MetroLine3BISAsset.as new file mode 100644 index 0000000..188aef1 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine3BISAsset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine3BISAsset extends BitmapData { + + public function MetroLine3BISAsset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine4Asset.as b/flash_decompiled/watchdog/MetroLine4Asset.as new file mode 100644 index 0000000..bcafe82 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine4Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine4Asset extends BitmapData { + + public function MetroLine4Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine5Asset.as b/flash_decompiled/watchdog/MetroLine5Asset.as new file mode 100644 index 0000000..9637548 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine5Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine5Asset extends BitmapData { + + public function MetroLine5Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine6Asset.as b/flash_decompiled/watchdog/MetroLine6Asset.as new file mode 100644 index 0000000..c64465b --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine6Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine6Asset extends BitmapData { + + public function MetroLine6Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine7Asset.as b/flash_decompiled/watchdog/MetroLine7Asset.as new file mode 100644 index 0000000..e642740 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine7Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine7Asset extends BitmapData { + + public function MetroLine7Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine7BISAsset.as b/flash_decompiled/watchdog/MetroLine7BISAsset.as new file mode 100644 index 0000000..ff9f424 --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine7BISAsset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine7BISAsset extends BitmapData { + + public function MetroLine7BISAsset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine8Asset.as b/flash_decompiled/watchdog/MetroLine8Asset.as new file mode 100644 index 0000000..3df949a --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine8Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine8Asset extends BitmapData { + + public function MetroLine8Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MetroLine9Asset.as b/flash_decompiled/watchdog/MetroLine9Asset.as new file mode 100644 index 0000000..002d9bd --- /dev/null +++ b/flash_decompiled/watchdog/MetroLine9Asset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class MetroLine9Asset extends BitmapData { + + public function MetroLine9Asset(_arg1:int=30, _arg2:int=30){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/MiniLoaderAsset.as b/flash_decompiled/watchdog/MiniLoaderAsset.as new file mode 100644 index 0000000..4b10e82 --- /dev/null +++ b/flash_decompiled/watchdog/MiniLoaderAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class MiniLoaderAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/MobilePopinIconAsset.as b/flash_decompiled/watchdog/MobilePopinIconAsset.as new file mode 100644 index 0000000..b396c54 --- /dev/null +++ b/flash_decompiled/watchdog/MobilePopinIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class MobilePopinIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/Preloader.as b/flash_decompiled/watchdog/Preloader.as new file mode 100644 index 0000000..ad8e575 --- /dev/null +++ b/flash_decompiled/watchdog/Preloader.as @@ -0,0 +1,172 @@ +package { + import flash.display.*; + import wd.utils.*; + import wd.core.*; + import wd.http.*; + import wd.events.*; + import flash.events.*; + import wd.providers.texts.*; + import wd.loaderAnim.*; + import aze.motion.*; + import flash.net.*; + import wd.hud.common.text.*; + import flash.utils.*; + + public class Preloader extends MovieClip { + + private var textProvider:TextProvider; + private var fontLoader:URLLoader; + private var fontsLoaded:Boolean = false; + private var cfg:Config; + private var token:String; + private var preloadClip:PreloaderWD; + private var tc:TokenChecker; + private var loadingProfile:String; + private var agent:String; + + public function Preloader(){ + super(); + if (stage){ + stage.scaleMode = StageScaleMode.NO_SCALE; + stage.align = StageAlign.TOP_LEFT; + }; + this.token = loaderInfo.parameters["ticket"]; + this.loadingProfile = ((loaderInfo.parameters["profile"]) || ("average")); + this.agent = ((loaderInfo.parameters["agent"]) || ("")); + var locale:String = loaderInfo.parameters["locale"]; + if ((((((loaderInfo.parameters["locale"] == undefined)) || ((locale == null)))) || ((locale == "")))){ + locale = "fr-FR"; + }; + var city:String = loaderInfo.parameters["city"]; + if ((((((loaderInfo.parameters["city"] == undefined)) || ((city == null)))) || ((city == "")))){ + city = Locator.PARIS; + }; + var lon:Number = parseFloat(loaderInfo.parameters["place_lon"]); + if ((((loaderInfo.parameters["place_lon"] == undefined)) || ((lon == 0)))){ + lon = NaN; + }; + var lat:Number = parseFloat(loaderInfo.parameters["place_lat"]); + if ((((loaderInfo.parameters["place_lat"] == undefined)) || ((lat == 0)))){ + lat = NaN; + }; + var name:String = loaderInfo.parameters["place_name"]; + if ((((((loaderInfo.parameters["place_name"] == undefined)) || ((name == null)))) || ((name == "")))){ + name = ""; + }; + if (((!(isNaN(lon))) && (!(isNaN(lat))))){ + Config.STARTING_PLACE = new Place(name, lon, lat); + }; + var state:uint = (((loaderInfo.parameters["app_state"] == null)) ? DataType.METRO_STATIONS : loaderInfo.parameters["app_state"]); + new AppState(state); + AppState.activate(DataType.TRAINS); + this.cfg = new Config(city, locale, this.loadingProfile, this.agent); + this.cfg.addEventListener(LoadingEvent.CONFIG_COMPLETE, this.onConfigLoaded); + this.cfg.addEventListener(IOErrorEvent.IO_ERROR, this.ioError); + URLFormater.setData({ + lat:lat, + long:lon, + appState:state, + place:name, + city:city, + locale:locale + }); + this.cfg.load(); + } + private function onConfigLoaded(e:LoadingEvent):void{ + if (Config.DEBUG){ + trace("config XML loaded"); + }; + this.cfg.removeEventListener(LoadingEvent.CONFIG_COMPLETE, this.onConfigLoaded); + this.tc = new TokenChecker(); + this.tc.addEventListener(ServiceEvent.TOKEN_VALID, this.onTokenChecked); + if (((!((this.token == ""))) && (!((this.token == null))))){ + this.tc.load(this.token); + } else { + this.tc.load(Config.TOKEN); + }; + } + private function onTokenChecked(e:ServiceEvent=null):void{ + this.tc.removeEventListener(ServiceEvent.TOKEN_VALID, this.onTokenChecked); + this.cfg.addEventListener(LoadingEvent.CITY_COMPLETE, this.onCityLoaded); + this.cfg.loadCity(); + } + private function onCityLoaded(e:LoadingEvent):void{ + if (Config.DEBUG){ + trace("CITY loaded"); + }; + this.cfg.removeEventListener(LoadingEvent.CITY_COMPLETE, this.onCityLoaded); + this.textProvider = new TextProvider(); + this.textProvider.addEventListener(Event.COMPLETE, this.onTextComplete); + this.textProvider.resetLanguage(); + } + private function onTextComplete(e:Event):void{ + if (Config.DEBUG){ + trace("text XML loaded"); + }; + this.textProvider.removeEventListener(Event.COMPLETE, this.onTextComplete); + this.preloadClip = new PreloaderWD(); + this.preloadClip.alpha = 0; + addChild(this.preloadClip); + this.preloadClip.addEventListener(Event.RESIZE, this.onResize); + this.onResize(null); + eaze(this.preloadClip).to(1, {alpha:1}); + addEventListener(Event.ENTER_FRAME, this.checkFrame); + loaderInfo.addEventListener(ProgressEvent.PROGRESS, this.progress); + loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.ioError); + trace(("Config.FONTS_FILE : " + Config.FONTS_FILE)); + if (Config.FONTS_FILE != "system"){ + this.fontLoader = new URLLoader(); + this.fontLoader.dataFormat = "binary"; + this.fontLoader.addEventListener(ProgressEvent.PROGRESS, this.progress); + this.fontLoader.addEventListener(IOErrorEvent.IO_ERROR, this.ioError); + this.fontLoader.addEventListener(Event.COMPLETE, this.fontsLoadCompleteHandler); + this.fontLoader.load(new URLRequest(("assets/fonts/" + Config.FONTS_FILE))); + } else { + this.fontsLoaded = true; + CustomTextField.embedFonts = false; + }; + } + private function onResize(e:Event):void{ + this.preloadClip.x = (stage.stageWidth * 0.5); + this.preloadClip.y = (stage.stageHeight * 0.5); + } + private function fontsLoadCompleteHandler(e:Event):void{ + var ld:Loader = new Loader(); + ld.loadBytes(e.target.data); + ld.contentLoaderInfo.addEventListener(Event.INIT, this.fontsInit); + } + private function fontsInit(e:Event):void{ + this.fontsLoaded = true; + } + private function ioError(e:IOErrorEvent):void{ + trace(e.text); + } + private function progress(e:ProgressEvent):void{ + var ratio:Number; + if (Config.FONTS_FILE == "system"){ + ratio = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal); + } else { + ratio = ((loaderInfo.bytesLoaded + this.fontLoader.bytesLoaded) / (loaderInfo.bytesTotal + this.fontLoader.bytesTotal)); + }; + this.preloadClip.onProgress((ratio * 100)); + } + private function checkFrame(e:Event):void{ + if ((((currentFrame == totalFrames)) && (this.fontsLoaded))){ + stop(); + removeEventListener(Event.ENTER_FRAME, this.checkFrame); + eaze(this.preloadClip).to(1, {alpha:0}).onComplete(this.loadingFinished); + }; + this.onResize(e); + } + private function loadingFinished():void{ + loaderInfo.removeEventListener(ProgressEvent.PROGRESS, this.progress); + loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, this.ioError); + this.startup(); + } + private function startup():void{ + var mainClass:Class = (getDefinitionByName("Main") as Class); + addChild((new (mainClass)() as DisplayObject)); + } + + } +}//package diff --git a/flash_decompiled/watchdog/PreloaderClip.as b/flash_decompiled/watchdog/PreloaderClip.as new file mode 100644 index 0000000..78a1368 --- /dev/null +++ b/flash_decompiled/watchdog/PreloaderClip.as @@ -0,0 +1,13 @@ +package { + import flash.display.*; + + public dynamic class PreloaderClip extends MovieClip { + + public var mcWAD:mcLineWAD; + public var mcLines:MovieClip; + public var mcMask:MovieClip; + public var mcMaskLines:mcMaskAlpha; + public var mcProgress:MovieClip; + + } +}//package diff --git a/flash_decompiled/watchdog/RayPatternAsset.as b/flash_decompiled/watchdog/RayPatternAsset.as new file mode 100644 index 0000000..6c7de25 --- /dev/null +++ b/flash_decompiled/watchdog/RayPatternAsset.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class RayPatternAsset extends BitmapData { + + public function RayPatternAsset(_arg1:int=7, _arg2:int=7){ + super(_arg1, _arg2); + } + } +}//package diff --git a/flash_decompiled/watchdog/ScrollBar.as b/flash_decompiled/watchdog/ScrollBar.as new file mode 100644 index 0000000..f0c8e56 --- /dev/null +++ b/flash_decompiled/watchdog/ScrollBar.as @@ -0,0 +1,10 @@ +package { + import flash.display.*; + + public dynamic class ScrollBar extends MovieClip { + + public var carret:mcScrollCarret; + public var bg:scrolbar_bg; + + } +}//package diff --git a/flash_decompiled/watchdog/SearchIconAsset.as b/flash_decompiled/watchdog/SearchIconAsset.as new file mode 100644 index 0000000..e3d387f --- /dev/null +++ b/flash_decompiled/watchdog/SearchIconAsset.as @@ -0,0 +1,12 @@ +package { + import flash.display.*; + + public dynamic class SearchIconAsset extends MovieClip { + + public var barRou:MovieClip; + public var barRov:MovieClip; + public var iconRou:MovieClip; + public var iconRov:MovieClip; + + } +}//package diff --git a/flash_decompiled/watchdog/ShareIconFbAsset.as b/flash_decompiled/watchdog/ShareIconFbAsset.as new file mode 100644 index 0000000..c3316a7 --- /dev/null +++ b/flash_decompiled/watchdog/ShareIconFbAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ShareIconFbAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/ShareIconGplusAsset.as b/flash_decompiled/watchdog/ShareIconGplusAsset.as new file mode 100644 index 0000000..adbeb44 --- /dev/null +++ b/flash_decompiled/watchdog/ShareIconGplusAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ShareIconGplusAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/ShareIconLinkAsset.as b/flash_decompiled/watchdog/ShareIconLinkAsset.as new file mode 100644 index 0000000..6cecbe1 --- /dev/null +++ b/flash_decompiled/watchdog/ShareIconLinkAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ShareIconLinkAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/ShareIconTwitterAsset.as b/flash_decompiled/watchdog/ShareIconTwitterAsset.as new file mode 100644 index 0000000..60fb4ab --- /dev/null +++ b/flash_decompiled/watchdog/ShareIconTwitterAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class ShareIconTwitterAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/SharePopinLinkAsset.as b/flash_decompiled/watchdog/SharePopinLinkAsset.as new file mode 100644 index 0000000..385246d --- /dev/null +++ b/flash_decompiled/watchdog/SharePopinLinkAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class SharePopinLinkAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/SoundBtnAsset.as b/flash_decompiled/watchdog/SoundBtnAsset.as new file mode 100644 index 0000000..53720d5 --- /dev/null +++ b/flash_decompiled/watchdog/SoundBtnAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class SoundBtnAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/TwitterBtnIconAsset.as b/flash_decompiled/watchdog/TwitterBtnIconAsset.as new file mode 100644 index 0000000..962fb4f --- /dev/null +++ b/flash_decompiled/watchdog/TwitterBtnIconAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class TwitterBtnIconAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/TwitterPopinIconFavAsset.as b/flash_decompiled/watchdog/TwitterPopinIconFavAsset.as new file mode 100644 index 0000000..09b64f7 --- /dev/null +++ b/flash_decompiled/watchdog/TwitterPopinIconFavAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class TwitterPopinIconFavAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/TwitterPopinIconReplyAsset.as b/flash_decompiled/watchdog/TwitterPopinIconReplyAsset.as new file mode 100644 index 0000000..d3bb2b8 --- /dev/null +++ b/flash_decompiled/watchdog/TwitterPopinIconReplyAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class TwitterPopinIconReplyAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/TwitterPopinIconRetAsset.as b/flash_decompiled/watchdog/TwitterPopinIconRetAsset.as new file mode 100644 index 0000000..240c1a6 --- /dev/null +++ b/flash_decompiled/watchdog/TwitterPopinIconRetAsset.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class TwitterPopinIconRetAsset extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/away3d/Away3D.as b/flash_decompiled/watchdog/away3d/Away3D.as new file mode 100644 index 0000000..3bdf538 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/Away3D.as @@ -0,0 +1,11 @@ +package away3d { + + public class Away3D { + + public static const WEBSITE_URL:String = "http://www.away3d.com"; + public static const MAJOR_VERSION:uint = 4; + public static const MINOR_VERSION:uint = 0; + public static const REVISION:uint = 6; + + } +}//package away3d diff --git a/flash_decompiled/watchdog/away3d/animators/IAnimationSet.as b/flash_decompiled/watchdog/away3d/animators/IAnimationSet.as new file mode 100644 index 0000000..e095814 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/IAnimationSet.as @@ -0,0 +1,19 @@ +package away3d.animators { + import __AS3__.vec.*; + import away3d.materials.passes.*; + import away3d.core.managers.*; + + public interface IAnimationSet { + + function get states():Vector.; + function hasState(_arg1:String):Boolean; + function getState(_arg1:String):IAnimationState; + function addState(_arg1:String, _arg2:IAnimationState):void; + function get usesCPU():Boolean; + function resetGPUCompatibility():void; + function getAGALVertexCode(_arg1:MaterialPassBase, _arg2:Array, _arg3:Array):String; + function activate(_arg1:Stage3DProxy, _arg2:MaterialPassBase):void; + function deactivate(_arg1:Stage3DProxy, _arg2:MaterialPassBase):void; + + } +}//package away3d.animators diff --git a/flash_decompiled/watchdog/away3d/animators/IAnimationState.as b/flash_decompiled/watchdog/away3d/animators/IAnimationState.as new file mode 100644 index 0000000..35d70eb --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/IAnimationState.as @@ -0,0 +1,14 @@ +package away3d.animators { + import away3d.animators.nodes.*; + + public interface IAnimationState { + + function get looping():Boolean; + function set looping(_arg1:Boolean):void; + function get rootNode():IAnimationNode; + function get stateName():String; + function reset(_arg1:int):void; + function addOwner(_arg1:IAnimationSet, _arg2:String):void; + + } +}//package away3d.animators diff --git a/flash_decompiled/watchdog/away3d/animators/IAnimator.as b/flash_decompiled/watchdog/away3d/animators/IAnimator.as new file mode 100644 index 0000000..b31bcc1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/IAnimator.as @@ -0,0 +1,28 @@ +package away3d.animators { + import away3d.animators.transitions.*; + import away3d.core.managers.*; + import away3d.core.base.*; + import away3d.materials.passes.*; + import away3d.entities.*; + + public interface IAnimator { + + function get animationSet():IAnimationSet; + function get activeState():IAnimationState; + function get autoUpdate():Boolean; + function set autoUpdate(_arg1:Boolean):void; + function get time():int; + function set time(_arg1:int):void; + function get playbackSpeed():Number; + function set playbackSpeed(_arg1:Number):void; + function play(_arg1:String, _arg2:StateTransitionBase=null):void; + function start():void; + function stop():void; + function update(_arg1:int):void; + function setRenderState(_arg1:Stage3DProxy, _arg2:IRenderable, _arg3:int, _arg4:int):void; + function testGPUCompatibility(_arg1:MaterialPassBase):void; + function addOwner(_arg1:Mesh):void; + function removeOwner(_arg1:Mesh):void; + + } +}//package away3d.animators diff --git a/flash_decompiled/watchdog/away3d/animators/data/JointPose.as b/flash_decompiled/watchdog/away3d/animators/data/JointPose.as new file mode 100644 index 0000000..d903a0a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/data/JointPose.as @@ -0,0 +1,35 @@ +package away3d.animators.data { + import flash.geom.*; + import away3d.core.math.*; + + public class JointPose { + + public var name:String; + public var orientation:Quaternion; + public var translation:Vector3D; + + public function JointPose(){ + this.orientation = new Quaternion(); + this.translation = new Vector3D(); + super(); + } + public function toMatrix3D(target:Matrix3D=null):Matrix3D{ + target = ((target) || (new Matrix3D())); + this.orientation.toMatrix3D(target); + target.appendTranslation(this.translation.x, this.translation.y, this.translation.z); + return (target); + } + public function copyFrom(pose:JointPose):void{ + var or:Quaternion = pose.orientation; + var tr:Vector3D = pose.translation; + this.orientation.x = or.x; + this.orientation.y = or.y; + this.orientation.z = or.z; + this.orientation.w = or.w; + this.translation.x = tr.x; + this.translation.y = tr.y; + this.translation.z = tr.z; + } + + } +}//package away3d.animators.data diff --git a/flash_decompiled/watchdog/away3d/animators/data/Skeleton.as b/flash_decompiled/watchdog/away3d/animators/data/Skeleton.as new file mode 100644 index 0000000..b577077 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/data/Skeleton.as @@ -0,0 +1,42 @@ +package away3d.animators.data { + import away3d.library.assets.*; + import __AS3__.vec.*; + + public class Skeleton extends NamedAssetBase implements IAsset { + + public var joints:Vector.; + + public function Skeleton(){ + super(); + this.joints = new Vector.(); + } + public function get numJoints():uint{ + return (this.joints.length); + } + public function jointFromName(jointName:String):SkeletonJoint{ + var jointIndex:int = this.jointIndexFromName(jointName); + if (jointIndex != -1){ + return (this.joints[jointIndex]); + }; + return (null); + } + public function jointIndexFromName(jointName:String):int{ + var jointIndex:int; + var joint:SkeletonJoint; + for each (joint in this.joints) { + if (joint.name == jointName){ + return (jointIndex); + }; + jointIndex++; + }; + return (-1); + } + public function dispose():void{ + this.joints.length = 0; + } + public function get assetType():String{ + return (AssetType.SKELETON); + } + + } +}//package away3d.animators.data diff --git a/flash_decompiled/watchdog/away3d/animators/data/SkeletonJoint.as b/flash_decompiled/watchdog/away3d/animators/data/SkeletonJoint.as new file mode 100644 index 0000000..83470cc --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/data/SkeletonJoint.as @@ -0,0 +1,14 @@ +package away3d.animators.data { + import __AS3__.vec.*; + + public class SkeletonJoint { + + public var parentIndex:int = -1; + public var name:String; + public var inverseBindPose:Vector.; + + public function SkeletonJoint(){ + super(); + } + } +}//package away3d.animators.data diff --git a/flash_decompiled/watchdog/away3d/animators/data/SkeletonPose.as b/flash_decompiled/watchdog/away3d/animators/data/SkeletonPose.as new file mode 100644 index 0000000..95f98fa --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/data/SkeletonPose.as @@ -0,0 +1,58 @@ +package away3d.animators.data { + import away3d.library.assets.*; + import __AS3__.vec.*; + + public class SkeletonPose extends NamedAssetBase implements IAsset { + + public var jointPoses:Vector.; + + public function SkeletonPose(){ + super(); + this.jointPoses = new Vector.(); + } + public function get numJointPoses():uint{ + return (this.jointPoses.length); + } + public function get assetType():String{ + return (AssetType.SKELETON_POSE); + } + public function jointPoseFromName(jointName:String):JointPose{ + var jointPoseIndex:int = this.jointPoseIndexFromName(jointName); + if (jointPoseIndex != -1){ + return (this.jointPoses[jointPoseIndex]); + }; + return (null); + } + public function jointPoseIndexFromName(jointName:String):int{ + var jointPoseIndex:int; + var jointPose:JointPose; + for each (jointPose in this.jointPoses) { + if (jointPose.name == jointName){ + return (jointPoseIndex); + }; + jointPoseIndex++; + }; + return (-1); + } + public function clone():SkeletonPose{ + var cloneJointPose:JointPose; + var thisJointPose:JointPose; + var clone:SkeletonPose = new SkeletonPose(); + var numJointPoses:uint = this.jointPoses.length; + var i:uint; + while (i < numJointPoses) { + cloneJointPose = new JointPose(); + thisJointPose = this.jointPoses[i]; + cloneJointPose.name = thisJointPose.name; + cloneJointPose.copyFrom(thisJointPose); + clone.jointPoses[i] = cloneJointPose; + i++; + }; + return (clone); + } + public function dispose():void{ + this.jointPoses.length = 0; + } + + } +}//package away3d.animators.data diff --git a/flash_decompiled/watchdog/away3d/animators/nodes/AnimationNodeBase.as b/flash_decompiled/watchdog/away3d/animators/nodes/AnimationNodeBase.as new file mode 100644 index 0000000..abe0185 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/nodes/AnimationNodeBase.as @@ -0,0 +1,68 @@ +package away3d.animators.nodes { + import flash.geom.*; + import away3d.library.assets.*; + import away3d.errors.*; + + public class AnimationNodeBase extends NamedAssetBase implements IAsset { + + private var _startTime:int = 0; + protected var _time:int; + protected var _totalDuration:uint = 0; + protected var _rootDelta:Vector3D; + protected var _rootDeltaDirty:Boolean = true; + protected var _looping:Boolean = true; + + public function AnimationNodeBase(){ + this._rootDelta = new Vector3D(); + super(); + } + public function get looping():Boolean{ + return (this._looping); + } + public function set looping(value:Boolean):void{ + if (this._looping == value){ + return; + }; + this._looping = value; + this.updateLooping(); + } + public function get rootDelta():Vector3D{ + if (this._rootDeltaDirty){ + this.updateRootDelta(); + }; + return (this._rootDelta); + } + public function reset(time:int):void{ + if (!(this._looping)){ + this._startTime = time; + }; + this.update(time); + this.updateRootDelta(); + } + public function update(time:int):void{ + if (((!(this._looping)) && ((time > (this._startTime + this._totalDuration))))){ + time = (this._startTime + this._totalDuration); + }; + if (this._time == (time - this._startTime)){ + return; + }; + this.updateTime((time - this._startTime)); + } + public function dispose():void{ + } + public function get assetType():String{ + return (AssetType.ANIMATION_NODE); + } + protected function updateRootDelta():void{ + throw (new AbstractMethodError()); + } + protected function updateTime(time:int):void{ + this._time = time; + this._rootDeltaDirty = true; + } + protected function updateLooping():void{ + this.updateTime(this._time); + } + + } +}//package away3d.animators.nodes diff --git a/flash_decompiled/watchdog/away3d/animators/nodes/IAnimationNode.as b/flash_decompiled/watchdog/away3d/animators/nodes/IAnimationNode.as new file mode 100644 index 0000000..a24c246 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/nodes/IAnimationNode.as @@ -0,0 +1,14 @@ +package away3d.animators.nodes { + import flash.geom.*; + import flash.events.*; + + public interface IAnimationNode extends IEventDispatcher { + + function get looping():Boolean; + function set looping(_arg1:Boolean):void; + function get rootDelta():Vector3D; + function update(_arg1:int):void; + function reset(_arg1:int):void; + + } +}//package away3d.animators.nodes diff --git a/flash_decompiled/watchdog/away3d/animators/nodes/ISkeletonAnimationNode.as b/flash_decompiled/watchdog/away3d/animators/nodes/ISkeletonAnimationNode.as new file mode 100644 index 0000000..a783e83 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/nodes/ISkeletonAnimationNode.as @@ -0,0 +1,9 @@ +package away3d.animators.nodes { + import away3d.animators.data.*; + + public interface ISkeletonAnimationNode extends IAnimationNode { + + function getSkeletonPose(_arg1:Skeleton):SkeletonPose; + + } +}//package away3d.animators.nodes diff --git a/flash_decompiled/watchdog/away3d/animators/nodes/SkeletonBinaryLERPNode.as b/flash_decompiled/watchdog/away3d/animators/nodes/SkeletonBinaryLERPNode.as new file mode 100644 index 0000000..0dcbfb1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/nodes/SkeletonBinaryLERPNode.as @@ -0,0 +1,83 @@ +package away3d.animators.nodes { + import away3d.animators.data.*; + import flash.geom.*; + import __AS3__.vec.*; + + public class SkeletonBinaryLERPNode extends AnimationNodeBase implements ISkeletonAnimationNode { + + private var _blendWeight:Number = 0; + private var _skeletonPose:SkeletonPose; + private var _skeletonPoseDirty:Boolean = true; + public var inputA:ISkeletonAnimationNode; + public var inputB:ISkeletonAnimationNode; + + public function SkeletonBinaryLERPNode(){ + this._skeletonPose = new SkeletonPose(); + super(); + } + override public function reset(time:int):void{ + super.reset(time); + this.inputA.reset(time); + this.inputB.reset(time); + } + public function getSkeletonPose(skeleton:Skeleton):SkeletonPose{ + if (this._skeletonPoseDirty){ + this.updateSkeletonPose(skeleton); + }; + return (this._skeletonPose); + } + public function get blendWeight():Number{ + return (this._blendWeight); + } + public function set blendWeight(value:Number):void{ + this._blendWeight = value; + _rootDeltaDirty = true; + this._skeletonPoseDirty = true; + } + protected function updateSkeletonPose(skeleton:Skeleton):void{ + var endPose:JointPose; + var pose1:JointPose; + var pose2:JointPose; + var p1:Vector3D; + var p2:Vector3D; + var tr:Vector3D; + this._skeletonPoseDirty = false; + var endPoses:Vector. = this._skeletonPose.jointPoses; + var poses1:Vector. = this.inputA.getSkeletonPose(skeleton).jointPoses; + var poses2:Vector. = this.inputB.getSkeletonPose(skeleton).jointPoses; + var numJoints:uint = skeleton.numJoints; + if (endPoses.length != numJoints){ + endPoses.length = numJoints; + }; + var i:uint; + while (i < numJoints) { + endPose = (endPoses[i] = ((endPoses[i]) || (new JointPose()))); + pose1 = poses1[i]; + pose2 = poses2[i]; + p1 = pose1.translation; + p2 = pose2.translation; + endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._blendWeight); + tr = endPose.translation; + tr.x = (p1.x + (this._blendWeight * (p2.x - p1.x))); + tr.y = (p1.y + (this._blendWeight * (p2.y - p1.y))); + tr.z = (p1.z + (this._blendWeight * (p2.z - p1.z))); + i++; + }; + } + override protected function updateTime(time:int):void{ + super.updateTime(time); + this.inputA.update(time); + this.inputB.update(time); + this._skeletonPoseDirty = true; + } + override protected function updateRootDelta():void{ + _rootDeltaDirty = false; + var deltA:Vector3D = this.inputA.rootDelta; + var deltB:Vector3D = this.inputB.rootDelta; + _rootDelta.x = (deltA.x + (this._blendWeight * (deltB.x - deltA.x))); + _rootDelta.y = (deltA.y + (this._blendWeight * (deltB.y - deltA.y))); + _rootDelta.z = (deltA.z + (this._blendWeight * (deltB.z - deltA.z))); + } + + } +}//package away3d.animators.nodes diff --git a/flash_decompiled/watchdog/away3d/animators/transitions/StateTransitionBase.as b/flash_decompiled/watchdog/away3d/animators/transitions/StateTransitionBase.as new file mode 100644 index 0000000..d2a0c37 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/animators/transitions/StateTransitionBase.as @@ -0,0 +1,72 @@ +package away3d.animators.transitions { + import away3d.animators.nodes.*; + import away3d.library.assets.*; + import away3d.events.*; + + public class StateTransitionBase extends NamedAssetBase implements IAsset { + + private var _stateTransitionComplete:StateTransitionEvent; + private var _blendWeight:Number; + protected var _rootNode:SkeletonBinaryLERPNode; + public var startTime:Number = 0; + public var blendSpeed:Number = 0.5; + + public function StateTransitionBase(){ + super(); + } + public function get rootNode():SkeletonBinaryLERPNode{ + return (this._rootNode); + } + public function get blendWeight():Number{ + return (this._blendWeight); + } + public function set blendWeight(value:Number):void{ + if (this._blendWeight == value){ + return; + }; + this._blendWeight = value; + this._rootNode.blendWeight = value; + } + public function get startNode():ISkeletonAnimationNode{ + return (this._rootNode.inputA); + } + public function set startNode(value:ISkeletonAnimationNode):void{ + if (this._rootNode.inputA == value){ + return; + }; + this._rootNode.inputA = value; + } + public function get endNode():ISkeletonAnimationNode{ + return (this._rootNode.inputB); + } + public function set endNode(value:ISkeletonAnimationNode):void{ + if (this._rootNode.inputB == value){ + return; + }; + this._rootNode.inputB = value; + } + public function get assetType():String{ + return (AssetType.STATE_TRANSITION); + } + public function update(time:Number):void{ + this._blendWeight = (this._rootNode.blendWeight = (Math.abs((time - this.startTime)) / (1000 * this.blendSpeed))); + this._rootNode.update(time); + if (this._blendWeight >= 1){ + this._blendWeight = 1; + dispatchEvent(((this._stateTransitionComplete) || ((this._stateTransitionComplete = new StateTransitionEvent(StateTransitionEvent.TRANSITION_COMPLETE))))); + }; + } + public function dispose():void{ + } + public function clone(object:StateTransitionBase=null):StateTransitionBase{ + var stateTransition:StateTransitionBase = ((object) || (new StateTransitionBase())); + stateTransition.startTime = this.startTime; + stateTransition.blendSpeed = this.blendSpeed; + stateTransition.startNode = this.startNode; + stateTransition.endNode = this.endNode; + stateTransition.rootNode.blendWeight = this._rootNode.blendWeight; + return (stateTransition); + } + + } +}//package away3d.animators.transitions diff --git a/flash_decompiled/watchdog/away3d/arcane.as b/flash_decompiled/watchdog/away3d/arcane.as new file mode 100644 index 0000000..3c89730 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/arcane.as @@ -0,0 +1,4 @@ +package away3d { + + public namespace arcane; +}//package away3d diff --git a/flash_decompiled/watchdog/away3d/bounds/AxisAlignedBoundingBox.as b/flash_decompiled/watchdog/away3d/bounds/AxisAlignedBoundingBox.as new file mode 100644 index 0000000..7f8ddd2 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/bounds/AxisAlignedBoundingBox.as @@ -0,0 +1,335 @@ +package away3d.bounds { + import away3d.core.math.*; + import __AS3__.vec.*; + import away3d.core.pick.*; + import away3d.primitives.*; + import flash.geom.*; + + public class AxisAlignedBoundingBox extends BoundingVolumeBase { + + private var _centerX:Number = 0; + private var _centerY:Number = 0; + private var _centerZ:Number = 0; + private var _halfExtentsX:Number = 0; + private var _halfExtentsY:Number = 0; + private var _halfExtentsZ:Number = 0; + + public function AxisAlignedBoundingBox(){ + super(); + } + override public function nullify():void{ + super.nullify(); + this._centerX = (this._centerY = (this._centerZ = 0)); + this._halfExtentsX = (this._halfExtentsY = (this._halfExtentsZ = 0)); + } + override public function isInFrustum(mvpMatrix:Matrix3D):Boolean{ + var a:Number; + var b:Number; + var c:Number; + var d:Number; + var dd:Number; + var rr:Number; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + mvpMatrix.copyRawDataTo(raw); + var c11:Number = raw[uint(0)]; + var c12:Number = raw[uint(4)]; + var c13:Number = raw[uint(8)]; + var c14:Number = raw[uint(12)]; + var c21:Number = raw[uint(1)]; + var c22:Number = raw[uint(5)]; + var c23:Number = raw[uint(9)]; + var c24:Number = raw[uint(13)]; + var c31:Number = raw[uint(2)]; + var c32:Number = raw[uint(6)]; + var c33:Number = raw[uint(10)]; + var c34:Number = raw[uint(14)]; + var c41:Number = raw[uint(3)]; + var c42:Number = raw[uint(7)]; + var c43:Number = raw[uint(11)]; + var c44:Number = raw[uint(15)]; + a = (c41 + c11); + b = (c42 + c12); + c = (c43 + c13); + d = (c44 + c14); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c11); + b = (c42 - c12); + c = (c43 - c13); + d = (c44 - c14); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 + c21); + b = (c42 + c22); + c = (c43 + c23); + d = (c44 + c24); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c21); + b = (c42 - c22); + c = (c43 - c23); + d = (c44 - c24); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + a = c31; + b = c32; + c = c33; + d = c34; + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c31); + b = (c42 - c32); + c = (c43 - c33); + d = (c44 - c34); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a * this._halfExtentsX) + (b * this._halfExtentsY)) + (c * this._halfExtentsZ)); + if ((dd + rr) < -(d)){ + return (false); + }; + return (true); + } + override public function rayIntersection(position:Vector3D, direction:Vector3D, targetNormal:Vector3D):Number{ + var ix:Number; + var iy:Number; + var iz:Number; + var rayEntryDistance:Number; + var intersects:Boolean; + if (this.containsPoint(position)){ + return (0); + }; + var px:Number = (position.x - this._centerX); + var py:Number = (position.y - this._centerY); + var pz:Number = (position.z - this._centerZ); + var vx:Number = direction.x; + var vy:Number = direction.y; + var vz:Number = direction.z; + if (vx < 0){ + rayEntryDistance = ((this._halfExtentsX - px) / vx); + if (rayEntryDistance > 0){ + iy = (py + (rayEntryDistance * vy)); + iz = (pz + (rayEntryDistance * vz)); + if ((((((((iy > -(this._halfExtentsY))) && ((iy < this._halfExtentsY)))) && ((iz > -(this._halfExtentsZ))))) && ((iz < this._halfExtentsZ)))){ + targetNormal.x = 1; + targetNormal.y = 0; + targetNormal.z = 0; + intersects = true; + }; + }; + }; + if (((!(intersects)) && ((vx > 0)))){ + rayEntryDistance = ((-(this._halfExtentsX) - px) / vx); + if (rayEntryDistance > 0){ + iy = (py + (rayEntryDistance * vy)); + iz = (pz + (rayEntryDistance * vz)); + if ((((((((iy > -(this._halfExtentsY))) && ((iy < this._halfExtentsY)))) && ((iz > -(this._halfExtentsZ))))) && ((iz < this._halfExtentsZ)))){ + targetNormal.x = -1; + targetNormal.y = 0; + targetNormal.z = 0; + intersects = true; + }; + }; + }; + if (((!(intersects)) && ((vy < 0)))){ + rayEntryDistance = ((this._halfExtentsY - py) / vy); + if (rayEntryDistance > 0){ + ix = (px + (rayEntryDistance * vx)); + iz = (pz + (rayEntryDistance * vz)); + if ((((((((ix > -(this._halfExtentsX))) && ((ix < this._halfExtentsX)))) && ((iz > -(this._halfExtentsZ))))) && ((iz < this._halfExtentsZ)))){ + targetNormal.x = 0; + targetNormal.y = 1; + targetNormal.z = 0; + intersects = true; + }; + }; + }; + if (((!(intersects)) && ((vy > 0)))){ + rayEntryDistance = ((-(this._halfExtentsY) - py) / vy); + if (rayEntryDistance > 0){ + ix = (px + (rayEntryDistance * vx)); + iz = (pz + (rayEntryDistance * vz)); + if ((((((((ix > -(this._halfExtentsX))) && ((ix < this._halfExtentsX)))) && ((iz > -(this._halfExtentsZ))))) && ((iz < this._halfExtentsZ)))){ + targetNormal.x = 0; + targetNormal.y = -1; + targetNormal.z = 0; + intersects = true; + }; + }; + }; + if (((!(intersects)) && ((vz < 0)))){ + rayEntryDistance = ((this._halfExtentsZ - pz) / vz); + if (rayEntryDistance > 0){ + ix = (px + (rayEntryDistance * vx)); + iy = (py + (rayEntryDistance * vy)); + if ((((((((iy > -(this._halfExtentsY))) && ((iy < this._halfExtentsY)))) && ((ix > -(this._halfExtentsX))))) && ((ix < this._halfExtentsX)))){ + targetNormal.x = 0; + targetNormal.y = 0; + targetNormal.z = 1; + intersects = true; + }; + }; + }; + if (((!(intersects)) && ((vz > 0)))){ + rayEntryDistance = ((-(this._halfExtentsZ) - pz) / vz); + if (rayEntryDistance > 0){ + ix = (px + (rayEntryDistance * vx)); + iy = (py + (rayEntryDistance * vy)); + if ((((((((iy > -(this._halfExtentsY))) && ((iy < this._halfExtentsY)))) && ((ix > -(this._halfExtentsX))))) && ((ix < this._halfExtentsX)))){ + targetNormal.x = 0; + targetNormal.y = 0; + targetNormal.z = -1; + intersects = true; + }; + }; + }; + return (((intersects) ? rayEntryDistance : -1)); + } + override public function containsPoint(position:Vector3D):Boolean{ + var px:Number = (position.x - this._centerX); + var py:Number = (position.y - this._centerY); + var pz:Number = (position.z - this._centerZ); + if ((((px > this._halfExtentsX)) || ((px < -(this._halfExtentsX))))){ + return (false); + }; + if ((((py > this._halfExtentsY)) || ((py < -(this._halfExtentsY))))){ + return (false); + }; + if ((((pz > this._halfExtentsZ)) || ((pz < -(this._halfExtentsZ))))){ + return (false); + }; + return (true); + } + override public function fromExtremes(minX:Number, minY:Number, minZ:Number, maxX:Number, maxY:Number, maxZ:Number):void{ + this._centerX = ((maxX + minX) * 0.5); + this._centerY = ((maxY + minY) * 0.5); + this._centerZ = ((maxZ + minZ) * 0.5); + this._halfExtentsX = ((maxX - minX) * 0.5); + this._halfExtentsY = ((maxY - minY) * 0.5); + this._halfExtentsZ = ((maxZ - minZ) * 0.5); + super.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ); + } + override public function clone():BoundingVolumeBase{ + var clone:AxisAlignedBoundingBox = new AxisAlignedBoundingBox(); + clone.fromExtremes(_min.x, _min.y, _min.z, _max.x, _max.y, _max.z); + return (clone); + } + public function get halfExtentsX():Number{ + return (this._halfExtentsX); + } + public function get halfExtentsY():Number{ + return (this._halfExtentsY); + } + public function get halfExtentsZ():Number{ + return (this._halfExtentsZ); + } + public function closestPointToPoint(point:Vector3D, target:Vector3D=null):Vector3D{ + var p:Number; + target = ((target) || (new Vector3D())); + p = point.x; + if (p < _min.x){ + p = _min.x; + }; + if (p > _max.x){ + p = _max.x; + }; + target.x = p; + p = point.y; + if (p < _min.y){ + p = _min.y; + }; + if (p > _max.y){ + p = _max.y; + }; + target.y = p; + p = point.z; + if (p < _min.z){ + p = _min.z; + }; + if (p > _max.z){ + p = _max.z; + }; + target.z = p; + return (target); + } + override protected function updateBoundingRenderable():void{ + _boundingRenderable.scaleX = Math.max((this._halfExtentsX * 2), 0.001); + _boundingRenderable.scaleY = Math.max((this._halfExtentsY * 2), 0.001); + _boundingRenderable.scaleZ = Math.max((this._halfExtentsZ * 2), 0.001); + _boundingRenderable.x = this._centerX; + _boundingRenderable.y = this._centerY; + _boundingRenderable.z = this._centerZ; + } + override protected function createBoundingRenderable():WireframePrimitiveBase{ + return (new WireframeCube(1, 1, 1)); + } + + } +}//package away3d.bounds diff --git a/flash_decompiled/watchdog/away3d/bounds/BoundingSphere.as b/flash_decompiled/watchdog/away3d/bounds/BoundingSphere.as new file mode 100644 index 0000000..2b5eb7a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/bounds/BoundingSphere.as @@ -0,0 +1,251 @@ +package away3d.bounds { + import away3d.core.math.*; + import __AS3__.vec.*; + import away3d.core.pick.*; + import away3d.primitives.*; + import flash.geom.*; + + public class BoundingSphere extends BoundingVolumeBase { + + private var _radius:Number = 0; + private var _centerX:Number = 0; + private var _centerY:Number = 0; + private var _centerZ:Number = 0; + + public function BoundingSphere(){ + super(); + } + public function get radius():Number{ + return (this._radius); + } + override public function nullify():void{ + super.nullify(); + this._centerX = (this._centerY = (this._centerZ = 0)); + this._radius = 0; + } + override public function isInFrustum(mvpMatrix:Matrix3D):Boolean{ + var a:Number; + var b:Number; + var c:Number; + var d:Number; + var dd:Number; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + mvpMatrix.copyRawDataTo(raw); + var c11:Number = raw[uint(0)]; + var c12:Number = raw[uint(4)]; + var c13:Number = raw[uint(8)]; + var c14:Number = raw[uint(12)]; + var c21:Number = raw[uint(1)]; + var c22:Number = raw[uint(5)]; + var c23:Number = raw[uint(9)]; + var c24:Number = raw[uint(13)]; + var c31:Number = raw[uint(2)]; + var c32:Number = raw[uint(6)]; + var c33:Number = raw[uint(10)]; + var c34:Number = raw[uint(14)]; + var c41:Number = raw[uint(3)]; + var c42:Number = raw[uint(7)]; + var c43:Number = raw[uint(11)]; + var c44:Number = raw[uint(15)]; + var rr:Number = this._radius; + a = (c41 + c11); + b = (c42 + c12); + c = (c43 + c13); + d = (c44 + c14); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c11); + b = (c42 - c12); + c = (c43 - c13); + d = (c44 - c14); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 + c21); + b = (c42 + c22); + c = (c43 + c23); + d = (c44 + c24); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c21); + b = (c42 - c22); + c = (c43 - c23); + d = (c44 - c24); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + a = c31; + b = c32; + c = c33; + d = c34; + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + a = (c41 - c31); + b = (c42 - c32); + c = (c43 - c33); + d = (c44 - c34); + dd = (((a * this._centerX) + (b * this._centerY)) + (c * this._centerZ)); + if (a < 0){ + a = -(a); + }; + if (b < 0){ + b = -(b); + }; + if (c < 0){ + c = -(c); + }; + rr = (((a + b) + c) * this._radius); + if ((dd + rr) < -(d)){ + return (false); + }; + return (true); + } + override public function fromSphere(center:Vector3D, radius:Number):void{ + this._centerX = center.x; + this._centerY = center.y; + this._centerZ = center.z; + this._radius = radius; + _max.x = (this._centerX + radius); + _max.y = (this._centerY + radius); + _max.z = (this._centerZ + radius); + _min.x = (this._centerX - radius); + _min.y = (this._centerY - radius); + _min.z = (this._centerZ - radius); + _aabbPointsDirty = true; + if (_boundingRenderable){ + this.updateBoundingRenderable(); + }; + } + override public function fromExtremes(minX:Number, minY:Number, minZ:Number, maxX:Number, maxY:Number, maxZ:Number):void{ + this._centerX = ((maxX + minX) * 0.5); + this._centerY = ((maxY + minY) * 0.5); + this._centerZ = ((maxZ + minZ) * 0.5); + var d:Number = (maxX - minX); + var y:Number = (maxY - minY); + var z:Number = (maxZ - minZ); + if (y > d){ + d = y; + }; + if (z > d){ + d = z; + }; + this._radius = (d * Math.sqrt(0.5)); + super.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ); + } + override public function clone():BoundingVolumeBase{ + var clone:BoundingSphere = new BoundingSphere(); + clone.fromSphere(new Vector3D(this._centerX, this._centerY, this._centerZ), this._radius); + return (clone); + } + override public function rayIntersection(position:Vector3D, direction:Vector3D, targetNormal:Vector3D):Number{ + var rayEntryDistance:Number; + var sqrtDet:Number; + if (this.containsPoint(position)){ + return (0); + }; + var px:Number = (position.x - this._centerX); + var py:Number = (position.y - this._centerY); + var pz:Number = (position.z - this._centerZ); + var vx:Number = direction.x; + var vy:Number = direction.y; + var vz:Number = direction.z; + var a:Number = (((vx * vx) + (vy * vy)) + (vz * vz)); + var b:Number = (2 * (((px * vx) + (py * vy)) + (pz * vz))); + var c:Number = ((((px * px) + (py * py)) + (pz * pz)) - (this._radius * this._radius)); + var det:Number = ((b * b) - ((4 * a) * c)); + if (det >= 0){ + sqrtDet = Math.sqrt(det); + rayEntryDistance = ((-(b) - sqrtDet) / (2 * a)); + if (rayEntryDistance >= 0){ + targetNormal.x = (px + (rayEntryDistance * vx)); + targetNormal.y = (py + (rayEntryDistance * vy)); + targetNormal.z = (pz + (rayEntryDistance * vz)); + targetNormal.normalize(); + return (rayEntryDistance); + }; + }; + return (-1); + } + override public function containsPoint(position:Vector3D):Boolean{ + var px:Number = (position.x - this._centerX); + var py:Number = (position.y - this._centerY); + var pz:Number = (position.z - this._centerZ); + var distance:Number = Math.sqrt((((px * px) + (py * py)) + (pz * pz))); + return ((distance <= this._radius)); + } + override protected function updateBoundingRenderable():void{ + var sc:Number = this._radius; + if (sc == 0){ + sc = 0.001; + }; + _boundingRenderable.scaleX = sc; + _boundingRenderable.scaleY = sc; + _boundingRenderable.scaleZ = sc; + _boundingRenderable.x = this._centerX; + _boundingRenderable.y = this._centerY; + _boundingRenderable.z = this._centerZ; + } + override protected function createBoundingRenderable():WireframePrimitiveBase{ + return (new WireframeSphere(1)); + } + + } +}//package away3d.bounds diff --git a/flash_decompiled/watchdog/away3d/bounds/BoundingVolumeBase.as b/flash_decompiled/watchdog/away3d/bounds/BoundingVolumeBase.as new file mode 100644 index 0000000..93315f4 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/bounds/BoundingVolumeBase.as @@ -0,0 +1,193 @@ +package away3d.bounds { + import flash.geom.*; + import __AS3__.vec.*; + import away3d.primitives.*; + import away3d.core.base.*; + import away3d.core.pick.*; + import away3d.errors.*; + + public class BoundingVolumeBase { + + protected var _min:Vector3D; + protected var _max:Vector3D; + protected var _aabbPoints:Vector.; + protected var _aabbPointsDirty:Boolean = true; + protected var _boundingRenderable:WireframePrimitiveBase; + + public function BoundingVolumeBase(){ + this._aabbPoints = new Vector.(); + super(); + this._min = new Vector3D(); + this._max = new Vector3D(); + } + public function get max():Vector3D{ + return (this._max); + } + public function get min():Vector3D{ + return (this._min); + } + public function get aabbPoints():Vector.{ + if (this._aabbPointsDirty){ + this.updateAABBPoints(); + }; + return (this._aabbPoints); + } + public function get boundingRenderable():WireframePrimitiveBase{ + if (!(this._boundingRenderable)){ + this._boundingRenderable = this.createBoundingRenderable(); + this.updateBoundingRenderable(); + }; + return (this._boundingRenderable); + } + public function nullify():void{ + this._min.x = (this._min.y = (this._min.z = 0)); + this._max.x = (this._max.y = (this._max.z = 0)); + this._aabbPointsDirty = true; + if (this._boundingRenderable){ + this.updateBoundingRenderable(); + }; + } + public function disposeRenderable():void{ + if (this._boundingRenderable){ + this._boundingRenderable.dispose(); + }; + this._boundingRenderable = null; + } + public function fromVertices(vertices:Vector.):void{ + var i:uint; + var minX:Number; + var minY:Number; + var minZ:Number; + var maxX:Number; + var maxY:Number; + var maxZ:Number; + var v:Number; + var len:uint = vertices.length; + if (len == 0){ + this.nullify(); + return; + }; + var _temp1 = i; + i = (i + 1); + maxX = vertices[uint(_temp1)]; + minX = maxX; + var _temp2 = i; + i = (i + 1); + maxY = vertices[uint(_temp2)]; + minY = maxY; + var _temp3 = i; + i = (i + 1); + maxZ = vertices[uint(_temp3)]; + minZ = maxZ; + while (i < len) { + var _temp4 = i; + i = (i + 1); + v = vertices[_temp4]; + if (v < minX){ + minX = v; + } else { + if (v > maxX){ + maxX = v; + }; + }; + var _temp5 = i; + i = (i + 1); + v = vertices[_temp5]; + if (v < minY){ + minY = v; + } else { + if (v > maxY){ + maxY = v; + }; + }; + var _temp6 = i; + i = (i + 1); + v = vertices[_temp6]; + if (v < minZ){ + minZ = v; + } else { + if (v > maxZ){ + maxZ = v; + }; + }; + }; + this.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ); + } + public function fromGeometry(geometry:Geometry):void{ + var subs:Vector. = geometry.subGeometries; + var lenS:uint = subs.length; + if ((((lenS > 0)) && ((subs[0].vertexData.length >= 3)))){ + this.fromExtremes(-99999, -99999, -99999, 99999, 99999, 99999); + } else { + this.fromExtremes(0, 0, 0, 0, 0, 0); + }; + } + public function fromSphere(center:Vector3D, radius:Number):void{ + this.fromExtremes((center.x - radius), (center.y - radius), (center.z - radius), (center.x + radius), (center.y + radius), (center.z + radius)); + } + public function fromExtremes(minX:Number, minY:Number, minZ:Number, maxX:Number, maxY:Number, maxZ:Number):void{ + this._min.x = minX; + this._min.y = minY; + this._min.z = minZ; + this._max.x = maxX; + this._max.y = maxY; + this._max.z = maxZ; + this._aabbPointsDirty = true; + if (this._boundingRenderable){ + this.updateBoundingRenderable(); + }; + } + public function isInFrustum(mvpMatrix:Matrix3D):Boolean{ + throw (new AbstractMethodError()); + } + public function clone():BoundingVolumeBase{ + throw (new AbstractMethodError()); + } + public function rayIntersection(position:Vector3D, direction:Vector3D, targetNormal:Vector3D):Number{ + return (-1); + } + public function containsPoint(position:Vector3D):Boolean{ + return (false); + } + protected function updateAABBPoints():void{ + var maxX:Number = this._max.x; + var maxY:Number = this._max.y; + var maxZ:Number = this._max.z; + var minX:Number = this._min.x; + var minY:Number = this._min.y; + var minZ:Number = this._min.z; + this._aabbPoints[0] = minX; + this._aabbPoints[1] = minY; + this._aabbPoints[2] = minZ; + this._aabbPoints[3] = maxX; + this._aabbPoints[4] = minY; + this._aabbPoints[5] = minZ; + this._aabbPoints[6] = minX; + this._aabbPoints[7] = maxY; + this._aabbPoints[8] = minZ; + this._aabbPoints[9] = maxX; + this._aabbPoints[10] = maxY; + this._aabbPoints[11] = minZ; + this._aabbPoints[12] = minX; + this._aabbPoints[13] = minY; + this._aabbPoints[14] = maxZ; + this._aabbPoints[15] = maxX; + this._aabbPoints[16] = minY; + this._aabbPoints[17] = maxZ; + this._aabbPoints[18] = minX; + this._aabbPoints[19] = maxY; + this._aabbPoints[20] = maxZ; + this._aabbPoints[21] = maxX; + this._aabbPoints[22] = maxY; + this._aabbPoints[23] = maxZ; + this._aabbPointsDirty = false; + } + protected function updateBoundingRenderable():void{ + throw (new AbstractMethodError()); + } + protected function createBoundingRenderable():WireframePrimitiveBase{ + throw (new AbstractMethodError()); + } + + } +}//package away3d.bounds diff --git a/flash_decompiled/watchdog/away3d/bounds/NullBounds.as b/flash_decompiled/watchdog/away3d/bounds/NullBounds.as new file mode 100644 index 0000000..ee92b2f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/bounds/NullBounds.as @@ -0,0 +1,30 @@ +package away3d.bounds { + import away3d.primitives.*; + import flash.geom.*; + import away3d.core.base.*; + + public class NullBounds extends BoundingVolumeBase { + + private var _alwaysIn:Boolean; + private var _renderable:WireframePrimitiveBase; + + public function NullBounds(alwaysIn:Boolean=true, renderable:WireframePrimitiveBase=null){ + super(); + this._alwaysIn = alwaysIn; + this._renderable = renderable; + } + override protected function createBoundingRenderable():WireframePrimitiveBase{ + return (((this._renderable) || (new WireframeSphere(100)))); + } + override public function isInFrustum(mvpMatrix:Matrix3D):Boolean{ + return (this._alwaysIn); + } + override public function fromGeometry(geometry:Geometry):void{ + } + override public function fromSphere(center:Vector3D, radius:Number):void{ + } + override public function fromExtremes(minX:Number, minY:Number, minZ:Number, maxX:Number, maxY:Number, maxZ:Number):void{ + } + + } +}//package away3d.bounds diff --git a/flash_decompiled/watchdog/away3d/cameras/Camera3D.as b/flash_decompiled/watchdog/away3d/cameras/Camera3D.as new file mode 100644 index 0000000..466e74f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/cameras/Camera3D.as @@ -0,0 +1,154 @@ +package away3d.cameras { + import flash.geom.*; + import away3d.cameras.lenses.*; + import away3d.events.*; + import __AS3__.vec.*; + import away3d.core.math.*; + import away3d.core.partition.*; + import away3d.entities.*; + + public class Camera3D extends Entity { + + private var _viewProjection:Matrix3D; + private var _viewProjectionDirty:Boolean = true; + private var _lens:LensBase; + private var _frustumPlanes:Vector.; + private var _frustumPlanesDirty:Boolean = true; + + public function Camera3D(lens:LensBase=null){ + this._viewProjection = new Matrix3D(); + super(); + this._lens = ((lens) || (new PerspectiveLens())); + this._lens.addEventListener(LensEvent.MATRIX_CHANGED, this.onLensMatrixChanged); + this._frustumPlanes = new Vector.(6, true); + var i:int; + while (i < 6) { + this._frustumPlanes[i] = new Plane3D(); + i++; + }; + z = -1000; + } + private function onLensMatrixChanged(event:LensEvent):void{ + this._viewProjectionDirty = true; + this._frustumPlanesDirty = true; + dispatchEvent(event); + } + public function get frustumPlanes():Vector.{ + var c11:Number; + var c12:Number; + var c13:Number; + var c14:Number; + var c21:Number; + var c22:Number; + var c23:Number; + var c24:Number; + var c31:Number; + var c32:Number; + var c33:Number; + var c34:Number; + var c41:Number; + var c42:Number; + var c43:Number; + var c44:Number; + var p:Plane3D; + var raw:Vector.; + if (this._frustumPlanesDirty){ + raw = Matrix3DUtils.RAW_DATA_CONTAINER; + this.viewProjection.copyRawDataTo(raw); + c11 = raw[uint(0)]; + c12 = raw[uint(4)]; + c13 = raw[uint(8)]; + c14 = raw[uint(12)]; + c21 = raw[uint(1)]; + c22 = raw[uint(5)]; + c23 = raw[uint(9)]; + c24 = raw[uint(13)]; + c31 = raw[uint(2)]; + c32 = raw[uint(6)]; + c33 = raw[uint(10)]; + c34 = raw[uint(14)]; + c41 = raw[uint(3)]; + c42 = raw[uint(7)]; + c43 = raw[uint(11)]; + c44 = raw[uint(15)]; + p = this._frustumPlanes[0]; + p.a = (c41 + c11); + p.b = (c42 + c12); + p.c = (c43 + c13); + p.d = (c44 + c14); + p = this._frustumPlanes[1]; + p.a = (c41 - c11); + p.b = (c42 - c12); + p.c = (c43 - c13); + p.d = (c44 - c14); + p = this._frustumPlanes[2]; + p.a = (c41 + c21); + p.b = (c42 + c22); + p.c = (c43 + c23); + p.d = (c44 + c24); + p = this._frustumPlanes[3]; + p.a = (c41 - c21); + p.b = (c42 - c22); + p.c = (c43 - c23); + p.d = (c44 - c24); + p = this._frustumPlanes[4]; + p.a = c31; + p.b = c32; + p.c = c33; + p.d = c34; + p = this._frustumPlanes[5]; + p.a = (c41 - c31); + p.b = (c42 - c32); + p.c = (c43 - c33); + p.d = (c44 - c34); + this._frustumPlanesDirty = false; + }; + return (this._frustumPlanes); + } + override protected function invalidateSceneTransform():void{ + super.invalidateSceneTransform(); + this._viewProjectionDirty = true; + this._frustumPlanesDirty = true; + } + override protected function updateBounds():void{ + _bounds.nullify(); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new CameraNode(this)); + } + public function get lens():LensBase{ + return (this._lens); + } + public function set lens(value:LensBase):void{ + if (this._lens == value){ + return; + }; + if (!(value)){ + throw (new Error("Lens cannot be null!")); + }; + this._lens.removeEventListener(LensEvent.MATRIX_CHANGED, this.onLensMatrixChanged); + this._lens = value; + this._lens.addEventListener(LensEvent.MATRIX_CHANGED, this.onLensMatrixChanged); + dispatchEvent(new LensEvent(LensEvent.MATRIX_CHANGED, value)); + } + public function get viewProjection():Matrix3D{ + if (this._viewProjectionDirty){ + this._viewProjection.copyFrom(inverseSceneTransform); + this._viewProjection.append(this._lens.matrix); + this._viewProjectionDirty = false; + }; + return (this._viewProjection); + } + public function unproject(mX:Number, mY:Number, mZ:Number=0):Vector3D{ + return (sceneTransform.transformVector(this.lens.unproject(mX, mY, mZ))); + } + public function getRay(mX:Number, mY:Number, mZ:Number=0):Vector3D{ + return (sceneTransform.deltaTransformVector(this.lens.unproject(mX, mY, mZ))); + } + public function project(point3d:Vector3D):Vector3D{ + return (this.lens.project(inverseSceneTransform.transformVector(point3d))); + } + + } +}//package away3d.cameras diff --git a/flash_decompiled/watchdog/away3d/cameras/lenses/FreeMatrixLens.as b/flash_decompiled/watchdog/away3d/cameras/lenses/FreeMatrixLens.as new file mode 100644 index 0000000..9a7f267 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/cameras/lenses/FreeMatrixLens.as @@ -0,0 +1,23 @@ +package away3d.cameras.lenses { + + public class FreeMatrixLens extends LensBase { + + public function FreeMatrixLens(){ + super(); + _matrix.copyFrom(new PerspectiveLens().matrix); + } + override protected function updateMatrix():void{ + _matrixInvalid = false; + } + override public function set near(value:Number):void{ + _near = value; + } + override public function set far(value:Number):void{ + _far = value; + } + override function set aspectRatio(value:Number):void{ + _aspectRatio = value; + } + + } +}//package away3d.cameras.lenses diff --git a/flash_decompiled/watchdog/away3d/cameras/lenses/LensBase.as b/flash_decompiled/watchdog/away3d/cameras/lenses/LensBase.as new file mode 100644 index 0000000..c91ef5d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/cameras/lenses/LensBase.as @@ -0,0 +1,106 @@ +package away3d.cameras.lenses { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.events.*; + import away3d.errors.*; + import flash.events.*; + + public class LensBase extends EventDispatcher { + + protected var _matrix:Matrix3D; + protected var _near:Number = 20; + protected var _far:Number = 3000; + protected var _aspectRatio:Number = 1; + protected var _matrixInvalid:Boolean = true; + protected var _frustumCorners:Vector.; + private var _unprojection:Matrix3D; + private var _unprojectionInvalid:Boolean = true; + + public function LensBase(){ + this._frustumCorners = new Vector.((8 * 3), true); + super(); + this._matrix = new Matrix3D(); + } + public function get frustumCorners():Vector.{ + return (this._frustumCorners); + } + public function set frustumCorners(frustumCorners:Vector.):void{ + this._frustumCorners = frustumCorners; + } + public function get matrix():Matrix3D{ + if (this._matrixInvalid){ + this.updateMatrix(); + this._matrixInvalid = false; + }; + return (this._matrix); + } + public function set matrix(value:Matrix3D):void{ + this._matrix = value; + this.invalidateMatrix(); + } + public function get near():Number{ + return (this._near); + } + public function set near(value:Number):void{ + if (value == this._near){ + return; + }; + this._near = value; + this.invalidateMatrix(); + } + public function get far():Number{ + return (this._far); + } + public function set far(value:Number):void{ + if (value == this._far){ + return; + }; + this._far = value; + this.invalidateMatrix(); + } + public function project(point3d:Vector3D):Vector3D{ + var v:Vector3D = this.matrix.transformVector(point3d); + v.x = (v.x / v.w); + v.y = (-(v.y) / v.w); + return (v); + } + public function get unprojectionMatrix():Matrix3D{ + if (this._unprojectionInvalid){ + this._unprojection = ((this._unprojection) || (new Matrix3D())); + this._unprojection.copyFrom(this.matrix); + this._unprojection.invert(); + this._unprojectionInvalid = false; + }; + return (this._unprojection); + } + public function unproject(mX:Number, mY:Number, mZ:Number):Vector3D{ + var v:Vector3D = new Vector3D(mX, -(mY), mZ, 1); + v = this.unprojectionMatrix.transformVector(v); + var inv:Number = (1 / v.w); + v.x = (v.x * inv); + v.y = (v.y * inv); + v.z = (v.z * inv); + v.w = 1; + return (v); + } + function get aspectRatio():Number{ + return (this._aspectRatio); + } + function set aspectRatio(value:Number):void{ + if (this._aspectRatio == value){ + return; + }; + this._aspectRatio = value; + this.invalidateMatrix(); + } + protected function invalidateMatrix():void{ + this._matrixInvalid = true; + this._unprojectionInvalid = true; + dispatchEvent(new LensEvent(LensEvent.MATRIX_CHANGED, this)); + } + protected function updateMatrix():void{ + throw (new AbstractMethodError()); + } + + } +}//package away3d.cameras.lenses diff --git a/flash_decompiled/watchdog/away3d/cameras/lenses/PerspectiveLens.as b/flash_decompiled/watchdog/away3d/cameras/lenses/PerspectiveLens.as new file mode 100644 index 0000000..f3cb219 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/cameras/lenses/PerspectiveLens.as @@ -0,0 +1,54 @@ +package away3d.cameras.lenses { + import away3d.core.math.*; + import __AS3__.vec.*; + + public class PerspectiveLens extends LensBase { + + private var _fieldOfView:Number; + private var _focalLengthInv:Number; + private var _yMax:Number; + private var _xMax:Number; + + public function PerspectiveLens(fieldOfView:Number=60){ + super(); + this.fieldOfView = fieldOfView; + } + public function get fieldOfView():Number{ + return (this._fieldOfView); + } + public function set fieldOfView(value:Number):void{ + if (value == this._fieldOfView){ + return; + }; + this._fieldOfView = value; + this._focalLengthInv = Math.tan(((this._fieldOfView * Math.PI) / 360)); + invalidateMatrix(); + } + override protected function updateMatrix():void{ + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + this._yMax = (_near * this._focalLengthInv); + this._xMax = (this._yMax * _aspectRatio); + raw[uint(0)] = (_near / this._xMax); + raw[uint(5)] = (_near / this._yMax); + raw[uint(10)] = (_far / (_far - _near)); + raw[uint(11)] = 1; + raw[uint(1)] = (raw[uint(2)] = (raw[uint(3)] = (raw[uint(4)] = (raw[uint(6)] = (raw[uint(7)] = (raw[uint(8)] = (raw[uint(9)] = (raw[uint(12)] = (raw[uint(13)] = (raw[uint(15)] = 0)))))))))); + raw[uint(14)] = (-(_near) * raw[uint(10)]); + _matrix.copyRawDataFrom(raw); + var yMaxFar:Number = (_far * this._focalLengthInv); + var xMaxFar:Number = (yMaxFar * _aspectRatio); + _frustumCorners[0] = (_frustumCorners[9] = -(this._xMax)); + _frustumCorners[3] = (_frustumCorners[6] = this._xMax); + _frustumCorners[1] = (_frustumCorners[4] = -(this._yMax)); + _frustumCorners[7] = (_frustumCorners[10] = this._yMax); + _frustumCorners[12] = (_frustumCorners[21] = -(xMaxFar)); + _frustumCorners[15] = (_frustumCorners[18] = xMaxFar); + _frustumCorners[13] = (_frustumCorners[16] = -(yMaxFar)); + _frustumCorners[19] = (_frustumCorners[22] = yMaxFar); + _frustumCorners[2] = (_frustumCorners[5] = (_frustumCorners[8] = (_frustumCorners[11] = _near))); + _frustumCorners[14] = (_frustumCorners[17] = (_frustumCorners[20] = (_frustumCorners[23] = _far))); + _matrixInvalid = false; + } + + } +}//package away3d.cameras.lenses diff --git a/flash_decompiled/watchdog/away3d/containers/ObjectContainer3D.as b/flash_decompiled/watchdog/away3d/containers/ObjectContainer3D.as new file mode 100644 index 0000000..bc3e3dd --- /dev/null +++ b/flash_decompiled/watchdog/away3d/containers/ObjectContainer3D.as @@ -0,0 +1,450 @@ +package away3d.containers { + import away3d.core.partition.*; + import away3d.events.*; + import away3d.library.assets.*; + import flash.geom.*; + import __AS3__.vec.*; + import away3d.core.base.*; + import flash.events.*; + + public class ObjectContainer3D extends Object3D implements IAsset { + + var _ancestorsAllowMouseEnabled:Boolean; + var _isRoot:Boolean; + protected var _scene:Scene3D; + protected var _parent:ObjectContainer3D; + protected var _sceneTransform:Matrix3D; + protected var _sceneTransformDirty:Boolean = true; + protected var _explicitPartition:Partition3D; + protected var _implicitPartition:Partition3D; + protected var _mouseEnabled:Boolean; + private var _sceneTransformChanged:Object3DEvent; + private var _scenechanged:Object3DEvent; + private var _children:Vector.; + private var _mouseChildren:Boolean = true; + private var _oldScene:Scene3D; + private var _inverseSceneTransform:Matrix3D; + private var _inverseSceneTransformDirty:Boolean = true; + private var _scenePosition:Vector3D; + private var _scenePositionDirty:Boolean = true; + private var _explicitVisibility:Boolean = true; + private var _implicitVisibility:Boolean = true; + private var _listenToSceneTransformChanged:Boolean; + private var _listenToSceneChanged:Boolean; + + public function ObjectContainer3D(){ + this._sceneTransform = new Matrix3D(); + this._children = new Vector.(); + this._inverseSceneTransform = new Matrix3D(); + this._scenePosition = new Vector3D(); + super(); + } + function get implicitPartition():Partition3D{ + return (this._implicitPartition); + } + function set implicitPartition(value:Partition3D):void{ + var i:uint; + var child:ObjectContainer3D; + if (value == this._implicitPartition){ + return; + }; + var len:uint = this._children.length; + this._implicitPartition = value; + while (i < len) { + var _temp1 = i; + i = (i + 1); + child = this._children[_temp1]; + if (!(child._explicitPartition)){ + child.implicitPartition = value; + }; + }; + } + function get isVisible():Boolean{ + return (((this._implicitVisibility) && (this._explicitVisibility))); + } + function setParent(value:ObjectContainer3D):void{ + this._parent = value; + this.updateMouseChildren(); + if (value == null){ + this.scene = null; + return; + }; + this.notifySceneTransformChange(); + this.notifySceneChange(); + } + private function notifySceneTransformChange():void{ + var i:uint; + if (this._sceneTransformDirty){ + return; + }; + this.invalidateSceneTransform(); + var len:uint = this._children.length; + while (i < len) { + var _temp1 = i; + i = (i + 1); + this._children[_temp1].notifySceneTransformChange(); + }; + if (this._listenToSceneTransformChanged){ + if (!(this._sceneTransformChanged)){ + this._sceneTransformChanged = new Object3DEvent(Object3DEvent.SCENETRANSFORM_CHANGED, this); + }; + this.dispatchEvent(this._sceneTransformChanged); + }; + } + private function notifySceneChange():void{ + var i:uint; + this.notifySceneTransformChange(); + var len:uint = this._children.length; + while (i < len) { + var _temp1 = i; + i = (i + 1); + this._children[_temp1].notifySceneChange(); + }; + if (this._listenToSceneChanged){ + if (!(this._scenechanged)){ + this._scenechanged = new Object3DEvent(Object3DEvent.SCENE_CHANGED, this); + }; + this.dispatchEvent(this._scenechanged); + }; + } + protected function updateMouseChildren():void{ + if (((this._parent) && (!(this._parent._isRoot)))){ + this._ancestorsAllowMouseEnabled = ((this.parent._ancestorsAllowMouseEnabled) && (this._parent.mouseChildren)); + } else { + this._ancestorsAllowMouseEnabled = this.mouseChildren; + }; + var len:uint = this._children.length; + var i:uint; + while (i < len) { + this._children[i].updateMouseChildren(); + i++; + }; + } + public function get mouseEnabled():Boolean{ + return (this._mouseEnabled); + } + public function set mouseEnabled(value:Boolean):void{ + this._mouseEnabled = value; + this.updateMouseChildren(); + } + override function invalidateTransform():void{ + super.invalidateTransform(); + this.notifySceneTransformChange(); + } + protected function invalidateSceneTransform():void{ + this._sceneTransformDirty = true; + this._inverseSceneTransformDirty = true; + this._scenePositionDirty = true; + } + protected function updateSceneTransform():void{ + if (((this._parent) && (!(this._parent._isRoot)))){ + this._sceneTransform.copyFrom(this._parent.sceneTransform); + this._sceneTransform.prepend(transform); + } else { + this._sceneTransform.copyFrom(transform); + }; + this._sceneTransformDirty = false; + } + public function get mouseChildren():Boolean{ + return (this._mouseChildren); + } + public function set mouseChildren(value:Boolean):void{ + this._mouseChildren = value; + this.updateMouseChildren(); + } + public function get visible():Boolean{ + return (this._explicitVisibility); + } + public function set visible(value:Boolean):void{ + var len:uint = this._children.length; + this._explicitVisibility = value; + var i:uint; + while (i < len) { + this._children[i].updateImplicitVisibility(); + i++; + }; + } + public function get assetType():String{ + return (AssetType.CONTAINER); + } + public function get scenePosition():Vector3D{ + if (this._scenePositionDirty){ + this.sceneTransform.copyColumnTo(3, this._scenePosition); + this._scenePositionDirty = false; + }; + return (this._scenePosition); + } + public function get minX():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var min:Number = Number.POSITIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].minX; + if (m < min){ + min = m; + }; + }; + return (min); + } + public function get minY():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var min:Number = Number.POSITIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].minY; + if (m < min){ + min = m; + }; + }; + return (min); + } + public function get minZ():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var min:Number = Number.POSITIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].minZ; + if (m < min){ + min = m; + }; + }; + return (min); + } + public function get maxX():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var max:Number = Number.NEGATIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].maxX; + if (m > max){ + max = m; + }; + }; + return (max); + } + public function get maxY():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var max:Number = Number.NEGATIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].maxY; + if (m > max){ + max = m; + }; + }; + return (max); + } + public function get maxZ():Number{ + var i:uint; + var m:Number; + var len:uint = this._children.length; + var max:Number = Number.NEGATIVE_INFINITY; + while (i < len) { + var _temp1 = i; + i = (i + 1); + m = this._children[_temp1].maxZ; + if (m > max){ + max = m; + }; + }; + return (max); + } + public function get partition():Partition3D{ + return (this._explicitPartition); + } + public function set partition(value:Partition3D):void{ + this._explicitPartition = value; + this.implicitPartition = ((value) ? value : ((this._parent) ? this._parent.implicitPartition : null)); + } + public function get sceneTransform():Matrix3D{ + if (this._sceneTransformDirty){ + this.updateSceneTransform(); + }; + return (this._sceneTransform); + } + public function get scene():Scene3D{ + return (this._scene); + } + public function set scene(value:Scene3D):void{ + var i:uint; + var len:uint = this._children.length; + while (i < len) { + var _temp1 = i; + i = (i + 1); + this._children[_temp1].scene = value; + }; + if (this._scene == value){ + return; + }; + if (value == null){ + this._oldScene = this._scene; + }; + if (((((this._explicitPartition) && (this._oldScene))) && (!((this._oldScene == this._scene))))){ + this.partition = null; + }; + if (value){ + this._oldScene = null; + }; + this._scene = value; + if (this._scene){ + this._scene.dispatchEvent(new Scene3DEvent(Scene3DEvent.ADDED_TO_SCENE, this)); + } else { + if (this._oldScene){ + this._oldScene.dispatchEvent(new Scene3DEvent(Scene3DEvent.REMOVED_FROM_SCENE, this)); + }; + }; + } + public function get inverseSceneTransform():Matrix3D{ + if (this._inverseSceneTransformDirty){ + this._inverseSceneTransform.copyFrom(this.sceneTransform); + this._inverseSceneTransform.invert(); + this._inverseSceneTransformDirty = false; + }; + return (this._inverseSceneTransform); + } + public function get parent():ObjectContainer3D{ + return (this._parent); + } + public function contains(child:ObjectContainer3D):Boolean{ + return ((this._children.indexOf(child) >= 0)); + } + public function addChild(child:ObjectContainer3D):ObjectContainer3D{ + if (child == null){ + throw (new Error("Parameter child cannot be null.")); + }; + if (child._parent){ + child._parent.removeChild(child); + }; + if (!(child._explicitPartition)){ + child.implicitPartition = this._implicitPartition; + }; + child.setParent(this); + child.scene = this._scene; + child.notifySceneTransformChange(); + child.updateMouseChildren(); + child.updateImplicitVisibility(); + this._children.push(child); + return (child); + } + public function addChildren(... _args):void{ + var child:ObjectContainer3D; + for each (child in _args) { + this.addChild(child); + }; + } + public function removeChild(child:ObjectContainer3D):void{ + if (child == null){ + throw (new Error("Parameter child cannot be null")); + }; + var childIndex:int = this._children.indexOf(child); + if (childIndex == -1){ + throw (new Error("Parameter is not a child of the caller")); + }; + this._children.splice(childIndex, 1); + child.setParent(null); + if (!(child._explicitPartition)){ + child.implicitPartition = null; + }; + } + public function getChildAt(index:uint):ObjectContainer3D{ + return (this._children[index]); + } + public function get numChildren():uint{ + return (this._children.length); + } + override public function lookAt(target:Vector3D, upAxis:Vector3D=null):void{ + super.lookAt(target, upAxis); + this.notifySceneTransformChange(); + } + override public function translateLocal(axis:Vector3D, distance:Number):void{ + super.translateLocal(axis, distance); + this.notifySceneTransformChange(); + } + override public function dispose():void{ + if (this.parent){ + this.parent.removeChild(this); + }; + } + override public function clone():Object3D{ + var clone:ObjectContainer3D = new ObjectContainer3D(); + clone.pivotPoint = pivotPoint; + clone.transform = transform; + clone.partition = this.partition; + clone.name = name; + var len:uint = this._children.length; + var i:uint; + while (i < len) { + clone.addChild(ObjectContainer3D(this._children[i].clone())); + i++; + }; + return (clone); + } + override public function rotate(axis:Vector3D, angle:Number):void{ + super.rotate(axis, angle); + this.notifySceneTransformChange(); + } + override public function dispatchEvent(event:Event):Boolean{ + var ret:Boolean = super.dispatchEvent(event); + if (event.bubbles){ + if (this._parent){ + this._parent.dispatchEvent(event); + } else { + if (this._scene){ + this._scene.dispatchEvent(event); + }; + }; + }; + return (ret); + } + public function updateImplicitVisibility():void{ + var len:uint = this._children.length; + this._implicitVisibility = ((this._parent._explicitVisibility) && (this._parent._implicitVisibility)); + var i:uint; + while (i < len) { + this._children[i].updateImplicitVisibility(); + i++; + }; + } + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{ + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + switch (type){ + case Object3DEvent.SCENETRANSFORM_CHANGED: + this._listenToSceneTransformChanged = true; + break; + case Object3DEvent.SCENE_CHANGED: + this._listenToSceneChanged = true; + break; + }; + } + override public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{ + super.removeEventListener(type, listener, useCapture); + if (hasEventListener(type)){ + return; + }; + switch (type){ + case Object3DEvent.SCENETRANSFORM_CHANGED: + this._listenToSceneTransformChanged = false; + break; + case Object3DEvent.SCENE_CHANGED: + this._listenToSceneChanged = false; + break; + }; + } + + } +}//package away3d.containers diff --git a/flash_decompiled/watchdog/away3d/containers/Scene3D.as b/flash_decompiled/watchdog/away3d/containers/Scene3D.as new file mode 100644 index 0000000..7d9256b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/containers/Scene3D.as @@ -0,0 +1,76 @@ +package away3d.containers { + import __AS3__.vec.*; + import away3d.core.partition.*; + import away3d.core.traverse.*; + import away3d.entities.*; + import flash.events.*; + + public class Scene3D extends EventDispatcher { + + private var _sceneGraphRoot:ObjectContainer3D; + private var _partitions:Vector.; + + public function Scene3D(){ + super(); + this._partitions = new Vector.(); + this._sceneGraphRoot = new ObjectContainer3D(); + this._sceneGraphRoot.scene = this; + this._sceneGraphRoot._isRoot = true; + this._sceneGraphRoot.partition = new Partition3D(new NodeBase()); + } + public function traversePartitions(traverser:PartitionTraverser):void{ + var i:uint; + var len:uint = this._partitions.length; + traverser.scene = this; + while (i < len) { + var _temp1 = i; + i = (i + 1); + this._partitions[_temp1].traverse(traverser); + }; + } + public function get partition():Partition3D{ + return (this._sceneGraphRoot.partition); + } + public function set partition(value:Partition3D):void{ + this._sceneGraphRoot.partition = value; + } + public function contains(child:ObjectContainer3D):Boolean{ + return (this._sceneGraphRoot.contains(child)); + } + public function addChild(child:ObjectContainer3D):ObjectContainer3D{ + return (this._sceneGraphRoot.addChild(child)); + } + public function removeChild(child:ObjectContainer3D):void{ + this._sceneGraphRoot.removeChild(child); + } + public function getChildAt(index:uint):ObjectContainer3D{ + return (this._sceneGraphRoot.getChildAt(index)); + } + public function get numChildren():uint{ + return (this._sceneGraphRoot.numChildren); + } + function registerEntity(entity:Entity):void{ + var partition:Partition3D = entity.implicitPartition; + this.addPartitionUnique(partition); + partition.markForUpdate(entity); + } + function unregisterEntity(entity:Entity):void{ + entity.implicitPartition.removeEntity(entity); + } + function invalidateEntityBounds(entity:Entity):void{ + entity.implicitPartition.markForUpdate(entity); + } + function registerPartition(entity:Entity):void{ + this.addPartitionUnique(entity.implicitPartition); + } + function unregisterPartition(entity:Entity):void{ + entity.implicitPartition.removeEntity(entity); + } + protected function addPartitionUnique(partition:Partition3D):void{ + if (this._partitions.indexOf(partition) == -1){ + this._partitions.push(partition); + }; + } + + } +}//package away3d.containers diff --git a/flash_decompiled/watchdog/away3d/containers/View3D.as b/flash_decompiled/watchdog/away3d/containers/View3D.as new file mode 100644 index 0000000..b28a3ac --- /dev/null +++ b/flash_decompiled/watchdog/away3d/containers/View3D.as @@ -0,0 +1,523 @@ +package away3d.containers { + import flash.net.*; + import flash.events.*; + import away3d.*; + import flash.ui.*; + import flash.geom.*; + import away3d.cameras.*; + import away3d.core.render.*; + import away3d.core.managers.*; + import away3d.textures.*; + import flash.display.*; + import flash.utils.*; + import away3d.core.traverse.*; + import flash.display3D.*; + import away3d.core.pick.*; + import flash.display3D.textures.*; + + public class View3D extends Sprite { + + private var _width:Number = 0; + private var _height:Number = 0; + private var _localPos:Point; + private var _globalPos:Point; + protected var _scene:Scene3D; + protected var _camera:Camera3D; + protected var _entityCollector:EntityCollector; + protected var _aspectRatio:Number; + private var _time:Number = 0; + private var _deltaTime:uint; + private var _backgroundColor:uint = 0; + private var _backgroundAlpha:Number = 1; + private var _mouse3DManager:Mouse3DManager; + private var _stage3DManager:Stage3DManager; + protected var _renderer:RendererBase; + private var _depthRenderer:DepthRenderer; + private var _addedToStage:Boolean; + private var _forceSoftware:Boolean; + protected var _filter3DRenderer:Filter3DRenderer; + protected var _requireDepthRender:Boolean; + protected var _depthRender:Texture; + private var _depthTextureInvalid:Boolean = true; + private var _hitField:Sprite; + protected var _parentIsStage:Boolean; + private var _background:Texture2DBase; + protected var _stage3DProxy:Stage3DProxy; + protected var _backBufferInvalid:Boolean = true; + private var _antiAlias:uint; + protected var _rttBufferManager:RTTBufferManager; + private var _rightClickMenuEnabled:Boolean = true; + private var _sourceURL:String; + private var _menu0:ContextMenuItem; + private var _menu1:ContextMenuItem; + private var _ViewContextMenu:ContextMenu; + private var _shareContext:Boolean = false; + private var _viewScissoRect:Rectangle; + + public function View3D(scene:Scene3D=null, camera:Camera3D=null, renderer:RendererBase=null, forceSoftware:Boolean=false){ + this._localPos = new Point(); + this._globalPos = new Point(); + super(); + this._scene = ((scene) || (new Scene3D())); + this._camera = ((camera) || (new Camera3D())); + this._renderer = ((renderer) || (new DefaultRenderer())); + this._depthRenderer = new DepthRenderer(); + this._forceSoftware = forceSoftware; + this._entityCollector = this._renderer.createEntityCollector(); + this._viewScissoRect = new Rectangle(); + this.initHitField(); + this._mouse3DManager = new Mouse3DManager(); + this._mouse3DManager.enableMouseListeners(this); + addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage, false, 0, true); + addEventListener(Event.ADDED, this.onAdded, false, 0, true); + this._camera.partition = this._scene.partition; + this.initRightClickMenu(); + } + private function viewSource(e:ContextMenuEvent):void{ + var request:URLRequest = new URLRequest(this._sourceURL); + try { + navigateToURL(request, "_blank"); + } catch(error:Error) { + }; + } + private function visitWebsite(e:ContextMenuEvent):void{ + var url:String = Away3D.WEBSITE_URL; + var request:URLRequest = new URLRequest(url); + try { + navigateToURL(request); + } catch(error:Error) { + }; + } + private function initRightClickMenu():void{ + this._menu0 = new ContextMenuItem(((((("Away3D.com\tv" + Away3D.MAJOR_VERSION) + ".") + Away3D.MINOR_VERSION) + ".") + Away3D.REVISION), true, true, true); + this._menu1 = new ContextMenuItem("View Source", true, true, true); + this._menu0.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, this.visitWebsite); + this._menu1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, this.viewSource); + this._ViewContextMenu = new ContextMenu(); + this.updateRightClickMenu(); + } + private function updateRightClickMenu():void{ + if (this._rightClickMenuEnabled){ + this._ViewContextMenu.customItems = ((this._sourceURL) ? [this._menu0, this._menu1] : [this._menu0]); + } else { + this._ViewContextMenu.customItems = []; + }; + contextMenu = this._ViewContextMenu; + } + public function get rightClickMenuEnabled():Boolean{ + return (this._rightClickMenuEnabled); + } + public function set rightClickMenuEnabled(val:Boolean):void{ + this._rightClickMenuEnabled = val; + this.updateRightClickMenu(); + } + public function get stage3DProxy():Stage3DProxy{ + return (this._stage3DProxy); + } + public function set stage3DProxy(stage3DProxy:Stage3DProxy):void{ + this._stage3DProxy = stage3DProxy; + this._renderer.stage3DProxy = (this._depthRenderer.stage3DProxy = this._stage3DProxy); + super.x = this._stage3DProxy.x; + this._localPos.x = this._stage3DProxy.x; + this._globalPos.x = ((parent) ? parent.localToGlobal(this._localPos).x : this._stage3DProxy.x); + super.y = this._stage3DProxy.y; + this._localPos.y = this._stage3DProxy.y; + this._globalPos.y = ((parent) ? parent.localToGlobal(this._localPos).y : this._stage3DProxy.y); + this._viewScissoRect = new Rectangle(this._stage3DProxy.x, this._stage3DProxy.y, this._stage3DProxy.width, this._stage3DProxy.height); + } + public function get forceMouseMove():Boolean{ + return (this._mouse3DManager.forceMouseMove); + } + public function set forceMouseMove(value:Boolean):void{ + this._mouse3DManager.forceMouseMove = value; + } + public function get background():Texture2DBase{ + return (this._background); + } + public function set background(value:Texture2DBase):void{ + this._background = value; + this._renderer.background = this._background; + } + private function initHitField():void{ + this._hitField = new Sprite(); + this._hitField.alpha = 0; + this._hitField.doubleClickEnabled = true; + this._hitField.graphics.beginFill(0); + this._hitField.graphics.drawRect(0, 0, 100, 100); + addChild(this._hitField); + } + override public function get filters():Array{ + throw (new Error("filters is not supported in View3D. Use filters3d instead.")); + } + override public function set filters(value:Array):void{ + throw (new Error("filters is not supported in View3D. Use filters3d instead.")); + } + public function get filters3d():Array{ + return (((this._filter3DRenderer) ? this._filter3DRenderer.filters : null)); + } + public function set filters3d(value:Array):void{ + if (((value) && ((value.length == 0)))){ + value = null; + }; + if (((this._filter3DRenderer) && (!(value)))){ + this._filter3DRenderer.dispose(); + this._filter3DRenderer = null; + } else { + if (((!(this._filter3DRenderer)) && (value))){ + this._filter3DRenderer = new Filter3DRenderer(this.stage3DProxy); + this._filter3DRenderer.filters = value; + }; + }; + if (this._filter3DRenderer){ + this._filter3DRenderer.filters = value; + this._requireDepthRender = this._filter3DRenderer.requireDepthRender; + } else { + this._requireDepthRender = false; + if (this._depthRender){ + this._depthRender.dispose(); + this._depthRender = null; + }; + }; + } + public function get renderer():RendererBase{ + return (this._renderer); + } + public function set renderer(value:RendererBase):void{ + this._renderer.dispose(); + this._renderer = value; + this._entityCollector = this._renderer.createEntityCollector(); + this._renderer.stage3DProxy = this._stage3DProxy; + this._renderer.antiAlias = this._antiAlias; + this._renderer.backgroundR = (((this._backgroundColor >> 16) & 0xFF) / 0xFF); + this._renderer.backgroundG = (((this._backgroundColor >> 8) & 0xFF) / 0xFF); + this._renderer.backgroundB = ((this._backgroundColor & 0xFF) / 0xFF); + this._renderer.backgroundAlpha = this._backgroundAlpha; + this._renderer.viewWidth = this._width; + this._renderer.viewHeight = this._height; + this.invalidateBackBuffer(); + } + private function invalidateBackBuffer():void{ + this._backBufferInvalid = true; + } + public function get backgroundColor():uint{ + return (this._backgroundColor); + } + public function set backgroundColor(value:uint):void{ + this._backgroundColor = value; + this._renderer.backgroundR = (((value >> 16) & 0xFF) / 0xFF); + this._renderer.backgroundG = (((value >> 8) & 0xFF) / 0xFF); + this._renderer.backgroundB = ((value & 0xFF) / 0xFF); + } + public function get backgroundAlpha():Number{ + return (this._backgroundAlpha); + } + public function set backgroundAlpha(value:Number):void{ + if (value > 1){ + value = 1; + } else { + if (value < 0){ + value = 0; + }; + }; + this._renderer.backgroundAlpha = value; + this._backgroundAlpha = value; + } + public function get camera():Camera3D{ + return (this._camera); + } + public function set camera(camera:Camera3D):void{ + this._camera = camera; + if (this._scene){ + this._camera.partition = this._scene.partition; + }; + } + public function get scene():Scene3D{ + return (this._scene); + } + public function set scene(scene:Scene3D):void{ + this._scene = scene; + if (this._camera){ + this._camera.partition = this._scene.partition; + }; + } + public function get deltaTime():uint{ + return (this._deltaTime); + } + override public function get width():Number{ + return (this._width); + } + override public function set width(value:Number):void{ + if (((((this._stage3DProxy) && (this._stage3DProxy.usesSoftwareRendering))) && ((value > 0x0800)))){ + value = 0x0800; + }; + if (this._width == value){ + return; + }; + if (this._rttBufferManager){ + this._rttBufferManager.viewWidth = value; + }; + this._hitField.width = value; + this._width = value; + this._aspectRatio = (this._width / this._height); + this._depthTextureInvalid = true; + this._renderer.viewWidth = value; + this._viewScissoRect.width = value; + this.invalidateBackBuffer(); + } + override public function get height():Number{ + return (this._height); + } + override public function set height(value:Number):void{ + if (((((this._stage3DProxy) && (this._stage3DProxy.usesSoftwareRendering))) && ((value > 0x0800)))){ + value = 0x0800; + }; + if (this._height == value){ + return; + }; + if (this._rttBufferManager){ + this._rttBufferManager.viewHeight = value; + }; + this._hitField.height = value; + this._height = value; + this._aspectRatio = (this._width / this._height); + this._depthTextureInvalid = true; + this._renderer.viewHeight = value; + this._viewScissoRect.height = value; + this.invalidateBackBuffer(); + } + override public function set x(value:Number):void{ + super.x = value; + this._localPos.x = value; + this._globalPos.x = ((parent) ? parent.localToGlobal(this._localPos).x : value); + this._viewScissoRect.x = value; + if (((this._stage3DProxy) && (!(this._shareContext)))){ + this._stage3DProxy.x = this._globalPos.x; + }; + } + override public function set y(value:Number):void{ + super.y = value; + this._localPos.y = value; + this._globalPos.y = ((parent) ? parent.localToGlobal(this._localPos).y : value); + this._viewScissoRect.y = value; + if (((this._stage3DProxy) && (!(this._shareContext)))){ + this._stage3DProxy.y = this._globalPos.y; + }; + } + override public function set visible(value:Boolean):void{ + super.visible = value; + if (((this._stage3DProxy) && (!(this._shareContext)))){ + this._stage3DProxy.visible = value; + }; + } + public function get antiAlias():uint{ + return (this._antiAlias); + } + public function set antiAlias(value:uint):void{ + this._antiAlias = value; + this._renderer.antiAlias = value; + this.invalidateBackBuffer(); + } + public function get renderedFacesCount():uint{ + return (this._entityCollector.numTriangles); + } + public function get shareContext():Boolean{ + return (this._shareContext); + } + public function set shareContext(value:Boolean):void{ + this._shareContext = value; + } + protected function updateBackBuffer():void{ + if (((this._stage3DProxy.context3D) && (!(this._shareContext)))){ + if (((this._width) && (this._height))){ + if (this._stage3DProxy.usesSoftwareRendering){ + if (this._width > 0x0800){ + this._width = 0x0800; + }; + if (this._height > 0x0800){ + this._height = 0x0800; + }; + }; + this._stage3DProxy.configureBackBuffer(this._width, this._height, this._antiAlias, true); + this._backBufferInvalid = false; + } else { + this.width = stage.stageWidth; + this.height = stage.stageHeight; + }; + }; + } + public function addSourceURL(url:String):void{ + this._sourceURL = url; + this.updateRightClickMenu(); + } + public function render():void{ + if (!(this.stage3DProxy.recoverFromDisposal())){ + this._backBufferInvalid = true; + return; + }; + if (this._backBufferInvalid){ + this.updateBackBuffer(); + }; + if (!(this._parentIsStage)){ + this.updateGlobalPos(); + }; + this.updateTime(); + this._entityCollector.clear(); + this.updateViewSizeData(); + this._scene.traversePartitions(this._entityCollector); + this._mouse3DManager.updateCollider(this); + if (this._requireDepthRender){ + this.renderSceneDepth(this._entityCollector); + }; + if (((this._filter3DRenderer) && (this._stage3DProxy._context3D))){ + this._renderer.render(this._entityCollector, this._filter3DRenderer.getMainInputTexture(this._stage3DProxy), this._rttBufferManager.renderToTextureRect); + this._filter3DRenderer.render(this._stage3DProxy, this.camera, this._depthRender); + if (!(this._shareContext)){ + this._stage3DProxy._context3D.present(); + }; + } else { + this._renderer.shareContext = this._shareContext; + if (this._shareContext){ + this._renderer.render(this._entityCollector, null, this._viewScissoRect); + } else { + this._renderer.render(this._entityCollector); + }; + }; + this._entityCollector.cleanUp(); + this._mouse3DManager.fireMouseEvents(); + } + protected function updateGlobalPos():void{ + var globalPos:Point = parent.localToGlobal(this._localPos); + if (this._globalPos.x != globalPos.x){ + this._stage3DProxy.x = globalPos.x; + }; + if (this._globalPos.y != globalPos.y){ + this._stage3DProxy.y = globalPos.y; + }; + this._globalPos = globalPos; + } + protected function updateTime():void{ + var time:Number = getTimer(); + if (this._time == 0){ + this._time = time; + }; + this._deltaTime = (time - this._time); + this._time = time; + } + private function updateViewSizeData():void{ + this._camera.lens.aspectRatio = this._aspectRatio; + this._entityCollector.camera = this._camera; + if (((this._filter3DRenderer) || (this._renderer.renderToTexture))){ + this._renderer.textureRatioX = this._rttBufferManager.textureRatioX; + this._renderer.textureRatioY = this._rttBufferManager.textureRatioY; + } else { + this._renderer.textureRatioX = 1; + this._renderer.textureRatioY = 1; + }; + } + protected function renderSceneDepth(entityCollector:EntityCollector):void{ + if (((this._depthTextureInvalid) || (!(this._depthRender)))){ + this.initDepthTexture(this._stage3DProxy._context3D); + }; + this._depthRenderer.textureRatioX = this._rttBufferManager.textureRatioX; + this._depthRenderer.textureRatioY = this._rttBufferManager.textureRatioY; + this._depthRenderer.render(entityCollector, this._depthRender); + } + private function initDepthTexture(context:Context3D):void{ + this._depthTextureInvalid = false; + if (this._depthRender){ + this._depthRender.dispose(); + }; + this._depthRender = context.createTexture(this._rttBufferManager.textureWidth, this._rttBufferManager.textureHeight, Context3DTextureFormat.BGRA, true); + } + public function dispose():void{ + this._stage3DProxy.dispose(); + this._renderer.dispose(); + if (this._depthRender){ + this._depthRender.dispose(); + }; + if (this._rttBufferManager){ + this._rttBufferManager.dispose(); + }; + this._mouse3DManager.disableMouseListeners(this); + this._rttBufferManager = null; + this._depthRender = null; + this._mouse3DManager = null; + this._depthRenderer = null; + this._stage3DProxy = null; + this._renderer = null; + this._entityCollector = null; + } + public function project(point3d:Vector3D):Vector3D{ + var v:Vector3D = this._camera.project(point3d); + v.x = (((v.x + 1) * this._width) / 2); + v.y = (((v.y + 1) * this._height) / 2); + return (v); + } + public function unproject(mX:Number, mY:Number, mZ:Number=0):Vector3D{ + return (this._camera.unproject((((mX * 2) - this._width) / this._width), (((mY * 2) - this._height) / this._height), mZ)); + } + public function getRay(mX:Number, mY:Number, mZ:Number=0):Vector3D{ + return (this._camera.getRay((((mX * 2) - this._width) / this._width), (((mY * 2) - this._height) / this._height), mZ)); + } + public function get mousePicker():IPicker{ + return (this._mouse3DManager.mousePicker); + } + public function set mousePicker(value:IPicker):void{ + this._mouse3DManager.mousePicker = value; + } + function get entityCollector():EntityCollector{ + return (this._entityCollector); + } + private function onAddedToStage(event:Event):void{ + if (this._addedToStage){ + return; + }; + this._addedToStage = true; + this._stage3DManager = Stage3DManager.getInstance(stage); + if (!(this._stage3DProxy)){ + this._stage3DProxy = this._stage3DManager.getFreeStage3DProxy(this._forceSoftware); + }; + this._stage3DProxy.x = this._globalPos.x; + this._rttBufferManager = RTTBufferManager.getInstance(this._stage3DProxy); + this._stage3DProxy.y = this._globalPos.y; + if (this._width == 0){ + this.width = stage.stageWidth; + } else { + this._rttBufferManager.viewWidth = this._width; + }; + if (this._height == 0){ + this.height = stage.stageHeight; + } else { + this._rttBufferManager.viewHeight = this._height; + }; + this._renderer.stage3DProxy = (this._depthRenderer.stage3DProxy = this._stage3DProxy); + } + private function onAdded(event:Event):void{ + this._parentIsStage = (parent == stage); + this._globalPos = parent.localToGlobal(new Point(x, y)); + if (this._stage3DProxy){ + this._stage3DProxy.x = this._globalPos.x; + this._stage3DProxy.y = this._globalPos.y; + }; + } + override public function set z(value:Number):void{ + } + override public function set scaleZ(value:Number):void{ + } + override public function set rotation(value:Number):void{ + } + override public function set rotationX(value:Number):void{ + } + override public function set rotationY(value:Number):void{ + } + override public function set rotationZ(value:Number):void{ + } + override public function set transform(value:Transform):void{ + } + override public function set scaleX(value:Number):void{ + } + override public function set scaleY(value:Number):void{ + } + + } +}//package away3d.containers diff --git a/flash_decompiled/watchdog/away3d/controllers/ControllerBase.as b/flash_decompiled/watchdog/away3d/controllers/ControllerBase.as new file mode 100644 index 0000000..b13223f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/controllers/ControllerBase.as @@ -0,0 +1,54 @@ +package away3d.controllers { + import away3d.entities.*; + + public class ControllerBase { + + protected var _autoUpdate:Boolean = true; + protected var _targetObject:Entity; + + public function ControllerBase(targetObject:Entity=null):void{ + super(); + this.targetObject = targetObject; + } + protected function notifyUpdate():void{ + if (((((this._targetObject) && (this._targetObject.implicitPartition))) && (this._autoUpdate))){ + this._targetObject.implicitPartition.markForUpdate(this._targetObject); + }; + } + public function get targetObject():Entity{ + return (this._targetObject); + } + public function set targetObject(val:Entity):void{ + if (this._targetObject == val){ + return; + }; + if (((this._targetObject) && (this._autoUpdate))){ + this._targetObject._controller = null; + }; + this._targetObject = val; + if (((this._targetObject) && (this._autoUpdate))){ + this._targetObject._controller = this; + }; + this.notifyUpdate(); + } + public function get autoUpdate():Boolean{ + return (this._autoUpdate); + } + public function set autoUpdate(val:Boolean):void{ + if (this._autoUpdate == val){ + return; + }; + this._autoUpdate = val; + if (this._targetObject){ + if (this._autoUpdate){ + this._targetObject._controller = this; + } else { + this._targetObject._controller = null; + }; + }; + } + public function update():void{ + } + + } +}//package away3d.controllers diff --git a/flash_decompiled/watchdog/away3d/core/base/Geometry.as b/flash_decompiled/watchdog/away3d/core/base/Geometry.as new file mode 100644 index 0000000..ce7a0bb --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/Geometry.as @@ -0,0 +1,91 @@ +package away3d.core.base { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.library.assets.*; + import away3d.events.*; + + public class Geometry extends NamedAssetBase implements IAsset { + + private var _subGeometries:Vector.; + + public function Geometry(){ + super(); + this._subGeometries = new Vector.(); + } + public function applyTransformation(transform:Matrix3D):void{ + var len:uint = this._subGeometries.length; + var i:int; + while (i < len) { + this._subGeometries[i].applyTransformation(transform); + i++; + }; + } + public function get assetType():String{ + return (AssetType.GEOMETRY); + } + public function get subGeometries():Vector.{ + return (this._subGeometries); + } + public function addSubGeometry(subGeometry:SubGeometry):void{ + this._subGeometries.push(subGeometry); + subGeometry.parentGeometry = this; + if (hasEventListener(GeometryEvent.SUB_GEOMETRY_ADDED)){ + dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_ADDED, subGeometry)); + }; + this.invalidateBounds(subGeometry); + } + public function removeSubGeometry(subGeometry:SubGeometry):void{ + this._subGeometries.splice(this._subGeometries.indexOf(subGeometry), 1); + subGeometry.parentGeometry = null; + if (hasEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED)){ + dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_REMOVED, subGeometry)); + }; + this.invalidateBounds(subGeometry); + } + public function clone():Geometry{ + var clone:Geometry = new Geometry(); + var len:uint = this._subGeometries.length; + var i:int; + while (i < len) { + clone.addSubGeometry(this._subGeometries[i].clone()); + i++; + }; + return (clone); + } + public function scale(scale:Number):void{ + var numSubGeoms:uint = this._subGeometries.length; + var i:uint; + while (i < numSubGeoms) { + this._subGeometries[i].scale(scale); + i++; + }; + } + public function dispose():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = this._subGeometries.length; + var i:uint; + while (i < numSubGeoms) { + subGeom = this._subGeometries[0]; + this.removeSubGeometry(subGeom); + subGeom.dispose(); + i++; + }; + } + public function scaleUV(scaleU:Number=1, scaleV:Number=1):void{ + var numSubGeoms:uint = this._subGeometries.length; + var i:uint; + while (i < numSubGeoms) { + this._subGeometries[i].scaleUV(scaleU, scaleV); + i++; + }; + } + function validate():void{ + } + function invalidateBounds(subGeom:SubGeometry):void{ + if (hasEventListener(GeometryEvent.BOUNDS_INVALID)){ + dispatchEvent(new GeometryEvent(GeometryEvent.BOUNDS_INVALID, subGeom)); + }; + } + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/IMaterialOwner.as b/flash_decompiled/watchdog/away3d/core/base/IMaterialOwner.as new file mode 100644 index 0000000..a4f9bdd --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/IMaterialOwner.as @@ -0,0 +1,12 @@ +package away3d.core.base { + import away3d.materials.*; + import away3d.animators.*; + + public interface IMaterialOwner { + + function get material():MaterialBase; + function set material(_arg1:MaterialBase):void; + function get animator():IAnimator; + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/IRenderable.as b/flash_decompiled/watchdog/away3d/core/base/IRenderable.as new file mode 100644 index 0000000..3df4c77 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/IRenderable.as @@ -0,0 +1,40 @@ +package away3d.core.base { + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.entities.*; + import __AS3__.vec.*; + + public interface IRenderable extends IMaterialOwner { + + function get sceneTransform():Matrix3D; + function get inverseSceneTransform():Matrix3D; + function get modelViewProjection():Matrix3D; + function getModelViewProjectionUnsafe():Matrix3D; + function get zIndex():Number; + function get mouseEnabled():Boolean; + function getVertexBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getCustomBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getUVBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getSecondaryUVBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getVertexNormalBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getVertexTangentBuffer(_arg1:Stage3DProxy):VertexBuffer3D; + function getIndexBuffer(_arg1:Stage3DProxy):IndexBuffer3D; + function getIndexBuffer2(_arg1:Stage3DProxy):IndexBuffer3D; + function get numTriangles():uint; + function get numTriangles2():uint; + function get sourceEntity():Entity; + function get castsShadows():Boolean; + function get vertexData():Vector.; + function get indexData():Vector.; + function get UVData():Vector.; + function get uvTransform():Matrix; + function get vertexBufferOffset():int; + function get normalBufferOffset():int; + function get tangentBufferOffset():int; + function get UVBufferOffset():int; + function get secondaryUVBufferOffset():int; + function get shaderPickingDetails():Boolean; + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/Object3D.as b/flash_decompiled/watchdog/away3d/core/base/Object3D.as new file mode 100644 index 0000000..e230abb --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/Object3D.as @@ -0,0 +1,480 @@ +package away3d.core.base { + import away3d.events.*; + import away3d.core.math.*; + import flash.geom.*; + import __AS3__.vec.*; + import away3d.controllers.*; + import away3d.library.assets.*; + + public class Object3D extends NamedAssetBase { + + var _controller:ControllerBase; + private var _smallestNumber:Number = 1E-22; + private var _transformDirty:Boolean = true; + private var _positionDirty:Boolean; + private var _rotationDirty:Boolean; + private var _scaleDirty:Boolean; + private var _positionChanged:Object3DEvent; + private var _rotationChanged:Object3DEvent; + private var _scaleChanged:Object3DEvent; + private var _rotationX:Number = 0; + private var _rotationY:Number = 0; + private var _rotationZ:Number = 0; + private var _eulers:Vector3D; + private var _flipY:Matrix3D; + private var _listenToPositionChanged:Boolean; + private var _listenToRotationChanged:Boolean; + private var _listenToScaleChanged:Boolean; + protected var _transform:Matrix3D; + protected var _scaleX:Number = 1; + protected var _scaleY:Number = 1; + protected var _scaleZ:Number = 1; + protected var _x:Number = 0; + protected var _y:Number = 0; + protected var _z:Number = 0; + protected var _pivotPoint:Vector3D; + protected var _pivotZero:Boolean = true; + protected var _pos:Vector3D; + protected var _rot:Vector3D; + protected var _sca:Vector3D; + protected var _transformComponents:Vector.; + public var extra:Object; + + public function Object3D(){ + this._eulers = new Vector3D(); + this._flipY = new Matrix3D(); + this._transform = new Matrix3D(); + this._pivotPoint = new Vector3D(); + this._pos = new Vector3D(); + this._rot = new Vector3D(); + this._sca = new Vector3D(); + super(); + this._transformComponents = new Vector.(3, true); + this._transformComponents[0] = this._pos; + this._transformComponents[1] = this._rot; + this._transformComponents[2] = this._sca; + this._transform.identity(); + this._flipY.appendScale(1, -1, 1); + } + private function invalidatePivot():void{ + this._pivotZero = (((((this._pivotPoint.x == 0)) && ((this._pivotPoint.y == 0)))) && ((this._pivotPoint.z == 0))); + this.invalidateTransform(); + } + private function invalidatePosition():void{ + if (this._positionDirty){ + return; + }; + this._positionDirty = true; + this.invalidateTransform(); + if (this._listenToPositionChanged){ + this.notifyPositionChanged(); + }; + } + private function notifyPositionChanged():void{ + if (!(this._positionChanged)){ + this._positionChanged = new Object3DEvent(Object3DEvent.POSITION_CHANGED, this); + }; + dispatchEvent(this._positionChanged); + } + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{ + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + switch (type){ + case Object3DEvent.POSITION_CHANGED: + this._listenToPositionChanged = true; + break; + case Object3DEvent.ROTATION_CHANGED: + this._listenToRotationChanged = true; + break; + case Object3DEvent.SCALE_CHANGED: + this._listenToRotationChanged = true; + break; + }; + } + override public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{ + super.removeEventListener(type, listener, useCapture); + if (hasEventListener(type)){ + return; + }; + switch (type){ + case Object3DEvent.POSITION_CHANGED: + this._listenToPositionChanged = false; + break; + case Object3DEvent.ROTATION_CHANGED: + this._listenToRotationChanged = false; + break; + case Object3DEvent.SCALE_CHANGED: + this._listenToScaleChanged = false; + break; + }; + } + private function invalidateRotation():void{ + if (this._rotationDirty){ + return; + }; + this._rotationDirty = true; + this.invalidateTransform(); + if (this._listenToRotationChanged){ + this.notifyRotationChanged(); + }; + } + private function notifyRotationChanged():void{ + if (!(this._rotationChanged)){ + this._rotationChanged = new Object3DEvent(Object3DEvent.ROTATION_CHANGED, this); + }; + dispatchEvent(this._rotationChanged); + } + private function invalidateScale():void{ + if (this._scaleDirty){ + return; + }; + this._scaleDirty = true; + this.invalidateTransform(); + if (this._listenToScaleChanged){ + this.notifyScaleChanged(); + }; + } + private function notifyScaleChanged():void{ + if (!(this._scaleChanged)){ + this._scaleChanged = new Object3DEvent(Object3DEvent.SCALE_CHANGED, this); + }; + dispatchEvent(this._scaleChanged); + } + public function get x():Number{ + return (this._x); + } + public function set x(val:Number):void{ + if (this._x == val){ + return; + }; + this._x = val; + this.invalidatePosition(); + } + public function get y():Number{ + return (this._y); + } + public function set y(val:Number):void{ + if (this._y == val){ + return; + }; + this._y = val; + this.invalidatePosition(); + } + public function get z():Number{ + return (this._z); + } + public function set z(val:Number):void{ + if (this._z == val){ + return; + }; + this._z = val; + this.invalidatePosition(); + } + public function get rotationX():Number{ + return ((this._rotationX * MathConsts.RADIANS_TO_DEGREES)); + } + public function set rotationX(val:Number):void{ + if (this.rotationX == val){ + return; + }; + this._rotationX = (val * MathConsts.DEGREES_TO_RADIANS); + this.invalidateRotation(); + } + public function get rotationY():Number{ + return ((this._rotationY * MathConsts.RADIANS_TO_DEGREES)); + } + public function set rotationY(val:Number):void{ + if (this.rotationY == val){ + return; + }; + this._rotationY = (val * MathConsts.DEGREES_TO_RADIANS); + this.invalidateRotation(); + } + public function get rotationZ():Number{ + return ((this._rotationZ * MathConsts.RADIANS_TO_DEGREES)); + } + public function set rotationZ(val:Number):void{ + if (this.rotationZ == val){ + return; + }; + this._rotationZ = (val * MathConsts.DEGREES_TO_RADIANS); + this.invalidateRotation(); + } + public function get scaleX():Number{ + return (this._scaleX); + } + public function set scaleX(val:Number):void{ + if (this._scaleX == val){ + return; + }; + this._scaleX = val; + this.invalidateScale(); + } + public function get scaleY():Number{ + return (this._scaleY); + } + public function set scaleY(val:Number):void{ + if (this._scaleY == val){ + return; + }; + this._scaleY = val; + this.invalidateScale(); + } + public function get scaleZ():Number{ + return (this._scaleZ); + } + public function set scaleZ(val:Number):void{ + if (this._scaleZ == val){ + return; + }; + this._scaleZ = val; + this.invalidateScale(); + } + public function get eulers():Vector3D{ + this._eulers.x = (this._rotationX * MathConsts.RADIANS_TO_DEGREES); + this._eulers.y = (this._rotationY * MathConsts.RADIANS_TO_DEGREES); + this._eulers.z = (this._rotationZ * MathConsts.RADIANS_TO_DEGREES); + return (this._eulers); + } + public function set eulers(value:Vector3D):void{ + this._rotationX = (value.x * MathConsts.DEGREES_TO_RADIANS); + this._rotationY = (value.y * MathConsts.DEGREES_TO_RADIANS); + this._rotationZ = (value.z * MathConsts.DEGREES_TO_RADIANS); + this.invalidateRotation(); + } + public function get transform():Matrix3D{ + if (this._transformDirty){ + this.updateTransform(); + }; + return (this._transform); + } + public function set transform(val:Matrix3D):void{ + var vec:Vector3D; + var raw:Vector.; + if (!(val.rawData[uint(0)])){ + raw = Matrix3DUtils.RAW_DATA_CONTAINER; + val.copyRawDataTo(raw); + raw[uint(0)] = this._smallestNumber; + val.copyRawDataFrom(raw); + }; + var elements:Vector. = val.decompose(); + vec = elements[0]; + if (((((!((this._x == vec.x))) || (!((this._y == vec.y))))) || (!((this._z == vec.z))))){ + this._x = vec.x; + this._y = vec.y; + this._z = vec.z; + this.invalidatePosition(); + }; + vec = elements[1]; + if (((((!((this._rotationX == vec.x))) || (!((this._rotationY == vec.y))))) || (!((this._rotationZ == vec.z))))){ + this._rotationX = vec.x; + this._rotationY = vec.y; + this._rotationZ = vec.z; + this.invalidateRotation(); + }; + vec = elements[2]; + if (((((!((this._scaleX == vec.x))) || (!((this._scaleY == vec.y))))) || (!((this._scaleZ == vec.z))))){ + this._scaleX = vec.x; + this._scaleY = vec.y; + this._scaleZ = vec.z; + this.invalidateScale(); + }; + } + public function get pivotPoint():Vector3D{ + return (this._pivotPoint); + } + public function set pivotPoint(pivot:Vector3D):void{ + this._pivotPoint = pivot.clone(); + this.invalidatePivot(); + } + public function get position():Vector3D{ + this.transform.copyColumnTo(3, this._pos); + return (this._pos.clone()); + } + public function set position(value:Vector3D):void{ + this._x = value.x; + this._y = value.y; + this._z = value.z; + this.invalidatePosition(); + } + public function get forwardVector():Vector3D{ + return (Matrix3DUtils.getForward(this.transform)); + } + public function get rightVector():Vector3D{ + return (Matrix3DUtils.getRight(this.transform)); + } + public function get upVector():Vector3D{ + return (Matrix3DUtils.getUp(this.transform)); + } + public function get backVector():Vector3D{ + var director:Vector3D = Matrix3DUtils.getForward(this.transform); + director.negate(); + return (director); + } + public function get leftVector():Vector3D{ + var director:Vector3D = Matrix3DUtils.getRight(this.transform); + director.negate(); + return (director); + } + public function get downVector():Vector3D{ + var director:Vector3D = Matrix3DUtils.getUp(this.transform); + director.negate(); + return (director); + } + public function scale(value:Number):void{ + this._scaleX = (this._scaleX * value); + this._scaleY = (this._scaleY * value); + this._scaleZ = (this._scaleZ * value); + this.invalidateScale(); + } + public function moveForward(distance:Number):void{ + this.translateLocal(Vector3D.Z_AXIS, distance); + } + public function moveBackward(distance:Number):void{ + this.translateLocal(Vector3D.Z_AXIS, -(distance)); + } + public function moveLeft(distance:Number):void{ + this.translateLocal(Vector3D.X_AXIS, -(distance)); + } + public function moveRight(distance:Number):void{ + this.translateLocal(Vector3D.X_AXIS, distance); + } + public function moveUp(distance:Number):void{ + this.translateLocal(Vector3D.Y_AXIS, distance); + } + public function moveDown(distance:Number):void{ + this.translateLocal(Vector3D.Y_AXIS, -(distance)); + } + public function moveTo(dx:Number, dy:Number, dz:Number):void{ + if ((((((this._x == dx)) && ((this._y == dy)))) && ((this._z == dz)))){ + return; + }; + this._x = dx; + this._y = dy; + this._z = dz; + this.invalidatePosition(); + } + public function movePivot(dx:Number, dy:Number, dz:Number):void{ + this._pivotPoint = ((this._pivotPoint) || (new Vector3D())); + this._pivotPoint.x = (this._pivotPoint.x + dx); + this._pivotPoint.y = (this._pivotPoint.y + dy); + this._pivotPoint.z = (this._pivotPoint.z + dz); + this.invalidatePivot(); + } + public function translate(axis:Vector3D, distance:Number):void{ + var x:Number = axis.x; + var y:Number = axis.y; + var z:Number = axis.z; + var len:Number = (distance / Math.sqrt((((x * x) + (y * y)) + (z * z)))); + this._x = (this._x + (x * len)); + this._y = (this._y + (y * len)); + this._z = (this._z + (z * len)); + this.invalidatePosition(); + } + public function translateLocal(axis:Vector3D, distance:Number):void{ + var x:Number = axis.x; + var y:Number = axis.y; + var z:Number = axis.z; + var len:Number = (distance / Math.sqrt((((x * x) + (y * y)) + (z * z)))); + this.transform.prependTranslation((x * len), (y * len), (z * len)); + this._transform.copyColumnTo(3, this._pos); + this._x = this._pos.x; + this._y = this._pos.y; + this._z = this._pos.z; + this.invalidatePosition(); + } + public function pitch(angle:Number):void{ + this.rotate(Vector3D.X_AXIS, angle); + } + public function yaw(angle:Number):void{ + this.rotate(Vector3D.Y_AXIS, angle); + } + public function roll(angle:Number):void{ + this.rotate(Vector3D.Z_AXIS, angle); + } + public function clone():Object3D{ + var clone:Object3D = new Object3D(); + clone.pivotPoint = this.pivotPoint; + clone.transform = this.transform; + clone.name = name; + return (clone); + } + public function rotateTo(ax:Number, ay:Number, az:Number):void{ + this._rotationX = (ax * MathConsts.DEGREES_TO_RADIANS); + this._rotationY = (ay * MathConsts.DEGREES_TO_RADIANS); + this._rotationZ = (az * MathConsts.DEGREES_TO_RADIANS); + this.invalidateRotation(); + } + public function rotate(axis:Vector3D, angle:Number):void{ + this.transform.prependRotation(angle, axis); + this.transform = this.transform; + } + public function lookAt(target:Vector3D, upAxis:Vector3D=null):void{ + var yAxis:Vector3D; + var zAxis:Vector3D; + var xAxis:Vector3D; + var raw:Vector.; + upAxis = ((upAxis) || (Vector3D.Y_AXIS)); + zAxis = target.subtract(this.position); + zAxis.normalize(); + xAxis = upAxis.crossProduct(zAxis); + xAxis.normalize(); + if (xAxis.length < 0.05){ + xAxis = upAxis.crossProduct(Vector3D.Z_AXIS); + }; + yAxis = zAxis.crossProduct(xAxis); + raw = Matrix3DUtils.RAW_DATA_CONTAINER; + raw[uint(0)] = (this._scaleX * xAxis.x); + raw[uint(1)] = (this._scaleX * xAxis.y); + raw[uint(2)] = (this._scaleX * xAxis.z); + raw[uint(3)] = 0; + raw[uint(4)] = (this._scaleY * yAxis.x); + raw[uint(5)] = (this._scaleY * yAxis.y); + raw[uint(6)] = (this._scaleY * yAxis.z); + raw[uint(7)] = 0; + raw[uint(8)] = (this._scaleZ * zAxis.x); + raw[uint(9)] = (this._scaleZ * zAxis.y); + raw[uint(10)] = (this._scaleZ * zAxis.z); + raw[uint(11)] = 0; + raw[uint(12)] = this._x; + raw[uint(13)] = this._y; + raw[uint(14)] = this._z; + raw[uint(15)] = 1; + this._transform.copyRawDataFrom(raw); + this.transform = this.transform; + if (zAxis.z < 0){ + this.rotationY = (180 - this.rotationY); + this.rotationX = (this.rotationX - 180); + this.rotationZ = (this.rotationZ - 180); + }; + } + public function dispose():void{ + } + public function disposeAsset():void{ + this.dispose(); + } + function invalidateTransform():void{ + this._transformDirty = true; + } + protected function updateTransform():void{ + this._pos.x = this._x; + this._pos.y = this._y; + this._pos.z = this._z; + this._rot.x = this._rotationX; + this._rot.y = this._rotationY; + this._rot.z = this._rotationZ; + this._sca.x = this._scaleX; + this._sca.y = this._scaleY; + this._sca.z = this._scaleZ; + this._transform.recompose(this._transformComponents); + if (!(this._pivotZero)){ + this._transform.prependTranslation(-(this._pivotPoint.x), -(this._pivotPoint.y), -(this._pivotPoint.z)); + this._transform.appendTranslation(this._pivotPoint.x, this._pivotPoint.y, this._pivotPoint.z); + }; + this._transformDirty = false; + this._positionDirty = false; + this._rotationDirty = false; + this._scaleDirty = false; + } + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/SubGeometry.as b/flash_decompiled/watchdog/away3d/core/base/SubGeometry.as new file mode 100644 index 0000000..40f9652 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/SubGeometry.as @@ -0,0 +1,938 @@ +package away3d.core.base { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.managers.*; + import flash.geom.*; + + public class SubGeometry { + + private var _parentGeometry:Geometry; + protected var _customData:Vector.; + protected var _vertices:Vector.; + protected var _uvs:Vector.; + protected var _secondaryUvs:Vector.; + protected var _vertexNormals:Vector.; + protected var _vertexTangents:Vector.; + protected var _indices:Vector.; + protected var _indices2:Vector.; + protected var _faceNormalsData:Vector.; + protected var _faceWeights:Vector.; + protected var _faceTangents:Vector.; + protected var _vertexBuffer:Vector.; + protected var _uvBuffer:Vector.; + protected var _secondaryUvBuffer:Vector.; + protected var _vertexNormalBuffer:Vector.; + protected var _vertexTangentBuffer:Vector.; + protected var _customBuffer:Vector.; + protected var _indexBuffer:Vector.; + protected var _indexBuffer2:Vector.; + private var _autoGenerateUVs:Boolean = false; + private var _autoDeriveVertexNormals:Boolean = true; + private var _autoDeriveVertexTangents:Boolean = true; + private var _useFaceWeights:Boolean = false; + protected var _uvsDirty:Boolean = true; + protected var _faceNormalsDirty:Boolean = true; + protected var _faceTangentsDirty:Boolean = true; + protected var _vertexNormalsDirty:Boolean = true; + protected var _vertexTangentsDirty:Boolean = true; + protected var _vertexBufferContext:Vector.; + protected var _uvBufferContext:Vector.; + protected var _secondaryUvBufferContext:Vector.; + protected var _indexBufferContext:Vector.; + protected var _indexBufferContext2:Vector.; + protected var _vertexNormalBufferContext:Vector.; + protected var _vertexTangentBufferContext:Vector.; + protected var _customBufferContext:Vector.; + protected var _numVertices:uint = 0; + protected var _numIndices:uint = 0; + protected var _numIndices2:uint; + protected var _numTriangles:uint; + protected var _numTriangles2:uint; + private var _uvScaleV:Number = 1; + private var _customElementsPerVertex:int; + private var _scaleU:Number = 1; + private var _scaleV:Number = 1; + + public function SubGeometry(){ + this._vertexBuffer = new Vector.(8); + this._uvBuffer = new Vector.(8); + this._secondaryUvBuffer = new Vector.(8); + this._vertexNormalBuffer = new Vector.(8); + this._vertexTangentBuffer = new Vector.(8); + this._indexBuffer = new Vector.(8); + this._indexBuffer2 = new Vector.(8); + this._vertexBufferContext = new Vector.(8); + this._uvBufferContext = new Vector.(8); + this._secondaryUvBufferContext = new Vector.(8); + this._indexBufferContext = new Vector.(8); + this._indexBufferContext2 = new Vector.(8); + this._vertexNormalBufferContext = new Vector.(8); + this._vertexTangentBufferContext = new Vector.(8); + super(); + } + public function get numVertices():uint{ + return (this._numVertices); + } + public function get numTriangles():uint{ + return (this._numTriangles); + } + public function get numTriangles2():uint{ + return (this._numTriangles2); + } + public function get autoGenerateDummyUVs():Boolean{ + return (this._autoGenerateUVs); + } + public function set autoGenerateDummyUVs(value:Boolean):void{ + this._autoGenerateUVs = value; + this._uvsDirty = value; + } + public function get autoDeriveVertexNormals():Boolean{ + return (this._autoDeriveVertexNormals); + } + public function set autoDeriveVertexNormals(value:Boolean):void{ + this._autoDeriveVertexNormals = value; + this._vertexNormalsDirty = value; + } + public function get useFaceWeights():Boolean{ + return (this._useFaceWeights); + } + public function set useFaceWeights(value:Boolean):void{ + this._useFaceWeights = value; + if (this._autoDeriveVertexNormals){ + this._vertexNormalsDirty = true; + }; + if (this._autoDeriveVertexTangents){ + this._vertexTangentsDirty = true; + }; + this._faceNormalsDirty = true; + } + public function get autoDeriveVertexTangents():Boolean{ + return (this._autoDeriveVertexTangents); + } + public function set autoDeriveVertexTangents(value:Boolean):void{ + this._autoDeriveVertexTangents = value; + this._vertexTangentsDirty = value; + } + public function initCustomBuffer(numVertices:int, elementsPerVertex:int):void{ + this._numVertices = numVertices; + this._customElementsPerVertex = elementsPerVertex; + this._customBuffer = new Vector.(8); + this._customBufferContext = new Vector.(8); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._customBufferContext[contextIndex] == context))) || (!(this._customBuffer[contextIndex])))){ + this._customBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, this._customElementsPerVertex); + this._customBuffer[contextIndex].uploadFromVector(this._customData, 0, this._numVertices); + this._customBufferContext[contextIndex] = context; + }; + return (this._customBuffer[contextIndex]); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._vertexBufferContext[contextIndex] == context))) || (!(this._vertexBuffer[contextIndex])))){ + this._vertexBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, 3); + this._vertexBuffer[contextIndex].uploadFromVector(this._vertices, 0, this._numVertices); + this._vertexBufferContext[contextIndex] = context; + }; + return (this._vertexBuffer[contextIndex]); + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((this._autoGenerateUVs) && (this._uvsDirty))){ + this.updateDummyUVs(); + }; + if (((!((this._uvBufferContext[contextIndex] == context))) || (!(this._uvBuffer[contextIndex])))){ + this._uvBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, 2); + this._uvBuffer[contextIndex].uploadFromVector(this._uvs, 0, this._numVertices); + this._uvBufferContext[contextIndex] = context; + }; + return (this._uvBuffer[contextIndex]); + } + public function applyTransformation(transform:Matrix3D):void{ + var i:uint; + var i0:uint; + var i1:uint; + var i2:uint; + var len:uint = (this._vertices.length / 3); + var v3:Vector3D = new Vector3D(); + var bakeNormals:Boolean = !((this._vertexNormals == null)); + var bakeTangents:Boolean = !((this._vertexTangents == null)); + i = 0; + while (i < len) { + i0 = (3 * i); + i1 = (i0 + 1); + i2 = (i0 + 2); + v3.x = this._vertices[i0]; + v3.y = this._vertices[i1]; + v3.z = this._vertices[i2]; + v3 = transform.transformVector(v3); + this._vertices[i0] = v3.x; + this._vertices[i1] = v3.y; + this._vertices[i2] = v3.z; + if (bakeNormals){ + v3.x = this._vertexNormals[i0]; + v3.y = this._vertexNormals[i1]; + v3.z = this._vertexNormals[i2]; + v3 = transform.deltaTransformVector(v3); + this._vertexNormals[i0] = v3.x; + this._vertexNormals[i1] = v3.y; + this._vertexNormals[i2] = v3.z; + }; + if (bakeTangents){ + v3.x = this._vertexTangents[i0]; + v3.y = this._vertexTangents[i1]; + v3.z = this._vertexTangents[i2]; + v3 = transform.deltaTransformVector(v3); + this._vertexTangents[i0] = v3.x; + this._vertexTangents[i1] = v3.y; + this._vertexTangents[i2] = v3.z; + }; + i++; + }; + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._secondaryUvBufferContext[contextIndex] == context))) || (!(this._secondaryUvBuffer[contextIndex])))){ + this._secondaryUvBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, 2); + this._secondaryUvBuffer[contextIndex].uploadFromVector(this._secondaryUvs, 0, this._numVertices); + this._secondaryUvBufferContext[contextIndex] = context; + }; + return (this._secondaryUvBuffer[contextIndex]); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((this._autoDeriveVertexNormals) && (this._vertexNormalsDirty))){ + this.updateVertexNormals(); + }; + if (((!((this._vertexNormalBufferContext[contextIndex] == context))) || (!(this._vertexNormalBuffer[contextIndex])))){ + this._vertexNormalBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, 3); + this._vertexNormalBuffer[contextIndex].uploadFromVector(this._vertexNormals, 0, this._numVertices); + this._vertexNormalBufferContext[contextIndex] = context; + }; + return (this._vertexNormalBuffer[contextIndex]); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (this._vertexTangentsDirty){ + this.updateVertexTangents(); + }; + if (((!((this._vertexTangentBufferContext[contextIndex] == context))) || (!(this._vertexTangentBuffer[contextIndex])))){ + this._vertexTangentBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, 3); + this._vertexTangentBuffer[contextIndex].uploadFromVector(this._vertexTangents, 0, this._numVertices); + this._vertexTangentBufferContext[contextIndex] = context; + }; + return (this._vertexTangentBuffer[contextIndex]); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._indexBufferContext[contextIndex] == context))) || (!(this._indexBuffer[contextIndex])))){ + this._indexBuffer[contextIndex] = context.createIndexBuffer(this._numIndices); + this._indexBuffer[contextIndex].uploadFromVector(this._indices, 0, this._numIndices); + this._indexBufferContext[contextIndex] = context; + }; + return (this._indexBuffer[contextIndex]); + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._indexBufferContext2[contextIndex] == context))) || (!(this._indexBuffer2[contextIndex])))){ + this._indexBuffer2[contextIndex] = context.createIndexBuffer(this._numIndices2); + this._indexBuffer2[contextIndex].uploadFromVector(this._indices2, 0, this._numIndices2); + this._indexBufferContext2[contextIndex] = context; + }; + return (this._indexBuffer2[contextIndex]); + } + public function clone():SubGeometry{ + var clone:SubGeometry = new SubGeometry(); + clone.updateVertexData(this._vertices.concat()); + clone.updateUVData(this._uvs.concat()); + clone.updateIndexData(this._indices.concat()); + if (this._secondaryUvs){ + clone.updateSecondaryUVData(this._secondaryUvs.concat()); + }; + if (!(this._autoDeriveVertexNormals)){ + clone.updateVertexNormalData(this._vertexNormals.concat()); + }; + if (!(this._autoDeriveVertexTangents)){ + clone.updateVertexTangentData(this._vertexTangents.concat()); + }; + return (clone); + } + public function scale(scale:Number):void{ + var len:uint = this._vertices.length; + var i:uint; + while (i < len) { + this._vertices[i] = (this._vertices[i] * scale); + i++; + }; + this.invalidateBuffers(this._vertexBufferContext); + } + public function get scaleU():Number{ + return (this._scaleU); + } + public function get scaleV():Number{ + return (this._scaleV); + } + public function scaleUV(scaleU:Number=1, scaleV:Number=1):void{ + var i:uint; + while (i < this._uvs.length) { + this._uvs[i] = (this._uvs[i] / this._scaleU); + this._uvs[i] = (this._uvs[i] * scaleU); + i++; + this._uvs[i] = (this._uvs[i] / this._scaleV); + this._uvs[i] = (this._uvs[i] * scaleV); + i++; + }; + this._scaleU = scaleU; + this._scaleV = scaleV; + this.invalidateBuffers(this._uvBufferContext); + } + public function dispose():void{ + this.disposeAllVertexBuffers(); + this.disposeIndexBuffers(this._indexBuffer); + this._customBuffer = null; + this._vertexBuffer = null; + this._vertexNormalBuffer = null; + this._uvBuffer = null; + this._secondaryUvBuffer = null; + this._vertexTangentBuffer = null; + this._indexBuffer = null; + this._vertices = null; + this._uvs = null; + this._secondaryUvs = null; + this._vertexNormals = null; + this._vertexTangents = null; + this._indices = null; + this._faceNormalsData = null; + this._faceWeights = null; + this._faceTangents = null; + this._customData = null; + this._vertexBufferContext = null; + this._uvBufferContext = null; + this._secondaryUvBufferContext = null; + this._indexBufferContext = null; + this._vertexNormalBufferContext = null; + this._vertexTangentBufferContext = null; + this._customBufferContext = null; + } + protected function disposeAllVertexBuffers():void{ + this.disposeVertexBuffers(this._vertexBuffer); + this.disposeVertexBuffers(this._vertexNormalBuffer); + this.disposeVertexBuffers(this._uvBuffer); + this.disposeVertexBuffers(this._secondaryUvBuffer); + this.disposeVertexBuffers(this._vertexTangentBuffer); + if (this._customBuffer){ + this.disposeVertexBuffers(this._customBuffer); + }; + } + public function get vertexData():Vector.{ + return (this._vertices); + } + public function updateCustomData(data:Vector.):void{ + this._customData = data; + this.invalidateBuffers(this._customBufferContext); + } + public function updateVertexData(vertices:Vector.):void{ + if (this._autoDeriveVertexNormals){ + this._vertexNormalsDirty = true; + }; + if (this._autoDeriveVertexTangents){ + this._vertexTangentsDirty = true; + }; + this._faceNormalsDirty = true; + this._vertices = vertices; + var numVertices:int = (vertices.length / 3); + if (numVertices != this._numVertices){ + this.disposeAllVertexBuffers(); + }; + this._numVertices = numVertices; + this.invalidateBuffers(this._vertexBufferContext); + this.invalidateBounds(); + } + private function invalidateBounds():void{ + if (this._parentGeometry){ + this._parentGeometry.invalidateBounds(this); + }; + } + public function get UVData():Vector.{ + return (this._uvs); + } + public function get secondaryUVData():Vector.{ + return (this._secondaryUvs); + } + public function updateUVData(uvs:Vector.):void{ + if (this._autoDeriveVertexTangents){ + this._vertexTangentsDirty = true; + }; + this._faceTangentsDirty = true; + this._uvs = uvs; + this.invalidateBuffers(this._uvBufferContext); + } + public function updateSecondaryUVData(uvs:Vector.):void{ + this._secondaryUvs = uvs; + this.invalidateBuffers(this._secondaryUvBufferContext); + } + public function get vertexNormalData():Vector.{ + if (((this._autoDeriveVertexNormals) && (this._vertexNormalsDirty))){ + this.updateVertexNormals(); + }; + return (this._vertexNormals); + } + public function updateVertexNormalData(vertexNormals:Vector.):void{ + this._vertexNormalsDirty = false; + this._autoDeriveVertexNormals = (vertexNormals == null); + this._vertexNormals = vertexNormals; + this.invalidateBuffers(this._vertexNormalBufferContext); + } + public function get vertexTangentData():Vector.{ + if (((this._autoDeriveVertexTangents) && (this._vertexTangentsDirty))){ + this.updateVertexTangents(); + }; + return (this._vertexTangents); + } + public function updateVertexTangentData(vertexTangents:Vector.):void{ + this._vertexTangentsDirty = false; + this._autoDeriveVertexTangents = (vertexTangents == null); + this._vertexTangents = vertexTangents; + this.invalidateBuffers(this._vertexTangentBufferContext); + } + public function get indexData():Vector.{ + return (this._indices); + } + public function updateIndexData(indices:Vector.):void{ + this._indices = indices; + this._numIndices = indices.length; + var numTriangles:int = (this._numIndices / 3); + if (this._numTriangles != numTriangles){ + this.disposeIndexBuffers(this._indexBuffer); + }; + this._numTriangles = numTriangles; + this.invalidateBuffers(this._indexBufferContext); + this._faceNormalsDirty = true; + if (this._autoDeriveVertexNormals){ + this._vertexNormalsDirty = true; + }; + if (this._autoDeriveVertexTangents){ + this._vertexTangentsDirty = true; + }; + } + public function updateIndexData2(indices:Vector.):void{ + this._indices2 = indices; + this._numIndices2 = this._indices2.length; + var numTriangles2:int = (this._numIndices2 / 3); + if (this._numTriangles2 != numTriangles2){ + this.disposeIndexBuffers(this._indexBuffer2); + }; + this._numTriangles2 = numTriangles2; + this.invalidateBuffers(this._indexBufferContext2); + this._faceNormalsDirty = true; + if (this._autoDeriveVertexNormals){ + this._vertexNormalsDirty = true; + }; + if (this._autoDeriveVertexTangents){ + this._vertexTangentsDirty = true; + }; + } + function get faceNormalsData():Vector.{ + if (this._faceNormalsDirty){ + this.updateFaceNormals(); + }; + return (this._faceNormalsData); + } + function get parentGeometry():Geometry{ + return (this._parentGeometry); + } + function set parentGeometry(value:Geometry):void{ + this._parentGeometry = value; + } + protected function invalidateBuffers(buffers:Vector.):void{ + var i:int; + while (i < 8) { + buffers[i] = null; + i++; + }; + } + protected function disposeVertexBuffers(buffers:Vector.):void{ + var i:int; + while (i < 8) { + if (buffers[i]){ + buffers[i].dispose(); + buffers[i] = null; + }; + i++; + }; + } + protected function disposeIndexBuffers(buffers:Vector.):void{ + var i:int; + while (i < 8) { + if (buffers[i]){ + buffers[i].dispose(); + buffers[i] = null; + }; + i++; + }; + } + private function updateVertexNormals():void{ + var v1:uint; + var v2:uint; + var v3:uint; + var i:uint; + var k:uint; + var index:uint; + var weight:uint; + var vx:Number; + var vy:Number; + var vz:Number; + var d:Number; + if (this._faceNormalsDirty){ + this.updateFaceNormals(); + }; + var f1:uint; + var f2:uint = 1; + var f3:uint = 2; + var lenV:uint = this._vertices.length; + if (this._vertexNormals){ + while (v1 < lenV) { + var _temp1 = v1; + v1 = (v1 + 1); + var _local17 = _temp1; + this._vertexNormals[_local17] = 0; + }; + } else { + this._vertexNormals = new Vector.(this._vertices.length, true); + }; + var lenI:uint = this._indices.length; + while (i < lenI) { + weight = ((this._useFaceWeights) ? var _temp2 = k; +k = (k + 1); +this._faceWeights[_temp2] : 1); + var _temp3 = i; + i = (i + 1); + index = (this._indices[_temp3] * 3); + var _temp4 = index; + index = (index + 1); + _local17 = _temp4; + this._vertexNormals[_local17] = (this._vertexNormals[_local17] + (this._faceNormalsData[f1] * weight)); + var _temp5 = index; + index = (index + 1); + var _local18 = _temp5; + this._vertexNormals[_local18] = (this._vertexNormals[_local18] + (this._faceNormalsData[f2] * weight)); + this._vertexNormals[index] = (this._vertexNormals[index] + (this._faceNormalsData[f3] * weight)); + var _temp6 = i; + i = (i + 1); + index = (this._indices[_temp6] * 3); + var _temp7 = index; + index = (index + 1); + var _local19 = _temp7; + this._vertexNormals[_local19] = (this._vertexNormals[_local19] + (this._faceNormalsData[f1] * weight)); + var _temp8 = index; + index = (index + 1); + var _local20 = _temp8; + this._vertexNormals[_local20] = (this._vertexNormals[_local20] + (this._faceNormalsData[f2] * weight)); + this._vertexNormals[index] = (this._vertexNormals[index] + (this._faceNormalsData[f3] * weight)); + var _temp9 = i; + i = (i + 1); + index = (this._indices[_temp9] * 3); + var _temp10 = index; + index = (index + 1); + var _local21 = _temp10; + this._vertexNormals[_local21] = (this._vertexNormals[_local21] + (this._faceNormalsData[f1] * weight)); + var _temp11 = index; + index = (index + 1); + var _local22 = _temp11; + this._vertexNormals[_local22] = (this._vertexNormals[_local22] + (this._faceNormalsData[f2] * weight)); + this._vertexNormals[index] = (this._vertexNormals[index] + (this._faceNormalsData[f3] * weight)); + f1 = (f1 + 3); + f2 = (f2 + 3); + f3 = (f3 + 3); + }; + v1 = 0; + v2 = 1; + v3 = 2; + while (v1 < lenV) { + vx = this._vertexNormals[v1]; + vy = this._vertexNormals[v2]; + vz = this._vertexNormals[v3]; + d = (1 / Math.sqrt((((vx * vx) + (vy * vy)) + (vz * vz)))); + this._vertexNormals[v1] = (this._vertexNormals[v1] * d); + this._vertexNormals[v2] = (this._vertexNormals[v2] * d); + this._vertexNormals[v3] = (this._vertexNormals[v3] * d); + v1 = (v1 + 3); + v2 = (v2 + 3); + v3 = (v3 + 3); + }; + this._vertexNormalsDirty = false; + this.invalidateBuffers(this._vertexNormalBufferContext); + } + private function updateDummyUVs():void{ + var uvs:Vector.; + var i:uint; + var idx:uint; + var uvIdx:uint; + var len:uint = ((this._vertices.length / 3) * 2); + this._uvs = ((this._uvs) || (new Vector.())); + this._uvs.fixed = false; + this._uvs.length = 0; + idx = 0; + uvIdx = 0; + while (idx < len) { + if (uvIdx == 0){ + var _temp1 = idx; + idx = (idx + 1); + var _local6 = _temp1; + this._uvs[_local6] = 0; + var _temp2 = idx; + idx = (idx + 1); + var _local7 = _temp2; + this._uvs[_local7] = 1; + } else { + if (uvIdx == 1){ + var _temp3 = idx; + idx = (idx + 1); + _local6 = _temp3; + this._uvs[_local6] = 0.5; + var _temp4 = idx; + idx = (idx + 1); + _local7 = _temp4; + this._uvs[_local7] = 0; + } else { + if (uvIdx == 2){ + var _temp5 = idx; + idx = (idx + 1); + _local6 = _temp5; + this._uvs[_local6] = 1; + var _temp6 = idx; + idx = (idx + 1); + _local7 = _temp6; + this._uvs[_local7] = 1; + }; + }; + }; + uvIdx++; + if (uvIdx == 3){ + uvIdx = 0; + }; + }; + this._uvs.fixed = true; + this._uvsDirty = false; + this.invalidateBuffers(this._uvBufferContext); + } + private function updateVertexTangents():void{ + var v1:uint; + var v2:uint; + var v3:uint; + var i:uint; + var k:uint; + var index:uint; + var weight:uint; + var vx:Number; + var vy:Number; + var vz:Number; + var d:Number; + if (this._vertexNormalsDirty){ + this.updateVertexNormals(); + }; + if (this._faceTangentsDirty){ + this.updateFaceTangents(); + }; + var f1:uint; + var f2:uint = 1; + var f3:uint = 2; + var lenV:uint = this._vertices.length; + if (this._vertexTangents){ + while (v1 < lenV) { + var _temp1 = v1; + v1 = (v1 + 1); + var _local17 = _temp1; + this._vertexTangents[_local17] = 0; + }; + } else { + this._vertexTangents = new Vector.(this._vertices.length, true); + }; + var lenI:uint = this._indices.length; + while (i < lenI) { + weight = ((this._useFaceWeights) ? var _temp2 = k; +k = (k + 1); +this._faceWeights[_temp2] : 1); + var _temp3 = i; + i = (i + 1); + index = (this._indices[_temp3] * 3); + var _temp4 = index; + index = (index + 1); + _local17 = _temp4; + this._vertexTangents[_local17] = (this._vertexTangents[_local17] + (this._faceTangents[f1] * weight)); + var _temp5 = index; + index = (index + 1); + var _local18 = _temp5; + this._vertexTangents[_local18] = (this._vertexTangents[_local18] + (this._faceTangents[f2] * weight)); + this._vertexTangents[index] = (this._vertexTangents[index] + (this._faceTangents[f3] * weight)); + var _temp6 = i; + i = (i + 1); + index = (this._indices[_temp6] * 3); + var _temp7 = index; + index = (index + 1); + var _local19 = _temp7; + this._vertexTangents[_local19] = (this._vertexTangents[_local19] + (this._faceTangents[f1] * weight)); + var _temp8 = index; + index = (index + 1); + var _local20 = _temp8; + this._vertexTangents[_local20] = (this._vertexTangents[_local20] + (this._faceTangents[f2] * weight)); + this._vertexTangents[index] = (this._vertexTangents[index] + (this._faceTangents[f3] * weight)); + var _temp9 = i; + i = (i + 1); + index = (this._indices[_temp9] * 3); + var _temp10 = index; + index = (index + 1); + var _local21 = _temp10; + this._vertexTangents[_local21] = (this._vertexTangents[_local21] + (this._faceTangents[f1] * weight)); + var _temp11 = index; + index = (index + 1); + var _local22 = _temp11; + this._vertexTangents[_local22] = (this._vertexTangents[_local22] + (this._faceTangents[f2] * weight)); + this._vertexTangents[index] = (this._vertexTangents[index] + (this._faceTangents[f3] * weight)); + f1 = (f1 + 3); + f2 = (f2 + 3); + f3 = (f3 + 3); + }; + v1 = 0; + v2 = 1; + v3 = 2; + while (v1 < lenV) { + vx = this._vertexTangents[v1]; + vy = this._vertexTangents[v2]; + vz = this._vertexTangents[v3]; + d = (1 / Math.sqrt((((vx * vx) + (vy * vy)) + (vz * vz)))); + this._vertexTangents[v1] = (this._vertexTangents[v1] * d); + this._vertexTangents[v2] = (this._vertexTangents[v2] * d); + this._vertexTangents[v3] = (this._vertexTangents[v3] * d); + v1 = (v1 + 3); + v2 = (v2 + 3); + v3 = (v3 + 3); + }; + this._vertexTangentsDirty = false; + this.invalidateBuffers(this._vertexTangentBufferContext); + } + private function updateFaceNormals():void{ + var i:uint; + var j:uint; + var k:uint; + var index:uint; + var x1:Number; + var x2:Number; + var x3:Number; + var y1:Number; + var y2:Number; + var y3:Number; + var z1:Number; + var z2:Number; + var z3:Number; + var dx1:Number; + var dy1:Number; + var dz1:Number; + var dx2:Number; + var dy2:Number; + var dz2:Number; + var cx:Number; + var cy:Number; + var cz:Number; + var d:Number; + var w:Number; + var len:uint = this._indices.length; + this._faceNormalsData = ((this._faceNormalsData) || (new Vector.(len, true))); + if (this._useFaceWeights){ + this._faceWeights = ((this._faceWeights) || (new Vector.((len / 3), true))); + }; + while (i < len) { + var _temp1 = i; + i = (i + 1); + index = (this._indices[_temp1] * 3); + var _temp2 = index; + index = (index + 1); + x1 = this._vertices[_temp2]; + var _temp3 = index; + index = (index + 1); + y1 = this._vertices[_temp3]; + z1 = this._vertices[index]; + var _temp4 = i; + i = (i + 1); + index = (this._indices[_temp4] * 3); + var _temp5 = index; + index = (index + 1); + x2 = this._vertices[_temp5]; + var _temp6 = index; + index = (index + 1); + y2 = this._vertices[_temp6]; + z2 = this._vertices[index]; + var _temp7 = i; + i = (i + 1); + index = (this._indices[_temp7] * 3); + var _temp8 = index; + index = (index + 1); + x3 = this._vertices[_temp8]; + var _temp9 = index; + index = (index + 1); + y3 = this._vertices[_temp9]; + z3 = this._vertices[index]; + dx1 = (x3 - x1); + dy1 = (y3 - y1); + dz1 = (z3 - z1); + dx2 = (x2 - x1); + dy2 = (y2 - y1); + dz2 = (z2 - z1); + cx = ((dz1 * dy2) - (dy1 * dz2)); + cy = ((dx1 * dz2) - (dz1 * dx2)); + cz = ((dy1 * dx2) - (dx1 * dy2)); + d = Math.sqrt((((cx * cx) + (cy * cy)) + (cz * cz))); + if (this._useFaceWeights){ + w = (d * 10000); + if (w < 1){ + w = 1; + }; + var _temp10 = k; + k = (k + 1); + var _local26 = _temp10; + this._faceWeights[_local26] = w; + }; + d = (1 / d); + var _temp11 = j; + j = (j + 1); + _local26 = _temp11; + this._faceNormalsData[_local26] = (cx * d); + var _temp12 = j; + j = (j + 1); + var _local27 = _temp12; + this._faceNormalsData[_local27] = (cy * d); + var _temp13 = j; + j = (j + 1); + var _local28 = _temp13; + this._faceNormalsData[_local28] = (cz * d); + }; + this._faceNormalsDirty = false; + this._faceTangentsDirty = true; + } + private function updateFaceTangents():void{ + var i:uint; + var j:uint; + var index1:uint; + var index2:uint; + var index3:uint; + var ui:uint; + var vi:uint; + var v0:Number; + var dv1:Number; + var dv2:Number; + var denom:Number; + var x0:Number; + var y0:Number; + var z0:Number; + var dx1:Number; + var dy1:Number; + var dz1:Number; + var dx2:Number; + var dy2:Number; + var dz2:Number; + var cx:Number; + var cy:Number; + var cz:Number; + var len:uint = this._indices.length; + var invScale:Number = (1 / this._uvScaleV); + this._faceTangents = ((this._faceTangents) || (new Vector.(this._indices.length, true))); + while (i < len) { + var _temp1 = i; + i = (i + 1); + index1 = this._indices[_temp1]; + var _temp2 = i; + i = (i + 1); + index2 = this._indices[_temp2]; + var _temp3 = i; + i = (i + 1); + index3 = this._indices[_temp3]; + v0 = this._uvs[uint(((index1 << 1) + 1))]; + ui = (index2 << 1); + dv1 = ((this._uvs[uint(((index2 << 1) + 1))] - v0) * invScale); + ui = (index3 << 1); + dv2 = ((this._uvs[uint(((index3 << 1) + 1))] - v0) * invScale); + vi = (index1 * 3); + x0 = this._vertices[vi]; + y0 = this._vertices[uint((vi + 1))]; + z0 = this._vertices[uint((vi + 2))]; + vi = (index2 * 3); + dx1 = (this._vertices[uint(vi)] - x0); + dy1 = (this._vertices[uint((vi + 1))] - y0); + dz1 = (this._vertices[uint((vi + 2))] - z0); + vi = (index3 * 3); + dx2 = (this._vertices[uint(vi)] - x0); + dy2 = (this._vertices[uint((vi + 1))] - y0); + dz2 = (this._vertices[uint((vi + 2))] - z0); + cx = ((dv2 * dx1) - (dv1 * dx2)); + cy = ((dv2 * dy1) - (dv1 * dy2)); + cz = ((dv2 * dz1) - (dv1 * dz2)); + denom = (1 / Math.sqrt((((cx * cx) + (cy * cy)) + (cz * cz)))); + var _temp4 = j; + j = (j + 1); + var _local26 = _temp4; + this._faceTangents[_local26] = (denom * cx); + var _temp5 = j; + j = (j + 1); + var _local27 = _temp5; + this._faceTangents[_local27] = (denom * cy); + var _temp6 = j; + j = (j + 1); + var _local28 = _temp6; + this._faceTangents[_local28] = (denom * cz); + }; + this._faceTangentsDirty = false; + } + protected function disposeForStage3D(stage3DProxy:Stage3DProxy):void{ + var index:int = stage3DProxy._stage3DIndex; + if (this._vertexBuffer[index]){ + this._vertexBuffer[index].dispose(); + this._vertexBuffer[index] = null; + }; + if (this._uvBuffer[index]){ + this._uvBuffer[index].dispose(); + this._uvBuffer[index] = null; + }; + if (this._secondaryUvBuffer[index]){ + this._secondaryUvBuffer[index].dispose(); + this._secondaryUvBuffer[index] = null; + }; + if (this._vertexNormalBuffer[index]){ + this._vertexNormalBuffer[index].dispose(); + this._vertexNormalBuffer[index] = null; + }; + if (this._vertexTangentBuffer[index]){ + this._vertexTangentBuffer[index].dispose(); + this._vertexTangentBuffer[index] = null; + }; + if (this._indexBuffer[index]){ + this._indexBuffer[index].dispose(); + this._indexBuffer[index] = null; + }; + } + public function get vertexBufferOffset():int{ + return (0); + } + public function get normalBufferOffset():int{ + return (0); + } + public function get tangentBufferOffset():int{ + return (0); + } + public function get UVBufferOffset():int{ + return (0); + } + public function get secondaryUVBufferOffset():int{ + return (0); + } + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/SubMesh.as b/flash_decompiled/watchdog/away3d/core/base/SubMesh.as new file mode 100644 index 0000000..9552eeb --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/SubMesh.as @@ -0,0 +1,218 @@ +package away3d.core.base { + import away3d.entities.*; + import away3d.materials.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.animators.*; + import __AS3__.vec.*; + import away3d.bounds.*; + + public class SubMesh implements IRenderable { + + var _material:MaterialBase; + private var _parentMesh:Mesh; + private var _subGeometry:SubGeometry; + var _index:uint; + private var _uvTransform:Matrix; + private var _uvTransformDirty:Boolean; + private var _uvRotation:Number = 0; + private var _scaleU:Number = 1; + private var _scaleV:Number = 1; + private var _offsetU:Number = 0; + private var _offsetV:Number = 0; + + public function SubMesh(subGeometry:SubGeometry, parentMesh:Mesh, material:MaterialBase=null){ + super(); + this._parentMesh = parentMesh; + this._subGeometry = subGeometry; + this.material = material; + } + public function get shaderPickingDetails():Boolean{ + return (this.sourceEntity.shaderPickingDetails); + } + public function get offsetU():Number{ + return (this._offsetU); + } + public function set offsetU(value:Number):void{ + if (value == this._offsetU){ + return; + }; + this._offsetU = value; + this._uvTransformDirty = true; + } + public function get offsetV():Number{ + return (this._offsetV); + } + public function set offsetV(value:Number):void{ + if (value == this._offsetV){ + return; + }; + this._offsetV = value; + this._uvTransformDirty = true; + } + public function get scaleU():Number{ + return (this._scaleU); + } + public function set scaleU(value:Number):void{ + if (value == this._scaleU){ + return; + }; + this._scaleU = value; + this._uvTransformDirty = true; + } + public function get scaleV():Number{ + return (this._scaleV); + } + public function set scaleV(value:Number):void{ + if (value == this._scaleV){ + return; + }; + this._scaleV = value; + this._uvTransformDirty = true; + } + public function get uvRotation():Number{ + return (this._uvRotation); + } + public function set uvRotation(value:Number):void{ + if (value == this._uvRotation){ + return; + }; + this._uvRotation = value; + this._uvTransformDirty = true; + } + public function get sourceEntity():Entity{ + return (this._parentMesh); + } + public function get subGeometry():SubGeometry{ + return (this._subGeometry); + } + public function set subGeometry(value:SubGeometry):void{ + this._subGeometry = value; + } + public function get material():MaterialBase{ + return (((this._material) || (this._parentMesh.material))); + } + public function set material(value:MaterialBase):void{ + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + public function get zIndex():Number{ + return (this._parentMesh.zIndex); + } + public function get sceneTransform():Matrix3D{ + return (this._parentMesh.sceneTransform); + } + public function get inverseSceneTransform():Matrix3D{ + return (this._parentMesh.inverseSceneTransform); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getVertexBuffer(stage3DProxy)); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getVertexNormalBuffer(stage3DProxy)); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getVertexTangentBuffer(stage3DProxy)); + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getUVBuffer(stage3DProxy)); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (this._subGeometry.getIndexBuffer(stage3DProxy)); + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (this._subGeometry.getIndexBuffer2(stage3DProxy)); + } + public function get modelViewProjection():Matrix3D{ + return (this._parentMesh.modelViewProjection); + } + public function getModelViewProjectionUnsafe():Matrix3D{ + return (this._parentMesh.getModelViewProjectionUnsafe()); + } + public function get numTriangles():uint{ + return (this._subGeometry.numTriangles); + } + public function get numTriangles2():uint{ + return (this._subGeometry.numTriangles2); + } + public function get animator():IAnimator{ + return (this._parentMesh.animator); + } + public function get mouseEnabled():Boolean{ + return (((this._parentMesh.mouseEnabled) || (this._parentMesh._ancestorsAllowMouseEnabled))); + } + public function get castsShadows():Boolean{ + return (this._parentMesh.castsShadows); + } + function get parentMesh():Mesh{ + return (this._parentMesh); + } + function set parentMesh(value:Mesh):void{ + this._parentMesh = value; + } + public function get uvTransform():Matrix{ + if (this._uvTransformDirty){ + this.updateUVTransform(); + }; + return (this._uvTransform); + } + private function updateUVTransform():void{ + this._uvTransform = ((this._uvTransform) || (new Matrix())); + this._uvTransform.identity(); + if (this._uvRotation != 0){ + this._uvTransform.rotate(this._uvRotation); + }; + if (((!((this._scaleU == 1))) || (!((this._scaleV == 1))))){ + this._uvTransform.scale(this._scaleU, this._scaleV); + }; + this._uvTransform.translate(this._offsetU, this._offsetV); + this._uvTransformDirty = false; + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getSecondaryUVBuffer(stage3DProxy)); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (this._subGeometry.getCustomBuffer(stage3DProxy)); + } + public function dispose():void{ + this.material = null; + } + public function get vertexBufferOffset():int{ + return (this._subGeometry.vertexBufferOffset); + } + public function get normalBufferOffset():int{ + return (this._subGeometry.normalBufferOffset); + } + public function get tangentBufferOffset():int{ + return (this._subGeometry.tangentBufferOffset); + } + public function get UVBufferOffset():int{ + return (this._subGeometry.UVBufferOffset); + } + public function get secondaryUVBufferOffset():int{ + return (this._subGeometry.secondaryUVBufferOffset); + } + public function get vertexData():Vector.{ + return (this._subGeometry.vertexData); + } + public function get indexData():Vector.{ + return (this._subGeometry.indexData); + } + public function get UVData():Vector.{ + return (this._subGeometry.UVData); + } + public function get bounds():BoundingVolumeBase{ + return (this._parentMesh.bounds); + } + public function get visible():Boolean{ + return (this._parentMesh.visible); + } + + } +}//package away3d.core.base diff --git a/flash_decompiled/watchdog/away3d/core/base/data/UV.as b/flash_decompiled/watchdog/away3d/core/base/data/UV.as new file mode 100644 index 0000000..8061a82 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/data/UV.as @@ -0,0 +1,33 @@ +package away3d.core.base.data { + + public class UV { + + private var _u:Number; + private var _v:Number; + + public function UV(u:Number=0, v:Number=0){ + super(); + this._u = u; + this._v = v; + } + public function get v():Number{ + return (this._v); + } + public function set v(value:Number):void{ + this._v = value; + } + public function get u():Number{ + return (this._u); + } + public function set u(value:Number):void{ + this._u = value; + } + public function clone():UV{ + return (new UV(this._u, this._v)); + } + public function toString():String{ + return (((this._u + ",") + this._v)); + } + + } +}//package away3d.core.base.data diff --git a/flash_decompiled/watchdog/away3d/core/base/data/Vertex.as b/flash_decompiled/watchdog/away3d/core/base/data/Vertex.as new file mode 100644 index 0000000..80f3289 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/base/data/Vertex.as @@ -0,0 +1,49 @@ +package away3d.core.base.data { + + public class Vertex { + + private var _x:Number; + private var _y:Number; + private var _z:Number; + private var _index:uint; + + public function Vertex(x:Number=0, y:Number=0, z:Number=0, index:uint=0){ + super(); + this._x = x; + this._y = y; + this._z = z; + this._index = index; + } + public function set index(ind:uint):void{ + this._index = ind; + } + public function get index():uint{ + return (this._index); + } + public function get x():Number{ + return (this._x); + } + public function set x(value:Number):void{ + this._x = value; + } + public function get y():Number{ + return (this._y); + } + public function set y(value:Number):void{ + this._y = value; + } + public function get z():Number{ + return (this._z); + } + public function set z(value:Number):void{ + this._z = value; + } + public function clone():Vertex{ + return (new Vertex(this._x, this._y, this._z)); + } + public function toString():String{ + return (((((this._x + ",") + this._y) + ",") + this._z)); + } + + } +}//package away3d.core.base.data diff --git a/flash_decompiled/watchdog/away3d/core/data/EntityListItem.as b/flash_decompiled/watchdog/away3d/core/data/EntityListItem.as new file mode 100644 index 0000000..f653975 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/data/EntityListItem.as @@ -0,0 +1,10 @@ +package away3d.core.data { + import away3d.entities.*; + + public class EntityListItem { + + public var entity:Entity; + public var next:EntityListItem; + + } +}//package away3d.core.data diff --git a/flash_decompiled/watchdog/away3d/core/data/EntityListItemPool.as b/flash_decompiled/watchdog/away3d/core/data/EntityListItemPool.as new file mode 100644 index 0000000..9a43105 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/data/EntityListItemPool.as @@ -0,0 +1,34 @@ +package away3d.core.data { + import __AS3__.vec.*; + + public class EntityListItemPool { + + private var _pool:Vector.; + private var _index:int; + private var _poolSize:int; + + public function EntityListItemPool(){ + super(); + this._pool = new Vector.(); + } + public function getItem():EntityListItem{ + var item:EntityListItem; + if (this._index == this._poolSize){ + item = new EntityListItem(); + var _local2 = this._index++; + this._pool[_local2] = item; + this._poolSize++; + } else { + item = this._pool[this._index++]; + }; + return (item); + } + public function freeAll():void{ + this._index = 0; + } + public function dispose():void{ + this._pool.length = 0; + } + + } +}//package away3d.core.data diff --git a/flash_decompiled/watchdog/away3d/core/data/RenderableListItem.as b/flash_decompiled/watchdog/away3d/core/data/RenderableListItem.as new file mode 100644 index 0000000..7e015f5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/data/RenderableListItem.as @@ -0,0 +1,13 @@ +package away3d.core.data { + import away3d.core.base.*; + + public final class RenderableListItem { + + public var next:RenderableListItem; + public var renderable:IRenderable; + public var materialId:int; + public var renderOrderId:int; + public var zIndex:Number; + + } +}//package away3d.core.data diff --git a/flash_decompiled/watchdog/away3d/core/data/RenderableListItemPool.as b/flash_decompiled/watchdog/away3d/core/data/RenderableListItemPool.as new file mode 100644 index 0000000..7e89ae3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/data/RenderableListItemPool.as @@ -0,0 +1,33 @@ +package away3d.core.data { + import __AS3__.vec.*; + + public class RenderableListItemPool { + + private var _pool:Vector.; + private var _index:int; + private var _poolSize:int; + + public function RenderableListItemPool(){ + super(); + this._pool = new Vector.(); + } + public function getItem():RenderableListItem{ + var item:RenderableListItem; + if (this._index == this._poolSize){ + item = new RenderableListItem(); + var _local2 = this._index++; + this._pool[_local2] = item; + this._poolSize++; + return (item); + }; + return (this._pool[this._index++]); + } + public function freeAll():void{ + this._index = 0; + } + public function dispose():void{ + this._pool.length = 0; + } + + } +}//package away3d.core.data diff --git a/flash_decompiled/watchdog/away3d/core/managers/AGALProgram3DCache.as b/flash_decompiled/watchdog/away3d/core/managers/AGALProgram3DCache.as new file mode 100644 index 0000000..6c08f25 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/managers/AGALProgram3DCache.as @@ -0,0 +1,123 @@ +package away3d.core.managers { + import __AS3__.vec.*; + import away3d.events.*; + import flash.display3D.*; + import flash.utils.*; + import com.adobe.utils.*; + import away3d.debug.*; + import away3d.materials.passes.*; + + public class AGALProgram3DCache { + + private static var _instances:Vector.; + private static var _currentId:int; + + private var _stage3DProxy:Stage3DProxy; + private var _program3Ds:Array; + private var _ids:Array; + private var _usages:Array; + private var _keys:Array; + + public function AGALProgram3DCache(stage3DProxy:Stage3DProxy, AGALProgram3DCacheSingletonEnforcer:AGALProgram3DCacheSingletonEnforcer){ + super(); + if (!(AGALProgram3DCacheSingletonEnforcer)){ + throw (new Error("This class is a multiton and cannot be instantiated manually. Use Stage3DManager.getInstance instead.")); + }; + this._stage3DProxy = stage3DProxy; + this._program3Ds = []; + this._ids = []; + this._usages = []; + this._keys = []; + } + public static function getInstance(stage3DProxy:Stage3DProxy):AGALProgram3DCache{ + var index:int = stage3DProxy._stage3DIndex; + _instances = ((_instances) || (new Vector.(8, true))); + if (!(_instances[index])){ + _instances[index] = new AGALProgram3DCache(stage3DProxy, new AGALProgram3DCacheSingletonEnforcer()); + stage3DProxy.addEventListener(Stage3DEvent.CONTEXT3D_DISPOSED, onContext3DDisposed, false, 0, true); + stage3DProxy.addEventListener(Stage3DEvent.CONTEXT3D_CREATED, onContext3DDisposed, false, 0, true); + }; + return (_instances[index]); + } + public static function getInstanceFromIndex(index:int):AGALProgram3DCache{ + if (!(_instances[index])){ + throw (new Error("Instance not created yet!")); + }; + return (_instances[index]); + } + private static function onContext3DDisposed(event:Stage3DEvent):void{ + var stage3DProxy:Stage3DProxy = Stage3DProxy(event.target); + var index:int = stage3DProxy._stage3DIndex; + _instances[index].dispose(); + _instances[index] = null; + stage3DProxy.removeEventListener(Stage3DEvent.CONTEXT3D_DISPOSED, onContext3DDisposed); + stage3DProxy.removeEventListener(Stage3DEvent.CONTEXT3D_CREATED, onContext3DDisposed); + } + + public function dispose():void{ + var key:String; + for (key in this._program3Ds) { + this.destroyProgram(key); + }; + this._keys = null; + this._program3Ds = null; + this._usages = null; + } + public function setProgram3D(pass:MaterialPassBase, vertexCode:String, fragmentCode:String):void{ + var program:Program3D; + var vertexByteCode:ByteArray; + var fragmentByteCode:ByteArray; + var stageIndex:int = this._stage3DProxy._stage3DIndex; + var key:String = this.getKey(vertexCode, fragmentCode); + if (this._program3Ds[key] == null){ + this._keys[_currentId] = key; + this._usages[_currentId] = 0; + this._ids[key] = _currentId; + _currentId++; + program = this._stage3DProxy._context3D.createProgram(); + vertexByteCode = new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.VERTEX, vertexCode); + fragmentByteCode = new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.FRAGMENT, fragmentCode); + program.upload(vertexByteCode, fragmentByteCode); + this._program3Ds[key] = program; + }; + var oldId:int = pass._program3Dids[stageIndex]; + var newId:int = this._ids[key]; + if (oldId != newId){ + if (oldId >= 0){ + this.freeProgram3D(oldId); + }; + var _local11 = this._usages; + var _local12 = newId; + var _local13 = (_local11[_local12] + 1); + _local11[_local12] = _local13; + }; + pass._program3Dids[stageIndex] = newId; + pass._program3Ds[stageIndex] = this._program3Ds[key]; + } + public function freeProgram3D(programId:int):void{ + var _local2 = this._usages; + var _local3 = programId; + var _local4 = (_local2[_local3] - 1); + _local2[_local3] = _local4; + if (this._usages[programId] == 0){ + this.destroyProgram(this._keys[programId]); + }; + } + private function destroyProgram(key:String):void{ + this._program3Ds[key].dispose(); + this._program3Ds[key] = null; + delete this._program3Ds[key]; + this._ids[key] = -1; + } + private function getKey(vertexCode:String, fragmentCode:String):String{ + return (((vertexCode + "---") + fragmentCode)); + } + + } +}//package away3d.core.managers + +class AGALProgram3DCacheSingletonEnforcer { + + public function AGALProgram3DCacheSingletonEnforcer(){ + } +} diff --git a/flash_decompiled/watchdog/away3d/core/managers/Mouse3DManager.as b/flash_decompiled/watchdog/away3d/core/managers/Mouse3DManager.as new file mode 100644 index 0000000..718d516 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/managers/Mouse3DManager.as @@ -0,0 +1,181 @@ +package away3d.core.managers { + import away3d.events.*; + import flash.geom.*; + import __AS3__.vec.*; + import flash.events.*; + import away3d.core.pick.*; + import away3d.containers.*; + + public class Mouse3DManager { + + private static var _mouseUp:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_UP); + private static var _mouseClick:MouseEvent3D = new MouseEvent3D(MouseEvent3D.CLICK); + private static var _mouseOut:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_OUT); + private static var _mouseDown:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_DOWN); + private static var _mouseMove:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_MOVE); + private static var _mouseOver:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_OVER); + private static var _mouseWheel:MouseEvent3D = new MouseEvent3D(MouseEvent3D.MOUSE_WHEEL); + private static var _mouseDoubleClick:MouseEvent3D = new MouseEvent3D(MouseEvent3D.DOUBLE_CLICK); + + private var _activeView:View3D; + private var _updateDirty:Boolean; + private var _nullVector:Vector3D; + protected var _collidingObject:PickingCollisionVO; + private var _previousCollidingObject:PickingCollisionVO; + private var _queuedEvents:Vector.; + private var _mouseMoveEvent:MouseEvent; + private var _forceMouseMove:Boolean; + private var _mousePicker:IPicker; + + public function Mouse3DManager(){ + this._nullVector = new Vector3D(); + this._queuedEvents = new Vector.(); + this._mouseMoveEvent = new MouseEvent(MouseEvent.MOUSE_MOVE); + this._mousePicker = PickingType.RAYCAST_FIRST_ENCOUNTERED; + super(); + } + public function updateCollider(view:View3D):void{ + this._previousCollidingObject = this._collidingObject; + if ((((view == this._activeView)) && (((this._forceMouseMove) || (this._updateDirty))))){ + this._collidingObject = this._mousePicker.getViewCollision(view.mouseX, view.mouseY, view); + }; + this._updateDirty = false; + } + public function fireMouseEvents():void{ + var i:uint; + var len:uint; + var event:MouseEvent3D; + var dispatcher:ObjectContainer3D; + if (this._collidingObject != this._previousCollidingObject){ + if (this._previousCollidingObject){ + this.queueDispatch(_mouseOut, this._mouseMoveEvent, this._previousCollidingObject); + }; + if (this._collidingObject){ + this.queueDispatch(_mouseOver, this._mouseMoveEvent, this._collidingObject); + }; + }; + if (((this._forceMouseMove) && (this._collidingObject))){ + this.queueDispatch(_mouseMove, this._mouseMoveEvent, this._collidingObject); + }; + len = this._queuedEvents.length; + i = 0; + while (i < len) { + event = this._queuedEvents[i]; + dispatcher = event.object; + while (((dispatcher) && (!(dispatcher._ancestorsAllowMouseEnabled)))) { + dispatcher = dispatcher.parent; + }; + if (dispatcher){ + dispatcher.dispatchEvent(event); + }; + i++; + }; + this._queuedEvents.length = 0; + } + private function queueDispatch(event:MouseEvent3D, sourceEvent:MouseEvent, collider:PickingCollisionVO=null):void{ + event.ctrlKey = sourceEvent.ctrlKey; + event.altKey = sourceEvent.altKey; + event.shiftKey = sourceEvent.shiftKey; + event.delta = sourceEvent.delta; + event.screenX = sourceEvent.localX; + event.screenY = sourceEvent.localY; + collider = ((collider) || (this._collidingObject)); + if (collider){ + event.object = collider.entity; + event.renderable = collider.renderable; + event.uv = collider.uv; + event.localPosition = collider.localPosition; + event.localNormal = collider.localNormal; + } else { + event.uv = null; + event.object = null; + event.localPosition = this._nullVector; + event.localNormal = this._nullVector; + }; + this._queuedEvents.push(event); + } + private function onMouseMove(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseMove, (this._mouseMoveEvent = event)); + }; + this._updateDirty = true; + } + private function onMouseOut(event:MouseEvent):void{ + this._activeView = null; + if (this._collidingObject){ + this.queueDispatch(_mouseOut, event, this._collidingObject); + }; + this._updateDirty = true; + } + private function onMouseOver(event:MouseEvent):void{ + this._activeView = (event.currentTarget as View3D); + if (this._collidingObject){ + this.queueDispatch(_mouseOver, event, this._collidingObject); + }; + this._updateDirty = true; + } + private function onClick(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseClick, event); + }; + this._updateDirty = true; + } + private function onDoubleClick(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseDoubleClick, event); + }; + this._updateDirty = true; + } + private function onMouseDown(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseDown, event); + }; + this._updateDirty = true; + } + private function onMouseUp(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseUp, event); + }; + this._updateDirty = true; + } + private function onMouseWheel(event:MouseEvent):void{ + if (this._collidingObject){ + this.queueDispatch(_mouseWheel, event); + }; + this._updateDirty = true; + } + public function enableMouseListeners(view:View3D):void{ + view.addEventListener(MouseEvent.CLICK, this.onClick); + view.addEventListener(MouseEvent.DOUBLE_CLICK, this.onDoubleClick); + view.addEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown); + view.addEventListener(MouseEvent.MOUSE_MOVE, this.onMouseMove); + view.addEventListener(MouseEvent.MOUSE_UP, this.onMouseUp); + view.addEventListener(MouseEvent.MOUSE_WHEEL, this.onMouseWheel); + view.addEventListener(MouseEvent.MOUSE_OVER, this.onMouseOver); + view.addEventListener(MouseEvent.MOUSE_OUT, this.onMouseOut); + } + public function disableMouseListeners(view:View3D):void{ + view.removeEventListener(MouseEvent.CLICK, this.onClick); + view.removeEventListener(MouseEvent.DOUBLE_CLICK, this.onDoubleClick); + view.removeEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown); + view.removeEventListener(MouseEvent.MOUSE_MOVE, this.onMouseMove); + view.removeEventListener(MouseEvent.MOUSE_UP, this.onMouseUp); + view.removeEventListener(MouseEvent.MOUSE_WHEEL, this.onMouseWheel); + view.removeEventListener(MouseEvent.MOUSE_OVER, this.onMouseOver); + view.removeEventListener(MouseEvent.MOUSE_OUT, this.onMouseOut); + } + public function get forceMouseMove():Boolean{ + return (this._forceMouseMove); + } + public function set forceMouseMove(value:Boolean):void{ + this._forceMouseMove = value; + } + public function get mousePicker():IPicker{ + return (this._mousePicker); + } + public function set mousePicker(value:IPicker):void{ + this._mousePicker = value; + } + + } +}//package away3d.core.managers diff --git a/flash_decompiled/watchdog/away3d/core/managers/RTTBufferManager.as b/flash_decompiled/watchdog/away3d/core/managers/RTTBufferManager.as new file mode 100644 index 0000000..fc5df4b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/managers/RTTBufferManager.as @@ -0,0 +1,174 @@ +package away3d.core.managers { + import flash.utils.*; + import flash.geom.*; + import away3d.tools.utils.*; + import flash.events.*; + import flash.display3D.*; + import __AS3__.vec.*; + + public class RTTBufferManager extends EventDispatcher { + + private static var _instances:Dictionary; + + private var _renderToTextureVertexBuffer:VertexBuffer3D; + private var _renderToScreenVertexBuffer:VertexBuffer3D; + private var _indexBuffer:IndexBuffer3D; + private var _stage3DProxy:Stage3DProxy; + private var _viewWidth:int = -1; + private var _viewHeight:int = -1; + private var _textureWidth:int = -1; + private var _textureHeight:int = -1; + private var _renderToTextureRect:Rectangle; + private var _buffersInvalid:Boolean = true; + private var _textureRatioX:Number; + private var _textureRatioY:Number; + + public function RTTBufferManager(se:SingletonEnforcer, stage3DProxy:Stage3DProxy){ + super(); + if (!(se)){ + throw (new Error("No cheating the multiton!")); + }; + this._renderToTextureRect = new Rectangle(); + this._stage3DProxy = stage3DProxy; + } + public static function getInstance(stage3DProxy:Stage3DProxy):RTTBufferManager{ + if (!(stage3DProxy)){ + throw (new Error("stage3DProxy key cannot be null!")); + }; + _instances = ((_instances) || (new Dictionary())); + return ((_instances[stage3DProxy] = ((_instances[stage3DProxy]) || (new RTTBufferManager(new SingletonEnforcer(), stage3DProxy))))); + } + + public function get textureRatioX():Number{ + if (this._buffersInvalid){ + this.updateRTTBuffers(); + }; + return (this._textureRatioX); + } + public function get textureRatioY():Number{ + if (this._buffersInvalid){ + this.updateRTTBuffers(); + }; + return (this._textureRatioY); + } + public function get viewWidth():int{ + return (this._viewWidth); + } + public function set viewWidth(value:int):void{ + if (value == this._viewWidth){ + return; + }; + this._viewWidth = value; + this._buffersInvalid = true; + this._textureWidth = TextureUtils.getBestPowerOf2(this._viewWidth); + if (this._textureWidth > this._viewWidth){ + this._renderToTextureRect.x = uint(((this._textureWidth - this._viewWidth) * 0.5)); + this._renderToTextureRect.width = this._viewWidth; + } else { + this._renderToTextureRect.x = 0; + this._renderToTextureRect.width = this._textureWidth; + }; + dispatchEvent(new Event(Event.RESIZE)); + } + public function get viewHeight():int{ + return (this._viewHeight); + } + public function set viewHeight(value:int):void{ + if (value == this._viewHeight){ + return; + }; + this._viewHeight = value; + this._buffersInvalid = true; + this._textureHeight = TextureUtils.getBestPowerOf2(this._viewHeight); + if (this._textureHeight > this._viewHeight){ + this._renderToTextureRect.y = uint(((this._textureHeight - this._viewHeight) * 0.5)); + this._renderToTextureRect.height = this._viewHeight; + } else { + this._renderToTextureRect.y = 0; + this._renderToTextureRect.height = this._textureHeight; + }; + dispatchEvent(new Event(Event.RESIZE)); + } + public function get renderToTextureVertexBuffer():VertexBuffer3D{ + if (this._buffersInvalid){ + this.updateRTTBuffers(); + }; + return (this._renderToTextureVertexBuffer); + } + public function get renderToScreenVertexBuffer():VertexBuffer3D{ + if (this._buffersInvalid){ + this.updateRTTBuffers(); + }; + return (this._renderToScreenVertexBuffer); + } + public function get indexBuffer():IndexBuffer3D{ + return (this._indexBuffer); + } + public function get renderToTextureRect():Rectangle{ + if (this._buffersInvalid){ + this.updateRTTBuffers(); + }; + return (this._renderToTextureRect); + } + public function get textureWidth():int{ + return (this._textureWidth); + } + public function get textureHeight():int{ + return (this._textureHeight); + } + public function dispose():void{ + delete _instances[this._stage3DProxy]; + if (this._indexBuffer){ + this._indexBuffer.dispose(); + this._renderToScreenVertexBuffer.dispose(); + this._renderToTextureVertexBuffer.dispose(); + this._renderToScreenVertexBuffer = null; + this._renderToTextureVertexBuffer = null; + this._indexBuffer = null; + }; + } + private function updateRTTBuffers():void{ + var textureVerts:Vector.; + var screenVerts:Vector.; + var x:Number; + var y:Number; + var u:Number; + var v:Number; + var context:Context3D = this._stage3DProxy.context3D; + this._renderToTextureVertexBuffer = ((this._renderToTextureVertexBuffer) || (context.createVertexBuffer(4, 5))); + this._renderToScreenVertexBuffer = ((this._renderToScreenVertexBuffer) || (context.createVertexBuffer(4, 5))); + if (!(this._indexBuffer)){ + this._indexBuffer = context.createIndexBuffer(6); + this._indexBuffer.uploadFromVector(new [2, 1, 0, 3, 2, 0], 0, 6); + }; + if (this._viewWidth > this._textureWidth){ + x = 1; + u = 0; + } else { + x = (this._viewWidth / this._textureWidth); + u = (this._renderToTextureRect.x / this._textureWidth); + }; + if (this._viewHeight > this._textureHeight){ + y = 1; + v = 0; + } else { + y = (this._viewHeight / this._textureHeight); + v = (this._renderToTextureRect.y / this._textureHeight); + }; + this._textureRatioX = x; + this._textureRatioY = y; + textureVerts = new [-(x), -(y), u, (1 - v), 0, x, -(y), (1 - u), (1 - v), 1, x, y, (1 - u), v, 2, -(x), y, u, v, 3]; + screenVerts = new [-1, -1, u, (1 - v), 0, 1, -1, (1 - u), (1 - v), 1, 1, 1, (1 - u), v, 2, -1, 1, u, v, 3]; + this._renderToTextureVertexBuffer.uploadFromVector(textureVerts, 0, 4); + this._renderToScreenVertexBuffer.uploadFromVector(screenVerts, 0, 4); + this._buffersInvalid = false; + } + + } +}//package away3d.core.managers + +class SingletonEnforcer { + + public function SingletonEnforcer(){ + } +} diff --git a/flash_decompiled/watchdog/away3d/core/managers/Stage3DManager.as b/flash_decompiled/watchdog/away3d/core/managers/Stage3DManager.as new file mode 100644 index 0000000..f7924ea --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/managers/Stage3DManager.as @@ -0,0 +1,73 @@ +package away3d.core.managers { + import flash.utils.*; + import flash.display.*; + import __AS3__.vec.*; + + public class Stage3DManager { + + private static var _instances:Dictionary; + private static var _stageProxies:Vector.; + private static var _numStageProxies:uint = 0; + + private var _stage:Stage; + + public function Stage3DManager(stage:Stage, Stage3DManagerSingletonEnforcer:Stage3DManagerSingletonEnforcer){ + super(); + if (!(Stage3DManagerSingletonEnforcer)){ + throw (new Error("This class is a multiton and cannot be instantiated manually. Use Stage3DManager.getInstance instead.")); + }; + this._stage = stage; + if (!(_stageProxies)){ + _stageProxies = new Vector.(this._stage.stage3Ds.length, true); + }; + } + public static function getInstance(stage:Stage):Stage3DManager{ + return (((_instances = ((_instances) || (new Dictionary())))[stage] = (((_instances = ((_instances) || (new Dictionary())))[stage]) || (new Stage3DManager(stage, new Stage3DManagerSingletonEnforcer()))))); + } + + public function getStage3DProxy(index:uint, forceSoftware:Boolean=false):Stage3DProxy{ + if (!(_stageProxies[index])){ + _numStageProxies++; + _stageProxies[index] = new Stage3DProxy(index, this._stage.stage3Ds[index], this, forceSoftware); + }; + return (_stageProxies[index]); + } + function removeStage3DProxy(stage3DProxy:Stage3DProxy):void{ + _numStageProxies--; + _stageProxies[stage3DProxy.stage3DIndex] = null; + } + public function getFreeStage3DProxy(forceSoftware:Boolean=false):Stage3DProxy{ + var i:uint; + var len:uint = _stageProxies.length; + while (i < len) { + if (!(_stageProxies[i])){ + this.getStage3DProxy(i, forceSoftware); + _stageProxies[i].width = this._stage.stageWidth; + _stageProxies[i].height = this._stage.stageHeight; + return (_stageProxies[i]); + }; + i++; + }; + throw (new Error("Too many Stage3D instances used!")); + } + public function get hasFreeStage3DProxy():Boolean{ + return ((((_numStageProxies < _stageProxies.length)) ? true : false)); + } + public function get numProxySlotsFree():uint{ + return ((_stageProxies.length - _numStageProxies)); + } + public function get numProxySlotsUsed():uint{ + return (_numStageProxies); + } + public function get numProxySlotsTotal():uint{ + return (_stageProxies.length); + } + + } +}//package away3d.core.managers + +class Stage3DManagerSingletonEnforcer { + + public function Stage3DManagerSingletonEnforcer(){ + } +} diff --git a/flash_decompiled/watchdog/away3d/core/managers/Stage3DProxy.as b/flash_decompiled/watchdog/away3d/core/managers/Stage3DProxy.as new file mode 100644 index 0000000..aab0a78 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/managers/Stage3DProxy.as @@ -0,0 +1,282 @@ +package away3d.core.managers { + import flash.display.*; + import flash.events.*; + import __AS3__.vec.*; + import flash.display3D.*; + import flash.display3D.textures.*; + import flash.geom.*; + import away3d.events.*; + import away3d.debug.*; + + public class Stage3DProxy extends EventDispatcher { + + private static var _frameEventDriver:Shape = new Shape(); + + var _context3D:Context3D; + var _stage3DIndex:int = -1; + private var _usesSoftwareRendering:Boolean; + private var _stage3D:Stage3D; + private var _activeProgram3D:Program3D; + private var _stage3DManager:Stage3DManager; + private var _backBufferWidth:int; + private var _backBufferHeight:int; + private var _antiAlias:int; + private var _enableDepthAndStencil:Boolean; + private var _contextRequested:Boolean; + private var _activeVertexBuffers:Vector.; + private var _activeTextures:Vector.; + private var _renderTarget:TextureBase; + private var _renderSurfaceSelector:int; + private var _scissorRect:Rectangle; + private var _color:uint; + private var _backBufferDirty:Boolean; + private var _viewPort:Rectangle; + private var _enterFrame:Event; + private var _exitFrame:Event; + + public function Stage3DProxy(stage3DIndex:int, stage3D:Stage3D, stage3DManager:Stage3DManager, forceSoftware:Boolean=false){ + this._activeVertexBuffers = new Vector.(8, true); + this._activeTextures = new Vector.(8, true); + super(); + this._stage3DIndex = stage3DIndex; + this._stage3D = stage3D; + this._stage3D.x = 0; + this._stage3D.y = 0; + this._stage3D.visible = true; + this._stage3DManager = stage3DManager; + this._viewPort = new Rectangle(); + this._enableDepthAndStencil = true; + this._stage3D.addEventListener(Event.CONTEXT3D_CREATE, this.onContext3DUpdate, false, 1000, false); + this.requestContext(forceSoftware); + } + private function notifyEnterFrame():void{ + if (!(hasEventListener(Event.ENTER_FRAME))){ + return; + }; + if (!(this._enterFrame)){ + this._enterFrame = new Event(Event.ENTER_FRAME); + }; + dispatchEvent(this._enterFrame); + } + private function notifyExitFrame():void{ + if (!(hasEventListener(Event.EXIT_FRAME))){ + return; + }; + if (!(this._exitFrame)){ + this._exitFrame = new Event(Event.EXIT_FRAME); + }; + dispatchEvent(this._exitFrame); + } + public function setSimpleVertexBuffer(index:int, buffer:VertexBuffer3D, format:String, offset:int=0):void{ + if (((buffer) && ((this._activeVertexBuffers[index] == buffer)))){ + return; + }; + this._context3D.setVertexBufferAt(index, buffer, offset, format); + this._activeVertexBuffers[index] = buffer; + } + public function setTextureAt(index:int, texture:TextureBase):void{ + if (((!((texture == null))) && ((this._activeTextures[index] == texture)))){ + return; + }; + this._context3D.setTextureAt(index, texture); + this._activeTextures[index] = texture; + } + public function setProgram(program3D:Program3D):void{ + if (this._activeProgram3D == program3D){ + return; + }; + this._context3D.setProgram(program3D); + this._activeProgram3D = program3D; + } + public function dispose():void{ + this._stage3DManager.removeStage3DProxy(this); + this._stage3D.removeEventListener(Event.CONTEXT3D_CREATE, this.onContext3DUpdate); + this.freeContext3D(); + this._stage3D = null; + this._stage3DManager = null; + this._stage3DIndex = -1; + } + public function configureBackBuffer(backBufferWidth:int, backBufferHeight:int, antiAlias:int, enableDepthAndStencil:Boolean):void{ + this._backBufferWidth = backBufferWidth; + this._backBufferHeight = backBufferHeight; + this._antiAlias = antiAlias; + this._enableDepthAndStencil = enableDepthAndStencil; + if (this._context3D){ + this._context3D.configureBackBuffer(backBufferWidth, backBufferHeight, antiAlias, enableDepthAndStencil); + }; + } + public function get enableDepthAndStencil():Boolean{ + return (this._enableDepthAndStencil); + } + public function set enableDepthAndStencil(enableDepthAndStencil:Boolean):void{ + this._enableDepthAndStencil = enableDepthAndStencil; + this._backBufferDirty = true; + } + public function get renderTarget():TextureBase{ + return (this._renderTarget); + } + public function get renderSurfaceSelector():int{ + return (this._renderSurfaceSelector); + } + public function setRenderTarget(target:TextureBase, enableDepthAndStencil:Boolean=false, surfaceSelector:int=0):void{ + if ((((((this._renderTarget == target)) && ((surfaceSelector == this._renderSurfaceSelector)))) && ((this._enableDepthAndStencil == enableDepthAndStencil)))){ + return; + }; + this._renderTarget = target; + this._renderSurfaceSelector = surfaceSelector; + this._enableDepthAndStencil = enableDepthAndStencil; + if (target){ + this._context3D.setRenderToTexture(target, enableDepthAndStencil, this._antiAlias, surfaceSelector); + } else { + this._context3D.setRenderToBackBuffer(); + }; + } + public function clear():void{ + if (!(this._context3D)){ + return; + }; + if (this._backBufferDirty){ + this.configureBackBuffer(this._backBufferWidth, this._backBufferHeight, this._antiAlias, this._enableDepthAndStencil); + this._backBufferDirty = false; + }; + this._context3D.clear((((this._color >> 16) & 0xFF) / 0xFF), (((this._color >> 8) & 0xFF) / 0xFF), ((this._color & 0xFF) / 0xFF), (((this._color >> 24) & 0xFF) / 0xFF)); + } + public function present():void{ + if (!(this._context3D)){ + return; + }; + this._context3D.present(); + this._activeProgram3D = null; + } + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{ + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + if ((((((type == Event.ENTER_FRAME)) || ((type == Event.EXIT_FRAME)))) && (!(_frameEventDriver.hasEventListener(Event.ENTER_FRAME))))){ + _frameEventDriver.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, useCapture, priority, useWeakReference); + }; + } + override public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{ + super.removeEventListener(type, listener, useCapture); + if (((((!(hasEventListener(Event.ENTER_FRAME))) && (!(hasEventListener(Event.EXIT_FRAME))))) && (_frameEventDriver.hasEventListener(Event.ENTER_FRAME)))){ + _frameEventDriver.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame, useCapture); + }; + } + public function get scissorRect():Rectangle{ + return (this._scissorRect); + } + public function set scissorRect(value:Rectangle):void{ + this._scissorRect = value; + this._context3D.setScissorRectangle(this._scissorRect); + } + public function get stage3DIndex():int{ + return (this._stage3DIndex); + } + public function get stage3D():Stage3D{ + return (this._stage3D); + } + public function get context3D():Context3D{ + return (this._context3D); + } + public function get driverInfo():String{ + return (((this._context3D) ? this._context3D.driverInfo : null)); + } + public function get usesSoftwareRendering():Boolean{ + return (this._usesSoftwareRendering); + } + public function get x():Number{ + return (this._stage3D.x); + } + public function set x(value:Number):void{ + this._stage3D.x = (this._viewPort.x = value); + } + public function get y():Number{ + return (this._stage3D.y); + } + public function set y(value:Number):void{ + this._stage3D.y = (this._viewPort.y = value); + } + public function get width():int{ + return (this._backBufferWidth); + } + public function set width(width:int):void{ + this._backBufferWidth = (this._viewPort.width = width); + this._backBufferDirty = true; + } + public function get height():int{ + return (this._backBufferHeight); + } + public function set height(height:int):void{ + this._backBufferHeight = (this._viewPort.height = height); + this._backBufferDirty = true; + } + public function get antiAlias():int{ + return (this._antiAlias); + } + public function set antiAlias(antiAlias:int):void{ + this._antiAlias = antiAlias; + this._backBufferDirty = true; + } + public function get viewPort():Rectangle{ + return (this._viewPort); + } + public function get color():uint{ + return (this._color); + } + public function set color(color:uint):void{ + this._color = color; + } + public function get visible():Boolean{ + return (this._stage3D.visible); + } + public function set visible(value:Boolean):void{ + this._stage3D.visible = value; + } + private function freeContext3D():void{ + if (this._context3D){ + this._context3D.dispose(); + dispatchEvent(new Stage3DEvent(Stage3DEvent.CONTEXT3D_DISPOSED)); + }; + this._context3D = null; + } + private function onContext3DUpdate(event:Event):void{ + var hadContext:Boolean; + if (this._stage3D.context3D){ + hadContext = !((this._context3D == null)); + this._context3D = this._stage3D.context3D; + this._context3D.enableErrorChecking = Debug.active; + this._usesSoftwareRendering = (this._context3D.driverInfo.indexOf("Software") == 0); + if (((this._backBufferWidth) && (this._backBufferHeight))){ + this._context3D.configureBackBuffer(this._backBufferWidth, this._backBufferHeight, this._antiAlias, this._enableDepthAndStencil); + }; + dispatchEvent(new Stage3DEvent(((hadContext) ? Stage3DEvent.CONTEXT3D_RECREATED : Stage3DEvent.CONTEXT3D_CREATED))); + } else { + throw (new Error("Rendering context lost!")); + }; + } + private function requestContext(forceSoftware:Boolean=false):void{ + this._usesSoftwareRendering = ((this._usesSoftwareRendering) || (forceSoftware)); + this._stage3D.requestContext3D(((forceSoftware) ? Context3DRenderMode.SOFTWARE : Context3DRenderMode.AUTO)); + this._contextRequested = true; + } + private function onEnterFrame(event:Event):void{ + if (!(this._context3D)){ + return; + }; + this.clear(); + this.notifyEnterFrame(); + this.present(); + this.notifyExitFrame(); + } + public function recoverFromDisposal():Boolean{ + if (!(this._context3D)){ + return (false); + }; + if (this._context3D.driverInfo == "Disposed"){ + this._context3D = null; + dispatchEvent(new Stage3DEvent(Stage3DEvent.CONTEXT3D_DISPOSED)); + return (false); + }; + return (true); + } + + } +}//package away3d.core.managers diff --git a/flash_decompiled/watchdog/away3d/core/math/MathConsts.as b/flash_decompiled/watchdog/away3d/core/math/MathConsts.as new file mode 100644 index 0000000..e969273 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/math/MathConsts.as @@ -0,0 +1,9 @@ +package away3d.core.math { + + public class MathConsts { + + public static const RADIANS_TO_DEGREES:Number = 57.2957795130823; + public static const DEGREES_TO_RADIANS:Number = 0.0174532925199433; + + } +}//package away3d.core.math diff --git a/flash_decompiled/watchdog/away3d/core/math/Matrix3DUtils.as b/flash_decompiled/watchdog/away3d/core/math/Matrix3DUtils.as new file mode 100644 index 0000000..6c6290a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/math/Matrix3DUtils.as @@ -0,0 +1,104 @@ +package away3d.core.math { + import flash.geom.*; + import __AS3__.vec.*; + + public class Matrix3DUtils { + + public static const RAW_DATA_CONTAINER:Vector. = new Vector.(16); +; + + public static function quaternion2matrix(quarternion:Quaternion, m:Matrix3D=null):Matrix3D{ + var x:Number = quarternion.x; + var y:Number = quarternion.y; + var z:Number = quarternion.z; + var w:Number = quarternion.w; + var xx:Number = (x * x); + var xy:Number = (x * y); + var xz:Number = (x * z); + var xw:Number = (x * w); + var yy:Number = (y * y); + var yz:Number = (y * z); + var yw:Number = (y * w); + var zz:Number = (z * z); + var zw:Number = (z * w); + var raw:Vector. = RAW_DATA_CONTAINER; + raw[0] = (1 - (2 * (yy + zz))); + raw[1] = (2 * (xy + zw)); + raw[2] = (2 * (xz - yw)); + raw[4] = (2 * (xy - zw)); + raw[5] = (1 - (2 * (xx + zz))); + raw[6] = (2 * (yz + xw)); + raw[8] = (2 * (xz + yw)); + raw[9] = (2 * (yz - xw)); + raw[10] = (1 - (2 * (xx + yy))); + raw[3] = (raw[7] = (raw[11] = (raw[12] = (raw[13] = (raw[14] = 0))))); + raw[15] = 1; + if (m){ + m.copyRawDataFrom(raw); + return (m); + }; + return (new Matrix3D(raw)); + } + public static function getForward(m:Matrix3D, v:Vector3D=null):Vector3D{ + v = ((v) || (new Vector3D(0, 0, 0))); + m.copyColumnTo(2, v); + v.normalize(); + return (v); + } + public static function getUp(m:Matrix3D, v:Vector3D=null):Vector3D{ + v = ((v) || (new Vector3D(0, 0, 0))); + m.copyColumnTo(1, v); + v.normalize(); + return (v); + } + public static function getRight(m:Matrix3D, v:Vector3D=null):Vector3D{ + v = ((v) || (new Vector3D(0, 0, 0))); + m.copyColumnTo(0, v); + v.normalize(); + return (v); + } + public static function compare(m1:Matrix3D, m2:Matrix3D):Boolean{ + var r1:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var r2:Vector. = m2.rawData; + m1.copyRawDataTo(r1); + var i:uint; + while (i < 16) { + if (r1[i] != r2[i]){ + return (false); + }; + i++; + }; + return (true); + } + public static function lookAt(matrix:Matrix3D, pos:Vector3D, dir:Vector3D, up:Vector3D):void{ + var dirN:Vector3D; + var upN:Vector3D; + var lftN:Vector3D; + var raw:Vector. = RAW_DATA_CONTAINER; + lftN = dir.crossProduct(up); + lftN.normalize(); + upN = lftN.crossProduct(dir); + upN.normalize(); + dirN = dir.clone(); + dirN.normalize(); + raw[0] = lftN.x; + raw[1] = upN.x; + raw[2] = -(dirN.x); + raw[3] = 0; + raw[4] = lftN.y; + raw[5] = upN.y; + raw[6] = -(dirN.y); + raw[7] = 0; + raw[8] = lftN.z; + raw[9] = upN.z; + raw[10] = -(dirN.z); + raw[11] = 0; + raw[12] = -(lftN.dotProduct(pos)); + raw[13] = -(upN.dotProduct(pos)); + raw[14] = dirN.dotProduct(pos); + raw[15] = 1; + matrix.copyRawDataFrom(raw); + } + + } +}//package away3d.core.math diff --git a/flash_decompiled/watchdog/away3d/core/math/Plane3D.as b/flash_decompiled/watchdog/away3d/core/math/Plane3D.as new file mode 100644 index 0000000..3477e82 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/math/Plane3D.as @@ -0,0 +1,132 @@ +package away3d.core.math { + import flash.geom.*; + + public class Plane3D { + + public static const ALIGN_ANY:int = 0; + public static const ALIGN_XY_AXIS:int = 1; + public static const ALIGN_YZ_AXIS:int = 2; + public static const ALIGN_XZ_AXIS:int = 3; + + public var a:Number; + public var b:Number; + public var c:Number; + public var d:Number; + var _alignment:int; + + public function Plane3D(a:Number=0, b:Number=0, c:Number=0, d:Number=0){ + super(); + this.a = a; + this.b = b; + this.c = c; + this.d = d; + if ((((a == 0)) && ((b == 0)))){ + this._alignment = ALIGN_XY_AXIS; + } else { + if ((((b == 0)) && ((c == 0)))){ + this._alignment = ALIGN_YZ_AXIS; + } else { + if ((((a == 0)) && ((c == 0)))){ + this._alignment = ALIGN_XZ_AXIS; + } else { + this._alignment = ALIGN_ANY; + }; + }; + }; + } + public function fromPoints(p0:Vector3D, p1:Vector3D, p2:Vector3D):void{ + var d1x:Number = (p1.x - p0.x); + var d1y:Number = (p1.y - p0.y); + var d1z:Number = (p1.z - p0.z); + var d2x:Number = (p2.x - p0.x); + var d2y:Number = (p2.y - p0.y); + var d2z:Number = (p2.z - p0.z); + this.a = ((d1y * d2z) - (d1z * d2y)); + this.b = ((d1z * d2x) - (d1x * d2z)); + this.c = ((d1x * d2y) - (d1y * d2x)); + this.d = (((this.a * p0.x) + (this.b * p0.y)) + (this.c * p0.z)); + if ((((this.a == 0)) && ((this.b == 0)))){ + this._alignment = ALIGN_XY_AXIS; + } else { + if ((((this.b == 0)) && ((this.c == 0)))){ + this._alignment = ALIGN_YZ_AXIS; + } else { + if ((((this.a == 0)) && ((this.c == 0)))){ + this._alignment = ALIGN_XZ_AXIS; + } else { + this._alignment = ALIGN_ANY; + }; + }; + }; + } + public function fromNormalAndPoint(normal:Vector3D, point:Vector3D):void{ + this.a = normal.x; + this.b = normal.y; + this.c = normal.z; + this.d = (((this.a * point.x) + (this.b * point.y)) + (this.c * point.z)); + if ((((this.a == 0)) && ((this.b == 0)))){ + this._alignment = ALIGN_XY_AXIS; + } else { + if ((((this.b == 0)) && ((this.c == 0)))){ + this._alignment = ALIGN_YZ_AXIS; + } else { + if ((((this.a == 0)) && ((this.c == 0)))){ + this._alignment = ALIGN_XZ_AXIS; + } else { + this._alignment = ALIGN_ANY; + }; + }; + }; + } + public function normalize():Plane3D{ + var len:Number = (1 / Math.sqrt((((this.a * this.a) + (this.b * this.b)) + (this.c * this.c)))); + this.a = (this.a * len); + this.b = (this.b * len); + this.c = (this.c * len); + this.d = (this.d * len); + return (this); + } + public function distance(p:Vector3D):Number{ + if (this._alignment == ALIGN_YZ_AXIS){ + return (((this.a * p.x) - this.d)); + }; + if (this._alignment == ALIGN_XZ_AXIS){ + return (((this.b * p.y) - this.d)); + }; + if (this._alignment == ALIGN_XY_AXIS){ + return (((this.c * p.z) - this.d)); + }; + return (((((this.a * p.x) + (this.b * p.y)) + (this.c * p.z)) - this.d)); + } + public function classifyPoint(p:Vector3D, epsilon:Number=0.01):int{ + var len:Number; + if (this.d != this.d){ + return (PlaneClassification.FRONT); + }; + if (this._alignment == ALIGN_YZ_AXIS){ + len = ((this.a * p.x) - this.d); + } else { + if (this._alignment == ALIGN_XZ_AXIS){ + len = ((this.b * p.y) - this.d); + } else { + if (this._alignment == ALIGN_XY_AXIS){ + len = ((this.c * p.z) - this.d); + } else { + len = ((((this.a * p.x) + (this.b * p.y)) + (this.c * p.z)) - this.d); + }; + }; + }; + if (len < -(epsilon)){ + return (PlaneClassification.BACK); + }; + if (len > epsilon){ + return (PlaneClassification.FRONT); + }; + return (PlaneClassification.INTERSECT); + } + public function toString():String{ + return ((((((((("Plane3D [a:" + this.a) + ", b:") + this.b) + ", c:") + this.c) + ", d:") + this.d) + "].")); + } + + } +}//package away3d.core.math diff --git a/flash_decompiled/watchdog/away3d/core/math/PlaneClassification.as b/flash_decompiled/watchdog/away3d/core/math/PlaneClassification.as new file mode 100644 index 0000000..a87eac3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/math/PlaneClassification.as @@ -0,0 +1,12 @@ +package away3d.core.math { + + public class PlaneClassification { + + public static const BACK:int = 0; + public static const FRONT:int = 1; + public static const IN:int = 0; + public static const OUT:int = 1; + public static const INTERSECT:int = 2; + + } +}//package away3d.core.math diff --git a/flash_decompiled/watchdog/away3d/core/math/Quaternion.as b/flash_decompiled/watchdog/away3d/core/math/Quaternion.as new file mode 100644 index 0000000..ee18a50 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/math/Quaternion.as @@ -0,0 +1,253 @@ +package away3d.core.math { + import flash.geom.*; + import __AS3__.vec.*; + + public final class Quaternion { + + public var x:Number = 0; + public var y:Number = 0; + public var z:Number = 0; + public var w:Number = 1; + + public function Quaternion(x:Number=0, y:Number=0, z:Number=0, w:Number=1){ + super(); + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + public function get magnitude():Number{ + return (Math.sqrt(((((this.w * this.w) + (this.x * this.x)) + (this.y * this.y)) + (this.z * this.z)))); + } + public function multiply(qa:Quaternion, qb:Quaternion):void{ + var w1:Number = qa.w; + var x1:Number = qa.x; + var y1:Number = qa.y; + var z1:Number = qa.z; + var w2:Number = qb.w; + var x2:Number = qb.x; + var y2:Number = qb.y; + var z2:Number = qb.z; + this.w = ((((w1 * w2) - (x1 * x2)) - (y1 * y2)) - (z1 * z2)); + this.x = ((((w1 * x2) + (x1 * w2)) + (y1 * z2)) - (z1 * y2)); + this.y = ((((w1 * y2) - (x1 * z2)) + (y1 * w2)) + (z1 * x2)); + this.z = ((((w1 * z2) + (x1 * y2)) - (y1 * x2)) + (z1 * w2)); + } + public function multiplyVector(vector:Vector3D, target:Quaternion=null):Quaternion{ + target = ((target) || (new Quaternion())); + var x2:Number = vector.x; + var y2:Number = vector.y; + var z2:Number = vector.z; + target.w = (((-(this.x) * x2) - (this.y * y2)) - (this.z * z2)); + target.x = (((this.w * x2) + (this.y * z2)) - (this.z * y2)); + target.y = (((this.w * y2) - (this.x * z2)) + (this.z * x2)); + target.z = (((this.w * z2) + (this.x * y2)) - (this.y * x2)); + return (target); + } + public function fromAxisAngle(axis:Vector3D, angle:Number):void{ + var sin_a:Number = Math.sin((angle / 2)); + var cos_a:Number = Math.cos((angle / 2)); + this.x = (axis.x * sin_a); + this.y = (axis.y * sin_a); + this.z = (axis.z * sin_a); + this.w = cos_a; + this.normalize(); + } + public function slerp(qa:Quaternion, qb:Quaternion, t:Number):void{ + var angle:Number; + var s:Number; + var s1:Number; + var s2:Number; + var len:Number; + var w1:Number = qa.w; + var x1:Number = qa.x; + var y1:Number = qa.y; + var z1:Number = qa.z; + var w2:Number = qb.w; + var x2:Number = qb.x; + var y2:Number = qb.y; + var z2:Number = qb.z; + var dot:Number = ((((w1 * w2) + (x1 * x2)) + (y1 * y2)) + (z1 * z2)); + if (dot < 0){ + dot = -(dot); + w2 = -(w2); + x2 = -(x2); + y2 = -(y2); + z2 = -(z2); + }; + if (dot < 0.95){ + angle = Math.acos(dot); + s = (1 / Math.sin(angle)); + s1 = (Math.sin((angle * (1 - t))) * s); + s2 = (Math.sin((angle * t)) * s); + this.w = ((w1 * s1) + (w2 * s2)); + this.x = ((x1 * s1) + (x2 * s2)); + this.y = ((y1 * s1) + (y2 * s2)); + this.z = ((z1 * s1) + (z2 * s2)); + } else { + this.w = (w1 + (t * (w2 - w1))); + this.x = (x1 + (t * (x2 - x1))); + this.y = (y1 + (t * (y2 - y1))); + this.z = (z1 + (t * (z2 - z1))); + len = (1 / Math.sqrt(((((this.w * this.w) + (this.x * this.x)) + (this.y * this.y)) + (this.z * this.z)))); + this.w = (this.w * len); + this.x = (this.x * len); + this.y = (this.y * len); + this.z = (this.z * len); + }; + } + public function lerp(qa:Quaternion, qb:Quaternion, t:Number):void{ + var len:Number; + var w1:Number = qa.w; + var x1:Number = qa.x; + var y1:Number = qa.y; + var z1:Number = qa.z; + var w2:Number = qb.w; + var x2:Number = qb.x; + var y2:Number = qb.y; + var z2:Number = qb.z; + if (((((w1 * w2) + (x1 * x2)) + (y1 * y2)) + (z1 * z2)) < 0){ + w2 = -(w2); + x2 = -(x2); + y2 = -(y2); + z2 = -(z2); + }; + this.w = (w1 + (t * (w2 - w1))); + this.x = (x1 + (t * (x2 - x1))); + this.y = (y1 + (t * (y2 - y1))); + this.z = (z1 + (t * (z2 - z1))); + len = (1 / Math.sqrt(((((this.w * this.w) + (this.x * this.x)) + (this.y * this.y)) + (this.z * this.z)))); + this.w = (this.w * len); + this.x = (this.x * len); + this.y = (this.y * len); + this.z = (this.z * len); + } + public function fromEulerAngles(ax:Number, ay:Number, az:Number):void{ + var halfX:Number = (ax * 0.5); + var halfY:Number = (ay * 0.5); + var halfZ:Number = (az * 0.5); + var cosX:Number = Math.cos(halfX); + var sinX:Number = Math.sin(halfX); + var cosY:Number = Math.cos(halfY); + var sinY:Number = Math.sin(halfY); + var cosZ:Number = Math.cos(halfZ); + var sinZ:Number = Math.sin(halfZ); + this.w = (((cosX * cosY) * cosZ) + ((sinX * sinY) * sinZ)); + this.x = (((sinX * cosY) * cosZ) - ((cosX * sinY) * sinZ)); + this.y = (((cosX * sinY) * cosZ) + ((sinX * cosY) * sinZ)); + this.z = (((cosX * cosY) * sinZ) - ((sinX * sinY) * cosZ)); + } + public function toEulerAngles(target:Vector3D=null):Vector3D{ + target = ((target) || (new Vector3D())); + target.x = Math.atan2((2 * ((this.w * this.x) + (this.y * this.z))), (1 - (2 * ((this.x * this.x) + (this.y * this.y))))); + target.y = Math.asin((2 * ((this.w * this.y) - (this.z * this.x)))); + target.z = Math.atan2((2 * ((this.w * this.z) + (this.x * this.y))), (1 - (2 * ((this.y * this.y) + (this.z * this.z))))); + return (target); + } + public function normalize(val:Number=1):void{ + var mag:Number = (val / Math.sqrt(((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z)) + (this.w * this.w)))); + this.x = (this.x * mag); + this.y = (this.y * mag); + this.z = (this.z * mag); + this.w = (this.w * mag); + } + public function toString():String{ + return ((((((((("{x:" + this.x) + " y:") + this.y) + " z:") + this.z) + " w:") + this.w) + "}")); + } + public function toMatrix3D(target:Matrix3D=null):Matrix3D{ + var rawData:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var xy2:Number = ((2 * this.x) * this.y); + var xz2:Number = ((2 * this.x) * this.z); + var xw2:Number = ((2 * this.x) * this.w); + var yz2:Number = ((2 * this.y) * this.z); + var yw2:Number = ((2 * this.y) * this.w); + var zw2:Number = ((2 * this.z) * this.w); + var xx:Number = (this.x * this.x); + var yy:Number = (this.y * this.y); + var zz:Number = (this.z * this.z); + var ww:Number = (this.w * this.w); + rawData[0] = (((xx - yy) - zz) + ww); + rawData[4] = (xy2 - zw2); + rawData[8] = (xz2 + yw2); + rawData[12] = 0; + rawData[1] = (xy2 + zw2); + rawData[5] = (((-(xx) + yy) - zz) + ww); + rawData[9] = (yz2 - xw2); + rawData[13] = 0; + rawData[2] = (xz2 - yw2); + rawData[6] = (yz2 + xw2); + rawData[10] = (((-(xx) - yy) + zz) + ww); + rawData[14] = 0; + rawData[3] = 0; + rawData[7] = 0; + rawData[11] = 0; + rawData[15] = 1; + if (!(target)){ + return (new Matrix3D(rawData)); + }; + target.copyRawDataFrom(rawData); + return (target); + } + public function fromMatrix(matrix:Matrix3D):void{ + var v:Vector3D = matrix.decompose(Orientation3D.QUATERNION)[1]; + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + public function toRawData(target:Vector., exclude4thRow:Boolean=false):void{ + var xy2:Number = ((2 * this.x) * this.y); + var xz2:Number = ((2 * this.x) * this.z); + var xw2:Number = ((2 * this.x) * this.w); + var yz2:Number = ((2 * this.y) * this.z); + var yw2:Number = ((2 * this.y) * this.w); + var zw2:Number = ((2 * this.z) * this.w); + var xx:Number = (this.x * this.x); + var yy:Number = (this.y * this.y); + var zz:Number = (this.z * this.z); + var ww:Number = (this.w * this.w); + target[0] = (((xx - yy) - zz) + ww); + target[1] = (xy2 - zw2); + target[2] = (xz2 + yw2); + target[4] = (xy2 + zw2); + target[5] = (((-(xx) + yy) - zz) + ww); + target[6] = (yz2 - xw2); + target[8] = (xz2 - yw2); + target[9] = (yz2 + xw2); + target[10] = (((-(xx) - yy) + zz) + ww); + target[3] = (target[7] = (target[11] = 0)); + if (!(exclude4thRow)){ + target[12] = (target[13] = (target[14] = 0)); + target[15] = 1; + }; + } + public function clone():Quaternion{ + return (new Quaternion(this.x, this.y, this.z, this.w)); + } + public function rotatePoint(vector:Vector3D, target:Vector3D=null):Vector3D{ + var x1:Number; + var y1:Number; + var z1:Number; + var w1:Number; + var x2:Number = vector.x; + var y2:Number = vector.y; + var z2:Number = vector.z; + target = ((target) || (new Vector3D())); + w1 = (((-(this.x) * x2) - (this.y * y2)) - (this.z * z2)); + x1 = (((this.w * x2) + (this.y * z2)) - (this.z * y2)); + y1 = (((this.w * y2) - (this.x * z2)) + (this.z * x2)); + z1 = (((this.w * z2) + (this.x * y2)) - (this.y * x2)); + target.x = ((((-(w1) * this.x) + (x1 * this.w)) - (y1 * this.z)) + (z1 * this.y)); + target.y = ((((-(w1) * this.y) + (x1 * this.z)) + (y1 * this.w)) - (z1 * this.x)); + target.z = ((((-(w1) * this.z) - (x1 * this.y)) + (y1 * this.x)) + (z1 * this.w)); + return (target); + } + public function copyFrom(q:Quaternion):void{ + this.x = q.x; + this.y = q.y; + this.z = q.z; + this.w = q.w; + } + + } +}//package away3d.core.math diff --git a/flash_decompiled/watchdog/away3d/core/partition/CameraNode.as b/flash_decompiled/watchdog/away3d/core/partition/CameraNode.as new file mode 100644 index 0000000..0c5d298 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/CameraNode.as @@ -0,0 +1,17 @@ +package away3d.core.partition { + import away3d.cameras.*; + import away3d.core.traverse.*; + + public class CameraNode extends EntityNode { + + public function CameraNode(camera:Camera3D){ + super(camera); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + } + override public function isInFrustum(camera:Camera3D):Boolean{ + return (true); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/DirectionalLightNode.as b/flash_decompiled/watchdog/away3d/core/partition/DirectionalLightNode.as new file mode 100644 index 0000000..8cd312d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/DirectionalLightNode.as @@ -0,0 +1,25 @@ +package away3d.core.partition { + import away3d.lights.*; + import away3d.core.traverse.*; + + public class DirectionalLightNode extends EntityNode { + + private var _light:DirectionalLight; + + public function DirectionalLightNode(light:DirectionalLight){ + super(light); + this._light = light; + } + public function get light():DirectionalLight{ + return (this._light); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + traverser.applyDirectionalLight(this._light); + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/EntityNode.as b/flash_decompiled/watchdog/away3d/core/partition/EntityNode.as new file mode 100644 index 0000000..719c4a8 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/EntityNode.as @@ -0,0 +1,37 @@ +package away3d.core.partition { + import away3d.entities.*; + import away3d.core.traverse.*; + import away3d.cameras.*; + + public class EntityNode extends NodeBase { + + private var _entity:Entity; + var _updateQueueNext:EntityNode; + + public function EntityNode(entity:Entity){ + super(); + this._entity = entity; + _numEntities = 1; + } + public function get entity():Entity{ + return (this._entity); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + traverser.applyEntity(this._entity); + } + public function removeFromParent():void{ + if (_parent){ + _parent.removeNode(this); + }; + _parent = null; + } + override public function isInFrustum(camera:Camera3D):Boolean{ + if (this._entity.isVisible == false){ + return (false); + }; + this._entity.pushModelViewProjection(camera); + return (true); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/LightNode.as b/flash_decompiled/watchdog/away3d/core/partition/LightNode.as new file mode 100644 index 0000000..9bbcce0 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/LightNode.as @@ -0,0 +1,25 @@ +package away3d.core.partition { + import away3d.lights.*; + import away3d.core.traverse.*; + + public class LightNode extends EntityNode { + + private var _light:LightBase; + + public function LightNode(light:LightBase){ + super(light); + this._light = light; + } + public function get light():LightBase{ + return (this._light); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + traverser.applyUnknownLight(this._light); + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/LightProbeNode.as b/flash_decompiled/watchdog/away3d/core/partition/LightProbeNode.as new file mode 100644 index 0000000..5e1d25f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/LightProbeNode.as @@ -0,0 +1,25 @@ +package away3d.core.partition { + import away3d.lights.*; + import away3d.core.traverse.*; + + public class LightProbeNode extends EntityNode { + + private var _light:LightProbe; + + public function LightProbeNode(light:LightProbe){ + super(light); + this._light = light; + } + public function get light():LightProbe{ + return (this._light); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + traverser.applyLightProbe(this._light); + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/MeshNode.as b/flash_decompiled/watchdog/away3d/core/partition/MeshNode.as new file mode 100644 index 0000000..782ab06 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/MeshNode.as @@ -0,0 +1,36 @@ +package away3d.core.partition { + import away3d.entities.*; + import __AS3__.vec.*; + import away3d.core.base.*; + import away3d.core.traverse.*; + + public class MeshNode extends EntityNode { + + private var _mesh:Mesh; + + public function MeshNode(mesh:Mesh){ + super(mesh); + this._mesh = mesh; + } + public function get mesh():Mesh{ + return (this._mesh); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + var subs:Vector.; + var i:uint; + var len:uint; + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + subs = this._mesh.subMeshes; + len = subs.length; + while (i < len) { + var _temp1 = i; + i = (i + 1); + traverser.applyRenderable(subs[_temp1]); + }; + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/NodeBase.as b/flash_decompiled/watchdog/away3d/core/partition/NodeBase.as new file mode 100644 index 0000000..9b331b4 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/NodeBase.as @@ -0,0 +1,96 @@ +package away3d.core.partition { + import __AS3__.vec.*; + import away3d.cameras.*; + import away3d.entities.*; + import away3d.core.traverse.*; + import away3d.primitives.*; + + public class NodeBase { + + protected var _parent:NodeBase; + protected var _childNodes:Vector.; + protected var _numChildNodes:uint; + private var _debugPrimitive:WireframePrimitiveBase; + var _numEntities:int; + + public function NodeBase(){ + super(); + this._childNodes = new Vector.(); + } + public function get showDebugBounds():Boolean{ + return (!((this._debugPrimitive == null))); + } + public function set showDebugBounds(value:Boolean):void{ + if (Boolean(this._debugPrimitive) == value){ + return; + }; + if (value){ + this._debugPrimitive = this.createDebugBounds(); + } else { + this._debugPrimitive.dispose(); + this._debugPrimitive = null; + }; + var i:uint; + while (i < this._numChildNodes) { + this._childNodes[i].showDebugBounds = value; + i++; + }; + } + public function get parent():NodeBase{ + return (this._parent); + } + public function addNode(node:NodeBase):void{ + node._parent = this; + this._numEntities = (this._numEntities + node._numEntities); + var _local3 = this._numChildNodes++; + this._childNodes[_local3] = node; + node.showDebugBounds = this.showDebugBounds; + var numEntities:int = node._numEntities; + node = this; + do { + node._numEntities = (node._numEntities + numEntities); + node = node._parent; + } while (node); + } + public function removeNode(node:NodeBase):void{ + var index:uint = this._childNodes.indexOf(node); + this._childNodes[index] = this._childNodes[--this._numChildNodes]; + this._childNodes.pop(); + var numEntities:int = node._numEntities; + node = this; + do { + node._numEntities = (node._numEntities - numEntities); + node = node._parent; + } while (node); + } + public function isInFrustum(camera:Camera3D):Boolean{ + camera = null; + return (true); + } + public function findPartitionForEntity(entity:Entity):NodeBase{ + entity = null; + return (this); + } + public function acceptTraverser(traverser:PartitionTraverser):void{ + var i:uint; + if (this._numEntities == 0){ + return; + }; + if (traverser.enterNode(this)){ + while (i < this._numChildNodes) { + var _temp1 = i; + i = (i + 1); + this._childNodes[_temp1].acceptTraverser(traverser); + }; + if (this._debugPrimitive){ + traverser.applyRenderable(this._debugPrimitive); + }; + }; + traverser.leaveNode(this); + } + protected function createDebugBounds():WireframePrimitiveBase{ + return (null); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/NullNode.as b/flash_decompiled/watchdog/away3d/core/partition/NullNode.as new file mode 100644 index 0000000..4116ee3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/NullNode.as @@ -0,0 +1,9 @@ +package away3d.core.partition { + + public class NullNode extends NodeBase { + + public function NullNode(){ + super(); + } + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/Partition3D.as b/flash_decompiled/watchdog/away3d/core/partition/Partition3D.as new file mode 100644 index 0000000..40d646d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/Partition3D.as @@ -0,0 +1,81 @@ +package away3d.core.partition { + import away3d.core.traverse.*; + import away3d.entities.*; + + public class Partition3D { + + private var _rootNode:NodeBase; + private var _updatesMade:Boolean; + private var _updateQueue:EntityNode; + + public function Partition3D(rootNode:NodeBase){ + super(); + this._rootNode = ((rootNode) || (new NullNode())); + } + public function get showDebugBounds():Boolean{ + return (this._rootNode.showDebugBounds); + } + public function set showDebugBounds(value:Boolean):void{ + } + public function traverse(traverser:PartitionTraverser):void{ + if (((((this._updatesMade) && ((traverser is EntityCollector)))) && (!((traverser is ShadowCasterCollector))))){ + this.updateEntities(); + }; + this._rootNode.acceptTraverser(traverser); + } + function markForUpdate(entity:Entity):void{ + var node:EntityNode = entity.getEntityPartitionNode(); + var t:EntityNode = this._updateQueue; + while (t) { + if (node == t){ + return; + }; + t = t._updateQueueNext; + }; + node._updateQueueNext = this._updateQueue; + this._updateQueue = node; + this._updatesMade = true; + } + function removeEntity(entity:Entity):void{ + var t:EntityNode; + var node:EntityNode = entity.getEntityPartitionNode(); + node.removeFromParent(); + if (node == this._updateQueue){ + this._updateQueue = node._updateQueueNext; + } else { + t = this._updateQueue; + while (((t) && (!((t._updateQueueNext == node))))) { + t = t._updateQueueNext; + }; + if (t){ + t._updateQueueNext = node._updateQueueNext; + }; + }; + node._updateQueueNext = null; + if (!(this._updateQueue)){ + this._updatesMade = false; + }; + } + private function updateEntities():void{ + var targetNode:NodeBase; + var t:EntityNode; + var node:EntityNode = this._updateQueue; + this._updateQueue = null; + this._updatesMade = false; + do { + targetNode = this._rootNode.findPartitionForEntity(node.entity); + if (node.parent != targetNode){ + if (node){ + node.removeFromParent(); + }; + targetNode.addNode(node); + }; + t = node._updateQueueNext; + node._updateQueueNext = null; + node.entity.internalUpdate(); + node = t; + } while (node); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/PointLightNode.as b/flash_decompiled/watchdog/away3d/core/partition/PointLightNode.as new file mode 100644 index 0000000..89ca7c4 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/PointLightNode.as @@ -0,0 +1,25 @@ +package away3d.core.partition { + import away3d.lights.*; + import away3d.core.traverse.*; + + public class PointLightNode extends EntityNode { + + private var _light:PointLight; + + public function PointLightNode(light:PointLight){ + super(light); + this._light = light; + } + public function get light():PointLight{ + return (this._light); + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + traverser.applyPointLight(this._light); + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/partition/RenderableNode.as b/flash_decompiled/watchdog/away3d/core/partition/RenderableNode.as new file mode 100644 index 0000000..806b44c --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/partition/RenderableNode.as @@ -0,0 +1,23 @@ +package away3d.core.partition { + import away3d.entities.*; + import away3d.core.base.*; + import away3d.core.traverse.*; + + public class RenderableNode extends EntityNode { + + private var _renderable:IRenderable; + + public function RenderableNode(renderable:IRenderable){ + super(Entity(renderable)); + this._renderable = renderable; + } + override public function acceptTraverser(traverser:PartitionTraverser):void{ + if (traverser.enterNode(this)){ + super.acceptTraverser(traverser); + traverser.applyRenderable(this._renderable); + }; + traverser.leaveNode(this); + } + + } +}//package away3d.core.partition diff --git a/flash_decompiled/watchdog/away3d/core/pick/IPicker.as b/flash_decompiled/watchdog/away3d/core/pick/IPicker.as new file mode 100644 index 0000000..b378e4e --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/IPicker.as @@ -0,0 +1,11 @@ +package away3d.core.pick { + import away3d.containers.*; + import flash.geom.*; + + public interface IPicker { + + function getViewCollision(_arg1:Number, _arg2:Number, _arg3:View3D):PickingCollisionVO; + function getSceneCollision(_arg1:Vector3D, _arg2:Vector3D, _arg3:Scene3D):PickingCollisionVO; + + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/pick/IPickingCollider.as b/flash_decompiled/watchdog/away3d/core/pick/IPickingCollider.as new file mode 100644 index 0000000..d9230af --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/IPickingCollider.as @@ -0,0 +1,11 @@ +package away3d.core.pick { + import flash.geom.*; + import away3d.core.base.*; + + public interface IPickingCollider { + + function setLocalRay(_arg1:Vector3D, _arg2:Vector3D):void; + function testSubMeshCollision(_arg1:SubMesh, _arg2:PickingCollisionVO, _arg3:Number):Boolean; + + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/pick/PickingCollisionVO.as b/flash_decompiled/watchdog/away3d/core/pick/PickingCollisionVO.as new file mode 100644 index 0000000..bba1ab1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/PickingCollisionVO.as @@ -0,0 +1,23 @@ +package away3d.core.pick { + import away3d.entities.*; + import flash.geom.*; + import away3d.core.base.*; + + public class PickingCollisionVO { + + public var entity:Entity; + public var localPosition:Vector3D; + public var localNormal:Vector3D; + public var uv:Point; + public var localRayPosition:Vector3D; + public var localRayDirection:Vector3D; + public var rayOriginIsInsideBounds:Boolean; + public var rayEntryDistance:Number; + public var renderable:IRenderable; + + public function PickingCollisionVO(entity:Entity){ + super(); + this.entity = entity; + } + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/pick/PickingType.as b/flash_decompiled/watchdog/away3d/core/pick/PickingType.as new file mode 100644 index 0000000..923dbbd --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/PickingType.as @@ -0,0 +1,10 @@ +package away3d.core.pick { + + public class PickingType { + + public static const SHADER:IPicker = new ShaderPicker(); + public static const RAYCAST_FIRST_ENCOUNTERED:IPicker = new RaycastPicker(false); + public static const RAYCAST_BEST_HIT:IPicker = new RaycastPicker(true); + + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/pick/RaycastPicker.as b/flash_decompiled/watchdog/away3d/core/pick/RaycastPicker.as new file mode 100644 index 0000000..ce92773 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/RaycastPicker.as @@ -0,0 +1,109 @@ +package away3d.core.pick { + import __AS3__.vec.*; + import away3d.entities.*; + import flash.geom.*; + import away3d.bounds.*; + import away3d.core.traverse.*; + import away3d.core.data.*; + import away3d.containers.*; + + public class RaycastPicker implements IPicker { + + private var _findClosestCollision:Boolean; + protected var _entities:Vector.; + protected var _numEntities:uint; + protected var _hasCollisions:Boolean; + + public function RaycastPicker(findClosestCollision:Boolean){ + super(); + this._findClosestCollision = findClosestCollision; + this._entities = new Vector.(); + } + public function getViewCollision(x:Number, y:Number, view:View3D):PickingCollisionVO{ + var entity:Entity; + var i:uint; + var localRayPosition:Vector3D; + var localRayDirection:Vector3D; + var rayEntryDistance:Number; + var pickingCollisionVO:PickingCollisionVO; + var bestCollisionVO:PickingCollisionVO; + var invSceneTransform:Matrix3D; + var bounds:BoundingVolumeBase; + var collector:EntityCollector = view.entityCollector; + if (collector.numMouseEnableds == 0){ + return (null); + }; + var rayPosition:Vector3D = view.unproject(x, y, 0); + var rayDirection:Vector3D = view.unproject(x, y, 1); + rayDirection = rayDirection.subtract(rayPosition); + this._hasCollisions = false; + this._numEntities = 0; + var node:EntityListItem = collector.entityHead; + while (node) { + entity = node.entity; + if (((((entity.visible) && (entity._ancestorsAllowMouseEnabled))) && (entity.mouseEnabled))){ + pickingCollisionVO = entity.pickingCollisionVO; + invSceneTransform = entity.inverseSceneTransform; + bounds = entity.bounds; + localRayPosition = invSceneTransform.transformVector(rayPosition); + localRayDirection = invSceneTransform.deltaTransformVector(rayDirection); + rayEntryDistance = bounds.rayIntersection(localRayPosition, localRayDirection, (pickingCollisionVO.localNormal = ((pickingCollisionVO.localNormal) || (new Vector3D())))); + if (rayEntryDistance >= 0){ + this._hasCollisions = true; + pickingCollisionVO.rayEntryDistance = rayEntryDistance; + pickingCollisionVO.localRayPosition = localRayPosition; + pickingCollisionVO.localRayDirection = localRayDirection; + pickingCollisionVO.rayOriginIsInsideBounds = (rayEntryDistance == 0); + var _local18 = this._numEntities++; + this._entities[_local18] = entity; + }; + }; + node = node.next; + }; + this._entities.length = this._numEntities; + this._entities = this._entities.sort(this.sortOnNearT); + if (!(this._hasCollisions)){ + return (null); + }; + var shortestCollisionDistance:Number = Number.MAX_VALUE; + i = 0; + while (i < this._numEntities) { + entity = this._entities[i]; + pickingCollisionVO = entity._pickingCollisionVO; + if (entity.pickingCollider){ + if ((((((bestCollisionVO == null)) || ((pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance)))) && (entity.collidesBefore(shortestCollisionDistance, this._findClosestCollision)))){ + shortestCollisionDistance = pickingCollisionVO.rayEntryDistance; + bestCollisionVO = pickingCollisionVO; + if (!(this._findClosestCollision)){ + this.updateLocalPosition(pickingCollisionVO); + return (pickingCollisionVO); + }; + }; + } else { + if ((((bestCollisionVO == null)) || ((pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance)))){ + this.updateLocalPosition(pickingCollisionVO); + return (pickingCollisionVO); + }; + }; + i++; + }; + return (bestCollisionVO); + } + private function updateLocalPosition(pickingCollisionVO:PickingCollisionVO):void{ + var collisionPos:Vector3D = (pickingCollisionVO.localPosition = ((pickingCollisionVO.localPosition) || (new Vector3D()))); + var rayDir:Vector3D = pickingCollisionVO.localRayDirection; + var rayPos:Vector3D = pickingCollisionVO.localRayPosition; + var t:Number = pickingCollisionVO.rayEntryDistance; + collisionPos.x = (rayPos.x + (t * rayDir.x)); + collisionPos.y = (rayPos.y + (t * rayDir.y)); + collisionPos.z = (rayPos.z + (t * rayDir.z)); + } + public function getSceneCollision(position:Vector3D, direction:Vector3D, scene:Scene3D):PickingCollisionVO{ + return (null); + } + private function sortOnNearT(entity1:Entity, entity2:Entity):Number{ + return ((((entity1.pickingCollisionVO.rayEntryDistance > entity2.pickingCollisionVO.rayEntryDistance)) ? 1 : -1)); + } + + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/pick/ShaderPicker.as b/flash_decompiled/watchdog/away3d/core/pick/ShaderPicker.as new file mode 100644 index 0000000..6736b30 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/pick/ShaderPicker.as @@ -0,0 +1,348 @@ +package away3d.core.pick { + import flash.geom.*; + import flash.display.*; + import away3d.cameras.*; + import away3d.containers.*; + import away3d.core.base.*; + import away3d.core.data.*; + import away3d.core.managers.*; + import away3d.core.math.*; + import away3d.core.traverse.*; + import away3d.entities.*; + import flash.display3D.*; + import flash.display3D.textures.*; + import com.adobe.utils.*; + import __AS3__.vec.*; + + public class ShaderPicker implements IPicker { + + private static const MOUSE_SCISSOR_RECT:Rectangle = new Rectangle(0, 0, 1, 1); + + private var _stage3DProxy:Stage3DProxy; + private var _context:Context3D; + private var _objectProgram3D:Program3D; + private var _triangleProgram3D:Program3D; + private var _bitmapData:BitmapData; + private var _viewportData:Vector.; + private var _boundOffsetScale:Vector.; + private var _id:Vector.; + private var _interactives:Vector.; + private var _interactiveId:uint; + private var _hitColor:uint; + private var _projX:Number; + private var _projY:Number; + private var _hitRenderable:IRenderable; + private var _localHitPosition:Vector3D; + private var _hitUV:Point; + private var _localHitNormal:Vector3D; + private var _rayPos:Vector3D; + private var _rayDir:Vector3D; + private var _potentialFound:Boolean; + + public function ShaderPicker(){ + this._bitmapData = new BitmapData(1, 1, false, 0); + this._interactives = new Vector.(); + this._localHitPosition = new Vector3D(); + this._hitUV = new Point(); + this._localHitNormal = new Vector3D(); + this._rayPos = new Vector3D(); + this._rayDir = new Vector3D(); + super(); + this._id = new Vector.(4, true); + this._viewportData = new Vector.(4, true); + this._boundOffsetScale = new Vector.(8, true); + this._boundOffsetScale[3] = 0; + this._boundOffsetScale[7] = 1; + } + public function getViewCollision(x:Number, y:Number, view:View3D):PickingCollisionVO{ + var collector:EntityCollector = view.entityCollector; + this._stage3DProxy = view.stage3DProxy; + if (!(this._stage3DProxy)){ + return (null); + }; + this._context = this._stage3DProxy._context3D; + this._viewportData[0] = view.width; + this._viewportData[1] = view.height; + this._viewportData[2] = -((this._projX = (((2 * x) / view.width) - 1))); + this._viewportData[3] = (this._projY = (((2 * y) / view.height) - 1)); + this._potentialFound = false; + this.draw(collector, null); + this._stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + if (((!(this._context)) || (!(this._potentialFound)))){ + return (null); + }; + this._context.drawToBitmapData(this._bitmapData); + this._hitColor = this._bitmapData.getPixel(0, 0); + if (!(this._hitColor)){ + this._context.present(); + return (null); + }; + this._hitRenderable = this._interactives[(this._hitColor - 1)]; + var _collisionVO:PickingCollisionVO = this._hitRenderable.sourceEntity.pickingCollisionVO; + if (this._hitRenderable.shaderPickingDetails){ + this.getHitDetails(view.camera); + _collisionVO.localPosition = this._localHitPosition; + _collisionVO.localNormal = this._localHitNormal; + _collisionVO.uv = this._hitUV; + } else { + _collisionVO.localPosition = null; + _collisionVO.localNormal = null; + _collisionVO.uv = null; + }; + return (_collisionVO); + } + public function getSceneCollision(position:Vector3D, direction:Vector3D, scene:Scene3D):PickingCollisionVO{ + return (null); + } + protected function draw(entityCollector:EntityCollector, target:TextureBase):void{ + var camera:Camera3D = entityCollector.camera; + this._context.clear(0, 0, 0, 1); + this._stage3DProxy.scissorRect = MOUSE_SCISSOR_RECT; + this._interactives.length = (this._interactiveId = 0); + if (!(this._objectProgram3D)){ + this.initObjectProgram3D(); + }; + this._context.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO); + this._context.setDepthTest(true, Context3DCompareMode.LESS); + this._stage3DProxy.setProgram(this._objectProgram3D); + this._context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 4, this._viewportData, 1); + this.drawRenderables(entityCollector.opaqueRenderableHead, camera); + this.drawRenderables(entityCollector.blendedRenderableHead, camera); + } + private function drawRenderables(item:RenderableListItem, camera:Camera3D):void{ + var renderable:IRenderable; + while (item) { + renderable = item.renderable; + if (((!(renderable.sourceEntity.scene)) || (!(renderable.mouseEnabled)))){ + item = item.next; + } else { + this._potentialFound = true; + this._context.setCulling(((renderable.material.bothSides) ? Context3DTriangleFace.NONE : Context3DTriangleFace.BACK)); + var _local4 = this._interactiveId++; + this._interactives[_local4] = renderable; + this._id[1] = ((this._interactiveId >> 8) / 0xFF); + this._id[2] = ((this._interactiveId & 0xFF) / 0xFF); + this._context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, renderable.modelViewProjection, true); + this._context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._id, 1); + this._stage3DProxy.setSimpleVertexBuffer(0, renderable.getVertexBuffer(this._stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, 0); + this._context.drawTriangles(renderable.getIndexBuffer(this._stage3DProxy), 0, renderable.numTriangles); + item = item.next; + }; + }; + } + private function updateRay(camera:Camera3D):void{ + this._rayPos = camera.scenePosition; + this._rayDir = camera.getRay(this._projX, this._projY); + this._rayDir.normalize(); + } + private function initObjectProgram3D():void{ + var vertexCode:String; + var fragmentCode:String; + this._objectProgram3D = this._context.createProgram(); + vertexCode = (((("m44 vt0, va0, vc0\t\t\t\n" + "mul vt1.xy, vt0.w, vc4.zw\t\n") + "add vt0.xy, vt0.xy, vt1.xy\t\n") + "mul vt0.xy, vt0.xy, vc4.xy\t\n") + "mov op, vt0\t\n"); + fragmentCode = "mov oc, fc0"; + this._objectProgram3D.upload(new AGALMiniAssembler().assemble(Context3DProgramType.VERTEX, vertexCode), new AGALMiniAssembler().assemble(Context3DProgramType.FRAGMENT, fragmentCode)); + } + private function initTriangleProgram3D():void{ + var vertexCode:String; + var fragmentCode:String; + this._triangleProgram3D = this._context.createProgram(); + vertexCode = ((((((("add vt0, va0, vc5 \t\t\t\n" + "mul vt0, vt0, vc6 \t\t\t\n") + "mov v0, vt0\t\t\t\t\n") + "m44 vt0, va0, vc0\t\t\t\n") + "mul vt1.xy, vt0.w, vc4.zw\t\n") + "add vt0.xy, vt0.xy, vt1.xy\t\n") + "mul vt0.xy, vt0.xy, vc4.xy\t\n") + "mov op, vt0\t\n"); + fragmentCode = "mov oc, v0"; + this._triangleProgram3D.upload(new AGALMiniAssembler().assemble(Context3DProgramType.VERTEX, vertexCode), new AGALMiniAssembler().assemble(Context3DProgramType.FRAGMENT, fragmentCode)); + } + private function getHitDetails(camera:Camera3D):void{ + this.getApproximatePosition(camera); + this.getPreciseDetails(camera); + } + private function getApproximatePosition(camera:Camera3D):void{ + var col:uint; + var scX:Number; + var scY:Number; + var scZ:Number; + var offsX:Number; + var offsY:Number; + var offsZ:Number; + var entity:Entity = this._hitRenderable.sourceEntity; + var localViewProjection:Matrix3D = this._hitRenderable.modelViewProjection; + if (!(this._triangleProgram3D)){ + this.initTriangleProgram3D(); + }; + scX = (1 / (entity.maxX - entity.minX)); + this._boundOffsetScale[4] = scX; + scY = (1 / (entity.maxY - entity.minY)); + this._boundOffsetScale[5] = scY; + scZ = (1 / (entity.maxZ - entity.minZ)); + this._boundOffsetScale[6] = scZ; + offsX = -(entity.minX); + this._boundOffsetScale[0] = offsX; + offsY = -(entity.minY); + this._boundOffsetScale[1] = offsY; + offsZ = -(entity.minZ); + this._boundOffsetScale[2] = offsZ; + this._stage3DProxy.setProgram(this._triangleProgram3D); + this._context.clear(0, 0, 0, 0, 1, 0, Context3DClearMask.DEPTH); + this._context.setScissorRectangle(MOUSE_SCISSOR_RECT); + this._context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, localViewProjection, true); + this._context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, this._boundOffsetScale, 2); + this._stage3DProxy.setSimpleVertexBuffer(0, this._hitRenderable.getVertexBuffer(this._stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, 0); + this._context.drawTriangles(this._hitRenderable.getIndexBuffer(this._stage3DProxy), 0, this._hitRenderable.numTriangles); + this._context.drawToBitmapData(this._bitmapData); + col = this._bitmapData.getPixel(0, 0); + this._localHitPosition.x = ((((col >> 16) & 0xFF) / (scX * 0xFF)) - offsX); + this._localHitPosition.y = ((((col >> 8) & 0xFF) / (scY * 0xFF)) - offsY); + this._localHitPosition.z = (((col & 0xFF) / (scZ * 0xFF)) - offsZ); + } + private function getPreciseDetails(camera:Camera3D):void{ + var x1:Number; + var y1:Number; + var z1:Number; + var x2:Number; + var y2:Number; + var z2:Number; + var x3:Number; + var y3:Number; + var z3:Number; + var t1:uint; + var t2:uint; + var t3:uint; + var v0x:Number; + var v0y:Number; + var v0z:Number; + var v1x:Number; + var v1y:Number; + var v1z:Number; + var v2x:Number; + var v2y:Number; + var v2z:Number; + var dot00:Number; + var dot01:Number; + var dot02:Number; + var dot11:Number; + var dot12:Number; + var s:Number; + var t:Number; + var invDenom:Number; + var u:Number; + var v:Number; + var ui1:uint; + var ui2:uint; + var ui3:uint; + var s0x:Number; + var s0y:Number; + var s0z:Number; + var s1x:Number; + var s1y:Number; + var s1z:Number; + var nl:Number; + var subGeom:SubGeometry = SubMesh(this._hitRenderable).subGeometry; + var indices:Vector. = subGeom.indexData; + var vertices:Vector. = subGeom.vertexData; + var len:int = indices.length; + var i:uint; + var j:uint = 1; + var k:uint = 2; + var uvs:Vector. = subGeom.UVData; + var normals:Vector. = subGeom.faceNormalsData; + var x:Number = this._localHitPosition.x; + var y:Number = this._localHitPosition.y; + var z:Number = this._localHitPosition.z; + this.updateRay(camera); + while (i < len) { + t1 = (indices[i] * 3); + t2 = (indices[j] * 3); + t3 = (indices[k] * 3); + x1 = vertices[t1]; + y1 = vertices[(t1 + 1)]; + z1 = vertices[(t1 + 2)]; + x2 = vertices[t2]; + y2 = vertices[(t2 + 1)]; + z2 = vertices[(t2 + 2)]; + x3 = vertices[t3]; + y3 = vertices[(t3 + 1)]; + z3 = vertices[(t3 + 2)]; + if (!((((((((((((((((x < x1)) && ((x < x2)))) && ((x < x3)))) || ((((((y < y1)) && ((y < y2)))) && ((y < y3)))))) || ((((((z < z1)) && ((z < z2)))) && ((z < z3)))))) || ((((((x > x1)) && ((x > x2)))) && ((x > x3)))))) || ((((((y > y1)) && ((y > y2)))) && ((y > y3)))))) || ((((((z > z1)) && ((z > z2)))) && ((z > z3))))))){ + v0x = (x3 - x1); + v0y = (y3 - y1); + v0z = (z3 - z1); + v1x = (x2 - x1); + v1y = (y2 - y1); + v1z = (z2 - z1); + v2x = (x - x1); + v2y = (y - y1); + v2z = (z - z1); + dot00 = (((v0x * v0x) + (v0y * v0y)) + (v0z * v0z)); + dot01 = (((v0x * v1x) + (v0y * v1y)) + (v0z * v1z)); + dot02 = (((v0x * v2x) + (v0y * v2y)) + (v0z * v2z)); + dot11 = (((v1x * v1x) + (v1y * v1y)) + (v1z * v1z)); + dot12 = (((v1x * v2x) + (v1y * v2y)) + (v1z * v2z)); + invDenom = (1 / ((dot00 * dot11) - (dot01 * dot01))); + s = (((dot11 * dot02) - (dot01 * dot12)) * invDenom); + t = (((dot00 * dot12) - (dot01 * dot02)) * invDenom); + if ((((((s >= 0)) && ((t >= 0)))) && (((s + t) <= 1)))){ + this.getPrecisePosition(this._hitRenderable.inverseSceneTransform, normals[i], normals[(i + 1)], normals[(i + 2)], x1, y1, z1); + v2x = (this._localHitPosition.x - x1); + v2y = (this._localHitPosition.y - y1); + v2z = (this._localHitPosition.z - z1); + s0x = (x2 - x1); + s0y = (y2 - y1); + s0z = (z2 - z1); + s1x = (x3 - x1); + s1y = (y3 - y1); + s1z = (z3 - z1); + this._localHitNormal.x = ((s0y * s1z) - (s0z * s1y)); + this._localHitNormal.y = ((s0z * s1x) - (s0x * s1z)); + this._localHitNormal.z = ((s0x * s1y) - (s0y * s1x)); + nl = (1 / Math.sqrt((((this._localHitNormal.x * this._localHitNormal.x) + (this._localHitNormal.y * this._localHitNormal.y)) + (this._localHitNormal.z * this._localHitNormal.z)))); + this._localHitNormal.x = (this._localHitNormal.x * nl); + this._localHitNormal.y = (this._localHitNormal.y * nl); + this._localHitNormal.z = (this._localHitNormal.z * nl); + dot02 = (((v0x * v2x) + (v0y * v2y)) + (v0z * v2z)); + dot12 = (((v1x * v2x) + (v1y * v2y)) + (v1z * v2z)); + s = (((dot11 * dot02) - (dot01 * dot12)) * invDenom); + t = (((dot00 * dot12) - (dot01 * dot02)) * invDenom); + ui1 = (indices[i] << 1); + ui2 = (indices[j] << 1); + ui3 = (indices[k] << 1); + u = uvs[ui1]; + v = uvs[(ui1 + 1)]; + this._hitUV.x = ((u + (t * (uvs[ui2] - u))) + (s * (uvs[ui3] - u))); + this._hitUV.y = ((v + (t * (uvs[(ui2 + 1)] - v))) + (s * (uvs[(ui3 + 1)] - v))); + return; + }; + }; + i = (i + 3); + j = (j + 3); + k = (k + 3); + }; + } + private function getPrecisePosition(invSceneTransform:Matrix3D, nx:Number, ny:Number, nz:Number, px:Number, py:Number, pz:Number):void{ + var rx:Number; + var ry:Number; + var rz:Number; + var ox:Number; + var oy:Number; + var oz:Number; + var t:Number; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var cx:Number = this._rayPos.x; + var cy:Number = this._rayPos.y; + var cz:Number = this._rayPos.z; + ox = this._rayDir.x; + oy = this._rayDir.y; + oz = this._rayDir.z; + invSceneTransform.copyRawDataTo(raw); + rx = (((raw[0] * ox) + (raw[4] * oy)) + (raw[8] * oz)); + ry = (((raw[1] * ox) + (raw[5] * oy)) + (raw[9] * oz)); + rz = (((raw[2] * ox) + (raw[6] * oy)) + (raw[10] * oz)); + ox = ((((raw[0] * cx) + (raw[4] * cy)) + (raw[8] * cz)) + raw[12]); + oy = ((((raw[1] * cx) + (raw[5] * cy)) + (raw[9] * cz)) + raw[13]); + oz = ((((raw[2] * cx) + (raw[6] * cy)) + (raw[10] * cz)) + raw[14]); + t = (((((px - ox) * nx) + ((py - oy) * ny)) + ((pz - oz) * nz)) / (((rx * nx) + (ry * ny)) + (rz * nz))); + this._localHitPosition.x = (ox + (rx * t)); + this._localHitPosition.y = (oy + (ry * t)); + this._localHitPosition.z = (oz + (rz * t)); + } + + } +}//package away3d.core.pick diff --git a/flash_decompiled/watchdog/away3d/core/render/BackgroundImageRenderer.as b/flash_decompiled/watchdog/away3d/core/render/BackgroundImageRenderer.as new file mode 100644 index 0000000..4627176 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/render/BackgroundImageRenderer.as @@ -0,0 +1,85 @@ +package away3d.core.render { + import away3d.core.managers.*; + import flash.display3D.*; + import __AS3__.vec.*; + import com.adobe.utils.*; + import away3d.debug.*; + import away3d.textures.*; + + public class BackgroundImageRenderer { + + private var _program3d:Program3D; + private var _texture:Texture2DBase; + private var _indexBuffer:IndexBuffer3D; + private var _vertexBuffer:VertexBuffer3D; + private var _stage3DProxy:Stage3DProxy; + + public function BackgroundImageRenderer(stage3DProxy:Stage3DProxy){ + super(); + this.stage3DProxy = stage3DProxy; + } + public function get stage3DProxy():Stage3DProxy{ + return (this._stage3DProxy); + } + public function set stage3DProxy(value:Stage3DProxy):void{ + if (value == this._stage3DProxy){ + return; + }; + this._stage3DProxy = value; + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + this._vertexBuffer = null; + this._program3d.dispose(); + this._program3d = null; + this._indexBuffer.dispose(); + this._indexBuffer = null; + }; + } + private function getVertexCode():String{ + return (("mov op, va0\n" + "mov v0, va1")); + } + private function getFragmentCode():String{ + return (("tex ft0, v0, fs0 <2d, linear>\t\n" + "mov oc, ft0")); + } + public function dispose():void{ + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + }; + if (this._program3d){ + this._program3d.dispose(); + }; + } + public function render():void{ + var context:Context3D = this._stage3DProxy.context3D; + if (!(context)){ + return; + }; + if (!(this._vertexBuffer)){ + this.initBuffers(context); + }; + this._stage3DProxy.setProgram(this._program3d); + this._stage3DProxy.setTextureAt(0, this._texture.getTextureForStage3D(this._stage3DProxy)); + context.setVertexBufferAt(0, this._vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_2); + context.setVertexBufferAt(1, this._vertexBuffer, 2, Context3DVertexBufferFormat.FLOAT_2); + context.drawTriangles(this._indexBuffer, 0, 2); + this._stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + this._stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + this._stage3DProxy.setTextureAt(0, null); + } + private function initBuffers(context:Context3D):void{ + this._vertexBuffer = context.createVertexBuffer(4, 4); + this._program3d = context.createProgram(); + this._indexBuffer = context.createIndexBuffer(6); + this._indexBuffer.uploadFromVector(Vector.([2, 1, 0, 3, 2, 0]), 0, 6); + this._program3d.upload(new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.VERTEX, this.getVertexCode()), new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.FRAGMENT, this.getFragmentCode())); + this._vertexBuffer.uploadFromVector(Vector.([-1, -1, 0, 1, 1, -1, 1, 1, 1, 1, 1, 0, -1, 1, 0, 0]), 0, 4); + } + public function get texture():Texture2DBase{ + return (this._texture); + } + public function set texture(value:Texture2DBase):void{ + this._texture = value; + } + + } +}//package away3d.core.render diff --git a/flash_decompiled/watchdog/away3d/core/render/DefaultRenderer.as b/flash_decompiled/watchdog/away3d/core/render/DefaultRenderer.as new file mode 100644 index 0000000..3e524a3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/render/DefaultRenderer.as @@ -0,0 +1,134 @@ +package away3d.core.render { + import away3d.core.managers.*; + import away3d.core.traverse.*; + import flash.display3D.textures.*; + import flash.geom.*; + import away3d.lights.*; + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.materials.*; + import away3d.cameras.*; + import away3d.core.data.*; + + public class DefaultRenderer extends RendererBase { + + private static var RTT_PASSES:int = 1; + private static var SCREEN_PASSES:int = 2; + private static var ALL_PASSES:int = 3; + + private var _activeMaterial:MaterialBase; + private var _distanceRenderer:DepthRenderer; + private var _depthRenderer:DepthRenderer; + + public function DefaultRenderer(){ + super(); + this._depthRenderer = new DepthRenderer(); + this._distanceRenderer = new DepthRenderer(false, true); + } + override function set stage3DProxy(value:Stage3DProxy):void{ + super.stage3DProxy = value; + this._distanceRenderer.stage3DProxy = (this._depthRenderer.stage3DProxy = value); + } + override protected function executeRender(entityCollector:EntityCollector, target:TextureBase=null, scissorRect:Rectangle=null, surfaceSelector:int=0):void{ + this.updateLights(entityCollector); + if (target){ + this.drawRenderables(entityCollector.opaqueRenderableHead, entityCollector, RTT_PASSES); + this.drawRenderables(entityCollector.blendedRenderableHead, entityCollector, RTT_PASSES); + }; + super.executeRender(entityCollector, target, scissorRect, surfaceSelector); + } + private function updateLights(entityCollector:EntityCollector):void{ + var len:uint; + var i:uint; + var light:LightBase; + var dirLights:Vector. = entityCollector.directionalLights; + var pointLights:Vector. = entityCollector.pointLights; + len = dirLights.length; + i = 0; + while (i < len) { + light = dirLights[i]; + if (light.castsShadows){ + light.shadowMapper.renderDepthMap(_stage3DProxy, entityCollector, this._depthRenderer); + }; + i++; + }; + len = pointLights.length; + i = 0; + while (i < len) { + light = pointLights[i]; + if (light.castsShadows){ + light.shadowMapper.renderDepthMap(_stage3DProxy, entityCollector, this._distanceRenderer); + }; + i++; + }; + } + override protected function draw(entityCollector:EntityCollector, target:TextureBase):void{ + if (entityCollector.skyBox){ + if (this._activeMaterial){ + this._activeMaterial.deactivate(_stage3DProxy); + }; + this._activeMaterial = null; + this.drawSkyBox(entityCollector); + }; + _context.setDepthTest(true, Context3DCompareMode.LESS); + _context.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO); + var which:int = ((target) ? SCREEN_PASSES : ALL_PASSES); + this.drawRenderables(entityCollector.opaqueRenderableHead, entityCollector, which); + this.drawRenderables(entityCollector.blendedRenderableHead, entityCollector, which); + if (this._activeMaterial){ + this._activeMaterial.deactivate(_stage3DProxy); + }; + _context.setDepthTest(false, Context3DCompareMode.LESS); + this._activeMaterial = null; + } + private function drawSkyBox(entityCollector:EntityCollector):void{ + var skyBox:IRenderable = entityCollector.skyBox; + var material:MaterialBase = skyBox.material; + var camera:Camera3D = entityCollector.camera; + material.activatePass(0, _stage3DProxy, camera, _textureRatioX, _textureRatioY); + material.renderPass(0, skyBox, _stage3DProxy, entityCollector); + material.deactivatePass(0, _stage3DProxy); + } + private function drawRenderables(item:RenderableListItem, entityCollector:EntityCollector, which:int):void{ + var numPasses:uint; + var j:uint; + var item2:RenderableListItem; + var rttMask:int; + var camera:Camera3D = entityCollector.camera; + while (item) { + this._activeMaterial = item.renderable.material; + this._activeMaterial.updateMaterial(_context); + numPasses = this._activeMaterial.numPasses; + j = 0; + do { + item2 = item; + rttMask = ((this._activeMaterial.passRendersToTexture(j)) ? 1 : 2); + if ((rttMask & which) != 0){ + _context.setDepthTest(true, Context3DCompareMode.LESS); + this._activeMaterial.activatePass(j, _stage3DProxy, camera, _textureRatioX, _textureRatioY); + do { + this._activeMaterial.renderPass(j, item2.renderable, _stage3DProxy, entityCollector); + item2 = item2.next; + } while (((item2) && ((item2.renderable.material == this._activeMaterial)))); + this._activeMaterial.deactivatePass(j, _stage3DProxy); + } else { + do { + item2 = item2.next; + } while (((item2) && ((item2.renderable.material == this._activeMaterial)))); + }; + ++j; + } while (j < numPasses); + item = item2; + }; + } + override function dispose():void{ + super.dispose(); + this._depthRenderer.dispose(); + this._distanceRenderer.dispose(); + this._depthRenderer = null; + this._distanceRenderer = null; + } + + } +}//package away3d.core.render diff --git a/flash_decompiled/watchdog/away3d/core/render/DepthRenderer.as b/flash_decompiled/watchdog/away3d/core/render/DepthRenderer.as new file mode 100644 index 0000000..0c3827f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/render/DepthRenderer.as @@ -0,0 +1,58 @@ +package away3d.core.render { + import flash.display3D.*; + import away3d.core.traverse.*; + import flash.display3D.textures.*; + import away3d.core.data.*; + import away3d.cameras.*; + import away3d.materials.*; + + public class DepthRenderer extends RendererBase { + + private var _activeMaterial:MaterialBase; + private var _renderBlended:Boolean; + private var _distanceBased:Boolean; + + public function DepthRenderer(renderBlended:Boolean=false, distanceBased:Boolean=false){ + super(); + this._renderBlended = renderBlended; + this._distanceBased = distanceBased; + _backgroundR = 1; + _backgroundG = 1; + _backgroundB = 1; + } + override function set backgroundR(value:Number):void{ + } + override function set backgroundG(value:Number):void{ + } + override function set backgroundB(value:Number):void{ + } + override protected function draw(entityCollector:EntityCollector, target:TextureBase):void{ + _context.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO); + _context.setDepthTest(true, Context3DCompareMode.LESS); + this.drawRenderables(entityCollector.opaqueRenderableHead, entityCollector); + if (this._renderBlended){ + this.drawRenderables(entityCollector.blendedRenderableHead, entityCollector); + }; + if (this._activeMaterial){ + this._activeMaterial.deactivateForDepth(_stage3DProxy); + }; + this._activeMaterial = null; + } + private function drawRenderables(item:RenderableListItem, entityCollector:EntityCollector):void{ + var item2:RenderableListItem; + var camera:Camera3D = entityCollector.camera; + while (item) { + this._activeMaterial = item.renderable.material; + this._activeMaterial.activateForDepth(_stage3DProxy, camera, this._distanceBased, _textureRatioX, _textureRatioY); + item2 = item; + do { + this._activeMaterial.renderDepth(item2.renderable, _stage3DProxy, camera); + item2 = item2.next; + } while (((item2) && ((item2.renderable.material == this._activeMaterial)))); + this._activeMaterial.deactivateForDepth(_stage3DProxy); + item = item2; + }; + } + + } +}//package away3d.core.render diff --git a/flash_decompiled/watchdog/away3d/core/render/Filter3DRenderer.as b/flash_decompiled/watchdog/away3d/core/render/Filter3DRenderer.as new file mode 100644 index 0000000..8b531c6 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/render/Filter3DRenderer.as @@ -0,0 +1,143 @@ +package away3d.core.render { + import away3d.core.managers.*; + import flash.events.*; + import flash.display3D.textures.*; + import away3d.filters.*; + import __AS3__.vec.*; + import away3d.filters.tasks.*; + import flash.display3D.*; + import away3d.cameras.*; + + public class Filter3DRenderer { + + private var _filters:Array; + private var _tasks:Vector.; + private var _filterTasksInvalid:Boolean; + private var _mainInputTexture:Texture; + private var _requireDepthRender:Boolean; + private var _rttManager:RTTBufferManager; + private var _stage3DProxy:Stage3DProxy; + private var _filterSizesInvalid:Boolean = true; + + public function Filter3DRenderer(stage3DProxy:Stage3DProxy){ + super(); + this._stage3DProxy = stage3DProxy; + this._rttManager = RTTBufferManager.getInstance(stage3DProxy); + this._rttManager.addEventListener(Event.RESIZE, this.onRTTResize); + } + private function onRTTResize(event:Event):void{ + this._filterSizesInvalid = true; + } + public function get requireDepthRender():Boolean{ + return (this._requireDepthRender); + } + public function getMainInputTexture(stage3DProxy:Stage3DProxy):Texture{ + if (this._filterTasksInvalid){ + this.updateFilterTasks(stage3DProxy); + }; + return (this._mainInputTexture); + } + public function get filters():Array{ + return (this._filters); + } + public function set filters(value:Array):void{ + this._filters = value; + this._filterTasksInvalid = true; + this._requireDepthRender = false; + if (!(this._filters)){ + return; + }; + var i:int; + while (i < this._filters.length) { + this._requireDepthRender = ((this._requireDepthRender) || (this._filters[i].requireDepthRender)); + i++; + }; + this._filterSizesInvalid = true; + } + private function updateFilterTasks(stage3DProxy:Stage3DProxy):void{ + var len:uint; + var filter:Filter3DBase; + if (this._filterSizesInvalid){ + this.updateFilterSizes(); + }; + if (!(this._filters)){ + this._tasks = null; + return; + }; + this._tasks = new Vector.(); + len = (this._filters.length - 1); + var i:uint; + while (i <= len) { + filter = this._filters[i]; + filter.setRenderTargets((((i == len)) ? null : Filter3DBase(this._filters[(i + 1)]).getMainInputTexture(stage3DProxy)), stage3DProxy); + this._tasks = this._tasks.concat(filter.tasks); + i++; + }; + this._mainInputTexture = this._filters[0].getMainInputTexture(stage3DProxy); + } + public function render(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void{ + var len:int; + var i:int; + var task:Filter3DTaskBase; + var context:Context3D = stage3DProxy.context3D; + var indexBuffer:IndexBuffer3D = this._rttManager.indexBuffer; + var vertexBuffer:VertexBuffer3D = this._rttManager.renderToTextureVertexBuffer; + if (!(this._filters)){ + return; + }; + if (this._filterSizesInvalid){ + this.updateFilterSizes(); + }; + if (this._filterTasksInvalid){ + this.updateFilterTasks(stage3DProxy); + }; + len = this._filters.length; + i = 0; + while (i < len) { + this._filters[i].update(stage3DProxy, camera3D); + i++; + }; + len = this._tasks.length; + if (len > 1){ + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_2); + context.setVertexBufferAt(1, vertexBuffer, 2, Context3DVertexBufferFormat.FLOAT_2); + }; + i = 0; + while (i < len) { + task = this._tasks[i]; + stage3DProxy.setRenderTarget(task.target); + if (!(task.target)){ + stage3DProxy.scissorRect = null; + vertexBuffer = this._rttManager.renderToScreenVertexBuffer; + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_2); + context.setVertexBufferAt(1, vertexBuffer, 2, Context3DVertexBufferFormat.FLOAT_2); + }; + stage3DProxy.setTextureAt(0, task.getMainInputTexture(stage3DProxy)); + stage3DProxy.setProgram(task.getProgram3D(stage3DProxy)); + context.clear(0, 0, 0, 1); + task.activate(stage3DProxy, camera3D, depthTexture); + context.drawTriangles(indexBuffer, 0, 2); + task.deactivate(stage3DProxy); + i++; + }; + stage3DProxy.setTextureAt(0, null); + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + } + private function updateFilterSizes():void{ + var i:int; + while (i < this._filters.length) { + this._filters[i].textureWidth = this._rttManager.textureWidth; + this._filters[i].textureHeight = this._rttManager.textureHeight; + i++; + }; + this._filterSizesInvalid = true; + } + public function dispose():void{ + this._rttManager.removeEventListener(Event.RESIZE, this.onRTTResize); + this._rttManager = null; + this._stage3DProxy = null; + } + + } +}//package away3d.core.render diff --git a/flash_decompiled/watchdog/away3d/core/render/RendererBase.as b/flash_decompiled/watchdog/away3d/core/render/RendererBase.as new file mode 100644 index 0000000..7d2f419 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/render/RendererBase.as @@ -0,0 +1,229 @@ +package away3d.core.render { + import away3d.core.sort.*; + import away3d.core.traverse.*; + import away3d.core.managers.*; + import away3d.events.*; + import flash.display3D.textures.*; + import flash.geom.*; + import flash.display3D.*; + import flash.display.*; + import away3d.errors.*; + import flash.events.*; + import away3d.textures.*; + + public class RendererBase { + + protected var _context:Context3D; + protected var _stage3DProxy:Stage3DProxy; + protected var _backgroundR:Number = 0; + protected var _backgroundG:Number = 0; + protected var _backgroundB:Number = 0; + protected var _backgroundAlpha:Number = 1; + protected var _shareContext:Boolean = false; + protected var _swapBackBuffer:Boolean = true; + protected var _renderTarget:TextureBase; + protected var _renderTargetSurface:int; + protected var _viewWidth:Number; + protected var _viewHeight:Number; + private var _renderableSorter:EntitySorterBase; + private var _backgroundImageRenderer:BackgroundImageRenderer; + private var _background:Texture2DBase; + protected var _renderToTexture:Boolean; + protected var _antiAlias:uint; + protected var _textureRatioX:Number = 1; + protected var _textureRatioY:Number = 1; + private var _snapshotBitmapData:BitmapData; + private var _snapshotRequired:Boolean; + + public function RendererBase(renderToTexture:Boolean=false){ + super(); + this._renderableSorter = new RenderableMergeSort(); + this._renderToTexture = renderToTexture; + } + function createEntityCollector():EntityCollector{ + return (new EntityCollector()); + } + function get viewWidth():Number{ + return (this._viewWidth); + } + function set viewWidth(value:Number):void{ + this._viewWidth = value; + } + function get viewHeight():Number{ + return (this._viewHeight); + } + function set viewHeight(value:Number):void{ + this._viewHeight = value; + } + function get renderToTexture():Boolean{ + return (this._renderToTexture); + } + public function get renderableSorter():EntitySorterBase{ + return (this._renderableSorter); + } + public function set renderableSorter(value:EntitySorterBase):void{ + this._renderableSorter = value; + } + public function get swapBackBuffer():Boolean{ + return (this._swapBackBuffer); + } + public function set swapBackBuffer(value:Boolean):void{ + this._swapBackBuffer = value; + } + function get backgroundR():Number{ + return (this._backgroundR); + } + function set backgroundR(value:Number):void{ + this._backgroundR = value; + } + function get backgroundG():Number{ + return (this._backgroundG); + } + function set backgroundG(value:Number):void{ + this._backgroundG = value; + } + function get backgroundB():Number{ + return (this._backgroundB); + } + function set backgroundB(value:Number):void{ + this._backgroundB = value; + } + function get stage3DProxy():Stage3DProxy{ + return (this._stage3DProxy); + } + function set stage3DProxy(value:Stage3DProxy):void{ + if (value == this._stage3DProxy){ + return; + }; + if (!(value)){ + if (this._stage3DProxy){ + this._stage3DProxy.removeEventListener(Stage3DEvent.CONTEXT3D_CREATED, this.onContextUpdate); + }; + this._stage3DProxy = null; + this._context = null; + return; + }; + this._stage3DProxy = value; + if (this._backgroundImageRenderer){ + this._backgroundImageRenderer.stage3DProxy = value; + }; + if (value.context3D){ + this._context = value.context3D; + } else { + value.addEventListener(Stage3DEvent.CONTEXT3D_CREATED, this.onContextUpdate); + }; + } + function get shareContext():Boolean{ + return (this._shareContext); + } + function set shareContext(value:Boolean):void{ + this._shareContext = value; + } + function dispose():void{ + this.stage3DProxy = null; + if (this._backgroundImageRenderer){ + this._backgroundImageRenderer.dispose(); + this._backgroundImageRenderer = null; + }; + } + function render(entityCollector:EntityCollector, target:TextureBase=null, scissorRect:Rectangle=null, surfaceSelector:int=0):void{ + if (((!(this._stage3DProxy)) || (!(this._context)))){ + return; + }; + this.executeRender(entityCollector, target, scissorRect, surfaceSelector); + var i:uint; + while (i < 8) { + this._stage3DProxy.setSimpleVertexBuffer(i, null, null, 0); + this._stage3DProxy.setTextureAt(i, null); + i++; + }; + } + protected function executeRender(entityCollector:EntityCollector, target:TextureBase=null, scissorRect:Rectangle=null, surfaceSelector:int=0):void{ + this._renderTarget = target; + this._renderTargetSurface = surfaceSelector; + if (this._renderableSorter){ + this._renderableSorter.sort(entityCollector); + }; + if (this._renderToTexture){ + this.executeRenderToTexturePass(entityCollector); + }; + this._stage3DProxy.setRenderTarget(target, true, surfaceSelector); + if (!(this._shareContext)){ + this._context.clear(this._backgroundR, this._backgroundG, this._backgroundB, this._backgroundAlpha, 1, 0); + }; + this._context.setDepthTest(false, Context3DCompareMode.ALWAYS); + this._stage3DProxy.scissorRect = scissorRect; + if (this._backgroundImageRenderer){ + this._backgroundImageRenderer.render(); + }; + this.draw(entityCollector, target); + if (!(this._shareContext)){ + if (((this._snapshotRequired) && (this._snapshotBitmapData))){ + this._context.drawToBitmapData(this._snapshotBitmapData); + this._snapshotRequired = false; + }; + if (((this._swapBackBuffer) && (!(target)))){ + this._context.present(); + }; + }; + this._stage3DProxy.scissorRect = null; + } + public function queueSnapshot(bmd:BitmapData):void{ + this._snapshotRequired = true; + this._snapshotBitmapData = bmd; + } + protected function executeRenderToTexturePass(entityCollector:EntityCollector):void{ + throw (new AbstractMethodError()); + } + protected function draw(entityCollector:EntityCollector, target:TextureBase):void{ + throw (new AbstractMethodError()); + } + private function onContextUpdate(event:Event):void{ + this._context = this._stage3DProxy.context3D; + } + function get backgroundAlpha():Number{ + return (this._backgroundAlpha); + } + function set backgroundAlpha(value:Number):void{ + this._backgroundAlpha = value; + } + function get background():Texture2DBase{ + return (this._background); + } + function set background(value:Texture2DBase):void{ + if (((this._backgroundImageRenderer) && (!(value)))){ + this._backgroundImageRenderer.dispose(); + this._backgroundImageRenderer = null; + }; + if (((!(this._backgroundImageRenderer)) && (value))){ + this._backgroundImageRenderer = new BackgroundImageRenderer(this._stage3DProxy); + }; + this._background = value; + if (this._backgroundImageRenderer){ + this._backgroundImageRenderer.texture = value; + }; + } + public function get backgroundImageRenderer():BackgroundImageRenderer{ + return (this._backgroundImageRenderer); + } + public function get antiAlias():uint{ + return (this._antiAlias); + } + public function set antiAlias(antiAlias:uint):void{ + this._antiAlias = antiAlias; + } + function get textureRatioX():Number{ + return (this._textureRatioX); + } + function set textureRatioX(value:Number):void{ + this._textureRatioX = value; + } + function get textureRatioY():Number{ + return (this._textureRatioY); + } + function set textureRatioY(value:Number):void{ + this._textureRatioY = value; + } + + } +}//package away3d.core.render diff --git a/flash_decompiled/watchdog/away3d/core/sort/EntitySorterBase.as b/flash_decompiled/watchdog/away3d/core/sort/EntitySorterBase.as new file mode 100644 index 0000000..49e0f47 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/sort/EntitySorterBase.as @@ -0,0 +1,12 @@ +package away3d.core.sort { + import away3d.errors.*; + import away3d.core.traverse.*; + + public class EntitySorterBase { + + public function sort(collector:EntityCollector):void{ + throw (new AbstractMethodError()); + } + + } +}//package away3d.core.sort diff --git a/flash_decompiled/watchdog/away3d/core/sort/RenderableMergeSort.as b/flash_decompiled/watchdog/away3d/core/sort/RenderableMergeSort.as new file mode 100644 index 0000000..413748a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/sort/RenderableMergeSort.as @@ -0,0 +1,153 @@ +package away3d.core.sort { + import away3d.core.traverse.*; + import away3d.core.data.*; + + public class RenderableMergeSort extends EntitySorterBase { + + public function RenderableMergeSort(){ + super(); + } + override public function sort(collector:EntityCollector):void{ + collector.opaqueRenderableHead = this.mergeSortByMaterial(collector.opaqueRenderableHead); + collector.blendedRenderableHead = this.mergeSortByDepth(collector.blendedRenderableHead); + } + private function mergeSortByDepth(head:RenderableListItem):RenderableListItem{ + var headB:RenderableListItem; + var fast:RenderableListItem; + var slow:RenderableListItem; + var result:RenderableListItem; + var curr:RenderableListItem; + var l:RenderableListItem; + if (((!(head)) || (!(head.next)))){ + return (head); + }; + slow = head; + fast = head.next; + while (fast) { + fast = fast.next; + if (fast){ + slow = slow.next; + fast = fast.next; + }; + }; + headB = slow.next; + slow.next = null; + head = this.mergeSortByDepth(head); + headB = this.mergeSortByDepth(headB); + if (!(head)){ + return (headB); + }; + if (!(headB)){ + return (head); + }; + while (((head) && (headB))) { + if (head.zIndex < headB.zIndex){ + l = head; + head = head.next; + } else { + l = headB; + headB = headB.next; + }; + if (!(result)){ + result = l; + } else { + curr.next = l; + }; + curr = l; + }; + if (head){ + curr.next = head; + } else { + if (headB){ + curr.next = headB; + }; + }; + return (result); + } + private function mergeSortByMaterial(head:RenderableListItem):RenderableListItem{ + var headB:RenderableListItem; + var fast:RenderableListItem; + var slow:RenderableListItem; + var result:RenderableListItem; + var curr:RenderableListItem; + var l:RenderableListItem; + var cmp:int; + var aid:uint; + var bid:uint; + var ma:uint; + var mb:uint; + if (((!(head)) || (!(head.next)))){ + return (head); + }; + slow = head; + fast = head.next; + while (fast) { + fast = fast.next; + if (fast){ + slow = slow.next; + fast = fast.next; + }; + }; + headB = slow.next; + slow.next = null; + head = this.mergeSortByMaterial(head); + headB = this.mergeSortByMaterial(headB); + if (!(head)){ + return (headB); + }; + if (!(headB)){ + return (head); + }; + while (((head) && (headB))) { + aid = head.renderOrderId; + bid = headB.renderOrderId; + if (aid == bid){ + ma = head.materialId; + mb = headB.materialId; + if (ma == mb){ + if (head.zIndex < headB.zIndex){ + cmp = 1; + } else { + cmp = -1; + }; + } else { + if (ma > mb){ + cmp = 1; + } else { + cmp = -1; + }; + }; + } else { + if (aid > bid){ + cmp = 1; + } else { + cmp = -1; + }; + }; + if (cmp < 0){ + l = head; + head = head.next; + } else { + l = headB; + headB = headB.next; + }; + if (!(result)){ + result = l; + curr = l; + } else { + curr.next = l; + curr = l; + }; + }; + if (head){ + curr.next = head; + } else { + if (headB){ + curr.next = headB; + }; + }; + return (result); + } + + } +}//package away3d.core.sort diff --git a/flash_decompiled/watchdog/away3d/core/traverse/EntityCollector.as b/flash_decompiled/watchdog/away3d/core/traverse/EntityCollector.as new file mode 100644 index 0000000..84c6d8d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/traverse/EntityCollector.as @@ -0,0 +1,185 @@ +package away3d.core.traverse { + import __AS3__.vec.*; + import away3d.lights.*; + import away3d.core.data.*; + import away3d.cameras.*; + import away3d.core.base.*; + import away3d.core.partition.*; + import away3d.materials.*; + import away3d.entities.*; + + public class EntityCollector extends PartitionTraverser { + + protected var _skyBox:IRenderable; + protected var _opaqueRenderableHead:RenderableListItem; + protected var _blendedRenderableHead:RenderableListItem; + private var _entityHead:EntityListItem; + protected var _renderableListItemPool:RenderableListItemPool; + protected var _entityListItemPool:EntityListItemPool; + protected var _lights:Vector.; + private var _directionalLights:Vector.; + private var _pointLights:Vector.; + private var _lightProbes:Vector.; + protected var _numEntities:uint; + protected var _numOpaques:uint; + protected var _numBlended:uint; + protected var _numLights:uint; + protected var _numTriangles:uint; + protected var _numMouseEnableds:uint; + protected var _camera:Camera3D; + private var _numDirectionalLights:uint; + private var _numPointLights:uint; + private var _numLightProbes:uint; + + public function EntityCollector(){ + super(); + this.init(); + } + private function init():void{ + this._lights = new Vector.(); + this._directionalLights = new Vector.(); + this._pointLights = new Vector.(); + this._lightProbes = new Vector.(); + this._renderableListItemPool = new RenderableListItemPool(); + this._entityListItemPool = new EntityListItemPool(); + } + public function get numOpaques():uint{ + return (this._numOpaques); + } + public function get numBlended():uint{ + return (this._numBlended); + } + public function get camera():Camera3D{ + return (this._camera); + } + public function set camera(value:Camera3D):void{ + this._camera = value; + _entryPoint = this._camera.scenePosition; + } + public function get numMouseEnableds():uint{ + return (this._numMouseEnableds); + } + public function get skyBox():IRenderable{ + return (this._skyBox); + } + public function get opaqueRenderableHead():RenderableListItem{ + return (this._opaqueRenderableHead); + } + public function set opaqueRenderableHead(value:RenderableListItem):void{ + this._opaqueRenderableHead = value; + } + public function get blendedRenderableHead():RenderableListItem{ + return (this._blendedRenderableHead); + } + public function set blendedRenderableHead(value:RenderableListItem):void{ + this._blendedRenderableHead = value; + } + public function get entityHead():EntityListItem{ + return (this._entityHead); + } + public function get lights():Vector.{ + return (this._lights); + } + public function get directionalLights():Vector.{ + return (this._directionalLights); + } + public function get pointLights():Vector.{ + return (this._pointLights); + } + public function get lightProbes():Vector.{ + return (this._lightProbes); + } + public function clear():void{ + this._numTriangles = (this._numMouseEnableds = 0); + this._blendedRenderableHead = null; + this._opaqueRenderableHead = null; + this._entityHead = null; + this._renderableListItemPool.freeAll(); + this._entityListItemPool.freeAll(); + this._skyBox = null; + if (this._numLights > 0){ + this._lights.length = (this._numLights = 0); + }; + if (this._numDirectionalLights > 0){ + this._directionalLights.length = (this._numDirectionalLights = 0); + }; + if (this._numPointLights > 0){ + this._pointLights.length = (this._numPointLights = 0); + }; + if (this._numLightProbes > 0){ + this._lightProbes.length = (this._numLightProbes = 0); + }; + } + override public function enterNode(node:NodeBase):Boolean{ + return (node.isInFrustum(this._camera)); + } + override public function applySkyBox(renderable:IRenderable):void{ + this._skyBox = renderable; + } + override public function applyRenderable(renderable:IRenderable):void{ + var material:MaterialBase; + var item:RenderableListItem; + if (renderable.mouseEnabled){ + this._numMouseEnableds++; + }; + this._numTriangles = (this._numTriangles + renderable.numTriangles); + material = renderable.material; + if (material){ + item = this._renderableListItemPool.getItem(); + item.renderable = renderable; + item.materialId = material._uniqueId; + item.renderOrderId = material._renderOrderId; + item.zIndex = renderable.zIndex; + if (material.requiresBlending){ + item.next = this._blendedRenderableHead; + this._blendedRenderableHead = item; + this._numBlended++; + } else { + item.next = this._opaqueRenderableHead; + this._opaqueRenderableHead = item; + this._numOpaques++; + }; + }; + } + override public function applyEntity(entity:Entity):void{ + this._numEntities++; + var item:EntityListItem = this._entityListItemPool.getItem(); + item.entity = entity; + item.next = this._entityHead; + this._entityHead = item; + } + override public function applyUnknownLight(light:LightBase):void{ + var _local2 = this._numLights++; + this._lights[_local2] = light; + } + override public function applyDirectionalLight(light:DirectionalLight):void{ + var _local2 = this._numLights++; + this._lights[_local2] = light; + var _local3 = this._numDirectionalLights++; + this._directionalLights[_local3] = light; + } + override public function applyPointLight(light:PointLight):void{ + var _local2 = this._numLights++; + this._lights[_local2] = light; + var _local3 = this._numPointLights++; + this._pointLights[_local3] = light; + } + override public function applyLightProbe(light:LightProbe):void{ + var _local2 = this._numLights++; + this._lights[_local2] = light; + var _local3 = this._numLightProbes++; + this._lightProbes[_local3] = light; + } + public function get numTriangles():uint{ + return (this._numTriangles); + } + public function cleanUp():void{ + var node:EntityListItem = this._entityHead; + while (node) { + node.entity.popModelViewProjection(); + node = node.next; + }; + } + + } +}//package away3d.core.traverse diff --git a/flash_decompiled/watchdog/away3d/core/traverse/PartitionTraverser.as b/flash_decompiled/watchdog/away3d/core/traverse/PartitionTraverser.as new file mode 100644 index 0000000..9889500 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/traverse/PartitionTraverser.as @@ -0,0 +1,46 @@ +package away3d.core.traverse { + import away3d.core.partition.*; + import away3d.errors.*; + import away3d.core.base.*; + import away3d.lights.*; + import away3d.entities.*; + import flash.geom.*; + import away3d.containers.*; + + public class PartitionTraverser { + + public var scene:Scene3D; + var _entryPoint:Vector3D; + + public function enterNode(node:NodeBase):Boolean{ + return (true); + } + public function leaveNode(node:NodeBase):void{ + } + public function applySkyBox(renderable:IRenderable):void{ + throw (new AbstractMethodError()); + } + public function applyRenderable(renderable:IRenderable):void{ + throw (new AbstractMethodError()); + } + public function applyUnknownLight(light:LightBase):void{ + throw (new AbstractMethodError()); + } + public function applyDirectionalLight(light:DirectionalLight):void{ + throw (new AbstractMethodError()); + } + public function applyPointLight(light:PointLight):void{ + throw (new AbstractMethodError()); + } + public function applyLightProbe(light:LightProbe):void{ + throw (new AbstractMethodError()); + } + public function applyEntity(entity:Entity):void{ + throw (new AbstractMethodError()); + } + public function get entryPoint():Vector3D{ + return (this._entryPoint); + } + + } +}//package away3d.core.traverse diff --git a/flash_decompiled/watchdog/away3d/core/traverse/ShadowCasterCollector.as b/flash_decompiled/watchdog/away3d/core/traverse/ShadowCasterCollector.as new file mode 100644 index 0000000..915db2b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/core/traverse/ShadowCasterCollector.as @@ -0,0 +1,29 @@ +package away3d.core.traverse { + import away3d.core.base.*; + import away3d.core.data.*; + import away3d.lights.*; + + public class ShadowCasterCollector extends EntityCollector { + + public function ShadowCasterCollector(){ + super(); + } + override public function applySkyBox(renderable:IRenderable):void{ + } + override public function applyRenderable(renderable:IRenderable):void{ + var item:RenderableListItem; + if (((renderable.castsShadows) && (renderable.material))){ + _numOpaques++; + item = _renderableListItemPool.getItem(); + item.renderable = renderable; + item.next = _opaqueRenderableHead; + item.zIndex = renderable.zIndex; + item.renderOrderId = renderable.material._uniqueId; + _opaqueRenderableHead = item; + }; + } + override public function applyUnknownLight(light:LightBase):void{ + } + + } +}//package away3d.core.traverse diff --git a/flash_decompiled/watchdog/away3d/debug/Debug.as b/flash_decompiled/watchdog/away3d/debug/Debug.as new file mode 100644 index 0000000..f746c9d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/debug/Debug.as @@ -0,0 +1,34 @@ +package away3d.debug { + + public class Debug { + + public static var active:Boolean = false; + public static var warningsAsErrors:Boolean = false; + + public static function clear():void{ + } + public static function delimiter():void{ + } + public static function trace(message:Object):void{ + if (active){ + dotrace(message); + }; + } + public static function warning(message:Object):void{ + if (warningsAsErrors){ + error(message); + return; + }; + trace(("WARNING: " + message)); + } + public static function error(message:Object):void{ + trace(("ERROR: " + message)); + throw (new Error(message)); + } + + } +}//package away3d.debug + +const dotrace:Function = function (message:Object):void{ + trace(message); + }; diff --git a/flash_decompiled/watchdog/away3d/debug/Trident.as b/flash_decompiled/watchdog/away3d/debug/Trident.as new file mode 100644 index 0000000..9c9c64e --- /dev/null +++ b/flash_decompiled/watchdog/away3d/debug/Trident.as @@ -0,0 +1,78 @@ +package away3d.debug { + import away3d.core.base.*; + import __AS3__.vec.*; + import flash.geom.*; + import away3d.materials.*; + import away3d.tools.commands.*; + import away3d.extrusions.*; + import away3d.entities.*; + import away3d.debug.data.*; + + public class Trident extends Mesh { + + public function Trident(length:Number=1000, showLetters:Boolean=true):void{ + super(new Geometry(), null); + this.buildTrident(Math.abs(((length)==0) ? 10 : length), showLetters); + } + private function buildTrident(length:Number, showLetters:Boolean):void{ + var scaleH:Number; + var scaleW:Number; + var scl1:Number; + var scl2:Number; + var scl3:Number; + var scl4:Number; + var cross:Number; + var base:Number = (length * 0.9); + var rad:Number = 2.4; + var offset:Number = (length * 0.025); + var vectors:Vector.> = new Vector.>(); + var colors:Vector. = Vector.([0xFF0000, 0xFF00, 0xFF]); + var matX:ColorMaterial = new ColorMaterial(0xFF0000); + var matY:ColorMaterial = new ColorMaterial(0xFF00); + var matZ:ColorMaterial = new ColorMaterial(0xFF); + var matOrigin:ColorMaterial = new ColorMaterial(0xCCCCCC); + var merge:Merge = new Merge(true, true); + var profileX:Vector. = new Vector.(); + profileX[0] = new Vector3D(length, 0, 0); + profileX[1] = new Vector3D(base, 0, offset); + profileX[2] = new Vector3D(base, 0, -(rad)); + vectors[0] = Vector.([new Vector3D(0, 0, 0), new Vector3D(base, 0, 0)]); + var arrowX:LatheExtrude = new LatheExtrude(matX, profileX, LatheExtrude.X_AXIS, 1, 10); + var profileY:Vector. = new Vector.(); + profileY[0] = new Vector3D(0, length, 0); + profileY[1] = new Vector3D(offset, base, 0); + profileY[2] = new Vector3D(-(rad), base, 0); + vectors[1] = Vector.([new Vector3D(0, 0, 0), new Vector3D(0, base, 0)]); + var arrowY:LatheExtrude = new LatheExtrude(matY, profileY, LatheExtrude.Y_AXIS, 1, 10); + var profileZ:Vector. = new Vector.(); + vectors[2] = Vector.([new Vector3D(0, 0, 0), new Vector3D(0, 0, base)]); + profileZ[0] = new Vector3D(0, rad, base); + profileZ[1] = new Vector3D(0, offset, base); + profileZ[2] = new Vector3D(0, 0, length); + var arrowZ:LatheExtrude = new LatheExtrude(matZ, profileZ, LatheExtrude.Z_AXIS, 1, 10); + var profileO:Vector. = new Vector.(); + profileO[0] = new Vector3D(0, rad, 0); + profileO[1] = new Vector3D(-((rad * 0.7)), (rad * 0.7), 0); + profileO[2] = new Vector3D(-(rad), 0, 0); + profileO[3] = new Vector3D(-((rad * 0.7)), -((rad * 0.7)), 0); + profileO[4] = new Vector3D(0, -(rad), 0); + var origin:LatheExtrude = new LatheExtrude(matOrigin, profileO, LatheExtrude.Y_AXIS, 1, 10); + merge.applyToMeshes(this, Vector.([arrowX, arrowY, arrowZ, origin])); + if (showLetters){ + scaleH = (length / 10); + scaleW = (length / 20); + scl1 = (scaleW * 1.5); + scl2 = (scaleH * 3); + scl3 = (scaleH * 2); + scl4 = (scaleH * 3.4); + cross = ((length + scl3) + ((((length + scl4) - (length + scl3)) / 3) * 2)); + vectors[3] = Vector.([new Vector3D((length + scl2), scl1, 0), new Vector3D((length + scl3), -(scl1), 0), new Vector3D((length + scl3), scl1, 0), new Vector3D((length + scl2), -(scl1), 0)]); + vectors[4] = Vector.([new Vector3D((-(scaleW) * 1.2), (length + scl4), 0), new Vector3D(0, cross, 0), new Vector3D((scaleW * 1.2), (length + scl4), 0), new Vector3D(0, cross, 0), new Vector3D(0, cross, 0), new Vector3D(0, (length + scl3), 0)]); + vectors[5] = Vector.([new Vector3D(0, scl1, (length + scl2)), new Vector3D(0, scl1, (length + scl3)), new Vector3D(0, -(scl1), (length + scl2)), new Vector3D(0, -(scl1), (length + scl3)), new Vector3D(0, -(scl1), (length + scl3)), new Vector3D(0, scl1, (length + scl2))]); + colors.push(0xFF0000, 0xFF00, 0xFF); + }; + this.addChild(new TridentLines(vectors, colors)); + } + + } +}//package away3d.debug diff --git a/flash_decompiled/watchdog/away3d/debug/data/TridentLines.as b/flash_decompiled/watchdog/away3d/debug/data/TridentLines.as new file mode 100644 index 0000000..ad4fc35 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/debug/data/TridentLines.as @@ -0,0 +1,35 @@ +package away3d.debug.data { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.primitives.*; + import away3d.entities.*; + + public class TridentLines extends SegmentSet { + + public function TridentLines(vectors:Vector.>, colors:Vector.):void{ + super(); + this.build(vectors, colors); + } + private function build(vectors:Vector.>, colors:Vector.):void{ + var letter:Vector.; + var v0:Vector3D; + var v1:Vector3D; + var color:uint; + var j:uint; + var i:uint; + while (i < vectors.length) { + color = colors[i]; + letter = vectors[i]; + j = 0; + while (j < letter.length) { + v0 = letter[j]; + v1 = letter[(j + 1)]; + addSegment(new LineSegment(v0, v1, color, color, 1)); + j = (j + 2); + }; + i++; + }; + } + + } +}//package away3d.debug.data diff --git a/flash_decompiled/watchdog/away3d/entities/Entity.as b/flash_decompiled/watchdog/away3d/entities/Entity.as new file mode 100644 index 0000000..0f0340d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/entities/Entity.as @@ -0,0 +1,233 @@ +package away3d.entities { + import away3d.core.pick.*; + import away3d.bounds.*; + import away3d.core.partition.*; + import away3d.containers.*; + import away3d.library.assets.*; + import away3d.cameras.*; + import away3d.errors.*; + import flash.geom.*; + import __AS3__.vec.*; + + public class Entity extends ObjectContainer3D { + + private var _showBounds:Boolean; + private var _partitionNode:EntityNode; + private var _boundsIsShown:Boolean = false; + private var _shaderPickingDetails:Boolean; + var _pickingCollisionVO:PickingCollisionVO; + var _pickingCollider:IPickingCollider; + protected var _mvpTransformStack:Vector.; + protected var _zIndices:Vector.; + protected var _mvpIndex:int = -1; + protected var _stackLen:uint; + protected var _bounds:BoundingVolumeBase; + protected var _boundsInvalid:Boolean = true; + + public function Entity(){ + this._mvpTransformStack = new Vector.(); + this._zIndices = new Vector.(); + super(); + this._bounds = this.getDefaultBoundingVolume(); + } + public function get shaderPickingDetails():Boolean{ + return (this._shaderPickingDetails); + } + public function set shaderPickingDetails(value:Boolean):void{ + this._shaderPickingDetails = value; + } + public function get pickingCollisionVO():PickingCollisionVO{ + if (!(this._pickingCollisionVO)){ + this._pickingCollisionVO = new PickingCollisionVO(this); + }; + return (this._pickingCollisionVO); + } + function collidesBefore(shortestCollisionDistance:Number, findClosest:Boolean):Boolean{ + return (true); + } + public function get showBounds():Boolean{ + return (this._showBounds); + } + public function set showBounds(value:Boolean):void{ + if (value == this._showBounds){ + return; + }; + this._showBounds = value; + if (this._showBounds){ + this.addBounds(); + } else { + this.removeBounds(); + }; + } + override public function get minX():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.min.x); + } + override public function get minY():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.min.y); + } + override public function get minZ():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.min.z); + } + override public function get maxX():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.max.x); + } + override public function get maxY():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.max.y); + } + override public function get maxZ():Number{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds.max.z); + } + public function get bounds():BoundingVolumeBase{ + if (this._boundsInvalid){ + this.updateBounds(); + }; + return (this._bounds); + } + public function set bounds(value:BoundingVolumeBase):void{ + this.removeBounds(); + this._bounds = value; + this._boundsInvalid = true; + if (this._showBounds){ + this.addBounds(); + }; + } + override function set implicitPartition(value:Partition3D):void{ + if (value == _implicitPartition){ + return; + }; + if (_implicitPartition){ + this.notifyPartitionUnassigned(); + }; + super.implicitPartition = value; + this.notifyPartitionAssigned(); + } + override public function set scene(value:Scene3D):void{ + if (value == _scene){ + return; + }; + if (_scene){ + _scene.unregisterEntity(this); + }; + if (value){ + value.registerEntity(this); + }; + super.scene = value; + } + override public function get assetType():String{ + return (AssetType.ENTITY); + } + public function get modelViewProjection():Matrix3D{ + return (this._mvpTransformStack[uint((uint((this._mvpIndex > 0)) * this._mvpIndex))]); + } + public function get zIndex():Number{ + return (this._zIndices[this._mvpIndex]); + } + public function get pickingCollider():IPickingCollider{ + return (this._pickingCollider); + } + public function set pickingCollider(value:IPickingCollider):void{ + this._pickingCollider = value; + } + public function pushModelViewProjection(camera:Camera3D):void{ + if (++this._mvpIndex == this._stackLen){ + this._mvpTransformStack[this._mvpIndex] = new Matrix3D(); + this._stackLen++; + }; + var mvp:Matrix3D = this._mvpTransformStack[this._mvpIndex]; + mvp.copyFrom(sceneTransform); + mvp.append(camera.viewProjection); + mvp.copyColumnTo(3, _pos); + this._zIndices[this._mvpIndex] = -(_pos.z); + } + public function getModelViewProjectionUnsafe():Matrix3D{ + return (this._mvpTransformStack[this._mvpIndex]); + } + public function popModelViewProjection():void{ + this._mvpIndex--; + } + public function getEntityPartitionNode():EntityNode{ + return ((this._partitionNode = ((this._partitionNode) || (this.createEntityPartitionNode())))); + } + protected function createEntityPartitionNode():EntityNode{ + throw (new AbstractMethodError()); + } + protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new AxisAlignedBoundingBox()); + } + protected function updateBounds():void{ + throw (new AbstractMethodError()); + } + override protected function invalidateSceneTransform():void{ + super.invalidateSceneTransform(); + this.notifySceneBoundsInvalid(); + } + protected function invalidateBounds():void{ + this._boundsInvalid = true; + this.notifySceneBoundsInvalid(); + } + override protected function updateMouseChildren():void{ + var collider:IPickingCollider; + if (((_parent) && (!(this.pickingCollider)))){ + if ((_parent is Entity)){ + collider = Entity(_parent).pickingCollider; + if (collider){ + this.pickingCollider = collider; + }; + }; + }; + super.updateMouseChildren(); + } + private function notifySceneBoundsInvalid():void{ + if (_scene){ + _scene.invalidateEntityBounds(this); + }; + } + private function notifyPartitionAssigned():void{ + if (_scene){ + _scene.registerPartition(this); + }; + } + private function notifyPartitionUnassigned():void{ + if (_scene){ + _scene.unregisterPartition(this); + }; + } + private function addBounds():void{ + if (!(this._boundsIsShown)){ + this._boundsIsShown = true; + addChild(this._bounds.boundingRenderable); + }; + } + private function removeBounds():void{ + if (this._boundsIsShown){ + this._boundsIsShown = false; + removeChild(this._bounds.boundingRenderable); + this._bounds.disposeRenderable(); + }; + } + function internalUpdate():void{ + if (_controller){ + _controller.update(); + }; + } + + } +}//package away3d.entities diff --git a/flash_decompiled/watchdog/away3d/entities/Mesh.as b/flash_decompiled/watchdog/away3d/entities/Mesh.as new file mode 100644 index 0000000..9caaab6 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/entities/Mesh.as @@ -0,0 +1,211 @@ +package away3d.entities { + import away3d.containers.*; + import away3d.core.base.*; + import away3d.core.partition.*; + import away3d.events.*; + import away3d.library.assets.*; + import away3d.materials.*; + import __AS3__.vec.*; + import away3d.materials.utils.*; + import away3d.animators.*; + + public class Mesh extends Entity implements IMaterialOwner, IAsset { + + private var _subMeshes:Vector.; + protected var _geometry:Geometry; + private var _material:MaterialBase; + private var _animator:IAnimator; + private var _castsShadows:Boolean = true; + + public function Mesh(geometry:Geometry, material:MaterialBase=null){ + super(); + this._subMeshes = new Vector.(); + this.geometry = geometry; + this.material = ((material) || (DefaultMaterialManager.getDefaultMaterial(this))); + } + public function bakeTransformations():void{ + this.geometry.applyTransformation(transform); + transform.identity(); + } + override public function get assetType():String{ + return (AssetType.MESH); + } + private function onGeometryBoundsInvalid(event:GeometryEvent):void{ + invalidateBounds(); + } + public function get castsShadows():Boolean{ + return (this._castsShadows); + } + public function set castsShadows(value:Boolean):void{ + this._castsShadows = value; + } + public function get animator():IAnimator{ + return (this._animator); + } + public function set animator(value:IAnimator):void{ + var subMesh:SubMesh; + if (this._animator){ + this._animator.removeOwner(this); + }; + this._animator = value; + var oldMaterial:MaterialBase = this.material; + this.material = null; + this.material = oldMaterial; + var len:uint = this._subMeshes.length; + var i:int; + while (i < len) { + subMesh = this._subMeshes[i]; + oldMaterial = subMesh._material; + if (oldMaterial){ + subMesh.material = null; + subMesh.material = oldMaterial; + }; + i++; + }; + if (this._animator){ + this._animator.addOwner(this); + }; + } + public function get geometry():Geometry{ + return (this._geometry); + } + public function set geometry(value:Geometry):void{ + var i:uint; + var subGeoms:Vector.; + if (this._geometry){ + this._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this.onGeometryBoundsInvalid); + this._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this.onSubGeometryAdded); + this._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this.onSubGeometryRemoved); + i = 0; + while (i < this._subMeshes.length) { + this._subMeshes[i].dispose(); + i++; + }; + this._subMeshes.length = 0; + }; + this._geometry = value; + if (this._geometry){ + this._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this.onGeometryBoundsInvalid); + this._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this.onSubGeometryAdded); + this._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this.onSubGeometryRemoved); + subGeoms = this._geometry.subGeometries; + i = 0; + while (i < subGeoms.length) { + this.addSubMesh(subGeoms[i]); + i++; + }; + }; + if (this._material){ + this._material.removeOwner(this); + this._material.addOwner(this); + }; + } + public function get material():MaterialBase{ + return (this._material); + } + public function set material(value:MaterialBase):void{ + if (value == this._material){ + return; + }; + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + public function get subMeshes():Vector.{ + this._geometry.validate(); + return (this._subMeshes); + } + override public function dispose():void{ + super.dispose(); + this.material = null; + this.geometry = null; + } + override public function clone():Object3D{ + var clone:Mesh = new Mesh(this.geometry, this._material); + clone.transform = transform; + clone.pivotPoint = pivotPoint; + clone.partition = partition; + clone.bounds = _bounds.clone(); + clone.name = name; + clone.castsShadows = this.castsShadows; + var len:int = this._subMeshes.length; + var i:int; + while (i < len) { + clone._subMeshes[i]._material = this._subMeshes[i]._material; + i++; + }; + len = numChildren; + i = 0; + while (i < len) { + clone.addChild(ObjectContainer3D(getChildAt(i).clone())); + i++; + }; + return (clone); + } + override protected function updateBounds():void{ + _bounds.fromGeometry(this._geometry); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new MeshNode(this)); + } + private function onSubGeometryAdded(event:GeometryEvent):void{ + this.addSubMesh(event.subGeometry); + } + private function onSubGeometryRemoved(event:GeometryEvent):void{ + var subMesh:SubMesh; + var i:uint; + var subGeom:SubGeometry = event.subGeometry; + var len:int = this._subMeshes.length; + i = 0; + while (i < len) { + subMesh = this._subMeshes[i]; + if (subMesh.subGeometry == subGeom){ + subMesh.dispose(); + this._subMeshes.splice(i, 1); + break; + }; + i++; + }; + len--; + while (i < len) { + this._subMeshes[i]._index = i; + i++; + }; + } + private function addSubMesh(subGeometry:SubGeometry):void{ + var subMesh:SubMesh = new SubMesh(subGeometry, this, null); + var len:uint = this._subMeshes.length; + subMesh._index = len; + this._subMeshes[len] = subMesh; + invalidateBounds(); + } + public function getSubMeshForSubGeometry(subGeometry:SubGeometry):SubMesh{ + return (this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)]); + } + override function collidesBefore(shortestCollisionDistance:Number, findClosest:Boolean):Boolean{ + var subMesh:SubMesh; + _pickingCollider.setLocalRay(_pickingCollisionVO.localRayPosition, _pickingCollisionVO.localRayDirection); + _pickingCollisionVO.renderable = null; + var len:int = this._subMeshes.length; + var i:int; + while (i < len) { + subMesh = this._subMeshes[i]; + if (_pickingCollider.testSubMeshCollision(subMesh, _pickingCollisionVO, shortestCollisionDistance)){ + shortestCollisionDistance = _pickingCollisionVO.rayEntryDistance; + _pickingCollisionVO.renderable = subMesh; + if (!(findClosest)){ + return (true); + }; + }; + i++; + }; + return (!((_pickingCollisionVO.renderable == null))); + } + + } +}//package away3d.entities diff --git a/flash_decompiled/watchdog/away3d/entities/SegmentSet.as b/flash_decompiled/watchdog/away3d/entities/SegmentSet.as new file mode 100644 index 0000000..3be4bc8 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/entities/SegmentSet.as @@ -0,0 +1,408 @@ +package away3d.entities { + import __AS3__.vec.*; + import away3d.primitives.data.*; + import away3d.materials.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.primitives.*; + import away3d.animators.*; + import away3d.bounds.*; + import away3d.core.partition.*; + import away3d.core.base.*; + + public class SegmentSet extends Entity implements IRenderable { + + public var _segments:Vector.; + private var _material:MaterialBase; + private var _vertices:Vector.; + private var _animator:IAnimator; + private var _numVertices:uint; + private var _indices:Vector.; + private var _numIndices:uint; + private var _vertexBufferDirty:Boolean; + private var _indexBufferDirty:Boolean; + private var _vertexContext3D:Context3D; + private var _indexContext3D:Context3D; + private var _vertexBuffer:VertexBuffer3D; + private var _indexBuffer:IndexBuffer3D; + private var _lineCount:uint; + + public function SegmentSet(){ + super(); + this._vertices = new Vector.(); + this._segments = new Vector.(); + this._numVertices = 0; + this._indices = new Vector.(); + this.material = new SegmentMaterial(); + } + public function addSegment(segment:Segment):void{ + segment.index = this._vertices.length; + segment.segmentsBase = this; + this._segments.push(segment); + this.updateSegment(segment); + var index:uint = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / 11); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + this._lineCount++; + } + function updateSegment(segment:Segment):void{ + var start:Vector3D = segment._start; + var end:Vector3D = segment._end; + var startX:Number = start.x; + var startY:Number = start.y; + var startZ:Number = start.z; + var endX:Number = end.x; + var endY:Number = end.y; + var endZ:Number = end.z; + var startR:Number = segment._startR; + var startG:Number = segment._startG; + var startB:Number = segment._startB; + var endR:Number = segment._endR; + var endG:Number = segment._endG; + var endB:Number = segment._endB; + var index:uint = segment.index; + var t:Number = segment.thickness; + var _temp1 = index; + index = (index + 1); + var _local18 = _temp1; + this._vertices[_local18] = startX; + var _temp2 = index; + index = (index + 1); + var _local19 = _temp2; + this._vertices[_local19] = startY; + var _temp3 = index; + index = (index + 1); + var _local20 = _temp3; + this._vertices[_local20] = startZ; + var _temp4 = index; + index = (index + 1); + var _local21 = _temp4; + this._vertices[_local21] = endX; + var _temp5 = index; + index = (index + 1); + var _local22 = _temp5; + this._vertices[_local22] = endY; + var _temp6 = index; + index = (index + 1); + var _local23 = _temp6; + this._vertices[_local23] = endZ; + var _temp7 = index; + index = (index + 1); + var _local24 = _temp7; + this._vertices[_local24] = t; + var _temp8 = index; + index = (index + 1); + var _local25 = _temp8; + this._vertices[_local25] = startR; + var _temp9 = index; + index = (index + 1); + var _local26 = _temp9; + this._vertices[_local26] = startG; + var _temp10 = index; + index = (index + 1); + var _local27 = _temp10; + this._vertices[_local27] = startB; + var _temp11 = index; + index = (index + 1); + var _local28 = _temp11; + this._vertices[_local28] = 1; + var _temp12 = index; + index = (index + 1); + var _local29 = _temp12; + this._vertices[_local29] = endX; + var _temp13 = index; + index = (index + 1); + var _local30 = _temp13; + this._vertices[_local30] = endY; + var _temp14 = index; + index = (index + 1); + var _local31 = _temp14; + this._vertices[_local31] = endZ; + var _temp15 = index; + index = (index + 1); + var _local32 = _temp15; + this._vertices[_local32] = startX; + var _temp16 = index; + index = (index + 1); + var _local33 = _temp16; + this._vertices[_local33] = startY; + var _temp17 = index; + index = (index + 1); + var _local34 = _temp17; + this._vertices[_local34] = startZ; + var _temp18 = index; + index = (index + 1); + var _local35 = _temp18; + this._vertices[_local35] = -(t); + var _temp19 = index; + index = (index + 1); + var _local36 = _temp19; + this._vertices[_local36] = endR; + var _temp20 = index; + index = (index + 1); + var _local37 = _temp20; + this._vertices[_local37] = endG; + var _temp21 = index; + index = (index + 1); + var _local38 = _temp21; + this._vertices[_local38] = endB; + var _temp22 = index; + index = (index + 1); + var _local39 = _temp22; + this._vertices[_local39] = 1; + var _temp23 = index; + index = (index + 1); + var _local40 = _temp23; + this._vertices[_local40] = startX; + var _temp24 = index; + index = (index + 1); + var _local41 = _temp24; + this._vertices[_local41] = startY; + var _temp25 = index; + index = (index + 1); + var _local42 = _temp25; + this._vertices[_local42] = startZ; + var _temp26 = index; + index = (index + 1); + var _local43 = _temp26; + this._vertices[_local43] = endX; + var _temp27 = index; + index = (index + 1); + var _local44 = _temp27; + this._vertices[_local44] = endY; + var _temp28 = index; + index = (index + 1); + var _local45 = _temp28; + this._vertices[_local45] = endZ; + var _temp29 = index; + index = (index + 1); + var _local46 = _temp29; + this._vertices[_local46] = -(t); + var _temp30 = index; + index = (index + 1); + var _local47 = _temp30; + this._vertices[_local47] = startR; + var _temp31 = index; + index = (index + 1); + var _local48 = _temp31; + this._vertices[_local48] = startG; + var _temp32 = index; + index = (index + 1); + var _local49 = _temp32; + this._vertices[_local49] = startB; + var _temp33 = index; + index = (index + 1); + var _local50 = _temp33; + this._vertices[_local50] = 1; + var _temp34 = index; + index = (index + 1); + var _local51 = _temp34; + this._vertices[_local51] = endX; + var _temp35 = index; + index = (index + 1); + var _local52 = _temp35; + this._vertices[_local52] = endY; + var _temp36 = index; + index = (index + 1); + var _local53 = _temp36; + this._vertices[_local53] = endZ; + var _temp37 = index; + index = (index + 1); + var _local54 = _temp37; + this._vertices[_local54] = startX; + var _temp38 = index; + index = (index + 1); + var _local55 = _temp38; + this._vertices[_local55] = startY; + var _temp39 = index; + index = (index + 1); + var _local56 = _temp39; + this._vertices[_local56] = startZ; + var _temp40 = index; + index = (index + 1); + var _local57 = _temp40; + this._vertices[_local57] = t; + var _temp41 = index; + index = (index + 1); + var _local58 = _temp41; + this._vertices[_local58] = endR; + var _temp42 = index; + index = (index + 1); + var _local59 = _temp42; + this._vertices[_local59] = endG; + var _temp43 = index; + index = (index + 1); + var _local60 = _temp43; + this._vertices[_local60] = endB; + var _temp44 = index; + index = (index + 1); + var _local61 = _temp44; + this._vertices[_local61] = 1; + this._vertexBufferDirty = true; + } + private function removeSegmentByIndex(index:uint):void{ + var indVert:uint = (this._indices[index] * 11); + this._indices.splice(index, 6); + this._vertices.splice(indVert, 44); + this._numVertices = (this._vertices.length / 11); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function removeSegment(segment:Segment):void{ + var index:uint; + var i:uint; + while (i < this._segments.length) { + if (this._segments[i] == segment){ + segment.segmentsBase = null; + this._segments.splice(i, 1); + this.removeSegmentByIndex(segment.index); + segment = null; + this._lineCount--; + } else { + this._segments[i].index = index; + index = (index + 6); + }; + i++; + }; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getSegment(index:uint):Segment{ + return (this._segments[index]); + } + public function removeAllSegments():void{ + this._vertices.length = 0; + this._indices.length = 0; + this._segments.length = 0; + this._numVertices = 0; + this._numIndices = 0; + this._lineCount = 0; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function get numTriangles2():uint{ + return (0); + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (null); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + if (((!((this._indexContext3D == stage3DProxy.context3D))) || (this._indexBufferDirty))){ + this._indexBuffer = stage3DProxy._context3D.createIndexBuffer(this._numIndices); + this._indexBuffer.uploadFromVector(this._indices, 0, this._numIndices); + this._indexBufferDirty = false; + this._indexContext3D = stage3DProxy.context3D; + }; + return (this._indexBuffer); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + if (this._numVertices == 0){ + this.addSegment(new LineSegment(new Vector3D(0, 0, 0), new Vector3D(0, 0, 0))); + }; + if (((!((this._vertexContext3D == stage3DProxy.context3D))) || (this._vertexBufferDirty))){ + this._vertexBuffer = stage3DProxy._context3D.createVertexBuffer(this._numVertices, 11); + this._vertexBuffer.uploadFromVector(this._vertices, 0, this._numVertices); + this._vertexBufferDirty = false; + this._vertexContext3D = stage3DProxy.context3D; + }; + return (this._vertexBuffer); + } + override public function dispose():void{ + super.dispose(); + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + }; + if (this._indexBuffer){ + this._indexBuffer.dispose(); + }; + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + override public function get mouseEnabled():Boolean{ + return (false); + } + public function get numTriangles():uint{ + return ((this._numIndices / 3)); + } + public function get sourceEntity():Entity{ + return (this); + } + public function get castsShadows():Boolean{ + return (false); + } + public function get material():MaterialBase{ + return (this._material); + } + public function get animator():IAnimator{ + return (this._animator); + } + public function set material(value:MaterialBase):void{ + if (value == this._material){ + return; + }; + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new BoundingSphere()); + } + override protected function updateBounds():void{ + _bounds.fromExtremes(-10000, -10000, 0, 10000, 10000, 0); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new RenderableNode(this)); + } + public function get uvTransform():Matrix{ + return (null); + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexData():Vector.{ + return (this._vertices); + } + public function get indexData():Vector.{ + return (this._indices); + } + public function get UVData():Vector.{ + return (null); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexBufferOffset():int{ + return (0); + } + public function get normalBufferOffset():int{ + return (0); + } + public function get tangentBufferOffset():int{ + return (0); + } + public function get UVBufferOffset():int{ + return (0); + } + public function get secondaryUVBufferOffset():int{ + return (0); + } + + } +}//package away3d.entities diff --git a/flash_decompiled/watchdog/away3d/errors/AbstractMethodError.as b/flash_decompiled/watchdog/away3d/errors/AbstractMethodError.as new file mode 100644 index 0000000..0c4bdb4 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/errors/AbstractMethodError.as @@ -0,0 +1,9 @@ +package away3d.errors { + + public class AbstractMethodError extends Error { + + public function AbstractMethodError(message:String=null, id:int=0){ + super(((message) || ("An abstract method was called! Either an instance of an abstract class was created, or an abstract method was not overridden by the subclass.")), id); + } + } +}//package away3d.errors diff --git a/flash_decompiled/watchdog/away3d/events/AssetEvent.as b/flash_decompiled/watchdog/away3d/events/AssetEvent.as new file mode 100644 index 0000000..af0920d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/AssetEvent.as @@ -0,0 +1,42 @@ +package away3d.events { + import away3d.library.assets.*; + import flash.events.*; + + public class AssetEvent extends Event { + + public static const ASSET_COMPLETE:String = "assetComplete"; + public static const ENTITY_COMPLETE:String = "entityComplete"; + public static const MESH_COMPLETE:String = "meshComplete"; + public static const GEOMETRY_COMPLETE:String = "geometryComplete"; + public static const SKELETON_COMPLETE:String = "skeletonComplete"; + public static const SKELETON_POSE_COMPLETE:String = "skeletonPoseComplete"; + public static const CONTAINER_COMPLETE:String = "containerComplete"; + public static const TEXTURE_COMPLETE:String = "textureComplete"; + public static const MATERIAL_COMPLETE:String = "materialComplete"; + public static const ANIMATION_SET_COMPLETE:String = "animationSetComplete"; + public static const ANIMATION_STATE_COMPLETE:String = "animationStateComplete"; + public static const ANIMATION_NODE_COMPLETE:String = "animationNodeComplete"; + public static const STATE_TRANSITION_COMPLETE:String = "stateTransitionComplete"; + public static const ASSET_RENAME:String = "assetRename"; + public static const ASSET_CONFLICT_RESOLVED:String = "assetConflictResolved"; + + private var _asset:IAsset; + private var _prevName:String; + + public function AssetEvent(type:String, asset:IAsset=null, prevName:String=null){ + super(type); + this._asset = asset; + this._prevName = ((prevName) || (((this._asset) ? this._asset.name : null))); + } + public function get asset():IAsset{ + return (this._asset); + } + public function get assetPrevName():String{ + return (this._prevName); + } + override public function clone():Event{ + return (new AssetEvent(type, this.asset, this.assetPrevName)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/GeometryEvent.as b/flash_decompiled/watchdog/away3d/events/GeometryEvent.as new file mode 100644 index 0000000..b939a06 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/GeometryEvent.as @@ -0,0 +1,25 @@ +package away3d.events { + import away3d.core.base.*; + import flash.events.*; + + public class GeometryEvent extends Event { + + public static const SUB_GEOMETRY_ADDED:String = "SubGeometryAdded"; + public static const SUB_GEOMETRY_REMOVED:String = "SubGeometryRemoved"; + public static const BOUNDS_INVALID:String = "BoundsInvalid"; + + private var _subGeometry:SubGeometry; + + public function GeometryEvent(type:String, subGeometry:SubGeometry=null):void{ + super(type, false, false); + this._subGeometry = subGeometry; + } + public function get subGeometry():SubGeometry{ + return (this._subGeometry); + } + override public function clone():Event{ + return (new GeometryEvent(type, this._subGeometry)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/LensEvent.as b/flash_decompiled/watchdog/away3d/events/LensEvent.as new file mode 100644 index 0000000..09bfd94 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/LensEvent.as @@ -0,0 +1,23 @@ +package away3d.events { + import away3d.cameras.lenses.*; + import flash.events.*; + + public class LensEvent extends Event { + + public static const MATRIX_CHANGED:String = "matrixChanged"; + + private var _lens:LensBase; + + public function LensEvent(type:String, lens:LensBase, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + this._lens = lens; + } + public function get lens():LensBase{ + return (this._lens); + } + override public function clone():Event{ + return (new LensEvent(type, this._lens, bubbles, cancelable)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/MouseEvent3D.as b/flash_decompiled/watchdog/away3d/events/MouseEvent3D.as new file mode 100644 index 0000000..d647840 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/MouseEvent3D.as @@ -0,0 +1,83 @@ +package away3d.events { + import flash.events.*; + import away3d.containers.*; + import flash.geom.*; + import away3d.core.base.*; + import away3d.materials.*; + + public class MouseEvent3D extends Event { + + public static const MOUSE_OVER:String = "mouseOver3d"; + public static const MOUSE_OUT:String = "mouseOut3d"; + public static const MOUSE_UP:String = "mouseUp3d"; + public static const MOUSE_DOWN:String = "mouseDown3d"; + public static const MOUSE_MOVE:String = "mouseMove3d"; + public static const CLICK:String = "click3d"; + public static const DOUBLE_CLICK:String = "doubleClick3d"; + public static const MOUSE_WHEEL:String = "mouseWheel3d"; + + private var _propagataionStopped:Boolean; + public var screenX:Number; + public var screenY:Number; + public var view:View3D; + public var object:ObjectContainer3D; + public var renderable:IRenderable; + public var material:MaterialBase; + public var uv:Point; + public var localPosition:Vector3D; + public var localNormal:Vector3D; + public var ctrlKey:Boolean; + public var altKey:Boolean; + public var shiftKey:Boolean; + public var delta:int; + + public function MouseEvent3D(type:String){ + super(type, true, true); + } + override public function get bubbles():Boolean{ + return (((super.bubbles) && (!(this._propagataionStopped)))); + } + override public function stopPropagation():void{ + super.stopPropagation(); + this._propagataionStopped = true; + } + override public function stopImmediatePropagation():void{ + super.stopImmediatePropagation(); + this._propagataionStopped = true; + } + override public function clone():Event{ + var result:MouseEvent3D = new MouseEvent3D(type); + if (isDefaultPrevented()){ + result.preventDefault(); + }; + result.screenX = this.screenX; + result.screenY = this.screenY; + result.view = this.view; + result.object = this.object; + result.renderable = this.renderable; + result.material = this.material; + result.uv = this.uv; + result.localPosition = this.localPosition; + result.localNormal = this.localNormal; + result.ctrlKey = this.ctrlKey; + result.shiftKey = this.shiftKey; + return (result); + } + public function get scenePosition():Vector3D{ + if ((this.object is ObjectContainer3D)){ + return (ObjectContainer3D(this.object).sceneTransform.transformVector(this.localPosition)); + }; + return (this.localPosition); + } + public function get sceneNormal():Vector3D{ + var sceneNormal:Vector3D; + if ((this.object is ObjectContainer3D)){ + sceneNormal = ObjectContainer3D(this.object).sceneTransform.deltaTransformVector(this.localNormal); + sceneNormal.normalize(); + return (sceneNormal); + }; + return (this.localNormal); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/Object3DEvent.as b/flash_decompiled/watchdog/away3d/events/Object3DEvent.as new file mode 100644 index 0000000..c12ef35 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/Object3DEvent.as @@ -0,0 +1,25 @@ +package away3d.events { + import away3d.core.base.*; + import flash.events.*; + + public class Object3DEvent extends Event { + + public static const VISIBLITY_UPDATED:String = "visiblityUpdated"; + public static const SCENETRANSFORM_CHANGED:String = "scenetransformChanged"; + public static const SCENE_CHANGED:String = "sceneChanged"; + public static const POSITION_CHANGED:String = "positionChanged"; + public static const ROTATION_CHANGED:String = "rotationChanged"; + public static const SCALE_CHANGED:String = "scaleChanged"; + + public var object:Object3D; + + public function Object3DEvent(type:String, object:Object3D){ + super(type); + this.object = object; + } + override public function clone():Event{ + return (new Object3DEvent(type, this.object)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/Scene3DEvent.as b/flash_decompiled/watchdog/away3d/events/Scene3DEvent.as new file mode 100644 index 0000000..7f4ba4d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/Scene3DEvent.as @@ -0,0 +1,24 @@ +package away3d.events { + import away3d.containers.*; + import flash.events.*; + + public class Scene3DEvent extends Event { + + public static const ADDED_TO_SCENE:String = "addedToScene"; + public static const REMOVED_FROM_SCENE:String = "removedFromScene"; + + public var objectContainer3D:ObjectContainer3D; + + public function Scene3DEvent(type:String, objectContainer:ObjectContainer3D){ + this.objectContainer3D = objectContainer; + super(type); + } + override public function get target():Object{ + return (this.objectContainer3D); + } + override public function clone():Event{ + return (new Scene3DEvent(type, this.objectContainer3D)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/ShadingMethodEvent.as b/flash_decompiled/watchdog/away3d/events/ShadingMethodEvent.as new file mode 100644 index 0000000..5fc075c --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/ShadingMethodEvent.as @@ -0,0 +1,12 @@ +package away3d.events { + import flash.events.*; + + public class ShadingMethodEvent extends Event { + + public static const SHADER_INVALIDATED:String = "ShaderInvalidated"; + + public function ShadingMethodEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + } + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/Stage3DEvent.as b/flash_decompiled/watchdog/away3d/events/Stage3DEvent.as new file mode 100644 index 0000000..f73a1b3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/Stage3DEvent.as @@ -0,0 +1,14 @@ +package away3d.events { + import flash.events.*; + + public class Stage3DEvent extends Event { + + public static const CONTEXT3D_CREATED:String = "Context3DCreated"; + public static const CONTEXT3D_DISPOSED:String = "Context3DDisposed"; + public static const CONTEXT3D_RECREATED:String = "Context3DRecreated"; + + public function Stage3DEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + } + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/events/StateTransitionEvent.as b/flash_decompiled/watchdog/away3d/events/StateTransitionEvent.as new file mode 100644 index 0000000..d66dc0c --- /dev/null +++ b/flash_decompiled/watchdog/away3d/events/StateTransitionEvent.as @@ -0,0 +1,16 @@ +package away3d.events { + import flash.events.*; + + public class StateTransitionEvent extends Event { + + public static const TRANSITION_COMPLETE:String = "transitionComplete"; + + public function StateTransitionEvent(type:String){ + super(type); + } + override public function clone():Event{ + return (new StateTransitionEvent(type)); + } + + } +}//package away3d.events diff --git a/flash_decompiled/watchdog/away3d/extrusions/LatheExtrude.as b/flash_decompiled/watchdog/away3d/extrusions/LatheExtrude.as new file mode 100644 index 0000000..57a4e6f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/extrusions/LatheExtrude.as @@ -0,0 +1,1239 @@ +package away3d.extrusions { + import __AS3__.vec.*; + import away3d.core.base.*; + import away3d.materials.*; + import flash.geom.*; + import away3d.materials.utils.*; + import away3d.tools.helpers.*; + import away3d.bounds.*; + import away3d.core.base.data.*; + import away3d.entities.*; + + public class LatheExtrude extends Mesh { + + public static const X_AXIS:String = "x"; + public static const Y_AXIS:String = "y"; + public static const Z_AXIS:String = "z"; + + private const EPS:Number = 0.0001; + private const LIMIT:uint = 196605; + private const MAXRAD:Number = 1.2; + + private var _profile:Vector.; + private var _lastProfile:Vector.; + private var _keepLastProfile:Boolean; + private var _axis:String; + private var _revolutions:Number; + private var _subdivision:uint; + private var _offsetRadius:Number; + private var _materials:MultipleMaterials; + private var _coverAll:Boolean; + private var _flip:Boolean; + private var _centerMesh:Boolean; + private var _thickness:Number; + private var _preciseThickness:Boolean; + private var _ignoreSides:String; + private var _smoothSurface:Boolean; + private var _tweek:Object; + private var _varr:Vector.; + private var _varr2:Vector.; + private var _uvarr:Vector.; + private var _startRotationOffset:Number = 0; + private var _geomDirty:Boolean = true; + private var _subGeometry:SubGeometry; + private var _MaterialsSubGeometries:Vector.; + private var _maxIndProfile:uint; + private var _uva:UV; + private var _uvb:UV; + private var _uvc:UV; + private var _uvd:UV; + private var _va:Vector3D; + private var _vb:Vector3D; + private var _vc:Vector3D; + private var _vd:Vector3D; + private var _uvs:Vector.; + private var _vertices:Vector.; + private var _indices:Vector.; + private var _normals:Vector.; + private var _normalTmp:Vector3D; + private var _normal0:Vector3D; + private var _normal1:Vector3D; + private var _normal2:Vector3D; + + public function LatheExtrude(material:MaterialBase=null, profile:Vector.=null, axis:String="y", revolutions:Number=1, subdivision:uint=10, coverall:Boolean=true, centerMesh:Boolean=false, flip:Boolean=false, thickness:Number=0, preciseThickness:Boolean=true, offsetRadius:Number=0, materials:MultipleMaterials=null, ignoreSides:String="", tweek:Object=null, smoothSurface:Boolean=true){ + this._MaterialsSubGeometries = new Vector.(); + var geom:Geometry = new Geometry(); + this._subGeometry = new SubGeometry(); + if (((((!(material)) && (materials))) && (materials.front))){ + material = materials.front; + }; + super(geom, material); + this._profile = profile; + this._axis = axis; + this._revolutions = revolutions; + this._subdivision = ((subdivision)<3) ? 3 : subdivision; + this._offsetRadius = offsetRadius; + this._materials = materials; + this._coverAll = coverall; + this._flip = flip; + this._centerMesh = centerMesh; + this._thickness = Math.abs(thickness); + this._preciseThickness = preciseThickness; + this._ignoreSides = ignoreSides; + this._tweek = tweek; + this._smoothSurface = smoothSurface; + } + public function get profile():Vector.{ + return (this._profile); + } + public function set profile(val:Vector.):void{ + if (val.length > 1){ + this._profile = val; + this.invalidateGeometry(); + } else { + throw (new Error("LatheExtrude error: the profile Vector. must hold a mimimun of 2 vector3D's")); + }; + } + public function get startRotationOffset():Number{ + return (this._startRotationOffset); + } + public function set startRotationOffset(val:Number):void{ + this._startRotationOffset = val; + } + public function get axis():String{ + return (this._axis); + } + public function set axis(val:String):void{ + if (this._axis == val){ + return; + }; + this._axis = val; + this.invalidateGeometry(); + } + public function get revolutions():Number{ + return (this._revolutions); + } + public function set revolutions(val:Number):void{ + if (this._revolutions == val){ + return; + }; + this._revolutions = ((this._revolutions)>0.001) ? this._revolutions : 0.001; + this._revolutions = val; + this.invalidateGeometry(); + } + public function get subdivision():uint{ + return (this._subdivision); + } + public function set subdivision(val:uint):void{ + val = ((val)<3) ? 3 : val; + if (this._subdivision == val){ + return; + }; + this._subdivision = val; + this.invalidateGeometry(); + } + public function get offsetRadius():Number{ + return (this._offsetRadius); + } + public function set offsetRadius(val:Number):void{ + if (this._offsetRadius == val){ + return; + }; + this._offsetRadius = val; + this.invalidateGeometry(); + } + public function get materials():MultipleMaterials{ + return (this._materials); + } + public function set materials(val:MultipleMaterials):void{ + this._materials = val; + if (((this._materials.front) && (!((this.material == this._materials.front))))){ + this.material = this._materials.front; + }; + this.invalidateGeometry(); + } + public function get coverAll():Boolean{ + return (this._coverAll); + } + public function set coverAll(val:Boolean):void{ + if (this._coverAll == val){ + return; + }; + this._coverAll = val; + this.invalidateGeometry(); + } + public function get flip():Boolean{ + return (this._flip); + } + public function set flip(val:Boolean):void{ + if (this._flip == val){ + return; + }; + this._flip = val; + this.invalidateGeometry(); + } + public function get smoothSurface():Boolean{ + return (this._smoothSurface); + } + public function set smoothSurface(val:Boolean):void{ + if (this._smoothSurface == val){ + return; + }; + this._smoothSurface = val; + this._geomDirty = true; + } + public function get keepLastProfile():Boolean{ + return (this._keepLastProfile); + } + public function set keepLastProfile(val:Boolean):void{ + if (this._keepLastProfile == val){ + return; + }; + this._keepLastProfile = val; + } + public function get lastProfile():Vector.{ + if (((this.keepLastProfile) && (!(this._lastProfile)))){ + this.buildExtrude(); + }; + return (this._lastProfile); + } + public function get preciseThickness():Boolean{ + return (this._preciseThickness); + } + public function set preciseThickness(val:Boolean):void{ + if (this._preciseThickness == val){ + return; + }; + this._preciseThickness = val; + this.invalidateGeometry(); + } + public function get centerMesh():Boolean{ + return (this._centerMesh); + } + public function set centerMesh(val:Boolean):void{ + if (this._centerMesh == val){ + return; + }; + this._centerMesh = val; + if (((this._centerMesh) && ((this._subGeometry.vertexData.length > 0)))){ + MeshHelper.recenter(this); + } else { + this.invalidateGeometry(); + }; + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(val:Number):void{ + if (this._thickness == val){ + return; + }; + this._thickness = ((val)>0) ? val : this._thickness; + this.invalidateGeometry(); + } + public function get ignoreSides():String{ + return (this._ignoreSides); + } + public function set ignoreSides(val:String):void{ + this._ignoreSides = val; + this.invalidateGeometry(); + } + public function get tweek():Object{ + return (this._tweek); + } + public function set tweek(val:Object):void{ + this._tweek = val; + this.invalidateGeometry(); + } + override public function get bounds():BoundingVolumeBase{ + if (this._geomDirty){ + this.buildExtrude(); + }; + return (super.bounds); + } + override public function get geometry():Geometry{ + if (this._geomDirty){ + this.buildExtrude(); + }; + return (super.geometry); + } + override public function get subMeshes():Vector.{ + if (this._geomDirty){ + this.buildExtrude(); + }; + return (super.subMeshes); + } + private function closeTopBottom(ptLength:int, renderSide:RenderSide):void{ + var va:Vector3D; + var vb:Vector3D; + var vc:Vector3D; + var vd:Vector3D; + var i:uint; + var j:uint; + var a:Number; + var b:Number; + var total:uint = (this._varr.length - ptLength); + this._uva.u = (this._uvb.u = 0); + this._uvc.u = (this._uvd.u = 1); + i = 0; + while (i < total) { + if (i != 0){ + if (this._coverAll){ + a = (i / total); + b = ((i + ptLength) / total); + this._uva.v = a; + this._uvb.v = b; + this._uvc.v = b; + this._uvd.v = a; + } else { + this._uva.v = 0; + this._uvb.v = 1; + this._uvc.v = 1; + this._uvd.v = 0; + }; + if (renderSide.top){ + va = this._varr[i]; + vb = this._varr[(i + ptLength)]; + vc = this._varr2[(i + ptLength)]; + vd = this._varr2[i]; + if (this._flip){ + this.addFace(vb, va, vc, this._uvb, this._uva, this._uvc, 4); + this.addFace(vc, va, vd, this._uvc, this._uva, this._uvd, 4); + } else { + this.addFace(va, vb, vc, this._uva, this._uvb, this._uvc, 4); + this.addFace(va, vc, vd, this._uva, this._uvc, this._uvd, 4); + }; + }; + if (renderSide.bottom){ + j = ((i + ptLength) - 1); + va = this._varr[j]; + vb = this._varr[(j + ptLength)]; + vc = this._varr2[(j + ptLength)]; + vd = this._varr2[j]; + if (this._flip){ + this.addFace(va, vb, vc, this._uva, this._uvb, this._uvc, 5); + this.addFace(va, vc, vd, this._uva, this._uvc, this._uvd, 5); + } else { + this.addFace(vb, va, vc, this._uvb, this._uva, this._uvc, 5); + this.addFace(vc, va, vd, this._uvc, this._uva, this._uvd, 5); + }; + }; + }; + i = (i + ptLength); + }; + } + private function closeSides(ptLength:uint, renderSide:RenderSide):void{ + var va:Vector3D; + var vb:Vector3D; + var vc:Vector3D; + var vd:Vector3D; + var i:uint; + var j:uint; + var a:Number; + var b:Number; + var total:uint = (this._varr.length - ptLength); + var iter:int = (ptLength - 1); + var step:Number = ((((this._preciseThickness) && (((ptLength % 2) == 0)))) ? (1 / iter) : (1 / ptLength)); + i = 0; + while (i < iter) { + if (this._coverAll){ + a = (i * step); + b = (a + step); + this._uva.v = (1 - a); + this._uvb.v = (1 - b); + this._uvc.v = (1 - b); + this._uvd.v = (1 - a); + } else { + this._uva.v = 0; + this._uvb.v = 1; + this._uvc.v = 1; + this._uvd.v = 0; + }; + if (renderSide.left){ + va = this._varr[(i + 1)]; + vb = this._varr[i]; + vc = this._varr2[i]; + vd = this._varr2[(i + 1)]; + this._uva.u = (this._uvb.u = 0); + this._uvc.u = (this._uvd.u = 1); + if (this._flip){ + this.addFace(vb, va, vc, this._uvb, this._uva, this._uvc, 2); + this.addFace(vc, va, vd, this._uvc, this._uva, this._uvd, 2); + } else { + this.addFace(va, vb, vc, this._uva, this._uvb, this._uvc, 2); + this.addFace(va, vc, vd, this._uva, this._uvc, this._uvd, 2); + }; + }; + if (renderSide.right){ + j = (total + i); + va = this._varr[(j + 1)]; + vb = this._varr[j]; + vc = this._varr2[j]; + vd = this._varr2[(j + 1)]; + this._uva.u = (this._uvb.u = 1); + this._uvc.u = (this._uvd.u = 0); + if (this._flip){ + this.addFace(va, vb, vc, this._uva, this._uvb, this._uvc, 3); + this.addFace(va, vc, vd, this._uva, this._uvc, this._uvd, 3); + } else { + this.addFace(vb, va, vc, this._uvb, this._uva, this._uvc, 3); + this.addFace(vc, va, vd, this._uvc, this._uva, this._uvd, 3); + }; + }; + i++; + }; + } + private function generate(vectors:Vector., axis:String, tweek:Object, render:Boolean=true, id:uint=0):void{ + var j:uint; + var tmpVecs:Vector.; + var uvu:Number; + var uvv:Number; + var i:uint; + var index:int; + var inc:int; + var loop:int; + var va:Vector3D; + var vb:Vector3D; + var vc:Vector3D; + var vd:Vector3D; + var uva:UV; + var uvb:UV; + var uvc:UV; + var uvd:UV; + var uvind:uint; + var vind:uint; + var iter:int; + if (!(tweek)){ + tweek = {}; + }; + if (((isNaN(tweek[X_AXIS])) || (!(tweek[X_AXIS])))){ + tweek[X_AXIS] = 0; + }; + if (((isNaN(tweek[Y_AXIS])) || (!(tweek[Y_AXIS])))){ + tweek[Y_AXIS] = 0; + }; + if (((isNaN(tweek[Z_AXIS])) || (!(tweek[Z_AXIS])))){ + tweek[Z_AXIS] = 0; + }; + if (((isNaN(tweek["radius"])) || (!(tweek["radius"])))){ + tweek["radius"] = 0; + }; + var angle:Number = this._startRotationOffset; + var step:Number = (360 / this._subdivision); + var tweekX:Number = 0; + var tweekY:Number = 0; + var tweekZ:Number = 0; + var tweekradius:Number = 0; + var tweekrotation:Number = 0; + var aRads:Array = []; + if (!(this._varr)){ + this._varr = new Vector.(); + }; + i = 0; + while (i < vectors.length) { + this._varr.push(new Vector3D(vectors[i].x, vectors[i].y, vectors[i].z)); + this._uvarr.push(new UV(0, (1 % i))); + i++; + }; + var offsetradius:Number = -(this._offsetRadius); + var factor:Number = 0; + var stepm:Number = (360 * this._revolutions); + var lsub:Number = ((this._revolutions)<1) ? this._subdivision : (this._subdivision * this._revolutions); + if (this._revolutions < 1){ + step = (step * this._revolutions); + }; + i = 0; + while (i <= lsub) { + tmpVecs = new Vector.(); + tmpVecs = vectors.concat(); + j = 0; + while (j < tmpVecs.length) { + factor = ((this._revolutions - 1) / (this._varr.length + 1)); + if (tweek[X_AXIS] != 0){ + tweekX = (tweekX + ((tweek[X_AXIS] * factor) / this._revolutions)); + }; + if (tweek[Y_AXIS] != 0){ + tweekY = (tweekY + ((tweek[Y_AXIS] * factor) / this._revolutions)); + }; + if (tweek[Z_AXIS] != 0){ + tweekZ = (tweekZ + ((tweek[Z_AXIS] * factor) / this._revolutions)); + }; + if (tweek.radius != 0){ + tweekradius = (tweekradius + (tweek.radius / (this._varr.length + 1))); + }; + if (tweek.rotation != 0){ + tweekrotation = (tweekrotation + (360 / (tweek.rotation * this._subdivision))); + }; + if (this._axis == X_AXIS){ + if (i == 0){ + aRads[j] = (offsetradius - Math.abs(tmpVecs[j].z)); + }; + tmpVecs[j].z = (Math.cos(((-(angle) / 180) * Math.PI)) * (aRads[j] + tweekradius)); + tmpVecs[j].y = (Math.sin(((angle / 180) * Math.PI)) * (aRads[j] + tweekradius)); + if (i == 0){ + this._varr[j].z = (this._varr[j].z + tmpVecs[j].z); + this._varr[j].y = (this._varr[j].y + tmpVecs[j].y); + }; + } else { + if (this._axis == Y_AXIS){ + if (i == 0){ + aRads[j] = (offsetradius - Math.abs(tmpVecs[j].x)); + }; + tmpVecs[j].x = (Math.cos(((-(angle) / 180) * Math.PI)) * (aRads[j] + tweekradius)); + tmpVecs[j].z = (Math.sin(((angle / 180) * Math.PI)) * (aRads[j] + tweekradius)); + if (i == 0){ + this._varr[j].x = tmpVecs[j].x; + this._varr[j].z = tmpVecs[j].z; + }; + } else { + if (i == 0){ + aRads[j] = (offsetradius - Math.abs(tmpVecs[j].y)); + }; + tmpVecs[j].x = (Math.cos(((-(angle) / 180) * Math.PI)) * (aRads[j] + tweekradius)); + tmpVecs[j].y = (Math.sin(((angle / 180) * Math.PI)) * (aRads[j] + tweekradius)); + if (i == 0){ + this._varr[j].x = tmpVecs[j].x; + this._varr[j].y = tmpVecs[j].y; + }; + }; + }; + tmpVecs[j].x = (tmpVecs[j].x + tweekX); + tmpVecs[j].y = (tmpVecs[j].y + tweekY); + tmpVecs[j].z = (tmpVecs[j].z + tweekZ); + this._varr.push(new Vector3D(tmpVecs[j].x, tmpVecs[j].y, tmpVecs[j].z)); + if (this._coverAll){ + uvu = (angle / stepm); + } else { + uvu = (((i % 2))==0) ? 0 : 1; + }; + uvv = (j / (this._profile.length - 1)); + this._uvarr.push(new UV(uvu, uvv)); + j++; + }; + angle = (angle + step); + i++; + }; + if (render){ + inc = vectors.length; + loop = (this._varr.length - inc); + iter = (inc - 1); + i = 0; + while (i < loop) { + index = 0; + j = 0; + while (j < iter) { + if (i > 0){ + uvind = (i + index); + vind = uvind; + uva = this._uvarr[(uvind + 1)]; + uvb = this._uvarr[uvind]; + uvc = this._uvarr[(uvind + inc)]; + uvd = this._uvarr[((uvind + inc) + 1)]; + if ((((((this._revolutions == 1)) && (((i + inc) == loop)))) && ((this._tweek == null)))){ + va = this._varr[(vind + 1)]; + vb = this._varr[vind]; + vc = this._varr[(vind + inc)]; + vd = this._varr[((vind + inc) + 1)]; + } else { + va = this._varr[(vind + 1)]; + vb = this._varr[vind]; + vc = this._varr[(vind + inc)]; + vd = this._varr[((vind + inc) + 1)]; + }; + if (this._flip){ + if (id == 1){ + this._uva.u = (1 - uva.u); + this._uva.v = uva.v; + this._uvb.u = (1 - uvb.u); + this._uvb.v = uvb.v; + this._uvc.u = (1 - uvc.u); + this._uvc.v = uvc.v; + this._uvd.u = (1 - uvd.u); + this._uvd.v = uvd.v; + this.addFace(va, vb, vc, this._uva, this._uvb, this._uvc, id); + this.addFace(va, vc, vd, this._uva, this._uvc, this._uvd, id); + } else { + this.addFace(vb, va, vc, uvb, uva, uvc, id); + this.addFace(vc, va, vd, uvc, uva, uvd, id); + }; + } else { + if (id == 1){ + this._uva.u = uva.u; + this._uva.v = (1 - uva.v); + this._uvb.u = uvb.u; + this._uvb.v = (1 - uvb.v); + this._uvc.u = uvc.u; + this._uvc.v = (1 - uvc.v); + this._uvd.u = uvd.u; + this._uvd.v = (1 - uvd.v); + this.addFace(vb, va, vc, this._uvb, this._uva, this._uvc, id); + this.addFace(vc, va, vd, this._uvc, this._uva, this._uvd, id); + } else { + this.addFace(va, vb, vc, uva, uvb, uvc, id); + this.addFace(va, vc, vd, uva, uvc, uvd, id); + }; + }; + }; + index++; + j++; + }; + i = (i + inc); + }; + }; + } + private function buildExtrude():void{ + var i:uint; + var aListsides:Array; + var renderSide:RenderSide; + var prop1:String; + var prop2:String; + var prop3:String; + var lines:Array; + var points:FourPoints; + var vector:Vector3D; + var vector2:Vector3D; + var vector3:Vector3D; + var vector4:Vector3D; + var profileFront:Vector.; + var profileBack:Vector.; + var tmprofile1:Vector.; + var tmprofile2:Vector.; + var halft:Number; + var val:Number; + var sglist:SubGeometryList; + var sg:SubGeometry; + if (!(this._profile)){ + throw (new Error("LatheExtrude error: No profile Vector. set")); + }; + this._MaterialsSubGeometries = null; + this._geomDirty = false; + this.initHolders(); + this._maxIndProfile = (this._profile.length * 9); + if (this._profile.length > 1){ + if (this._thickness != 0){ + aListsides = ["top", "bottom", "right", "left", "front", "back"]; + renderSide = new RenderSide(); + i = 0; + while (i < aListsides.length) { + renderSide[aListsides[i]] = (this._ignoreSides.indexOf(aListsides[i]) == -1); + i++; + }; + this._varr = new Vector.(); + this._varr2 = new Vector.(); + if (this._preciseThickness){ + switch (this._axis){ + case X_AXIS: + prop1 = X_AXIS; + prop2 = Z_AXIS; + prop3 = Y_AXIS; + break; + case Y_AXIS: + prop1 = Y_AXIS; + prop2 = X_AXIS; + prop3 = Z_AXIS; + break; + case Z_AXIS: + prop1 = Z_AXIS; + prop2 = Y_AXIS; + prop3 = X_AXIS; + }; + lines = this.buildThicknessPoints(this._profile, this.thickness, prop1, prop2); + profileFront = new Vector.(); + profileBack = new Vector.(); + i = 0; + while (i < lines.length) { + points = lines[i]; + vector = new Vector3D(); + vector2 = new Vector3D(); + if (i == 0){ + vector[prop1] = points.pt2.x; + vector[prop2] = points.pt2.y; + vector[prop3] = this._profile[0][prop3]; + profileFront.push(vector); + vector2[prop1] = points.pt1.x; + vector2[prop2] = points.pt1.y; + vector2[prop3] = this._profile[0][prop3]; + profileBack.push(vector2); + if (lines.length == 1){ + vector3 = new Vector3D(); + vector4 = new Vector3D(); + vector3[prop1] = points.pt4.x; + vector3[prop2] = points.pt4.y; + vector3[prop3] = this._profile[0][prop3]; + profileFront.push(vector3); + vector4[prop1] = points.pt3.x; + vector4[prop2] = points.pt3.y; + vector4[prop3] = this._profile[0][prop3]; + profileBack.push(vector4); + }; + } else { + if (i == (lines.length - 1)){ + vector[prop1] = points.pt2.x; + vector[prop2] = points.pt2.y; + vector[prop3] = this._profile[i][prop3]; + profileFront.push(vector); + vector2[prop1] = points.pt1.x; + vector2[prop2] = points.pt1.y; + vector2[prop3] = this._profile[i][prop3]; + profileBack.push(vector2); + vector3 = new Vector3D(); + vector4 = new Vector3D(); + vector3[prop1] = points.pt4.x; + vector3[prop2] = points.pt4.y; + vector3[prop3] = this._profile[i][prop3]; + profileFront.push(vector3); + vector4[prop1] = points.pt3.x; + vector4[prop2] = points.pt3.y; + vector4[prop3] = this._profile[i][prop3]; + profileBack.push(vector4); + } else { + vector[prop1] = points.pt2.x; + vector[prop2] = points.pt2.y; + vector[prop3] = this._profile[i][prop3]; + profileFront.push(vector); + vector2[prop1] = points.pt1.x; + vector2[prop2] = points.pt1.y; + vector2[prop3] = this._profile[i][prop3]; + profileBack.push(vector2); + }; + }; + i++; + }; + this.generate(profileFront, this._axis, this._tweek, renderSide.front, 0); + this._varr2 = this._varr2.concat(this._varr); + this._varr = new Vector.(); + this.generate(profileBack, this._axis, this._tweek, renderSide.back, 1); + } else { + tmprofile1 = new Vector.(); + tmprofile2 = new Vector.(); + halft = (this._thickness * 0.5); + i = 0; + while (i < this._profile.length) { + switch (this._axis){ + case X_AXIS: + val = ((this._profile[i].z)<0) ? halft : -(halft); + tmprofile1.push(new Vector3D(this._profile[i].x, this._profile[i].y, (this._profile[i].z - val))); + tmprofile2.push(new Vector3D(this._profile[i].x, this._profile[i].y, (this._profile[i].z + val))); + break; + case Y_AXIS: + val = ((this._profile[i].x)<0) ? halft : -(halft); + tmprofile1.push(new Vector3D((this._profile[i].x - val), this._profile[i].y, this._profile[i].z)); + tmprofile2.push(new Vector3D((this._profile[i].x + val), this._profile[i].y, this._profile[i].z)); + break; + case Z_AXIS: + val = ((this._profile[i].y)<0) ? halft : -(halft); + tmprofile1.push(new Vector3D(this._profile[i].x, (this._profile[i].y - val), this._profile[i].z)); + tmprofile2.push(new Vector3D(this._profile[i].x, (this._profile[i].y + val), this._profile[i].z)); + }; + i++; + }; + this.generate(tmprofile1, this._axis, this._tweek, renderSide.front, 0); + this._varr2 = this._varr2.concat(this._varr); + this._varr = new Vector.(); + this.generate(tmprofile2, this._axis, this._tweek, renderSide.back, 1); + }; + this.closeTopBottom(this._profile.length, renderSide); + if (this._revolutions != 1){ + this.closeSides(this._profile.length, renderSide); + }; + } else { + this.generate(this._profile, this._axis, this._tweek); + }; + } else { + throw (new Error("LatheExtrude error: the profile Vector. must hold a mimimun of 2 vector3D's")); + }; + if (this._vertices.length > 0){ + this._subGeometry.updateVertexData(this._vertices); + this._subGeometry.updateIndexData(this._indices); + this._subGeometry.updateUVData(this._uvs); + if (this._smoothSurface){ + this._subGeometry.updateVertexNormalData(this._normals); + }; + this.geometry.addSubGeometry(this._subGeometry); + }; + if (((this._MaterialsSubGeometries) && ((this._MaterialsSubGeometries.length > 0)))){ + i = 1; + while (i < 6) { + sglist = this._MaterialsSubGeometries[i]; + sg = sglist.subGeometry; + if (((sg) && ((sglist.vertices.length > 0)))){ + this.geometry.addSubGeometry(sg); + this.subMeshes[(this.subMeshes.length - 1)].material = sglist.material; + sg.updateVertexData(sglist.vertices); + sg.updateIndexData(sglist.indices); + sg.updateUVData(sglist.uvs); + if (this._smoothSurface){ + sg.updateVertexNormalData(sglist.normals); + }; + }; + i++; + }; + }; + if (this._keepLastProfile){ + this._lastProfile = this._varr.splice((this._varr.length - this._profile.length), this._profile.length); + } else { + this._lastProfile = null; + }; + this._varr = (this._varr2 = null); + this._uvarr = null; + if (this._centerMesh){ + MeshHelper.recenter(this); + }; + } + private function calcNormal(v0:Vector3D, v1:Vector3D, v2:Vector3D):void{ + var dx1:Number = (v2.x - v0.x); + var dy1:Number = (v2.y - v0.y); + var dz1:Number = (v2.z - v0.z); + var dx2:Number = (v1.x - v0.x); + var dy2:Number = (v1.y - v0.y); + var dz2:Number = (v1.z - v0.z); + var cx:Number = ((dz1 * dy2) - (dy1 * dz2)); + var cy:Number = ((dx1 * dz2) - (dz1 * dx2)); + var cz:Number = ((dy1 * dx2) - (dx1 * dy2)); + var d:Number = (1 / Math.sqrt((((cx * cx) + (cy * cy)) + (cz * cz)))); + this._normal0.x = (this._normal1.x = (this._normal2.x = (cx * d))); + this._normal0.y = (this._normal1.y = (this._normal2.y = (cy * d))); + this._normal0.z = (this._normal1.z = (this._normal2.z = (cz * d))); + } + private function addFace(v0:Vector3D, v1:Vector3D, v2:Vector3D, uv0:UV, uv1:UV, uv2:UV, subGeomInd:uint):void{ + var subGeom:SubGeometry; + var uvs:Vector.; + var normals:Vector.; + var vertices:Vector.; + var indices:Vector.; + var bv0:Boolean; + var bv1:Boolean; + var bv2:Boolean; + var ind0:uint; + var ind1:uint; + var ind2:uint; + var uvind:uint; + var uvindV:uint; + var vind:uint; + var vindy:uint; + var vindz:uint; + var ind:uint; + var indlength:uint; + var ab:Number; + var back:Number; + var limitBack:uint; + var i:uint; + if ((((((subGeomInd > 0)) && (this._MaterialsSubGeometries))) && ((this._MaterialsSubGeometries.length > 0)))){ + subGeom = this._MaterialsSubGeometries[subGeomInd].subGeometry; + uvs = this._MaterialsSubGeometries[subGeomInd].uvs; + vertices = this._MaterialsSubGeometries[subGeomInd].vertices; + indices = this._MaterialsSubGeometries[subGeomInd].indices; + normals = this._MaterialsSubGeometries[subGeomInd].normals; + } else { + subGeom = this._subGeometry; + uvs = this._uvs; + vertices = this._vertices; + indices = this._indices; + normals = this._normals; + }; + if ((vertices.length + 9) > this.LIMIT){ + subGeom.updateVertexData(vertices); + subGeom.updateIndexData(indices); + subGeom.updateUVData(uvs); + if (this._smoothSurface){ + subGeom.updateVertexNormalData(normals); + }; + this.geometry.addSubGeometry(subGeom); + if ((((((subGeomInd > 0)) && (this._MaterialsSubGeometries))) && (this._MaterialsSubGeometries[subGeomInd].subGeometry))){ + this.subMeshes[(this.subMeshes.length - 1)].material = this._MaterialsSubGeometries[subGeomInd].material; + }; + subGeom = new SubGeometry(); + subGeom.autoDeriveVertexTangents = true; + if (((this._MaterialsSubGeometries) && ((this._MaterialsSubGeometries.length > 0)))){ + this._MaterialsSubGeometries[subGeomInd].subGeometry = subGeom; + uvs = new Vector.(); + vertices = new Vector.(); + indices = new Vector.(); + normals = new Vector.(); + this._MaterialsSubGeometries[subGeomInd].uvs = uvs; + this._MaterialsSubGeometries[subGeomInd].indices = indices; + if (this._smoothSurface){ + this._MaterialsSubGeometries[subGeomInd].normals = normals; + } else { + subGeom.autoDeriveVertexNormals = true; + }; + if (subGeomInd == 0){ + this._subGeometry = subGeom; + this._uvs = uvs; + this._vertices = vertices; + this._indices = indices; + this._normals = normals; + }; + } else { + this._subGeometry = subGeom; + this._uvs = new Vector.(); + this._vertices = new Vector.(); + this._indices = new Vector.(); + this._normals = new Vector.(); + uvs = this._uvs; + vertices = this._vertices; + indices = this._indices; + normals = this._normals; + }; + }; + if (this._smoothSurface){ + indlength = indices.length; + this.calcNormal(v0, v1, v2); + if (indlength > 0){ + back = (indlength - this._maxIndProfile); + limitBack = ((back)<0) ? 0 : back; + i = (indlength - 1); + for (;i > limitBack;i--) { + ind = indices[i]; + vind = (ind * 3); + vindy = (vind + 1); + vindz = (vind + 2); + uvind = (ind * 2); + uvindV = (uvind + 1); + if (((((bv0) && (bv1))) && (bv2))){ + break; + }; + if (((((((!(bv0)) && ((vertices[vind] == v0.x)))) && ((vertices[vindy] == v0.y)))) && ((vertices[vindz] == v0.z)))){ + this._normalTmp.x = normals[vind]; + this._normalTmp.y = normals[vindy]; + this._normalTmp.z = normals[vindz]; + ab = Vector3D.angleBetween(this._normalTmp, this._normal0); + if (ab < this.MAXRAD){ + this._normal0.x = ((this._normalTmp.x + this._normal0.x) * 0.5); + this._normal0.y = ((this._normalTmp.y + this._normal0.y) * 0.5); + this._normal0.z = ((this._normalTmp.z + this._normal0.z) * 0.5); + if ((((uvs[uvind] == uv0.u)) && ((uvs[uvindV] == uv0.v)))){ + bv0 = true; + ind0 = ind; + continue; + }; + }; + }; + if (((((((!(bv1)) && ((vertices[vind] == v1.x)))) && ((vertices[vindy] == v1.y)))) && ((vertices[vindz] == v1.z)))){ + this._normalTmp.x = normals[vind]; + this._normalTmp.y = normals[vindy]; + this._normalTmp.z = normals[vindz]; + ab = Vector3D.angleBetween(this._normalTmp, this._normal1); + if (ab < this.MAXRAD){ + this._normal1.x = ((this._normalTmp.x + this._normal1.x) * 0.5); + this._normal1.y = ((this._normalTmp.y + this._normal1.y) * 0.5); + this._normal1.z = ((this._normalTmp.z + this._normal1.z) * 0.5); + if ((((uvs[uvind] == uv1.u)) && ((uvs[uvindV] == uv1.v)))){ + bv1 = true; + ind1 = ind; + continue; + }; + }; + }; + if (((((((!(bv2)) && ((vertices[vind] == v2.x)))) && ((vertices[vindy] == v2.y)))) && ((vertices[vindz] == v2.z)))){ + this._normalTmp.x = normals[vind]; + this._normalTmp.y = normals[vindy]; + this._normalTmp.z = normals[vindz]; + ab = Vector3D.angleBetween(this._normalTmp, this._normal2); + if (ab < this.MAXRAD){ + this._normal2.x = ((this._normalTmp.x + this._normal2.x) * 0.5); + this._normal2.y = ((this._normalTmp.y + this._normal2.y) * 0.5); + this._normal2.z = ((this._normalTmp.z + this._normal2.z) * 0.5); + if ((((uvs[uvind] == uv2.u)) && ((uvs[uvindV] == uv2.v)))){ + bv2 = true; + ind2 = ind; + }; + }; + }; + }; + }; + }; + if (!(bv0)){ + ind0 = (vertices.length / 3); + vertices.push(v0.x, v0.y, v0.z); + uvs.push(uv0.u, uv0.v); + if (this._smoothSurface){ + normals.push(this._normal0.x, this._normal0.y, this._normal0.z); + }; + }; + if (!(bv1)){ + ind1 = (vertices.length / 3); + vertices.push(v1.x, v1.y, v1.z); + uvs.push(uv1.u, uv1.v); + if (this._smoothSurface){ + normals.push(this._normal1.x, this._normal1.y, this._normal1.z); + }; + }; + if (!(bv2)){ + ind2 = (vertices.length / 3); + vertices.push(v2.x, v2.y, v2.z); + uvs.push(uv2.u, uv2.v); + if (this._smoothSurface){ + normals.push(this._normal2.x, this._normal2.y, this._normal2.z); + }; + }; + indices.push(ind0, ind1, ind2); + } + private function initHolders():void{ + this._uvarr = new Vector.(); + this._uva = new UV(0, 0); + this._uvb = new UV(0, 0); + this._uvc = new UV(0, 0); + this._uvd = new UV(0, 0); + this._va = new Vector3D(0, 0, 0); + this._vb = new Vector3D(0, 0, 0); + this._vc = new Vector3D(0, 0, 0); + this._vd = new Vector3D(0, 0, 0); + this._uvs = new Vector.(); + this._vertices = new Vector.(); + this._indices = new Vector.(); + this._normals = new Vector.(); + if (this._smoothSurface){ + this._normal0 = new Vector3D(0, 0, 0); + this._normal1 = new Vector3D(0, 0, 0); + this._normal2 = new Vector3D(0, 0, 0); + this._normalTmp = new Vector3D(0, 0, 0); + } else { + this._subGeometry.autoDeriveVertexNormals = true; + }; + this._subGeometry.autoDeriveVertexTangents = true; + if (((this._materials) && ((this._thickness > 0)))){ + this.initSubGeometryList(); + }; + } + private function buildThicknessPoints(aPoints:Vector., thickness:Number, prop1:String, prop2:String):Array{ + var i:int; + var pointResult:FourPoints; + var fourPoints:FourPoints; + var anchorFP:FourPoints; + var anchors:Array = []; + var lines:Array = []; + i = 0; + while (i < (aPoints.length - 1)) { + if ((((aPoints[i][prop1] == 0)) && ((aPoints[i][prop2] == 0)))){ + aPoints[i][prop1] = this.EPS; + }; + if (((!((aPoints[(i + 1)][prop2] == null))) && ((aPoints[i][prop2] == aPoints[(i + 1)][prop2])))){ + aPoints[(i + 1)][prop2] = (aPoints[(i + 1)][prop2] + this.EPS); + }; + if (((!((aPoints[i][prop1] == null))) && ((aPoints[i][prop1] == aPoints[(i + 1)][prop1])))){ + aPoints[(i + 1)][prop1] = (aPoints[(i + 1)][prop1] + this.EPS); + }; + anchors.push(this.defineAnchors(aPoints[i], aPoints[(i + 1)], thickness, prop1, prop2)); + i++; + }; + var totallength:int = anchors.length; + if (totallength > 1){ + i = 0; + while (i < totallength) { + if (i < totallength){ + pointResult = this.defineLines(i, anchors[i], anchors[(i + 1)], lines); + } else { + pointResult = this.defineLines(i, anchors[i], anchors[(i - 1)], lines); + }; + if (pointResult != null){ + lines.push(pointResult); + }; + i++; + }; + } else { + fourPoints = new FourPoints(); + anchorFP = anchors[0]; + fourPoints.pt1 = anchorFP.pt1; + fourPoints.pt2 = anchorFP.pt2; + fourPoints.pt3 = anchorFP.pt3; + fourPoints.pt4 = anchorFP.pt4; + lines = [fourPoints]; + }; + return (lines); + } + private function defineLines(index:int, point1:FourPoints, point2:FourPoints=null, lines:Array=null):FourPoints{ + var tmppt:FourPoints; + var fourPoints:FourPoints = new FourPoints(); + if (point2 == null){ + tmppt = lines[(index - 1)]; + fourPoints.pt1 = tmppt.pt3; + fourPoints.pt2 = tmppt.pt4; + fourPoints.pt3 = point1.pt3; + fourPoints.pt4 = point1.pt4; + return (fourPoints); + }; + var line1:Line = this.buildObjectLine(point1.pt1.x, point1.pt1.y, point1.pt3.x, point1.pt3.y); + var line2:Line = this.buildObjectLine(point1.pt2.x, point1.pt2.y, point1.pt4.x, point1.pt4.y); + var line3:Line = this.buildObjectLine(point2.pt1.x, point2.pt1.y, point2.pt3.x, point2.pt3.y); + var line4:Line = this.buildObjectLine(point2.pt2.x, point2.pt2.y, point2.pt4.x, point2.pt4.y); + var cross1:Point = this.lineIntersect(line3, line1); + var cross2:Point = this.lineIntersect(line2, line4); + if (((!((cross1 == null))) && (!((cross2 == null))))){ + if (index == 0){ + fourPoints.pt1 = point1.pt1; + fourPoints.pt2 = point1.pt2; + fourPoints.pt3 = cross1; + fourPoints.pt4 = cross2; + return (fourPoints); + }; + tmppt = lines[(index - 1)]; + fourPoints.pt1 = tmppt.pt3; + fourPoints.pt2 = tmppt.pt4; + fourPoints.pt3 = cross1; + fourPoints.pt4 = cross2; + return (fourPoints); + }; + return (null); + } + private function defineAnchors(base:Vector3D, baseEnd:Vector3D, thickness:Number, prop1:String, prop2:String):FourPoints{ + var angle:Number = ((Math.atan2((base[prop2] - baseEnd[prop2]), (base[prop1] - baseEnd[prop1])) * 180) / Math.PI); + angle = (angle - 270); + var angle2:Number = (angle + 180); + var fourPoints:FourPoints = new FourPoints(); + fourPoints.pt1 = new Point(base[prop1], base[prop2]); + fourPoints.pt2 = new Point(base[prop1], base[prop2]); + fourPoints.pt3 = new Point(baseEnd[prop1], baseEnd[prop2]); + fourPoints.pt4 = new Point(baseEnd[prop1], baseEnd[prop2]); + var radius:Number = (thickness * 0.5); + fourPoints.pt1.x = (fourPoints.pt1.x + (Math.cos(((-(angle) / 180) * Math.PI)) * radius)); + fourPoints.pt1.y = (fourPoints.pt1.y + (Math.sin(((angle / 180) * Math.PI)) * radius)); + fourPoints.pt2.x = (fourPoints.pt2.x + (Math.cos(((-(angle2) / 180) * Math.PI)) * radius)); + fourPoints.pt2.y = (fourPoints.pt2.y + (Math.sin(((angle2 / 180) * Math.PI)) * radius)); + fourPoints.pt3.x = (fourPoints.pt3.x + (Math.cos(((-(angle) / 180) * Math.PI)) * radius)); + fourPoints.pt3.y = (fourPoints.pt3.y + (Math.sin(((angle / 180) * Math.PI)) * radius)); + fourPoints.pt4.x = (fourPoints.pt4.x + (Math.cos(((-(angle2) / 180) * Math.PI)) * radius)); + fourPoints.pt4.y = (fourPoints.pt4.y + (Math.sin(((angle2 / 180) * Math.PI)) * radius)); + return (fourPoints); + } + private function buildObjectLine(origX:Number, origY:Number, endX:Number, endY:Number):Line{ + var line:Line = new Line(); + line.ax = origX; + line.ay = origY; + line.bx = (endX - origX); + line.by = (endY - origY); + return (line); + } + private function lineIntersect(Line1:Line, Line2:Line):Point{ + Line1.bx = ((Line1.bx)==0) ? this.EPS : Line1.bx; + Line2.bx = ((Line2.bx)==0) ? this.EPS : Line2.bx; + var a1:Number = (Line1.by / Line1.bx); + var b1:Number = (Line1.ay - (a1 * Line1.ax)); + var a2:Number = (Line2.by / Line2.bx); + var b2:Number = (Line2.ay - (a2 * Line2.ax)); + var nzero:Number = (((a1 - a2))==0) ? this.EPS : (a1 - a2); + var ptx:Number = ((b2 - b1) / nzero); + var pty:Number = ((a1 * ptx) + b1); + if (((isFinite(ptx)) && (isFinite(pty)))){ + return (new Point(ptx, pty)); + }; + trace("infinity"); + return (null); + } + private function invalidateGeometry():void{ + this._geomDirty = true; + invalidateBounds(); + } + private function initSubGeometryList():void{ + var i:uint; + var sglist:SubGeometryList; + var sg:SubGeometry; + var prop:String; + if (!(this._MaterialsSubGeometries)){ + this._MaterialsSubGeometries = new Vector.(); + }; + i = 0; + while (i < 6) { + sglist = new SubGeometryList(); + this._MaterialsSubGeometries.push(sglist); + sglist.id = i; + if (i == 0){ + sglist.subGeometry = this._subGeometry; + sglist.uvs = this._uvs; + sglist.vertices = this._vertices; + sglist.indices = this._indices; + sglist.normals = this._normals; + } else { + sglist.uvs = new Vector.(); + sglist.vertices = new Vector.(); + sglist.indices = new Vector.(); + sglist.normals = new Vector.(); + }; + i++; + }; + i = 1; + while (i < 6) { + switch (i){ + case 1: + prop = "back"; + break; + case 2: + prop = "left"; + break; + case 3: + prop = "right"; + break; + case 4: + prop = "top"; + break; + case 5: + prop = "bottom"; + break; + default: + prop = "front"; + }; + if (((this._materials[prop]) && ((this._MaterialsSubGeometries[i].subGeometry == null)))){ + sglist = this._MaterialsSubGeometries[i]; + sg = new SubGeometry(); + sglist.material = this._materials[prop]; + sglist.subGeometry = sg; + sg.autoDeriveVertexNormals = true; + sg.autoDeriveVertexTangents = true; + }; + i++; + }; + } + + } +}//package away3d.extrusions + +import __AS3__.vec.*; +import away3d.core.base.*; +import away3d.materials.*; +import flash.geom.*; + +class SubGeometryList { + + public var id:uint; + public var uvs:Vector.; + public var vertices:Vector.; + public var normals:Vector.; + public var indices:Vector.; + public var subGeometry:SubGeometry; + public var material:MaterialBase; + + public function SubGeometryList(){ + } +} +class RenderSide { + + public var top:Boolean; + public var bottom:Boolean; + public var right:Boolean; + public var left:Boolean; + public var front:Boolean; + public var back:Boolean; + + public function RenderSide(){ + } +} +class Line { + + public var ax:Number; + public var ay:Number; + public var bx:Number; + public var by:Number; + + public function Line(){ + } +} +class FourPoints { + + public var pt1:Point; + public var pt2:Point; + public var pt3:Point; + public var pt4:Point; + + public function FourPoints(){ + } +} diff --git a/flash_decompiled/watchdog/away3d/filters/BloomFilter3D.as b/flash_decompiled/watchdog/away3d/filters/BloomFilter3D.as new file mode 100644 index 0000000..030fb8f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/BloomFilter3D.as @@ -0,0 +1,67 @@ +package away3d.filters { + import away3d.filters.tasks.*; + import flash.display.*; + import flash.display3D.textures.*; + import away3d.core.managers.*; + + public class BloomFilter3D extends Filter3DBase { + + private var _brightPassTask:Filter3DBrightPassTask; + private var _vBlurTask:Filter3DVBlurTask; + private var _hBlurTask:Filter3DHBlurTask; + private var _compositeTask:Filter3DCompositeTask; + + public function BloomFilter3D(blurX:uint=15, blurY:uint=15, threshold:Number=0.75, exposure:Number=3, quality:int=3){ + super(); + this._brightPassTask = new Filter3DBrightPassTask(threshold); + this._hBlurTask = new Filter3DHBlurTask(blurX); + this._vBlurTask = new Filter3DVBlurTask(blurY); + this._compositeTask = new Filter3DCompositeTask(BlendMode.ADD, exposure); + if (quality > 4){ + quality = 4; + } else { + if (quality < 0){ + quality = 0; + }; + }; + this._hBlurTask.textureScale = (4 - quality); + this._vBlurTask.textureScale = (4 - quality); + addTask(this._brightPassTask); + addTask(this._hBlurTask); + addTask(this._vBlurTask); + addTask(this._compositeTask); + } + override public function setRenderTargets(mainTarget:Texture, stage3DProxy:Stage3DProxy):void{ + this._brightPassTask.target = this._hBlurTask.getMainInputTexture(stage3DProxy); + this._hBlurTask.target = this._vBlurTask.getMainInputTexture(stage3DProxy); + this._vBlurTask.target = this._compositeTask.getMainInputTexture(stage3DProxy); + this._compositeTask.overlayTexture = this._brightPassTask.getMainInputTexture(stage3DProxy); + super.setRenderTargets(mainTarget, stage3DProxy); + } + public function get exposure():Number{ + return (this._compositeTask.exposure); + } + public function set exposure(value:Number):void{ + this._compositeTask.exposure = value; + } + public function get blurX():uint{ + return (this._hBlurTask.amount); + } + public function set blurX(value:uint):void{ + this._hBlurTask.amount = value; + } + public function get blurY():uint{ + return (this._vBlurTask.amount); + } + public function set blurY(value:uint):void{ + this._vBlurTask.amount = value; + } + public function get threshold():Number{ + return (this._brightPassTask.threshold); + } + public function set threshold(value:Number):void{ + this._brightPassTask.threshold = value; + } + + } +}//package away3d.filters diff --git a/flash_decompiled/watchdog/away3d/filters/DepthOfFieldFilter3D.as b/flash_decompiled/watchdog/away3d/filters/DepthOfFieldFilter3D.as new file mode 100644 index 0000000..d7b1cec --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/DepthOfFieldFilter3D.as @@ -0,0 +1,72 @@ +package away3d.filters { + import away3d.filters.tasks.*; + import away3d.containers.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.geom.*; + import flash.display3D.textures.*; + + public class DepthOfFieldFilter3D extends Filter3DBase { + + private var _focusTarget:ObjectContainer3D; + private var _hDofTask:Filter3DHDepthOfFFieldTask; + private var _vDofTask:Filter3DVDepthOfFFieldTask; + + public function DepthOfFieldFilter3D(maxBlurX:uint=3, maxBlurY:uint=3, stepSize:int=-1){ + super(); + this._hDofTask = new Filter3DHDepthOfFFieldTask(maxBlurX, stepSize); + this._vDofTask = new Filter3DVDepthOfFFieldTask(maxBlurY, stepSize); + addTask(this._hDofTask); + addTask(this._vDofTask); + } + public function get stepSize():int{ + return (this._hDofTask.stepSize); + } + public function set stepSize(value:int):void{ + this._vDofTask.stepSize = (this._hDofTask.stepSize = value); + } + public function get focusTarget():ObjectContainer3D{ + return (this._focusTarget); + } + public function set focusTarget(value:ObjectContainer3D):void{ + this._focusTarget = value; + } + public function get focusDistance():Number{ + return (this._hDofTask.focusDistance); + } + public function set focusDistance(value:Number):void{ + this._hDofTask.focusDistance = (this._vDofTask.focusDistance = value); + } + public function get range():Number{ + return (this._hDofTask.range); + } + public function set range(value:Number):void{ + this._vDofTask.range = (this._hDofTask.range = value); + } + public function get maxBlurX():uint{ + return (this._hDofTask.maxBlur); + } + public function set maxBlurX(value:uint):void{ + this._hDofTask.maxBlur = value; + } + public function get maxBlurY():uint{ + return (this._vDofTask.maxBlur); + } + public function set maxBlurY(value:uint):void{ + this._vDofTask.maxBlur = value; + } + override public function update(stage:Stage3DProxy, camera:Camera3D):void{ + if (this._focusTarget){ + this.updateFocus(camera); + }; + } + private function updateFocus(camera:Camera3D):void{ + var target:Vector3D = camera.inverseSceneTransform.transformVector(this._focusTarget.scenePosition); + this._hDofTask.focusDistance = (this._vDofTask.focusDistance = target.z); + } + override public function setRenderTargets(mainTarget:Texture, stage3DProxy:Stage3DProxy):void{ + this._hDofTask.target = this._vDofTask.getMainInputTexture(stage3DProxy); + } + + } +}//package away3d.filters diff --git a/flash_decompiled/watchdog/away3d/filters/Filter3DBase.as b/flash_decompiled/watchdog/away3d/filters/Filter3DBase.as new file mode 100644 index 0000000..e8bc734 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/Filter3DBase.as @@ -0,0 +1,68 @@ +package away3d.filters { + import __AS3__.vec.*; + import away3d.filters.tasks.*; + import flash.display3D.textures.*; + import away3d.core.managers.*; + import away3d.cameras.*; + + public class Filter3DBase { + + private var _tasks:Vector.; + private var _requireDepthRender:Boolean; + private var _textureWidth:int; + private var _textureHeight:int; + + public function Filter3DBase(){ + super(); + this._tasks = new Vector.(); + } + public function get requireDepthRender():Boolean{ + return (this._requireDepthRender); + } + protected function addTask(filter:Filter3DTaskBase):void{ + this._tasks.push(filter); + this._requireDepthRender = ((this._requireDepthRender) || (filter.requireDepthRender)); + } + public function get tasks():Vector.{ + return (this._tasks); + } + public function getMainInputTexture(stage3DProxy:Stage3DProxy):Texture{ + return (this._tasks[0].getMainInputTexture(stage3DProxy)); + } + public function get textureWidth():int{ + return (this._textureWidth); + } + public function set textureWidth(value:int):void{ + this._textureWidth = value; + var i:int; + while (i < this._tasks.length) { + this._tasks[i].textureWidth = value; + i++; + }; + } + public function get textureHeight():int{ + return (this._textureHeight); + } + public function set textureHeight(value:int):void{ + this._textureHeight = value; + var i:int; + while (i < this._tasks.length) { + this._tasks[i].textureHeight = value; + i++; + }; + } + public function setRenderTargets(mainTarget:Texture, stage3DProxy:Stage3DProxy):void{ + this._tasks[(this._tasks.length - 1)].target = mainTarget; + } + public function dispose():void{ + var i:int; + while (i < this._tasks.length) { + this._tasks[i].dispose(); + i++; + }; + } + public function update(stage:Stage3DProxy, camera:Camera3D):void{ + } + + } +}//package away3d.filters diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DBrightPassTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DBrightPassTask.as new file mode 100644 index 0000000..1201562 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DBrightPassTask.as @@ -0,0 +1,34 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + import flash.display3D.*; + import away3d.core.managers.*; + + public class Filter3DBrightPassTask extends Filter3DTaskBase { + + private var _brightPassData:Vector.; + private var _threshold:Number; + + public function Filter3DBrightPassTask(threshold:Number=0.75){ + super(); + this._threshold = threshold; + this._brightPassData = Vector.([threshold, (1 / (1 - threshold)), 0, 0]); + } + public function get threshold():Number{ + return (this._threshold); + } + public function set threshold(value:Number):void{ + this._threshold = value; + this._brightPassData[0] = value; + this._brightPassData[1] = (1 / (1 - value)); + } + override protected function getFragmentCode():String{ + return (((((((("tex ft0, v0, fs0 <2d,linear,clamp>\t\n" + "dp3 ft1.x, ft0.xyz, ft0.xyz\t\n") + "sqt ft1.x, ft1.x\t\t\t\t\n") + "sub ft1.y, ft1.x, fc0.x\t\t\n") + "mul ft1.y, ft1.y, fc0.y\t\t\n") + "sat ft1.y, ft1.y\t\t\t\t\n") + "mul ft0.xyz, ft0.xyz, ft1.y\t\n") + "mov oc, ft0\t\t\t\t\t\n")); + } + override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void{ + stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._brightPassData, 1); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DCompositeTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DCompositeTask.as new file mode 100644 index 0000000..f6d82dc --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DCompositeTask.as @@ -0,0 +1,67 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import flash.display3D.textures.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + + public class Filter3DCompositeTask extends Filter3DTaskBase { + + private var _data:Vector.; + private var _overlayTexture:TextureBase; + private var _blendMode:String; + + public function Filter3DCompositeTask(blendMode:String, exposure:Number=1){ + super(); + this._data = Vector.([exposure, 0, 0, 0]); + this._blendMode = blendMode; + } + public function get overlayTexture():TextureBase{ + return (this._overlayTexture); + } + public function set overlayTexture(value:TextureBase):void{ + this._overlayTexture = value; + } + public function get exposure():Number{ + return (this._data[0]); + } + public function set exposure(value:Number):void{ + this._data[0] = value; + } + override protected function getFragmentCode():String{ + var code:String; + var op:String; + code = (("tex ft0, v0, fs0 <2d,linear,clamp>\t\n" + "tex ft1, v0, fs1 <2d,linear,clamp>\t\n") + "mul ft0, ft0, fc0.x\t\t\t\t\n"); + switch (this._blendMode){ + case "multiply": + op = "mul"; + break; + case "add": + op = "add"; + break; + case "subtract": + op = "sub"; + break; + case "normal": + op = "mov"; + break; + default: + throw (new Error("Unknown blend mode")); + }; + if (op != "mov"){ + code = (code + (op + " oc, ft0, ft1\t\t\t\t\t\n")); + } else { + code = (code + "mov oc, ft0\t\t\t\t\t\t\n"); + }; + return (code); + } + override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void{ + stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 1); + stage3DProxy.setTextureAt(1, this._overlayTexture); + } + override public function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setTextureAt(1, null); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHBlurTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHBlurTask.as new file mode 100644 index 0000000..7865174 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHBlurTask.as @@ -0,0 +1,79 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + + public class Filter3DHBlurTask extends Filter3DTaskBase { + + private static var MAX_AUTO_SAMPLES:int = 15; + + private var _amount:uint; + private var _data:Vector.; + private var _stepSize:int = 1; + private var _realStepSize:Number; + + public function Filter3DHBlurTask(amount:uint, stepSize:int=-1){ + super(); + this._amount = amount; + this._data = Vector.([0, 0, 0, 1]); + this.stepSize = stepSize; + } + public function get amount():uint{ + return (this._amount); + } + public function set amount(value:uint):void{ + if (value == this._amount){ + return; + }; + this._amount = value; + invalidateProgram3D(); + this.updateBlurData(); + this.calculateStepSize(); + } + public function get stepSize():int{ + return (this._stepSize); + } + public function set stepSize(value:int):void{ + if (value == this._stepSize){ + return; + }; + this._stepSize = value; + this.calculateStepSize(); + invalidateProgram3D(); + this.updateBlurData(); + } + override protected function getFragmentCode():String{ + var code:String; + var numSamples:int = 1; + code = ("mov ft0, v0\t\n" + "sub ft0.x, v0.x, fc0.x\n"); + code = (code + "tex ft1, ft0, fs0 <2d,nearest,clamp>\n"); + var x:Number = this._realStepSize; + while (x <= this._amount) { + code = (code + (("add ft0.x, ft0.x, fc0.y\t\n" + "tex ft2, ft0, fs0 <2d,nearest,clamp>\n") + "add ft1, ft1, ft2 \n")); + numSamples++; + x = (x + this._realStepSize); + }; + code = (code + "mul oc, ft1, fc0.z"); + this._data[2] = (1 / numSamples); + return (code); + } + override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void{ + stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 1); + } + override protected function updateTextures(stage:Stage3DProxy):void{ + super.updateTextures(stage); + this.updateBlurData(); + } + private function updateBlurData():void{ + var invW:Number = (1 / _textureWidth); + this._data[0] = ((this._amount * 0.5) * invW); + this._data[1] = (this._realStepSize * invW); + } + private function calculateStepSize():void{ + this._realStepSize = (((this._stepSize > 0)) ? this._stepSize : (((this._amount > MAX_AUTO_SAMPLES)) ? (this._amount / MAX_AUTO_SAMPLES) : 1)); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHDepthOfFFieldTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHDepthOfFFieldTask.as new file mode 100644 index 0000000..d3c3088 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DHDepthOfFFieldTask.as @@ -0,0 +1,103 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + + public class Filter3DHDepthOfFFieldTask extends Filter3DTaskBase { + + private static var MAX_AUTO_SAMPLES:int = 10; + + private var _maxBlur:uint; + private var _data:Vector.; + private var _focusDistance:Number; + private var _range:Number = 1000; + private var _stepSize:int; + private var _realStepSize:Number; + + public function Filter3DHDepthOfFFieldTask(maxBlur:uint, stepSize:int=-1){ + super(true); + this._maxBlur = maxBlur; + this._data = Vector.([0, 0, 0, this._focusDistance, 0, 0, 0, 0, this._range, 0, 0, 0, 1, (1 / 0xFF), (1 / 65025), (1 / 16581375)]); + this.stepSize = stepSize; + } + public function get stepSize():int{ + return (this._stepSize); + } + public function set stepSize(value:int):void{ + if (value == this._stepSize){ + return; + }; + this._stepSize = value; + this.calculateStepSize(); + invalidateProgram3D(); + this.updateBlurData(); + } + public function get range():Number{ + return (this._range); + } + public function set range(value:Number):void{ + this._range = value; + this._data[8] = value; + } + public function get focusDistance():Number{ + return (this._focusDistance); + } + public function set focusDistance(value:Number):void{ + this._data[3] = (this._focusDistance = value); + } + public function get maxBlur():uint{ + return (this._maxBlur); + } + public function set maxBlur(value:uint):void{ + if (this._maxBlur == value){ + return; + }; + this._maxBlur = value; + invalidateProgram3D(); + this.updateBlurData(); + this.calculateStepSize(); + } + override protected function getFragmentCode():String{ + var code:String; + var numSamples:uint = 1; + code = (((((((("tex ft0, v0, fs1 <2d, nearest>\t\n" + "dp4 ft1.z, ft0, fc3\t\t\t\t\n") + "sub ft1.z, ft1.z, fc1.z\t\t\t\n") + "div ft1.z, fc1.w, ft1.z\t\t\t\n") + "sub ft1.z, ft1.z, fc0.w\t\t\t\n") + "div ft1.z, ft1.z, fc2.x\t\t\t\n") + "abs ft1.z, ft1.z\t\t\t\t\t\n") + "sat ft1.z, ft1.z\t\t\t\t\t\n") + "mul ft6.xy, ft1.z, fc0.xy\t\t\t\n"); + code = (code + (("mov ft0, v0\t\n" + "sub ft0.x, ft0.x, ft6.x\n") + "tex ft1, ft0, fs0 <2d,linear,clamp>\n")); + var x:Number = this._realStepSize; + while (x <= this._maxBlur) { + code = (code + (("add ft0.x, ft0.x, ft6.y\t\n" + "tex ft2, ft0, fs0 <2d,linear,clamp>\n") + "add ft1, ft1, ft2 \n")); + numSamples++; + x = (x + this._realStepSize); + }; + code = (code + "mul oc, ft1, fc0.z"); + this._data[2] = (1 / numSamples); + return (code); + } + override public function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, depthTexture:Texture):void{ + var context:Context3D = stage3DProxy._context3D; + var n:Number = camera.lens.near; + var f:Number = camera.lens.far; + this._data[6] = (f / (f - n)); + this._data[7] = (-(n) * this._data[6]); + stage3DProxy.setTextureAt(1, depthTexture); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 4); + } + override public function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setTextureAt(1, null); + } + override protected function updateTextures(stage:Stage3DProxy):void{ + super.updateTextures(stage); + this.updateBlurData(); + } + private function updateBlurData():void{ + var invW:Number = (1 / _textureWidth); + this._data[0] = ((this._maxBlur * 0.5) * invW); + this._data[1] = (this._realStepSize * invW); + } + private function calculateStepSize():void{ + this._realStepSize = (((this._stepSize > 0)) ? this._stepSize : (((this._maxBlur > MAX_AUTO_SAMPLES)) ? (this._maxBlur / MAX_AUTO_SAMPLES) : 1)); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DTaskBase.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DTaskBase.as new file mode 100644 index 0000000..4e6b873 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DTaskBase.as @@ -0,0 +1,121 @@ +package away3d.filters.tasks { + import flash.display3D.textures.*; + import away3d.core.managers.*; + import com.adobe.utils.*; + import away3d.debug.*; + import flash.display3D.*; + import away3d.errors.*; + import away3d.cameras.*; + + public class Filter3DTaskBase { + + protected var _mainInputTexture:Texture; + protected var _scaledTextureWidth:int = -1; + protected var _scaledTextureHeight:int = -1; + protected var _textureWidth:int = -1; + protected var _textureHeight:int = -1; + private var _textureDimensionsInvalid:Boolean = true; + private var _program3DInvalid:Boolean = true; + private var _program3D:Program3D; + private var _target:Texture; + private var _requireDepthRender:Boolean; + protected var _textureScale:int = 0; + + public function Filter3DTaskBase(requireDepthRender:Boolean=false){ + super(); + this._requireDepthRender = requireDepthRender; + } + public function get textureScale():int{ + return (this._textureScale); + } + public function set textureScale(value:int):void{ + if (this._textureScale == value){ + return; + }; + this._textureScale = value; + this._scaledTextureWidth = (this._textureWidth >> this._textureScale); + this._scaledTextureHeight = (this._textureHeight >> this._textureScale); + this._textureDimensionsInvalid = true; + } + public function get target():Texture{ + return (this._target); + } + public function set target(value:Texture):void{ + this._target = value; + } + public function get textureWidth():int{ + return (this._textureWidth); + } + public function set textureWidth(value:int):void{ + if (this._textureWidth == value){ + return; + }; + this._textureWidth = value; + this._scaledTextureWidth = (this._textureWidth >> this._textureScale); + this._textureDimensionsInvalid = true; + } + public function get textureHeight():int{ + return (this._textureHeight); + } + public function set textureHeight(value:int):void{ + if (this._textureHeight == value){ + return; + }; + this._textureHeight = value; + this._scaledTextureHeight = (this._textureHeight >> this._textureScale); + this._textureDimensionsInvalid = true; + } + public function getMainInputTexture(stage:Stage3DProxy):Texture{ + if (this._textureDimensionsInvalid){ + this.updateTextures(stage); + }; + return (this._mainInputTexture); + } + public function dispose():void{ + if (this._mainInputTexture){ + this._mainInputTexture.dispose(); + }; + if (this._program3D){ + this._program3D.dispose(); + }; + } + protected function invalidateProgram3D():void{ + this._program3DInvalid = true; + } + protected function updateProgram3D(stage:Stage3DProxy):void{ + if (this._program3D){ + this._program3D.dispose(); + }; + this._program3D = stage.context3D.createProgram(); + this._program3D.upload(new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.VERTEX, this.getVertexCode(), Debug.active), new AGALMiniAssembler(Debug.active).assemble(Context3DProgramType.FRAGMENT, this.getFragmentCode(), Debug.active)); + this._program3DInvalid = false; + } + protected function getVertexCode():String{ + return (("mov op, va0\n" + "mov v0, va1")); + } + protected function getFragmentCode():String{ + throw (new AbstractMethodError()); + } + protected function updateTextures(stage:Stage3DProxy):void{ + if (this._mainInputTexture){ + this._mainInputTexture.dispose(); + }; + this._mainInputTexture = stage.context3D.createTexture(this._scaledTextureWidth, this._scaledTextureHeight, Context3DTextureFormat.BGRA, true); + this._textureDimensionsInvalid = false; + } + public function getProgram3D(stage3DProxy:Stage3DProxy):Program3D{ + if (this._program3DInvalid){ + this.updateProgram3D(stage3DProxy); + }; + return (this._program3D); + } + public function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, depthTexture:Texture):void{ + } + public function deactivate(stage3DProxy:Stage3DProxy):void{ + } + public function get requireDepthRender():Boolean{ + return (this._requireDepthRender); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVBlurTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVBlurTask.as new file mode 100644 index 0000000..7a43a77 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVBlurTask.as @@ -0,0 +1,79 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + + public class Filter3DVBlurTask extends Filter3DTaskBase { + + private static var MAX_AUTO_SAMPLES:int = 15; + + private var _amount:uint; + private var _data:Vector.; + private var _stepSize:int = 1; + private var _realStepSize:Number; + + public function Filter3DVBlurTask(amount:uint, stepSize:int=-1){ + super(); + this._amount = amount; + this._data = Vector.([0, 0, 0, 1]); + this.stepSize = stepSize; + } + public function get amount():uint{ + return (this._amount); + } + public function set amount(value:uint):void{ + if (value == this._amount){ + return; + }; + this._amount = value; + invalidateProgram3D(); + this.updateBlurData(); + } + public function get stepSize():int{ + return (this._stepSize); + } + public function set stepSize(value:int):void{ + if (value == this._stepSize){ + return; + }; + this._stepSize = value; + this.calculateStepSize(); + invalidateProgram3D(); + this.updateBlurData(); + } + override protected function getFragmentCode():String{ + var code:String; + var numSamples:int = 1; + code = ("mov ft0, v0\t\n" + "sub ft0.y, v0.y, fc0.x\n"); + code = (code + "tex ft1, ft0, fs0 <2d,nearest,clamp>\n"); + var x:Number = this._realStepSize; + while (x <= this._amount) { + code = (code + "add ft0.y, ft0.y, fc0.y\t\n"); + code = (code + ("tex ft2, ft0, fs0 <2d,nearest,clamp>\n" + "add ft1, ft1, ft2 \n")); + numSamples++; + x = (x + this._realStepSize); + }; + code = (code + "mul oc, ft1, fc0.z"); + this._data[2] = (1 / numSamples); + return (code); + } + override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void{ + stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 1); + } + override protected function updateTextures(stage:Stage3DProxy):void{ + super.updateTextures(stage); + this.updateBlurData(); + } + private function updateBlurData():void{ + var invH:Number = (1 / _textureHeight); + this._data[0] = ((this._amount * 0.5) * invH); + this._data[1] = (this._realStepSize * invH); + } + private function calculateStepSize():void{ + this._realStepSize = (((this._stepSize > 0)) ? this._stepSize : (((this._amount > MAX_AUTO_SAMPLES)) ? (this._amount / MAX_AUTO_SAMPLES) : 1)); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVDepthOfFFieldTask.as b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVDepthOfFFieldTask.as new file mode 100644 index 0000000..a3db42c --- /dev/null +++ b/flash_decompiled/watchdog/away3d/filters/tasks/Filter3DVDepthOfFFieldTask.as @@ -0,0 +1,103 @@ +package away3d.filters.tasks { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + + public class Filter3DVDepthOfFFieldTask extends Filter3DTaskBase { + + private static var MAX_AUTO_SAMPLES:int = 10; + + private var _maxBlur:uint; + private var _data:Vector.; + private var _focusDistance:Number; + private var _range:Number = 1000; + private var _stepSize:int; + private var _realStepSize:Number; + + public function Filter3DVDepthOfFFieldTask(maxBlur:uint, stepSize:int=-1){ + super(true); + this._maxBlur = maxBlur; + this._data = Vector.([0, 0, 0, this._focusDistance, 0, 0, 0, 0, this._range, 0, 0, 0, 1, (1 / 0xFF), (1 / 65025), (1 / 16581375)]); + this.stepSize = stepSize; + } + public function get stepSize():int{ + return (this._stepSize); + } + public function set stepSize(value:int):void{ + if (value == this._stepSize){ + return; + }; + this._stepSize = value; + this.calculateStepSize(); + invalidateProgram3D(); + this.updateBlurData(); + } + public function get range():Number{ + return (this._range); + } + public function set range(value:Number):void{ + this._range = value; + this._data[8] = value; + } + public function get focusDistance():Number{ + return (this._focusDistance); + } + public function set focusDistance(value:Number):void{ + this._data[3] = (this._focusDistance = value); + } + public function get maxBlur():uint{ + return (this._maxBlur); + } + public function set maxBlur(value:uint):void{ + if (this._maxBlur == value){ + return; + }; + this._maxBlur = value; + invalidateProgram3D(); + this.updateBlurData(); + this.calculateStepSize(); + } + override protected function getFragmentCode():String{ + var code:String; + var numSamples:uint = 1; + code = (((((((("tex ft0, v0, fs1 <2d, nearest>\t\n" + "dp4 ft1.z, ft0, fc3\t\t\t\t\n") + "sub ft1.z, ft1.z, fc1.z\t\t\t\n") + "div ft1.z, fc1.w, ft1.z\t\t\t\n") + "sub ft1.z, ft1.z, fc0.w\t\t\t\n") + "div ft1.z, ft1.z, fc2.x\t\t\t\n") + "abs ft1.z, ft1.z\t\t\t\t\t\n") + "sat ft1.z, ft1.z\t\t\t\t\t\n") + "mul ft6.xy, ft1.z, fc0.xy\t\t\t\n"); + code = (code + (("mov ft0, v0\t\n" + "sub ft0.y, ft0.y, ft6.x\n") + "tex ft1, ft0, fs0 <2d,linear,clamp>\n")); + var y:Number = this._realStepSize; + while (y <= this._maxBlur) { + code = (code + (("add ft0.y, ft0.y, ft6.y\t\n" + "tex ft2, ft0, fs0 <2d,linear,clamp>\n") + "add ft1, ft1, ft2 \n")); + numSamples++; + y = (y + this._realStepSize); + }; + code = (code + "mul oc, ft1, fc0.z"); + this._data[2] = (1 / numSamples); + return (code); + } + override public function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, depthTexture:Texture):void{ + var context:Context3D = stage3DProxy._context3D; + var n:Number = camera.lens.near; + var f:Number = camera.lens.far; + this._data[6] = (f / (f - n)); + this._data[7] = (-(n) * this._data[6]); + stage3DProxy.setTextureAt(1, depthTexture); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 4); + } + override public function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setTextureAt(1, null); + } + override protected function updateTextures(stage:Stage3DProxy):void{ + super.updateTextures(stage); + this.updateBlurData(); + } + private function updateBlurData():void{ + var invH:Number = (1 / _textureHeight); + this._data[0] = ((this._maxBlur * 0.5) * invH); + this._data[1] = (this._realStepSize * invH); + } + private function calculateStepSize():void{ + this._realStepSize = (((this._stepSize > 0)) ? this._stepSize : (((this._maxBlur > MAX_AUTO_SAMPLES)) ? (this._maxBlur / MAX_AUTO_SAMPLES) : 1)); + } + + } +}//package away3d.filters.tasks diff --git a/flash_decompiled/watchdog/away3d/library/assets/AssetType.as b/flash_decompiled/watchdog/away3d/library/assets/AssetType.as new file mode 100644 index 0000000..eefcbbd --- /dev/null +++ b/flash_decompiled/watchdog/away3d/library/assets/AssetType.as @@ -0,0 +1,19 @@ +package away3d.library.assets { + + public class AssetType { + + public static const ENTITY:String = "entity"; + public static const MESH:String = "mesh"; + public static const GEOMETRY:String = "geometry"; + public static const SKELETON:String = "skeleton"; + public static const SKELETON_POSE:String = "skeletonPose"; + public static const CONTAINER:String = "container"; + public static const TEXTURE:String = "texture"; + public static const MATERIAL:String = "material"; + public static const ANIMATION_SET:String = "animationSet"; + public static const ANIMATION_STATE:String = "animationState"; + public static const ANIMATION_NODE:String = "animationNode"; + public static const STATE_TRANSITION:String = "stateTransition"; + + } +}//package away3d.library.assets diff --git a/flash_decompiled/watchdog/away3d/library/assets/IAsset.as b/flash_decompiled/watchdog/away3d/library/assets/IAsset.as new file mode 100644 index 0000000..14191b9 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/library/assets/IAsset.as @@ -0,0 +1,16 @@ +package away3d.library.assets { + import flash.events.*; + + public interface IAsset extends IEventDispatcher { + + function get name():String; + function set name(_arg1:String):void; + function get assetNamespace():String; + function get assetType():String; + function get assetFullPath():Array; + function assetPathEquals(_arg1:String, _arg2:String):Boolean; + function resetAssetPath(_arg1:String, _arg2:String=null, _arg3:Boolean=true):void; + function dispose():void; + + } +}//package away3d.library.assets diff --git a/flash_decompiled/watchdog/away3d/library/assets/NamedAssetBase.as b/flash_decompiled/watchdog/away3d/library/assets/NamedAssetBase.as new file mode 100644 index 0000000..5565d80 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/library/assets/NamedAssetBase.as @@ -0,0 +1,63 @@ +package away3d.library.assets { + import away3d.events.*; + import flash.events.*; + + public class NamedAssetBase extends EventDispatcher { + + public static const DEFAULT_NAMESPACE:String = "default"; + + private var _originalName:String; + private var _namespace:String; + private var _name:String; + private var _full_path:Array; + + public function NamedAssetBase(name:String=null){ + super(); + if (name == null){ + name = "null"; + }; + this._name = name; + this._originalName = name; + this.updateFullPath(); + } + public function get originalName():String{ + return (this._originalName); + } + public function get name():String{ + return (this._name); + } + public function set name(val:String):void{ + var prev:String; + prev = this._name; + this._name = val; + if (this._name == null){ + this._name = "null"; + }; + this.updateFullPath(); + if (hasEventListener(AssetEvent.ASSET_RENAME)){ + dispatchEvent(new AssetEvent(AssetEvent.ASSET_RENAME, IAsset(this), prev)); + }; + } + public function get assetNamespace():String{ + return (this._namespace); + } + public function get assetFullPath():Array{ + return (this._full_path); + } + public function assetPathEquals(name:String, ns:String):Boolean{ + return ((((this._name == name)) && (((!(ns)) || ((this._namespace == ns)))))); + } + public function resetAssetPath(name:String, ns:String=null, overrideOriginal:Boolean=true):void{ + this._name = ((name) ? name : "null"); + this._namespace = ((ns) ? ns : DEFAULT_NAMESPACE); + if (overrideOriginal){ + this._originalName = this._name; + }; + this.updateFullPath(); + } + private function updateFullPath():void{ + this._full_path = [this._namespace, this._name]; + } + + } +}//package away3d.library.assets diff --git a/flash_decompiled/watchdog/away3d/lights/DirectionalLight.as b/flash_decompiled/watchdog/away3d/lights/DirectionalLight.as new file mode 100644 index 0000000..c930f54 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/DirectionalLight.as @@ -0,0 +1,119 @@ +package away3d.lights { + import flash.geom.*; + import away3d.core.partition.*; + import away3d.bounds.*; + import away3d.lights.shadowmaps.*; + import away3d.core.math.*; + import __AS3__.vec.*; + import away3d.core.base.*; + + public class DirectionalLight extends LightBase { + + private var _direction:Vector3D; + private var _tmpLookAt:Vector3D; + private var _sceneDirection:Vector3D; + private var _projAABBPoints:Vector.; + + public function DirectionalLight(xDir:Number=0, yDir:Number=-1, zDir:Number=1){ + super(); + this.direction = new Vector3D(xDir, yDir, zDir); + this._sceneDirection = new Vector3D(); + } + override protected function createEntityPartitionNode():EntityNode{ + return (new DirectionalLightNode(this)); + } + public function get sceneDirection():Vector3D{ + return (this._sceneDirection); + } + public function get direction():Vector3D{ + return (this._direction); + } + public function set direction(value:Vector3D):void{ + this._direction = value; + if (!(this._tmpLookAt)){ + this._tmpLookAt = new Vector3D(); + }; + this._tmpLookAt.x = (x + this._direction.x); + this._tmpLookAt.y = (y + this._direction.y); + this._tmpLookAt.z = (z + this._direction.z); + lookAt(this._tmpLookAt); + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new NullBounds()); + } + override protected function updateBounds():void{ + } + override protected function updateSceneTransform():void{ + super.updateSceneTransform(); + sceneTransform.copyColumnTo(2, this._sceneDirection); + this._sceneDirection.normalize(); + } + override protected function createShadowMapper():ShadowMapperBase{ + return (new DirectionalShadowMapper()); + } + override function getObjectProjectionMatrix(renderable:IRenderable, target:Matrix3D=null):Matrix3D{ + var d:Number; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var bounds:BoundingVolumeBase = renderable.sourceEntity.bounds; + var m:Matrix3D = new Matrix3D(); + m.copyFrom(renderable.sceneTransform); + m.append(inverseSceneTransform); + if (!(this._projAABBPoints)){ + this._projAABBPoints = new Vector.(); + }; + m.transformVectors(bounds.aabbPoints, this._projAABBPoints); + var xMin:Number = Number.POSITIVE_INFINITY; + var xMax:Number = Number.NEGATIVE_INFINITY; + var yMin:Number = Number.POSITIVE_INFINITY; + var yMax:Number = Number.NEGATIVE_INFINITY; + var zMin:Number = Number.POSITIVE_INFINITY; + var zMax:Number = Number.NEGATIVE_INFINITY; + var i:int; + while (i < 24) { + var _temp1 = i; + i = (i + 1); + d = this._projAABBPoints[_temp1]; + if (d < xMin){ + xMin = d; + }; + if (d > xMax){ + xMax = d; + }; + var _temp2 = i; + i = (i + 1); + d = this._projAABBPoints[_temp2]; + if (d < yMin){ + yMin = d; + }; + if (d > yMax){ + yMax = d; + }; + var _temp3 = i; + i = (i + 1); + d = this._projAABBPoints[_temp3]; + if (d < zMin){ + zMin = d; + }; + if (d > zMax){ + zMax = d; + }; + }; + var invXRange:Number = (1 / (xMax - xMin)); + var invYRange:Number = (1 / (yMax - yMin)); + var invZRange:Number = (1 / (zMax - zMin)); + raw[0] = (2 * invXRange); + raw[5] = (2 * invYRange); + raw[10] = invZRange; + raw[12] = (-((xMax + xMin)) * invXRange); + raw[13] = (-((yMax + yMin)) * invYRange); + raw[14] = (-(zMin) * invZRange); + raw[1] = (raw[2] = (raw[3] = (raw[4] = (raw[6] = (raw[7] = (raw[8] = (raw[9] = (raw[11] = 0)))))))); + raw[15] = 1; + target = ((target) || (new Matrix3D())); + target.copyRawDataFrom(raw); + target.prepend(m); + return (target); + } + + } +}//package away3d.lights diff --git a/flash_decompiled/watchdog/away3d/lights/LightBase.as b/flash_decompiled/watchdog/away3d/lights/LightBase.as new file mode 100644 index 0000000..328e61a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/LightBase.as @@ -0,0 +1,135 @@ +package away3d.lights { + import away3d.lights.shadowmaps.*; + import away3d.errors.*; + import flash.geom.*; + import away3d.core.base.*; + import away3d.core.partition.*; + import away3d.entities.*; + + public class LightBase extends Entity { + + private var _color:uint = 0xFFFFFF; + private var _colorR:Number = 1; + private var _colorG:Number = 1; + private var _colorB:Number = 1; + private var _ambientColor:uint = 0xFFFFFF; + private var _ambient:Number = 0; + var _ambientR:Number = 0; + var _ambientG:Number = 0; + var _ambientB:Number = 0; + private var _specular:Number = 1; + var _specularR:Number = 1; + var _specularG:Number = 1; + var _specularB:Number = 1; + private var _diffuse:Number = 1; + var _diffuseR:Number = 1; + var _diffuseG:Number = 1; + var _diffuseB:Number = 1; + private var _castsShadows:Boolean; + private var _shadowMapper:ShadowMapperBase; + + public function LightBase(){ + super(); + } + public function get castsShadows():Boolean{ + return (this._castsShadows); + } + public function set castsShadows(value:Boolean):void{ + if (this._castsShadows == value){ + return; + }; + this._castsShadows = value; + if (value){ + this._shadowMapper = ((this._shadowMapper) || (this.createShadowMapper())); + this._shadowMapper.light = this; + } else { + this._shadowMapper.dispose(); + this._shadowMapper = null; + }; + } + protected function createShadowMapper():ShadowMapperBase{ + throw (new AbstractMethodError()); + } + public function get specular():Number{ + return (this._specular); + } + public function set specular(value:Number):void{ + if (value < 0){ + value = 0; + }; + this._specular = value; + this.updateSpecular(); + } + public function get diffuse():Number{ + return (this._diffuse); + } + public function set diffuse(value:Number):void{ + if (value < 0){ + value = 0; + }; + this._diffuse = value; + this.updateDiffuse(); + } + public function get color():uint{ + return (this._color); + } + public function set color(value:uint):void{ + this._color = value; + this._colorR = (((this._color >> 16) & 0xFF) / 0xFF); + this._colorG = (((this._color >> 8) & 0xFF) / 0xFF); + this._colorB = ((this._color & 0xFF) / 0xFF); + this.updateDiffuse(); + this.updateSpecular(); + } + public function get ambient():Number{ + return (this._ambient); + } + public function set ambient(value:Number):void{ + if (value < 0){ + value = 0; + } else { + if (value > 1){ + value = 1; + }; + }; + this._ambient = value; + this.updateAmbient(); + } + public function get ambientColor():uint{ + return (this._ambientColor); + } + public function set ambientColor(value:uint):void{ + this._ambientColor = value; + this.updateAmbient(); + } + private function updateAmbient():void{ + this._ambientR = ((((this._ambientColor >> 16) & 0xFF) / 0xFF) * this._ambient); + this._ambientG = ((((this._ambientColor >> 8) & 0xFF) / 0xFF) * this._ambient); + this._ambientB = (((this._ambientColor & 0xFF) / 0xFF) * this._ambient); + } + function getObjectProjectionMatrix(renderable:IRenderable, target:Matrix3D=null):Matrix3D{ + throw (new AbstractMethodError()); + } + override protected function createEntityPartitionNode():EntityNode{ + return (new LightNode(this)); + } + private function updateSpecular():void{ + this._specularR = (this._colorR * this._specular); + this._specularG = (this._colorG * this._specular); + this._specularB = (this._colorB * this._specular); + } + private function updateDiffuse():void{ + this._diffuseR = (this._colorR * this._diffuse); + this._diffuseG = (this._colorG * this._diffuse); + this._diffuseB = (this._colorB * this._diffuse); + } + public function get shadowMapper():ShadowMapperBase{ + return (this._shadowMapper); + } + public function set shadowMapper(value:ShadowMapperBase):void{ + this._shadowMapper = value; + this._shadowMapper.light = this; + } + + } +}//package away3d.lights diff --git a/flash_decompiled/watchdog/away3d/lights/LightProbe.as b/flash_decompiled/watchdog/away3d/lights/LightProbe.as new file mode 100644 index 0000000..2efb420 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/LightProbe.as @@ -0,0 +1,44 @@ +package away3d.lights { + import away3d.textures.*; + import away3d.core.partition.*; + import away3d.bounds.*; + import away3d.core.base.*; + import flash.geom.*; + + public class LightProbe extends LightBase { + + private var _diffuseMap:CubeTextureBase; + private var _specularMap:CubeTextureBase; + + public function LightProbe(diffuseMap:CubeTextureBase, specularMap:CubeTextureBase=null){ + super(); + this._diffuseMap = diffuseMap; + this._specularMap = specularMap; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new LightProbeNode(this)); + } + public function get diffuseMap():CubeTextureBase{ + return (this._diffuseMap); + } + public function set diffuseMap(value:CubeTextureBase):void{ + this._diffuseMap = value; + } + public function get specularMap():CubeTextureBase{ + return (this._specularMap); + } + public function set specularMap(value:CubeTextureBase):void{ + this._specularMap = value; + } + override protected function updateBounds():void{ + _boundsInvalid = false; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new NullBounds()); + } + override function getObjectProjectionMatrix(renderable:IRenderable, target:Matrix3D=null):Matrix3D{ + throw (new Error("Object projection matrices are not supported for LightProbe objects!")); + } + + } +}//package away3d.lights diff --git a/flash_decompiled/watchdog/away3d/lights/PointLight.as b/flash_decompiled/watchdog/away3d/lights/PointLight.as new file mode 100644 index 0000000..cdd81e7 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/PointLight.as @@ -0,0 +1,97 @@ +package away3d.lights { + import away3d.lights.shadowmaps.*; + import away3d.core.partition.*; + import flash.geom.*; + import away3d.bounds.*; + import away3d.core.math.*; + import __AS3__.vec.*; + import away3d.core.base.*; + + public class PointLight extends LightBase { + + var _radius:Number = 1.79769313486232E308; + var _fallOff:Number = 1.79769313486232E308; + var _fallOffFactor:Number; + + public function PointLight(){ + super(); + this._fallOffFactor = (1 / (this._fallOff - this._radius)); + } + override protected function createShadowMapper():ShadowMapperBase{ + return (new CubeMapShadowMapper()); + } + override protected function createEntityPartitionNode():EntityNode{ + return (new PointLightNode(this)); + } + public function get radius():Number{ + return (this._radius); + } + public function set radius(value:Number):void{ + this._radius = value; + if (this._radius < 0){ + this._radius = 0; + } else { + if (this._radius > this._fallOff){ + this._fallOff = this._radius; + invalidateBounds(); + }; + }; + this._fallOffFactor = (1 / (this._fallOff - this._radius)); + } + function fallOffFactor():Number{ + return (this._fallOffFactor); + } + public function get fallOff():Number{ + return (this._fallOff); + } + public function set fallOff(value:Number):void{ + this._fallOff = value; + if (this._fallOff < 0){ + this._fallOff = 0; + }; + if (this._fallOff < this._radius){ + this._radius = this._fallOff; + }; + this._fallOffFactor = (1 / (this._fallOff - this._radius)); + invalidateBounds(); + } + override protected function updateBounds():void{ + _bounds.fromSphere(new Vector3D(), this._fallOff); + _boundsInvalid = false; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new BoundingSphere()); + } + override function getObjectProjectionMatrix(renderable:IRenderable, target:Matrix3D=null):Matrix3D{ + var zMin:Number; + var zMax:Number; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var bounds:BoundingVolumeBase = renderable.sourceEntity.bounds; + var m:Matrix3D = new Matrix3D(); + m.copyFrom(renderable.sceneTransform); + m.append(_parent.inverseSceneTransform); + lookAt(m.position); + m.copyFrom(renderable.sceneTransform); + m.append(inverseSceneTransform); + m.copyColumnTo(3, _pos); + var v1:Vector3D = m.deltaTransformVector(bounds.min); + var v2:Vector3D = m.deltaTransformVector(bounds.max); + var z:Number = _pos.z; + var d1:Number = (((v1.x * v1.x) + (v1.y * v1.y)) + (v1.z * v1.z)); + var d2:Number = (((v2.x * v2.x) + (v2.y * v2.y)) + (v2.z * v2.z)); + var d:Number = Math.sqrt((((d1 > d2)) ? d1 : d2)); + zMin = (z - d); + zMax = (z + d); + raw[uint(5)] = (raw[uint(0)] = (zMin / d)); + raw[uint(10)] = (zMax / (zMax - zMin)); + raw[uint(11)] = 1; + raw[uint(1)] = (raw[uint(2)] = (raw[uint(3)] = (raw[uint(4)] = (raw[uint(6)] = (raw[uint(7)] = (raw[uint(8)] = (raw[uint(9)] = (raw[uint(12)] = (raw[uint(13)] = (raw[uint(15)] = 0)))))))))); + raw[uint(14)] = (-(zMin) * raw[uint(10)]); + target = ((target) || (new Matrix3D())); + target.copyRawDataFrom(raw); + target.prepend(m); + return (target); + } + + } +}//package away3d.lights diff --git a/flash_decompiled/watchdog/away3d/lights/shadowmaps/CubeMapShadowMapper.as b/flash_decompiled/watchdog/away3d/lights/shadowmaps/CubeMapShadowMapper.as new file mode 100644 index 0000000..847051f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/shadowmaps/CubeMapShadowMapper.as @@ -0,0 +1,74 @@ +package away3d.lights.shadowmaps { + import __AS3__.vec.*; + import away3d.cameras.*; + import away3d.cameras.lenses.*; + import away3d.textures.*; + import away3d.lights.*; + import flash.geom.*; + import flash.display3D.textures.*; + import away3d.containers.*; + import away3d.core.render.*; + + public class CubeMapShadowMapper extends ShadowMapperBase { + + private var _depthCameras:Vector.; + private var _lenses:Vector.; + private var _needsRender:Vector.; + + public function CubeMapShadowMapper(){ + super(); + _depthMapSize = 0x0200; + this._needsRender = new Vector.(6, true); + this.initCameras(); + } + private function initCameras():void{ + this._depthCameras = new Vector.(); + this._lenses = new Vector.(); + this.addCamera(0, 90, 0); + this.addCamera(0, -90, 0); + this.addCamera(-90, 0, 0); + this.addCamera(90, 0, 0); + this.addCamera(0, 0, 0); + this.addCamera(0, 180, 0); + } + private function addCamera(rotationX:Number, rotationY:Number, rotationZ:Number):void{ + var cam:Camera3D = new Camera3D(); + cam.rotationX = rotationX; + cam.rotationY = rotationY; + cam.rotationZ = rotationZ; + cam.lens.near = 0.01; + PerspectiveLens(cam.lens).fieldOfView = 90; + this._lenses.push(PerspectiveLens(cam.lens)); + cam.lens.aspectRatio = 1; + this._depthCameras.push(cam); + } + override protected function createDepthTexture():TextureProxyBase{ + return (new RenderCubeTexture(_depthMapSize)); + } + override protected function updateDepthProjection(viewCamera:Camera3D):void{ + var maxDistance:Number = PointLight(_light)._fallOff; + var pos:Vector3D = _light.scenePosition; + var i:uint; + while (i < 6) { + this._lenses[i].far = maxDistance; + this._depthCameras[i].position = pos; + this._needsRender[i] = true; + i++; + }; + } + override protected function drawDepthMap(target:TextureBase, scene:Scene3D, renderer:DepthRenderer):void{ + var i:uint; + while (i < 6) { + if (this._needsRender[i]){ + _casterCollector.clear(); + _casterCollector.camera = this._depthCameras[i]; + scene.traversePartitions(_casterCollector); + renderer.render(_casterCollector, target, null, i); + _casterCollector.cleanUp(); + }; + i++; + }; + } + + } +}//package away3d.lights.shadowmaps diff --git a/flash_decompiled/watchdog/away3d/lights/shadowmaps/DirectionalShadowMapper.as b/flash_decompiled/watchdog/away3d/lights/shadowmaps/DirectionalShadowMapper.as new file mode 100644 index 0000000..2f23554 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/shadowmaps/DirectionalShadowMapper.as @@ -0,0 +1,115 @@ +package away3d.lights.shadowmaps { + import away3d.cameras.*; + import away3d.cameras.lenses.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.textures.*; + import away3d.containers.*; + import away3d.core.render.*; + import away3d.core.math.*; + import away3d.lights.*; + + public class DirectionalShadowMapper extends ShadowMapperBase { + + protected var _depthCamera:Camera3D; + private var _localFrustum:Vector.; + private var _lightOffset:Number = 10000; + private var _matrix:Matrix3D; + private var _depthLens:FreeMatrixLens; + + public function DirectionalShadowMapper(){ + super(); + this._depthCamera = new Camera3D(); + this._depthCamera.lens = (this._depthLens = new FreeMatrixLens()); + this._localFrustum = new Vector.((8 * 3)); + this._matrix = new Matrix3D(); + } + public function get lightOffset():Number{ + return (this._lightOffset); + } + public function set lightOffset(value:Number):void{ + this._lightOffset = value; + } + function get depthProjection():Matrix3D{ + return (this._depthCamera.viewProjection); + } + override protected function drawDepthMap(target:TextureBase, scene:Scene3D, renderer:DepthRenderer):void{ + _casterCollector.clear(); + _casterCollector.camera = this._depthCamera; + scene.traversePartitions(_casterCollector); + renderer.render(_casterCollector, target); + _casterCollector.cleanUp(); + } + override protected function updateDepthProjection(viewCamera:Camera3D):void{ + var dir:Vector3D; + var d:Number; + var x:Number; + var y:Number; + var z:Number; + var scaleX:Number; + var scaleY:Number; + var offsX:Number; + var offsY:Number; + var i:uint; + var raw:Vector. = Matrix3DUtils.RAW_DATA_CONTAINER; + var corners:Vector. = viewCamera.lens.frustumCorners; + var minX:Number = Number.POSITIVE_INFINITY; + var minY:Number = Number.POSITIVE_INFINITY; + var minZ:Number = Number.POSITIVE_INFINITY; + var maxX:Number = Number.NEGATIVE_INFINITY; + var maxY:Number = Number.NEGATIVE_INFINITY; + var maxZ:Number = Number.NEGATIVE_INFINITY; + var halfSize:Number = (_depthMapSize * 0.5); + this._depthCamera.transform = _light.sceneTransform; + dir = DirectionalLight(_light).sceneDirection; + this._depthCamera.x = (viewCamera.x - (dir.x * this._lightOffset)); + this._depthCamera.y = (viewCamera.y - (dir.y * this._lightOffset)); + this._depthCamera.z = (viewCamera.z - (dir.z * this._lightOffset)); + this._matrix.copyFrom(this._depthCamera.inverseSceneTransform); + this._matrix.prepend(viewCamera.sceneTransform); + this._matrix.transformVectors(corners, this._localFrustum); + i = 0; + while (i < 24) { + var _temp1 = i; + i = (i + 1); + x = this._localFrustum[_temp1]; + var _temp2 = i; + i = (i + 1); + y = this._localFrustum[_temp2]; + var _temp3 = i; + i = (i + 1); + z = this._localFrustum[_temp3]; + if (x < minX){ + minX = x; + }; + if (x > maxX){ + maxX = x; + }; + if (y < minY){ + minY = y; + }; + if (y > maxY){ + maxY = y; + }; + if (z > maxZ){ + maxZ = z; + }; + }; + scaleX = (64 / Math.ceil(((maxX - minX) * 32))); + scaleY = (64 / Math.ceil(((maxY - minY) * 32))); + offsX = (Math.ceil((((-0.5 * (maxX + minX)) * scaleX) * halfSize)) / halfSize); + offsY = (Math.ceil((((-0.5 * (maxY + minY)) * scaleY) * halfSize)) / halfSize); + minZ = 10; + d = (1 / (maxZ - minZ)); + raw[0] = (raw[5] = (raw[15] = 1)); + raw[10] = d; + raw[14] = (-(minZ) * d); + raw[1] = (raw[2] = (raw[3] = (raw[4] = (raw[6] = (raw[7] = (raw[8] = (raw[9] = (raw[11] = (raw[12] = (raw[13] = 0)))))))))); + this._matrix.copyRawDataFrom(raw); + this._matrix.prependTranslation(offsX, offsY, 0); + this._matrix.prependScale(scaleX, scaleY, 1); + this._depthLens.matrix = this._matrix; + } + + } +}//package away3d.lights.shadowmaps diff --git a/flash_decompiled/watchdog/away3d/lights/shadowmaps/ShadowMapperBase.as b/flash_decompiled/watchdog/away3d/lights/shadowmaps/ShadowMapperBase.as new file mode 100644 index 0000000..fa20903 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/lights/shadowmaps/ShadowMapperBase.as @@ -0,0 +1,82 @@ +package away3d.lights.shadowmaps { + import away3d.core.traverse.*; + import away3d.textures.*; + import away3d.lights.*; + import away3d.core.managers.*; + import away3d.core.render.*; + import away3d.errors.*; + import away3d.cameras.*; + import flash.display3D.textures.*; + import away3d.containers.*; + + public class ShadowMapperBase { + + protected var _casterCollector:ShadowCasterCollector; + private var _depthMap:TextureProxyBase; + protected var _depthMapSize:uint = 0x0800; + protected var _light:LightBase; + private var _explicitDepthMap:Boolean; + + public function ShadowMapperBase(){ + super(); + this._casterCollector = new ShadowCasterCollector(); + } + function setDepthMap(depthMap:TextureProxyBase):void{ + if (this._depthMap == depthMap){ + return; + }; + if (((this._depthMap) && (!(this._explicitDepthMap)))){ + this._depthMap.dispose(); + }; + this._depthMap = depthMap; + this._explicitDepthMap = ((depthMap) ? true : false); + } + public function get light():LightBase{ + return (this._light); + } + public function set light(value:LightBase):void{ + this._light = value; + } + public function get depthMap():TextureProxyBase{ + return ((this._depthMap = ((this._depthMap) || (this.createDepthTexture())))); + } + public function get depthMapSize():uint{ + return (this._depthMapSize); + } + public function set depthMapSize(value:uint):void{ + if (value == this._depthMapSize){ + return; + }; + this._depthMapSize = value; + if (this._explicitDepthMap){ + throw (Error("Cannot set depth map size for the current renderer.")); + }; + if (this._depthMap){ + this._depthMap.dispose(); + this._depthMap = null; + }; + } + public function dispose():void{ + this._casterCollector = null; + if (((this._depthMap) && (!(this._explicitDepthMap)))){ + this._depthMap.dispose(); + }; + this._depthMap = null; + } + protected function createDepthTexture():TextureProxyBase{ + return (new RenderTexture(this._depthMapSize, this._depthMapSize)); + } + function renderDepthMap(stage3DProxy:Stage3DProxy, entityCollector:EntityCollector, renderer:DepthRenderer):void{ + this.updateDepthProjection(entityCollector.camera); + this._depthMap = ((this._depthMap) || (this.createDepthTexture())); + this.drawDepthMap(this._depthMap.getTextureForStage3D(stage3DProxy), entityCollector.scene, renderer); + } + protected function updateDepthProjection(viewCamera:Camera3D):void{ + throw (new AbstractMethodError()); + } + protected function drawDepthMap(target:TextureBase, scene:Scene3D, renderer:DepthRenderer):void{ + throw (new AbstractMethodError()); + } + + } +}//package away3d.lights.shadowmaps diff --git a/flash_decompiled/watchdog/away3d/materials/ColorMaterial.as b/flash_decompiled/watchdog/away3d/materials/ColorMaterial.as new file mode 100644 index 0000000..ae56721 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/ColorMaterial.as @@ -0,0 +1,36 @@ +package away3d.materials { + + public class ColorMaterial extends DefaultMaterialBase { + + private var _diffuseAlpha:Number = 1; + + public function ColorMaterial(color:uint=0xCCCCCC, alpha:Number=1){ + super(); + this.color = color; + this.alpha = alpha; + } + public function get alpha():Number{ + return (_screenPass.diffuseMethod.diffuseAlpha); + } + public function set alpha(value:Number):void{ + if (value > 1){ + value = 1; + } else { + if (value < 0){ + value = 0; + }; + }; + _screenPass.diffuseMethod.diffuseAlpha = (this._diffuseAlpha = value); + } + public function get color():uint{ + return (_screenPass.diffuseMethod.diffuseColor); + } + public function set color(value:uint):void{ + _screenPass.diffuseMethod.diffuseColor = value; + } + override public function get requiresBlending():Boolean{ + return (((super.requiresBlending) || ((this._diffuseAlpha < 1)))); + } + + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/DefaultMaterialBase.as b/flash_decompiled/watchdog/away3d/materials/DefaultMaterialBase.as new file mode 100644 index 0000000..00efd69 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/DefaultMaterialBase.as @@ -0,0 +1,185 @@ +package away3d.materials { + import away3d.materials.passes.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.geom.*; + import away3d.materials.methods.*; + import away3d.textures.*; + import flash.display3D.*; + + public class DefaultMaterialBase extends MaterialBase { + + protected var _screenPass:DefaultScreenPass; + private var _alphaBlending:Boolean; + + public function DefaultMaterialBase(){ + super(); + addPass((this._screenPass = new DefaultScreenPass(this))); + } + public function get alphaThreshold():Number{ + return (this._screenPass.diffuseMethod.alphaThreshold); + } + public function set alphaThreshold(value:Number):void{ + this._screenPass.diffuseMethod.alphaThreshold = value; + _depthPass.alphaThreshold = value; + _distancePass.alphaThreshold = value; + } + override function activateForDepth(stage3DProxy:Stage3DProxy, camera:Camera3D, distanceBased:Boolean=false, textureRatioX:Number=1, textureRatioY:Number=1):void{ + if (distanceBased){ + _distancePass.alphaMask = this._screenPass.diffuseMethod.texture; + } else { + _depthPass.alphaMask = this._screenPass.diffuseMethod.texture; + }; + super.activateForDepth(stage3DProxy, camera, distanceBased, textureRatioX, textureRatioY); + } + public function get specularLightSources():uint{ + return (this._screenPass.specularLightSources); + } + public function set specularLightSources(value:uint):void{ + this._screenPass.specularLightSources = value; + } + public function get diffuseLightSources():uint{ + return (this._screenPass.diffuseLightSources); + } + public function set diffuseLightSources(value:uint):void{ + this._screenPass.diffuseLightSources = value; + } + public function get colorTransform():ColorTransform{ + return (this._screenPass.colorTransform); + } + public function set colorTransform(value:ColorTransform):void{ + this._screenPass.colorTransform = value; + } + override public function get requiresBlending():Boolean{ + return (((((super.requiresBlending) || (this._alphaBlending))) || (((this._screenPass.colorTransform) && ((this._screenPass.colorTransform.alphaMultiplier < 1)))))); + } + public function get ambientMethod():BasicAmbientMethod{ + return (this._screenPass.ambientMethod); + } + public function set ambientMethod(value:BasicAmbientMethod):void{ + this._screenPass.ambientMethod = value; + } + public function get shadowMethod():ShadowMapMethodBase{ + return (this._screenPass.shadowMethod); + } + public function set shadowMethod(value:ShadowMapMethodBase):void{ + this._screenPass.shadowMethod = value; + } + public function get diffuseMethod():BasicDiffuseMethod{ + return (this._screenPass.diffuseMethod); + } + public function set diffuseMethod(value:BasicDiffuseMethod):void{ + this._screenPass.diffuseMethod = value; + } + public function get normalMethod():BasicNormalMethod{ + return (this._screenPass.normalMethod); + } + public function set normalMethod(value:BasicNormalMethod):void{ + this._screenPass.normalMethod = value; + } + public function get specularMethod():BasicSpecularMethod{ + return (this._screenPass.specularMethod); + } + public function set specularMethod(value:BasicSpecularMethod):void{ + this._screenPass.specularMethod = value; + } + public function addMethod(method:EffectMethodBase):void{ + this._screenPass.addMethod(method); + } + public function get numMethods():int{ + return (this._screenPass.numMethods); + } + public function hasMethod(method:EffectMethodBase):Boolean{ + return (this._screenPass.hasMethod(method)); + } + public function getMethodAt(index:int):EffectMethodBase{ + return (this._screenPass.getMethodAt(index)); + } + public function addMethodAt(method:EffectMethodBase, index:int):void{ + this._screenPass.addMethodAt(method, index); + } + public function removeMethod(method:EffectMethodBase):void{ + this._screenPass.removeMethod(method); + } + override public function set mipmap(value:Boolean):void{ + if (_mipmap == value){ + return; + }; + super.mipmap = value; + } + public function get normalMap():Texture2DBase{ + return (this._screenPass.normalMap); + } + public function set normalMap(value:Texture2DBase):void{ + this._screenPass.normalMap = value; + } + public function get specularMap():Texture2DBase{ + return (this._screenPass.specularMethod.texture); + } + public function set specularMap(value:Texture2DBase):void{ + if (this._screenPass.specularMethod){ + this._screenPass.specularMethod.texture = value; + } else { + throw (new Error("No specular method was set to assign the specularGlossMap to")); + }; + } + public function get gloss():Number{ + return (((this._screenPass.specularMethod) ? this._screenPass.specularMethod.gloss : 0)); + } + public function set gloss(value:Number):void{ + if (this._screenPass.specularMethod){ + this._screenPass.specularMethod.gloss = value; + }; + } + public function get ambient():Number{ + return (this._screenPass.ambientMethod.ambient); + } + public function set ambient(value:Number):void{ + this._screenPass.ambientMethod.ambient = value; + } + public function get specular():Number{ + return (((this._screenPass.specularMethod) ? this._screenPass.specularMethod.specular : 0)); + } + public function set specular(value:Number):void{ + if (this._screenPass.specularMethod){ + this._screenPass.specularMethod.specular = value; + }; + } + public function get ambientColor():uint{ + return (this._screenPass.ambientMethod.ambientColor); + } + public function set ambientColor(value:uint):void{ + this._screenPass.ambientMethod.ambientColor = value; + } + public function get specularColor():uint{ + return (this._screenPass.specularMethod.specularColor); + } + public function set specularColor(value:uint):void{ + this._screenPass.specularMethod.specularColor = value; + } + public function get alphaBlending():Boolean{ + return (this._alphaBlending); + } + public function set alphaBlending(value:Boolean):void{ + this._alphaBlending = value; + } + override function updateMaterial(context:Context3D):void{ + var len:uint; + var i:uint; + if (this._screenPass._passesDirty){ + clearPasses(); + if (this._screenPass._passes){ + len = this._screenPass._passes.length; + i = 0; + while (i < len) { + addPass(this._screenPass._passes[i]); + i++; + }; + }; + addPass(this._screenPass); + this._screenPass._passesDirty = false; + }; + } + + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/LightSources.as b/flash_decompiled/watchdog/away3d/materials/LightSources.as new file mode 100644 index 0000000..d8bd4a8 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/LightSources.as @@ -0,0 +1,10 @@ +package away3d.materials { + + public class LightSources { + + public static const LIGHTS:uint = 1; + public static const PROBES:uint = 2; + public static const ALL:uint = 3; + + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/MaterialBase.as b/flash_decompiled/watchdog/away3d/materials/MaterialBase.as new file mode 100644 index 0000000..030dae5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/MaterialBase.as @@ -0,0 +1,382 @@ +package away3d.materials { + import __AS3__.vec.*; + import away3d.core.base.*; + import away3d.materials.passes.*; + import away3d.library.assets.*; + import away3d.materials.lightpickers.*; + import flash.events.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import flash.display3D.*; + import away3d.core.traverse.*; + import flash.display.*; + import away3d.animators.*; + + public class MaterialBase extends NamedAssetBase implements IAsset { + + private static var MATERIAL_ID_COUNT:uint = 0; + + public var extra:Object; + var _classification:String; + var _uniqueId:uint; + var _renderOrderId:int; + var _name:String = "material"; + private var _bothSides:Boolean; + private var _animationSet:IAnimationSet; + private var _owners:Vector.; + private var _alphaPremultiplied:Boolean; + private var _requiresBlending:Boolean; + private var _blendMode:String = "normal"; + private var _srcBlend:String = "sourceAlpha"; + private var _destBlend:String = "oneMinusSourceAlpha"; + protected var _numPasses:uint; + protected var _passes:Vector.; + protected var _mipmap:Boolean = true; + protected var _smooth:Boolean = true; + protected var _repeat:Boolean; + protected var _depthCompareMode:String = "less"; + protected var _depthPass:DepthMapPass; + protected var _distancePass:DistanceMapPass; + private var _lightPicker:LightPickerBase; + private var _distanceBasedDepthRender:Boolean; + + public function MaterialBase(){ + super(); + this._owners = new Vector.(); + this._passes = new Vector.(); + this._depthPass = new DepthMapPass(); + this._distancePass = new DistanceMapPass(); + this.alphaPremultiplied = true; + this._uniqueId = MATERIAL_ID_COUNT++; + } + public function get assetType():String{ + return (AssetType.MATERIAL); + } + public function get lightPicker():LightPickerBase{ + return (this._lightPicker); + } + public function set lightPicker(value:LightPickerBase):void{ + if (value != this._lightPicker){ + if (this._lightPicker){ + this._lightPicker.removeEventListener(Event.CHANGE, this.onLightsChange); + }; + this._lightPicker = value; + if (this._lightPicker){ + this._lightPicker.addEventListener(Event.CHANGE, this.onLightsChange); + }; + this.invalidatePasses(null); + }; + } + private function onLightsChange(event:Event):void{ + var pass:MaterialPassBase; + var i:uint; + while (i < this._numPasses) { + pass = this._passes[i]; + pass.numPointLights = this._lightPicker.numPointLights; + pass.numDirectionalLights = this._lightPicker.numDirectionalLights; + pass.numLightProbes = this._lightPicker.numLightProbes; + i++; + }; + } + public function get mipmap():Boolean{ + return (this._mipmap); + } + public function set mipmap(value:Boolean):void{ + this._mipmap = value; + var i:int; + while (i < this._numPasses) { + this._passes[i].mipmap = value; + i++; + }; + } + public function get smooth():Boolean{ + return (this._smooth); + } + public function set smooth(value:Boolean):void{ + this._smooth = value; + var i:int; + while (i < this._numPasses) { + this._passes[i].smooth = value; + i++; + }; + } + public function get depthCompareMode():String{ + return (this._depthCompareMode); + } + public function set depthCompareMode(value:String):void{ + this._depthCompareMode = value; + } + public function get repeat():Boolean{ + return (this._repeat); + } + public function set repeat(value:Boolean):void{ + this._repeat = value; + var i:int; + while (i < this._numPasses) { + this._passes[i].repeat = value; + i++; + }; + } + public function dispose():void{ + var i:uint; + i = 0; + while (i < this._numPasses) { + this._passes[i].dispose(); + i++; + }; + this._depthPass.dispose(); + this._distancePass.dispose(); + if (this._lightPicker){ + this._lightPicker.removeEventListener(Event.CHANGE, this.onLightsChange); + }; + } + public function get bothSides():Boolean{ + return (this._bothSides); + } + public function set bothSides(value:Boolean):void{ + this._bothSides = value; + var i:int; + while (i < this._numPasses) { + this._passes[i].bothSides = value; + i++; + }; + this._depthPass.bothSides = value; + this._distancePass.bothSides = value; + } + public function get blendMode():String{ + return (this._blendMode); + } + public function set blendMode(value:String):void{ + this._blendMode = value; + this.updateBlendFactors(); + } + public function get alphaPremultiplied():Boolean{ + return (this._alphaPremultiplied); + } + public function set alphaPremultiplied(value:Boolean):void{ + this._alphaPremultiplied = value; + var i:int; + while (i < this._numPasses) { + this._passes[i].alphaPremultiplied = value; + i++; + }; + } + public function get requiresBlending():Boolean{ + return (this._requiresBlending); + } + public function get uniqueId():uint{ + return (this._uniqueId); + } + override public function get name():String{ + return (this._name); + } + override public function set name(value:String):void{ + this._name = value; + } + function get numPasses():uint{ + return (this._numPasses); + } + function activateForDepth(stage3DProxy:Stage3DProxy, camera:Camera3D, distanceBased:Boolean=false, textureRatioX:Number=1, textureRatioY:Number=1):void{ + this._distanceBasedDepthRender = distanceBased; + if (distanceBased){ + this._distancePass.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } else { + this._depthPass.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + }; + } + function deactivateForDepth(stage3DProxy:Stage3DProxy):void{ + if (this._distanceBasedDepthRender){ + this._distancePass.deactivate(stage3DProxy); + } else { + this._depthPass.deactivate(stage3DProxy); + }; + } + function renderDepth(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D):void{ + if (this._distanceBasedDepthRender){ + if (renderable.animator){ + this._distancePass.updateAnimationState(renderable, stage3DProxy); + }; + this._distancePass.render(renderable, stage3DProxy, camera, this._lightPicker); + } else { + if (renderable.animator){ + this._depthPass.updateAnimationState(renderable, stage3DProxy); + }; + this._depthPass.render(renderable, stage3DProxy, camera, this._lightPicker); + }; + } + function passRendersToTexture(index:uint):Boolean{ + return (this._passes[index].renderToTexture); + } + function activatePass(index:uint, stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D; + if (index == (this._numPasses - 1)){ + context = stage3DProxy._context3D; + if (this.requiresBlending){ + context.setBlendFactors(this._srcBlend, this._destBlend); + context.setDepthTest(false, this._depthCompareMode); + } else { + context.setDepthTest(true, this._depthCompareMode); + }; + }; + this._passes[index].activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } + function deactivatePass(index:uint, stage3DProxy:Stage3DProxy):void{ + this._passes[index].deactivate(stage3DProxy); + } + function renderPass(index:uint, renderable:IRenderable, stage3DProxy:Stage3DProxy, entityCollector:EntityCollector):void{ + if (this._lightPicker){ + this._lightPicker.collectLights(renderable, entityCollector); + }; + var pass:MaterialPassBase = this._passes[index]; + if (renderable.animator){ + pass.updateAnimationState(renderable, stage3DProxy); + }; + pass.render(renderable, stage3DProxy, entityCollector.camera, this._lightPicker); + } + function addOwner(owner:IMaterialOwner):void{ + var i:int; + this._owners.push(owner); + if (owner.animator){ + if (((this._animationSet) && (!((owner.animator.animationSet == this._animationSet))))){ + throw (new Error("A Material instance cannot be shared across renderables with different animator libraries")); + }; + this._animationSet = owner.animator.animationSet; + i = 0; + while (i < this._numPasses) { + this._passes[i].animationSet = this._animationSet; + i++; + }; + this._depthPass.animationSet = this._animationSet; + this._distancePass.animationSet = this._animationSet; + this.invalidatePasses(null); + }; + } + function removeOwner(owner:IMaterialOwner):void{ + var i:int; + this._owners.splice(this._owners.indexOf(owner), 1); + if (this._owners.length == 0){ + this._animationSet = null; + i = 0; + while (i < this._numPasses) { + this._passes[i].animationSet = this._animationSet; + i++; + }; + this._depthPass.animationSet = this._animationSet; + this._distancePass.animationSet = this._animationSet; + this.invalidatePasses(null); + }; + } + function get owners():Vector.{ + return (this._owners); + } + function updateMaterial(context:Context3D):void{ + } + function deactivate(stage3DProxy:Stage3DProxy):void{ + this._passes[(this._numPasses - 1)].deactivate(stage3DProxy); + } + function invalidatePasses(triggerPass:MaterialPassBase):void{ + var owner:IMaterialOwner; + this._depthPass.invalidateShaderProgram(); + this._distancePass.invalidateShaderProgram(); + if (this._animationSet){ + this._animationSet.resetGPUCompatibility(); + for each (owner in this._owners) { + if (owner.animator){ + owner.animator.testGPUCompatibility(this._depthPass); + owner.animator.testGPUCompatibility(this._distancePass); + }; + }; + }; + var i:int; + while (i < this._numPasses) { + if (this._passes[i] != triggerPass){ + this._passes[i].invalidateShaderProgram(false); + }; + if (this._animationSet){ + for each (owner in this._owners) { + if (owner.animator){ + owner.animator.testGPUCompatibility(this._passes[i]); + }; + }; + }; + i++; + }; + } + protected function clearPasses():void{ + var i:int; + while (i < this._numPasses) { + this._passes[i].removeEventListener(Event.CHANGE, this.onPassChange); + i++; + }; + this._passes.length = 0; + this._numPasses = 0; + } + protected function addPass(pass:MaterialPassBase):void{ + var _local2 = this._numPasses++; + this._passes[_local2] = pass; + pass.animationSet = this._animationSet; + pass.alphaPremultiplied = this._alphaPremultiplied; + pass.mipmap = this._mipmap; + pass.smooth = this._smooth; + pass.repeat = this._repeat; + pass.numPointLights = ((this._lightPicker) ? this._lightPicker.numPointLights : 0); + pass.numDirectionalLights = ((this._lightPicker) ? this._lightPicker.numDirectionalLights : 0); + pass.numLightProbes = ((this._lightPicker) ? this._lightPicker.numLightProbes : 0); + pass.addEventListener(Event.CHANGE, this.onPassChange); + this.calculateRenderId(); + this.invalidatePasses(null); + } + private function updateBlendFactors():void{ + switch (this._blendMode){ + case BlendMode.NORMAL: + case BlendMode.LAYER: + this._srcBlend = Context3DBlendFactor.SOURCE_ALPHA; + this._destBlend = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA; + this._requiresBlending = false; + break; + case BlendMode.MULTIPLY: + this._srcBlend = Context3DBlendFactor.ZERO; + this._destBlend = Context3DBlendFactor.SOURCE_COLOR; + this._requiresBlending = true; + break; + case BlendMode.ADD: + this._srcBlend = Context3DBlendFactor.SOURCE_ALPHA; + this._destBlend = Context3DBlendFactor.ONE; + this._requiresBlending = true; + break; + case BlendMode.ALPHA: + this._srcBlend = Context3DBlendFactor.ZERO; + this._destBlend = Context3DBlendFactor.SOURCE_ALPHA; + this._requiresBlending = true; + break; + default: + throw (new ArgumentError("Unsupported blend mode!")); + }; + } + private function calculateRenderId():void{ + } + private function onPassChange(event:Event):void{ + var ids:Vector.; + var len:int; + var j:int; + var mult:Number = 1; + this._renderOrderId = 0; + var i:int; + while (i < this._numPasses) { + ids = this._passes[i]._program3Dids; + len = ids.length; + j = 0; + while (j < len) { + if (ids[j] != -1){ + this._renderOrderId = (this._renderOrderId + (mult * ids[j])); + j = len; + }; + j++; + }; + mult = (mult * 1000); + i++; + }; + } + + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/SegmentMaterial.as b/flash_decompiled/watchdog/away3d/materials/SegmentMaterial.as new file mode 100644 index 0000000..b9b9317 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/SegmentMaterial.as @@ -0,0 +1,15 @@ +package away3d.materials { + import away3d.materials.passes.*; + + public class SegmentMaterial extends MaterialBase { + + private var _screenPass:SegmentPass; + + public function SegmentMaterial(thickness:Number=1.25){ + super(); + bothSides = true; + addPass((this._screenPass = new SegmentPass(thickness))); + this._screenPass.material = this; + } + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/TextureMaterial.as b/flash_decompiled/watchdog/away3d/materials/TextureMaterial.as new file mode 100644 index 0000000..62ef3f5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/TextureMaterial.as @@ -0,0 +1,49 @@ +package away3d.materials { + import away3d.textures.*; + import flash.geom.*; + + public class TextureMaterial extends DefaultMaterialBase { + + public function TextureMaterial(texture:Texture2DBase=null, smooth:Boolean=true, repeat:Boolean=false, mipmap:Boolean=true){ + super(); + this.texture = texture; + this.smooth = smooth; + this.repeat = repeat; + this.mipmap = mipmap; + } + public function get animateUVs():Boolean{ + return (_screenPass.animateUVs); + } + public function set animateUVs(value:Boolean):void{ + _screenPass.animateUVs = value; + } + public function get alpha():Number{ + return (((_screenPass.colorTransform) ? _screenPass.colorTransform.alphaMultiplier : 1)); + } + public function set alpha(value:Number):void{ + if (value > 1){ + value = 1; + } else { + if (value < 0){ + value = 0; + }; + }; + colorTransform = ((colorTransform) || (new ColorTransform())); + colorTransform.alphaMultiplier = value; + } + public function get texture():Texture2DBase{ + return (_screenPass.diffuseMethod.texture); + } + public function set texture(value:Texture2DBase):void{ + _screenPass.diffuseMethod.texture = value; + } + public function get ambientTexture():Texture2DBase{ + return (_screenPass.ambientMethod.texture); + } + public function set ambientTexture(value:Texture2DBase):void{ + _screenPass.diffuseMethod._useDiffuseTexture = true; + _screenPass.ambientMethod.texture = value; + } + + } +}//package away3d.materials diff --git a/flash_decompiled/watchdog/away3d/materials/lightpickers/LightPickerBase.as b/flash_decompiled/watchdog/away3d/materials/lightpickers/LightPickerBase.as new file mode 100644 index 0000000..5b2e5ac --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/lightpickers/LightPickerBase.as @@ -0,0 +1,81 @@ +package away3d.materials.lightpickers { + import __AS3__.vec.*; + import away3d.lights.*; + import away3d.core.traverse.*; + import away3d.core.base.*; + import flash.geom.*; + import flash.events.*; + + public class LightPickerBase extends EventDispatcher { + + protected var _numPointLights:uint; + protected var _numDirectionalLights:uint; + protected var _numLightProbes:uint; + protected var _allPickedLights:Vector.; + protected var _pointLights:Vector.; + protected var _directionalLights:Vector.; + protected var _lightProbes:Vector.; + protected var _lightProbeWeights:Vector.; + public var name:String; + + public function get numDirectionalLights():uint{ + return (this._numDirectionalLights); + } + public function get numPointLights():uint{ + return (this._numPointLights); + } + public function get numLightProbes():uint{ + return (this._numLightProbes); + } + public function get pointLights():Vector.{ + return (this._pointLights); + } + public function get directionalLights():Vector.{ + return (this._directionalLights); + } + public function get lightProbes():Vector.{ + return (this._lightProbes); + } + public function get lightProbeWeights():Vector.{ + return (this._lightProbeWeights); + } + public function get allPickedLights():Vector.{ + return (this._allPickedLights); + } + public function collectLights(renderable:IRenderable, entityCollector:EntityCollector):void{ + this.updateProbeWeights(renderable); + } + private function updateProbeWeights(renderable:IRenderable):void{ + var lightPos:Vector3D; + var dx:Number; + var dy:Number; + var dz:Number; + var w:Number; + var i:int; + var objectPos:Vector3D = renderable.sourceEntity.scenePosition; + var rx:Number = objectPos.x; + var ry:Number = objectPos.y; + var rz:Number = objectPos.z; + var total:Number = 0; + i = 0; + while (i < this._numLightProbes) { + lightPos = this._lightProbes[i].scenePosition; + dx = (rx - lightPos.x); + dy = (ry - lightPos.y); + dz = (rz - lightPos.z); + w = (((dx * dx) + (dy * dy)) + (dz * dz)); + w = (((w > 1E-5)) ? (1 / w) : 50000000); + this._lightProbeWeights[i] = w; + total = (total + w); + i++; + }; + total = (1 / total); + i = 0; + while (i < this._numLightProbes) { + this._lightProbeWeights[i] = (this._lightProbeWeights[i] * total); + i++; + }; + } + + } +}//package away3d.materials.lightpickers diff --git a/flash_decompiled/watchdog/away3d/materials/lightpickers/StaticLightPicker.as b/flash_decompiled/watchdog/away3d/materials/lightpickers/StaticLightPicker.as new file mode 100644 index 0000000..e9c778a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/lightpickers/StaticLightPicker.as @@ -0,0 +1,64 @@ +package away3d.materials.lightpickers { + import away3d.lights.*; + import __AS3__.vec.*; + import flash.events.*; + + public class StaticLightPicker extends LightPickerBase { + + private var _lights:Array; + + public function StaticLightPicker(lights:Array){ + super(); + this.lights = lights; + } + public function get lights():Array{ + return (this._lights); + } + public function set lights(value:Array):void{ + var numPointLights:uint; + var numDirectionalLights:uint; + var numLightProbes:uint; + var light:LightBase; + this._lights = value; + _allPickedLights = Vector.(value); + _pointLights = new Vector.(); + _directionalLights = new Vector.(); + _lightProbes = new Vector.(); + var len:uint = value.length; + var i:uint; + while (i < len) { + light = value[i]; + if ((light is PointLight)){ + var _temp1 = numPointLights; + numPointLights = (numPointLights + 1); + var _local8 = _temp1; + _pointLights[_local8] = PointLight(light); + } else { + if ((light is DirectionalLight)){ + var _temp2 = numDirectionalLights; + numDirectionalLights = (numDirectionalLights + 1); + _local8 = _temp2; + _directionalLights[_local8] = DirectionalLight(light); + } else { + if ((light is LightProbe)){ + var _temp3 = numLightProbes; + numLightProbes = (numLightProbes + 1); + _local8 = _temp3; + _lightProbes[_local8] = LightProbe(light); + }; + }; + }; + i++; + }; + if ((((((_numDirectionalLights == numDirectionalLights)) && ((_numPointLights == numPointLights)))) && ((_numLightProbes == numLightProbes)))){ + return; + }; + _numDirectionalLights = numDirectionalLights; + _numPointLights = numPointLights; + _numLightProbes = numLightProbes; + _lightProbeWeights = new Vector.((Math.ceil((numLightProbes / 4)) * 4), true); + dispatchEvent(new Event(Event.CHANGE)); + } + + } +}//package away3d.materials.lightpickers diff --git a/flash_decompiled/watchdog/away3d/materials/methods/BasicAmbientMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/BasicAmbientMethod.as new file mode 100644 index 0000000..35c8568 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/BasicAmbientMethod.as @@ -0,0 +1,95 @@ +package away3d.materials.methods { + import away3d.textures.*; + import away3d.materials.utils.*; + import __AS3__.vec.*; + import away3d.core.managers.*; + + public class BasicAmbientMethod extends ShadingMethodBase { + + protected var _useTexture:Boolean; + private var _texture:Texture2DBase; + protected var _ambientInputRegister:ShaderRegisterElement; + private var _ambientColor:uint = 0xFFFFFF; + private var _ambientR:Number = 0; + private var _ambientG:Number = 0; + private var _ambientB:Number = 0; + private var _ambient:Number = 1; + var _lightAmbientR:Number = 0; + var _lightAmbientG:Number = 0; + var _lightAmbientB:Number = 0; + + public function BasicAmbientMethod(){ + super(); + } + override function initVO(vo:MethodVO):void{ + vo.needsUV = this._useTexture; + } + override function initConstants(vo:MethodVO):void{ + vo.fragmentData[(vo.fragmentConstantsIndex + 3)] = 1; + } + public function get ambient():Number{ + return (this._ambient); + } + public function set ambient(value:Number):void{ + this._ambient = value; + } + public function get ambientColor():uint{ + return (this._ambientColor); + } + public function set ambientColor(value:uint):void{ + this._ambientColor = value; + } + public function get texture():Texture2DBase{ + return (this._texture); + } + public function set texture(value:Texture2DBase):void{ + if (((!(value)) || (!(this._useTexture)))){ + invalidateShaderProgram(); + }; + this._useTexture = Boolean(value); + this._texture = value; + } + override public function copyFrom(method:ShadingMethodBase):void{ + var diff:BasicAmbientMethod = BasicAmbientMethod(method); + this.ambient = diff.ambient; + this.ambientColor = diff.ambientColor; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._ambientInputRegister = null; + } + function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var code:String = ""; + if (this._useTexture){ + this._ambientInputRegister = regCache.getFreeTextureReg(); + vo.texturesIndex = this._ambientInputRegister.index; + code = (code + (((((((getTexSampleCode(vo, targetReg, this._ambientInputRegister) + "div ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + targetReg) + ".w\n")); + } else { + this._ambientInputRegister = regCache.getFreeFragmentConstant(); + vo.fragmentConstantsIndex = (this._ambientInputRegister.index * 4); + code = (code + (((("mov " + targetReg) + ", ") + this._ambientInputRegister) + "\n")); + }; + return (code); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var index:int; + var data:Vector.; + this.updateAmbient(); + if (this._useTexture){ + stage3DProxy.setTextureAt(vo.texturesIndex, this._texture.getTextureForStage3D(stage3DProxy)); + } else { + index = vo.fragmentConstantsIndex; + data = vo.fragmentData; + data[index] = this._ambientR; + data[(index + 1)] = this._ambientG; + data[(index + 2)] = this._ambientB; + }; + } + private function updateAmbient():void{ + this._ambientR = (((((this._ambientColor >> 16) & 0xFF) / 0xFF) * this._ambient) * this._lightAmbientR); + this._ambientG = (((((this._ambientColor >> 8) & 0xFF) / 0xFF) * this._ambient) * this._lightAmbientG); + this._ambientB = ((((this._ambientColor & 0xFF) / 0xFF) * this._ambient) * this._lightAmbientB); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/BasicDiffuseMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/BasicDiffuseMethod.as new file mode 100644 index 0000000..da67624 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/BasicDiffuseMethod.as @@ -0,0 +1,204 @@ +package away3d.materials.methods { + import away3d.core.managers.*; + import away3d.textures.*; + import away3d.materials.utils.*; + import __AS3__.vec.*; + import flash.display3D.*; + + public class BasicDiffuseMethod extends LightingMethodBase { + + var _useDiffuseTexture:Boolean; + protected var _useTexture:Boolean; + var _totalLightColorReg:ShaderRegisterElement; + protected var _diffuseInputRegister:ShaderRegisterElement; + private var _texture:Texture2DBase; + private var _diffuseColor:uint = 0xFFFFFF; + private var _diffuseR:Number = 1; + private var _diffuseG:Number = 1; + private var _diffuseB:Number = 1; + private var _diffuseA:Number = 1; + protected var _shadowRegister:ShaderRegisterElement; + protected var _alphaThreshold:Number = 0; + + public function BasicDiffuseMethod(){ + super(); + } + override function initVO(vo:MethodVO):void{ + vo.needsUV = this._useTexture; + vo.needsNormals = (vo.numLights > 0); + } + public function generateMip(stage3DProxy:Stage3DProxy):void{ + if (this._useTexture){ + this._texture.getTextureForStage3D(stage3DProxy); + }; + } + public function get diffuseAlpha():Number{ + return (this._diffuseA); + } + public function set diffuseAlpha(value:Number):void{ + this._diffuseA = value; + } + public function get diffuseColor():uint{ + return (this._diffuseColor); + } + public function set diffuseColor(diffuseColor:uint):void{ + this._diffuseColor = diffuseColor; + this.updateDiffuse(); + } + public function get texture():Texture2DBase{ + return (this._texture); + } + public function set texture(value:Texture2DBase):void{ + this._useTexture = Boolean(value); + this._texture = value; + if (((!(value)) || (!(this._useTexture)))){ + invalidateShaderProgram(); + }; + } + public function get alphaThreshold():Number{ + return (this._alphaThreshold); + } + public function set alphaThreshold(value:Number):void{ + if (value < 0){ + value = 0; + } else { + if (value > 1){ + value = 1; + }; + }; + if (value == this._alphaThreshold){ + return; + }; + if ((((value == 0)) || ((this._alphaThreshold == 0)))){ + invalidateShaderProgram(); + }; + this._alphaThreshold = value; + } + override public function dispose():void{ + this._texture = null; + } + override public function copyFrom(method:ShadingMethodBase):void{ + var diff:BasicDiffuseMethod = BasicDiffuseMethod(method); + this.alphaThreshold = diff.alphaThreshold; + this.texture = diff.texture; + this.diffuseAlpha = diff.diffuseAlpha; + this.diffuseColor = diff.diffuseColor; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._shadowRegister = null; + this._totalLightColorReg = null; + this._diffuseInputRegister = null; + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + var code:String = ""; + if (vo.numLights > 0){ + this._totalLightColorReg = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(this._totalLightColorReg, 1); + }; + return (code); + } + override function getFragmentCodePerLight(vo:MethodVO, lightIndex:int, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + var t:ShaderRegisterElement; + var code:String = ""; + if (lightIndex > 0){ + t = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(t, 1); + } else { + t = this._totalLightColorReg; + }; + code = (code + (((((((((((((((((("dp3 " + t) + ".x, ") + lightDirReg) + ".xyz, ") + _normalFragmentReg) + ".xyz\n") + "sat ") + t) + ".w, ") + t) + ".x\n") + "mul ") + t) + ".w, ") + t) + ".w, ") + lightDirReg) + ".w\n")); + if (_modulateMethod != null){ + code = (code + _modulateMethod(vo, t, regCache)); + }; + code = (code + (((((("mul " + t) + ", ") + t) + ".w, ") + lightColReg) + "\n")); + if (lightIndex > 0){ + code = (code + (((((("add " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + t) + ".xyz\n")); + regCache.removeFragmentTempUsage(t); + }; + return (code); + } + override function getFragmentCodePerProbe(vo:MethodVO, lightIndex:int, cubeMapReg:ShaderRegisterElement, weightRegister:String, regCache:ShaderRegisterCache):String{ + var t:ShaderRegisterElement; + var code:String = ""; + if (lightIndex > 0){ + t = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(t, 1); + } else { + t = this._totalLightColorReg; + }; + code = (code + ((((((((((((("tex " + t) + ", ") + _normalFragmentReg) + ", ") + cubeMapReg) + " \n") + "mul ") + t) + ", ") + t) + ", ") + weightRegister) + "\n")); + if (lightIndex > 0){ + code = (code + (((((("add " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + t) + ".xyz\n")); + regCache.removeFragmentTempUsage(t); + }; + return (code); + } + override function getFragmentPostLightingCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var t:ShaderRegisterElement; + var cutOffReg:ShaderRegisterElement; + var code:String = ""; + if (vo.numLights > 0){ + t = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(t, 1); + if (this._shadowRegister){ + code = (code + (((((("mul " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + this._shadowRegister) + ".w\n")); + }; + } else { + t = targetReg; + }; + if (this._useTexture){ + this._diffuseInputRegister = regCache.getFreeTextureReg(); + vo.texturesIndex = this._diffuseInputRegister.index; + code = (code + getTexSampleCode(vo, t, this._diffuseInputRegister)); + if (this._alphaThreshold > 0){ + cutOffReg = regCache.getFreeFragmentConstant(); + vo.fragmentConstantsIndex = (cutOffReg.index * 4); + code = (code + (((((((((((((((("sub " + t) + ".w, ") + t) + ".w, ") + cutOffReg) + ".x\n") + "kil ") + t) + ".w\n") + "add ") + t) + ".w, ") + t) + ".w, ") + cutOffReg) + ".x\n")); + }; + } else { + this._diffuseInputRegister = regCache.getFreeFragmentConstant(); + vo.fragmentConstantsIndex = (this._diffuseInputRegister.index * 4); + code = (code + (((("mov " + t) + ", ") + this._diffuseInputRegister) + "\n")); + }; + if (vo.numLights == 0){ + return (code); + }; + if (this._useDiffuseTexture){ + code = (code + (((((((((((((((((((((((((((((((("sat " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz\n") + "mul ") + t) + ".xyz, ") + t) + ".xyz, ") + this._totalLightColorReg) + ".xyz\n") + "mul ") + this._totalLightColorReg) + ".xyz, ") + targetReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz\n") + "sub ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz\n") + "add ") + targetReg) + ".xyz, ") + t) + ".xyz, ") + targetReg) + ".xyz\n")); + } else { + code = (code + ((((((((((((((((((((((("add " + targetReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + targetReg) + ".xyz\n") + "sat ") + targetReg) + ".xyz, ") + targetReg) + ".xyz\n") + "mul ") + targetReg) + ".xyz, ") + t) + ".xyz, ") + targetReg) + ".xyz\n") + "mov ") + targetReg) + ".w, ") + t) + ".w\n")); + }; + regCache.removeFragmentTempUsage(this._totalLightColorReg); + regCache.removeFragmentTempUsage(t); + return (code); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var index:int; + var data:Vector.; + var context:Context3D = stage3DProxy._context3D; + if (this._useTexture){ + stage3DProxy.setTextureAt(vo.texturesIndex, this._texture.getTextureForStage3D(stage3DProxy)); + if (this._alphaThreshold > 0){ + vo.fragmentData[vo.fragmentConstantsIndex] = this._alphaThreshold; + }; + } else { + index = vo.fragmentConstantsIndex; + data = vo.fragmentData; + data[index] = this._diffuseR; + data[(index + 1)] = this._diffuseG; + data[(index + 2)] = this._diffuseB; + data[(index + 3)] = this._diffuseA; + }; + } + private function updateDiffuse():void{ + this._diffuseR = (((this._diffuseColor >> 16) & 0xFF) / 0xFF); + this._diffuseG = (((this._diffuseColor >> 8) & 0xFF) / 0xFF); + this._diffuseB = ((this._diffuseColor & 0xFF) / 0xFF); + } + function set shadowRegister(value:ShaderRegisterElement):void{ + this._shadowRegister = value; + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/BasicNormalMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/BasicNormalMethod.as new file mode 100644 index 0000000..aa6ad22 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/BasicNormalMethod.as @@ -0,0 +1,58 @@ +package away3d.materials.methods { + import away3d.textures.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class BasicNormalMethod extends ShadingMethodBase { + + private var _texture:Texture2DBase; + private var _useTexture:Boolean; + protected var _normalTextureRegister:ShaderRegisterElement; + + public function BasicNormalMethod(){ + super(); + } + override function initVO(vo:MethodVO):void{ + vo.needsUV = Boolean(this._texture); + } + function get tangentSpace():Boolean{ + return (true); + } + function get hasOutput():Boolean{ + return (this._useTexture); + } + override public function copyFrom(method:ShadingMethodBase):void{ + this.normalMap = BasicNormalMethod(method).normalMap; + } + public function get normalMap():Texture2DBase{ + return (this._texture); + } + public function set normalMap(value:Texture2DBase):void{ + if (((!(value)) || (!(this._useTexture)))){ + invalidateShaderProgram(); + }; + this._useTexture = Boolean(value); + this._texture = value; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._normalTextureRegister = null; + } + override public function dispose():void{ + if (this._texture){ + this._texture = null; + }; + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + if (vo.texturesIndex >= 0){ + stage3DProxy.setTextureAt(vo.texturesIndex, this._texture.getTextureForStage3D(stage3DProxy)); + }; + } + function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + this._normalTextureRegister = regCache.getFreeTextureReg(); + vo.texturesIndex = this._normalTextureRegister.index; + return (getTexSampleCode(vo, targetReg, this._normalTextureRegister)); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/BasicSpecularMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/BasicSpecularMethod.as new file mode 100644 index 0000000..da693ab --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/BasicSpecularMethod.as @@ -0,0 +1,207 @@ +package away3d.materials.methods { + import away3d.textures.*; + import away3d.materials.utils.*; + import flash.display3D.*; + import __AS3__.vec.*; + import away3d.core.managers.*; + + public class BasicSpecularMethod extends LightingMethodBase { + + protected var _useTexture:Boolean; + protected var _totalLightColorReg:ShaderRegisterElement; + protected var _specularTextureRegister:ShaderRegisterElement; + protected var _specularTexData:ShaderRegisterElement; + protected var _specularDataRegister:ShaderRegisterElement; + private var _texture:Texture2DBase; + private var _gloss:int = 50; + private var _specular:Number = 1; + private var _specularColor:uint = 0xFFFFFF; + var _specularR:Number = 1; + var _specularG:Number = 1; + var _specularB:Number = 1; + private var _shadowRegister:ShaderRegisterElement; + private var _shadingModel:String; + + public function BasicSpecularMethod(){ + super(); + this._shadingModel = SpecularShadingModel.BLINN_PHONG; + } + override function initVO(vo:MethodVO):void{ + vo.needsUV = this._useTexture; + vo.needsNormals = (vo.numLights > 0); + vo.needsView = (vo.numLights > 0); + } + public function get gloss():Number{ + return (this._gloss); + } + public function set gloss(value:Number):void{ + this._gloss = value; + } + public function get specular():Number{ + return (this._specular); + } + public function set specular(value:Number):void{ + if (value == this._specular){ + return; + }; + this._specular = value; + this.updateSpecular(); + } + public function get shadingModel():String{ + return (this._shadingModel); + } + public function set shadingModel(value:String):void{ + if (value == this._shadingModel){ + return; + }; + this._shadingModel = value; + invalidateShaderProgram(); + } + public function get specularColor():uint{ + return (this._specularColor); + } + public function set specularColor(value:uint):void{ + if (this._specularColor == value){ + return; + }; + if ((((this._specularColor == 0)) || ((value == 0)))){ + invalidateShaderProgram(); + }; + this._specularColor = value; + this.updateSpecular(); + } + public function get texture():Texture2DBase{ + return (this._texture); + } + public function set texture(value:Texture2DBase):void{ + if (((!(value)) || (!(this._useTexture)))){ + invalidateShaderProgram(); + }; + this._useTexture = Boolean(value); + this._texture = value; + } + override public function copyFrom(method:ShadingMethodBase):void{ + var spec:BasicSpecularMethod = BasicSpecularMethod(method); + this.texture = spec.texture; + this.specular = spec.specular; + this.specularColor = spec.specularColor; + this.gloss = spec.gloss; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._shadowRegister = null; + this._totalLightColorReg = null; + this._specularTextureRegister = null; + this._specularTexData = null; + this._specularDataRegister = null; + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + var code:String = ""; + if (vo.numLights > 0){ + this._specularDataRegister = regCache.getFreeFragmentConstant(); + vo.fragmentConstantsIndex = (this._specularDataRegister.index * 4); + if (this._useTexture){ + this._specularTexData = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(this._specularTexData, 1); + this._specularTextureRegister = regCache.getFreeTextureReg(); + vo.texturesIndex = this._specularTextureRegister.index; + code = getTexSampleCode(vo, this._specularTexData, this._specularTextureRegister); + } else { + this._specularTextureRegister = null; + }; + this._totalLightColorReg = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(this._totalLightColorReg, 1); + }; + return (code); + } + override function getFragmentCodePerLight(vo:MethodVO, lightIndex:int, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + var t:ShaderRegisterElement; + var code:String = ""; + if (lightIndex > 0){ + t = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(t, 1); + } else { + t = this._totalLightColorReg; + }; + switch (this._shadingModel){ + case SpecularShadingModel.BLINN_PHONG: + code = (code + ((((((((((((((((((((((("add " + t) + ".xyz, ") + lightDirReg) + ".xyz, ") + _viewDirFragmentReg) + ".xyz\n") + "nrm ") + t) + ".xyz, ") + t) + ".xyz\n") + "dp3 ") + t) + ".w, ") + _normalFragmentReg) + ".xyz, ") + t) + ".xyz\n") + "sat ") + t) + ".w, ") + t) + ".w\n")); + break; + case SpecularShadingModel.PHONG: + code = (code + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((("dp3 " + t) + ".w, ") + lightDirReg) + ".xyz, ") + _normalFragmentReg) + ".xyz\n") + "add ") + t) + ".w, ") + t) + ".w, ") + t) + ".w\n") + "mul ") + t) + ".xyz, ") + _normalFragmentReg) + ".xyz, ") + t) + ".w\n") + "sub ") + t) + ".xyz, ") + t) + ".xyz, ") + lightDirReg) + ".xyz\n") + "add") + t) + ".w, ") + t) + ".w, ") + _normalFragmentReg) + ".w\n") + "sat ") + t) + ".w, ") + t) + ".w\n") + "mul ") + t) + ".xyz, ") + t) + ".xyz, ") + t) + ".w\n") + "dp3 ") + t) + ".w, ") + t) + ".xyz, ") + _viewDirFragmentReg) + ".xyz\n") + "sat ") + t) + ".w, ") + t) + ".w\n")); + break; + }; + if (this._useTexture){ + code = (code + ((((((((((((("mul " + this._specularTexData) + ".w, ") + this._specularTexData) + ".y, ") + this._specularDataRegister) + ".w\n") + "pow ") + t) + ".w, ") + t) + ".w, ") + this._specularTexData) + ".w\n")); + } else { + code = (code + (((((("pow " + t) + ".w, ") + t) + ".w, ") + this._specularDataRegister) + ".w\n")); + }; + code = (code + (((((("mul " + t) + ".w, ") + t) + ".w, ") + lightDirReg) + ".w\n")); + if (_modulateMethod != null){ + code = (code + _modulateMethod(vo, t, regCache)); + }; + code = (code + (((((("mul " + t) + ".xyz, ") + lightColReg) + ".xyz, ") + t) + ".w\n")); + if (lightIndex > 0){ + code = (code + (((((("add " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + t) + ".xyz\n")); + regCache.removeFragmentTempUsage(t); + }; + return (code); + } + override function getFragmentCodePerProbe(vo:MethodVO, lightIndex:int, cubeMapReg:ShaderRegisterElement, weightRegister:String, regCache:ShaderRegisterCache):String{ + var t:ShaderRegisterElement; + var code:String = ""; + if (lightIndex > 0){ + t = regCache.getFreeFragmentVectorTemp(); + regCache.addFragmentTempUsages(t, 1); + } else { + t = this._totalLightColorReg; + }; + code = (code + ((((((((((((("tex " + t) + ", ") + _viewDirFragmentReg) + ", ") + cubeMapReg) + " \n") + "mul ") + t) + ", ") + t) + ", ") + weightRegister) + "\n")); + if (lightIndex > 0){ + code = (code + (((((("add " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + t) + ".xyz\n")); + regCache.removeFragmentTempUsage(t); + }; + return (code); + } + override function getFragmentPostLightingCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var code:String = ""; + if (vo.numLights == 0){ + return (code); + }; + if (this._shadowRegister){ + code = (code + (((((("mul " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + this._shadowRegister) + ".w\n")); + }; + if (this._useTexture){ + code = (code + (((((("mul " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + this._specularTexData) + ".x\n")); + regCache.removeFragmentTempUsage(this._specularTexData); + }; + code = (code + ((((((((((((("mul " + this._totalLightColorReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz, ") + this._specularDataRegister) + ".xyz\n") + "add ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + this._totalLightColorReg) + ".xyz\n")); + regCache.removeFragmentTempUsage(this._totalLightColorReg); + return (code); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var context:Context3D = stage3DProxy._context3D; + if (vo.numLights == 0){ + return; + }; + if (this._useTexture){ + stage3DProxy.setTextureAt(vo.texturesIndex, this._texture.getTextureForStage3D(stage3DProxy)); + }; + var index:int = vo.fragmentConstantsIndex; + var data:Vector. = vo.fragmentData; + data[index] = this._specularR; + data[(index + 1)] = this._specularG; + data[(index + 2)] = this._specularB; + data[(index + 3)] = this._gloss; + } + private function updateSpecular():void{ + this._specularR = ((((this._specularColor >> 16) & 0xFF) / 0xFF) * this._specular); + this._specularG = ((((this._specularColor >> 8) & 0xFF) / 0xFF) * this._specular); + this._specularB = (((this._specularColor & 0xFF) / 0xFF) * this._specular); + } + function set shadowRegister(shadowReg:ShaderRegisterElement):void{ + this._shadowRegister = shadowReg; + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/CelDiffuseMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/CelDiffuseMethod.as new file mode 100644 index 0000000..d3024a1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/CelDiffuseMethod.as @@ -0,0 +1,56 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.materials.utils.*; + import away3d.core.managers.*; + + public class CelDiffuseMethod extends CompositeDiffuseMethod { + + private var _levels:uint; + private var _dataReg:ShaderRegisterElement; + private var _smoothness:Number = 0.1; + + public function CelDiffuseMethod(levels:uint=3, baseDiffuseMethod:BasicDiffuseMethod=null){ + super(this.clampDiffuse, baseDiffuseMethod); + this._levels = levels; + } + override function initConstants(vo:MethodVO):void{ + var data:Vector. = vo.fragmentData; + var index:int = vo.secondaryFragmentConstantsIndex; + super.initConstants(vo); + data[(index + 1)] = 1; + data[(index + 2)] = 0; + } + public function get levels():uint{ + return (this._levels); + } + public function set levels(value:uint):void{ + this._levels = value; + } + public function get smoothness():Number{ + return (this._smoothness); + } + public function set smoothness(value:Number):void{ + this._smoothness = value; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._dataReg = null; + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + this._dataReg = regCache.getFreeFragmentConstant(); + vo.secondaryFragmentConstantsIndex = (this._dataReg.index * 4); + return (super.getFragmentPreLightingCode(vo, regCache)); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + super.activate(vo, stage3DProxy); + var data:Vector. = vo.fragmentData; + var index:int = vo.secondaryFragmentConstantsIndex; + data[index] = this._levels; + data[(index + 3)] = this._smoothness; + } + private function clampDiffuse(vo:MethodVO, t:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + return ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("mul " + t) + ".w, ") + t) + ".w, ") + this._dataReg) + ".x\n") + "frc ") + t) + ".z, ") + t) + ".w\n") + "sub ") + t) + ".y, ") + t) + ".w, ") + t) + ".z\n") + "mov ") + t) + ".x, ") + this._dataReg) + ".x\n") + "sub ") + t) + ".x, ") + t) + ".x, ") + this._dataReg) + ".y\n") + "rcp ") + t) + ".x,") + t) + ".x\n") + "mul ") + t) + ".w, ") + t) + ".y, ") + t) + ".x\n") + "sub ") + t) + ".y, ") + t) + ".w, ") + t) + ".x\n") + "div ") + t) + ".z, ") + t) + ".z, ") + this._dataReg) + ".w\n") + "sat ") + t) + ".z, ") + t) + ".z\n") + "mul ") + t) + ".w, ") + t) + ".w, ") + t) + ".z\n") + "sub ") + t) + ".z, ") + this._dataReg) + ".y, ") + t) + ".z\n") + "mul ") + t) + ".y, ") + t) + ".y, ") + t) + ".z\n") + "add ") + t) + ".w, ") + t) + ".w, ") + t) + ".y\n") + "sat ") + t) + ".w, ") + t) + ".w\n")); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/CelSpecularMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/CelSpecularMethod.as new file mode 100644 index 0000000..bd0e313 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/CelSpecularMethod.as @@ -0,0 +1,49 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class CelSpecularMethod extends CompositeSpecularMethod { + + private var _dataReg:ShaderRegisterElement; + private var _smoothness:Number = 0.1; + private var _specularCutOff:Number = 0.1; + + public function CelSpecularMethod(specularCutOff:Number=0.5, baseSpecularMethod:BasicSpecularMethod=null){ + super(this.clampSpecular, baseSpecularMethod); + this._specularCutOff = specularCutOff; + } + public function get smoothness():Number{ + return (this._smoothness); + } + public function set smoothness(value:Number):void{ + this._smoothness = value; + } + public function get specularCutOff():Number{ + return (this._specularCutOff); + } + public function set specularCutOff(value:Number):void{ + this._specularCutOff = value; + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + super.activate(vo, stage3DProxy); + var index:int = vo.secondaryFragmentConstantsIndex; + var data:Vector. = vo.fragmentData; + data[index] = this._smoothness; + data[(index + 1)] = this._specularCutOff; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._dataReg = null; + } + private function clampSpecular(methodVO:MethodVO, target:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + return ((((((((((((((((((((((((((((((((("sub " + target) + ".y, ") + target) + ".w, ") + this._dataReg) + ".y\n") + "div ") + target) + ".y, ") + target) + ".y, ") + this._dataReg) + ".x\n") + "sat ") + target) + ".y, ") + target) + ".y\n") + "sge ") + target) + ".w, ") + target) + ".w, ") + this._dataReg) + ".y\n") + "mul ") + target) + ".w, ") + target) + ".w, ") + target) + ".y\n")); + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + this._dataReg = regCache.getFreeFragmentConstant(); + vo.secondaryFragmentConstantsIndex = (this._dataReg.index * 4); + return (super.getFragmentPreLightingCode(vo, regCache)); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/ColorTransformMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/ColorTransformMethod.as new file mode 100644 index 0000000..cef44ea --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/ColorTransformMethod.as @@ -0,0 +1,44 @@ +package away3d.materials.methods { + import flash.geom.*; + import away3d.materials.utils.*; + import __AS3__.vec.*; + import away3d.core.managers.*; + + public class ColorTransformMethod extends EffectMethodBase { + + private var _colorTransform:ColorTransform; + + public function ColorTransformMethod(){ + super(); + } + public function get colorTransform():ColorTransform{ + return (this._colorTransform); + } + public function set colorTransform(value:ColorTransform):void{ + this._colorTransform = value; + } + override function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var colorOffsReg:ShaderRegisterElement; + var code:String = ""; + var colorMultReg:ShaderRegisterElement = regCache.getFreeFragmentConstant(); + colorOffsReg = regCache.getFreeFragmentConstant(); + vo.fragmentConstantsIndex = (colorMultReg.index * 4); + code = (code + ((((((((((((("mul " + targetReg) + ", ") + targetReg.toString()) + ", ") + colorMultReg) + "\n") + "add ") + targetReg) + ", ") + targetReg.toString()) + ", ") + colorOffsReg) + "\n")); + return (code); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var inv:Number = (1 / 0xFF); + var index:int = vo.fragmentConstantsIndex; + var data:Vector. = vo.fragmentData; + data[index] = this._colorTransform.redMultiplier; + data[(index + 1)] = this._colorTransform.greenMultiplier; + data[(index + 2)] = this._colorTransform.blueMultiplier; + data[(index + 3)] = this._colorTransform.alphaMultiplier; + data[(index + 4)] = (this._colorTransform.redOffset * inv); + data[(index + 5)] = (this._colorTransform.greenOffset * inv); + data[(index + 6)] = (this._colorTransform.blueOffset * inv); + data[(index + 7)] = (this._colorTransform.alphaOffset * inv); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/CompositeDiffuseMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/CompositeDiffuseMethod.as new file mode 100644 index 0000000..215c48f --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/CompositeDiffuseMethod.as @@ -0,0 +1,123 @@ +package away3d.materials.methods { + import away3d.events.*; + import away3d.textures.*; + import away3d.materials.utils.*; + import away3d.core.managers.*; + + public class CompositeDiffuseMethod extends BasicDiffuseMethod { + + private var _baseDiffuseMethod:BasicDiffuseMethod; + + public function CompositeDiffuseMethod(modulateMethod:Function=null, baseDiffuseMethod:BasicDiffuseMethod=null){ + super(); + this._baseDiffuseMethod = ((baseDiffuseMethod) || (new BasicDiffuseMethod())); + this._baseDiffuseMethod._modulateMethod = modulateMethod; + this._baseDiffuseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + } + override function initVO(vo:MethodVO):void{ + this._baseDiffuseMethod.initVO(vo); + } + override function initConstants(vo:MethodVO):void{ + this._baseDiffuseMethod.initConstants(vo); + } + override public function dispose():void{ + this._baseDiffuseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._baseDiffuseMethod.dispose(); + } + override public function get alphaThreshold():Number{ + return (this._baseDiffuseMethod.alphaThreshold); + } + override public function set alphaThreshold(value:Number):void{ + this._baseDiffuseMethod.alphaThreshold = value; + } + override public function get texture():Texture2DBase{ + return (this._baseDiffuseMethod.texture); + } + override public function set texture(value:Texture2DBase):void{ + this._baseDiffuseMethod.texture = value; + } + override public function get diffuseAlpha():Number{ + return (this._baseDiffuseMethod.diffuseAlpha); + } + override public function get diffuseColor():uint{ + return (this._baseDiffuseMethod.diffuseColor); + } + override public function set diffuseColor(diffuseColor:uint):void{ + this._baseDiffuseMethod.diffuseColor = diffuseColor; + } + override public function set diffuseAlpha(value:Number):void{ + this._baseDiffuseMethod.diffuseAlpha = value; + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (this._baseDiffuseMethod.getFragmentPreLightingCode(vo, regCache)); + } + override function getFragmentCodePerLight(vo:MethodVO, lightIndex:int, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + var code:String = this._baseDiffuseMethod.getFragmentCodePerLight(vo, lightIndex, lightDirReg, lightColReg, regCache); + _totalLightColorReg = this._baseDiffuseMethod._totalLightColorReg; + return (code); + } + override function getFragmentCodePerProbe(vo:MethodVO, lightIndex:int, cubeMapReg:ShaderRegisterElement, weightRegister:String, regCache:ShaderRegisterCache):String{ + var code:String = this._baseDiffuseMethod.getFragmentCodePerProbe(vo, lightIndex, cubeMapReg, weightRegister, regCache); + _totalLightColorReg = this._baseDiffuseMethod._totalLightColorReg; + return (code); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + this._baseDiffuseMethod.activate(vo, stage3DProxy); + } + override function deactivate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + this._baseDiffuseMethod.deactivate(vo, stage3DProxy); + } + override function getVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (this._baseDiffuseMethod.getVertexCode(vo, regCache)); + } + override function getFragmentPostLightingCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + return (this._baseDiffuseMethod.getFragmentPostLightingCode(vo, regCache, targetReg)); + } + override function reset():void{ + this._baseDiffuseMethod.reset(); + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._baseDiffuseMethod.cleanCompilationData(); + } + override function set globalPosReg(value:ShaderRegisterElement):void{ + this._baseDiffuseMethod.globalPosReg = (_globalPosReg = value); + } + override function set UVFragmentReg(value:ShaderRegisterElement):void{ + this._baseDiffuseMethod.UVFragmentReg = (_uvFragmentReg = value); + } + override function set secondaryUVFragmentReg(value:ShaderRegisterElement):void{ + this._baseDiffuseMethod.secondaryUVFragmentReg = (_secondaryUVFragmentReg = value); + } + override function get viewDirFragmentReg():ShaderRegisterElement{ + return (_viewDirFragmentReg); + } + override function set viewDirFragmentReg(value:ShaderRegisterElement):void{ + this._baseDiffuseMethod.viewDirFragmentReg = (_viewDirFragmentReg = value); + } + override public function set viewDirVaryingReg(value:ShaderRegisterElement):void{ + _viewDirVaryingReg = (this._baseDiffuseMethod.viewDirVaryingReg = value); + } + override function set projectionReg(value:ShaderRegisterElement):void{ + _projectionReg = (this._baseDiffuseMethod.projectionReg = value); + } + override function get normalFragmentReg():ShaderRegisterElement{ + return (_normalFragmentReg); + } + override function set normalFragmentReg(value:ShaderRegisterElement):void{ + this._baseDiffuseMethod.normalFragmentReg = (_normalFragmentReg = value); + } + override function set shadowRegister(value:ShaderRegisterElement):void{ + super.shadowRegister = value; + this._baseDiffuseMethod.shadowRegister = value; + } + override function set tangentVaryingReg(value:ShaderRegisterElement):void{ + super.tangentVaryingReg = value; + this._baseDiffuseMethod.tangentVaryingReg = value; + } + private function onShaderInvalidated(event:ShadingMethodEvent):void{ + invalidateShaderProgram(); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/CompositeSpecularMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/CompositeSpecularMethod.as new file mode 100644 index 0000000..74eebab --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/CompositeSpecularMethod.as @@ -0,0 +1,121 @@ +package away3d.materials.methods { + import away3d.events.*; + import __AS3__.vec.*; + import away3d.materials.passes.*; + import away3d.textures.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class CompositeSpecularMethod extends BasicSpecularMethod { + + private var _baseSpecularMethod:BasicSpecularMethod; + + public function CompositeSpecularMethod(modulateMethod:Function, baseSpecularMethod:BasicSpecularMethod=null){ + super(); + this._baseSpecularMethod = ((baseSpecularMethod) || (new BasicSpecularMethod())); + this._baseSpecularMethod._modulateMethod = modulateMethod; + this._baseSpecularMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + } + override function initVO(vo:MethodVO):void{ + this._baseSpecularMethod.initVO(vo); + } + override function initConstants(vo:MethodVO):void{ + this._baseSpecularMethod.initConstants(vo); + } + override public function get gloss():Number{ + return (this._baseSpecularMethod.gloss); + } + override public function set gloss(value:Number):void{ + this._baseSpecularMethod.gloss = value; + } + override public function get specular():Number{ + return (this._baseSpecularMethod.specular); + } + override public function set specular(value:Number):void{ + this._baseSpecularMethod.specular = value; + } + override public function get shadingModel():String{ + return (this._baseSpecularMethod.shadingModel); + } + override public function set shadingModel(value:String):void{ + this._baseSpecularMethod.shadingModel = value; + } + override public function get passes():Vector.{ + return (this._baseSpecularMethod.passes); + } + override public function dispose():void{ + this._baseSpecularMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._baseSpecularMethod.dispose(); + } + override public function get texture():Texture2DBase{ + return (this._baseSpecularMethod.texture); + } + override public function set texture(value:Texture2DBase):void{ + this._baseSpecularMethod.texture = value; + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + this._baseSpecularMethod.activate(vo, stage3DProxy); + } + override function deactivate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + this._baseSpecularMethod.deactivate(vo, stage3DProxy); + } + override function get normalFragmentReg():ShaderRegisterElement{ + return (this._baseSpecularMethod.normalFragmentReg); + } + override function set normalFragmentReg(value:ShaderRegisterElement):void{ + _normalFragmentReg = (this._baseSpecularMethod.normalFragmentReg = value); + } + override function set globalPosReg(value:ShaderRegisterElement):void{ + this._baseSpecularMethod.globalPosReg = (_globalPosReg = value); + } + override function set UVFragmentReg(value:ShaderRegisterElement):void{ + this._baseSpecularMethod.UVFragmentReg = value; + } + override function set secondaryUVFragmentReg(value:ShaderRegisterElement):void{ + this._baseSpecularMethod.secondaryUVFragmentReg = (_secondaryUVFragmentReg = value); + } + override function set viewDirFragmentReg(value:ShaderRegisterElement):void{ + _viewDirFragmentReg = (this._baseSpecularMethod.viewDirFragmentReg = value); + } + override function set projectionReg(value:ShaderRegisterElement):void{ + _projectionReg = (this._baseSpecularMethod.projectionReg = value); + } + override public function set viewDirVaryingReg(value:ShaderRegisterElement):void{ + _viewDirVaryingReg = (this._baseSpecularMethod.viewDirVaryingReg = value); + } + override function getVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (this._baseSpecularMethod.getVertexCode(vo, regCache)); + } + override function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (this._baseSpecularMethod.getFragmentPreLightingCode(vo, regCache)); + } + override function getFragmentCodePerLight(vo:MethodVO, lightIndex:int, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + return (this._baseSpecularMethod.getFragmentCodePerLight(vo, lightIndex, lightDirReg, lightColReg, regCache)); + } + override function getFragmentCodePerProbe(vo:MethodVO, lightIndex:int, cubeMapReg:ShaderRegisterElement, weightRegister:String, regCache:ShaderRegisterCache):String{ + return (this._baseSpecularMethod.getFragmentCodePerProbe(vo, lightIndex, cubeMapReg, weightRegister, regCache)); + } + override function getFragmentPostLightingCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + return (this._baseSpecularMethod.getFragmentPostLightingCode(vo, regCache, targetReg)); + } + override function reset():void{ + this._baseSpecularMethod.reset(); + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._baseSpecularMethod.cleanCompilationData(); + } + override function set shadowRegister(value:ShaderRegisterElement):void{ + super.shadowRegister = value; + this._baseSpecularMethod.shadowRegister = value; + } + override function set tangentVaryingReg(value:ShaderRegisterElement):void{ + super.tangentVaryingReg = value; + this._baseSpecularMethod.tangentVaryingReg = value; + } + private function onShaderInvalidated(event:ShadingMethodEvent):void{ + invalidateShaderProgram(); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/EffectMethodBase.as b/flash_decompiled/watchdog/away3d/materials/methods/EffectMethodBase.as new file mode 100644 index 0000000..281e296 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/EffectMethodBase.as @@ -0,0 +1,15 @@ +package away3d.materials.methods { + import away3d.errors.*; + import away3d.materials.utils.*; + + public class EffectMethodBase extends ShadingMethodBase { + + public function EffectMethodBase(){ + super(); + } + function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + throw (new AbstractMethodError()); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/FogMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/FogMethod.as new file mode 100644 index 0000000..407a3ec --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/FogMethod.as @@ -0,0 +1,72 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class FogMethod extends EffectMethodBase { + + private var _minDistance:Number = 0; + private var _maxDistance:Number = 1000; + private var _fogColor:uint; + private var _fogR:Number; + private var _fogG:Number; + private var _fogB:Number; + + public function FogMethod(minDistance:Number, maxDistance:Number, fogColor:uint=0x808080){ + super(); + this.minDistance = minDistance; + this.maxDistance = maxDistance; + this.fogColor = fogColor; + } + override function initVO(vo:MethodVO):void{ + vo.needsView = true; + } + override function initConstants(vo:MethodVO):void{ + var data:Vector. = vo.fragmentData; + var index:int = vo.fragmentConstantsIndex; + data[(index + 3)] = 1; + data[(index + 6)] = 0; + data[(index + 7)] = 0; + } + public function get minDistance():Number{ + return (this._minDistance); + } + public function set minDistance(value:Number):void{ + this._minDistance = value; + } + public function get maxDistance():Number{ + return (this._maxDistance); + } + public function set maxDistance(value:Number):void{ + this._maxDistance = value; + } + public function get fogColor():uint{ + return (this._fogColor); + } + public function set fogColor(value:uint):void{ + this._fogColor = value; + this._fogR = (((value >> 16) & 0xFF) / 0xFF); + this._fogG = (((value >> 8) & 0xFF) / 0xFF); + this._fogB = ((value & 0xFF) / 0xFF); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var data:Vector. = vo.fragmentData; + var index:int = vo.fragmentConstantsIndex; + data[index] = this._fogR; + data[(index + 1)] = this._fogG; + data[(index + 2)] = this._fogB; + data[(index + 4)] = this._minDistance; + data[(index + 5)] = (1 / (this._maxDistance - this._minDistance)); + } + override function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var fogColor:ShaderRegisterElement = regCache.getFreeFragmentConstant(); + var fogData:ShaderRegisterElement = regCache.getFreeFragmentConstant(); + var temp:ShaderRegisterElement = regCache.getFreeFragmentVectorTemp(); + var code:String = ""; + vo.fragmentConstantsIndex = (fogColor.index * 4); + code = (code + ((((((((((((((((((((((((((((((((((((((((((((((((((("dp3 " + temp) + ".w, ") + _viewDirVaryingReg) + ".xyz\t, ") + _viewDirVaryingReg) + ".xyz\n") + "sqt ") + temp) + ".w, ") + temp) + ".w\t\t\t\t\t\t\t\t\t\t\n") + "sub ") + temp) + ".w, ") + temp) + ".w, ") + fogData) + ".x\t\t\t\t\t\n") + "mul ") + temp) + ".w, ") + temp) + ".w, ") + fogData) + ".y\t\t\t\t\t\n") + "sat ") + temp) + ".w, ") + temp) + ".w\t\t\t\t\t\t\t\t\t\t\n") + "sub ") + temp) + ".xyz, ") + fogColor) + ".xyz, ") + targetReg) + ".xyz\n") + "mul ") + temp) + ".xyz, ") + temp) + ".xyz, ") + temp) + ".w\t\t\t\t\t\n") + "add ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + temp) + ".xyz\n")); + return (code); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/LightingMethodBase.as b/flash_decompiled/watchdog/away3d/materials/methods/LightingMethodBase.as new file mode 100644 index 0000000..cfd21e8 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/LightingMethodBase.as @@ -0,0 +1,25 @@ +package away3d.materials.methods { + import away3d.materials.utils.*; + + public class LightingMethodBase extends ShadingMethodBase { + + var _modulateMethod:Function; + + public function LightingMethodBase(){ + super(); + } + function getFragmentPreLightingCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (""); + } + function getFragmentCodePerLight(vo:MethodVO, lightIndex:int, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, regCache:ShaderRegisterCache):String{ + return (""); + } + function getFragmentCodePerProbe(vo:MethodVO, lightIndex:int, cubeMapReg:ShaderRegisterElement, weightRegister:String, regCache:ShaderRegisterCache):String{ + return (""); + } + function getFragmentPostLightingCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + return (""); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/MethodVO.as b/flash_decompiled/watchdog/away3d/materials/methods/MethodVO.as new file mode 100644 index 0000000..f0a5dd3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/MethodVO.as @@ -0,0 +1,46 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + + public class MethodVO { + + public var vertexConstantsOffset:int; + public var vertexData:Vector.; + public var fragmentData:Vector.; + public var texturesIndex:int; + public var secondaryTexturesIndex:int; + public var vertexConstantsIndex:int; + public var secondaryVertexConstantsIndex:int; + public var fragmentConstantsIndex:int; + public var secondaryFragmentConstantsIndex:int; + public var useMipmapping:Boolean; + public var useSmoothTextures:Boolean; + public var repeatTextures:Boolean; + public var needsProjection:Boolean; + public var needsView:Boolean; + public var needsNormals:Boolean; + public var needsTangents:Boolean; + public var needsUV:Boolean; + public var needsSecondaryUV:Boolean; + public var needsGlobalPos:Boolean; + public var numLights:int; + + public function reset():void{ + this.vertexConstantsOffset = 0; + this.texturesIndex = -1; + this.vertexConstantsIndex = -1; + this.fragmentConstantsIndex = -1; + this.useMipmapping = true; + this.useSmoothTextures = true; + this.repeatTextures = false; + this.needsProjection = false; + this.needsView = false; + this.needsNormals = false; + this.needsTangents = false; + this.needsUV = false; + this.needsSecondaryUV = false; + this.needsGlobalPos = false; + this.numLights = 0; + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/OutlineMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/OutlineMethod.as new file mode 100644 index 0000000..77ba8a5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/OutlineMethod.as @@ -0,0 +1,48 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.materials.passes.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class OutlineMethod extends EffectMethodBase { + + private var _outlinePass:OutlinePass; + + public function OutlineMethod(outlineColor:uint=0, outlineSize:Number=1, showInnerLines:Boolean=true, dedicatedMeshes:Boolean=false){ + super(); + _passes = new Vector.(); + this._outlinePass = new OutlinePass(outlineColor, outlineSize, showInnerLines, dedicatedMeshes); + _passes.push(this._outlinePass); + } + override function initVO(vo:MethodVO):void{ + vo.needsNormals = true; + } + public function get showInnerLines():Boolean{ + return (this._outlinePass.showInnerLines); + } + public function set showInnerLines(value:Boolean):void{ + this._outlinePass.showInnerLines = value; + } + public function get outlineColor():uint{ + return (this._outlinePass.outlineColor); + } + public function set outlineColor(value:uint):void{ + this._outlinePass.outlineColor = value; + } + public function get outlineSize():Number{ + return (this._outlinePass.outlineSize); + } + public function set outlineSize(value:Number):void{ + this._outlinePass.outlineSize = value; + } + override function reset():void{ + super.reset(); + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + } + override function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + return (""); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/RimLightMethod.as b/flash_decompiled/watchdog/away3d/materials/methods/RimLightMethod.as new file mode 100644 index 0000000..5bbc0b6 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/RimLightMethod.as @@ -0,0 +1,84 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.core.managers.*; + import away3d.materials.utils.*; + + public class RimLightMethod extends EffectMethodBase { + + public static const ADD:String = "add"; + public static const MULTIPLY:String = "multiply"; + public static const MIX:String = "mix"; + + private var _color:uint; + private var _blend:String; + private var _colorR:Number; + private var _colorG:Number; + private var _colorB:Number; + private var _strength:Number; + private var _power:Number; + + public function RimLightMethod(color:uint=0xFFFFFF, strength:Number=0.4, power:Number=2, blend:String="mix"){ + super(); + this._blend = blend; + this._strength = strength; + this._power = power; + this.color = color; + } + override function initConstants(vo:MethodVO):void{ + vo.fragmentData[(vo.fragmentConstantsIndex + 3)] = 1; + } + override function initVO(vo:MethodVO):void{ + vo.needsNormals = true; + vo.needsView = true; + } + public function get color():uint{ + return (this._color); + } + public function set color(value:uint):void{ + this._color = value; + this._colorR = (((value >> 16) & 0xFF) / 0xFF); + this._colorG = (((value >> 8) & 0xFF) / 0xFF); + this._colorB = ((value & 0xFF) / 0xFF); + } + public function get strength():Number{ + return (this._strength); + } + public function set strength(value:Number):void{ + this._strength = value; + } + public function get power():Number{ + return (this._power); + } + public function set power(value:Number):void{ + this._power = value; + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var index:int = vo.fragmentConstantsIndex; + var data:Vector. = vo.fragmentData; + data[index] = this._colorR; + data[(index + 1)] = this._colorG; + data[(index + 2)] = this._colorB; + data[(index + 4)] = this._strength; + data[(index + 5)] = this._power; + } + override function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var dataRegister:ShaderRegisterElement = regCache.getFreeFragmentConstant(); + var dataRegister2:ShaderRegisterElement = regCache.getFreeFragmentConstant(); + var temp:ShaderRegisterElement = regCache.getFreeFragmentVectorTemp(); + var code:String = ""; + vo.fragmentConstantsIndex = (dataRegister.index * 4); + code = (code + ((((((((((((((((((((((((((((((((((((((((((((((((((((("dp3 " + temp) + ".x, ") + _viewDirFragmentReg) + ".xyz, ") + _normalFragmentReg) + ".xyz\t\n") + "sat ") + temp) + ".x, ") + temp) + ".x\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n") + "sub ") + temp) + ".x, ") + dataRegister) + ".w, ") + temp) + ".x\t\t\t\t\t\t\t\t\n") + "pow ") + temp) + ".x, ") + temp) + ".x, ") + dataRegister2) + ".y\t\t\t\t\t\t\t\n") + "mul ") + temp) + ".x, ") + temp) + ".x, ") + dataRegister2) + ".x\t\t\t\t\t\t\t\n") + "sub ") + temp) + ".x, ") + dataRegister) + ".w, ") + temp) + ".x\t\t\t\t\t\t\t\t\n") + "mul ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + temp) + ".x\t\t\t\t\t\t\n") + "sub ") + temp) + ".w, ") + dataRegister) + ".w, ") + temp) + ".x\t\t\t\t\t\t\t\t\n")); + if (this._blend == ADD){ + code = (code + ((((((((((((("mul " + temp) + ".xyz, ") + temp) + ".w, ") + dataRegister) + ".xyz\t\t\t\t\t\t\t\n") + "add ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + temp) + ".xyz\t\t\t\t\t\t\n")); + } else { + if (this._blend == MULTIPLY){ + code = (code + ((((((((((((("mul " + temp) + ".xyz, ") + temp) + ".w, ") + dataRegister) + ".xyz\t\t\t\t\t\t\t\n") + "mul ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + temp) + ".xyz\t\t\t\t\t\t\n")); + } else { + code = (code + (((((((((((((((((((("sub " + temp) + ".xyz, ") + dataRegister) + ".xyz, ") + targetReg) + ".xyz\t\t\t\t\n") + "mul ") + temp) + ".xyz, ") + temp) + ".xyz, ") + temp) + ".w\t\t\t\t\t\t\t\t\n") + "add ") + targetReg) + ".xyz, ") + targetReg) + ".xyz, ") + temp) + ".xyz\t\t\t\t\t\n")); + }; + }; + return (code); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/ShadingMethodBase.as b/flash_decompiled/watchdog/away3d/materials/methods/ShadingMethodBase.as new file mode 100644 index 0000000..b30298a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/ShadingMethodBase.as @@ -0,0 +1,124 @@ +package away3d.materials.methods { + import __AS3__.vec.*; + import away3d.materials.passes.*; + import away3d.materials.utils.*; + import away3d.core.managers.*; + import away3d.core.base.*; + import away3d.cameras.*; + import away3d.events.*; + import flash.events.*; + + public class ShadingMethodBase extends EventDispatcher { + + protected var _viewDirVaryingReg:ShaderRegisterElement; + protected var _viewDirFragmentReg:ShaderRegisterElement; + protected var _normalFragmentReg:ShaderRegisterElement; + protected var _uvFragmentReg:ShaderRegisterElement; + protected var _secondaryUVFragmentReg:ShaderRegisterElement; + protected var _tangentVaryingReg:ShaderRegisterElement; + protected var _globalPosReg:ShaderRegisterElement; + protected var _projectionReg:ShaderRegisterElement; + protected var _passes:Vector.; + + public function ShadingMethodBase(){ + super(); + } + function initVO(vo:MethodVO):void{ + } + function initConstants(vo:MethodVO):void{ + } + public function get passes():Vector.{ + return (this._passes); + } + public function dispose():void{ + } + function createMethodVO():MethodVO{ + return (new MethodVO()); + } + function reset():void{ + this.cleanCompilationData(); + } + function cleanCompilationData():void{ + this._viewDirVaryingReg = null; + this._viewDirFragmentReg = null; + this._normalFragmentReg = null; + this._uvFragmentReg = null; + this._globalPosReg = null; + this._projectionReg = null; + } + function get globalPosReg():ShaderRegisterElement{ + return (this._globalPosReg); + } + function set globalPosReg(value:ShaderRegisterElement):void{ + this._globalPosReg = value; + } + function get projectionReg():ShaderRegisterElement{ + return (this._projectionReg); + } + function set projectionReg(value:ShaderRegisterElement):void{ + this._projectionReg = value; + } + function get UVFragmentReg():ShaderRegisterElement{ + return (this._uvFragmentReg); + } + function set UVFragmentReg(value:ShaderRegisterElement):void{ + this._uvFragmentReg = value; + } + function get secondaryUVFragmentReg():ShaderRegisterElement{ + return (this._secondaryUVFragmentReg); + } + function set secondaryUVFragmentReg(value:ShaderRegisterElement):void{ + this._secondaryUVFragmentReg = value; + } + function get viewDirFragmentReg():ShaderRegisterElement{ + return (this._viewDirFragmentReg); + } + function set viewDirFragmentReg(value:ShaderRegisterElement):void{ + this._viewDirFragmentReg = value; + } + public function get viewDirVaryingReg():ShaderRegisterElement{ + return (this._viewDirVaryingReg); + } + public function set viewDirVaryingReg(value:ShaderRegisterElement):void{ + this._viewDirVaryingReg = value; + } + function get normalFragmentReg():ShaderRegisterElement{ + return (this._normalFragmentReg); + } + function set normalFragmentReg(value:ShaderRegisterElement):void{ + this._normalFragmentReg = value; + } + function getVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (""); + } + function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + } + function setRenderState(vo:MethodVO, renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D):void{ + } + function deactivate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + } + protected function getTexSampleCode(vo:MethodVO, targetReg:ShaderRegisterElement, inputReg:ShaderRegisterElement, uvReg:ShaderRegisterElement=null, forceWrap:String=null):String{ + var filter:String; + var wrap:String = ((forceWrap) || (((vo.repeatTextures) ? "wrap" : "clamp"))); + if (vo.useSmoothTextures){ + filter = ((vo.useMipmapping) ? "linear,miplinear" : "linear"); + } else { + filter = ((vo.useMipmapping) ? "nearest,mipnearest" : "nearest"); + }; + uvReg = ((uvReg) || (this._uvFragmentReg)); + return ((((((((((("tex " + targetReg.toString()) + ", ") + uvReg.toString()) + ", ") + inputReg.toString()) + " <2d,") + filter) + ",") + wrap) + ">\n")); + } + protected function invalidateShaderProgram():void{ + dispatchEvent(new ShadingMethodEvent(ShadingMethodEvent.SHADER_INVALIDATED)); + } + public function copyFrom(method:ShadingMethodBase):void{ + } + function get tangentVaryingReg():ShaderRegisterElement{ + return (this._tangentVaryingReg); + } + function set tangentVaryingReg(value:ShaderRegisterElement):void{ + this._tangentVaryingReg = value; + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/ShadowMapMethodBase.as b/flash_decompiled/watchdog/away3d/materials/methods/ShadowMapMethodBase.as new file mode 100644 index 0000000..f23e7f0 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/ShadowMapMethodBase.as @@ -0,0 +1,142 @@ +package away3d.materials.methods { + import flash.geom.*; + import away3d.lights.*; + import __AS3__.vec.*; + import away3d.materials.utils.*; + import away3d.errors.*; + import away3d.lights.shadowmaps.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + + public class ShadowMapMethodBase extends ShadingMethodBase { + + private var _castingLight:LightBase; + protected var _depthMapCoordReg:ShaderRegisterElement; + private var _projMatrix:Matrix3D; + private var _shadowMapper:ShadowMapperBase; + protected var _usePoint:Boolean; + private var _epsilon:Number; + private var _alpha:Number = 1; + + public function ShadowMapMethodBase(castingLight:LightBase){ + this._projMatrix = new Matrix3D(); + this._usePoint = (castingLight is PointLight); + super(); + this._castingLight = castingLight; + castingLight.castsShadows = true; + this._shadowMapper = castingLight.shadowMapper; + this._epsilon = ((this._usePoint) ? 0.01 : 0.002); + } + override function initVO(vo:MethodVO):void{ + vo.needsView = true; + vo.needsGlobalPos = this._usePoint; + vo.needsNormals = (vo.numLights > 0); + } + override function initConstants(vo:MethodVO):void{ + var fragmentData:Vector. = vo.fragmentData; + var vertexData:Vector. = vo.vertexData; + var index:int = vo.fragmentConstantsIndex; + fragmentData[index] = 1; + fragmentData[(index + 1)] = (1 / 0xFF); + fragmentData[(index + 2)] = (1 / 65025); + fragmentData[(index + 3)] = (1 / 16581375); + fragmentData[(index + 6)] = 0; + fragmentData[(index + 7)] = 1; + if (this._usePoint){ + fragmentData[(index + 8)] = 0; + fragmentData[(index + 9)] = 0; + fragmentData[(index + 10)] = 0; + fragmentData[(index + 11)] = 1; + }; + index = vo.vertexConstantsIndex; + if (index != -1){ + vertexData[index] = 0.5; + vertexData[(index + 1)] = -0.5; + vertexData[(index + 2)] = 1; + vertexData[(index + 3)] = 1; + }; + } + public function get alpha():Number{ + return (this._alpha); + } + public function set alpha(value:Number):void{ + this._alpha = value; + } + function get depthMapCoordReg():ShaderRegisterElement{ + return (this._depthMapCoordReg); + } + function set depthMapCoordReg(value:ShaderRegisterElement):void{ + this._depthMapCoordReg = value; + } + public function get castingLight():LightBase{ + return (this._castingLight); + } + public function get epsilon():Number{ + return (this._epsilon); + } + public function set epsilon(value:Number):void{ + this._epsilon = value; + } + override function cleanCompilationData():void{ + super.cleanCompilationData(); + this._depthMapCoordReg = null; + } + override function getVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + return (((this._usePoint) ? this.getPointVertexCode(vo, regCache) : this.getPlanarVertexCode(vo, regCache))); + } + protected function getPointVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + vo.vertexConstantsIndex = -1; + return (""); + } + protected function getPlanarVertexCode(vo:MethodVO, regCache:ShaderRegisterCache):String{ + var code:String = ""; + var temp:ShaderRegisterElement = regCache.getFreeVertexVectorTemp(); + var toTexReg:ShaderRegisterElement = regCache.getFreeVertexConstant(); + var depthMapProj:ShaderRegisterElement = regCache.getFreeVertexConstant(); + regCache.getFreeVertexConstant(); + regCache.getFreeVertexConstant(); + regCache.getFreeVertexConstant(); + this._depthMapCoordReg = regCache.getFreeVarying(); + vo.vertexConstantsIndex = ((toTexReg.index - vo.vertexConstantsOffset) * 4); + code = (code + (((((((((((((((((((((((((((((((((((((("m44 " + temp) + ", vt0, ") + depthMapProj) + "\n") + "rcp ") + temp) + ".w, ") + temp) + ".w\n") + "mul ") + temp) + ".xyz, ") + temp) + ".xyz, ") + temp) + ".w\n") + "mul ") + temp) + ".xy, ") + temp) + ".xy, ") + toTexReg) + ".xy\n") + "add ") + temp) + ".xy, ") + temp) + ".xy, ") + toTexReg) + ".xx\n") + "mov ") + this._depthMapCoordReg) + ".xyz, ") + temp) + ".xyz\n") + "mov ") + this._depthMapCoordReg) + ".w, va0.w\n")); + return (code); + } + function getFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + var code:String = ((this._usePoint) ? this.getPointFragmentCode(vo, regCache, targetReg) : this.getPlanarFragmentCode(vo, regCache, targetReg)); + code = (code + ((((((((((("add " + targetReg) + ".w, ") + targetReg) + ".w, fc") + ((vo.fragmentConstantsIndex / 4) + 1)) + ".y\n") + "sat ") + targetReg) + ".w, ") + targetReg) + ".w\n")); + return (code); + } + protected function getPlanarFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + throw (new AbstractMethodError()); + } + protected function getPointFragmentCode(vo:MethodVO, regCache:ShaderRegisterCache, targetReg:ShaderRegisterElement):String{ + throw (new AbstractMethodError()); + } + override function setRenderState(vo:MethodVO, renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D):void{ + if (!(this._usePoint)){ + this._projMatrix.copyFrom(DirectionalShadowMapper(this._shadowMapper).depthProjection); + this._projMatrix.prepend(renderable.sceneTransform); + this._projMatrix.copyRawDataTo(vo.vertexData, (vo.vertexConstantsIndex + 4), true); + }; + } + override function activate(vo:MethodVO, stage3DProxy:Stage3DProxy):void{ + var pos:Vector3D; + var f:Number; + var fragmentData:Vector. = vo.fragmentData; + var index:int = vo.fragmentConstantsIndex; + fragmentData[(index + 4)] = -(this._epsilon); + fragmentData[(index + 5)] = (1 - this._alpha); + if (this._usePoint){ + pos = this._castingLight.scenePosition; + fragmentData[(index + 8)] = pos.x; + fragmentData[(index + 9)] = pos.y; + fragmentData[(index + 10)] = pos.z; + f = PointLight(this._castingLight)._fallOff; + fragmentData[(index + 11)] = (1 / ((2 * f) * f)); + }; + stage3DProxy.setTextureAt(vo.texturesIndex, this._castingLight.shadowMapper.depthMap.getTextureForStage3D(stage3DProxy)); + } + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/methods/SpecularShadingModel.as b/flash_decompiled/watchdog/away3d/materials/methods/SpecularShadingModel.as new file mode 100644 index 0000000..8b3eb53 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/methods/SpecularShadingModel.as @@ -0,0 +1,9 @@ +package away3d.materials.methods { + + public class SpecularShadingModel { + + public static const BLINN_PHONG:String = "blinnPhong"; + public static const PHONG:String = "phong"; + + } +}//package away3d.materials.methods diff --git a/flash_decompiled/watchdog/away3d/materials/passes/DefaultScreenPass.as b/flash_decompiled/watchdog/away3d/materials/passes/DefaultScreenPass.as new file mode 100644 index 0000000..6fb330d --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/DefaultScreenPass.as @@ -0,0 +1,1363 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import away3d.materials.*; + import away3d.materials.methods.*; + import away3d.events.*; + import flash.geom.*; + import away3d.textures.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.core.base.*; + import away3d.materials.lightpickers.*; + import away3d.materials.utils.*; + import away3d.lights.*; + + public class DefaultScreenPass extends MaterialPassBase { + + private var _specularLightSources:uint = 1; + private var _diffuseLightSources:uint = 3; + private var _combinedLightSources:uint; + private var _colorTransformMethod:ColorTransformMethod; + private var _colorTransformMethodVO:MethodVO; + private var _normalMethod:BasicNormalMethod; + private var _normalMethodVO:MethodVO; + private var _ambientMethod:BasicAmbientMethod; + private var _ambientMethodVO:MethodVO; + private var _shadowMethod:ShadowMapMethodBase; + private var _shadowMethodVO:MethodVO; + private var _diffuseMethod:BasicDiffuseMethod; + private var _diffuseMethodVO:MethodVO; + private var _specularMethod:BasicSpecularMethod; + private var _specularMethodVO:MethodVO; + private var _methods:Vector.; + private var _registerCache:ShaderRegisterCache; + private var _vertexCode:String; + private var _fragmentCode:String; + private var _projectionDependencies:uint; + private var _normalDependencies:uint; + private var _viewDirDependencies:uint; + private var _uvDependencies:uint; + private var _secondaryUVDependencies:uint; + private var _globalPosDependencies:uint; + protected var _uvBufferIndex:int; + protected var _secondaryUVBufferIndex:int; + protected var _normalBufferIndex:int; + protected var _tangentBufferIndex:int; + protected var _sceneMatrixIndex:int; + protected var _sceneNormalMatrixIndex:int; + protected var _lightDataIndex:int; + protected var _cameraPositionIndex:int; + protected var _uvTransformIndex:int; + private var _projectionFragmentReg:ShaderRegisterElement; + private var _normalFragmentReg:ShaderRegisterElement; + private var _viewDirFragmentReg:ShaderRegisterElement; + private var _lightInputIndices:Vector.; + private var _lightProbeDiffuseIndices:Vector.; + private var _lightProbeSpecularIndices:Vector.; + private var _normalVarying:ShaderRegisterElement; + private var _tangentVarying:ShaderRegisterElement; + private var _bitangentVarying:ShaderRegisterElement; + private var _uvVaryingReg:ShaderRegisterElement; + private var _secondaryUVVaryingReg:ShaderRegisterElement; + private var _viewDirVaryingReg:ShaderRegisterElement; + private var _shadedTargetReg:ShaderRegisterElement; + private var _globalPositionVertexReg:ShaderRegisterElement; + private var _globalPositionVaryingReg:ShaderRegisterElement; + private var _localPositionRegister:ShaderRegisterElement; + private var _positionMatrixRegs:Vector.; + private var _normalInput:ShaderRegisterElement; + private var _tangentInput:ShaderRegisterElement; + private var _animatedNormalReg:ShaderRegisterElement; + private var _animatedTangentReg:ShaderRegisterElement; + private var _commonsReg:ShaderRegisterElement; + private var _commonsDataIndex:int; + private var _vertexConstantIndex:uint; + private var _vertexConstantData:Vector.; + private var _fragmentConstantData:Vector.; + var _passes:Vector.; + var _passesDirty:Boolean; + private var _animateUVs:Boolean; + private var _numLights:int; + private var _lightDataLength:int; + private var _pointLightRegisters:Vector.; + private var _dirLightRegisters:Vector.; + private var _diffuseLightIndex:int; + private var _specularLightIndex:int; + private var _probeWeightsIndex:int; + private var _numProbeRegisters:uint; + private var _usingSpecularMethod:Boolean; + private var _usesGlobalPosFragment:Boolean = true; + private var _tangentDependencies:int; + private var _ambientLightR:Number; + private var _ambientLightG:Number; + private var _ambientLightB:Number; + private var _projectedTargetRegister:String; + + public function DefaultScreenPass(material:MaterialBase){ + this._vertexConstantData = new Vector.(); + this._fragmentConstantData = new Vector.(); + super(); + _material = material; + this.init(); + } + private function init():void{ + this._methods = new Vector.(); + this._normalMethod = new BasicNormalMethod(); + this._ambientMethod = new BasicAmbientMethod(); + this._diffuseMethod = new BasicDiffuseMethod(); + this._specularMethod = new BasicSpecularMethod(); + this._normalMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._diffuseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._specularMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._ambientMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._normalMethodVO = this._normalMethod.createMethodVO(); + this._ambientMethodVO = this._ambientMethod.createMethodVO(); + this._diffuseMethodVO = this._diffuseMethod.createMethodVO(); + this._specularMethodVO = this._specularMethod.createMethodVO(); + } + public function get animateUVs():Boolean{ + return (this._animateUVs); + } + public function set animateUVs(value:Boolean):void{ + this._animateUVs = value; + if (((((value) && (!(this._animateUVs)))) || (((!(value)) && (this._animateUVs))))){ + this.invalidateShaderProgram(); + }; + } + override public function set mipmap(value:Boolean):void{ + if (_mipmap == value){ + return; + }; + super.mipmap = value; + } + public function get specularLightSources():uint{ + return (this._specularLightSources); + } + public function set specularLightSources(value:uint):void{ + this._specularLightSources = value; + } + public function get diffuseLightSources():uint{ + return (this._diffuseLightSources); + } + public function set diffuseLightSources(value:uint):void{ + this._diffuseLightSources = value; + } + public function get colorTransform():ColorTransform{ + return (((this._colorTransformMethod) ? this._colorTransformMethod.colorTransform : null)); + } + public function set colorTransform(value:ColorTransform):void{ + if (value){ + this.colorTransformMethod = ((this.colorTransformMethod) || (new ColorTransformMethod())); + this._colorTransformMethod.colorTransform = value; + } else { + if (!(value)){ + if (this._colorTransformMethod){ + this.colorTransformMethod = null; + }; + this.colorTransformMethod = (this._colorTransformMethod = null); + }; + }; + } + override public function dispose():void{ + super.dispose(); + this._normalMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._normalMethod.dispose(); + this._diffuseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._diffuseMethod.dispose(); + if (this._shadowMethod){ + this._diffuseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._shadowMethod.dispose(); + }; + this._ambientMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._ambientMethod.dispose(); + if (this._specularMethod){ + this._ambientMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._specularMethod.dispose(); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._colorTransformMethod.dispose(); + }; + var i:int; + while (i < this._methods.length) { + this._methods[i].method.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._methods[i].method.dispose(); + i++; + }; + this._methods = null; + } + public function addMethod(method:EffectMethodBase):void{ + this._methods.push(new MethodSet(method)); + method.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this.invalidateShaderProgram(); + } + public function hasMethod(method:EffectMethodBase):Boolean{ + return (!((this.getMethodSetForMethod(method) == null))); + } + public function addMethodAt(method:EffectMethodBase, index:int):void{ + this._methods.splice(index, 0, new MethodSet(method)); + method.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this.invalidateShaderProgram(); + } + public function getMethodAt(index:int):EffectMethodBase{ + return (EffectMethodBase(this._methods[index].method)); + } + public function get numMethods():int{ + return (this._methods.length); + } + public function removeMethod(method:EffectMethodBase):void{ + var index:int; + var methodSet:MethodSet = this.getMethodSetForMethod(method); + if (methodSet != null){ + index = this._methods.indexOf(methodSet); + this._methods.splice(index, 1); + method.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this.invalidateShaderProgram(); + }; + } + public function get normalMap():Texture2DBase{ + return (this._normalMethod.normalMap); + } + public function set normalMap(value:Texture2DBase):void{ + this._normalMethod.normalMap = value; + } + public function get normalMethod():BasicNormalMethod{ + return (this._normalMethod); + } + public function set normalMethod(value:BasicNormalMethod):void{ + this._normalMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + value.copyFrom(this._normalMethod); + this._normalMethod = value; + this._normalMethodVO = this._normalMethod.createMethodVO(); + this._normalMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this.invalidateShaderProgram(); + } + public function get ambientMethod():BasicAmbientMethod{ + return (this._ambientMethod); + } + public function set ambientMethod(value:BasicAmbientMethod):void{ + this._ambientMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + value.copyFrom(this._ambientMethod); + this._ambientMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._ambientMethod = value; + this._ambientMethodVO = this._ambientMethod.createMethodVO(); + this.invalidateShaderProgram(); + } + public function get shadowMethod():ShadowMapMethodBase{ + return (this._shadowMethod); + } + public function set shadowMethod(value:ShadowMapMethodBase):void{ + if (this._shadowMethod){ + this._shadowMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + }; + this._shadowMethod = value; + if (this._shadowMethod){ + this._shadowMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._shadowMethodVO = this._shadowMethod.createMethodVO(); + } else { + this._shadowMethodVO = null; + }; + this.invalidateShaderProgram(); + } + public function get diffuseMethod():BasicDiffuseMethod{ + return (this._diffuseMethod); + } + public function set diffuseMethod(value:BasicDiffuseMethod):void{ + this._diffuseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + value.copyFrom(this._diffuseMethod); + this._diffuseMethod = value; + this._diffuseMethodVO = this._diffuseMethod.createMethodVO(); + this._diffuseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this.invalidateShaderProgram(); + } + public function get specularMethod():BasicSpecularMethod{ + return (this._specularMethod); + } + public function set specularMethod(value:BasicSpecularMethod):void{ + if (this._specularMethod){ + this._specularMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + if (value){ + value.copyFrom(this._specularMethod); + }; + }; + this._specularMethod = value; + if (this._specularMethod){ + this._specularMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._specularMethodVO = this._specularMethod.createMethodVO(); + } else { + this._specularMethodVO = null; + }; + this.invalidateShaderProgram(); + } + function get colorTransformMethod():ColorTransformMethod{ + return (this._colorTransformMethod); + } + function set colorTransformMethod(value:ColorTransformMethod):void{ + if (this._colorTransformMethod == value){ + return; + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + }; + if (((!(this._colorTransformMethod)) || (!(value)))){ + this.invalidateShaderProgram(); + }; + this._colorTransformMethod = value; + if (this._colorTransformMethod){ + this._colorTransformMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this.onShaderInvalidated); + this._colorTransformMethodVO = this._colorTransformMethod.createMethodVO(); + } else { + this._colorTransformMethodVO = null; + }; + } + override function set numPointLights(value:uint):void{ + super.numPointLights = value; + this.invalidateShaderProgram(); + } + override function set numDirectionalLights(value:uint):void{ + super.numDirectionalLights = value; + this.invalidateShaderProgram(); + } + override function set numLightProbes(value:uint):void{ + super.numLightProbes = value; + this.invalidateShaderProgram(); + } + override function getVertexCode(code:String):String{ + var normal:String = (((_animationTargetRegisters.length > 1)) ? _animationTargetRegisters[1] : null); + var projectionVertexCode:String = this.getProjectionCode(_animationTargetRegisters[0], this._projectedTargetRegister, normal); + this._vertexCode = ((code + projectionVertexCode) + this._vertexCode); + return (this._vertexCode); + } + private function getProjectionCode(positionRegister:String, projectionRegister:String, normalRegister:String):String{ + var code:String = ""; + var pos:String = positionRegister; + if (projectionRegister){ + code = (code + (((((((("m44 " + projectionRegister) + ", ") + pos) + ", vc0\t\t\n") + "mov vt7, ") + projectionRegister) + "\n") + "mul op, vt7, vc4\n")); + } else { + code = (code + ((("m44 vt7, " + pos) + ", vc0\t\t\n") + "mul op, vt7, vc4\n")); + }; + return (code); + } + override function getFragmentCode():String{ + return (this._fragmentCode); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var set:MethodSet; + var pos:Vector3D; + var context:Context3D = stage3DProxy._context3D; + var len:uint = this._methods.length; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + if ((((this._normalDependencies > 0)) && (this._normalMethod.hasOutput))){ + this._normalMethod.activate(this._normalMethodVO, stage3DProxy); + }; + this._ambientMethod.activate(this._ambientMethodVO, stage3DProxy); + if (this._shadowMethod){ + this._shadowMethod.activate(this._shadowMethodVO, stage3DProxy); + }; + this._diffuseMethod.activate(this._diffuseMethodVO, stage3DProxy); + if (this._usingSpecularMethod){ + this._specularMethod.activate(this._specularMethodVO, stage3DProxy); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.activate(this._colorTransformMethodVO, stage3DProxy); + }; + var i:int; + while (i < len) { + set = this._methods[i]; + set.method.activate(set.data, stage3DProxy); + i++; + }; + if (this._cameraPositionIndex >= 0){ + pos = camera.scenePosition; + this._vertexConstantData[this._cameraPositionIndex] = pos.x; + this._vertexConstantData[(this._cameraPositionIndex + 1)] = pos.y; + this._vertexConstantData[(this._cameraPositionIndex + 2)] = pos.z; + }; + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + var set:MethodSet; + super.deactivate(stage3DProxy); + var len:uint = this._methods.length; + if ((((this._normalDependencies > 0)) && (this._normalMethod.hasOutput))){ + this._normalMethod.deactivate(this._normalMethodVO, stage3DProxy); + }; + this._ambientMethod.deactivate(this._ambientMethodVO, stage3DProxy); + if (this._shadowMethod){ + this._shadowMethod.deactivate(this._shadowMethodVO, stage3DProxy); + }; + this._diffuseMethod.deactivate(this._diffuseMethodVO, stage3DProxy); + if (this._usingSpecularMethod){ + this._specularMethod.deactivate(this._specularMethodVO, stage3DProxy); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.deactivate(this._colorTransformMethodVO, stage3DProxy); + }; + var i:uint; + while (i < len) { + set = this._methods[i]; + set.method.deactivate(set.data, stage3DProxy); + i++; + }; + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var i:uint; + var uvTransform:Matrix; + var set:MethodSet; + var context:Context3D = stage3DProxy._context3D; + if (this._uvBufferIndex >= 0){ + stage3DProxy.setSimpleVertexBuffer(this._uvBufferIndex, renderable.getUVBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_2, renderable.UVBufferOffset); + }; + if (this._secondaryUVBufferIndex >= 0){ + stage3DProxy.setSimpleVertexBuffer(this._secondaryUVBufferIndex, renderable.getSecondaryUVBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_2, renderable.secondaryUVBufferOffset); + }; + if (this._normalBufferIndex >= 0){ + stage3DProxy.setSimpleVertexBuffer(this._normalBufferIndex, renderable.getVertexNormalBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, renderable.normalBufferOffset); + }; + if (this._tangentBufferIndex >= 0){ + stage3DProxy.setSimpleVertexBuffer(this._tangentBufferIndex, renderable.getVertexTangentBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, renderable.tangentBufferOffset); + }; + if (this._animateUVs){ + uvTransform = renderable.uvTransform; + if (uvTransform){ + this._vertexConstantData[this._uvTransformIndex] = uvTransform.a; + this._vertexConstantData[(this._uvTransformIndex + 1)] = uvTransform.b; + this._vertexConstantData[(this._uvTransformIndex + 3)] = uvTransform.tx; + this._vertexConstantData[(this._uvTransformIndex + 4)] = uvTransform.c; + this._vertexConstantData[(this._uvTransformIndex + 5)] = uvTransform.d; + this._vertexConstantData[(this._uvTransformIndex + 7)] = uvTransform.ty; + } else { + trace("Warning: animateUVs is set to true with an IRenderable without a uvTransform. Identity matrix assumed."); + this._vertexConstantData[this._uvTransformIndex] = 1; + this._vertexConstantData[(this._uvTransformIndex + 1)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 3)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 4)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 5)] = 1; + this._vertexConstantData[(this._uvTransformIndex + 7)] = 0; + }; + }; + if ((((this._numLights > 0)) && ((this._combinedLightSources & LightSources.LIGHTS)))){ + this.updateLights(lightPicker.directionalLights, lightPicker.pointLights, stage3DProxy); + }; + if ((((_numLightProbes > 0)) && ((this._combinedLightSources & LightSources.PROBES)))){ + this.updateProbes(lightPicker.lightProbes, lightPicker.lightProbeWeights, stage3DProxy); + }; + if (this._sceneMatrixIndex >= 0){ + renderable.sceneTransform.copyRawDataTo(this._vertexConstantData, this._sceneMatrixIndex, true); + }; + if (this._sceneNormalMatrixIndex >= 0){ + renderable.inverseSceneTransform.copyRawDataTo(this._vertexConstantData, this._sceneNormalMatrixIndex, false); + }; + if ((((this._normalDependencies > 0)) && (this._normalMethod.hasOutput))){ + this._normalMethod.setRenderState(this._normalMethodVO, renderable, stage3DProxy, camera); + }; + this._ambientMethod.setRenderState(this._ambientMethodVO, renderable, stage3DProxy, camera); + this._ambientMethod._lightAmbientR = this._ambientLightR; + this._ambientMethod._lightAmbientG = this._ambientLightG; + this._ambientMethod._lightAmbientB = this._ambientLightB; + if (this._shadowMethod){ + this._shadowMethod.setRenderState(this._shadowMethodVO, renderable, stage3DProxy, camera); + }; + this._diffuseMethod.setRenderState(this._diffuseMethodVO, renderable, stage3DProxy, camera); + if (this._usingSpecularMethod){ + this._specularMethod.setRenderState(this._specularMethodVO, renderable, stage3DProxy, camera); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.setRenderState(this._colorTransformMethodVO, renderable, stage3DProxy, camera); + }; + var len:uint = this._methods.length; + i = 0; + while (i < len) { + set = this._methods[i]; + set.method.setRenderState(set.data, renderable, stage3DProxy, camera); + i++; + }; + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, this._vertexConstantIndex, this._vertexConstantData, (_numUsedVertexConstants - this._vertexConstantIndex)); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._fragmentConstantData, _numUsedFragmentConstants); + super.render(renderable, stage3DProxy, camera, lightPicker); + } + override function invalidateShaderProgram(updateMaterial:Boolean=true):void{ + super.invalidateShaderProgram(updateMaterial); + this._passesDirty = true; + this._passes = new Vector.(); + if (this._normalMethod.hasOutput){ + this.addPasses(this._normalMethod.passes); + }; + this.addPasses(this._ambientMethod.passes); + if (this._shadowMethod){ + this.addPasses(this._shadowMethod.passes); + }; + this.addPasses(this._diffuseMethod.passes); + if (this._specularMethod){ + this.addPasses(this._specularMethod.passes); + }; + if (this._colorTransformMethod){ + this.addPasses(this._colorTransformMethod.passes); + }; + var i:uint; + while (i < this._methods.length) { + this.addPasses(this._methods[i].method.passes); + i++; + }; + } + override function updateProgram(stage3DProxy:Stage3DProxy):void{ + this.reset(); + super.updateProgram(stage3DProxy); + } + private function reset():void{ + this._numLights = (_numPointLights + _numDirectionalLights); + this._numProbeRegisters = Math.ceil((_numLightProbes / 4)); + if (this._specularMethod){ + this._combinedLightSources = (this._specularLightSources | this._diffuseLightSources); + } else { + this._combinedLightSources = this._diffuseLightSources; + }; + this._usingSpecularMethod = ((this._specularMethod) && ((((((this._numLights > 0)) && ((this._specularLightSources & LightSources.LIGHTS)))) || ((((_numLightProbes > 0)) && ((this._specularLightSources & LightSources.PROBES))))))); + this._uvTransformIndex = -1; + this._cameraPositionIndex = -1; + this._commonsDataIndex = -1; + this._uvBufferIndex = -1; + this._secondaryUVBufferIndex = -1; + this._normalBufferIndex = -1; + this._tangentBufferIndex = -1; + this._lightDataIndex = -1; + this._sceneMatrixIndex = -1; + this._sceneNormalMatrixIndex = -1; + this._probeWeightsIndex = -1; + this._pointLightRegisters = new Vector.((_numPointLights * 3), true); + this._dirLightRegisters = new Vector.((_numDirectionalLights * 3), true); + this._lightDataLength = (this._numLights * 3); + this._registerCache = new ShaderRegisterCache(); + this._vertexConstantIndex = (this._registerCache.vertexConstantOffset = 5); + this._registerCache.vertexAttributesOffset = 1; + this._registerCache.reset(); + this._lightInputIndices = new Vector.(this._numLights, true); + this._commonsReg = null; + _numUsedVertexConstants = 0; + _numUsedStreams = 1; + _animatableAttributes = ["va0"]; + _animationTargetRegisters = ["vt0"]; + this._vertexCode = ""; + this._fragmentCode = ""; + this._projectedTargetRegister = null; + this._localPositionRegister = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(this._localPositionRegister, 1); + this.compile(); + _numUsedVertexConstants = this._registerCache.numUsedVertexConstants; + _numUsedFragmentConstants = this._registerCache.numUsedFragmentConstants; + _numUsedStreams = this._registerCache.numUsedStreams; + _numUsedTextures = this._registerCache.numUsedTextures; + this._vertexConstantData.length = ((_numUsedVertexConstants - this._vertexConstantIndex) * 4); + this._fragmentConstantData.length = (_numUsedFragmentConstants * 4); + this.initCommonsData(); + if (this._uvTransformIndex >= 0){ + this.initUVTransformData(); + }; + if (this._cameraPositionIndex >= 0){ + this._vertexConstantData[(this._cameraPositionIndex + 3)] = 1; + }; + this.updateMethodConstants(); + this.cleanUp(); + } + private function updateMethodConstants():void{ + if (this._normalMethod){ + this._normalMethod.initConstants(this._normalMethodVO); + }; + if (this._diffuseMethod){ + this._diffuseMethod.initConstants(this._diffuseMethodVO); + }; + if (this._ambientMethod){ + this._ambientMethod.initConstants(this._ambientMethodVO); + }; + if (this._specularMethod){ + this._specularMethod.initConstants(this._specularMethodVO); + }; + if (this._shadowMethod){ + this._shadowMethod.initConstants(this._shadowMethodVO); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.initConstants(this._colorTransformMethodVO); + }; + var len:uint = this._methods.length; + var i:uint; + while (i < len) { + this._methods[i].method.initConstants(this._methods[i].data); + i++; + }; + } + private function initUVTransformData():void{ + this._vertexConstantData[this._uvTransformIndex] = 1; + this._vertexConstantData[(this._uvTransformIndex + 1)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 2)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 3)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 4)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 5)] = 1; + this._vertexConstantData[(this._uvTransformIndex + 6)] = 0; + this._vertexConstantData[(this._uvTransformIndex + 7)] = 0; + } + private function initCommonsData():void{ + this._fragmentConstantData[this._commonsDataIndex] = 0.5; + this._fragmentConstantData[(this._commonsDataIndex + 1)] = 0; + this._fragmentConstantData[(this._commonsDataIndex + 2)] = 1E-5; + this._fragmentConstantData[(this._commonsDataIndex + 3)] = 1; + } + private function cleanUp():void{ + this.nullifyCompilationData(); + this.cleanUpMethods(); + } + private function nullifyCompilationData():void{ + this._pointLightRegisters = null; + this._dirLightRegisters = null; + this._projectionFragmentReg = null; + this._viewDirFragmentReg = null; + this._normalVarying = null; + this._tangentVarying = null; + this._bitangentVarying = null; + this._uvVaryingReg = null; + this._secondaryUVVaryingReg = null; + this._viewDirVaryingReg = null; + this._shadedTargetReg = null; + this._globalPositionVertexReg = null; + this._globalPositionVaryingReg = null; + this._localPositionRegister = null; + this._positionMatrixRegs = null; + this._normalInput = null; + this._tangentInput = null; + this._animatedNormalReg = null; + this._animatedTangentReg = null; + this._commonsReg = null; + this._registerCache.dispose(); + this._registerCache = null; + } + private function cleanUpMethods():void{ + if (this._normalMethod){ + this._normalMethod.cleanCompilationData(); + }; + if (this._diffuseMethod){ + this._diffuseMethod.cleanCompilationData(); + }; + if (this._ambientMethod){ + this._ambientMethod.cleanCompilationData(); + }; + if (this._specularMethod){ + this._specularMethod.cleanCompilationData(); + }; + if (this._shadowMethod){ + this._shadowMethod.cleanCompilationData(); + }; + if (this._colorTransformMethod){ + this._colorTransformMethod.cleanCompilationData(); + }; + var len:uint = this._methods.length; + var i:uint; + while (i < len) { + this._methods[i].method.cleanCompilationData(); + i++; + }; + } + private function compile():void{ + this.createCommons(); + this.calculateDependencies(); + if (this._projectionDependencies > 0){ + this.compileProjCode(); + }; + if (this._uvDependencies > 0){ + this.compileUVCode(); + }; + if (this._secondaryUVDependencies > 0){ + this.compileSecondaryUVCode(); + }; + if (this._globalPosDependencies > 0){ + this.compileGlobalPositionCode(); + }; + this.updateMethodRegisters(this._normalMethod); + if (this._normalDependencies > 0){ + this._animatedNormalReg = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(this._animatedNormalReg, 1); + if (this._normalDependencies > 0){ + this.compileNormalCode(); + }; + }; + if (this._viewDirDependencies > 0){ + this.compileViewDirCode(); + }; + this.updateMethodRegisters(this._diffuseMethod); + if (this._shadowMethod){ + this.updateMethodRegisters(this._shadowMethod); + }; + this.updateMethodRegisters(this._ambientMethod); + if (this._specularMethod){ + this.updateMethodRegisters(this._specularMethod); + }; + if (this._colorTransformMethod){ + this.updateMethodRegisters(this._colorTransformMethod); + }; + var i:uint; + while (i < this._methods.length) { + this.updateMethodRegisters(this._methods[i].method); + i++; + }; + this._shadedTargetReg = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(this._shadedTargetReg, 1); + this.compileLightingCode(); + this.compileMethods(); + this._fragmentCode = (this._fragmentCode + (((("mov " + this._registerCache.fragmentOutputRegister) + ", ") + this._shadedTargetReg) + "\n")); + this._registerCache.removeFragmentTempUsage(this._shadedTargetReg); + } + private function compileProjCode():void{ + this._projectionFragmentReg = this._registerCache.getFreeVarying(); + this._projectedTargetRegister = this._registerCache.getFreeVertexVectorTemp().toString(); + this._vertexCode = (this._vertexCode + (((("mov " + this._projectionFragmentReg) + ", ") + this._projectedTargetRegister) + "\n")); + } + private function updateMethodRegisters(method:ShadingMethodBase):void{ + method.globalPosReg = this._globalPositionVaryingReg; + method.normalFragmentReg = this._normalFragmentReg; + method.projectionReg = this._projectionFragmentReg; + method.UVFragmentReg = this._uvVaryingReg; + method.tangentVaryingReg = this._tangentVarying; + method.secondaryUVFragmentReg = this._secondaryUVVaryingReg; + method.viewDirFragmentReg = this._viewDirFragmentReg; + method.viewDirVaryingReg = this._viewDirVaryingReg; + } + private function addPasses(passes:Vector.):void{ + if (!(passes)){ + return; + }; + var len:uint = passes.length; + var i:uint; + while (i < len) { + passes[i].material = material; + this._passes.push(passes[i]); + i++; + }; + } + private function calculateDependencies():void{ + var len:uint; + this._normalDependencies = 0; + this._viewDirDependencies = 0; + this._uvDependencies = 0; + this._secondaryUVDependencies = 0; + this._globalPosDependencies = 0; + this.setupAndCountMethodDependencies(this._diffuseMethod, this._diffuseMethodVO); + if (this._shadowMethod){ + this.setupAndCountMethodDependencies(this._shadowMethod, this._shadowMethodVO); + }; + this.setupAndCountMethodDependencies(this._ambientMethod, this._ambientMethodVO); + if (this._usingSpecularMethod){ + this.setupAndCountMethodDependencies(this._specularMethod, this._specularMethodVO); + }; + if (this._colorTransformMethod){ + this.setupAndCountMethodDependencies(this._colorTransformMethod, this._colorTransformMethodVO); + }; + len = this._methods.length; + var i:uint; + while (i < len) { + this.setupAndCountMethodDependencies(this._methods[i].method, this._methods[i].data); + i++; + }; + if ((((this._normalDependencies > 0)) && (this._normalMethod.hasOutput))){ + this.setupAndCountMethodDependencies(this._normalMethod, this._normalMethodVO); + }; + if (this._viewDirDependencies > 0){ + this._globalPosDependencies++; + }; + if ((((_numPointLights > 0)) && ((this._combinedLightSources & LightSources.LIGHTS)))){ + this._globalPosDependencies++; + this._usesGlobalPosFragment = true; + }; + } + private function setupAndCountMethodDependencies(method:ShadingMethodBase, methodVO:MethodVO):void{ + this.setupMethod(method, methodVO); + this.countDependencies(methodVO); + } + private function countDependencies(methodVO:MethodVO):void{ + if (methodVO.needsProjection){ + this._projectionDependencies++; + }; + if (methodVO.needsGlobalPos){ + this._globalPosDependencies++; + this._usesGlobalPosFragment = true; + }; + if (methodVO.needsNormals){ + this._normalDependencies++; + }; + if (methodVO.needsTangents){ + this._tangentDependencies++; + }; + if (methodVO.needsView){ + this._viewDirDependencies++; + }; + if (methodVO.needsUV){ + this._uvDependencies++; + }; + if (methodVO.needsSecondaryUV){ + this._secondaryUVDependencies++; + }; + } + private function setupMethod(method:ShadingMethodBase, methodVO:MethodVO):void{ + method.reset(); + methodVO.reset(); + methodVO.vertexData = this._vertexConstantData; + methodVO.fragmentData = this._fragmentConstantData; + methodVO.vertexConstantsOffset = this._vertexConstantIndex; + methodVO.useSmoothTextures = _smooth; + methodVO.repeatTextures = _repeat; + methodVO.useMipmapping = _mipmap; + methodVO.numLights = (this._numLights + _numLightProbes); + method.initVO(methodVO); + } + private function compileGlobalPositionCode():void{ + this._globalPositionVertexReg = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(this._globalPositionVertexReg, this._globalPosDependencies); + this._positionMatrixRegs = new Vector.(); + this._positionMatrixRegs[0] = this._registerCache.getFreeVertexConstant(); + this._positionMatrixRegs[1] = this._registerCache.getFreeVertexConstant(); + this._positionMatrixRegs[2] = this._registerCache.getFreeVertexConstant(); + this._registerCache.getFreeVertexConstant(); + this._sceneMatrixIndex = ((this._positionMatrixRegs[0].index - this._vertexConstantIndex) * 4); + this._vertexCode = (this._vertexCode + ((((((((((("m44 " + this._globalPositionVertexReg) + ".xyz, ") + this._localPositionRegister.toString()) + ", ") + this._positionMatrixRegs[0].toString()) + "\n") + "mov ") + this._globalPositionVertexReg) + ".w, ") + this._localPositionRegister) + ".w \n")); + if (this._usesGlobalPosFragment){ + this._globalPositionVaryingReg = this._registerCache.getFreeVarying(); + this._vertexCode = (this._vertexCode + (((("mov " + this._globalPositionVaryingReg) + ", ") + this._globalPositionVertexReg) + "\n")); + }; + } + private function compileUVCode():void{ + var uvTransform1:ShaderRegisterElement; + var uvTransform2:ShaderRegisterElement; + var uvAttributeReg:ShaderRegisterElement = this._registerCache.getFreeVertexAttribute(); + this._uvVaryingReg = this._registerCache.getFreeVarying(); + this._uvBufferIndex = uvAttributeReg.index; + if (this._animateUVs){ + uvTransform1 = this._registerCache.getFreeVertexConstant(); + uvTransform2 = this._registerCache.getFreeVertexConstant(); + this._uvTransformIndex = ((uvTransform1.index - this._vertexConstantIndex) * 4); + this._vertexCode = (this._vertexCode + (((((((((((((((((("dp4 " + this._uvVaryingReg) + ".x, ") + uvAttributeReg) + ", ") + uvTransform1) + "\n") + "dp4 ") + this._uvVaryingReg) + ".y, ") + uvAttributeReg) + ", ") + uvTransform2) + "\n") + "mov ") + this._uvVaryingReg) + ".zw, ") + uvAttributeReg) + ".zw \n")); + } else { + this._vertexCode = (this._vertexCode + (((("mov " + this._uvVaryingReg) + ", ") + uvAttributeReg) + "\n")); + }; + } + private function compileSecondaryUVCode():void{ + var uvAttributeReg:ShaderRegisterElement = this._registerCache.getFreeVertexAttribute(); + this._secondaryUVVaryingReg = this._registerCache.getFreeVarying(); + this._secondaryUVBufferIndex = uvAttributeReg.index; + this._vertexCode = (this._vertexCode + (((("mov " + this._secondaryUVVaryingReg) + ", ") + uvAttributeReg) + "\n")); + } + private function compileNormalCode():void{ + var normalMatrix:Vector. = new Vector.(3, true); + this._normalFragmentReg = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(this._normalFragmentReg, this._normalDependencies); + if (((this._normalMethod.hasOutput) && (!(this._normalMethod.tangentSpace)))){ + this._vertexCode = (this._vertexCode + this._normalMethod.getVertexCode(this._normalMethodVO, this._registerCache)); + this._fragmentCode = (this._fragmentCode + this._normalMethod.getFragmentCode(this._normalMethodVO, this._registerCache, this._normalFragmentReg)); + return; + }; + this._normalInput = this._registerCache.getFreeVertexAttribute(); + this._normalBufferIndex = this._normalInput.index; + this._normalVarying = this._registerCache.getFreeVarying(); + _animatableAttributes.push(this._normalInput.toString()); + _animationTargetRegisters.push(this._animatedNormalReg.toString()); + normalMatrix[0] = this._registerCache.getFreeVertexConstant(); + normalMatrix[1] = this._registerCache.getFreeVertexConstant(); + normalMatrix[2] = this._registerCache.getFreeVertexConstant(); + this._registerCache.getFreeVertexConstant(); + this._sceneNormalMatrixIndex = ((normalMatrix[0].index - this._vertexConstantIndex) * 4); + if (this._normalMethod.hasOutput){ + this.compileTangentVertexCode(normalMatrix); + this.compileTangentNormalMapFragmentCode(); + } else { + this._vertexCode = (this._vertexCode + ((((((((((("m33 " + this._normalVarying) + ".xyz, ") + this._animatedNormalReg) + ".xyz, ") + normalMatrix[0]) + "\n") + "mov ") + this._normalVarying) + ".w, ") + this._animatedNormalReg) + ".w\t\n")); + this._fragmentCode = (this._fragmentCode + ((((((((("nrm " + this._normalFragmentReg) + ".xyz, ") + this._normalVarying) + ".xyz\t\n") + "mov ") + this._normalFragmentReg) + ".w, ") + this._normalVarying) + ".w\t\t\n")); + if (this._tangentDependencies > 0){ + this._tangentInput = this._registerCache.getFreeVertexAttribute(); + this._tangentBufferIndex = this._tangentInput.index; + this._tangentVarying = this._registerCache.getFreeVarying(); + this._vertexCode = (this._vertexCode + (((("mov " + this._tangentVarying) + ", ") + this._tangentInput) + "\n")); + }; + }; + this._registerCache.removeVertexTempUsage(this._animatedNormalReg); + } + private function compileTangentVertexCode(matrix:Vector.):void{ + var normalTemp:ShaderRegisterElement; + var tanTemp:ShaderRegisterElement; + var bitanTemp1:ShaderRegisterElement; + var bitanTemp2:ShaderRegisterElement; + this._tangentVarying = this._registerCache.getFreeVarying(); + this._bitangentVarying = this._registerCache.getFreeVarying(); + this._tangentInput = this._registerCache.getFreeVertexAttribute(); + this._tangentBufferIndex = this._tangentInput.index; + this._animatedTangentReg = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(this._animatedTangentReg, 1); + _animatableAttributes.push(this._tangentInput.toString()); + _animationTargetRegisters.push(this._animatedTangentReg.toString()); + normalTemp = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(normalTemp, 1); + this._vertexCode = (this._vertexCode + ((((((((((("m33 " + normalTemp) + ".xyz, ") + this._animatedNormalReg) + ".xyz, ") + matrix[0].toString()) + "\n") + "nrm ") + normalTemp) + ".xyz, ") + normalTemp) + ".xyz\t\n")); + tanTemp = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(tanTemp, 1); + this._vertexCode = (this._vertexCode + ((((((((((("m33 " + tanTemp) + ".xyz, ") + this._animatedTangentReg) + ".xyz, ") + matrix[0].toString()) + "\n") + "nrm ") + tanTemp) + ".xyz, ") + tanTemp) + ".xyz\t\n")); + bitanTemp1 = this._registerCache.getFreeVertexVectorTemp(); + this._registerCache.addVertexTempUsages(bitanTemp1, 1); + bitanTemp2 = this._registerCache.getFreeVertexVectorTemp(); + this._vertexCode = (this._vertexCode + (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("mul " + bitanTemp1) + ".xyz, ") + normalTemp) + ".yzx, ") + tanTemp) + ".zxy\t\n") + "mul ") + bitanTemp2) + ".xyz, ") + normalTemp) + ".zxy, ") + tanTemp) + ".yzx\t\n") + "sub ") + bitanTemp2) + ".xyz, ") + bitanTemp1) + ".xyz, ") + bitanTemp2) + ".xyz\t\n") + "mov ") + this._tangentVarying) + ".x, ") + tanTemp) + ".x\t\n") + "mov ") + this._tangentVarying) + ".y, ") + bitanTemp2) + ".x\t\n") + "mov ") + this._tangentVarying) + ".z, ") + normalTemp) + ".x\t\n") + "mov ") + this._tangentVarying) + ".w, ") + this._normalInput) + ".w\t\n") + "mov ") + this._bitangentVarying) + ".x, ") + tanTemp) + ".y\t\n") + "mov ") + this._bitangentVarying) + ".y, ") + bitanTemp2) + ".y\t\n") + "mov ") + this._bitangentVarying) + ".z, ") + normalTemp) + ".y\t\n") + "mov ") + this._bitangentVarying) + ".w, ") + this._normalInput) + ".w\t\n") + "mov ") + this._normalVarying) + ".x, ") + tanTemp) + ".z\t\n") + "mov ") + this._normalVarying) + ".y, ") + bitanTemp2) + ".z\t\n") + "mov ") + this._normalVarying) + ".z, ") + normalTemp) + ".z\t\n") + "mov ") + this._normalVarying) + ".w, ") + this._normalInput) + ".w\t\n")); + this._registerCache.removeVertexTempUsage(normalTemp); + this._registerCache.removeVertexTempUsage(tanTemp); + this._registerCache.removeVertexTempUsage(bitanTemp1); + this._registerCache.removeVertexTempUsage(this._animatedTangentReg); + } + private function compileTangentNormalMapFragmentCode():void{ + var t:ShaderRegisterElement; + var b:ShaderRegisterElement; + var n:ShaderRegisterElement; + t = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(t, 1); + b = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(b, 1); + n = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(n, 1); + this._fragmentCode = (this._fragmentCode + ((((((((((((((((((("nrm " + t) + ".xyz, ") + this._tangentVarying) + ".xyz\t\n") + "mov ") + t) + ".w, ") + this._tangentVarying) + ".w\t\n") + "nrm ") + b) + ".xyz, ") + this._bitangentVarying) + ".xyz\t\n") + "nrm ") + n) + ".xyz, ") + this._normalVarying) + ".xyz\t\n")); + var temp:ShaderRegisterElement = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(temp, 1); + this._fragmentCode = (this._fragmentCode + ((((((((((((((((((((((((this._normalMethod.getFragmentCode(this._normalMethodVO, this._registerCache, temp) + "sub ") + temp) + ".xyz, ") + temp) + ".xyz, ") + this._commonsReg) + ".xxx\t\n") + "nrm ") + temp) + ".xyz, ") + temp) + ".xyz\t\t\t\t\t\t\t\n") + "m33 ") + this._normalFragmentReg) + ".xyz, ") + temp) + ".xyz, ") + t) + "\t\n") + "mov ") + this._normalFragmentReg) + ".w, ") + this._normalVarying) + ".w\t\t\t\n")); + this._registerCache.removeFragmentTempUsage(temp); + if (this._normalMethodVO.needsView){ + this._registerCache.removeFragmentTempUsage(this._viewDirFragmentReg); + }; + if (this._normalMethodVO.needsGlobalPos){ + this._registerCache.removeVertexTempUsage(this._globalPositionVertexReg); + }; + this._registerCache.removeFragmentTempUsage(b); + this._registerCache.removeFragmentTempUsage(t); + this._registerCache.removeFragmentTempUsage(n); + } + private function createCommons():void{ + this._commonsReg = this._registerCache.getFreeFragmentConstant(); + this._commonsDataIndex = (this._commonsReg.index * 4); + } + private function compileViewDirCode():void{ + var cameraPositionReg:ShaderRegisterElement = this._registerCache.getFreeVertexConstant(); + this._viewDirVaryingReg = this._registerCache.getFreeVarying(); + this._viewDirFragmentReg = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(this._viewDirFragmentReg, this._viewDirDependencies); + this._cameraPositionIndex = ((cameraPositionReg.index - this._vertexConstantIndex) * 4); + this._vertexCode = (this._vertexCode + (((((("sub " + this._viewDirVaryingReg) + ", ") + cameraPositionReg) + ", ") + this._globalPositionVertexReg) + "\n")); + this._fragmentCode = (this._fragmentCode + ((((((((("nrm " + this._viewDirFragmentReg) + ".xyz, ") + this._viewDirVaryingReg) + ".xyz\t\t\n") + "mov ") + this._viewDirFragmentReg) + ".w, ") + this._viewDirVaryingReg) + ".w \t\t\n")); + this._registerCache.removeVertexTempUsage(this._globalPositionVertexReg); + } + private function compileLightingCode():void{ + var shadowReg:ShaderRegisterElement; + this.initLightRegisters(); + this._vertexCode = (this._vertexCode + this._diffuseMethod.getVertexCode(this._diffuseMethodVO, this._registerCache)); + this._fragmentCode = (this._fragmentCode + this._diffuseMethod.getFragmentPreLightingCode(this._diffuseMethodVO, this._registerCache)); + if (this._usingSpecularMethod){ + this._vertexCode = (this._vertexCode + this._specularMethod.getVertexCode(this._specularMethodVO, this._registerCache)); + this._fragmentCode = (this._fragmentCode + this._specularMethod.getFragmentPreLightingCode(this._specularMethodVO, this._registerCache)); + }; + this._diffuseLightIndex = 0; + this._specularLightIndex = 0; + if ((((this._numLights > 0)) && ((this._combinedLightSources & LightSources.LIGHTS)))){ + this.compileDirectionalLightCode(); + this.compilePointLightCode(); + }; + if ((((_numLightProbes > 0)) && ((this._combinedLightSources & LightSources.PROBES)))){ + this.compileLightProbeCode(); + }; + this._vertexCode = (this._vertexCode + this._ambientMethod.getVertexCode(this._ambientMethodVO, this._registerCache)); + this._fragmentCode = (this._fragmentCode + this._ambientMethod.getFragmentCode(this._ambientMethodVO, this._registerCache, this._shadedTargetReg)); + if (this._ambientMethodVO.needsNormals){ + this._registerCache.removeFragmentTempUsage(this._normalFragmentReg); + }; + if (this._ambientMethodVO.needsView){ + this._registerCache.removeFragmentTempUsage(this._viewDirFragmentReg); + }; + if (this._shadowMethod){ + this._vertexCode = (this._vertexCode + this._shadowMethod.getVertexCode(this._shadowMethodVO, this._registerCache)); + if (this._normalDependencies == 0){ + shadowReg = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(shadowReg, 1); + } else { + shadowReg = this._normalFragmentReg; + }; + this._diffuseMethod.shadowRegister = shadowReg; + this._fragmentCode = (this._fragmentCode + this._shadowMethod.getFragmentCode(this._shadowMethodVO, this._registerCache, shadowReg)); + }; + this._fragmentCode = (this._fragmentCode + this._diffuseMethod.getFragmentPostLightingCode(this._diffuseMethodVO, this._registerCache, this._shadedTargetReg)); + if (_alphaPremultiplied){ + this._fragmentCode = (this._fragmentCode + ((((((((((((("add " + this._shadedTargetReg) + ".w, ") + this._shadedTargetReg) + ".w, ") + this._commonsReg) + ".z\n") + "div ") + this._shadedTargetReg) + ".xyz, ") + this._shadedTargetReg) + ".xyz, ") + this._shadedTargetReg) + ".w\n")); + }; + if (this._diffuseMethodVO.needsNormals){ + this._registerCache.removeFragmentTempUsage(this._normalFragmentReg); + }; + if (this._diffuseMethodVO.needsView){ + this._registerCache.removeFragmentTempUsage(this._viewDirFragmentReg); + }; + if (this._usingSpecularMethod){ + this._specularMethod.shadowRegister = shadowReg; + this._fragmentCode = (this._fragmentCode + this._specularMethod.getFragmentPostLightingCode(this._specularMethodVO, this._registerCache, this._shadedTargetReg)); + if (this._specularMethodVO.needsNormals){ + this._registerCache.removeFragmentTempUsage(this._normalFragmentReg); + }; + if (this._specularMethodVO.needsView){ + this._registerCache.removeFragmentTempUsage(this._viewDirFragmentReg); + }; + }; + } + private function initLightRegisters():void{ + var i:uint; + var len:uint; + len = this._dirLightRegisters.length; + i = 0; + while (i < len) { + this._dirLightRegisters[i] = this._registerCache.getFreeFragmentConstant(); + if (this._lightDataIndex == -1){ + this._lightDataIndex = (this._dirLightRegisters[i].index * 4); + }; + i++; + }; + len = this._pointLightRegisters.length; + i = 0; + while (i < len) { + this._pointLightRegisters[i] = this._registerCache.getFreeFragmentConstant(); + if (this._lightDataIndex == -1){ + this._lightDataIndex = (this._pointLightRegisters[i].index * 4); + }; + i++; + }; + } + private function compileDirectionalLightCode():void{ + var diffuseColorReg:ShaderRegisterElement; + var specularColorReg:ShaderRegisterElement; + var lightDirReg:ShaderRegisterElement; + var regIndex:int; + var addSpec:Boolean = ((this._usingSpecularMethod) && (!(((this._specularLightSources & LightSources.LIGHTS) == 0)))); + var addDiff:Boolean = !(((this._diffuseLightSources & LightSources.LIGHTS) == 0)); + if (!(((addSpec) || (addDiff)))){ + return; + }; + var i:uint; + while (i < _numDirectionalLights) { + var _temp1 = regIndex; + regIndex = (regIndex + 1); + lightDirReg = this._dirLightRegisters[_temp1]; + var _temp2 = regIndex; + regIndex = (regIndex + 1); + diffuseColorReg = this._dirLightRegisters[_temp2]; + var _temp3 = regIndex; + regIndex = (regIndex + 1); + specularColorReg = this._dirLightRegisters[_temp3]; + if (addDiff){ + this._fragmentCode = (this._fragmentCode + this._diffuseMethod.getFragmentCodePerLight(this._diffuseMethodVO, this._diffuseLightIndex, lightDirReg, diffuseColorReg, this._registerCache)); + this._diffuseLightIndex++; + }; + if (addSpec){ + this._fragmentCode = (this._fragmentCode + this._specularMethod.getFragmentCodePerLight(this._specularMethodVO, this._specularLightIndex, lightDirReg, specularColorReg, this._registerCache)); + this._specularLightIndex++; + }; + i++; + }; + } + private function compilePointLightCode():void{ + var diffuseColorReg:ShaderRegisterElement; + var specularColorReg:ShaderRegisterElement; + var lightPosReg:ShaderRegisterElement; + var lightDirReg:ShaderRegisterElement; + var regIndex:int; + var addSpec:Boolean = ((this._usingSpecularMethod) && (!(((this._specularLightSources & LightSources.LIGHTS) == 0)))); + var addDiff:Boolean = !(((this._diffuseLightSources & LightSources.LIGHTS) == 0)); + if (!(((addSpec) || (addDiff)))){ + return; + }; + var i:uint; + while (i < _numPointLights) { + var _temp1 = regIndex; + regIndex = (regIndex + 1); + lightPosReg = this._pointLightRegisters[_temp1]; + var _temp2 = regIndex; + regIndex = (regIndex + 1); + diffuseColorReg = this._pointLightRegisters[_temp2]; + var _temp3 = regIndex; + regIndex = (regIndex + 1); + specularColorReg = this._pointLightRegisters[_temp3]; + lightDirReg = this._registerCache.getFreeFragmentVectorTemp(); + this._registerCache.addFragmentTempUsages(lightDirReg, 1); + this._fragmentCode = (this._fragmentCode + ((((((((((((((((((((((((((((((((((((((((((((((((("sub " + lightDirReg) + ", ") + lightPosReg) + ", ") + this._globalPositionVaryingReg) + "\n") + "dp3 ") + lightDirReg) + ".w, ") + lightDirReg) + ".xyz, ") + lightDirReg) + ".xyz\n") + "sqt ") + lightDirReg) + ".w, ") + lightDirReg) + ".w\n") + "sub ") + lightDirReg) + ".w, ") + lightDirReg) + ".w, ") + diffuseColorReg) + ".w\n") + "mul ") + lightDirReg) + ".w, ") + lightDirReg) + ".w, ") + specularColorReg) + ".w\n") + "sat ") + lightDirReg) + ".w, ") + lightDirReg) + ".w\n") + "sub ") + lightDirReg) + ".w, ") + lightPosReg) + ".w, ") + lightDirReg) + ".w\n") + "nrm ") + lightDirReg) + ".xyz, ") + lightDirReg) + ".xyz\t\n")); + if (this._lightDataIndex == -1){ + this._lightDataIndex = (lightPosReg.index * 4); + }; + if (addDiff){ + this._fragmentCode = (this._fragmentCode + this._diffuseMethod.getFragmentCodePerLight(this._diffuseMethodVO, this._diffuseLightIndex, lightDirReg, diffuseColorReg, this._registerCache)); + this._diffuseLightIndex++; + }; + if (addSpec){ + this._fragmentCode = (this._fragmentCode + this._specularMethod.getFragmentCodePerLight(this._specularMethodVO, this._specularLightIndex, lightDirReg, specularColorReg, this._registerCache)); + this._specularLightIndex++; + }; + this._registerCache.removeFragmentTempUsage(lightDirReg); + i++; + }; + } + private function compileLightProbeCode():void{ + var weightReg:String; + var i:uint; + var texReg:ShaderRegisterElement; + var weightComponents:Array = [".x", ".y", ".z", ".w"]; + var weightRegisters:Vector. = new Vector.(); + var addSpec:Boolean = ((this._usingSpecularMethod) && (!(((this._specularLightSources & LightSources.PROBES) == 0)))); + var addDiff:Boolean = !(((this._diffuseLightSources & LightSources.PROBES) == 0)); + if (!(((addSpec) || (addDiff)))){ + return; + }; + if (addDiff){ + this._lightProbeDiffuseIndices = new Vector.(); + }; + if (addSpec){ + this._lightProbeSpecularIndices = new Vector.(); + }; + i = 0; + while (i < this._numProbeRegisters) { + weightRegisters[i] = this._registerCache.getFreeFragmentConstant(); + if (i == 0){ + this._probeWeightsIndex = (weightRegisters[i].index * 4); + }; + i++; + }; + i = 0; + while (i < _numLightProbes) { + weightReg = (weightRegisters[Math.floor((i / 4))].toString() + weightComponents[(i % 4)]); + if (addDiff){ + texReg = this._registerCache.getFreeTextureReg(); + this._lightProbeDiffuseIndices[i] = texReg.index; + this._fragmentCode = (this._fragmentCode + this._diffuseMethod.getFragmentCodePerProbe(this._diffuseMethodVO, this._diffuseLightIndex, texReg, weightReg, this._registerCache)); + this._diffuseLightIndex++; + }; + if (addSpec){ + texReg = this._registerCache.getFreeTextureReg(); + this._lightProbeSpecularIndices[i] = texReg.index; + this._fragmentCode = (this._fragmentCode + this._specularMethod.getFragmentCodePerProbe(this._specularMethodVO, this._specularLightIndex, texReg, weightReg, this._registerCache)); + this._specularLightIndex++; + }; + i++; + }; + } + private function compileMethods():void{ + var method:EffectMethodBase; + var data:MethodVO; + var numMethods:uint = this._methods.length; + var i:uint; + while (i < numMethods) { + method = this._methods[i].method; + data = this._methods[i].data; + this._vertexCode = (this._vertexCode + method.getVertexCode(data, this._registerCache)); + if (data.needsGlobalPos){ + this._registerCache.removeVertexTempUsage(this._globalPositionVertexReg); + }; + this._fragmentCode = (this._fragmentCode + method.getFragmentCode(data, this._registerCache, this._shadedTargetReg)); + if (data.needsNormals){ + this._registerCache.removeFragmentTempUsage(this._normalFragmentReg); + }; + if (data.needsView){ + this._registerCache.removeFragmentTempUsage(this._viewDirFragmentReg); + }; + i++; + }; + if (this._colorTransformMethod){ + this._vertexCode = (this._vertexCode + this._colorTransformMethod.getVertexCode(this._colorTransformMethodVO, this._registerCache)); + this._fragmentCode = (this._fragmentCode + this._colorTransformMethod.getFragmentCode(this._colorTransformMethodVO, this._registerCache, this._shadedTargetReg)); + }; + } + private function updateLights(directionalLights:Vector., pointLights:Vector., stage3DProxy:Stage3DProxy):void{ + var dirLight:DirectionalLight; + var pointLight:PointLight; + var i:uint; + var k:uint; + var len:int; + var dirPos:Vector3D; + this._ambientLightR = (this._ambientLightG = (this._ambientLightB = 0)); + len = directionalLights.length; + k = this._lightDataIndex; + i = 0; + while (i < len) { + dirLight = directionalLights[i]; + dirPos = dirLight.sceneDirection; + this._ambientLightR = (this._ambientLightR + dirLight._ambientR); + this._ambientLightG = (this._ambientLightG + dirLight._ambientG); + this._ambientLightB = (this._ambientLightB + dirLight._ambientB); + var _temp1 = k; + k = (k + 1); + var _local10 = _temp1; + this._fragmentConstantData[_local10] = -(dirPos.x); + var _temp2 = k; + k = (k + 1); + var _local11 = _temp2; + this._fragmentConstantData[_local11] = -(dirPos.y); + var _temp3 = k; + k = (k + 1); + var _local12 = _temp3; + this._fragmentConstantData[_local12] = -(dirPos.z); + var _temp4 = k; + k = (k + 1); + var _local13 = _temp4; + this._fragmentConstantData[_local13] = 1; + var _temp5 = k; + k = (k + 1); + var _local14 = _temp5; + this._fragmentConstantData[_local14] = dirLight._diffuseR; + var _temp6 = k; + k = (k + 1); + var _local15 = _temp6; + this._fragmentConstantData[_local15] = dirLight._diffuseG; + var _temp7 = k; + k = (k + 1); + var _local16 = _temp7; + this._fragmentConstantData[_local16] = dirLight._diffuseB; + var _temp8 = k; + k = (k + 1); + var _local17 = _temp8; + this._fragmentConstantData[_local17] = 1; + var _temp9 = k; + k = (k + 1); + var _local18 = _temp9; + this._fragmentConstantData[_local18] = dirLight._specularR; + var _temp10 = k; + k = (k + 1); + var _local19 = _temp10; + this._fragmentConstantData[_local19] = dirLight._specularG; + var _temp11 = k; + k = (k + 1); + var _local20 = _temp11; + this._fragmentConstantData[_local20] = dirLight._specularB; + var _temp12 = k; + k = (k + 1); + var _local21 = _temp12; + this._fragmentConstantData[_local21] = 1; + i++; + }; + if (_numDirectionalLights > len){ + i = (k + ((_numDirectionalLights - len) * 12)); + while (k < i) { + var _temp13 = k; + k = (k + 1); + _local10 = _temp13; + this._fragmentConstantData[_local10] = 0; + }; + }; + len = pointLights.length; + i = 0; + while (i < len) { + pointLight = pointLights[i]; + dirPos = pointLight.scenePosition; + this._ambientLightR = (this._ambientLightR + pointLight._ambientR); + this._ambientLightG = (this._ambientLightG + pointLight._ambientG); + this._ambientLightB = (this._ambientLightB + pointLight._ambientB); + var _temp14 = k; + k = (k + 1); + _local10 = _temp14; + this._fragmentConstantData[_local10] = dirPos.x; + var _temp15 = k; + k = (k + 1); + _local11 = _temp15; + this._fragmentConstantData[_local11] = dirPos.y; + var _temp16 = k; + k = (k + 1); + _local12 = _temp16; + this._fragmentConstantData[_local12] = dirPos.z; + var _temp17 = k; + k = (k + 1); + _local13 = _temp17; + this._fragmentConstantData[_local13] = 1; + var _temp18 = k; + k = (k + 1); + _local14 = _temp18; + this._fragmentConstantData[_local14] = pointLight._diffuseR; + var _temp19 = k; + k = (k + 1); + _local15 = _temp19; + this._fragmentConstantData[_local15] = pointLight._diffuseG; + var _temp20 = k; + k = (k + 1); + _local16 = _temp20; + this._fragmentConstantData[_local16] = pointLight._diffuseB; + var _temp21 = k; + k = (k + 1); + _local17 = _temp21; + this._fragmentConstantData[_local17] = pointLight._radius; + var _temp22 = k; + k = (k + 1); + _local18 = _temp22; + this._fragmentConstantData[_local18] = pointLight._specularR; + var _temp23 = k; + k = (k + 1); + _local19 = _temp23; + this._fragmentConstantData[_local19] = pointLight._specularG; + var _temp24 = k; + k = (k + 1); + _local20 = _temp24; + this._fragmentConstantData[_local20] = pointLight._specularB; + var _temp25 = k; + k = (k + 1); + _local21 = _temp25; + this._fragmentConstantData[_local21] = pointLight._fallOffFactor; + i++; + }; + if (_numPointLights > len){ + i = (k + ((len - _numPointLights) * 12)); + while (k < i) { + this._fragmentConstantData[k] = 0; + k++; + }; + }; + } + private function updateProbes(lightProbes:Vector., weights:Vector., stage3DProxy:Stage3DProxy):void{ + var probe:LightProbe; + var len:int = lightProbes.length; + var addDiff:Boolean = ((this._diffuseMethod) && (!(((this._diffuseLightSources & LightSources.PROBES) == 0)))); + var addSpec:Boolean = ((this._specularMethod) && (!(((this._specularLightSources & LightSources.PROBES) == 0)))); + if (!(((addDiff) || (addSpec)))){ + return; + }; + var i:uint; + while (i < len) { + probe = lightProbes[i]; + if (addDiff){ + stage3DProxy.setTextureAt(this._lightProbeDiffuseIndices[i], probe.diffuseMap.getTextureForStage3D(stage3DProxy)); + }; + if (addSpec){ + stage3DProxy.setTextureAt(this._lightProbeSpecularIndices[i], probe.specularMap.getTextureForStage3D(stage3DProxy)); + }; + i++; + }; + this._fragmentConstantData[this._probeWeightsIndex] = weights[0]; + this._fragmentConstantData[(this._probeWeightsIndex + 1)] = weights[1]; + this._fragmentConstantData[(this._probeWeightsIndex + 2)] = weights[2]; + this._fragmentConstantData[(this._probeWeightsIndex + 3)] = weights[3]; + } + private function getMethodSetForMethod(method:EffectMethodBase):MethodSet{ + var len:int = this._methods.length; + var i:int; + while (i < len) { + if (this._methods[i].method == method){ + return (this._methods[i]); + }; + i++; + }; + return (null); + } + private function onShaderInvalidated(event:ShadingMethodEvent):void{ + this.invalidateShaderProgram(); + } + + } +}//package away3d.materials.passes + +import away3d.materials.methods.*; + +class MethodSet { + + public var method:EffectMethodBase; + public var data:MethodVO; + + public function MethodSet(method:EffectMethodBase){ + super(); + this.method = method; + this.data = method.createMethodVO(); + } +} diff --git a/flash_decompiled/watchdog/away3d/materials/passes/DepthMapPass.as b/flash_decompiled/watchdog/away3d/materials/passes/DepthMapPass.as new file mode 100644 index 0000000..0ef89c8 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/DepthMapPass.as @@ -0,0 +1,91 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import away3d.textures.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + + public class DepthMapPass extends MaterialPassBase { + + private var _data:Vector.; + private var _alphaThreshold:Number = 0; + private var _alphaMask:Texture2DBase; + + public function DepthMapPass(){ + super(); + this._data = Vector.([1, 0xFF, 65025, 16581375, (1 / 0xFF), (1 / 0xFF), (1 / 0xFF), 0, 0, 0, 0, 0]); + } + public function get alphaThreshold():Number{ + return (this._alphaThreshold); + } + public function set alphaThreshold(value:Number):void{ + if (value < 0){ + value = 0; + } else { + if (value > 1){ + value = 1; + }; + }; + if (value == this._alphaThreshold){ + return; + }; + if ((((value == 0)) || ((this._alphaThreshold == 0)))){ + invalidateShaderProgram(); + }; + this._alphaThreshold = value; + this._data[8] = this._alphaThreshold; + } + public function get alphaMask():Texture2DBase{ + return (this._alphaMask); + } + public function set alphaMask(value:Texture2DBase):void{ + this._alphaMask = value; + } + override function getVertexCode(code:String):String{ + code = (code + ("m44 vt1, vt0, vc0\t\t\n" + "mul op, vt1, vc4\n")); + if (this._alphaThreshold > 0){ + _numUsedTextures = 1; + _numUsedStreams = 2; + code = (code + ("mov v0, vt1\n" + "mov v1, va1\n")); + } else { + _numUsedTextures = 0; + _numUsedStreams = 1; + code = (code + "mov v0, vt1\n"); + }; + return (code); + } + override function getFragmentCode():String{ + var filter:String; + var wrap:String = ((_repeat) ? "wrap" : "clamp"); + if (_smooth){ + filter = ((_mipmap) ? "linear,miplinear" : "linear"); + } else { + filter = ((_mipmap) ? "nearest,mipnearest" : "nearest"); + }; + var code:String = ((("div ft2, v0, v0.w\t\t\n" + "mul ft0, fc0, ft2.z\t\n") + "frc ft0, ft0\t\t\t\n") + "mul ft1, ft0.yzww, fc1\t\n"); + if (this._alphaThreshold > 0){ + code = (code + (((((("tex ft3, v1, fs0 <2d," + filter) + ",") + wrap) + ">\n") + "sub ft3.w, ft3.w, fc2.x\n") + "kil ft3.w\n")); + }; + code = (code + "sub oc, ft0, ft1\t\t\n"); + return (code); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + if (this._alphaThreshold > 0){ + stage3DProxy.setSimpleVertexBuffer(1, renderable.getUVBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_2, renderable.UVBufferOffset); + }; + super.render(renderable, stage3DProxy, camera, lightPicker); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + if (this._alphaThreshold > 0){ + stage3DProxy.setTextureAt(0, this._alphaMask.getTextureForStage3D(stage3DProxy)); + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 3); + } else { + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._data, 2); + }; + } + + } +}//package away3d.materials.passes diff --git a/flash_decompiled/watchdog/away3d/materials/passes/DistanceMapPass.as b/flash_decompiled/watchdog/away3d/materials/passes/DistanceMapPass.as new file mode 100644 index 0000000..d40d71e --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/DistanceMapPass.as @@ -0,0 +1,109 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import away3d.textures.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + + public class DistanceMapPass extends MaterialPassBase { + + private var _fragmentData:Vector.; + private var _vertexData:Vector.; + private var _alphaThreshold:Number; + private var _alphaMask:Texture2DBase; + + public function DistanceMapPass(){ + super(); + this._fragmentData = Vector.([1, 0xFF, 65025, 16581375, (1 / 0xFF), (1 / 0xFF), (1 / 0xFF), 0, 0, 0, 0, 0]); + this._vertexData = new Vector.(4, true); + this._vertexData[3] = 1; + _numUsedVertexConstants = 9; + } + public function get alphaThreshold():Number{ + return (this._alphaThreshold); + } + public function set alphaThreshold(value:Number):void{ + if (value < 0){ + value = 0; + } else { + if (value > 1){ + value = 1; + }; + }; + if (value == this._alphaThreshold){ + return; + }; + if ((((value == 0)) || ((this._alphaThreshold == 0)))){ + invalidateShaderProgram(); + }; + this._alphaThreshold = value; + this._fragmentData[8] = this._alphaThreshold; + } + public function get alphaMask():Texture2DBase{ + return (this._alphaMask); + } + public function set alphaMask(value:Texture2DBase):void{ + this._alphaMask = value; + } + override function getVertexCode(code:String):String{ + code = (code + ((("m44 vt7, vt0, vc0\t\t\n" + "mul op, vt7, vc4\t\t\n") + "m44 vt1, vt0, vc5\t\t\n") + "sub v0, vt1, vc9\t\t\n")); + if (this._alphaThreshold > 0){ + code = (code + "mov v1, va1\n"); + _numUsedTextures = 1; + _numUsedStreams = 2; + } else { + _numUsedTextures = 0; + _numUsedStreams = 1; + }; + return (code); + } + override function getFragmentCode():String{ + var code:String; + var filter:String; + var wrap:String = ((_repeat) ? "wrap" : "clamp"); + if (_smooth){ + filter = ((_mipmap) ? "linear,miplinear" : "linear"); + } else { + filter = ((_mipmap) ? "nearest,mipnearest" : "nearest"); + }; + code = ((("dp3 ft2.z, v0.xyz, v0.xyz\t\n" + "mul ft0, fc0, ft2.z\t\n") + "frc ft0, ft0\t\t\t\n") + "mul ft1, ft0.yzww, fc1\t\n"); + if (this._alphaThreshold > 0){ + code = (code + (((((("tex ft3, v1, fs0 <2d," + filter) + ",") + wrap) + ">\n") + "sub ft3.w, ft3.w, fc2.x\n") + "kil ft3.w\n")); + }; + code = (code + "sub oc, ft0, ft1\t\t\n"); + return (code); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var pos:Vector3D = camera.scenePosition; + this._vertexData[0] = pos.x; + this._vertexData[1] = pos.y; + this._vertexData[2] = pos.z; + this._vertexData[3] = 1; + stage3DProxy._context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 5, renderable.sceneTransform, true); + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 9, this._vertexData, 1); + if (this._alphaThreshold > 0){ + stage3DProxy.setSimpleVertexBuffer(1, renderable.getUVBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_2, renderable.UVBufferOffset); + }; + super.render(renderable, stage3DProxy, camera, lightPicker); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + var f:Number = camera.lens.far; + f = (1 / ((2 * f) * f)); + this._fragmentData[0] = (1 * f); + this._fragmentData[1] = (0xFF * f); + this._fragmentData[2] = (65025 * f); + this._fragmentData[3] = (16581375 * f); + if (this._alphaThreshold > 0){ + stage3DProxy.setTextureAt(0, this._alphaMask.getTextureForStage3D(stage3DProxy)); + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._fragmentData, 3); + } else { + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._fragmentData, 2); + }; + } + + } +}//package away3d.materials.passes diff --git a/flash_decompiled/watchdog/away3d/materials/passes/MaterialPassBase.as b/flash_decompiled/watchdog/away3d/materials/passes/MaterialPassBase.as new file mode 100644 index 0000000..38516c2 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/MaterialPassBase.as @@ -0,0 +1,265 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import flash.display3D.*; + import away3d.materials.*; + import away3d.animators.*; + import away3d.core.managers.*; + import away3d.core.base.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import away3d.errors.*; + import flash.events.*; + import away3d.debug.*; + import flash.display3D.textures.*; + import flash.geom.*; + + public class MaterialPassBase extends EventDispatcher { + + private static var _previousUsedStreams:Vector. = Vector.([0, 0, 0, 0, 0, 0, 0, 0]); + private static var _previousUsedTexs:Vector. = Vector.([0, 0, 0, 0, 0, 0, 0, 0]); + private static var _rttData:Vector.; + + protected var _material:MaterialBase; + protected var _animationSet:IAnimationSet; + var _program3Ds:Vector.; + var _program3Dids:Vector.; + private var _context3Ds:Vector.; + protected var _numUsedStreams:uint; + protected var _numUsedTextures:uint; + protected var _numUsedVertexConstants:uint; + protected var _numUsedFragmentConstants:uint; + protected var _smooth:Boolean = true; + protected var _repeat:Boolean = false; + protected var _mipmap:Boolean = true; + protected var _depthCompareMode:String = "less"; + private var _bothSides:Boolean; + protected var _numPointLights:uint; + protected var _numDirectionalLights:uint; + protected var _numLightProbes:uint; + protected var _animatableAttributes:Array; + protected var _animationTargetRegisters:Array; + protected var _defaultCulling:String = "back"; + private var _renderToTexture:Boolean; + private var _oldTarget:TextureBase; + private var _oldSurface:int; + private var _oldDepthStencil:Boolean; + private var _oldRect:Rectangle; + protected var _alphaPremultiplied:Boolean; + + public function MaterialPassBase(renderToTexture:Boolean=false){ + this._program3Ds = new Vector.(8); + this._program3Dids = Vector.([-1, -1, -1, -1, -1, -1, -1, -1]); + this._context3Ds = new Vector.(8); + this._animatableAttributes = ["va0"]; + this._animationTargetRegisters = ["vt0"]; + super(); + this._renderToTexture = renderToTexture; + this._numUsedStreams = 1; + this._numUsedVertexConstants = 5; + if (!(_rttData)){ + _rttData = new [1, 1, 1, 1]; + }; + } + public function get material():MaterialBase{ + return (this._material); + } + public function set material(value:MaterialBase):void{ + this._material = value; + } + public function get mipmap():Boolean{ + return (this._mipmap); + } + public function set mipmap(value:Boolean):void{ + if (this._mipmap == value){ + return; + }; + this._mipmap = value; + this.invalidateShaderProgram(); + } + public function get smooth():Boolean{ + return (this._smooth); + } + public function set smooth(value:Boolean):void{ + if (this._smooth == value){ + return; + }; + this._smooth = value; + this.invalidateShaderProgram(); + } + public function get repeat():Boolean{ + return (this._repeat); + } + public function set repeat(value:Boolean):void{ + if (this._repeat == value){ + return; + }; + this._repeat = value; + this.invalidateShaderProgram(); + } + public function get bothSides():Boolean{ + return (this._bothSides); + } + public function set bothSides(value:Boolean):void{ + this._bothSides = value; + } + public function get depthCompareMode():String{ + return (this._depthCompareMode); + } + public function set depthCompareMode(value:String):void{ + this._depthCompareMode = value; + } + public function get animationSet():IAnimationSet{ + return (this._animationSet); + } + public function set animationSet(value:IAnimationSet):void{ + if (this._animationSet == value){ + return; + }; + this._animationSet = value; + this.invalidateShaderProgram(); + } + public function get renderToTexture():Boolean{ + return (this._renderToTexture); + } + public function dispose():void{ + var i:uint; + while (i < 8) { + if (this._program3Ds[i]){ + AGALProgram3DCache.getInstanceFromIndex(i).freeProgram3D(this._program3Dids[i]); + }; + i++; + }; + } + public function get numUsedStreams():uint{ + return (this._numUsedStreams); + } + public function get numUsedVertexConstants():uint{ + return (this._numUsedVertexConstants); + } + function updateAnimationState(renderable:IRenderable, stage3DProxy:Stage3DProxy):void{ + renderable.animator.setRenderState(stage3DProxy, renderable, this._numUsedVertexConstants, this._numUsedStreams); + } + function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, renderable.getModelViewProjectionUnsafe(), true); + stage3DProxy.setSimpleVertexBuffer(0, renderable.getVertexBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, renderable.vertexBufferOffset); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + function getVertexCode(code:String):String{ + throw (new AbstractMethodError()); + } + function getFragmentCode():String{ + throw (new AbstractMethodError()); + } + function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var i:uint; + var contextIndex:int = stage3DProxy._stage3DIndex; + var context:Context3D = stage3DProxy._context3D; + if (((!((this._context3Ds[contextIndex] == context))) || (!(this._program3Ds[contextIndex])))){ + this._context3Ds[contextIndex] = context; + this.updateProgram(stage3DProxy); + dispatchEvent(new Event(Event.CHANGE)); + }; + var prevUsed:int = _previousUsedStreams[contextIndex]; + i = this._numUsedStreams; + while (i < prevUsed) { + stage3DProxy.setSimpleVertexBuffer(i, null, null, 0); + i++; + }; + prevUsed = _previousUsedTexs[contextIndex]; + i = this._numUsedTextures; + while (i < prevUsed) { + stage3DProxy.setTextureAt(i, null); + i++; + }; + if (((this._animationSet) && (!(this._animationSet.usesCPU)))){ + this._animationSet.activate(stage3DProxy, this); + }; + stage3DProxy.setProgram(this._program3Ds[contextIndex]); + context.setCulling(((this._bothSides) ? Context3DTriangleFace.NONE : this._defaultCulling)); + if (this._renderToTexture){ + _rttData[0] = 1; + _rttData[1] = 1; + this._oldTarget = stage3DProxy.renderTarget; + this._oldSurface = stage3DProxy.renderSurfaceSelector; + this._oldDepthStencil = stage3DProxy.enableDepthAndStencil; + this._oldRect = stage3DProxy.scissorRect; + } else { + _rttData[0] = textureRatioX; + _rttData[1] = textureRatioY; + stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 4, _rttData, 1); + }; + context.setDepthTest(true, this._depthCompareMode); + } + function deactivate(stage3DProxy:Stage3DProxy):void{ + var index:uint = stage3DProxy._stage3DIndex; + _previousUsedStreams[index] = this._numUsedStreams; + _previousUsedTexs[index] = this._numUsedTextures; + if (((this._animationSet) && (!(this._animationSet.usesCPU)))){ + this._animationSet.deactivate(stage3DProxy, this); + }; + if (this._renderToTexture){ + stage3DProxy.setRenderTarget(this._oldTarget, this._oldDepthStencil, this._oldSurface); + stage3DProxy.scissorRect = this._oldRect; + }; + stage3DProxy._context3D.setDepthTest(true, Context3DCompareMode.LESS); + } + function invalidateShaderProgram(updateMaterial:Boolean=true):void{ + var i:uint; + while (i < 8) { + this._program3Ds[i] = null; + i++; + }; + if (((this._material) && (updateMaterial))){ + this._material.invalidatePasses(this); + }; + } + function updateProgram(stage3DProxy:Stage3DProxy):void{ + var len:uint; + var i:uint; + var animatorCode:String = ""; + if (((this._animationSet) && (!(this._animationSet.usesCPU)))){ + animatorCode = this._animationSet.getAGALVertexCode(this, this._animatableAttributes, this._animationTargetRegisters); + } else { + len = this._animatableAttributes.length; + i = 0; + while (i < len) { + animatorCode = (animatorCode + (((("mov " + this._animationTargetRegisters[i]) + ", ") + this._animatableAttributes[i]) + "\n")); + i++; + }; + }; + var vertexCode:String = this.getVertexCode(animatorCode); + var fragmentCode:String = this.getFragmentCode(); + if (Debug.active){ + trace("Compiling AGAL Code:"); + trace("--------------------"); + trace(vertexCode); + trace("--------------------"); + trace(fragmentCode); + }; + AGALProgram3DCache.getInstance(stage3DProxy).setProgram3D(this, vertexCode, fragmentCode); + } + function get numPointLights():uint{ + return (this._numPointLights); + } + function set numPointLights(value:uint):void{ + this._numPointLights = value; + } + function get numDirectionalLights():uint{ + return (this._numDirectionalLights); + } + function set numDirectionalLights(value:uint):void{ + this._numDirectionalLights = value; + } + function set numLightProbes(value:uint):void{ + this._numLightProbes = value; + } + public function get alphaPremultiplied():Boolean{ + return (this._alphaPremultiplied); + } + public function set alphaPremultiplied(value:Boolean):void{ + this._alphaPremultiplied = value; + } + + } +}//package away3d.materials.passes diff --git a/flash_decompiled/watchdog/away3d/materials/passes/OutlinePass.as b/flash_decompiled/watchdog/away3d/materials/passes/OutlinePass.as new file mode 100644 index 0000000..09fdd8b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/OutlinePass.as @@ -0,0 +1,184 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import flash.display3D.*; + import flash.utils.*; + import away3d.entities.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.core.base.*; + import away3d.materials.lightpickers.*; + + public class OutlinePass extends MaterialPassBase { + + private var _outlineColor:uint; + private var _colorData:Vector.; + private var _offsetData:Vector.; + private var _showInnerLines:Boolean; + private var _outlineMeshes:Dictionary; + private var _dedicatedMeshes:Boolean; + + public function OutlinePass(outlineColor:uint=0, outlineSize:Number=20, showInnerLines:Boolean=true, dedicatedMeshes:Boolean=false){ + super(); + mipmap = false; + this._colorData = new Vector.(4, true); + this._colorData[3] = 1; + this._offsetData = new Vector.(4, true); + this.outlineColor = outlineColor; + this.outlineSize = outlineSize; + _defaultCulling = Context3DTriangleFace.FRONT; + _numUsedStreams = 2; + _numUsedVertexConstants = 6; + this._showInnerLines = showInnerLines; + this._dedicatedMeshes = dedicatedMeshes; + if (dedicatedMeshes){ + this._outlineMeshes = new Dictionary(); + }; + _animatableAttributes = ["va0", "va1"]; + _animationTargetRegisters = ["vt0", "vt1"]; + } + public function clearDedicatedMesh(mesh:Mesh):void{ + var i:int; + if (this._dedicatedMeshes){ + i = 0; + while (i < mesh.subMeshes.length) { + this.disposeDedicated(mesh.subMeshes[i]); + i++; + }; + }; + } + private function disposeDedicated(keySubMesh:Object):void{ + var mesh:Mesh; + mesh = Mesh(this._dedicatedMeshes[keySubMesh]); + mesh.geometry.dispose(); + mesh.dispose(); + delete this._dedicatedMeshes[keySubMesh]; + } + override public function dispose():void{ + var key:Object; + super.dispose(); + if (this._dedicatedMeshes){ + for (key in this._outlineMeshes) { + this.disposeDedicated(key); + }; + }; + } + public function get showInnerLines():Boolean{ + return (this._showInnerLines); + } + public function set showInnerLines(value:Boolean):void{ + this._showInnerLines = value; + } + public function get outlineColor():uint{ + return (this._outlineColor); + } + public function set outlineColor(value:uint):void{ + this._outlineColor = value; + this._colorData[0] = (((value >> 16) & 0xFF) / 0xFF); + this._colorData[1] = (((value >> 8) & 0xFF) / 0xFF); + this._colorData[2] = ((value & 0xFF) / 0xFF); + } + public function get outlineSize():Number{ + return (this._offsetData[0]); + } + public function set outlineSize(value:Number):void{ + this._offsetData[0] = value; + } + override function getVertexCode(code:String):String{ + code = (code + (((("mul vt7, vt1, vc5.x\n" + "add vt7, vt7, vt0\n") + "mov vt7.w, vt0.w\n") + "m44 vt7, vt7, vc0\t\t\n") + "mul op, vt7, vc4\n")); + return (code); + } + override function getFragmentCode():String{ + return ("mov oc, fc0\n"); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + if (!(this._showInnerLines)){ + context.setDepthTest(false, Context3DCompareMode.LESS); + }; + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._colorData, 1); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, this._offsetData, 1); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + super.deactivate(stage3DProxy); + if (!(this._showInnerLines)){ + stage3DProxy._context3D.setDepthTest(true, Context3DCompareMode.LESS); + }; + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var mesh:Mesh; + var dedicatedRenderable:IRenderable; + var context:Context3D; + if (this._dedicatedMeshes){ + mesh = (this._outlineMeshes[renderable] = ((this._outlineMeshes[renderable]) || (this.createDedicatedMesh(SubMesh(renderable).subGeometry)))); + dedicatedRenderable = mesh.subMeshes[0]; + context = stage3DProxy._context3D; + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, renderable.modelViewProjection, true); + stage3DProxy.setSimpleVertexBuffer(0, dedicatedRenderable.getVertexBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, dedicatedRenderable.vertexBufferOffset); + stage3DProxy.setSimpleVertexBuffer(1, dedicatedRenderable.getVertexNormalBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, dedicatedRenderable.normalBufferOffset); + context.drawTriangles(dedicatedRenderable.getIndexBuffer(stage3DProxy), 0, dedicatedRenderable.numTriangles); + } else { + stage3DProxy.setSimpleVertexBuffer(1, renderable.getVertexNormalBuffer(stage3DProxy), Context3DVertexBufferFormat.FLOAT_3, renderable.normalBufferOffset); + super.render(renderable, stage3DProxy, camera, lightPicker); + }; + } + private function createDedicatedMesh(source:SubGeometry):Mesh{ + var index:int; + var x:Number; + var y:Number; + var z:Number; + var key:String; + var indexCount:int; + var vertexCount:int; + var maxIndex:int; + var mesh:Mesh = new Mesh(new Geometry(), null); + var dest:SubGeometry = new SubGeometry(); + var indexLookUp:Array = []; + var srcIndices:Vector. = source.indexData; + var srcVertices:Vector. = source.vertexData; + var dstIndices:Vector. = new Vector.(); + var dstVertices:Vector. = new Vector.(); + var len:int = srcIndices.length; + var i:int; + while (i < len) { + index = (srcIndices[i] * 3); + x = srcVertices[index]; + y = srcVertices[(index + 1)]; + z = srcVertices[(index + 2)]; + key = ((((x.toPrecision(5) + "/") + y.toPrecision(5)) + "/") + z.toPrecision(5)); + if (indexLookUp[key]){ + index = (indexLookUp[key] - 1); + } else { + index = (vertexCount / 3); + indexLookUp[key] = (index + 1); + var _temp1 = vertexCount; + vertexCount = (vertexCount + 1); + var _local19 = _temp1; + dstVertices[_local19] = x; + var _temp2 = vertexCount; + vertexCount = (vertexCount + 1); + var _local20 = _temp2; + dstVertices[_local20] = y; + var _temp3 = vertexCount; + vertexCount = (vertexCount + 1); + var _local21 = _temp3; + dstVertices[_local21] = z; + }; + if (index > maxIndex){ + maxIndex = index; + }; + var _temp4 = indexCount; + indexCount = (indexCount + 1); + _local19 = _temp4; + dstIndices[_local19] = index; + i++; + }; + dest.autoDeriveVertexNormals = true; + dest.updateVertexData(dstVertices); + dest.updateIndexData(dstIndices); + mesh.geometry.addSubGeometry(dest); + return (mesh); + } + + } +}//package away3d.materials.passes diff --git a/flash_decompiled/watchdog/away3d/materials/passes/SegmentPass.as b/flash_decompiled/watchdog/away3d/materials/passes/SegmentPass.as new file mode 100644 index 0000000..54e4e5a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/passes/SegmentPass.as @@ -0,0 +1,65 @@ +package away3d.materials.passes { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + + public class SegmentPass extends MaterialPassBase { + + protected static const ONE_VECTOR:Vector. = Vector.([1, 1, 1, 1]); + protected static const FRONT_VECTOR:Vector. = Vector.([0, 0, -1, 0]); + + private static var VARIABLES:Vector. = Vector.([1, 2]); + private static var angle:Number = 0; + + private var _constants:Vector.; + private var _calcMatrix:Matrix3D; + private var _thickness:Number; + + public function SegmentPass(thickness:Number){ + this._constants = new Vector.(4, true); + this._calcMatrix = new Matrix3D(); + this._thickness = thickness; + this._constants[1] = (1 / 0xFF); + super(); + } + override function getVertexCode(code:String):String{ + code = (((((((((((((((((((((((((((("m44 vt0, va0, vc8\t\t\t\t\n" + "m44 vt1, va1, vc8\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "slt vt5.x, vt0.z, vc7.z\t\t\n") + "sub vt5.y, vc5.x, vt5.x\t\t\n") + "add vt4.x, vt0.z, vc7.z\t\t\n") + "sub vt4.y, vt0.z, vt1.z\t\t\n") + "div vt4.z, vt4.x, vt4.y\t\t\n") + "mul vt4.xyz, vt4.zzz, vt2.xyz\t\n") + "add vt3.xyz, vt0.xyz, vt4.xyz\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "mul vt0, vt0, vt5.yyyy\t\t\t\n") + "mul vt3, vt3, vt5.xxxx\t\t\t\n") + "add vt0, vt0, vt3\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "nrm vt2.xyz, vt2.xyz\t\t\t\n") + "nrm vt5.xyz, vt0.xyz\t\t\t\n") + "mov vt5.w, vc5.x\t\t\t\t\n") + "crs vt3.xyz, vt2, vt5\t\t\t\n") + "nrm vt3.xyz, vt3.xyz\t\t\t\n") + "mul vt3.xyz, vt3.xyz, va2.xxx\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "dp3 vt4.x, vt0, vc6\t\t\t\n") + "mul vt4.x, vt4.x, vc7.x\t\t\n") + "mul vt3.xyz, vt3.xyz, vt4.xxx\t\n") + "add vt0.xyz, vt0.xyz, vt3.xyz\t\n") + "m44 vt0, vt0, vc0\t\t\t\t\n") + "mul op, vt0, vc4\t\t\t\t\n") + "mov v0, va3\t\t\t\t\t\n"); + return (code); + } + override function getFragmentCode():String{ + return ("mov oc, v0\n"); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + var vertexBuffer:VertexBuffer3D = renderable.getVertexBuffer(stage3DProxy); + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(2, vertexBuffer, 6, Context3DVertexBufferFormat.FLOAT_1); + context.setVertexBufferAt(3, vertexBuffer, 7, Context3DVertexBufferFormat.FLOAT_4); + this._calcMatrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._calcMatrix.append(camera.inverseSceneTransform); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 8, this._calcMatrix, true); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + this._constants[0] = (this._thickness / Math.min(stage3DProxy.width, stage3DProxy.height)); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, ONE_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, FRONT_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this._constants); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, camera.lens.matrix, true); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(2, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(3, null, null, 0); + } + + } +}//package away3d.materials.passes diff --git a/flash_decompiled/watchdog/away3d/materials/utils/DefaultMaterialManager.as b/flash_decompiled/watchdog/away3d/materials/utils/DefaultMaterialManager.as new file mode 100644 index 0000000..ab01b37 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/DefaultMaterialManager.as @@ -0,0 +1,52 @@ +package away3d.materials.utils { + import away3d.materials.*; + import away3d.core.base.*; + import away3d.textures.*; + import flash.display.*; + + public class DefaultMaterialManager { + + private static var _defaultTextureBitmapData:BitmapData; + private static var _defaultMaterial:TextureMaterial; + private static var _defaultTexture:BitmapTexture; + + public static function getDefaultMaterial(renderable:IMaterialOwner=null):TextureMaterial{ + if (!(_defaultTexture)){ + createDefaultTexture(); + }; + if (!(_defaultMaterial)){ + createDefaultMaterial(); + }; + return (_defaultMaterial); + } + public static function getDefaultTexture(renderable:IMaterialOwner=null):BitmapTexture{ + if (!(_defaultTexture)){ + createDefaultTexture(); + }; + return (_defaultTexture); + } + private static function createDefaultTexture():void{ + var i:uint; + var j:uint; + _defaultTextureBitmapData = new BitmapData(8, 8, false, 0); + i = 0; + while (i < 8) { + j = 0; + while (j < 8) { + if (((j & 1) ^ (i & 1))){ + _defaultTextureBitmapData.setPixel(i, j, 0xFFFFFF); + }; + j++; + }; + i++; + }; + _defaultTexture = new BitmapTexture(_defaultTextureBitmapData); + } + private static function createDefaultMaterial():void{ + _defaultMaterial = new TextureMaterial(_defaultTexture); + _defaultMaterial.mipmap = false; + _defaultMaterial.smooth = false; + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/materials/utils/MipmapGenerator.as b/flash_decompiled/watchdog/away3d/materials/utils/MipmapGenerator.as new file mode 100644 index 0000000..7a6c050 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/MipmapGenerator.as @@ -0,0 +1,46 @@ +package away3d.materials.utils { + import flash.geom.*; + import flash.display.*; + import flash.display3D.textures.*; + + public class MipmapGenerator { + + private static var _matrix:Matrix = new Matrix(); + private static var _rect:Rectangle = new Rectangle(); + + public static function generateMipMaps(source:BitmapData, target:TextureBase, mipmap:BitmapData=null, alpha:Boolean=false, side:int=-1):void{ + var i:uint; + var w:uint = source.width; + var h:uint = source.height; + var regen:Boolean = !((mipmap == null)); + mipmap = ((mipmap) || (new BitmapData(w, h, alpha))); + _rect.width = w; + _rect.height = h; + while ((((w >= 1)) || ((h >= 1)))) { + if (alpha){ + mipmap.fillRect(_rect, 0); + }; + _matrix.a = (_rect.width / source.width); + _matrix.d = (_rect.height / source.height); + mipmap.draw(source, _matrix, null, null, null, true); + if ((target is Texture)){ + var _temp1 = i; + i = (i + 1); + Texture(target).uploadFromBitmapData(mipmap, _temp1); + } else { + var _temp2 = i; + i = (i + 1); + CubeTexture(target).uploadFromBitmapData(mipmap, side, _temp2); + }; + w = (w >> 1); + h = (h >> 1); + _rect.width = (((w > 1)) ? w : 1); + _rect.height = (((h > 1)) ? h : 1); + }; + if (!(regen)){ + mipmap.dispose(); + }; + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/materials/utils/MultipleMaterials.as b/flash_decompiled/watchdog/away3d/materials/utils/MultipleMaterials.as new file mode 100644 index 0000000..01e59ff --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/MultipleMaterials.as @@ -0,0 +1,78 @@ +package away3d.materials.utils { + import away3d.materials.*; + + public class MultipleMaterials { + + private var _left:MaterialBase; + private var _right:MaterialBase; + private var _bottom:MaterialBase; + private var _top:MaterialBase; + private var _front:MaterialBase; + private var _back:MaterialBase; + + public function MultipleMaterials(front:MaterialBase=null, back:MaterialBase=null, left:MaterialBase=null, right:MaterialBase=null, top:MaterialBase=null){ + super(); + this._left = left; + this._right = right; + this._bottom = this.bottom; + this._top = top; + this._front = front; + this._back = back; + } + public function get left():MaterialBase{ + return (this._left); + } + public function set left(val:MaterialBase):void{ + if (this._left == val){ + return; + }; + this._left = val; + } + public function get right():MaterialBase{ + return (this._right); + } + public function set right(val:MaterialBase):void{ + if (this._right == val){ + return; + }; + this._right = val; + } + public function get bottom():MaterialBase{ + return (this._bottom); + } + public function set bottom(val:MaterialBase):void{ + if (this._bottom == val){ + return; + }; + this._bottom = val; + } + public function get top():MaterialBase{ + return (this._top); + } + public function set top(val:MaterialBase):void{ + if (this._top == val){ + return; + }; + this._top = val; + } + public function get front():MaterialBase{ + return (this._front); + } + public function set front(val:MaterialBase):void{ + if (this._front == val){ + return; + }; + this._front = val; + } + public function get back():MaterialBase{ + return (this._back); + } + public function set back(val:MaterialBase):void{ + if (this._back == val){ + return; + }; + this._back = val; + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/materials/utils/RegisterPool.as b/flash_decompiled/watchdog/away3d/materials/utils/RegisterPool.as new file mode 100644 index 0000000..4d3c15c --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/RegisterPool.as @@ -0,0 +1,140 @@ +package away3d.materials.utils { + import away3d.materials.utils.*; + import __AS3__.vec.*; + + class RegisterPool { + + private static const COMPONENTS:Array = ["x", "y", "z", "w"]; + + private var _regName:String; + private var _vectorRegisters:Vector.; + private var _registerComponents:Array; + private var _usedSingleCount:Array; + private var _usedVectorCount:Vector.; + private var _regCount:int; + private var _persistent:Boolean; + + public function RegisterPool(regName:String, regCount:int, persistent:Boolean=true){ + super(); + this._regName = regName; + this._regCount = regCount; + this._persistent = persistent; + this.initRegisters(regName, regCount); + } + public function requestFreeVectorReg():ShaderRegisterElement{ + var i:int; + while (i < this._regCount) { + if (!(this.isRegisterUsed(i))){ + if (this._persistent){ + this.addUsage(this._vectorRegisters[i], 1); + }; + return (this._vectorRegisters[i]); + }; + i++; + }; + throw (new Error("Register overflow!")); + } + public function requestFreeRegComponent():ShaderRegisterElement{ + var comp:String; + var j:int; + var i:int; + while (i < this._regCount) { + if (this._usedVectorCount[i] > 0){ + } else { + j = 0; + while (j < 4) { + comp = COMPONENTS[j]; + if (this._usedSingleCount[comp][i] == 0){ + if (this._persistent){ + this.addUsage(this._usedSingleCount[comp][i], 1); + }; + return (this._registerComponents[comp][i]); + }; + j++; + }; + }; + i++; + }; + throw (new Error("Register overflow!")); + } + public function addUsage(register:ShaderRegisterElement, usageCount:int):void{ + if (register.component){ + this._usedSingleCount[register.component][register.index] = (this._usedSingleCount[register.component][register.index] + usageCount); + } else { + this._usedVectorCount[register.index] = (this._usedVectorCount[register.index] + usageCount); + }; + } + public function removeUsage(register:ShaderRegisterElement):void{ + if (register.component){ + var _local2 = this._usedSingleCount[register.component]; + var _local3 = register.index; + var _local4 = (_local2[_local3] - 1); + _local2[_local3] = _local4; + if (_local4 < 0){ + throw (new Error("More usages removed than exist!")); + }; + } else { + _local2 = this._usedVectorCount; + _local3 = register.index; + _local4 = (_local2[_local3] - 1); + _local2[_local3] = _local4; + if (_local4 < 0){ + throw (new Error("More usages removed than exist!")); + }; + }; + } + public function dispose():void{ + this._vectorRegisters = null; + this._registerComponents = null; + this._usedSingleCount = null; + this._usedVectorCount = null; + } + public function hasRegisteredRegs():Boolean{ + var i:int; + while (i < this._regCount) { + if (this.isRegisterUsed(i)){ + return (true); + }; + i++; + }; + return (false); + } + private function initRegisters(regName:String, regCount:int):void{ + var comp:String; + var j:int; + this._vectorRegisters = new Vector.(regCount, true); + this._registerComponents = []; + this._usedVectorCount = new Vector.(regCount, true); + this._usedSingleCount = []; + var i:int; + while (i < regCount) { + this._vectorRegisters[i] = new ShaderRegisterElement(regName, i); + this._usedVectorCount[i] = 0; + j = 0; + while (j < 4) { + comp = COMPONENTS[j]; + this._registerComponents[comp] = ((this._registerComponents[comp]) || ([])); + this._usedSingleCount[comp] = ((this._usedSingleCount[comp]) || ([])); + this._registerComponents[comp][i] = new ShaderRegisterElement(regName, i, comp); + this._usedSingleCount[comp][i] = 0; + j++; + }; + i++; + }; + } + private function isRegisterUsed(index:int):Boolean{ + if (this._usedVectorCount[index] > 0){ + return (true); + }; + var i:int; + while (i < 4) { + if (this._usedSingleCount[COMPONENTS[i]][index] > 0){ + return (true); + }; + i++; + }; + return (false); + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterCache.as b/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterCache.as new file mode 100644 index 0000000..b6aea43 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterCache.as @@ -0,0 +1,135 @@ +package away3d.materials.utils { + + public class ShaderRegisterCache { + + private var _fragmentTempCache:RegisterPool; + private var _vertexTempCache:RegisterPool; + private var _varyingCache:RegisterPool; + private var _fragmentConstantsCache:RegisterPool; + private var _vertexConstantsCache:RegisterPool; + private var _textureCache:RegisterPool; + private var _vertexAttributesCache:RegisterPool; + private var _vertexConstantOffset:uint; + private var _vertexAttributesOffset:uint; + private var _fragmentOutputRegister:ShaderRegisterElement; + private var _vertexOutputRegister:ShaderRegisterElement; + private var _numUsedVertexConstants:uint; + private var _numUsedFragmentConstants:uint; + private var _numUsedStreams:uint; + private var _numUsedTextures:uint; + + public function ShaderRegisterCache(){ + super(); + } + public function reset():void{ + var i:int; + this._fragmentTempCache = new RegisterPool("ft", 8, false); + this._vertexTempCache = new RegisterPool("vt", 8, false); + this._varyingCache = new RegisterPool("v", 8); + this._textureCache = new RegisterPool("fs", 8); + this._vertexAttributesCache = new RegisterPool("va", 8); + this._fragmentConstantsCache = new RegisterPool("fc", 28); + this._vertexConstantsCache = new RegisterPool("vc", 128); + this._fragmentOutputRegister = new ShaderRegisterElement("oc", -1); + this._vertexOutputRegister = new ShaderRegisterElement("op", -1); + this._numUsedVertexConstants = 0; + this._numUsedStreams = 0; + this._numUsedTextures = 0; + i = 0; + while (i < this._vertexAttributesOffset) { + this.getFreeVertexAttribute(); + i++; + }; + i = 0; + while (i < this._vertexConstantOffset) { + this.getFreeVertexConstant(); + i++; + }; + } + public function dispose():void{ + this._fragmentTempCache.dispose(); + this._vertexTempCache.dispose(); + this._varyingCache.dispose(); + this._fragmentConstantsCache.dispose(); + this._vertexAttributesCache.dispose(); + this._fragmentTempCache = null; + this._vertexTempCache = null; + this._varyingCache = null; + this._fragmentConstantsCache = null; + this._vertexAttributesCache = null; + this._fragmentOutputRegister = null; + this._vertexOutputRegister = null; + } + public function addFragmentTempUsages(register:ShaderRegisterElement, usageCount:uint):void{ + this._fragmentTempCache.addUsage(register, usageCount); + } + public function removeFragmentTempUsage(register:ShaderRegisterElement):void{ + this._fragmentTempCache.removeUsage(register); + } + public function addVertexTempUsages(register:ShaderRegisterElement, usageCount:uint):void{ + this._vertexTempCache.addUsage(register, usageCount); + } + public function removeVertexTempUsage(register:ShaderRegisterElement):void{ + this._vertexTempCache.removeUsage(register); + } + public function getFreeFragmentVectorTemp():ShaderRegisterElement{ + return (this._fragmentTempCache.requestFreeVectorReg()); + } + public function getFreeFragmentSingleTemp():ShaderRegisterElement{ + return (this._fragmentTempCache.requestFreeRegComponent()); + } + public function getFreeVarying():ShaderRegisterElement{ + return (this._varyingCache.requestFreeVectorReg()); + } + public function getFreeFragmentConstant():ShaderRegisterElement{ + this._numUsedFragmentConstants++; + return (this._fragmentConstantsCache.requestFreeVectorReg()); + } + public function getFreeVertexConstant():ShaderRegisterElement{ + this._numUsedVertexConstants++; + return (this._vertexConstantsCache.requestFreeVectorReg()); + } + public function getFreeVertexVectorTemp():ShaderRegisterElement{ + return (this._vertexTempCache.requestFreeVectorReg()); + } + public function getFreeVertexSingleTemp():ShaderRegisterElement{ + return (this._vertexTempCache.requestFreeRegComponent()); + } + public function getFreeVertexAttribute():ShaderRegisterElement{ + this._numUsedStreams++; + return (this._vertexAttributesCache.requestFreeVectorReg()); + } + public function getFreeTextureReg():ShaderRegisterElement{ + this._numUsedTextures++; + return (this._textureCache.requestFreeVectorReg()); + } + public function get vertexConstantOffset():uint{ + return (this._vertexConstantOffset); + } + public function set vertexConstantOffset(vertexConstantOffset:uint):void{ + this._vertexConstantOffset = vertexConstantOffset; + } + public function get vertexAttributesOffset():uint{ + return (this._vertexAttributesOffset); + } + public function set vertexAttributesOffset(value:uint):void{ + this._vertexAttributesOffset = value; + } + public function get fragmentOutputRegister():ShaderRegisterElement{ + return (this._fragmentOutputRegister); + } + public function get numUsedVertexConstants():uint{ + return (this._numUsedVertexConstants); + } + public function get numUsedFragmentConstants():uint{ + return (this._numUsedFragmentConstants); + } + public function get numUsedStreams():uint{ + return (this._numUsedStreams); + } + public function get numUsedTextures():uint{ + return (this._numUsedTextures); + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterElement.as b/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterElement.as new file mode 100644 index 0000000..10f1ed5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/materials/utils/ShaderRegisterElement.as @@ -0,0 +1,32 @@ +package away3d.materials.utils { + + public class ShaderRegisterElement { + + private var _regName:String; + private var _index:int; + private var _component:String; + + public function ShaderRegisterElement(regName:String, index:int, component:String=null){ + super(); + this._regName = regName; + this._index = index; + this._component = component; + } + public function toString():String{ + if (this._index >= 0){ + return (((this._regName + this._index) + ((this._component) ? ("." + this._component) : ""))); + }; + return ((this._regName + ((this._component) ? ("." + this._component) : ""))); + } + public function get regName():String{ + return (this._regName); + } + public function get index():int{ + return (this._index); + } + public function get component():String{ + return (this._component); + } + + } +}//package away3d.materials.utils diff --git a/flash_decompiled/watchdog/away3d/primitives/CylinderGeometry.as b/flash_decompiled/watchdog/away3d/primitives/CylinderGeometry.as new file mode 100644 index 0000000..07061cd --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/CylinderGeometry.as @@ -0,0 +1,340 @@ +package away3d.primitives { + import __AS3__.vec.*; + import away3d.core.base.*; + + public class CylinderGeometry extends PrimitiveBase { + + protected var _topRadius:Number; + protected var _bottomRadius:Number; + protected var _height:Number; + protected var _segmentsW:uint; + protected var _segmentsH:uint; + protected var _topClosed:Boolean; + protected var _bottomClosed:Boolean; + protected var _surfaceClosed:Boolean; + protected var _yUp:Boolean; + private var _rawVertexPositions:Vector.; + private var _rawVertexNormals:Vector.; + private var _rawVertexTangents:Vector.; + private var _rawUvs:Vector.; + private var _rawIndices:Vector.; + private var _nextVertexIndex:uint; + private var _currentIndex:uint; + private var _currentTriangleIndex:uint; + private var _vertexIndexOffset:uint; + private var _numVertices:uint; + private var _numTriangles:uint; + + public function CylinderGeometry(topRadius:Number=50, bottomRadius:Number=50, height:Number=100, segmentsW:uint=16, segmentsH:uint=1, topClosed:Boolean=true, bottomClosed:Boolean=true, surfaceClosed:Boolean=true, yUp:Boolean=true){ + super(); + this._topRadius = topRadius; + this._bottomRadius = bottomRadius; + this._height = height; + this._segmentsW = segmentsW; + this._segmentsH = segmentsH; + this._topClosed = topClosed; + this._bottomClosed = bottomClosed; + this._surfaceClosed = surfaceClosed; + this._yUp = yUp; + } + private function addVertex(px:Number, py:Number, pz:Number, nx:Number, ny:Number, nz:Number, tx:Number, ty:Number, tz:Number):void{ + var compVertInd:uint = (this._nextVertexIndex * 3); + this._rawVertexPositions[compVertInd] = px; + this._rawVertexPositions[(compVertInd + 1)] = py; + this._rawVertexPositions[(compVertInd + 2)] = pz; + this._rawVertexNormals[compVertInd] = nx; + this._rawVertexNormals[(compVertInd + 1)] = ny; + this._rawVertexNormals[(compVertInd + 2)] = nz; + this._rawVertexTangents[compVertInd] = tx; + this._rawVertexTangents[(compVertInd + 1)] = ty; + this._rawVertexTangents[(compVertInd + 2)] = tz; + this._nextVertexIndex++; + } + private function addTriangleClockWise(cwVertexIndex0:uint, cwVertexIndex1:uint, cwVertexIndex2:uint):void{ + var _local4 = this._currentIndex++; + this._rawIndices[_local4] = cwVertexIndex0; + var _local5 = this._currentIndex++; + this._rawIndices[_local5] = cwVertexIndex1; + var _local6 = this._currentIndex++; + this._rawIndices[_local6] = cwVertexIndex2; + this._currentTriangleIndex++; + } + override protected function buildGeometry(target:SubGeometry):void{ + var i:uint; + var j:uint; + var x:Number; + var y:Number; + var z:Number; + var radius:Number; + var revolutionAngle:Number; + var dr:Number; + var latNormElev:Number; + var latNormBase:Number; + var numVertComponents:uint; + var a:uint; + var b:uint; + var c:uint; + var d:uint; + var na0:Number; + var na1:Number; + this._numVertices = 0; + this._numTriangles = 0; + this._nextVertexIndex = 0; + this._currentIndex = 0; + this._currentTriangleIndex = 0; + if (this._surfaceClosed){ + this._numVertices = (this._numVertices + ((this._segmentsH + 1) * (this._segmentsW + 1))); + this._numTriangles = (this._numTriangles + ((this._segmentsH * this._segmentsW) * 2)); + }; + if (this._topClosed){ + this._numVertices = (this._numVertices + (2 * (this._segmentsW + 1))); + this._numTriangles = (this._numTriangles + this._segmentsW); + }; + if (this._bottomClosed){ + this._numVertices = (this._numVertices + (2 * (this._segmentsW + 1))); + this._numTriangles = (this._numTriangles + this._segmentsW); + }; + if (this._numVertices == target.numVertices){ + this._rawVertexPositions = target.vertexData; + this._rawVertexNormals = target.vertexNormalData; + this._rawVertexTangents = target.vertexTangentData; + this._rawIndices = target.indexData; + } else { + numVertComponents = (this._numVertices * 3); + this._rawVertexPositions = new Vector.(numVertComponents, true); + this._rawVertexNormals = new Vector.(numVertComponents, true); + this._rawVertexTangents = new Vector.(numVertComponents, true); + this._rawIndices = new Vector.((this._numTriangles * 3), true); + }; + var revolutionAngleDelta:Number = ((2 * Math.PI) / this._segmentsW); + if (((this._topClosed) && ((this._topRadius > 0)))){ + z = (-0.5 * this._height); + i = 0; + while (i <= this._segmentsW) { + if (this._yUp){ + this.addVertex(0, -(z), 0, 0, 1, 0, 1, 0, 0); + } else { + this.addVertex(0, 0, z, 0, 0, -1, 1, 0, 0); + }; + revolutionAngle = (i * revolutionAngleDelta); + x = (this._topRadius * Math.cos(revolutionAngle)); + y = (this._topRadius * Math.sin(revolutionAngle)); + if (this._yUp){ + this.addVertex(x, -(z), y, 0, 1, 0, 1, 0, 0); + } else { + this.addVertex(x, y, z, 0, 0, -1, 1, 0, 0); + }; + if (i > 0){ + this.addTriangleClockWise((this._nextVertexIndex - 1), (this._nextVertexIndex - 3), (this._nextVertexIndex - 2)); + }; + i++; + }; + this._vertexIndexOffset = this._nextVertexIndex; + }; + if (((this._bottomClosed) && ((this._bottomRadius > 0)))){ + z = (0.5 * this._height); + i = 0; + while (i <= this._segmentsW) { + if (this._yUp){ + this.addVertex(0, -(z), 0, 0, -1, 0, 1, 0, 0); + } else { + this.addVertex(0, 0, z, 0, 0, 1, 1, 0, 0); + }; + revolutionAngle = (i * revolutionAngleDelta); + x = (this._bottomRadius * Math.cos(revolutionAngle)); + y = (this._bottomRadius * Math.sin(revolutionAngle)); + if (this._yUp){ + this.addVertex(x, -(z), y, 0, -1, 0, 1, 0, 0); + } else { + this.addVertex(x, y, z, 0, 0, 1, 1, 0, 0); + }; + if (i > 0){ + this.addTriangleClockWise((this._nextVertexIndex - 2), (this._nextVertexIndex - 3), (this._nextVertexIndex - 1)); + }; + i++; + }; + this._vertexIndexOffset = this._nextVertexIndex; + }; + dr = (this._bottomRadius - this._topRadius); + latNormElev = (dr / this._height); + latNormBase = ((latNormElev)==0) ? 1 : (this._height / dr); + if (this._surfaceClosed){ + j = 0; + while (j <= this._segmentsH) { + radius = (this._topRadius - ((j / this._segmentsH) * (this._topRadius - this._bottomRadius))); + z = (-((this._height / 2)) + ((j / this._segmentsH) * this._height)); + i = 0; + while (i <= this._segmentsW) { + revolutionAngle = (i * revolutionAngleDelta); + x = (radius * Math.cos(revolutionAngle)); + y = (radius * Math.sin(revolutionAngle)); + na0 = (latNormBase * Math.cos(revolutionAngle)); + na1 = (latNormBase * Math.sin(revolutionAngle)); + if (this._yUp){ + this.addVertex(x, -(z), y, na0, latNormElev, na1, na1, 0, -(na0)); + } else { + this.addVertex(x, y, z, na0, na1, latNormElev, na1, -(na0), 0); + }; + if ((((i > 0)) && ((j > 0)))){ + a = (this._nextVertexIndex - 1); + b = (this._nextVertexIndex - 2); + c = ((b - this._segmentsW) - 1); + d = ((a - this._segmentsW) - 1); + this.addTriangleClockWise(a, b, c); + this.addTriangleClockWise(a, c, d); + }; + i++; + }; + j++; + }; + }; + target.updateVertexData(this._rawVertexPositions); + target.updateVertexNormalData(this._rawVertexNormals); + target.updateVertexTangentData(this._rawVertexTangents); + target.updateIndexData(this._rawIndices); + } + override protected function buildUVs(target:SubGeometry):void{ + var i:int; + var j:int; + var x:Number; + var y:Number; + var revolutionAngle:Number; + var numUvs:uint = (this._numVertices * 2); + if (((target.UVData) && ((numUvs == target.UVData.length)))){ + this._rawUvs = target.UVData; + } else { + this._rawUvs = new Vector.(numUvs, true); + }; + var revolutionAngleDelta:Number = ((2 * Math.PI) / this._segmentsW); + var currentUvCompIndex:uint; + if (this._topClosed){ + i = 0; + while (i <= this._segmentsW) { + revolutionAngle = (i * revolutionAngleDelta); + x = (0.5 + (0.5 * Math.cos(revolutionAngle))); + y = (0.5 + (0.5 * Math.sin(revolutionAngle))); + var _temp1 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + var _local10 = _temp1; + this._rawUvs[_local10] = 0.5; + var _temp2 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + var _local11 = _temp2; + this._rawUvs[_local11] = 0.5; + var _temp3 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + var _local12 = _temp3; + this._rawUvs[_local12] = x; + var _temp4 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + var _local13 = _temp4; + this._rawUvs[_local13] = y; + i++; + }; + }; + if (this._bottomClosed){ + i = 0; + while (i <= this._segmentsW) { + revolutionAngle = (i * revolutionAngleDelta); + x = (0.5 + (0.5 * Math.cos(revolutionAngle))); + y = (0.5 + (0.5 * Math.sin(revolutionAngle))); + var _temp5 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local10 = _temp5; + this._rawUvs[_local10] = 0.5; + var _temp6 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local11 = _temp6; + this._rawUvs[_local11] = 0.5; + var _temp7 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local12 = _temp7; + this._rawUvs[_local12] = x; + var _temp8 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local13 = _temp8; + this._rawUvs[_local13] = y; + i++; + }; + }; + if (this._surfaceClosed){ + j = 0; + while (j <= this._segmentsH) { + i = 0; + while (i <= this._segmentsW) { + var _temp9 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local10 = _temp9; + this._rawUvs[_local10] = (i / this._segmentsW); + var _temp10 = currentUvCompIndex; + currentUvCompIndex = (currentUvCompIndex + 1); + _local11 = _temp10; + this._rawUvs[_local11] = (j / this._segmentsH); + i++; + }; + j++; + }; + }; + target.updateUVData(this._rawUvs); + } + public function get topRadius():Number{ + return (this._topRadius); + } + public function set topRadius(value:Number):void{ + this._topRadius = value; + invalidateGeometry(); + } + public function get bottomRadius():Number{ + return (this._bottomRadius); + } + public function set bottomRadius(value:Number):void{ + this._bottomRadius = value; + invalidateGeometry(); + } + public function get height():Number{ + return (this._height); + } + public function set height(value:Number):void{ + this._height = value; + invalidateGeometry(); + } + public function get segmentsW():uint{ + return (this._segmentsW); + } + public function set segmentsW(value:uint):void{ + this._segmentsW = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get segmentsH():uint{ + return (this._segmentsH); + } + public function set segmentsH(value:uint):void{ + this._segmentsH = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get topClosed():Boolean{ + return (this._topClosed); + } + public function set topClosed(value:Boolean):void{ + this._topClosed = value; + invalidateGeometry(); + } + public function get bottomClosed():Boolean{ + return (this._bottomClosed); + } + public function set bottomClosed(value:Boolean):void{ + this._bottomClosed = value; + invalidateGeometry(); + } + public function get yUp():Boolean{ + return (this._yUp); + } + public function set yUp(value:Boolean):void{ + this._yUp = value; + invalidateGeometry(); + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/LineSegment.as b/flash_decompiled/watchdog/away3d/primitives/LineSegment.as new file mode 100644 index 0000000..69839a3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/LineSegment.as @@ -0,0 +1,13 @@ +package away3d.primitives { + import flash.geom.*; + import away3d.primitives.data.*; + + public class LineSegment extends Segment { + + public const TYPE:String = "line"; + + public function LineSegment(v0:Vector3D, v1:Vector3D, color0:uint=0x333333, color1:uint=0x333333, thickness:Number=1):void{ + super(v0, v1, null, color0, color1, thickness); + } + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/PlaneGeometry.as b/flash_decompiled/watchdog/away3d/primitives/PlaneGeometry.as new file mode 100644 index 0000000..45a6402 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/PlaneGeometry.as @@ -0,0 +1,243 @@ +package away3d.primitives { + import __AS3__.vec.*; + import away3d.core.base.*; + + public class PlaneGeometry extends PrimitiveBase { + + private var _segmentsW:uint; + private var _segmentsH:uint; + private var _yUp:Boolean; + private var _width:Number; + private var _height:Number; + private var _doubleSided:Boolean; + + public function PlaneGeometry(width:Number=100, height:Number=100, segmentsW:uint=1, segmentsH:uint=1, yUp:Boolean=true, doubleSided:Boolean=false){ + super(); + this._segmentsW = segmentsW; + this._segmentsH = segmentsH; + this._yUp = yUp; + this._width = width; + this._height = height; + this._doubleSided = doubleSided; + } + public function get segmentsW():uint{ + return (this._segmentsW); + } + public function set segmentsW(value:uint):void{ + this._segmentsW = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get segmentsH():uint{ + return (this._segmentsH); + } + public function set segmentsH(value:uint):void{ + this._segmentsH = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get yUp():Boolean{ + return (this._yUp); + } + public function set yUp(value:Boolean):void{ + this._yUp = value; + invalidateGeometry(); + } + public function get doubleSided():Boolean{ + return (this._doubleSided); + } + public function set doubleSided(value:Boolean):void{ + this._doubleSided = value; + invalidateGeometry(); + } + public function get width():Number{ + return (this._width); + } + public function set width(value:Number):void{ + this._width = value; + invalidateGeometry(); + } + public function get height():Number{ + return (this._height); + } + public function set height(value:Number):void{ + this._height = value; + invalidateGeometry(); + } + override protected function buildGeometry(target:SubGeometry):void{ + var vertices:Vector.; + var normals:Vector.; + var tangents:Vector.; + var indices:Vector.; + var x:Number; + var y:Number; + var base:uint; + var xi:uint; + var i:int; + var mult:int; + var numIndices:uint; + var tw:uint = (this._segmentsW + 1); + var numVertices:uint = ((this._segmentsH + 1) * tw); + if (this._doubleSided){ + numVertices = (numVertices * 2); + }; + if (numVertices == target.numVertices){ + vertices = target.vertexData; + normals = target.vertexNormalData; + tangents = target.vertexTangentData; + indices = target.indexData; + } else { + vertices = new Vector.((numVertices * 3), true); + normals = new Vector.((numVertices * 3), true); + tangents = new Vector.((numVertices * 3), true); + numIndices = ((this._segmentsH * this._segmentsW) * 6); + if (this._doubleSided){ + numIndices = (numIndices << 1); + }; + indices = new Vector.(numIndices, true); + }; + numIndices = 0; + numVertices = 0; + var yi:uint; + while (yi <= this._segmentsH) { + xi = 0; + while (xi <= this._segmentsW) { + x = (((xi / this._segmentsW) - 0.5) * this._width); + y = (((yi / this._segmentsH) - 0.5) * this._height); + vertices[numVertices] = x; + normals[numVertices] = 0; + var _temp1 = numVertices; + numVertices = (numVertices + 1); + var _local16 = _temp1; + tangents[_local16] = 1; + if (this._yUp){ + vertices[numVertices] = 0; + normals[numVertices] = 1; + var _temp2 = numVertices; + numVertices = (numVertices + 1); + var _local17 = _temp2; + tangents[_local17] = 0; + vertices[numVertices] = y; + normals[numVertices] = 0; + var _temp3 = numVertices; + numVertices = (numVertices + 1); + var _local18 = _temp3; + tangents[_local18] = 0; + } else { + vertices[numVertices] = y; + normals[numVertices] = 0; + var _temp4 = numVertices; + numVertices = (numVertices + 1); + _local17 = _temp4; + tangents[_local17] = 0; + vertices[numVertices] = 0; + normals[numVertices] = -1; + var _temp5 = numVertices; + numVertices = (numVertices + 1); + _local18 = _temp5; + tangents[_local18] = 0; + }; + if (this._doubleSided){ + i = 0; + while (i < 3) { + vertices[numVertices] = vertices[(numVertices - 3)]; + normals[numVertices] = -(normals[(numVertices - 3)]); + tangents[numVertices] = -(tangents[(numVertices - 3)]); + numVertices++; + i++; + }; + }; + if (((!((xi == this._segmentsW))) && (!((yi == this._segmentsH))))){ + base = (xi + (yi * tw)); + mult = ((this._doubleSided) ? 2 : 1); + var _temp6 = numIndices; + numIndices = (numIndices + 1); + _local17 = _temp6; + indices[_local17] = (base * mult); + var _temp7 = numIndices; + numIndices = (numIndices + 1); + _local18 = _temp7; + indices[_local18] = ((base + tw) * mult); + var _temp8 = numIndices; + numIndices = (numIndices + 1); + var _local19 = _temp8; + indices[_local19] = (((base + tw) + 1) * mult); + var _temp9 = numIndices; + numIndices = (numIndices + 1); + var _local20 = _temp9; + indices[_local20] = (base * mult); + var _temp10 = numIndices; + numIndices = (numIndices + 1); + var _local21 = _temp10; + indices[_local21] = (((base + tw) + 1) * mult); + var _temp11 = numIndices; + numIndices = (numIndices + 1); + var _local22 = _temp11; + indices[_local22] = ((base + 1) * mult); + if (this._doubleSided){ + var _temp12 = numIndices; + numIndices = (numIndices + 1); + var _local23 = _temp12; + indices[_local23] = ((((base + tw) + 1) * mult) + 1); + var _temp13 = numIndices; + numIndices = (numIndices + 1); + var _local24 = _temp13; + indices[_local24] = (((base + tw) * mult) + 1); + var _temp14 = numIndices; + numIndices = (numIndices + 1); + var _local25 = _temp14; + indices[_local25] = ((base * mult) + 1); + var _temp15 = numIndices; + numIndices = (numIndices + 1); + var _local26 = _temp15; + indices[_local26] = (((base + 1) * mult) + 1); + var _temp16 = numIndices; + numIndices = (numIndices + 1); + var _local27 = _temp16; + indices[_local27] = ((((base + tw) + 1) * mult) + 1); + var _temp17 = numIndices; + numIndices = (numIndices + 1); + var _local28 = _temp17; + indices[_local28] = ((base * mult) + 1); + }; + }; + xi++; + }; + yi++; + }; + target.updateVertexData(vertices); + target.updateVertexNormalData(normals); + target.updateVertexTangentData(tangents); + target.updateIndexData(indices); + } + override protected function buildUVs(target:SubGeometry):void{ + var xi:uint; + var uvs:Vector. = new Vector.(); + var numUvs:uint = (((this._segmentsH + 1) * (this._segmentsW + 1)) * 2); + if (((target.UVData) && ((numUvs == target.UVData.length)))){ + uvs = target.UVData; + } else { + uvs = new Vector.(numUvs, true); + }; + numUvs = 0; + var yi:uint; + while (yi <= this._segmentsH) { + xi = 0; + while (xi <= this._segmentsW) { + var _temp1 = numUvs; + numUvs = (numUvs + 1); + var _local6 = _temp1; + uvs[_local6] = (xi / this._segmentsW); + var _temp2 = numUvs; + numUvs = (numUvs + 1); + var _local7 = _temp2; + uvs[_local7] = (1 - (yi / this._segmentsH)); + xi++; + }; + yi++; + }; + target.updateUVData(uvs); + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/PrimitiveBase.as b/flash_decompiled/watchdog/away3d/primitives/PrimitiveBase.as new file mode 100644 index 0000000..c362d55 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/PrimitiveBase.as @@ -0,0 +1,84 @@ +package away3d.primitives { + import away3d.core.base.*; + import __AS3__.vec.*; + import flash.geom.*; + import away3d.errors.*; + + public class PrimitiveBase extends Geometry { + + protected var _geomDirty:Boolean = true; + protected var _uvDirty:Boolean = true; + private var _subGeometry:SubGeometry; + + public function PrimitiveBase(){ + super(); + this._subGeometry = new SubGeometry(); + addSubGeometry(this._subGeometry); + } + override public function get subGeometries():Vector.{ + if (this._geomDirty){ + this.updateGeometry(); + }; + if (this._uvDirty){ + this.updateUVs(); + }; + return (super.subGeometries); + } + override public function clone():Geometry{ + if (this._geomDirty){ + this.updateGeometry(); + }; + if (this._uvDirty){ + this.updateUVs(); + }; + return (super.clone()); + } + override public function scale(scale:Number):void{ + if (this._geomDirty){ + this.updateGeometry(); + }; + super.scale(scale); + } + override public function scaleUV(scaleU:Number=1, scaleV:Number=1):void{ + if (this._uvDirty){ + this.updateUVs(); + }; + super.scaleUV(scaleU, scaleV); + } + override public function applyTransformation(transform:Matrix3D):void{ + if (this._geomDirty){ + this.updateGeometry(); + }; + super.applyTransformation(transform); + } + protected function buildGeometry(target:SubGeometry):void{ + throw (new AbstractMethodError()); + } + protected function buildUVs(target:SubGeometry):void{ + throw (new AbstractMethodError()); + } + protected function invalidateGeometry():void{ + this._geomDirty = true; + } + protected function invalidateUVs():void{ + this._uvDirty = true; + } + private function updateGeometry():void{ + this.buildGeometry(this._subGeometry); + this._geomDirty = false; + } + private function updateUVs():void{ + this.buildUVs(this._subGeometry); + this._uvDirty = false; + } + override function validate():void{ + if (this._geomDirty){ + this.updateGeometry(); + }; + if (this._uvDirty){ + this.updateUVs(); + }; + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/SphereGeometry.as b/flash_decompiled/watchdog/away3d/primitives/SphereGeometry.as new file mode 100644 index 0000000..6e622d1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/SphereGeometry.as @@ -0,0 +1,233 @@ +package away3d.primitives { + import __AS3__.vec.*; + import away3d.core.base.*; + + public class SphereGeometry extends PrimitiveBase { + + private var _radius:Number; + private var _segmentsW:uint; + private var _segmentsH:uint; + private var _yUp:Boolean; + + public function SphereGeometry(radius:Number=50, segmentsW:uint=16, segmentsH:uint=12, yUp:Boolean=true){ + super(); + this._radius = radius; + this._segmentsW = segmentsW; + this._segmentsH = segmentsH; + this._yUp = yUp; + } + override protected function buildGeometry(target:SubGeometry):void{ + var vertices:Vector.; + var vertexNormals:Vector.; + var vertexTangents:Vector.; + var indices:Vector.; + var i:uint; + var j:uint; + var triIndex:uint; + var horangle:Number; + var z:Number; + var ringradius:Number; + var verangle:Number; + var x:Number; + var y:Number; + var normLen:Number; + var tanLen:Number; + var a:int; + var b:int; + var c:int; + var d:int; + var numVerts:uint = ((this._segmentsH + 1) * (this._segmentsW + 1)); + if (numVerts == target.numVertices){ + vertices = target.vertexData; + vertexNormals = target.vertexNormalData; + vertexTangents = target.vertexTangentData; + indices = target.indexData; + } else { + vertices = new Vector.((numVerts * 3), true); + vertexNormals = new Vector.((numVerts * 3), true); + vertexTangents = new Vector.((numVerts * 3), true); + indices = new Vector.((((this._segmentsH - 1) * this._segmentsW) * 6), true); + }; + numVerts = 0; + j = 0; + while (j <= this._segmentsH) { + horangle = ((Math.PI * j) / this._segmentsH); + z = (-(this._radius) * Math.cos(horangle)); + ringradius = (this._radius * Math.sin(horangle)); + i = 0; + while (i <= this._segmentsW) { + verangle = (((2 * Math.PI) * i) / this._segmentsW); + x = (ringradius * Math.cos(verangle)); + y = (ringradius * Math.sin(verangle)); + normLen = (1 / Math.sqrt((((x * x) + (y * y)) + (z * z)))); + tanLen = Math.sqrt(((y * y) + (x * x))); + if (this._yUp){ + vertexNormals[numVerts] = (x * normLen); + vertexTangents[numVerts] = (((tanLen > 0.007)) ? (-(y) / tanLen) : 1); + var _temp1 = numVerts; + numVerts = (numVerts + 1); + var _local22 = _temp1; + vertices[_local22] = x; + vertexNormals[numVerts] = (-(z) * normLen); + vertexTangents[numVerts] = 0; + var _temp2 = numVerts; + numVerts = (numVerts + 1); + var _local23 = _temp2; + vertices[_local23] = -(z); + vertexNormals[numVerts] = (y * normLen); + vertexTangents[numVerts] = (((tanLen > 0.007)) ? (x / tanLen) : 0); + var _temp3 = numVerts; + numVerts = (numVerts + 1); + var _local24 = _temp3; + vertices[_local24] = y; + } else { + vertexNormals[numVerts] = (x * normLen); + vertexTangents[numVerts] = (((tanLen > 0.007)) ? (-(y) / tanLen) : 1); + var _temp4 = numVerts; + numVerts = (numVerts + 1); + _local22 = _temp4; + vertices[_local22] = x; + vertexNormals[numVerts] = (y * normLen); + vertexTangents[numVerts] = (((tanLen > 0.007)) ? (x / tanLen) : 0); + var _temp5 = numVerts; + numVerts = (numVerts + 1); + _local23 = _temp5; + vertices[_local23] = y; + vertexNormals[numVerts] = (z * normLen); + vertexTangents[numVerts] = 0; + var _temp6 = numVerts; + numVerts = (numVerts + 1); + _local24 = _temp6; + vertices[_local24] = z; + }; + if ((((i > 0)) && ((j > 0)))){ + a = (((this._segmentsW + 1) * j) + i); + b = ((((this._segmentsW + 1) * j) + i) - 1); + c = ((((this._segmentsW + 1) * (j - 1)) + i) - 1); + d = (((this._segmentsW + 1) * (j - 1)) + i); + if (j == this._segmentsH){ + var _temp7 = triIndex; + triIndex = (triIndex + 1); + _local22 = _temp7; + indices[_local22] = a; + var _temp8 = triIndex; + triIndex = (triIndex + 1); + _local23 = _temp8; + indices[_local23] = c; + var _temp9 = triIndex; + triIndex = (triIndex + 1); + _local24 = _temp9; + indices[_local24] = d; + } else { + if (j == 1){ + var _temp10 = triIndex; + triIndex = (triIndex + 1); + _local22 = _temp10; + indices[_local22] = a; + var _temp11 = triIndex; + triIndex = (triIndex + 1); + _local23 = _temp11; + indices[_local23] = b; + var _temp12 = triIndex; + triIndex = (triIndex + 1); + _local24 = _temp12; + indices[_local24] = c; + } else { + var _temp13 = triIndex; + triIndex = (triIndex + 1); + _local22 = _temp13; + indices[_local22] = a; + var _temp14 = triIndex; + triIndex = (triIndex + 1); + _local23 = _temp14; + indices[_local23] = b; + var _temp15 = triIndex; + triIndex = (triIndex + 1); + _local24 = _temp15; + indices[_local24] = c; + var _temp16 = triIndex; + triIndex = (triIndex + 1); + var _local25 = _temp16; + indices[_local25] = a; + var _temp17 = triIndex; + triIndex = (triIndex + 1); + var _local26 = _temp17; + indices[_local26] = c; + var _temp18 = triIndex; + triIndex = (triIndex + 1); + var _local27 = _temp18; + indices[_local27] = d; + }; + }; + }; + i++; + }; + j++; + }; + target.updateVertexData(vertices); + target.updateVertexNormalData(vertexNormals); + target.updateVertexTangentData(vertexTangents); + target.updateIndexData(indices); + } + override protected function buildUVs(target:SubGeometry):void{ + var i:int; + var j:int; + var uvData:Vector.; + var numUvs:uint = (((this._segmentsH + 1) * (this._segmentsW + 1)) * 2); + if (((target.UVData) && ((numUvs == target.UVData.length)))){ + uvData = target.UVData; + } else { + uvData = new Vector.(numUvs, true); + }; + numUvs = 0; + j = 0; + while (j <= this._segmentsH) { + i = 0; + while (i <= this._segmentsW) { + var _temp1 = numUvs; + numUvs = (numUvs + 1); + var _local6 = _temp1; + uvData[_local6] = (i / this._segmentsW); + var _temp2 = numUvs; + numUvs = (numUvs + 1); + var _local7 = _temp2; + uvData[_local7] = (j / this._segmentsH); + i++; + }; + j++; + }; + target.updateUVData(uvData); + } + public function get radius():Number{ + return (this._radius); + } + public function set radius(value:Number):void{ + this._radius = value; + invalidateGeometry(); + } + public function get segmentsW():uint{ + return (this._segmentsW); + } + public function set segmentsW(value:uint):void{ + this._segmentsW = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get segmentsH():uint{ + return (this._segmentsH); + } + public function set segmentsH(value:uint):void{ + this._segmentsH = value; + invalidateGeometry(); + invalidateUVs(); + } + public function get yUp():Boolean{ + return (this._yUp); + } + public function set yUp(value:Boolean):void{ + this._yUp = value; + invalidateGeometry(); + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/WireframeCube.as b/flash_decompiled/watchdog/away3d/primitives/WireframeCube.as new file mode 100644 index 0000000..ba79046 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/WireframeCube.as @@ -0,0 +1,100 @@ +package away3d.primitives { + import flash.geom.*; + + public class WireframeCube extends WireframePrimitiveBase { + + private var _width:Number; + private var _height:Number; + private var _depth:Number; + + public function WireframeCube(width:Number=100, height:Number=100, depth:Number=100, color:uint=0xFFFFFF, thickness:Number=1){ + super(color, thickness); + this._width = width; + this._height = height; + this._depth = depth; + } + public function get width():Number{ + return (this._width); + } + public function set width(value:Number):void{ + this._width = value; + invalidateGeometry(); + } + public function get height():Number{ + return (this._height); + } + public function set height(value:Number):void{ + if (value <= 0){ + throw (new Error("Value needs to be greater than 0")); + }; + this._height = value; + invalidateGeometry(); + } + public function get depth():Number{ + return (this._depth); + } + public function set depth(value:Number):void{ + this._depth = value; + invalidateGeometry(); + } + override protected function buildGeometry():void{ + var hw:Number; + var hh:Number; + var hd:Number; + var v0:Vector3D = new Vector3D(); + var v1:Vector3D = new Vector3D(); + hw = (this._width * 0.5); + hh = (this._height * 0.5); + hd = (this._depth * 0.5); + v0.x = -(hw); + v0.y = hh; + v0.z = -(hd); + v1.x = -(hw); + v1.y = -(hh); + v1.z = -(hd); + updateOrAddSegment(0, v0, v1); + v0.z = hd; + v1.z = hd; + updateOrAddSegment(1, v0, v1); + v0.x = hw; + v1.x = hw; + updateOrAddSegment(2, v0, v1); + v0.z = -(hd); + v1.z = -(hd); + updateOrAddSegment(3, v0, v1); + v0.x = -(hw); + v0.y = -(hh); + v0.z = -(hd); + v1.x = hw; + v1.y = -(hh); + v1.z = -(hd); + updateOrAddSegment(4, v0, v1); + v0.y = hh; + v1.y = hh; + updateOrAddSegment(5, v0, v1); + v0.z = hd; + v1.z = hd; + updateOrAddSegment(6, v0, v1); + v0.y = -(hh); + v1.y = -(hh); + updateOrAddSegment(7, v0, v1); + v0.x = -(hw); + v0.y = -(hh); + v0.z = -(hd); + v1.x = -(hw); + v1.y = -(hh); + v1.z = hd; + updateOrAddSegment(8, v0, v1); + v0.y = hh; + v1.y = hh; + updateOrAddSegment(9, v0, v1); + v0.x = hw; + v1.x = hw; + updateOrAddSegment(10, v0, v1); + v0.y = -(hh); + v1.y = -(hh); + updateOrAddSegment(11, v0, v1); + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/WireframeCylinder.as b/flash_decompiled/watchdog/away3d/primitives/WireframeCylinder.as new file mode 100644 index 0000000..ff392f7 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/WireframeCylinder.as @@ -0,0 +1,93 @@ +package away3d.primitives { + import flash.geom.*; + import __AS3__.vec.*; + + public class WireframeCylinder extends WireframePrimitiveBase { + + private static const TWO_PI:Number = 6.28318530717959; + + private var _topRadius:Number; + private var _bottomRadius:Number; + private var _height:Number; + private var _segmentsW:uint; + private var _segmentsH:uint; + + public function WireframeCylinder(topRadius:Number=50, bottomRadius:Number=50, height:Number=100, segmentsW:uint=16, segmentsH:uint=1, color:uint=0xFFFFFF, thickness:Number=1){ + super(color, thickness); + this._topRadius = topRadius; + this._bottomRadius = bottomRadius; + this._height = height; + this._segmentsW = segmentsW; + this._segmentsH = segmentsH; + } + override protected function buildGeometry():void{ + var i:uint; + var j:uint; + var revolutionAngle:Number; + var x:Number; + var y:Number; + var z:Number; + var previousV:Vector3D; + var vertex:Vector3D; + var radius:Number = this._topRadius; + var revolutionAngleDelta:Number = (TWO_PI / this._segmentsW); + var nextVertexIndex:int; + var lastLayer:Vector.> = new Vector.>((this._segmentsH + 1), true); + j = 0; + while (j <= this._segmentsH) { + lastLayer[j] = new Vector.((this._segmentsW + 1), true); + radius = (this._topRadius - ((j / this._segmentsH) * (this._topRadius - this._bottomRadius))); + z = (-((this._height / 2)) + ((j / this._segmentsH) * this._height)); + previousV = null; + i = 0; + while (i <= this._segmentsW) { + revolutionAngle = (i * revolutionAngleDelta); + x = (radius * Math.cos(revolutionAngle)); + y = (radius * Math.sin(revolutionAngle)); + if (previousV){ + vertex = new Vector3D(x, -(z), y); + var _temp1 = nextVertexIndex; + nextVertexIndex = (nextVertexIndex + 1); + updateOrAddSegment(_temp1, vertex, previousV); + previousV = vertex; + } else { + previousV = new Vector3D(x, -(z), y); + }; + if (j > 0){ + var _temp2 = nextVertexIndex; + nextVertexIndex = (nextVertexIndex + 1); + updateOrAddSegment(_temp2, vertex, lastLayer[(j - 1)][i]); + }; + lastLayer[j][i] = previousV; + i++; + }; + j++; + }; + } + public function get topRadius():Number{ + return (this._topRadius); + } + public function set topRadius(value:Number):void{ + this._topRadius = value; + invalidateGeometry(); + } + public function get bottomRadius():Number{ + return (this._bottomRadius); + } + public function set bottomRadius(value:Number):void{ + this._bottomRadius = value; + invalidateGeometry(); + } + public function get height():Number{ + return (this._height); + } + public function set height(value:Number):void{ + if (this.height <= 0){ + throw (new Error("Height must be a value greater than zero.")); + }; + this._height = value; + invalidateGeometry(); + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/WireframePrimitiveBase.as b/flash_decompiled/watchdog/away3d/primitives/WireframePrimitiveBase.as new file mode 100644 index 0000000..2aa156a --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/WireframePrimitiveBase.as @@ -0,0 +1,98 @@ +package away3d.primitives { + import away3d.cameras.*; + import away3d.bounds.*; + import away3d.errors.*; + import away3d.primitives.data.*; + import flash.geom.*; + import away3d.entities.*; + + public class WireframePrimitiveBase extends SegmentSet { + + private var _geomDirty:Boolean = true; + private var _color:uint; + private var _thickness:Number; + + public function WireframePrimitiveBase(color:uint=0xFFFFFF, thickness:Number=1){ + super(); + if (thickness <= 0){ + thickness = 1; + }; + this._color = color; + this._thickness = thickness; + mouseEnabled = (mouseChildren = false); + } + public function get color():uint{ + return (this._color); + } + public function set color(value:uint):void{ + var numSegments:uint = _segments.length; + this._color = value; + var i:int; + while (i < numSegments) { + _segments[i].startColor = (_segments[i].endColor = value); + i++; + }; + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + var numSegments:uint = _segments.length; + this._thickness = value; + var i:int; + while (i < numSegments) { + _segments[i].thickness = (_segments[i].thickness = value); + i++; + }; + } + override public function removeAllSegments():void{ + super.removeAllSegments(); + } + override public function pushModelViewProjection(camera:Camera3D):void{ + if (this._geomDirty){ + this.updateGeometry(); + }; + super.pushModelViewProjection(camera); + } + override public function get bounds():BoundingVolumeBase{ + if (this._geomDirty){ + this.updateGeometry(); + }; + return (super.bounds); + } + protected function buildGeometry():void{ + throw (new AbstractMethodError()); + } + protected function invalidateGeometry():void{ + this._geomDirty = true; + invalidateBounds(); + } + private function updateGeometry():void{ + this.buildGeometry(); + this._geomDirty = false; + } + protected function updateOrAddSegment(index:uint, v0:Vector3D, v1:Vector3D):void{ + var segment:Segment; + var s:Vector3D; + var e:Vector3D; + if (_segments.length > index){ + segment = _segments[index]; + s = segment.start; + e = segment.end; + s.x = v0.x; + s.y = v0.y; + s.z = v0.z; + e.x = v1.x; + e.y = v1.y; + e.z = v1.z; + _segments[index].updateSegment(s, e, null, this._color, this._color, this._thickness); + } else { + addSegment(new LineSegment(v0.clone(), v1.clone(), this._color, this._color, this._thickness)); + }; + } + override protected function updateMouseChildren():void{ + _ancestorsAllowMouseEnabled = false; + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/WireframeSphere.as b/flash_decompiled/watchdog/away3d/primitives/WireframeSphere.as new file mode 100644 index 0000000..983aa16 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/WireframeSphere.as @@ -0,0 +1,121 @@ +package away3d.primitives { + import __AS3__.vec.*; + import flash.geom.*; + + public class WireframeSphere extends WireframePrimitiveBase { + + private var _segmentsW:uint; + private var _segmentsH:uint; + private var _radius:Number; + + public function WireframeSphere(radius:Number=50, segmentsW:uint=16, segmentsH:uint=12, color:uint=0xFFFFFF, thickness:Number=1){ + super(color, thickness); + this._radius = radius; + this._segmentsW = segmentsW; + this._segmentsH = segmentsH; + } + override protected function buildGeometry():void{ + var i:uint; + var j:uint; + var index:int; + var horangle:Number; + var z:Number; + var ringradius:Number; + var verangle:Number; + var x:Number; + var y:Number; + var a:int; + var b:int; + var c:int; + var d:int; + var vertices:Vector. = new Vector.(); + var v0:Vector3D = new Vector3D(); + var v1:Vector3D = new Vector3D(); + var numVerts:uint; + j = 0; + while (j <= this._segmentsH) { + horangle = ((Math.PI * j) / this._segmentsH); + z = (-(this._radius) * Math.cos(horangle)); + ringradius = (this._radius * Math.sin(horangle)); + i = 0; + while (i <= this._segmentsW) { + verangle = (((2 * Math.PI) * i) / this._segmentsW); + x = (ringradius * Math.cos(verangle)); + y = (ringradius * Math.sin(verangle)); + var _temp1 = numVerts; + numVerts = (numVerts + 1); + var _local18 = _temp1; + vertices[_local18] = x; + var _temp2 = numVerts; + numVerts = (numVerts + 1); + var _local19 = _temp2; + vertices[_local19] = -(z); + var _temp3 = numVerts; + numVerts = (numVerts + 1); + var _local20 = _temp3; + vertices[_local20] = y; + i++; + }; + j++; + }; + j = 1; + while (j <= this._segmentsH) { + i = 1; + while (i <= this._segmentsW) { + a = ((((this._segmentsW + 1) * j) + i) * 3); + b = (((((this._segmentsW + 1) * j) + i) - 1) * 3); + c = (((((this._segmentsW + 1) * (j - 1)) + i) - 1) * 3); + d = ((((this._segmentsW + 1) * (j - 1)) + i) * 3); + if (j == this._segmentsH){ + v0.x = vertices[c]; + v0.y = vertices[(c + 1)]; + v0.z = vertices[(c + 2)]; + v1.x = vertices[d]; + v1.y = vertices[(d + 1)]; + v1.z = vertices[(d + 2)]; + var _temp4 = index; + index = (index + 1); + updateOrAddSegment(_temp4, v0, v1); + v0.x = vertices[a]; + v0.y = vertices[(a + 1)]; + v0.z = vertices[(a + 2)]; + var _temp5 = index; + index = (index + 1); + updateOrAddSegment(_temp5, v0, v1); + } else { + if (j == 1){ + v1.x = vertices[b]; + v1.y = vertices[(b + 1)]; + v1.z = vertices[(b + 2)]; + v0.x = vertices[c]; + v0.y = vertices[(c + 1)]; + v0.z = vertices[(c + 2)]; + var _temp6 = index; + index = (index + 1); + updateOrAddSegment(_temp6, v0, v1); + } else { + v1.x = vertices[b]; + v1.y = vertices[(b + 1)]; + v1.z = vertices[(b + 2)]; + v0.x = vertices[c]; + v0.y = vertices[(c + 1)]; + v0.z = vertices[(c + 2)]; + var _temp7 = index; + index = (index + 1); + updateOrAddSegment(_temp7, v0, v1); + v1.x = vertices[d]; + v1.y = vertices[(d + 1)]; + v1.z = vertices[(d + 2)]; + var _temp8 = index; + index = (index + 1); + updateOrAddSegment(_temp8, v0, v1); + }; + }; + i++; + }; + j++; + }; + } + + } +}//package away3d.primitives diff --git a/flash_decompiled/watchdog/away3d/primitives/data/Segment.as b/flash_decompiled/watchdog/away3d/primitives/data/Segment.as new file mode 100644 index 0000000..bcdeee5 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/primitives/data/Segment.as @@ -0,0 +1,106 @@ +package away3d.primitives.data { + import flash.geom.*; + import biga.utils.*; + import away3d.entities.*; + + public class Segment { + + var _segmentsBase:SegmentSet; + var _thickness:Number; + private var _index:uint; + var _start:Vector3D; + var _end:Vector3D; + private var _startColor:uint; + private var _endColor:uint; + var _startR:Number; + var _startG:Number; + var _startB:Number; + var _endR:Number; + var _endG:Number; + var _endB:Number; + + public function Segment(start:Vector3D, end:Vector3D, anchor:Vector3D, colorStart:uint=0x333333, colorEnd:uint=0x333333, thickness:Number=1):void{ + super(); + anchor = null; + this._thickness = (thickness * 0.5); + this._start = start; + this._end = end; + this.startColor = colorStart; + this.endColor = colorEnd; + } + public function autoUpdate(thickness:Number=1):void{ + var c:int = GeomUtils.map(Vector3D.distance(this.start, this.end), 0, 250, 0, 0xFFFFFF); + this.updateSegment(this.start, this.end, null, this._startColor, this.endColor, thickness); + } + public function updateSegment(start:Vector3D, end:Vector3D, anchor:Vector3D, colorStart:uint=0x333333, colorEnd:uint=0x333333, thickness:Number=1):void{ + anchor = null; + this._start = start; + this._end = end; + if (this._startColor != colorStart){ + this.startColor = colorStart; + }; + if (this._endColor != colorEnd){ + this.endColor = colorEnd; + }; + this._thickness = thickness; + this.update(); + } + public function get start():Vector3D{ + return (this._start); + } + public function set start(value:Vector3D):void{ + this._start = value; + this.update(); + } + public function get end():Vector3D{ + return (this._end); + } + public function set end(value:Vector3D):void{ + this._end = value; + this.update(); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = (value * 0.5); + this.update(); + } + public function get startColor():uint{ + return (this._startColor); + } + public function set startColor(color:uint):void{ + this._startR = (((color >> 16) & 0xFF) / 0xFF); + this._startG = (((color >> 8) & 0xFF) / 0xFF); + this._startB = ((color & 0xFF) / 0xFF); + this._startColor = color; + this.update(); + } + public function get endColor():uint{ + return (this._endColor); + } + public function set endColor(color:uint):void{ + this._endR = (((color >> 16) & 0xFF) / 0xFF); + this._endG = (((color >> 8) & 0xFF) / 0xFF); + this._endB = ((color & 0xFF) / 0xFF); + this._endColor = color; + this.update(); + } + function get index():uint{ + return (this._index); + } + function set index(ind:uint):void{ + this._index = ind; + } + function set segmentsBase(segBase:SegmentSet):void{ + this._segmentsBase = segBase; + } + private function update():void{ + if (!(this._segmentsBase)){ + return; + }; + this._segmentsBase.updateSegment(this); + } + + } +}//package away3d.primitives.data diff --git a/flash_decompiled/watchdog/away3d/textures/BitmapTexture.as b/flash_decompiled/watchdog/away3d/textures/BitmapTexture.as new file mode 100644 index 0000000..7edd22b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/BitmapTexture.as @@ -0,0 +1,76 @@ +package away3d.textures { + import flash.display.*; + import away3d.tools.utils.*; + import away3d.materials.utils.*; + import flash.display3D.textures.*; + + public class BitmapTexture extends Texture2DBase { + + private static var _mipMaps:Array = []; + private static var _mipMapUses:Array = []; + + private var _bitmapData:BitmapData; + private var _mipMapHolder:BitmapData; + + public function BitmapTexture(bitmapData:BitmapData){ + super(); + this.bitmapData = bitmapData; + } + public function get bitmapData():BitmapData{ + return (this._bitmapData); + } + public function set bitmapData(value:BitmapData):void{ + if (value == this._bitmapData){ + return; + }; + if (!(TextureUtils.isBitmapDataValid(value))){ + throw (new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048")); + }; + invalidateContent(); + setSize(value.width, value.height); + this._bitmapData = value; + this.setMipMap(); + } + override protected function uploadContent(texture:TextureBase):void{ + MipmapGenerator.generateMipMaps(this._bitmapData, texture, this._mipMapHolder, true); + } + private function setMipMap():void{ + var oldW:uint; + var oldH:uint; + var newW:uint; + var newH:uint; + newW = this._bitmapData.width; + newH = this._bitmapData.height; + if (this._mipMapHolder){ + oldW = this._mipMapHolder.width; + oldH = this._mipMapHolder.height; + if ((((oldW == this._bitmapData.width)) && ((oldH == this._bitmapData.height)))){ + return; + }; + var _local5 = _mipMapUses[oldW]; + var _local6 = this._mipMapHolder.height; + var _local7 = (_local5[_local6] - 1); + _local5[_local6] = _local7; + if (_local7 == 0){ + _mipMaps[oldW][oldH].dispose(); + _mipMaps[oldW][oldH] = null; + }; + }; + if (!(_mipMaps[newW])){ + _mipMaps[newW] = []; + _mipMapUses[newW] = []; + }; + if (!(_mipMaps[newW][newH])){ + this._mipMapHolder = (_mipMaps[newW][newH] = new BitmapData(newW, newH, true)); + _mipMapUses[newW][newH] = 1; + } else { + _local5 = _mipMapUses[newW]; + _local6 = newH; + _local7 = (_local5[_local6] + 1); + _local5[_local6] = _local7; + this._mipMapHolder = _mipMaps[newW][newH]; + }; + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/textures/CubeTextureBase.as b/flash_decompiled/watchdog/away3d/textures/CubeTextureBase.as new file mode 100644 index 0000000..6a4fe40 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/CubeTextureBase.as @@ -0,0 +1,18 @@ +package away3d.textures { + import flash.display3D.*; + import flash.display3D.textures.*; + + public class CubeTextureBase extends TextureProxyBase { + + public function CubeTextureBase(){ + super(); + } + public function get size():int{ + return (_width); + } + override protected function createTexture(context:Context3D):TextureBase{ + return (context.createCubeTexture(width, Context3DTextureFormat.BGRA, false)); + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/textures/RenderCubeTexture.as b/flash_decompiled/watchdog/away3d/textures/RenderCubeTexture.as new file mode 100644 index 0000000..113b6a3 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/RenderCubeTexture.as @@ -0,0 +1,38 @@ +package away3d.textures { + import away3d.tools.utils.*; + import flash.display.*; + import away3d.materials.utils.*; + import flash.display3D.textures.*; + import flash.display3D.*; + + public class RenderCubeTexture extends CubeTextureBase { + + public function RenderCubeTexture(size:Number){ + super(); + setSize(size, size); + } + public function set size(value:int):void{ + if (value == _width){ + return; + }; + if (!(TextureUtils.isDimensionValid(value))){ + throw (new Error("Invalid size: Width and height must be power of 2 and cannot exceed 2048")); + }; + invalidateContent(); + setSize(value, value); + } + override protected function uploadContent(texture:TextureBase):void{ + var bmd:BitmapData = new BitmapData(_width, _height, false, 0); + var i:int; + while (i < 6) { + MipmapGenerator.generateMipMaps(bmd, texture, null, false, i); + i++; + }; + bmd.dispose(); + } + override protected function createTexture(context:Context3D):TextureBase{ + return (context.createCubeTexture(_width, Context3DTextureFormat.BGRA, true)); + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/textures/RenderTexture.as b/flash_decompiled/watchdog/away3d/textures/RenderTexture.as new file mode 100644 index 0000000..73ee2b0 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/RenderTexture.as @@ -0,0 +1,44 @@ +package away3d.textures { + import away3d.tools.utils.*; + import flash.display.*; + import away3d.materials.utils.*; + import flash.display3D.textures.*; + import flash.display3D.*; + + public class RenderTexture extends Texture2DBase { + + public function RenderTexture(width:Number, height:Number){ + super(); + setSize(width, height); + } + public function set width(value:int):void{ + if (value == _width){ + return; + }; + if (!(TextureUtils.isDimensionValid(value))){ + throw (new Error("Invalid size: Width and height must be power of 2 and cannot exceed 2048")); + }; + invalidateContent(); + setSize(value, _height); + } + public function set height(value:int):void{ + if (value == _height){ + return; + }; + if (!(TextureUtils.isDimensionValid(value))){ + throw (new Error("Invalid size: Width and height must be power of 2 and cannot exceed 2048")); + }; + invalidateContent(); + setSize(_width, value); + } + override protected function uploadContent(texture:TextureBase):void{ + var bmp:BitmapData = new BitmapData(width, height, false); + MipmapGenerator.generateMipMaps(bmp, texture); + bmp.dispose(); + } + override protected function createTexture(context:Context3D):TextureBase{ + return (context.createTexture(width, height, Context3DTextureFormat.BGRA, true)); + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/textures/Texture2DBase.as b/flash_decompiled/watchdog/away3d/textures/Texture2DBase.as new file mode 100644 index 0000000..625a998 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/Texture2DBase.as @@ -0,0 +1,15 @@ +package away3d.textures { + import flash.display3D.*; + import flash.display3D.textures.*; + + public class Texture2DBase extends TextureProxyBase { + + public function Texture2DBase(){ + super(); + } + override protected function createTexture(context:Context3D):TextureBase{ + return (context.createTexture(_width, _height, Context3DTextureFormat.BGRA, false)); + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/textures/TextureProxyBase.as b/flash_decompiled/watchdog/away3d/textures/TextureProxyBase.as new file mode 100644 index 0000000..ba7cf19 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/textures/TextureProxyBase.as @@ -0,0 +1,86 @@ +package away3d.textures { + import __AS3__.vec.*; + import flash.display3D.textures.*; + import flash.display3D.*; + import away3d.library.assets.*; + import away3d.core.managers.*; + import away3d.errors.*; + + public class TextureProxyBase extends NamedAssetBase implements IAsset { + + protected var _textures:Vector.; + protected var _dirty:Vector.; + protected var _width:int; + protected var _height:int; + + public function TextureProxyBase(){ + super(); + this._textures = new Vector.(8); + this._dirty = new Vector.(8); + } + public function get assetType():String{ + return (AssetType.TEXTURE); + } + public function get width():int{ + return (this._width); + } + public function get height():int{ + return (this._height); + } + public function getTextureForStage3D(stage3DProxy:Stage3DProxy):TextureBase{ + var contextIndex:int = stage3DProxy._stage3DIndex; + var tex:TextureBase = this._textures[contextIndex]; + var context:Context3D = stage3DProxy._context3D; + if (((!(tex)) || (!((this._dirty[contextIndex] == context))))){ + tex = this.createTexture(context); + this._textures[contextIndex] = tex; + this._dirty[contextIndex] = context; + this.uploadContent(tex); + }; + return (tex); + } + protected function uploadContent(texture:TextureBase):void{ + throw (new AbstractMethodError()); + } + protected function setSize(width:int, height:int):void{ + if (((!((this._width == width))) || (!((this._height == height))))){ + this.invalidateSize(); + }; + this._width = width; + this._height = height; + } + public function invalidateContent():void{ + var i:int; + while (i < 8) { + this._dirty[i] = null; + i++; + }; + } + protected function invalidateSize():void{ + var tex:TextureBase; + var i:int; + while (i < 8) { + tex = this._textures[i]; + if (tex){ + tex.dispose(); + this._textures[i] = null; + this._dirty[i] = null; + }; + i++; + }; + } + protected function createTexture(context:Context3D):TextureBase{ + throw (new AbstractMethodError()); + } + public function dispose():void{ + var i:int; + while (i < 8) { + if (this._textures[i]){ + this._textures[i].dispose(); + }; + i++; + }; + } + + } +}//package away3d.textures diff --git a/flash_decompiled/watchdog/away3d/tools/commands/Merge.as b/flash_decompiled/watchdog/away3d/tools/commands/Merge.as new file mode 100644 index 0000000..c632f93 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/tools/commands/Merge.as @@ -0,0 +1,412 @@ +package away3d.tools.commands { + import away3d.entities.*; + import away3d.core.base.*; + import away3d.containers.*; + import __AS3__.vec.*; + import flash.geom.*; + import away3d.materials.*; + + public class Merge { + + private const LIMIT:uint = 196605; + + private var _baseReceiver:Mesh; + private var _objectSpace:Boolean; + private var _keepMaterial:Boolean; + private var _disposeSources:Boolean; + private var _holder:Vector3D; + private var _v:Vector3D; + private var _vn:Vector3D; + private var _vectorsSource:Vector.; + + public function Merge(keepMaterial:Boolean=false, disposeSources:Boolean=false, objectSpace:Boolean=false):void{ + super(); + this._keepMaterial = keepMaterial; + this._disposeSources = disposeSources; + this._objectSpace = objectSpace; + } + public function set disposeSources(b:Boolean):void{ + this._disposeSources = b; + } + public function get disposeSources():Boolean{ + return (this._disposeSources); + } + public function set keepMaterial(b:Boolean):void{ + this._keepMaterial = b; + } + public function get keepMaterial():Boolean{ + return (this._keepMaterial); + } + public function set objectSpace(b:Boolean):void{ + this._objectSpace = b; + } + public function get objectSpace():Boolean{ + return (this._objectSpace); + } + public function applyToContainer(object:ObjectContainer3D, name:String=""):Mesh{ + this.initHolders(); + this._baseReceiver = new Mesh(new Geometry(), null); + this._baseReceiver.position = object.position; + this.parseContainer(object); + this.merge(this._baseReceiver); + if (name != ""){ + this._baseReceiver.name = name; + }; + if (this._disposeSources){ + if ((((object is Mesh)) && (Mesh(object).geometry))){ + Mesh(object).geometry.dispose(); + }; + object = null; + }; + return (this._baseReceiver); + } + public function applyToMeshes(receiver:Mesh, meshes:Vector.):Mesh{ + this.initHolders(); + var i:uint; + while (i < meshes.length) { + this.collect(meshes[i]); + i++; + }; + this.merge(receiver); + if (this._disposeSources){ + i = 0; + while (i < meshes.length) { + meshes[i].geometry.dispose(); + meshes[i] = null; + i++; + }; + }; + return (receiver); + } + public function apply(mesh1:Mesh, mesh2:Mesh):void{ + this.initHolders(); + this.collect(mesh2); + this.merge(mesh1); + } + private function initHolders():void{ + this._vectorsSource = new Vector.(); + this._baseReceiver = null; + if (((!(this._objectSpace)) && (!(this._v)))){ + this._holder = new Vector3D(); + this._v = new Vector3D(); + this._vn = new Vector3D(); + }; + } + private function merge(destMesh:Mesh):void{ + var j:uint; + var i:uint; + var vecLength:uint; + var subGeom:SubGeometry; + var ds:DataSubGeometry; + var vertices:Vector.; + var normals:Vector.; + var indices:Vector.; + var uvs:Vector.; + var nvertices:Vector.; + var nindices:Vector.; + var nuvs:Vector.; + var nnormals:Vector.; + var index:uint; + var indexY:uint; + var indexZ:uint; + var indexuv:uint; + var destDs:DataSubGeometry; + var rotate:Boolean; + var geometry:Geometry = destMesh.geometry; + var geometries:Vector. = geometry.subGeometries; + var numSubGeoms:uint = geometries.length; + var vectors:Vector. = new Vector.(); + if (numSubGeoms == 0){ + subGeom = new SubGeometry(); + subGeom.autoDeriveVertexNormals = true; + subGeom.autoDeriveVertexTangents = false; + vertices = new Vector.(); + normals = new Vector.(); + indices = new Vector.(); + uvs = new Vector.(); + subGeom.updateVertexData(vertices); + subGeom.updateIndexData(indices); + subGeom.updateUVData(uvs); + subGeom.updateVertexNormalData(normals); + geometry.addSubGeometry(subGeom); + numSubGeoms = 1; + }; + i = 0; + while (i < numSubGeoms) { + vertices = geometries[i].vertexData; + normals = geometries[i].vertexNormalData; + indices = geometries[i].indexData; + uvs = geometries[i].UVData; + vertices.fixed = false; + normals.fixed = false; + indices.fixed = false; + uvs.fixed = false; + ds = new DataSubGeometry(); + ds.vertices = vertices; + ds.indices = indices; + ds.uvs = uvs; + ds.normals = normals; + ds.material = ((destMesh.subMeshes[i].material) ? destMesh.subMeshes[i].material : destMesh.material); + ds.subGeometry = SubGeometry(geometries[i]); + vectors.push(ds); + i++; + }; + nvertices = ds.vertices; + nindices = ds.indices; + nuvs = ds.uvs; + nnormals = ds.normals; + var activeMaterial:MaterialBase = ds.material; + numSubGeoms = this._vectorsSource.length; + var scale:Boolean = ((((!((destMesh.scaleX == 1))) || (!((destMesh.scaleY == 1))))) || (!((destMesh.scaleZ == 1)))); + i = 0; + for (;i < numSubGeoms;i++) { + ds = this._vectorsSource[i]; + subGeom = ds.subGeometry; + vertices = ds.vertices; + normals = ds.normals; + indices = ds.indices; + uvs = ds.uvs; + if (((this._keepMaterial) && (ds.material))){ + destDs = this.getDestSubgeom(vectors, ds); + if (!(destDs)){ + destDs = this._vectorsSource[i]; + subGeom = new SubGeometry(); + destDs.subGeometry = subGeom; + if (!(this._objectSpace)){ + vecLength = destDs.vertices.length; + rotate = ((((!((destDs.mesh.rotationX == 0))) || (!((destDs.mesh.rotationY == 0))))) || (!((destDs.mesh.rotationZ == 0)))); + j = 0; + while (j < vecLength) { + indexY = (j + 1); + indexZ = (indexY + 1); + this._v.x = destDs.vertices[j]; + this._v.y = destDs.vertices[indexY]; + this._v.z = destDs.vertices[indexZ]; + if (rotate){ + this._vn.x = destDs.normals[j]; + this._vn.y = destDs.normals[indexY]; + this._vn.z = destDs.normals[indexZ]; + this._vn = this.applyRotations(this._vn, destDs.transform); + destDs.normals[j] = this._vn.x; + destDs.normals[indexY] = this._vn.y; + destDs.normals[indexZ] = this._vn.z; + }; + this._v = destDs.transform.transformVector(this._v); + if (scale){ + destDs.vertices[j] = (this._v.x / destMesh.scaleX); + destDs.vertices[indexY] = (this._v.y / destMesh.scaleY); + destDs.vertices[indexZ] = (this._v.z / destMesh.scaleZ); + } else { + destDs.vertices[j] = this._v.x; + destDs.vertices[indexY] = this._v.y; + destDs.vertices[indexZ] = this._v.z; + }; + j = (j + 3); + }; + }; + vectors.push(destDs); + continue; + }; + activeMaterial = destDs.material; + nvertices = destDs.vertices; + nnormals = destDs.normals; + nindices = destDs.indices; + nuvs = destDs.uvs; + }; + vecLength = indices.length; + rotate = ((((!((ds.mesh.rotationX == 0))) || (!((ds.mesh.rotationY == 0))))) || (!((ds.mesh.rotationZ == 0)))); + j = 0; + while (j < vecLength) { + if (((((nvertices.length + 9) > this.LIMIT)) && (((nindices.length % 3) == 0)))){ + destDs = new DataSubGeometry(); + nvertices = (destDs.vertices = new Vector.()); + nnormals = (destDs.normals = new Vector.()); + nindices = (destDs.indices = new Vector.()); + nuvs = (destDs.uvs = new Vector.()); + destDs.material = activeMaterial; + destDs.subGeometry = new SubGeometry(); + destDs.transform = ds.transform; + destDs.mesh = ds.mesh; + ds = destDs; + ds.addSub = true; + vectors.push(ds); + }; + index = (indices[j] * 3); + indexuv = (indices[j] * 2); + nindices.push((nvertices.length / 3)); + indexY = (index + 1); + indexZ = (indexY + 1); + if (this._objectSpace){ + nvertices.push(vertices[index], vertices[indexY], vertices[indexZ]); + } else { + this._v.x = vertices[index]; + this._v.y = vertices[indexY]; + this._v.z = vertices[indexZ]; + if (rotate){ + this._vn.x = normals[index]; + this._vn.y = normals[indexY]; + this._vn.z = normals[indexZ]; + this._vn = this.applyRotations(this._vn, ds.transform); + nnormals.push(this._vn.x, this._vn.y, this._vn.z); + }; + this._v = ds.transform.transformVector(this._v); + if (scale){ + nvertices.push((this._v.x / destMesh.scaleX), (this._v.y / destMesh.scaleY), (this._v.z / destMesh.scaleZ)); + } else { + nvertices.push(this._v.x, this._v.y, this._v.z); + }; + }; + if (((this._objectSpace) || (!(rotate)))){ + nnormals.push(normals[index], normals[indexY], normals[indexZ]); + }; + nuvs.push(uvs[indexuv], uvs[(indexuv + 1)]); + j++; + }; + }; + i = 0; + while (i < vectors.length) { + ds = vectors[i]; + if (ds.vertices.length == 0){ + } else { + subGeom = ds.subGeometry; + if (((((ds.normals) && ((ds.normals.length > 0)))) && ((ds.normals.length == ds.vertices.length)))){ + subGeom.autoDeriveVertexNormals = false; + subGeom.updateVertexNormalData(ds.normals); + } else { + subGeom.autoDeriveVertexNormals = true; + }; + subGeom.updateVertexData(ds.vertices); + subGeom.updateIndexData(ds.indices); + subGeom.updateUVData(ds.uvs); + if (((ds.addSub) || (!(this.isSubGeomAdded(geometry.subGeometries, subGeom))))){ + geometry.addSubGeometry(subGeom); + }; + if (destMesh.material != ds.material){ + destMesh.subMeshes[(destMesh.subMeshes.length - 1)].material = ds.material; + }; + if (((this._disposeSources) && (ds.mesh))){ + if (this._keepMaterial){ + ds.mesh.geometry.dispose(); + } else { + if (ds.material != destMesh.material){ + ds.mesh.dispose(); + if (ds.material){ + ds.material.dispose(); + }; + }; + }; + ds.mesh = null; + }; + ds = null; + }; + i++; + }; + i = 0; + while (i < this._vectorsSource.length) { + this._vectorsSource[i] = null; + i++; + }; + vectors = (this._vectorsSource = null); + if ((((geometry.subGeometries[0].vertexData.length == 0)) && ((geometry.subGeometries[0].indexData.length == 0)))){ + geometry.removeSubGeometry(geometry.subGeometries[0]); + }; + } + private function isSubGeomAdded(subGeometries:Vector., subGeom:SubGeometry):Boolean{ + var i:uint; + while (i < subGeometries.length) { + if (subGeometries[i] == subGeom){ + return (true); + }; + i++; + }; + return (false); + } + private function collect(m:Mesh):void{ + var ds:DataSubGeometry; + var geom:Geometry = m.geometry; + var geoms:Vector. = geom.subGeometries; + if (geoms.length == 0){ + return; + }; + var i:uint; + while (i < geoms.length) { + ds = new DataSubGeometry(); + ds.vertices = SubGeometry(geoms[i]).vertexData.concat(); + ds.indices = SubGeometry(geoms[i]).indexData.concat(); + ds.uvs = SubGeometry(geoms[i]).UVData.concat(); + ds.normals = SubGeometry(geoms[i]).vertexNormalData.concat(); + ds.vertices.fixed = false; + ds.normals.fixed = false; + ds.indices.fixed = false; + ds.uvs.fixed = false; + ds.material = ((m.subMeshes[i].material) ? m.subMeshes[i].material : m.material); + ds.subGeometry = SubGeometry(geoms[i]); + ds.transform = m.transform; + ds.mesh = m; + this._vectorsSource.push(ds); + i++; + }; + } + private function getDestSubgeom(v:Vector., ds:DataSubGeometry):DataSubGeometry{ + var targetDs:DataSubGeometry; + var len:uint = (v.length - 1); + var i:int = len; + while (i > -1) { + if (v[i].material == ds.material){ + targetDs = v[i]; + return (targetDs); + }; + i--; + }; + return (null); + } + private function parseContainer(object:ObjectContainer3D):void{ + var child:ObjectContainer3D; + var i:uint; + if ((((object is Mesh)) && ((object.numChildren == 0)))){ + this.collect(Mesh(object)); + }; + i = 0; + while (i < object.numChildren) { + child = object.getChildAt(i); + if (child != this._baseReceiver){ + this.parseContainer(child); + }; + i++; + }; + } + private function applyRotations(v:Vector3D, t:Matrix3D):Vector3D{ + this._holder.x = v.x; + this._holder.y = v.y; + this._holder.z = v.z; + this._holder = t.deltaTransformVector(this._holder); + v.x = this._holder.x; + v.y = this._holder.y; + v.z = this._holder.z; + return (v); + } + + } +}//package away3d.tools.commands + +import away3d.entities.*; +import away3d.core.base.*; +import __AS3__.vec.*; +import flash.geom.*; +import away3d.materials.*; + +class DataSubGeometry { + + public var uvs:Vector.; + public var vertices:Vector.; + public var normals:Vector.; + public var indices:Vector.; + public var subGeometry:SubGeometry; + public var material:MaterialBase; + public var transform:Matrix3D; + public var mesh:Mesh; + public var addSub:Boolean; + + public function DataSubGeometry(){ + } +} diff --git a/flash_decompiled/watchdog/away3d/tools/helpers/MeshHelper.as b/flash_decompiled/watchdog/away3d/tools/helpers/MeshHelper.as new file mode 100644 index 0000000..74b08a1 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/tools/helpers/MeshHelper.as @@ -0,0 +1,418 @@ +package away3d.tools.helpers { + import away3d.core.base.*; + import away3d.tools.utils.*; + import away3d.entities.*; + import away3d.containers.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.utils.*; + import away3d.materials.utils.*; + import away3d.materials.*; + import away3d.core.base.data.*; + + public class MeshHelper { + + private static const LIMIT:uint = 196605; + + public static function boundingRadius(mesh:Mesh):Number{ + var radius:* = NaN; + var mesh:* = mesh; + try { + radius = Math.max(((mesh.maxX - mesh.minX) * Object3D(mesh).scaleX), ((mesh.maxY - mesh.minY) * Object3D(mesh).scaleY), ((mesh.maxZ - mesh.minZ) * Object3D(mesh).scaleZ)); + } catch(e:Error) { + Bounds.getMeshBounds(mesh); + radius = Math.max(((Bounds.maxX - Bounds.minX) * Object3D(mesh).scaleX), ((Bounds.maxY - Bounds.minY) * Object3D(mesh).scaleY), ((Bounds.maxZ - Bounds.minZ) * Object3D(mesh).scaleZ)); + }; + return ((radius * 0.5)); + } + public static function boundingRadiusContainer(container:ObjectContainer3D):Number{ + Bounds.getObjectContainerBounds(container); + var radius:Number = Math.max(((Bounds.maxX - Bounds.minX) * Object3D(container).scaleX), ((Bounds.maxY - Bounds.minY) * Object3D(container).scaleY), ((Bounds.maxZ - Bounds.minZ) * Object3D(container).scaleZ)); + return ((radius * 0.5)); + } + public static function recenter(mesh:Mesh, keepPosition:Boolean=true):void{ + Bounds.getMeshBounds(mesh); + var dx:Number = ((Bounds.minX + Bounds.maxX) * 0.5); + var dy:Number = ((Bounds.minY + Bounds.maxY) * 0.5); + var dz:Number = ((Bounds.minZ + Bounds.maxZ) * 0.5); + applyPosition(mesh, -(dx), -(dy), -(dz)); + if (keepPosition){ + mesh.x = (mesh.x - dx); + mesh.y = (mesh.y - dy); + mesh.z = (mesh.z - dz); + }; + } + public static function recenterContainer(obj:ObjectContainer3D, keepPosition:Boolean=true):void{ + var child:ObjectContainer3D; + if ((((obj is Mesh)) && ((ObjectContainer3D(obj).numChildren == 0)))){ + recenter(Mesh(obj), keepPosition); + }; + var i:uint; + while (i < ObjectContainer3D(obj).numChildren) { + child = ObjectContainer3D(obj).getChildAt(i); + recenterContainer(child, keepPosition); + i++; + }; + } + public static function applyRotations(mesh:Mesh):void{ + var vertices:Vector.; + var normals:Vector.; + var verticesLength:uint; + var j:uint; + var yind:uint; + var zind:uint; + var subGeom:SubGeometry; + var updateNormals:Boolean; + var geometry:Geometry = mesh.geometry; + var geometries:Vector. = geometry.subGeometries; + var numSubGeoms:int = geometries.length; + var t:Matrix3D = mesh.transform; + var holder:Vector3D = new Vector3D(); + var i:uint; + while (i < numSubGeoms) { + subGeom = SubGeometry(geometries[i]); + vertices = subGeom.vertexData; + normals = subGeom.vertexNormalData; + verticesLength = vertices.length; + updateNormals = Boolean((normals.length == verticesLength)); + j = 0; + while (j < verticesLength) { + holder.x = vertices[j]; + yind = (j + 1); + holder.y = vertices[yind]; + zind = (j + 2); + holder.z = vertices[zind]; + holder = t.deltaTransformVector(holder); + vertices[j] = holder.x; + vertices[yind] = holder.y; + vertices[zind] = holder.z; + if (updateNormals){ + holder.x = normals[j]; + holder.y = normals[yind]; + holder.z = normals[zind]; + holder = t.deltaTransformVector(holder); + normals[j] = holder.x; + normals[yind] = holder.y; + normals[zind] = holder.z; + }; + j = (j + 3); + }; + subGeom.updateVertexData(vertices); + if (updateNormals){ + subGeom.updateVertexNormalData(normals); + }; + i++; + }; + mesh.rotationX = (mesh.rotationY = (mesh.rotationZ = 0)); + } + public static function applyRotationsContainer(obj:ObjectContainer3D):void{ + var child:ObjectContainer3D; + if ((((obj is Mesh)) && ((ObjectContainer3D(obj).numChildren == 0)))){ + applyRotations(Mesh(obj)); + }; + var i:uint; + while (i < ObjectContainer3D(obj).numChildren) { + child = ObjectContainer3D(obj).getChildAt(i); + applyRotationsContainer(child); + i++; + }; + } + public static function applyScales(mesh:Mesh, scaleX:Number, scaleY:Number, scaleZ:Number, parent:ObjectContainer3D=null):void{ + var vertices:Vector.; + var len:uint; + var j:uint; + var subGeom:SubGeometry; + if ((((((scaleX == 1)) && ((scaleY == 1)))) && ((scaleZ == 1)))){ + return; + }; + if (mesh.animator){ + mesh.scaleX = scaleX; + mesh.scaleY = scaleY; + mesh.scaleZ = scaleZ; + return; + }; + var geometries:Vector. = mesh.geometry.subGeometries; + var numSubGeoms:int = geometries.length; + var i:uint; + while (i < numSubGeoms) { + subGeom = SubGeometry(geometries[i]); + vertices = subGeom.vertexData; + len = vertices.length; + j = 0; + while (j < len) { + vertices[j] = (vertices[j] * scaleX); + vertices[(j + 1)] = (vertices[(j + 1)] * scaleY); + vertices[(j + 2)] = (vertices[(j + 2)] * scaleZ); + j = (j + 3); + }; + subGeom.updateVertexData(vertices); + i++; + }; + mesh.scaleX = (mesh.scaleY = (mesh.scaleZ = 1)); + if (parent){ + mesh.x = (mesh.x * scaleX); + mesh.y = (mesh.y * scaleY); + mesh.z = (mesh.z * scaleZ); + }; + } + public static function applyScalesContainer(obj:ObjectContainer3D, scaleX:Number, scaleY:Number, scaleZ:Number, parent:ObjectContainer3D=null):void{ + var child:ObjectContainer3D; + if ((((obj is Mesh)) && ((ObjectContainer3D(obj).numChildren == 0)))){ + applyScales(Mesh(obj), scaleX, scaleY, scaleZ, obj); + }; + var i:uint; + while (i < ObjectContainer3D(obj).numChildren) { + child = ObjectContainer3D(obj).getChildAt(i); + applyScalesContainer(child, scaleX, scaleY, scaleZ, obj); + i++; + }; + } + public static function applyPosition(mesh:Mesh, dx:Number, dy:Number, dz:Number):void{ + var vertices:Vector.; + var verticesLength:uint; + var j:uint; + var subGeom:SubGeometry; + var geometry:Geometry = mesh.geometry; + var geometries:Vector. = geometry.subGeometries; + var numSubGeoms:int = geometries.length; + var i:uint; + while (i < numSubGeoms) { + subGeom = SubGeometry(geometries[i]); + vertices = subGeom.vertexData; + verticesLength = vertices.length; + j = 0; + while (j < verticesLength) { + vertices[j] = (vertices[j] + dx); + vertices[(j + 1)] = (vertices[(j + 1)] + dy); + vertices[(j + 2)] = (vertices[(j + 2)] + dz); + j = (j + 3); + }; + subGeom.updateVertexData(vertices); + i++; + }; + mesh.x = (mesh.x - dx); + mesh.y = (mesh.y - dy); + mesh.z = (mesh.z - dz); + } + public static function clone(mesh:Mesh, newName:String=""):Mesh{ + var geometry:Geometry = mesh.geometry.clone(); + var newMesh:Mesh = new Mesh(geometry, mesh.material); + newMesh.name = newName; + return (newMesh); + } + public static function invertFacesInContainer(obj:ObjectContainer3D):void{ + var child:ObjectContainer3D; + if ((((obj is Mesh)) && ((ObjectContainer3D(obj).numChildren == 0)))){ + invertFaces(Mesh(obj)); + }; + var i:uint; + while (i < ObjectContainer3D(obj).numChildren) { + child = ObjectContainer3D(obj).getChildAt(i); + invertFacesInContainer(child); + i++; + }; + } + public static function invertFaces(mesh:Mesh, invertU:Boolean=false):void{ + var indices:Vector.; + var normals:Vector.; + var uvs:Vector.; + var tangents:Vector.; + var i:uint; + var j:uint; + var ind:uint; + var indV0:uint; + var subGeom:SubGeometry; + var subGeometries:Vector. = mesh.geometry.subGeometries; + var numSubGeoms:uint = subGeometries.length; + i = 0; + while (i < numSubGeoms) { + subGeom = SubGeometry(subGeometries[i]); + indices = subGeom.indexData; + normals = subGeom.vertexNormalData; + tangents = subGeom.vertexTangentData; + j = 0; + while (j < indices.length) { + indV0 = indices[j]; + ind = (j + 1); + indices[j] = indices[ind]; + indices[ind] = indV0; + j = (j + 3); + }; + j = 0; + while (j < normals.length) { + normals[j] = (normals[j] * -1); + tangents[j] = (tangents[j] * -1); + j++; + }; + subGeom.updateIndexData(indices); + subGeom.updateVertexNormalData(normals); + subGeom.updateVertexTangentData(tangents); + if (invertU){ + uvs = subGeom.UVData; + j = 0; + while (j < uvs.length) { + uvs[j] = (1 - uvs[j]); + j++; + j++; + }; + subGeom.updateUVData(uvs); + }; + i++; + }; + } + public static function build(vertices:Vector., indices:Vector., uvs:Vector.=null, name:String="", material:MaterialBase=null, shareVertices:Boolean=true, useDefaultMap:Boolean=true):Mesh{ + var uvind:uint; + var vind:uint; + var ind:uint; + var i:uint; + var j:uint; + var dShared:Dictionary; + var subGeom:SubGeometry = new SubGeometry(); + subGeom.autoDeriveVertexNormals = true; + subGeom.autoDeriveVertexTangents = true; + var geometry:Geometry = new Geometry(); + geometry.addSubGeometry(subGeom); + material = ((((!(material)) && (useDefaultMap))) ? DefaultMaterialManager.getDefaultMaterial() : material); + var m:Mesh = new Mesh(geometry, material); + if (name != ""){ + m.name = name; + }; + var nvertices:Vector. = new Vector.(); + var nuvs:Vector. = new Vector.(); + var nindices:Vector. = new Vector.(); + var defaultUVS:Vector. = Vector.([0, 1, 0.5, 0, 1, 1, 0.5, 0]); + var uvid:uint; + if (shareVertices){ + dShared = new Dictionary(); + }; + var vertex:Vertex = new Vertex(); + i = 0; + for (;i < indices.length;i++) { + ind = (indices[i] * 3); + vertex.x = vertices[ind]; + vertex.y = vertices[(ind + 1)]; + vertex.z = vertices[(ind + 2)]; + if (nvertices.length == LIMIT){ + subGeom.updateVertexData(nvertices); + subGeom.updateIndexData(nindices); + subGeom.updateUVData(nuvs); + if (shareVertices){ + dShared = null; + dShared = new Dictionary(); + }; + subGeom = new SubGeometry(); + subGeom.autoDeriveVertexNormals = true; + subGeom.autoDeriveVertexTangents = true; + geometry.addSubGeometry(subGeom); + uvid = 0; + uvind = uvid; + nvertices = new Vector.(); + nindices = new Vector.(); + nuvs = new Vector.(); + }; + vind = (nvertices.length / 3); + uvind = (vind * 2); + if (shareVertices){ + if (dShared[vertex.toString()]){ + nindices[nindices.length] = dShared[vertex.toString()]; + continue; + }; + dShared[vertex.toString()] = vind; + }; + nindices[nindices.length] = vind; + nvertices.push(vertex.x, vertex.y, vertex.z); + if (((!(uvs)) || ((uvind > (uvs.length - 2))))){ + nuvs.push(defaultUVS[uvid], defaultUVS[(uvid + 1)]); + uvid = (((uvid + 2))>3) ? 0 : uvid = (uvid + 2); +uvid; + } else { + nuvs.push(uvs[uvind], uvs[(uvind + 1)]); + }; + }; + if (shareVertices){ + dShared = null; + }; + subGeom.updateVertexData(nvertices); + subGeom.updateIndexData(nindices); + subGeom.updateUVData(nuvs); + return (m); + } + public static function splitMesh(mesh:Mesh, disposeSource:Boolean=false):Vector.{ + var vertices:* = null; + var indices:* = null; + var uvs:* = null; + var normals:* = null; + var tangents:* = null; + var subGeom:* = null; + var nGeom:* = null; + var nSubGeom:* = null; + var nm:* = null; + var nMeshMat:* = null; + var j:* = 0; + var mesh:* = mesh; + var disposeSource:Boolean = disposeSource; + var meshes:* = new Vector.(); + var geometries:* = mesh.geometry.subGeometries; + var numSubGeoms:* = geometries.length; + if (numSubGeoms == 1){ + meshes.push(mesh); + return (meshes); + }; + j = 0; + var i:* = 0; + while (i < numSubGeoms) { + subGeom = geometries[i]; + vertices = subGeom.vertexData; + indices = subGeom.indexData; + uvs = subGeom.UVData; + try { + normals = subGeom.vertexNormalData; + subGeom.autoDeriveVertexNormals = false; + } catch(e:Error) { + subGeom.autoDeriveVertexNormals = true; + normals = new Vector.(); + j = 0; + while (j < vertices.length) { + j = (j + 1); + var _local5:Number = j; + normals[_local5] = 0; + }; + }; + try { + tangents = subGeom.vertexTangentData; + subGeom.autoDeriveVertexTangents = false; + } catch(e:Error) { + subGeom.autoDeriveVertexTangents = true; + tangents = new Vector.(); + j = 0; + while (j < vertices.length) { + j = (j + 1); + _local5 = j; + tangents[_local5] = 0; + }; + }; + vertices.fixed = false; + indices.fixed = false; + uvs.fixed = false; + normals.fixed = false; + tangents.fixed = false; + nGeom = new Geometry(); + nm = new Mesh(nGeom, ((mesh.subMeshes[i].material) ? mesh.subMeshes[i].material : nMeshMat)); + nSubGeom = new SubGeometry(); + nSubGeom.updateVertexData(vertices); + nSubGeom.updateIndexData(indices); + nSubGeom.updateUVData(uvs); + nSubGeom.updateVertexNormalData(normals); + nSubGeom.updateVertexTangentData(tangents); + nGeom.addSubGeometry(nSubGeom); + meshes.push(nm); + i = (i + 1); + }; + if (disposeSource){ + mesh = null; + }; + return (meshes); + } + + } +}//package away3d.tools.helpers diff --git a/flash_decompiled/watchdog/away3d/tools/utils/Bounds.as b/flash_decompiled/watchdog/away3d/tools/utils/Bounds.as new file mode 100644 index 0000000..e52d30b --- /dev/null +++ b/flash_decompiled/watchdog/away3d/tools/utils/Bounds.as @@ -0,0 +1,194 @@ +package away3d.tools.utils { + import flash.geom.*; + import away3d.entities.*; + import away3d.containers.*; + import __AS3__.vec.*; + + public class Bounds { + + private static var _minX:Number; + private static var _minY:Number; + private static var _minZ:Number; + private static var _maxX:Number; + private static var _maxY:Number; + private static var _maxZ:Number; + private static var _defaultPosition:Vector3D = new Vector3D(0, 0, 0); + + public static function getMeshBounds(mesh:Mesh):void{ + reset(); + parseMeshBounds(mesh); + } + public static function getObjectContainerBounds(container:ObjectContainer3D):void{ + reset(); + parseObjectContainerBounds(container); + } + public static function getVerticesVectorBounds(vertices:Vector.):void{ + var x:Number; + var y:Number; + var z:Number; + reset(); + var l:uint = vertices.length; + if ((l % 3) != 0){ + return; + }; + var i:uint; + while (i < l) { + x = vertices[i]; + y = vertices[(i + 1)]; + z = vertices[(i + 2)]; + if (x < _minX){ + _minX = x; + }; + if (x > _maxX){ + _maxX = x; + }; + if (y < _minY){ + _minY = y; + }; + if (y > _maxY){ + _maxY = y; + }; + if (z < _minZ){ + _minZ = z; + }; + if (z > _maxZ){ + _maxZ = z; + }; + i = (i + 3); + }; + } + public static function get minX():Number{ + return (_minX); + } + public static function get minY():Number{ + return (_minY); + } + public static function get minZ():Number{ + return (_minZ); + } + public static function get maxX():Number{ + return (_maxX); + } + public static function get maxY():Number{ + return (_maxY); + } + public static function get maxZ():Number{ + return (_maxZ); + } + public static function get width():Number{ + return ((_maxX - _minX)); + } + public static function get height():Number{ + return ((_maxY - _minY)); + } + public static function get depth():Number{ + return ((_maxZ - _minZ)); + } + private static function reset():void{ + _minX = (_minY = (_minZ = Infinity)); + _maxX = (_maxY = (_maxZ = -(Infinity))); + _defaultPosition.x = 0; + _defaultPosition.y = 0; + _defaultPosition.z = 0; + } + private static function parseObjectContainerBounds(obj:ObjectContainer3D):void{ + var child:ObjectContainer3D; + if ((((obj is Mesh)) && ((obj.numChildren == 0)))){ + parseMeshBounds(Mesh(obj), obj.position); + }; + var i:uint; + while (i < obj.numChildren) { + child = obj.getChildAt(i); + parseObjectContainerBounds(ObjectContainer3D(child)); + i++; + }; + } + private static function parseMeshBounds(m:Mesh, position:Vector3D=null):void{ + var offsetPosition:* = null; + var x:* = NaN; + var y:* = NaN; + var z:* = NaN; + var geometries:* = null; + var numSubGeoms:* = 0; + var subGeom:* = null; + var vertices:* = null; + var j:* = 0; + var vecLength:* = 0; + var i:* = 0; + var m:* = m; + var position = position; + offsetPosition = ((position) || (_defaultPosition)); + try { + x = offsetPosition.x; + y = offsetPosition.y; + z = offsetPosition.z; + if ((x + m.minX) < _minX){ + _minX = (x + m.minX); + }; + if ((x + m.maxX) > _maxX){ + _maxX = (x + m.maxX); + }; + if ((y + m.minY) < _minY){ + _minY = (y + m.minY); + }; + if ((y + m.maxY) > _maxY){ + _maxY = (y + m.maxY); + }; + if ((z + m.minZ) < _minZ){ + _minZ = (z + m.minZ); + }; + if ((z + m.maxZ) > _maxZ){ + _maxZ = (z + m.maxZ); + }; + if (m.scaleX != 1){ + _minX = (_minX * m.scaleX); + _maxX = (_maxX * m.scaleX); + }; + if (m.scaleY != 1){ + _minY = (_minY * m.scaleY); + _maxY = (_maxY * m.scaleY); + }; + if (m.scaleZ != 1){ + _minZ = (_minZ * m.scaleZ); + _maxZ = (_maxZ * m.scaleZ); + }; + } catch(e:Error) { + geometries = m.geometry.subGeometries; + numSubGeoms = geometries.length; + i = 0; + while (i < numSubGeoms) { + subGeom = geometries[i]; + vertices = subGeom.vertexData; + vecLength = vertices.length; + j = 0; + while (j < vecLength) { + x = ((vertices[j] * m.scaleX) + offsetPosition.x); + y = ((vertices[(j + 1)] * m.scaleY) + offsetPosition.y); + z = ((vertices[(j + 2)] * m.scaleZ) + offsetPosition.z); + if (x < _minX){ + _minX = x; + }; + if (x > _maxX){ + _maxX = x; + }; + if (y < _minY){ + _minY = y; + }; + if (y > _maxY){ + _maxY = y; + }; + if (z < _minZ){ + _minZ = z; + }; + if (z > _maxZ){ + _maxZ = z; + }; + j = (j + 3); + }; + i = (i + 1); + }; + }; + } + + } +}//package away3d.tools.utils diff --git a/flash_decompiled/watchdog/away3d/tools/utils/TextureUtils.as b/flash_decompiled/watchdog/away3d/tools/utils/TextureUtils.as new file mode 100644 index 0000000..30070d0 --- /dev/null +++ b/flash_decompiled/watchdog/away3d/tools/utils/TextureUtils.as @@ -0,0 +1,32 @@ +package away3d.tools.utils { + import flash.display.*; + + public class TextureUtils { + + private static const MAX_SIZE:uint = 0x0800; + + public static function isBitmapDataValid(bitmapData:BitmapData):Boolean{ + if (bitmapData == null){ + return (true); + }; + return (((isDimensionValid(bitmapData.width)) && (isDimensionValid(bitmapData.height)))); + } + public static function isDimensionValid(d:uint):Boolean{ + return ((((((d >= 1)) && ((d <= MAX_SIZE)))) && (isPowerOfTwo(d)))); + } + public static function isPowerOfTwo(value:int):Boolean{ + return (((value) ? ((value & -(value)) == value) : false)); + } + public static function getBestPowerOf2(value:uint):Number{ + var p:uint = 1; + while (p < value) { + p = (p << 1); + }; + if (p > MAX_SIZE){ + p = MAX_SIZE; + }; + return (p); + } + + } +}//package away3d.tools.utils diff --git a/flash_decompiled/watchdog/aze/motion/EazeTween.as b/flash_decompiled/watchdog/aze/motion/EazeTween.as new file mode 100644 index 0000000..b60b987 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/EazeTween.as @@ -0,0 +1,604 @@ +package aze.motion { + import aze.motion.easing.*; + import flash.utils.*; + import flash.events.*; + import flash.display.*; + import aze.motion.specials.*; + import flash.filters.*; + import flash.geom.*; + + public final class EazeTween { + + public static const specialProperties:Dictionary = new Dictionary(); + private static const running:Dictionary = new Dictionary(); + private static const ticker:Shape = createTicker(); + + public static var defaultEasing:Function = Quadratic.easeOut; + public static var defaultDuration:Object = { + slow:1, + normal:0.4, + fast:0.2 + }; + private static var pauseTime:Number; + private static var head:EazeTween; + private static var tweenCount:int = 0; + + private var prev:EazeTween; + private var next:EazeTween; + private var rnext:EazeTween; + private var isDead:Boolean; + private var target:Object; + private var reversed:Boolean; + private var overwrite:Boolean; + private var autoStart:Boolean; + private var _configured:Boolean; + private var _started:Boolean; + private var _inited:Boolean; + private var duration; + private var _duration:Number; + private var _ease:Function; + private var startTime:Number; + private var endTime:Number; + private var properties:EazeProperty; + private var specials:EazeSpecial; + private var autoVisible:Boolean; + private var slowTween:Boolean; + private var _chain:Array; + private var _onStart:Function; + private var _onStartArgs:Array; + private var _onUpdate:Function; + private var _onUpdateArgs:Array; + private var _onComplete:Function; + private var _onCompleteArgs:Array; + + public function EazeTween(target:Object, autoStart:Boolean=true){ + super(); + if (!(target)){ + throw (new ArgumentError("EazeTween: target can not be null")); + }; + this.target = target; + this.autoStart = autoStart; + this._ease = defaultEasing; + } + public static function killAllTweens():void{ + var target:Object; + for (target in running) { + killTweensOf(target); + }; + } + public static function killTweensOf(target:Object):void{ + var rprev:EazeTween; + if (!(target)){ + return; + }; + var tween:EazeTween = running[target]; + while (tween) { + tween.isDead = true; + tween.dispose(); + if (tween.rnext){ + rprev = tween; + tween = tween.rnext; + rprev.rnext = null; + } else { + tween = null; + }; + }; + delete running[target]; + } + public static function pauseAllTweens():void{ + if (ticker.hasEventListener(Event.ENTER_FRAME)){ + pauseTime = getTimer(); + ticker.removeEventListener(Event.ENTER_FRAME, tick); + }; + } + public static function resumeAllTweens():void{ + var delta:Number; + var tween:EazeTween; + if (!(ticker.hasEventListener(Event.ENTER_FRAME))){ + delta = (getTimer() - pauseTime); + tween = head; + while (tween) { + tween.startTime = (tween.startTime + delta); + tween.endTime = (tween.endTime + delta); + tween = tween.next; + }; + ticker.addEventListener(Event.ENTER_FRAME, tick); + }; + } + private static function createTicker():Shape{ + var sp:Shape = new Shape(); + sp.addEventListener(Event.ENTER_FRAME, tick); + return (sp); + } + private static function tick(e:Event):void{ + if (head){ + updateTweens(getTimer()); + }; + } + private static function updateTweens(time:int):void{ + var isComplete:Boolean; + var k:Number; + var ke:Number; + var target:Object; + var p:EazeProperty; + var s:EazeSpecial; + var dead:EazeTween; + var prev:EazeTween; + var cd:CompleteData; + var i:int; + var complete:Array = []; + var ct:int; + var t:EazeTween = head; + var cpt:int; + while (t) { + cpt++; + if (t.isDead){ + isComplete = true; + } else { + isComplete = (time >= t.endTime); + k = ((isComplete) ? 1 : ((time - t.startTime) / t._duration)); + ke = t._ease(((k) || (0))); + target = t.target; + p = t.properties; + while (p) { + target[p.name] = (p.start + (p.delta * ke)); + p = p.next; + }; + if (t.slowTween){ + if (t.autoVisible){ + target.visible = (target.alpha > 0.001); + }; + if (t.specials){ + s = t.specials; + while (s) { + s.update(ke, isComplete); + s = s.next; + }; + }; + if (t._onStart != null){ + t._onStart.apply(null, t._onStartArgs); + t._onStart = null; + t._onStartArgs = null; + }; + if (t._onUpdate != null){ + t._onUpdate.apply(null, t._onUpdateArgs); + }; + }; + }; + if (isComplete){ + if (t._started){ + cd = new CompleteData(t._onComplete, t._onCompleteArgs, t._chain, (t.endTime - time)); + t._chain = null; + complete.unshift(cd); + ct++; + }; + t.isDead = true; + t.detach(); + t.dispose(); + dead = t; + prev = t.prev; + t = dead.next; + if (prev){ + prev.next = t; + if (t){ + t.prev = prev; + }; + } else { + head = t; + if (t){ + t.prev = null; + }; + }; + dead.prev = (dead.next = null); + } else { + t = t.next; + }; + }; + if (ct){ + i = 0; + while (i < ct) { + complete[i].execute(); + i++; + }; + }; + tweenCount = cpt; + } + + private function configure(duration, newState:Object=null, reversed:Boolean=false):void{ + var name:String; + var value:*; + this._configured = true; + this.reversed = reversed; + this.duration = duration; + if (newState){ + for (name in newState) { + value = newState[name]; + if ((name in specialProperties)){ + if (name == "alpha"){ + this.autoVisible = true; + this.slowTween = true; + } else { + if (name == "alphaVisible"){ + name = "alpha"; + this.autoVisible = false; + } else { + if (!((name in this.target))){ + if (name == "scale"){ + this.configure(duration, { + scaleX:value, + scaleY:value + }, reversed); + //unresolved jump + }; + this.specials = new specialProperties[name](this.target, name, value, this.specials); + this.slowTween = true; + //unresolved jump + }; + }; + }; + }; + if ((((value is Array)) && ((this.target[name] is Number)))){ + if (("__bezier" in specialProperties)){ + this.specials = new specialProperties["__bezier"](this.target, name, value, this.specials); + this.slowTween = true; + }; + } else { + this.properties = new EazeProperty(name, value, this.properties); + }; + }; + }; + } + public function start(killTargetTweens:Boolean=true, timeOffset:Number=0):void{ + if (this._started){ + return; + }; + if (!(this._inited)){ + this.init(); + }; + this.overwrite = killTargetTweens; + this.startTime = (getTimer() + timeOffset); + this._duration = (((isNaN(this.duration)) ? this.smartDuration(String(this.duration)) : Number(this.duration)) * 1000); + this.endTime = (this.startTime + this._duration); + if (((this.reversed) || ((this._duration == 0)))){ + this.update(this.startTime); + }; + if (((this.autoVisible) && ((this._duration > 0)))){ + this.target.visible = true; + }; + this._started = true; + this.attach(this.overwrite); + } + private function init():void{ + if (this._inited){ + return; + }; + var p:EazeProperty = this.properties; + while (p) { + p.init(this.target, this.reversed); + p = p.next; + }; + var s:EazeSpecial = this.specials; + while (s) { + s.init(this.reversed); + s = s.next; + }; + this._inited = true; + } + private function smartDuration(duration:String):Number{ + var s:EazeSpecial; + if ((duration in defaultDuration)){ + return (defaultDuration[duration]); + }; + if (duration == "auto"){ + s = this.specials; + while (s) { + if (("getPreferredDuration" in s)){ + return (s["getPreferredDuration"]()); + }; + s = s.next; + }; + }; + return (defaultDuration.normal); + } + public function easing(f:Function):EazeTween{ + this._ease = ((f) || (defaultEasing)); + return (this); + } + public function filter(classRef, parameters:Object, removeWhenDone:Boolean=false):EazeTween{ + if (!(parameters)){ + parameters = {}; + }; + if (removeWhenDone){ + parameters.remove = true; + }; + this.addSpecial(classRef, classRef, parameters); + return (this); + } + public function tint(tint=null, colorize:Number=1, multiply:Number=NaN):EazeTween{ + if (isNaN(multiply)){ + multiply = (1 - colorize); + }; + this.addSpecial("tint", "tint", [tint, colorize, multiply]); + return (this); + } + public function colorMatrix(brightness:Number=0, contrast:Number=0, saturation:Number=0, hue:Number=0, tint:uint=0xFFFFFF, colorize:Number=0):EazeTween{ + var remove:Boolean = ((((((((!(brightness)) && (!(contrast)))) && (!(saturation)))) && (!(hue)))) && (!(colorize))); + return (this.filter(ColorMatrixFilter, { + brightness:brightness, + contrast:contrast, + saturation:saturation, + hue:hue, + tint:tint, + colorize:colorize + }, remove)); + } + public function short(value:Number, name:String="rotation", useRadian:Boolean=false):EazeTween{ + this.addSpecial("__short", name, [value, useRadian]); + return (this); + } + public function rect(value:Rectangle, name:String="scrollRect"):EazeTween{ + this.addSpecial("__rect", name, value); + return (this); + } + private function addSpecial(special, name, value:Object):void{ + if ((((special in specialProperties)) && (this.target))){ + if (((((!(this._inited)) || ((this._duration == 0)))) && (this.autoStart))){ + EazeSpecial(new specialProperties[special](this.target, name, value, null)).init(true); + } else { + this.specials = new specialProperties[special](this.target, name, value, this.specials); + if (this._started){ + this.specials.init(this.reversed); + }; + this.slowTween = true; + }; + }; + } + public function onStart(handler:Function, ... _args):EazeTween{ + this._onStart = handler; + this._onStartArgs = _args; + this.slowTween = ((((((!(this.autoVisible)) || (!((this.specials == null))))) || (!((this._onUpdate == null))))) || (!((this._onStart == null)))); + return (this); + } + public function onUpdate(handler:Function, ... _args):EazeTween{ + this._onUpdate = handler; + this._onUpdateArgs = _args; + this.slowTween = ((((((!(this.autoVisible)) || (!((this.specials == null))))) || (!((this._onUpdate == null))))) || (!((this._onStart == null)))); + return (this); + } + public function onComplete(handler:Function, ... _args):EazeTween{ + this._onComplete = handler; + this._onCompleteArgs = _args; + return (this); + } + public function kill(setEndValues:Boolean=false):void{ + if (this.isDead){ + return; + }; + if (setEndValues){ + this._onUpdate = (this._onComplete = null); + this.update(this.endTime); + } else { + this.detach(); + this.dispose(); + }; + this.isDead = true; + } + public function killTweens():EazeTween{ + EazeTween.killTweensOf(this.target); + return (this); + } + public function updateNow():EazeTween{ + var t:Number; + if (this._started){ + t = Math.max(this.startTime, getTimer()); + this.update(t); + } else { + this.init(); + this.endTime = (this._duration = 1); + this.update(0); + }; + return (this); + } + private function update(time:Number):void{ + var h:EazeTween = head; + head = this; + updateTweens(time); + head = h; + } + private function attach(overwrite:Boolean):void{ + var parallel:EazeTween; + if (overwrite){ + killTweensOf(this.target); + } else { + parallel = running[this.target]; + }; + if (parallel){ + this.prev = parallel; + this.next = parallel.next; + if (this.next){ + this.next.prev = this; + }; + parallel.next = this; + this.rnext = parallel; + } else { + if (head){ + head.prev = this; + }; + this.next = head; + head = this; + }; + running[this.target] = this; + } + private function detach():void{ + var targetTweens:EazeTween; + var prev:EazeTween; + if (((this.target) && (this._started))){ + targetTweens = running[this.target]; + if (targetTweens == this){ + if (this.rnext){ + running[this.target] = this.rnext; + } else { + delete running[this.target]; + }; + } else { + if (targetTweens){ + prev = targetTweens; + targetTweens = targetTweens.rnext; + while (targetTweens) { + if (targetTweens == this){ + prev.rnext = this.rnext; + break; + }; + prev = targetTweens; + targetTweens = targetTweens.rnext; + }; + }; + }; + this.rnext = null; + }; + } + private function dispose():void{ + var tween:EazeTween; + if (this._started){ + this.target = null; + this._onComplete = null; + this._onCompleteArgs = null; + if (this._chain){ + for each (tween in this._chain) { + tween.dispose(); + }; + this._chain = null; + }; + }; + if (this.properties){ + this.properties.dispose(); + this.properties = null; + }; + this._ease = null; + this._onStart = null; + this._onStartArgs = null; + if (this.slowTween){ + if (this.specials){ + this.specials.dispose(); + this.specials = null; + }; + this.autoVisible = false; + this._onUpdate = null; + this._onUpdateArgs = null; + }; + } + public function delay(duration, overwrite:Boolean=true):EazeTween{ + return (this.add(duration, null, overwrite)); + } + public function apply(newState:Object=null, overwrite:Boolean=true):EazeTween{ + return (this.add(0, newState, overwrite)); + } + public function play(frame=0, overwrite:Boolean=true):EazeTween{ + return (this.add("auto", {frame:frame}, overwrite).easing(Linear.easeNone)); + } + public function to(duration, newState:Object=null, overwrite:Boolean=true):EazeTween{ + return (this.add(duration, newState, overwrite)); + } + public function from(duration, fromState:Object=null, overwrite:Boolean=true):EazeTween{ + return (this.add(duration, fromState, overwrite, true)); + } + private function add(duration, state:Object, overwrite:Boolean, reversed:Boolean=false):EazeTween{ + if (this.isDead){ + return (new EazeTween(this.target).add(duration, state, overwrite, reversed)); + }; + if (this._configured){ + return (this.chain().add(duration, state, overwrite, reversed)); + }; + this.configure(duration, state, reversed); + if (this.autoStart){ + this.start(overwrite); + }; + return (this); + } + public function chain(target:Object=null):EazeTween{ + var tween:EazeTween = new EazeTween(((target) || (this.target)), false); + if (!(this._chain)){ + this._chain = []; + }; + this._chain.push(tween); + return (tween); + } + public function get isStarted():Boolean{ + return (this._started); + } + public function get isFinished():Boolean{ + return (this.isDead); + } + + specialProperties.alpha = true; + specialProperties.alphaVisible = true; + specialProperties.scale = true; + } +}//package aze.motion + +final class EazeProperty { + + public var name:String; + public var start:Number; + public var end:Number; + public var delta:Number; + public var next:EazeProperty; + + public function EazeProperty(name:String, end:Number, next:EazeProperty){ + super(); + this.name = name; + this.end = end; + this.next = next; + } + public function init(target:Object, reversed:Boolean):void{ + if (reversed){ + this.start = this.end; + this.end = target[this.name]; + target[this.name] = this.start; + } else { + this.start = target[this.name]; + }; + this.delta = (this.end - this.start); + } + public function dispose():void{ + if (this.next){ + this.next.dispose(); + }; + this.next = null; + } + +} +final class CompleteData { + + private var callback:Function; + private var args:Array; + private var chain:Array; + private var diff:Number; + + public function CompleteData(callback:Function, args:Array, chain:Array, diff:Number){ + super(); + this.callback = callback; + this.args = args; + this.chain = chain; + this.diff = diff; + } + public function execute():void{ + var len:int; + var i:int; + if (this.callback != null){ + this.callback.apply(null, this.args); + this.callback = null; + }; + this.args = null; + if (this.chain){ + len = this.chain.length; + i = 0; + while (i < len) { + EazeTween(this.chain[i]).start(false, this.diff); + i++; + }; + this.chain = null; + }; + } + +} diff --git a/flash_decompiled/watchdog/aze/motion/easing/Back.as b/flash_decompiled/watchdog/aze/motion/easing/Back.as new file mode 100644 index 0000000..19f1781 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/easing/Back.as @@ -0,0 +1,36 @@ +package aze.motion.easing { + + public final class Back { + + public static var easeIn:Function = easeInWith(); + public static var easeOut:Function = easeOutWith(); + public static var easeInOut:Function = easeInOutWith(); + + public static function easeInWith(s:Number=1.70158):Function{ + var s:Number = s; + return (function (k:Number):Number{ + return (((k * k) * (((s + 1) * k) - s))); + }); + } + public static function easeOutWith(s:Number=1.70158):Function{ + var s:Number = s; + return (function (k:Number):Number{ + k = (k - 1); + return ((((k * k) * (((s + 1) * k) + s)) + 1)); + }); + } + public static function easeInOutWith(s:Number=1.70158):Function{ + var s:Number = s; + s = (s * 1.525); + return (function (k:Number):Number{ + k = (k * 2); + if (k < 1){ + return ((0.5 * ((k * k) * (((s + 1) * k) - s)))); + }; + k = (k - 2); + return ((0.5 * (((k * k) * (((s + 1) * k) + s)) + 2))); + }); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/watchdog/aze/motion/easing/Cubic.as b/flash_decompiled/watchdog/aze/motion/easing/Cubic.as new file mode 100644 index 0000000..68615fd --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/easing/Cubic.as @@ -0,0 +1,22 @@ +package aze.motion.easing { + + public final class Cubic { + + public static function easeIn(k:Number):Number{ + return (((k * k) * k)); + } + public static function easeOut(k:Number):Number{ + --k; + return ((((k * k) * k) + 1)); + } + public static function easeInOut(k:Number):Number{ + k = (k * 2); + if (k < 1){ + return ((((0.5 * k) * k) * k)); + }; + k = (k - 2); + return ((0.5 * (((k * k) * k) + 2))); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/watchdog/aze/motion/easing/Expo.as b/flash_decompiled/watchdog/aze/motion/easing/Expo.as new file mode 100644 index 0000000..d7e1239 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/easing/Expo.as @@ -0,0 +1,26 @@ +package aze.motion.easing { + + public final class Expo { + + public static function easeIn(k:Number):Number{ + return ((((k == 0)) ? 0 : Math.pow(2, (10 * (k - 1))))); + } + public static function easeOut(k:Number):Number{ + return ((((k == 1)) ? 1 : (-(Math.pow(2, (-10 * k))) + 1))); + } + public static function easeInOut(k:Number):Number{ + if (k == 0){ + return (0); + }; + if (k == 1){ + return (1); + }; + k = (k * 2); + if (k < 1){ + return ((0.5 * Math.pow(2, (10 * (k - 1))))); + }; + return ((0.5 * (-(Math.pow(2, (-10 * (k - 1)))) + 2))); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/watchdog/aze/motion/easing/Linear.as b/flash_decompiled/watchdog/aze/motion/easing/Linear.as new file mode 100644 index 0000000..847be19 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/easing/Linear.as @@ -0,0 +1,10 @@ +package aze.motion.easing { + + public class Linear { + + public static function easeNone(k:Number):Number{ + return (k); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/watchdog/aze/motion/easing/Quadratic.as b/flash_decompiled/watchdog/aze/motion/easing/Quadratic.as new file mode 100644 index 0000000..189716e --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/easing/Quadratic.as @@ -0,0 +1,21 @@ +package aze.motion.easing { + + public final class Quadratic { + + public static function easeIn(k:Number):Number{ + return ((k * k)); + } + public static function easeOut(k:Number):Number{ + return ((-(k) * (k - 2))); + } + public static function easeInOut(k:Number):Number{ + k = (k * 2); + if (k < 1){ + return (((0.5 * k) * k)); + }; + --k; + return ((-0.5 * ((k * (k - 2)) - 1))); + } + + } +}//package aze.motion.easing diff --git a/flash_decompiled/watchdog/aze/motion/eaze.as b/flash_decompiled/watchdog/aze/motion/eaze.as new file mode 100644 index 0000000..1555f3f --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/eaze.as @@ -0,0 +1,15 @@ +package aze.motion { + + public function eaze(target:Object):EazeTween{ + return (new EazeTween(target)); + } + PropertyTint.register(); + PropertyFrame.register(); + PropertyFilter.register(); + PropertyVolume.register(); + PropertyColorMatrix.register(); + PropertyBezier.register(); + PropertyShortRotation.register(); + var _local1:* = PropertyRect.register(); + return (_local1); +}//package aze.motion diff --git a/flash_decompiled/watchdog/aze/motion/specials/EazeSpecial.as b/flash_decompiled/watchdog/aze/motion/specials/EazeSpecial.as new file mode 100644 index 0000000..38db2d3 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/EazeSpecial.as @@ -0,0 +1,28 @@ +package aze.motion.specials { + + public class EazeSpecial { + + protected var target:Object; + protected var property:String; + public var next:EazeSpecial; + + public function EazeSpecial(target:Object, property, value, next:EazeSpecial){ + super(); + this.target = target; + this.property = property; + this.next = next; + } + public function init(reverse:Boolean):void{ + } + public function update(ke:Number, isComplete:Boolean):void{ + } + public function dispose():void{ + this.target = null; + if (this.next){ + this.next.dispose(); + }; + this.next = null; + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyBezier.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyBezier.as new file mode 100644 index 0000000..af07cc3 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyBezier.as @@ -0,0 +1,115 @@ +package aze.motion.specials { + import aze.motion.*; + + public class PropertyBezier extends EazeSpecial { + + private var fvalue:Array; + private var through:Boolean; + private var length:int; + private var segments:Array; + + public function PropertyBezier(target:Object, property, value, next:EazeSpecial){ + super(target, property, value, next); + this.fvalue = value; + if ((this.fvalue[0] is Array)){ + this.through = true; + this.fvalue = this.fvalue[0]; + }; + } + public static function register():void{ + EazeTween.specialProperties["__bezier"] = PropertyBezier; + } + + override public function init(reverse:Boolean):void{ + var p0:Number; + var p1:Number; + var current:Number = target[property]; + this.fvalue = [current].concat(this.fvalue); + if (reverse){ + this.fvalue.reverse(); + }; + var p2:Number = this.fvalue[0]; + var last:int = (this.fvalue.length - 1); + var index:int = 1; + var auto:Number = NaN; + this.segments = []; + this.length = 0; + while (index < last) { + p0 = p2; + p1 = this.fvalue[index]; + ++index; + p2 = this.fvalue[index]; + if (this.through){ + if (!(this.length)){ + auto = ((p2 - p0) / 4); + var _local9 = this.length++; + this.segments[_local9] = new BezierSegment(p0, (p1 - auto), p1); + }; + _local9 = this.length++; + this.segments[_local9] = new BezierSegment(p1, (p1 + auto), p2); + auto = (p2 - (p1 + auto)); + } else { + if (index != last){ + p2 = ((p1 + p2) / 2); + }; + _local9 = this.length++; + this.segments[_local9] = new BezierSegment(p0, p1, p2); + }; + }; + this.fvalue = null; + if (reverse){ + this.update(0, false); + }; + } + override public function update(ke:Number, isComplete:Boolean):void{ + var segment:BezierSegment; + var index:int; + var last:int = (this.length - 1); + if (isComplete){ + segment = this.segments[last]; + target[property] = (segment.p0 + segment.d2); + } else { + if (this.length == 1){ + segment = this.segments[0]; + target[property] = segment.calculate(ke); + } else { + index = ((ke * this.length) >> 0); + if (index < 0){ + index = 0; + } else { + if (index > last){ + index = last; + }; + }; + segment = this.segments[index]; + ke = (this.length * (ke - (index / this.length))); + target[property] = segment.calculate(ke); + }; + }; + } + override public function dispose():void{ + this.fvalue = null; + this.segments = null; + super.dispose(); + } + + } +}//package aze.motion.specials + +class BezierSegment { + + public var p0:Number; + public var d1:Number; + public var d2:Number; + + public function BezierSegment(p0:Number, p1:Number, p2:Number){ + super(); + this.p0 = p0; + this.d1 = (p1 - p0); + this.d2 = (p2 - p0); + } + public function calculate(t:Number):Number{ + return ((this.p0 + (t * (((2 * (1 - t)) * this.d1) + (t * this.d2))))); + } + +} diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyColorMatrix.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyColorMatrix.as new file mode 100644 index 0000000..9c3b5cc --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyColorMatrix.as @@ -0,0 +1,192 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.filters.*; + import flash.display.*; + + public class PropertyColorMatrix extends EazeSpecial { + + private var removeWhenComplete:Boolean; + private var colorMatrix:ColorMatrix; + private var delta:Array; + private var start:Array; + private var temp:Array; + + public function PropertyColorMatrix(target:Object, property, value, next:EazeSpecial){ + var tint:uint; + super(target, property, value, next); + this.colorMatrix = new ColorMatrix(); + if (value.brightness){ + this.colorMatrix.adjustBrightness((value.brightness * 0xFF)); + }; + if (value.contrast){ + this.colorMatrix.adjustContrast(value.contrast); + }; + if (value.hue){ + this.colorMatrix.adjustHue(value.hue); + }; + if (value.saturation){ + this.colorMatrix.adjustSaturation((value.saturation + 1)); + }; + if (value.colorize){ + tint = ((("tint" in value)) ? uint(value.tint) : 0xFFFFFF); + this.colorMatrix.colorize(tint, value.colorize); + }; + this.removeWhenComplete = value.remove; + } + public static function register():void{ + EazeTween.specialProperties["colorMatrixFilter"] = PropertyColorMatrix; + EazeTween.specialProperties[ColorMatrixFilter] = PropertyColorMatrix; + } + + override public function init(reverse:Boolean):void{ + var begin:Array; + var end:Array; + var disp:DisplayObject = DisplayObject(target); + var current:ColorMatrixFilter = (PropertyFilter.getCurrentFilter(ColorMatrixFilter, disp, true) as ColorMatrixFilter); + if (!(current)){ + current = new ColorMatrixFilter(); + }; + if (reverse){ + end = current.matrix; + begin = this.colorMatrix.matrix; + } else { + end = this.colorMatrix.matrix; + begin = current.matrix; + }; + this.delta = new Array(20); + var i:int; + while (i < 20) { + this.delta[i] = (end[i] - begin[i]); + i++; + }; + this.start = begin; + this.temp = new Array(20); + PropertyFilter.addFilter(disp, new ColorMatrixFilter(begin)); + } + override public function update(ke:Number, isComplete:Boolean):void{ + var disp:DisplayObject = DisplayObject(target); + (PropertyFilter.getCurrentFilter(ColorMatrixFilter, disp, true) as ColorMatrixFilter); + if (((this.removeWhenComplete) && (isComplete))){ + disp.filters = disp.filters; + return; + }; + var i:int; + while (i < 20) { + this.temp[i] = (this.start[i] + (ke * this.delta[i])); + i++; + }; + PropertyFilter.addFilter(disp, new ColorMatrixFilter(this.temp)); + } + override public function dispose():void{ + this.colorMatrix = null; + this.delta = null; + this.start = null; + this.temp = null; + super.dispose(); + } + + } +}//package aze.motion.specials + +import flash.filters.*; + +class ColorMatrix { + + private static const LUMA_R:Number = 0.212671; + private static const LUMA_G:Number = 0.71516; + private static const LUMA_B:Number = 0.072169; + private static const LUMA_R2:Number = 0.3086; + private static const LUMA_G2:Number = 0.6094; + private static const LUMA_B2:Number = 0.082; + private static const ONETHIRD:Number = 0.333333333333333; + private static const IDENTITY:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]; + private static const RAD:Number = 0.0174532925199433; + + public var matrix:Array; + + public function ColorMatrix(mat:Object=null){ + super(); + if ((mat is ColorMatrix)){ + this.matrix = mat.matrix.concat(); + } else { + if ((mat is Array)){ + this.matrix = mat.concat(); + } else { + this.reset(); + }; + }; + } + public function reset():void{ + this.matrix = IDENTITY.concat(); + } + public function adjustSaturation(s:Number):void{ + var sInv:Number; + var irlum:Number; + var iglum:Number; + var iblum:Number; + sInv = (1 - s); + irlum = (sInv * LUMA_R); + iglum = (sInv * LUMA_G); + iblum = (sInv * LUMA_B); + this.concat([(irlum + s), iglum, iblum, 0, 0, irlum, (iglum + s), iblum, 0, 0, irlum, iglum, (iblum + s), 0, 0, 0, 0, 0, 1, 0]); + } + public function adjustContrast(r:Number, g:Number=NaN, b:Number=NaN):void{ + if (isNaN(g)){ + g = r; + }; + if (isNaN(b)){ + b = r; + }; + r = (r + 1); + g = (g + 1); + b = (b + 1); + this.concat([r, 0, 0, 0, (128 * (1 - r)), 0, g, 0, 0, (128 * (1 - g)), 0, 0, b, 0, (128 * (1 - b)), 0, 0, 0, 1, 0]); + } + public function adjustBrightness(r:Number, g:Number=NaN, b:Number=NaN):void{ + if (isNaN(g)){ + g = r; + }; + if (isNaN(b)){ + b = r; + }; + this.concat([1, 0, 0, 0, r, 0, 1, 0, 0, g, 0, 0, 1, 0, b, 0, 0, 0, 1, 0]); + } + public function adjustHue(degrees:Number):void{ + degrees = (degrees * RAD); + var cos:Number = Math.cos(degrees); + var sin:Number = Math.sin(degrees); + this.concat([((LUMA_R + (cos * (1 - LUMA_R))) + (sin * -(LUMA_R))), ((LUMA_G + (cos * -(LUMA_G))) + (sin * -(LUMA_G))), ((LUMA_B + (cos * -(LUMA_B))) + (sin * (1 - LUMA_B))), 0, 0, ((LUMA_R + (cos * -(LUMA_R))) + (sin * 0.143)), ((LUMA_G + (cos * (1 - LUMA_G))) + (sin * 0.14)), ((LUMA_B + (cos * -(LUMA_B))) + (sin * -0.283)), 0, 0, ((LUMA_R + (cos * -(LUMA_R))) + (sin * -((1 - LUMA_R)))), ((LUMA_G + (cos * -(LUMA_G))) + (sin * LUMA_G)), ((LUMA_B + (cos * (1 - LUMA_B))) + (sin * LUMA_B)), 0, 0, 0, 0, 0, 1, 0]); + } + public function colorize(rgb:int, amount:Number=1):void{ + var r:Number; + var g:Number; + var b:Number; + var inv_amount:Number; + r = (((rgb >> 16) & 0xFF) / 0xFF); + g = (((rgb >> 8) & 0xFF) / 0xFF); + b = ((rgb & 0xFF) / 0xFF); + inv_amount = (1 - amount); + this.concat([(inv_amount + ((amount * r) * LUMA_R)), ((amount * r) * LUMA_G), ((amount * r) * LUMA_B), 0, 0, ((amount * g) * LUMA_R), (inv_amount + ((amount * g) * LUMA_G)), ((amount * g) * LUMA_B), 0, 0, ((amount * b) * LUMA_R), ((amount * b) * LUMA_G), (inv_amount + ((amount * b) * LUMA_B)), 0, 0, 0, 0, 0, 1, 0]); + } + public function get filter():ColorMatrixFilter{ + return (new ColorMatrixFilter(this.matrix)); + } + public function concat(mat:Array):void{ + var x:int; + var y:int; + var temp:Array = []; + var i:int; + y = 0; + while (y < 4) { + x = 0; + while (x < 5) { + temp[int((i + x))] = (((((Number(mat[i]) * Number(this.matrix[x])) + (Number(mat[int((i + 1))]) * Number(this.matrix[int((x + 5))]))) + (Number(mat[int((i + 2))]) * Number(this.matrix[int((x + 10))]))) + (Number(mat[int((i + 3))]) * Number(this.matrix[int((x + 15))]))) + (((x == 4)) ? Number(mat[int((i + 4))]) : 0)); + x++; + }; + i = (i + 5); + y++; + }; + this.matrix = temp; + } + +} diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyFilter.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyFilter.as new file mode 100644 index 0000000..f489d7e --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyFilter.as @@ -0,0 +1,205 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.filters.*; + import flash.display.*; + + public class PropertyFilter extends EazeSpecial { + + public static var fixedProp:Object = { + quality:true, + color:true + }; + + private var properties:Array; + private var fvalue:BitmapFilter; + private var start:Object; + private var delta:Object; + private var fColor:Object; + private var startColor:Object; + private var deltaColor:Object; + private var removeWhenComplete:Boolean; + private var isNewFilter:Boolean; + private var filterClass:Class; + + public function PropertyFilter(target:Object, property, value, next:EazeSpecial){ + var prop:String; + var val:*; + super(target, property, value, next); + this.filterClass = this.resolveFilterClass(property); + var disp:DisplayObject = DisplayObject(target); + var current:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, disp, false); + if (!(current)){ + this.isNewFilter = true; + current = new this.filterClass(); + }; + this.properties = []; + this.fvalue = current.clone(); + for (prop in value) { + val = value[prop]; + if (prop == "remove"){ + this.removeWhenComplete = val; + } else { + if ((((prop == "color")) && (!(this.isNewFilter)))){ + this.fColor = { + r:((val >> 16) & 0xFF), + g:((val >> 8) & 0xFF), + b:(val & 0xFF) + }; + }; + this.fvalue[prop] = val; + this.properties.push(prop); + }; + }; + } + public static function register():void{ + EazeTween.specialProperties["blurFilter"] = PropertyFilter; + EazeTween.specialProperties["glowFilter"] = PropertyFilter; + EazeTween.specialProperties["dropShadowFilter"] = PropertyFilter; + EazeTween.specialProperties[BlurFilter] = PropertyFilter; + EazeTween.specialProperties[GlowFilter] = PropertyFilter; + EazeTween.specialProperties[DropShadowFilter] = PropertyFilter; + } + public static function getCurrentFilter(filterClass:Class, disp:DisplayObject, remove:Boolean):BitmapFilter{ + var index:int; + var filters:Array; + var filter:BitmapFilter; + if (disp.filters){ + filters = disp.filters; + index = 0; + while (index < filters.length) { + if ((filters[index] is filterClass)){ + if (remove){ + filter = filters.splice(index, 1)[0]; + disp.filters = filters; + return (filter); + }; + return (filters[index]); + }; + index++; + }; + }; + return (null); + } + public static function addFilter(disp:DisplayObject, filter:BitmapFilter):void{ + var filters:Array = ((disp.filters) || ([])); + filters.push(filter); + disp.filters = filters; + } + + private function resolveFilterClass(property):Class{ + if ((property is Class)){ + return (property); + }; + switch (property){ + case "blurFilter": + return (BlurFilter); + case "glowFilter": + return (GlowFilter); + case "dropShadowFilter": + return (DropShadowFilter); + }; + return (BlurFilter); + } + override public function init(reverse:Boolean):void{ + var begin:BitmapFilter; + var end:BitmapFilter; + var curColor:Object; + var endColor:Object; + var val:*; + var prop:String; + var disp:DisplayObject = DisplayObject(target); + var current:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, disp, true); + if (!(current)){ + current = new this.filterClass(); + }; + if (this.fColor){ + val = current["color"]; + curColor = { + r:((val >> 16) & 0xFF), + g:((val >> 8) & 0xFF), + b:(val & 0xFF) + }; + }; + if (reverse){ + begin = this.fvalue; + end = current; + this.startColor = this.fColor; + endColor = curColor; + } else { + begin = current; + end = this.fvalue; + this.startColor = curColor; + endColor = this.fColor; + }; + this.start = {}; + this.delta = {}; + var i:int; + for (;i < this.properties.length;i++) { + prop = this.properties[i]; + val = this.fvalue[prop]; + if ((val is Boolean)){ + current[prop] = val; + this.properties[i] = null; + } else { + if (this.isNewFilter){ + if ((prop in fixedProp)){ + current[prop] = val; + this.properties[i] = null; + continue; + }; + current[prop] = 0; + } else { + if ((((prop == "color")) && (this.fColor))){ + this.deltaColor = { + r:(endColor.r - this.startColor.r), + g:(endColor.g - this.startColor.g), + b:(endColor.b - this.startColor.b) + }; + this.properties[i] = null; + continue; + }; + }; + this.start[prop] = begin[prop]; + this.delta[prop] = (end[prop] - this.start[prop]); + }; + }; + this.fvalue = null; + this.fColor = null; + PropertyFilter.addFilter(disp, begin); + } + override public function update(ke:Number, isComplete:Boolean):void{ + var prop:String; + var disp:DisplayObject = DisplayObject(target); + var current:BitmapFilter = PropertyFilter.getCurrentFilter(this.filterClass, disp, true); + if (((this.removeWhenComplete) && (isComplete))){ + disp.filters = disp.filters; + return; + }; + if (!(current)){ + current = new this.filterClass(); + }; + var i:int; + while (i < this.properties.length) { + prop = this.properties[i]; + if (prop){ + current[prop] = (this.start[prop] + (ke * this.delta[prop])); + }; + i++; + }; + if (this.startColor){ + current["color"] = ((((this.startColor.r + (ke * this.deltaColor.r)) << 16) | ((this.startColor.g + (ke * this.deltaColor.g)) << 8)) | (this.startColor.b + (ke * this.deltaColor.b))); + }; + PropertyFilter.addFilter(disp, current); + } + override public function dispose():void{ + this.filterClass = null; + this.start = (this.delta = null); + this.startColor = (this.deltaColor = null); + this.fvalue = null; + this.fColor = null; + this.properties = null; + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyFrame.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyFrame.as new file mode 100644 index 0000000..b8c964f --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyFrame.as @@ -0,0 +1,84 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.display.*; + + public class PropertyFrame extends EazeSpecial { + + private var start:int; + private var delta:int; + private var frameStart; + private var frameEnd; + + public function PropertyFrame(target:Object, property, value, next:EazeSpecial){ + var parts:Array; + var label:String; + var index:int; + super(target, property, value, next); + var mc:MovieClip = MovieClip(target); + if ((value is String)){ + label = value; + if (label.indexOf("+") > 0){ + parts = label.split("+"); + this.frameStart = parts[0]; + this.frameEnd = label; + } else { + if (label.indexOf(">") > 0){ + parts = label.split(">"); + this.frameStart = parts[0]; + this.frameEnd = parts[1]; + } else { + this.frameEnd = label; + }; + }; + } else { + index = int(value); + if (index <= 0){ + index = (index + mc.totalFrames); + }; + this.frameEnd = Math.max(1, Math.min(mc.totalFrames, index)); + }; + } + public static function register():void{ + EazeTween.specialProperties.frame = PropertyFrame; + } + + override public function init(reverse:Boolean):void{ + var mc:MovieClip = MovieClip(target); + if ((this.frameStart is String)){ + this.frameStart = this.findLabel(mc, this.frameStart); + } else { + this.frameStart = mc.currentFrame; + }; + if ((this.frameEnd is String)){ + this.frameEnd = this.findLabel(mc, this.frameEnd); + }; + if (reverse){ + this.start = this.frameEnd; + this.delta = (this.frameStart - this.start); + } else { + this.start = this.frameStart; + this.delta = (this.frameEnd - this.start); + }; + mc.gotoAndStop(this.start); + } + private function findLabel(mc:MovieClip, name:String):int{ + var label:FrameLabel; + for each (label in mc.currentLabels) { + if (label.name == name){ + return (label.frame); + }; + }; + return (1); + } + override public function update(ke:Number, isComplete:Boolean):void{ + var mc:MovieClip = MovieClip(target); + mc.gotoAndStop(Math.round((this.start + (this.delta * ke)))); + } + public function getPreferredDuration():Number{ + var mc:MovieClip = MovieClip(target); + var fps:Number = ((mc.stage) ? mc.stage.frameRate : 30); + return (Math.abs((Number(this.delta) / fps))); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyRect.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyRect.as new file mode 100644 index 0000000..2859f0b --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyRect.as @@ -0,0 +1,46 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.geom.*; + + public class PropertyRect extends EazeSpecial { + + private var original:Rectangle; + private var targetRect:Rectangle; + private var tmpRect:Rectangle; + + public function PropertyRect(target:Object, property, value, next:EazeSpecial):void{ + super(target, property, value, next); + this.targetRect = ((((value) && ((value is Rectangle)))) ? value.clone() : new Rectangle()); + } + public static function register():void{ + EazeTween.specialProperties["__rect"] = PropertyRect; + } + + override public function init(reverse:Boolean):void{ + this.original = (((target[property] is Rectangle)) ? (target[property].clone() as Rectangle) : new Rectangle(0, 0, target.width, target.height)); + if (reverse){ + this.tmpRect = this.original; + this.original = this.targetRect; + this.targetRect = this.tmpRect; + target.scrollRect = this.original; + }; + this.tmpRect = new Rectangle(); + } + override public function update(ke:Number, isComplete:Boolean):void{ + if (isComplete){ + target.scrollRect = this.targetRect; + } else { + this.tmpRect.x = (this.original.x + ((this.targetRect.x - this.original.x) * ke)); + this.tmpRect.y = (this.original.y + ((this.targetRect.y - this.original.y) * ke)); + this.tmpRect.width = (this.original.width + ((this.targetRect.width - this.original.width) * ke)); + this.tmpRect.height = (this.original.height + ((this.targetRect.height - this.original.height) * ke)); + target[property] = this.tmpRect; + }; + } + override public function dispose():void{ + this.original = (this.targetRect = (this.tmpRect = null)); + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyShortRotation.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyShortRotation.as new file mode 100644 index 0000000..6c35c05 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyShortRotation.as @@ -0,0 +1,42 @@ +package aze.motion.specials { + import aze.motion.*; + + public class PropertyShortRotation extends EazeSpecial { + + private var fvalue:Number; + private var radius:Number; + private var start:Number; + private var delta:Number; + + public function PropertyShortRotation(target:Object, property, value, next:EazeSpecial){ + super(target, property, value, next); + this.fvalue = value[0]; + this.radius = ((value[1]) ? Math.PI : 180); + } + public static function register():void{ + EazeTween.specialProperties["__short"] = PropertyShortRotation; + } + + override public function init(reverse:Boolean):void{ + var end:Number; + this.start = target[property]; + if (reverse){ + end = this.start; + target[property] = (this.start = this.fvalue); + } else { + end = this.fvalue; + }; + while ((end - this.start) > this.radius) { + this.start = (this.start + (this.radius * 2)); + }; + while ((end - this.start) < -(this.radius)) { + this.start = (this.start - (this.radius * 2)); + }; + this.delta = (end - this.start); + } + override public function update(ke:Number, isComplete:Boolean):void{ + target[property] = (this.start + (ke * this.delta)); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyTint.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyTint.as new file mode 100644 index 0000000..70087ee --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyTint.as @@ -0,0 +1,81 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.geom.*; + + public class PropertyTint extends EazeSpecial { + + private var start:ColorTransform; + private var tvalue:ColorTransform; + private var delta:ColorTransform; + + public function PropertyTint(target:Object, property, value, next:EazeSpecial){ + var mix:Number; + var amix:Number; + var color:uint; + var a:Array; + super(target, property, value, next); + if (value === null){ + this.tvalue = new ColorTransform(); + } else { + mix = 1; + amix = 0; + color = 0; + a = (((value is Array)) ? value : [value]); + if (a[0] === null){ + mix = 0; + amix = 1; + } else { + if (a.length > 1){ + mix = a[1]; + }; + if (a.length > 2){ + amix = a[2]; + } else { + amix = (1 - mix); + }; + color = a[0]; + }; + this.tvalue = new ColorTransform(); + this.tvalue.redMultiplier = amix; + this.tvalue.greenMultiplier = amix; + this.tvalue.blueMultiplier = amix; + this.tvalue.redOffset = (mix * ((color >> 16) & 0xFF)); + this.tvalue.greenOffset = (mix * ((color >> 8) & 0xFF)); + this.tvalue.blueOffset = (mix * (color & 0xFF)); + }; + } + public static function register():void{ + EazeTween.specialProperties.tint = PropertyTint; + } + + override public function init(reverse:Boolean):void{ + if (reverse){ + this.start = this.tvalue; + this.tvalue = target.transform.colorTransform; + } else { + this.start = target.transform.colorTransform; + }; + this.delta = new ColorTransform((this.tvalue.redMultiplier - this.start.redMultiplier), (this.tvalue.greenMultiplier - this.start.greenMultiplier), (this.tvalue.blueMultiplier - this.start.blueMultiplier), 0, (this.tvalue.redOffset - this.start.redOffset), (this.tvalue.greenOffset - this.start.greenOffset), (this.tvalue.blueOffset - this.start.blueOffset)); + this.tvalue = null; + if (reverse){ + this.update(0, false); + }; + } + override public function update(ke:Number, isComplete:Boolean):void{ + var t:ColorTransform = target.transform.colorTransform; + t.redMultiplier = (this.start.redMultiplier + (this.delta.redMultiplier * ke)); + t.greenMultiplier = (this.start.greenMultiplier + (this.delta.greenMultiplier * ke)); + t.blueMultiplier = (this.start.blueMultiplier + (this.delta.blueMultiplier * ke)); + t.redOffset = (this.start.redOffset + (this.delta.redOffset * ke)); + t.greenOffset = (this.start.greenOffset + (this.delta.greenOffset * ke)); + t.blueOffset = (this.start.blueOffset + (this.delta.blueOffset * ke)); + target.transform.colorTransform = t; + } + override public function dispose():void{ + this.start = (this.delta = null); + this.tvalue = null; + super.dispose(); + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/aze/motion/specials/PropertyVolume.as b/flash_decompiled/watchdog/aze/motion/specials/PropertyVolume.as new file mode 100644 index 0000000..783b030 --- /dev/null +++ b/flash_decompiled/watchdog/aze/motion/specials/PropertyVolume.as @@ -0,0 +1,44 @@ +package aze.motion.specials { + import aze.motion.*; + import flash.media.*; + + public class PropertyVolume extends EazeSpecial { + + private var start:Number; + private var delta:Number; + private var vvalue:Number; + private var targetVolume:Boolean; + + public function PropertyVolume(target:Object, property, value, next:EazeSpecial){ + super(target, property, value, next); + this.vvalue = value; + } + public static function register():void{ + EazeTween.specialProperties.volume = PropertyVolume; + } + + override public function init(reverse:Boolean):void{ + var end:Number; + this.targetVolume = ("soundTransform" in target); + var st:SoundTransform = ((this.targetVolume) ? target.soundTransform : SoundMixer.soundTransform); + if (reverse){ + this.start = this.vvalue; + end = st.volume; + } else { + end = this.vvalue; + this.start = st.volume; + }; + this.delta = (end - this.start); + } + override public function update(ke:Number, isComplete:Boolean):void{ + var st:SoundTransform = ((this.targetVolume) ? target.soundTransform : SoundMixer.soundTransform); + st.volume = (this.start + (this.delta * ke)); + if (this.targetVolume){ + target.soundTransform = st; + } else { + SoundMixer.soundTransform = st; + }; + } + + } +}//package aze.motion.specials diff --git a/flash_decompiled/watchdog/biga/shapes2d/Edge.as b/flash_decompiled/watchdog/biga/shapes2d/Edge.as new file mode 100644 index 0000000..ced3e13 --- /dev/null +++ b/flash_decompiled/watchdog/biga/shapes2d/Edge.as @@ -0,0 +1,84 @@ +package biga.shapes2d { + import biga.utils.*; + import flash.geom.*; + import flash.display.*; + + public final class Edge { + + private var _p0:Point; + private var _p1:Point; + private var _id:int; + private var _angle:Number; + private var _length:Number; + + public function Edge(p0:Point=null, p1:Point=null, id:int=-1){ + super(); + this.p0 = p0; + this.p1 = p1; + this.id = id; + if (((!((p0 == null))) && (!((p1 == null))))){ + this._angle = GeomUtils.angle(p0, p1); + this._length = GeomUtils.distance(p0, p1); + }; + } + public function get p0():Point{ + return (this._p0); + } + public function set p0(value:Point):void{ + this._p0 = value; + } + public function get p1():Point{ + return (this._p1); + } + public function set p1(value:Point):void{ + this._p1 = value; + } + public function get id():int{ + return (this._id); + } + public function set id(value:int):void{ + this._id = value; + } + public function intersect(e:Edge, asSegment0:Boolean=true, asSegment1:Boolean=true):Point{ + return (GeomUtils.lineIntersectLine(this.p0, this.p1, e.p0, e.p1, asSegment0, asSegment1)); + } + public function equals(e:Edge, sameDirection:Boolean=true):Boolean{ + if (sameDirection){ + return (((this.p0.equals(e.p0)) && (this.p1.equals(e.p1)))); + }; + return ((((((this.p0 == e.p0)) && ((this.p1 == e.p1)))) || ((((this.p0 == e.p1)) && ((this.p1 == e.p0)))))); + } + public function getPointAt(t:Number):Point{ + return (new Point((this.p0.x + ((Math.cos(this.angle) * this.length) * t)), (this.p0.y + ((Math.sin(this.angle) * this.length) * t)))); + } + public function get center():Point{ + return (new Point((this.p0.x + (this.width * 0.5)), (this.p0.y + (this.height * 0.5)))); + } + public function get angle():Number{ + return (GeomUtils.angle(this.p0, this.p1)); + } + public function get squareLength():Number{ + return (GeomUtils.squareDistance(this.p0.x, this.p0.y, this.p1.x, this.p1.y)); + } + public function get length():Number{ + return (GeomUtils.distance(this.p0, this.p1)); + } + public function get width():Number{ + return ((this.p1.x - this.p0.x)); + } + public function get height():Number{ + return ((this.p1.y - this.p0.y)); + } + public function get leftNormal():Edge{ + return (new Edge(this.p0, new Point((this.p0.x + this.height), (this.p0.y - this.width)))); + } + public function get rightNormal():Edge{ + return (new Edge(this.p0, new Point((this.p0.x - this.height), (this.p0.y + this.width)))); + } + public function draw(graphics:Graphics=null):void{ + graphics.moveTo(this.p0.x, this.p0.y); + graphics.lineTo(this.p1.x, this.p1.y); + } + + } +}//package biga.shapes2d diff --git a/flash_decompiled/watchdog/biga/utils/Delaunay.as b/flash_decompiled/watchdog/biga/utils/Delaunay.as new file mode 100644 index 0000000..c5a7214 --- /dev/null +++ b/flash_decompiled/watchdog/biga/utils/Delaunay.as @@ -0,0 +1,142 @@ +package biga.utils { + import flash.geom.*; + import __AS3__.vec.*; + import flash.display.*; + + public class Delaunay { + + public static var EPSILON:Number = Number.MIN_VALUE; + public static var SUPER_TRIANGLE_RADIUS:Number = 0x3B9ACA00; + + private var indices:Vector.; + private var _circles:Vector.; + + public function Delaunay(){ + super(); + } + public function compute(points:Vector.):Vector.{ + var i:int; + var j:int; + var k:int; + var id0:int; + var id1:int; + var id2:int; + var nv:int = points.length; + if (nv < 3){ + return (null); + }; + var d:Number = SUPER_TRIANGLE_RADIUS; + points.push(new Point(0, -(d)), new Point(d, d), new Point(-(d), d)); + this.indices = Vector.([(points.length - 3), (points.length - 2), (points.length - 1)]); + this.circles = Vector.([0, 0, d]); + var edgeIds:Vector. = new Vector.(); + i = 0; + while (i < nv) { + j = 0; + while (j < this.indices.length) { + if ((((this.circles[(j + 2)] > EPSILON)) && (this.circleContains(j, points[i])))){ + id0 = this.indices[j]; + id1 = this.indices[(j + 1)]; + id2 = this.indices[(j + 2)]; + edgeIds.push(id0, id1, id1, id2, id2, id0); + this.indices.splice(j, 3); + this.circles.splice(j, 3); + j = (j - 3); + }; + j = (j + 3); + }; + j = 0; + while (j < edgeIds.length) { + k = (j + 2); + while (k < edgeIds.length) { + if ((((((edgeIds[j] == edgeIds[k])) && ((edgeIds[(j + 1)] == edgeIds[(k + 1)])))) || ((((edgeIds[(j + 1)] == edgeIds[k])) && ((edgeIds[j] == edgeIds[(k + 1)])))))){ + edgeIds.splice(k, 2); + edgeIds.splice(j, 2); + j = (j - 2); + k = (k - 2); + if (j < 0){ + break; + }; + if (k < 0){ + break; + }; + }; + k = (k + 2); + }; + j = (j + 2); + }; + j = 0; + while (j < edgeIds.length) { + this.indices.push(edgeIds[j], edgeIds[(j + 1)], i); + this.computeCircle(points, edgeIds[j], edgeIds[(j + 1)], i); + j = (j + 2); + }; + edgeIds.length = 0; + i++; + }; + id0 = (points.length - 3); + id1 = (points.length - 2); + id2 = (points.length - 1); + i = 0; + while (i < this.indices.length) { + if ((((((((((((((((((this.indices[i] == id0)) || ((this.indices[i] == id1)))) || ((this.indices[i] == id2)))) || ((this.indices[(i + 1)] == id0)))) || ((this.indices[(i + 1)] == id1)))) || ((this.indices[(i + 1)] == id2)))) || ((this.indices[(i + 2)] == id0)))) || ((this.indices[(i + 2)] == id1)))) || ((this.indices[(i + 2)] == id2)))){ + this.indices.splice(i, 3); + this.circles.splice(i, 3); + i = (i - 3); + }; + i = (i + 3); + }; + points.pop(); + points.pop(); + points.pop(); + return (this.indices); + } + private function circleContains(circleId:int, p:Point):Boolean{ + var dx:Number = (this.circles[circleId] - p.x); + var dy:Number = (this.circles[(circleId + 1)] - p.y); + return ((this.circles[(circleId + 2)] > ((dx * dx) + (dy * dy)))); + } + private function computeCircle(points:Vector., id0:int, id1:int, id2:int):void{ + var p0:Point = points[id0]; + var p1:Point = points[id1]; + var p2:Point = points[id2]; + var A:Number = (p1.x - p0.x); + var B:Number = (p1.y - p0.y); + var C:Number = (p2.x - p0.x); + var D:Number = (p2.y - p0.y); + var E:Number = ((A * (p0.x + p1.x)) + (B * (p0.y + p1.y))); + var F:Number = ((C * (p0.x + p2.x)) + (D * (p0.y + p2.y))); + var G:Number = (2 * ((A * (p2.y - p1.y)) - (B * (p2.x - p1.x)))); + var x:Number = (((D * E) - (B * F)) / G); + this.circles.push(x); + var y:Number = (((A * F) - (C * E)) / G); + this.circles.push(y); + x = (x - p0.x); + y = (y - p0.y); + this.circles.push(((x * x) + (y * y))); + } + public function render(graphics:Graphics, points:Vector., indices:Vector.):void{ + var id0:uint; + var id1:uint; + var id2:uint; + var i:int; + while (i < indices.length) { + id0 = indices[i]; + id1 = indices[(i + 1)]; + id2 = indices[(i + 2)]; + graphics.moveTo(points[id0].x, points[id0].y); + graphics.lineTo(points[id1].x, points[id1].y); + graphics.lineTo(points[id2].x, points[id2].y); + graphics.lineTo(points[id0].x, points[id0].y); + i = (i + 3); + }; + } + public function get circles():Vector.{ + return (this._circles); + } + public function set circles(value:Vector.):void{ + this._circles = value; + } + + } +}//package biga.utils diff --git a/flash_decompiled/watchdog/biga/utils/GeomUtils.as b/flash_decompiled/watchdog/biga/utils/GeomUtils.as new file mode 100644 index 0000000..a85dde5 --- /dev/null +++ b/flash_decompiled/watchdog/biga/utils/GeomUtils.as @@ -0,0 +1,214 @@ +package biga.utils { + import flash.geom.*; + import __AS3__.vec.*; + + public class GeomUtils { + + private static var ip:Point = new Point(); + + public static function angle(p0:Point, p1:Point):Number{ + return (Math.atan2((p1.y - p0.y), (p1.x - p0.x))); + } + public static function angleDifference(a0:Number, a1:Number):Number{ + var difference:Number = (a1 - a0); + while (difference < -(Math.PI)) { + difference = (difference + (Math.PI * 2)); + }; + while (difference > Math.PI) { + difference = (difference - (Math.PI * 2)); + }; + return (difference); + } + public static function slope(p0:Point, p1:Point):Number{ + return (((p1.y - p0.y) / (p1.x - p0.x))); + } + public static function distance(p0:Point, p1:Point):Number{ + return (Math.sqrt(squareDistance(p0.x, p0.y, p1.x, p1.y))); + } + public static function squareDistance(x0:Number, y0:Number, x1:Number, y1:Number):Number{ + return ((((x0 - x1) * (x0 - x1)) + ((y0 - y1) * (y0 - y1)))); + } + public static function toFixed(value:Number, step:Number=10):Number{ + return ((int((value * step)) / step)); + } + public static function snap(value:Number, step:Number):Number{ + return ((int((value / step)) * step)); + } + public static function clamp(value:Number, min:Number, max:Number):Number{ + return ((((value < min)) ? min : (((value > max)) ? max : value))); + } + public static function lerp(t:Number, a:Number, b:Number):Number{ + return ((a + ((b - a) * t))); + } + public static function normalize(value:Number, a:Number, b:Number):Number{ + return (((value - a) / (b - a))); + } + public static function map(value:Number, min1:Number, max1:Number, min2:Number, max2:Number):Number{ + return (lerp(normalize(value, min1, max1), min2, max2)); + } + public static function determinant(p:Point, a:Point, b:Point):Number{ + return ((((a.x - b.x) * (p.y - b.y)) - ((p.x - b.x) * (a.y - b.y)))); + } + public static function isLeft(p:Point, a:Point, b:Point):Boolean{ + return ((determinant(p, a, b) >= 0)); + } + public static function isRight(p:Point, a:Point, b:Point):Boolean{ + return ((determinant(p, a, b) <= 0)); + } + public static function normalizeVector(p:Point):Point{ + return (new Point((p.x / p.length), (p.y / p.length))); + } + public static function dotProduct(u:Point, v:Point):Number{ + return (((u.x * v.x) + (u.y * v.y))); + } + public static function crossProduct(u:Point, v:Point):Number{ + return (((u.x * v.y) - (u.y * v.x))); + } + public static function center(p0:Point, p1:Point):Point{ + return (new Point((p0.x + ((p1.x - p0.x) / 2)), (p0.y + ((p1.y - p0.y) / 2)))); + } + public static function leftNormal(p0:Point, p1:Point):Point{ + return (new Point((p0.x + (p1.y - p0.y)), (p0.y - (p1.x - p0.x)))); + } + public static function normal(p0:Point, p1:Point):Point{ + return (new Point(-((p1.y - p0.y)), (p1.x - p0.x))); + } + public static function rightNormal(p0:Point, p1:Point):Point{ + return (new Point((p0.x - (p1.y - p0.y)), (p0.y + (p1.x - p0.x)))); + } + public static function project(p:Point, a:Point, b:Point):Point{ + var len:Number = distance(a, b); + var r:Number = ((((a.y - p.y) * (a.y - b.y)) - ((a.x - p.x) * (b.x - a.x))) / (len * len)); + var px:Number = (a.x + (r * (b.x - a.x))); + var py:Number = (a.y + (r * (b.y - a.y))); + return (new Point(px, py)); + } + public static function getClosestPointInList(p:Point, list:Vector.):Point{ + var dist:Number; + var closest:Point; + var item:Point; + if (list.length <= 0){ + return (null); + }; + if (list.length == 1){ + return (list[0]); + }; + var min:Number = Number.POSITIVE_INFINITY; + for each (item in list) { + if (item == p){ + } else { + if (item.equals(p)){ + return (item); + }; + dist = squareDistance(p.x, p.y, item.x, item.y); + if (dist < min){ + min = dist; + closest = item; + }; + }; + }; + return (closest); + } + public static function getPointAt(t:Number, points:Vector., p:Point=null, loop:Boolean=false):Point{ + var length:int = points.length; + if (!(loop)){ + length--; + }; + var i:int = int((length * t)); + var delta:Number = (1 / length); + t = ((t - (i * delta)) / delta); + if (p == null){ + p = new Point(lerp(t, points[i].x, points[((i + 1) % points.length)].x), lerp(t, points[i].y, points[((i + 1) % points.length)].y)); + } else { + p.x = lerp(t, points[i].x, points[((i + 1) % points.length)].x); + p.y = lerp(t, points[i].y, points[((i + 1) % points.length)].y); + }; + return (p); + } + public static function constrain(p:Point, a:Point, b:Point):Point{ + var t:Number; + var dx:Number = (b.x - a.x); + var dy:Number = (b.y - a.y); + if ((((dx == 0)) && ((dy == 0)))){ + return (a); + }; + t = ((((p.x - a.x) * dx) + ((p.y - a.y) * dy)) / ((dx * dx) + (dy * dy))); + t = Math.min(Math.max(0, t), 1); + return (new Point((a.x + (t * dx)), (a.y + (t * dy)))); + } + public static function lineIntersectLine(A:Point, B:Point, E:Point, F:Point, ABasSeg:Boolean=true, EFasSeg:Boolean=true):Point{ + var a1:Number; + var a2:Number; + var b1:Number; + var b2:Number; + var c1:Number; + var c2:Number; + a1 = (B.y - A.y); + b1 = (A.x - B.x); + a2 = (F.y - E.y); + b2 = (E.x - F.x); + var denom:Number = ((a1 * b2) - (a2 * b1)); + if (denom == 0){ + return (null); + }; + c1 = ((B.x * A.y) - (A.x * B.y)); + c2 = ((F.x * E.y) - (E.x * F.y)); + ip = new Point(); + ip.x = (((b1 * c2) - (b2 * c1)) / denom); + ip.y = (((a2 * c1) - (a1 * c2)) / denom); + if (A.x == B.x){ + ip.x = A.x; + } else { + if (E.x == F.x){ + ip.x = E.x; + }; + }; + if (A.y == B.y){ + ip.y = A.y; + } else { + if (E.y == F.y){ + ip.y = E.y; + }; + }; + if (ABasSeg){ + if (((A.x) B.x))) : (((ip.x > A.x)) || ((ip.x < B.x)))){ + return (null); + }; + if (((A.y) B.y))) : (((ip.y > A.y)) || ((ip.y < B.y)))){ + return (null); + }; + }; + if (EFasSeg){ + if (((E.x) F.x))) : (((ip.x > E.x)) || ((ip.x < F.x)))){ + return (null); + }; + if (((E.y) F.y))) : (((ip.y > E.y)) || ((ip.y < F.y)))){ + return (null); + }; + }; + return (ip); + } + public static function centroid(points:Vector.):Point{ + var p:Point; + var c:Point = new Point(); + for each (p in points) { + c.x = (c.x + p.x); + c.y = (c.y + p.y); + }; + c.x = (c.x / points.length); + c.y = (c.y / points.length); + return (c); + } + public static function shortestAngle(angle:Number, destAngle:Number):Vector.{ + if (Math.abs((destAngle - angle)) > Math.PI){ + if (destAngle > angle){ + angle = (angle + (Math.PI * 2)); + } else { + destAngle = (destAngle + (Math.PI * 2)); + }; + }; + return (Vector.([angle, destAngle])); + } + + } +}//package biga.utils diff --git a/flash_decompiled/watchdog/biga/utils/PolygonUtils.as b/flash_decompiled/watchdog/biga/utils/PolygonUtils.as new file mode 100644 index 0000000..d3b0a37 --- /dev/null +++ b/flash_decompiled/watchdog/biga/utils/PolygonUtils.as @@ -0,0 +1,105 @@ +package biga.utils { + import flash.geom.*; + import __AS3__.vec.*; + + public class PolygonUtils { + + public static function containsPoint(p:Point, points:Vector.):Boolean{ + return (contains(p.x, p.y, points)); + } + public static function contains(x:Number, y:Number, points:Vector.):Boolean{ + var i:int; + var p1:Point; + var p2:Point; + if ((((points == null)) || ((points.length == 0)))){ + return (false); + }; + var counter:int; + var xinters:Number = 0; + var p:Point = new Point(x, y); + var n:int = points.length; + p1 = points[0]; + i = 1; + while (i <= n) { + p2 = points[(i % n)]; + if (p.y > ((p1.y)p2.y) ? p1.y : p2.y){ + if (p.x <= ((p1.x)>p2.x) ? p1.x : p2.x){ + if (p1.y != p2.y){ + xinters = ((((p.y - p1.y) * (p2.x - p1.x)) / (p2.y - p1.y)) + p1.x); + if ((((p1.x == p2.x)) || ((p.x <= xinters)))){ + counter++; + }; + }; + }; + }; + }; + p1 = p2; + i++; + }; + if ((counter % 2) == 0){ + return (false); + }; + return (true); + } + public static function area(original:Vector.):Number{ + var i1:int; + var area:Number = 0; + var n:int = original.length; + var i:int; + while (i < n) { + i1 = ((i + 1) % n); + area = (area + (((original[i].y + original[i1].y) * (original[i1].x - original[i].x)) / 2)); + i++; + }; + return (area); + } + public static function convexHull(original:Vector.):Vector.{ + var bestAngle:Number; + var bestIndex:int; + var i:int; + var testPoint:Point; + var dx:Number; + var dy:Number; + var testAngle:Number; + if ((((original == null)) || ((original.length == 0)))){ + return (null); + }; + var points:Vector. = original.concat(); + points.sort(xSort); + var angle:Number = (Math.PI / 2); + var point:Point = points[0]; + var hull:Array = []; + while (point != hull[0]) { + hull.push(point); + bestAngle = Number.MAX_VALUE; + i = 0; + while (i < points.length) { + testPoint = (points[i] as Point); + if (testPoint == point){ + } else { + dx = (testPoint.x - point.x); + dy = (testPoint.y - point.y); + testAngle = Math.atan2(dy, dx); + testAngle = (testAngle - angle); + while (testAngle < 0) { + testAngle = (testAngle + (Math.PI * 2)); + }; + if (testAngle < bestAngle){ + bestAngle = testAngle; + bestIndex = i; + }; + }; + i++; + }; + point = points[bestIndex]; + angle = (angle + bestAngle); + }; + return (Vector.(hull)); + } + private static function xSort(a:Point, b:Point):Number{ + return ((((a.x < b.x)) ? -1 : 1)); + } + + } +}//package biga.utils diff --git a/flash_decompiled/watchdog/biga/utils/VectorUtils.as b/flash_decompiled/watchdog/biga/utils/VectorUtils.as new file mode 100644 index 0000000..784e858 --- /dev/null +++ b/flash_decompiled/watchdog/biga/utils/VectorUtils.as @@ -0,0 +1,430 @@ +package biga.utils { + import __AS3__.vec.*; + import flash.utils.*; + + public class VectorUtils { + + public static function backwardsAverageWindow(values:Vector., start:uint, valuesPerFrame:uint=0x0400, windowSize:uint=43):Vector.{ + var sum:Number; + var min:int; + var max:int; + var j:int; + if (windowSize == 1){ + return (values); + }; + var tmp:Vector. = new Vector.(valuesPerFrame); + var startPos:uint = Math.max(0, ((start * valuesPerFrame) - (valuesPerFrame * windowSize))); + var endPos:uint = Math.min((values.length - valuesPerFrame), (start * valuesPerFrame)); + var i:int = startPos; + while (i < endPos) { + j = 0; + while (j < valuesPerFrame) { + tmp[j] = (tmp[j] + (values[(i + j)] / windowSize)); + j++; + }; + i = (i + valuesPerFrame); + }; + return (tmp); + } + public static function byteArrayToVector(ba:ByteArray, minMax:Array=null):Vector.{ + var tmp:Vector. = new Vector.(); + ba.position = 0; + while (ba.bytesAvailable > 0) { + if (minMax == null){ + tmp.push(ba.readFloat()); + } else { + tmp.push(map(ba.readFloat(), -1, 1, minMax[0], minMax[1])); + }; + }; + ba.position = 0; + return (tmp); + } + public static function averageWindow(values:Vector., windowSize:uint):Vector.{ + var sum:Number; + var min:int; + var max:int; + var j:int; + if (windowSize == 1){ + return (values); + }; + var tmp:Vector. = values.concat(); + if ((windowSize % 2) == 0){ + windowSize++; + }; + var halfWindow:uint = ((windowSize - 1) / 2); + var i:int; + while (i < values.length) { + tmp[i] = 0; + min = Math.max(0, (i - halfWindow)); + max = Math.min((values.length - 1), (i + halfWindow)); + j = min; + while (j <= max) { + tmp[i] = (tmp[i] + (values[j] / windowSize)); + j++; + }; + i++; + }; + return (tmp); + } + public static function createBins(values:Vector., binSize:uint):Vector.>{ + var bin:Vector.; + var j:int; + var tmp:Vector.> = new Vector.>(); + var i:int; + while (i < (values.length / binSize)) { + bin = new Vector.(); + j = (i * binSize); + while (j < ((i + 1) * binSize)) { + if (j < values.length){ + bin.push(values[j]); + } else { + if (bin.length > 0){ + tmp.push(bin); + }; + return (tmp); + }; + j++; + }; + tmp.push(bin); + i++; + }; + return (tmp); + } + public static function toFixed(values:Vector., fixedValue:int=2):Vector.{ + var i:int; + while (i < values.length) { + values[i] = Number(values[i].toFixed(fixedValue)); + i++; + }; + return (values); + } + public static function sum(values:Vector.):Number{ + var n:Number; + var sum:Number = 0; + for each (n in values) { + sum = (sum + n); + }; + return (sum); + } + public static function rootMeanSquare(values:Vector.):Number{ + var n:Number; + var sum:Number = 0; + for each (n in values) { + sum = (sum + (n * n)); + }; + return (Math.sqrt((sum / values.length))); + } + public static function median(values:Vector.):Number{ + if (values.length == 0){ + return (NaN); + }; + values.sort(medianSort); + var mid:int = (values.length * 0.5); + if ((values.length % 2) == 1){ + return (values[mid]); + }; + return (((values[(mid - 1)] + values[mid]) * 0.5)); + } + private static function medianSort(a:Number, b:Number):Number{ + return ((a - b)); + } + public static function averageSum(values:Vector., length:Number=1):Vector.{ + var binSum:Number; + var bins:Vector.>; + var bin:Vector.; + var tmp:Vector. = new Vector.(); + if (length == 1){ + binSum = sum(values); + tmp.push((binSum / values.length)); + } else { + bins = createBins(values, length); + for each (bin in bins) { + binSum = sum(bin); + tmp.push((binSum / bin.length)); + }; + }; + return (tmp); + } + public static function averageRms(values:Vector., length:Number=1):Vector.{ + var binSum:Number; + var bins:Vector.>; + var bin:Vector.; + var tmp:Vector. = new Vector.(); + if (length == 1){ + binSum = rootMeanSquare(values); + tmp.push((binSum / values.length)); + } else { + bins = createBins(values, length); + for each (bin in bins) { + binSum = rootMeanSquare(bin); + tmp.push((binSum / bin.length)); + }; + }; + return (tmp); + } + public static function normallizeMinMax(values:Vector.):Vector.{ + var tmp:Vector. = new Vector.(); + var min:Number = Number.POSITIVE_INFINITY; + var max:Number = Number.NEGATIVE_INFINITY; + var i:int; + while (i < values.length) { + if (values[i] < min){ + min = values[i]; + }; + if (values[i] > max){ + max = values[i]; + }; + i++; + }; + i = 0; + while (i < values.length) { + tmp.push(map(values[i], min, max, 0, 1)); + i++; + }; + return (tmp); + } + public static function normallizeAbsolute(values:Vector.):Vector.{ + var tmp:Vector. = new Vector.(); + var sum:Number = 0; + var i:int; + while (i < values.length) { + sum = (sum + values[i]); + i++; + }; + var div:Number = (1 / sum); + i = 0; + while (i < values.length) { + tmp.push((values[i] * div)); + i++; + }; + return (tmp); + } + public static function localMaximum(values:Vector.):Vector.{ + var tmp:Vector. = new Vector.(); + var max:Number = max(values); + var div:Number = (1 / max); + var i:int; + while (i < values.length) { + tmp.push((values[i] * div)); + i++; + }; + return (tmp); + } + public static function max(values:Vector.):Number{ + var max:Number = Number.NEGATIVE_INFINITY; + var i:int; + while (i < values.length) { + if (values[i] > max){ + max = values[i]; + }; + i++; + }; + return (max); + } + public static function min(values:Vector.):Number{ + var min:Number = Number.POSITIVE_INFINITY; + var i:int; + while (i < values.length) { + if (values[i] < min){ + min = values[i]; + }; + i++; + }; + return (min); + } + public static function compress(values:Vector., length:uint):Vector.{ + var i:Number; + var diff:uint; + var tmp:Vector. = new Vector.(); + if (values.length == 1){ + i = length; + while (i--) { + tmp.push(values[0]); + }; + return (tmp); + }; + var inputLength:uint = (values.length - 2); + var outputLength:uint = (length - 2); + tmp.push(values[0]); + i = 0; + var j:int; + while (j < inputLength) { + diff = (((i + 1) * inputLength) - ((j + 1) * outputLength)); + if (diff < (inputLength / 2)){ + i++; + var _temp1 = j; + j = (j + 1); + tmp.push(values[_temp1]); + } else { + j++; + }; + }; + tmp.push(values[(inputLength + 1)]); + return (tmp); + } + public static function compress2D(u:Vector., v:Vector., length0:uint, length1:uint):Vector.{ + var j:int; + var _u:Vector. = compress(u, length0); + var _v:Vector. = compress(v, length1); + var tmp:Vector. = new Vector.(); + var i:int; + while (i < length0) { + j = 0; + while (j < length1) { + tmp.push(_u[i], _v[j]); + j++; + }; + i++; + }; + return (tmp); + } + public static function compress3D(u:Vector., v:Vector., w:Vector., length0:uint, length1:uint, length2:uint):Vector.{ + var j:int; + var k:int; + var _u:Vector. = compress(u, length0); + var _v:Vector. = compress(v, length1); + var _w:Vector. = compress(w, length2); + var tmp:Vector. = new Vector.(); + var i:int; + while (i < length0) { + j = 0; + while (j < length1) { + k = 0; + while (k < length2) { + tmp.push(_u[i], _v[j], _w[k]); + k++; + }; + j++; + }; + i++; + }; + return (tmp); + } + public static function expandColors(values:Vector., length:uint, loop:Boolean=false):Vector.{ + var i:Number; + var val0:Number; + var val1:Number; + var delta:Number; + var j:Number; + var tmp:Vector. = new Vector.(); + if (values.length == 1){ + i = length; + while (i--) { + tmp.push(values[0]); + }; + return (tmp); + }; + if (loop){ + values.push(values[0]); + }; + var step:Number = (1 / ((values.length - 1) / length)); + i = 0; + while (i < (length - 1)) { + val0 = values[int((i / step))]; + val1 = values[(int((i / step)) + 1)]; + delta = (((i + step))>length) ? (length - i) : step; + j = 0; + while (j < delta) { + tmp.push(((((0xFF << 24) | (lrp((j / delta), ((val0 >> 16) & 0xFF), ((val1 >> 16) & 0xFF)) << 16)) | (lrp((j / delta), ((val0 >> 8) & 0xFF), ((val1 >> 8) & 0xFF)) << 8)) | lrp((j / delta), (val0 & 0xFF), (val1 & 0xFF)))); + j++; + }; + i = (i + step); + }; + while (tmp.length < length) { + tmp.push(values[(values.length - 1)]); + }; + if (loop){ + values.pop(); + }; + return (tmp); + } + public static function expand(values:Vector., length:uint, lerp:Boolean=true):Vector.{ + var i:Number; + var id0:int; + var id1:int; + var _t:Number; + var delta:Number; + var tmp:Vector. = new Vector.(); + if (values.length == 1){ + i = length; + while (i--) { + tmp.push(values[0]); + }; + return (tmp); + }; + var step:Number = (1 / length); + tmp.push(values[0]); + var t:Number = step; + while (t < (1 - step)) { + if (lerp){ + id0 = int(((values.length - 1) * t)); + id1 = (id0 + 1); + delta = (1 / (values.length - 1)); + _t = ((t - (id0 * delta)) / delta); + tmp.push(lrp(_t, values[id0], values[id1])); + } else { + id0 = int((values.length * t)); + tmp.push(values[id0]); + }; + t = (t + step); + }; + tmp.push(values[(values.length - 1)]); + return (tmp); + } + public static function expand2D(u:Vector., v:Vector., length0:uint, length1:uint):Vector.{ + var j:int; + var _u:Vector. = expand(u, length0); + var _v:Vector. = expand(v, length1); + var tmp:Vector. = new Vector.(); + var i:int; + while (i < length0) { + j = 0; + while (j < length1) { + tmp.push(_u[i], _v[j]); + j++; + }; + i++; + }; + return (tmp); + } + public static function expand3D(u:Vector., v:Vector., w:Vector., length0:uint, length1:uint, length2:uint):Vector.{ + var j:int; + var k:int; + var _u:Vector. = expand(u, length0); + var _v:Vector. = expand(v, length1); + var _w:Vector. = expand(w, length2); + var tmp:Vector. = new Vector.(); + var i:int; + while (i < length0) { + j = 0; + while (j < length1) { + k = 0; + while (k < length2) { + tmp.push(_u[i], _v[j], _w[k]); + k++; + }; + j++; + }; + i++; + }; + return (tmp); + } + public static function nrm(t:Number, min:Number, max:Number):Number{ + return (((t - min) / (max - min))); + } + public static function lrp(t:Number, min:Number, max:Number):Number{ + return ((min + ((max - min) * t))); + } + public static function map(t:Number, mi0:Number, ma0:Number, mi1:Number, ma1:Number):Number{ + return (lrp(nrm(t, mi0, ma0), mi1, ma1)); + } + public static function interpolateColorsCompact(a:int, b:int, lerp:Number):int{ + var MASK1:int = 0xFF00FF; + var MASK2:int = 0xFF00; + var f2:int = (0x0100 * lerp); + var f1:int = (0x0100 - f2); + return (((((((a & MASK1) * f1) + ((b & MASK1) * f2)) >> 8) & MASK1) | (((((a & MASK2) * f1) + ((b & MASK2) * f2)) >> 8) & MASK2))); + } + + } +}//package biga.utils diff --git a/flash_decompiled/watchdog/com/adobe/images/PNGEncoder.as b/flash_decompiled/watchdog/com/adobe/images/PNGEncoder.as new file mode 100644 index 0000000..07409e9 --- /dev/null +++ b/flash_decompiled/watchdog/com/adobe/images/PNGEncoder.as @@ -0,0 +1,96 @@ +package com.adobe.images { + import flash.utils.*; + import flash.display.*; + import flash.geom.*; + + public class PNGEncoder { + + private static var crcTable:Array; + private static var crcTableComputed:Boolean = false; + + public static function encode(img:BitmapData):ByteArray{ + var p:uint; + var j:int; + var png:ByteArray = new ByteArray(); + png.writeUnsignedInt(2303741511); + png.writeUnsignedInt(218765834); + var IHDR:ByteArray = new ByteArray(); + IHDR.writeInt(img.width); + IHDR.writeInt(img.height); + IHDR.writeUnsignedInt(134610944); + IHDR.writeByte(0); + writeChunk(png, 1229472850, IHDR); + var IDAT:ByteArray = new ByteArray(); + var i:int; + while (i < img.height) { + IDAT.writeByte(0); + if (!(img.transparent)){ + j = 0; + while (j < img.width) { + p = img.getPixel(j, i); + IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | 0xFF))); + j++; + }; + } else { + j = 0; + while (j < img.width) { + p = img.getPixel32(j, i); + IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | (p >>> 24)))); + j++; + }; + }; + i++; + }; + IDAT.compress(); + writeChunk(png, 1229209940, IDAT); + writeChunk(png, 1229278788, null); + return (png); + } + private static function writeChunk(png:ByteArray, type:uint, data:ByteArray):void{ + var c:uint; + var n:uint; + var k:uint; + if (!(crcTableComputed)){ + crcTableComputed = true; + crcTable = []; + n = 0; + while (n < 0x0100) { + c = n; + k = 0; + while (k < 8) { + if ((c & 1)){ + c = uint((uint(3988292384) ^ uint((c >>> 1)))); + } else { + c = uint((c >>> 1)); + }; + k++; + }; + crcTable[n] = c; + n++; + }; + }; + var len:uint; + if (data != null){ + len = data.length; + }; + png.writeUnsignedInt(len); + var p:uint = png.position; + png.writeUnsignedInt(type); + if (data != null){ + png.writeBytes(data); + }; + var e:uint = png.position; + png.position = p; + c = 0xFFFFFFFF; + var i:int; + while (i < (e - p)) { + c = uint((crcTable[((c ^ png.readUnsignedByte()) & uint(0xFF))] ^ uint((c >>> 8)))); + i++; + }; + c = uint((c ^ uint(0xFFFFFFFF))); + png.position = e; + png.writeUnsignedInt(c); + } + + } +}//package com.adobe.images diff --git a/flash_decompiled/watchdog/com/adobe/utils/AGALMiniAssembler.as b/flash_decompiled/watchdog/com/adobe/utils/AGALMiniAssembler.as new file mode 100644 index 0000000..2b06908 --- /dev/null +++ b/flash_decompiled/watchdog/com/adobe/utils/AGALMiniAssembler.as @@ -0,0 +1,623 @@ +package com.adobe.utils { + import flash.utils.*; + + public class AGALMiniAssembler { + + private static const OPMAP:Dictionary = new Dictionary(); + private static const REGMAP:Dictionary = new Dictionary(); + private static const SAMPLEMAP:Dictionary = new Dictionary(); + private static const MAX_NESTING:int = 4; + private static const MAX_OPCODES:int = 0x0100; + private static const FRAGMENT:String = "fragment"; + private static const VERTEX:String = "vertex"; + private static const SAMPLER_DIM_SHIFT:uint = 12; + private static const SAMPLER_SPECIAL_SHIFT:uint = 16; + private static const SAMPLER_REPEAT_SHIFT:uint = 20; + private static const SAMPLER_MIPMAP_SHIFT:uint = 24; + private static const SAMPLER_FILTER_SHIFT:uint = 28; + private static const REG_WRITE:uint = 1; + private static const REG_READ:uint = 2; + private static const REG_FRAG:uint = 32; + private static const REG_VERT:uint = 64; + private static const OP_SCALAR:uint = 1; + private static const OP_INC_NEST:uint = 2; + private static const OP_DEC_NEST:uint = 4; + private static const OP_SPECIAL_TEX:uint = 8; + private static const OP_SPECIAL_MATRIX:uint = 16; + private static const OP_FRAG_ONLY:uint = 32; + private static const OP_NO_DEST:uint = 128; + private static const MOV:String = "mov"; + private static const ADD:String = "add"; + private static const SUB:String = "sub"; + private static const MUL:String = "mul"; + private static const DIV:String = "div"; + private static const RCP:String = "rcp"; + private static const MIN:String = "min"; + private static const MAX:String = "max"; + private static const FRC:String = "frc"; + private static const SQT:String = "sqt"; + private static const RSQ:String = "rsq"; + private static const POW:String = "pow"; + private static const LOG:String = "log"; + private static const EXP:String = "exp"; + private static const NRM:String = "nrm"; + private static const SIN:String = "sin"; + private static const COS:String = "cos"; + private static const CRS:String = "crs"; + private static const DP3:String = "dp3"; + private static const DP4:String = "dp4"; + private static const ABS:String = "abs"; + private static const NEG:String = "neg"; + private static const SAT:String = "sat"; + private static const M33:String = "m33"; + private static const M44:String = "m44"; + private static const M34:String = "m34"; + private static const IFZ:String = "ifz"; + private static const INZ:String = "inz"; + private static const IFE:String = "ife"; + private static const INE:String = "ine"; + private static const IFG:String = "ifg"; + private static const IFL:String = "ifl"; + private static const IEG:String = "ieg"; + private static const IEL:String = "iel"; + private static const ELS:String = "els"; + private static const EIF:String = "eif"; + private static const REP:String = "rep"; + private static const ERP:String = "erp"; + private static const BRK:String = "brk"; + private static const KIL:String = "kil"; + private static const TEX:String = "tex"; + private static const SGE:String = "sge"; + private static const SLT:String = "slt"; + private static const SGN:String = "sgn"; + private static const VA:String = "va"; + private static const VC:String = "vc"; + private static const VT:String = "vt"; + private static const OP:String = "op"; + private static const V:String = "v"; + private static const FC:String = "fc"; + private static const FT:String = "ft"; + private static const FS:String = "fs"; + private static const OC:String = "oc"; + private static const D2:String = "2d"; + private static const D3:String = "3d"; + private static const CUBE:String = "cube"; + private static const MIPNEAREST:String = "mipnearest"; + private static const MIPLINEAR:String = "miplinear"; + private static const MIPNONE:String = "mipnone"; + private static const NOMIP:String = "nomip"; + private static const NEAREST:String = "nearest"; + private static const LINEAR:String = "linear"; + private static const CENTROID:String = "centroid"; + private static const SINGLE:String = "single"; + private static const DEPTH:String = "depth"; + private static const REPEAT:String = "repeat"; + private static const WRAP:String = "wrap"; + private static const CLAMP:String = "clamp"; + + private static var initialized:Boolean = false; + + private var _agalcode:ByteArray = null; + private var _error:String = ""; + private var debugEnabled:Boolean = false; + + public function AGALMiniAssembler(debugging:Boolean=false):void{ + super(); + this.debugEnabled = debugging; + if (!(initialized)){ + init(); + }; + } + private static function init():void{ + initialized = true; + OPMAP[MOV] = new OpCode(MOV, 2, 0, 0); + OPMAP[ADD] = new OpCode(ADD, 3, 1, 0); + OPMAP[SUB] = new OpCode(SUB, 3, 2, 0); + OPMAP[MUL] = new OpCode(MUL, 3, 3, 0); + OPMAP[DIV] = new OpCode(DIV, 3, 4, 0); + OPMAP[RCP] = new OpCode(RCP, 2, 5, 0); + OPMAP[MIN] = new OpCode(MIN, 3, 6, 0); + OPMAP[MAX] = new OpCode(MAX, 3, 7, 0); + OPMAP[FRC] = new OpCode(FRC, 2, 8, 0); + OPMAP[SQT] = new OpCode(SQT, 2, 9, 0); + OPMAP[RSQ] = new OpCode(RSQ, 2, 10, 0); + OPMAP[POW] = new OpCode(POW, 3, 11, 0); + OPMAP[LOG] = new OpCode(LOG, 2, 12, 0); + OPMAP[EXP] = new OpCode(EXP, 2, 13, 0); + OPMAP[NRM] = new OpCode(NRM, 2, 14, 0); + OPMAP[SIN] = new OpCode(SIN, 2, 15, 0); + OPMAP[COS] = new OpCode(COS, 2, 16, 0); + OPMAP[CRS] = new OpCode(CRS, 3, 17, 0); + OPMAP[DP3] = new OpCode(DP3, 3, 18, 0); + OPMAP[DP4] = new OpCode(DP4, 3, 19, 0); + OPMAP[ABS] = new OpCode(ABS, 2, 20, 0); + OPMAP[NEG] = new OpCode(NEG, 2, 21, 0); + OPMAP[SAT] = new OpCode(SAT, 2, 22, 0); + OPMAP[M33] = new OpCode(M33, 3, 23, OP_SPECIAL_MATRIX); + OPMAP[M44] = new OpCode(M44, 3, 24, OP_SPECIAL_MATRIX); + OPMAP[M34] = new OpCode(M34, 3, 25, OP_SPECIAL_MATRIX); + OPMAP[IFZ] = new OpCode(IFZ, 1, 26, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[INZ] = new OpCode(INZ, 1, 27, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[IFE] = new OpCode(IFE, 2, 28, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[INE] = new OpCode(INE, 2, 29, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[IFG] = new OpCode(IFG, 2, 30, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[IFL] = new OpCode(IFL, 2, 31, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[IEG] = new OpCode(IEG, 2, 32, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[IEL] = new OpCode(IEL, 2, 33, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[ELS] = new OpCode(ELS, 0, 34, ((OP_NO_DEST | OP_INC_NEST) | OP_DEC_NEST)); + OPMAP[EIF] = new OpCode(EIF, 0, 35, (OP_NO_DEST | OP_DEC_NEST)); + OPMAP[REP] = new OpCode(REP, 1, 36, ((OP_NO_DEST | OP_INC_NEST) | OP_SCALAR)); + OPMAP[ERP] = new OpCode(ERP, 0, 37, (OP_NO_DEST | OP_DEC_NEST)); + OPMAP[BRK] = new OpCode(BRK, 0, 38, OP_NO_DEST); + OPMAP[KIL] = new OpCode(KIL, 1, 39, (OP_NO_DEST | OP_FRAG_ONLY)); + OPMAP[TEX] = new OpCode(TEX, 3, 40, (OP_FRAG_ONLY | OP_SPECIAL_TEX)); + OPMAP[SGE] = new OpCode(SGE, 3, 41, 0); + OPMAP[SLT] = new OpCode(SLT, 3, 42, 0); + OPMAP[SGN] = new OpCode(SGN, 2, 43, 0); + REGMAP[VA] = new Register(VA, "vertex attribute", 0, 7, (REG_VERT | REG_READ)); + REGMAP[VC] = new Register(VC, "vertex constant", 1, 127, (REG_VERT | REG_READ)); + REGMAP[VT] = new Register(VT, "vertex temporary", 2, 7, ((REG_VERT | REG_WRITE) | REG_READ)); + REGMAP[OP] = new Register(OP, "vertex output", 3, 0, (REG_VERT | REG_WRITE)); + REGMAP[V] = new Register(V, "varying", 4, 7, (((REG_VERT | REG_FRAG) | REG_READ) | REG_WRITE)); + REGMAP[FC] = new Register(FC, "fragment constant", 1, 27, (REG_FRAG | REG_READ)); + REGMAP[FT] = new Register(FT, "fragment temporary", 2, 7, ((REG_FRAG | REG_WRITE) | REG_READ)); + REGMAP[FS] = new Register(FS, "texture sampler", 5, 7, (REG_FRAG | REG_READ)); + REGMAP[OC] = new Register(OC, "fragment output", 3, 0, (REG_FRAG | REG_WRITE)); + SAMPLEMAP[D2] = new Sampler(D2, SAMPLER_DIM_SHIFT, 0); + SAMPLEMAP[D3] = new Sampler(D3, SAMPLER_DIM_SHIFT, 2); + SAMPLEMAP[CUBE] = new Sampler(CUBE, SAMPLER_DIM_SHIFT, 1); + SAMPLEMAP[MIPNEAREST] = new Sampler(MIPNEAREST, SAMPLER_MIPMAP_SHIFT, 1); + SAMPLEMAP[MIPLINEAR] = new Sampler(MIPLINEAR, SAMPLER_MIPMAP_SHIFT, 2); + SAMPLEMAP[MIPNONE] = new Sampler(MIPNONE, SAMPLER_MIPMAP_SHIFT, 0); + SAMPLEMAP[NOMIP] = new Sampler(NOMIP, SAMPLER_MIPMAP_SHIFT, 0); + SAMPLEMAP[NEAREST] = new Sampler(NEAREST, SAMPLER_FILTER_SHIFT, 0); + SAMPLEMAP[LINEAR] = new Sampler(LINEAR, SAMPLER_FILTER_SHIFT, 1); + SAMPLEMAP[CENTROID] = new Sampler(CENTROID, SAMPLER_SPECIAL_SHIFT, (1 << 0)); + SAMPLEMAP[SINGLE] = new Sampler(SINGLE, SAMPLER_SPECIAL_SHIFT, (1 << 1)); + SAMPLEMAP[DEPTH] = new Sampler(DEPTH, SAMPLER_SPECIAL_SHIFT, (1 << 2)); + SAMPLEMAP[REPEAT] = new Sampler(REPEAT, SAMPLER_REPEAT_SHIFT, 1); + SAMPLEMAP[WRAP] = new Sampler(WRAP, SAMPLER_REPEAT_SHIFT, 1); + SAMPLEMAP[CLAMP] = new Sampler(CLAMP, SAMPLER_REPEAT_SHIFT, 0); + } + + public function get error():String{ + return (this._error); + } + public function get agalcode():ByteArray{ + return (this._agalcode); + } + public function assemble(mode:String, source:String, verbose:Boolean=false):ByteArray{ + var i:int; + var line:String; + var startcomment:int; + var optsi:int; + var opts:Array; + var opCode:Array; + var opFound:OpCode; + var regs:Array; + var badreg:Boolean; + var pad:uint; + var regLength:uint; + var j:int; + var isRelative:Boolean; + var relreg:Array; + var res:Array; + var regFound:Register; + var idxmatch:Array; + var regidx:uint; + var regmask:uint; + var maskmatch:Array; + var isDest:Boolean; + var isSampler:Boolean; + var reltype:uint; + var relsel:uint; + var reloffset:int; + var cv:uint; + var maskLength:uint; + var k:int; + var relname:Array; + var regFoundRel:Register; + var selmatch:Array; + var relofs:Array; + var samplerbits:uint; + var optsLength:uint; + var bias:Number; + var optfound:Sampler; + var dbgLine:String; + var agalLength:uint; + var index:uint; + var byteStr:String; + var start:uint = getTimer(); + this._agalcode = new ByteArray(); + this._error = ""; + var isFrag:Boolean; + if (mode == FRAGMENT){ + isFrag = true; + } else { + if (mode != VERTEX){ + this._error = (((((("ERROR: mode needs to be \"" + FRAGMENT) + "\" or \"") + VERTEX) + "\" but is \"") + mode) + "\"."); + }; + }; + this.agalcode.endian = Endian.LITTLE_ENDIAN; + this.agalcode.writeByte(160); + this.agalcode.writeUnsignedInt(1); + this.agalcode.writeByte(161); + this.agalcode.writeByte(((isFrag) ? 1 : 0)); + var lines:Array = source.replace(/[\f\n\r\v]+/g, "\n").split("\n"); + var nest:int; + var nops:int; + var lng:int = lines.length; + i = 0; + while ((((i < lng)) && ((this._error == "")))) { + line = new String(lines[i]); + startcomment = line.search("//"); + if (startcomment != -1){ + line = line.slice(0, startcomment); + }; + optsi = line.search(/<.*>/g); + if (optsi != -1){ + opts = line.slice(optsi).match(/([\w\.\-\+]+)/gi); + line = line.slice(0, optsi); + }; + opCode = line.match(/^\w{3}/ig); + opFound = OPMAP[opCode[0]]; + if (this.debugEnabled){ + trace(opFound); + }; + if (opFound == null){ + if (line.length >= 3){ + trace(((("warning: bad line " + i) + ": ") + lines[i])); + }; + } else { + line = line.slice((line.search(opFound.name) + opFound.name.length)); + if ((opFound.flags & OP_DEC_NEST)){ + nest--; + if (nest < 0){ + this._error = "error: conditional closes without open."; + break; + }; + }; + if ((opFound.flags & OP_INC_NEST)){ + nest++; + if (nest > MAX_NESTING){ + this._error = (("error: nesting to deep, maximum allowed is " + MAX_NESTING) + "."); + break; + }; + }; + if ((((opFound.flags & OP_FRAG_ONLY)) && (!(isFrag)))){ + this._error = "error: opcode is only allowed in fragment programs."; + break; + }; + if (verbose){ + trace(("emit opcode=" + opFound)); + }; + this.agalcode.writeUnsignedInt(opFound.emitCode); + nops++; + if (nops > MAX_OPCODES){ + this._error = (("error: too many opcodes. maximum is " + MAX_OPCODES) + "."); + break; + }; + regs = line.match(/vc\[([vof][actps]?)(\d*)?(\.[xyzw](\+\d{1,3})?)?\](\.[xyzw]{1,4})?|([vof][actps]?)(\d*)?(\.[xyzw]{1,4})?/gi); + if (regs.length != opFound.numRegister){ + this._error = (((("error: wrong number of operands. found " + regs.length) + " but expected ") + opFound.numRegister) + "."); + break; + }; + badreg = false; + pad = ((64 + 64) + 32); + regLength = regs.length; + j = 0; + while (j < regLength) { + isRelative = false; + relreg = regs[j].match(/\[.*\]/ig); + if (relreg.length > 0){ + regs[j] = regs[j].replace(relreg[0], "0"); + if (verbose){ + trace("IS REL"); + }; + isRelative = true; + }; + res = regs[j].match(/^\b[A-Za-z]{1,2}/ig); + regFound = REGMAP[res[0]]; + if (this.debugEnabled){ + trace(regFound); + }; + if (regFound == null){ + this._error = (((("error: could not parse operand " + j) + " (") + regs[j]) + ")."); + badreg = true; + break; + }; + if (isFrag){ + if (!((regFound.flags & REG_FRAG))){ + this._error = (((("error: register operand " + j) + " (") + regs[j]) + ") only allowed in vertex programs."); + badreg = true; + break; + }; + if (isRelative){ + this._error = (((("error: register operand " + j) + " (") + regs[j]) + ") relative adressing not allowed in fragment programs."); + badreg = true; + break; + }; + } else { + if (!((regFound.flags & REG_VERT))){ + this._error = (((("error: register operand " + j) + " (") + regs[j]) + ") only allowed in fragment programs."); + badreg = true; + break; + }; + }; + regs[j] = regs[j].slice((regs[j].search(regFound.name) + regFound.name.length)); + idxmatch = ((isRelative) ? relreg[0].match(/\d+/) : regs[j].match(/\d+/)); + regidx = 0; + if (idxmatch){ + regidx = uint(idxmatch[0]); + }; + if (regFound.range < regidx){ + this._error = (((((("error: register operand " + j) + " (") + regs[j]) + ") index exceeds limit of ") + (regFound.range + 1)) + "."); + badreg = true; + break; + }; + regmask = 0; + maskmatch = regs[j].match(/(\.[xyzw]{1,4})/); + isDest = (((j == 0)) && (!((opFound.flags & OP_NO_DEST)))); + isSampler = (((j == 2)) && ((opFound.flags & OP_SPECIAL_TEX))); + reltype = 0; + relsel = 0; + reloffset = 0; + if (((isDest) && (isRelative))){ + this._error = "error: relative can not be destination"; + badreg = true; + break; + }; + if (maskmatch){ + regmask = 0; + maskLength = maskmatch[0].length; + k = 1; + while (k < maskLength) { + cv = (maskmatch[0].charCodeAt(k) - "x".charCodeAt(0)); + if (cv > 2){ + cv = 3; + }; + if (isDest){ + regmask = (regmask | (1 << cv)); + } else { + regmask = (regmask | (cv << ((k - 1) << 1))); + }; + k++; + }; + if (!(isDest)){ + while (k <= 4) { + regmask = (regmask | (cv << ((k - 1) << 1))); + k++; + }; + }; + } else { + regmask = ((isDest) ? 15 : 228); + }; + if (isRelative){ + relname = relreg[0].match(/[A-Za-z]{1,2}/ig); + regFoundRel = REGMAP[relname[0]]; + if (regFoundRel == null){ + this._error = "error: bad index register"; + badreg = true; + break; + }; + reltype = regFoundRel.emitCode; + selmatch = relreg[0].match(/(\.[xyzw]{1,1})/); + if (selmatch.length == 0){ + this._error = "error: bad index register select"; + badreg = true; + break; + }; + relsel = (selmatch[0].charCodeAt(1) - "x".charCodeAt(0)); + if (relsel > 2){ + relsel = 3; + }; + relofs = relreg[0].match(/\+\d{1,3}/ig); + if (relofs.length > 0){ + reloffset = relofs[0]; + }; + if ((((reloffset < 0)) || ((reloffset > 0xFF)))){ + this._error = (("error: index offset " + reloffset) + " out of bounds. [0..255]"); + badreg = true; + break; + }; + if (verbose){ + trace(((((((((((("RELATIVE: type=" + reltype) + "==") + relname[0]) + " sel=") + relsel) + "==") + selmatch[0]) + " idx=") + regidx) + " offset=") + reloffset)); + }; + }; + if (verbose){ + trace(((((((" emit argcode=" + regFound) + "[") + regidx) + "][") + regmask) + "]")); + }; + if (isDest){ + this.agalcode.writeShort(regidx); + this.agalcode.writeByte(regmask); + this.agalcode.writeByte(regFound.emitCode); + pad = (pad - 32); + } else { + if (isSampler){ + if (verbose){ + trace(" emit sampler"); + }; + samplerbits = 5; + optsLength = opts.length; + bias = 0; + k = 0; + while (k < optsLength) { + if (verbose){ + trace((" opt: " + opts[k])); + }; + optfound = SAMPLEMAP[opts[k]]; + if (optfound == null){ + bias = Number(opts[k]); + if (verbose){ + trace((" bias: " + bias)); + }; + } else { + if (optfound.flag != SAMPLER_SPECIAL_SHIFT){ + samplerbits = (samplerbits & ~((15 << optfound.flag))); + }; + samplerbits = (samplerbits | (uint(optfound.mask) << uint(optfound.flag))); + }; + k++; + }; + this.agalcode.writeShort(regidx); + this.agalcode.writeByte(int((bias * 8))); + this.agalcode.writeByte(0); + this.agalcode.writeUnsignedInt(samplerbits); + if (verbose){ + trace((" bits: " + (samplerbits - 5))); + }; + pad = (pad - 64); + } else { + if (j == 0){ + this.agalcode.writeUnsignedInt(0); + pad = (pad - 32); + }; + this.agalcode.writeShort(regidx); + this.agalcode.writeByte(reloffset); + this.agalcode.writeByte(regmask); + this.agalcode.writeByte(regFound.emitCode); + this.agalcode.writeByte(reltype); + this.agalcode.writeShort(((isRelative) ? (relsel | (1 << 15)) : 0)); + pad = (pad - 64); + }; + }; + j++; + }; + j = 0; + while (j < pad) { + this.agalcode.writeByte(0); + j = (j + 8); + }; + if (badreg){ + break; + }; + }; + i++; + }; + if (this._error != ""){ + this._error = (this._error + ((("\n at line " + i) + " ") + lines[i])); + this.agalcode.length = 0; + trace(this._error); + }; + if (this.debugEnabled){ + dbgLine = "generated bytecode:"; + agalLength = this.agalcode.length; + index = 0; + while (index < agalLength) { + if (!((index % 16))){ + dbgLine = (dbgLine + "\n"); + }; + if (!((index % 4))){ + dbgLine = (dbgLine + " "); + }; + byteStr = this.agalcode[index].toString(16); + if (byteStr.length < 2){ + byteStr = ("0" + byteStr); + }; + dbgLine = (dbgLine + byteStr); + index++; + }; + trace(dbgLine); + }; + if (verbose){ + trace((("AGALMiniAssembler.assemble time: " + ((getTimer() - start) / 1000)) + "s")); + }; + return (this.agalcode); + } + + } +}//package com.adobe.utils + +class OpCode { + + private var _emitCode:uint; + private var _flags:uint; + private var _name:String; + private var _numRegister:uint; + + public function OpCode(name:String, numRegister:uint, emitCode:uint, flags:uint){ + super(); + this._name = name; + this._numRegister = numRegister; + this._emitCode = emitCode; + this._flags = flags; + } + public function get emitCode():uint{ + return (this._emitCode); + } + public function get flags():uint{ + return (this._flags); + } + public function get name():String{ + return (this._name); + } + public function get numRegister():uint{ + return (this._numRegister); + } + public function toString():String{ + return ((((((((("[OpCode name=\"" + this._name) + "\", numRegister=") + this._numRegister) + ", emitCode=") + this._emitCode) + ", flags=") + this._flags) + "]")); + } + +} +class Register { + + private var _emitCode:uint; + private var _name:String; + private var _longName:String; + private var _flags:uint; + private var _range:uint; + + public function Register(name:String, longName:String, emitCode:uint, range:uint, flags:uint){ + super(); + this._name = name; + this._longName = longName; + this._emitCode = emitCode; + this._range = range; + this._flags = flags; + } + public function get emitCode():uint{ + return (this._emitCode); + } + public function get longName():String{ + return (this._longName); + } + public function get name():String{ + return (this._name); + } + public function get flags():uint{ + return (this._flags); + } + public function get range():uint{ + return (this._range); + } + public function toString():String{ + return ((((((((((("[Register name=\"" + this._name) + "\", longName=\"") + this._longName) + "\", emitCode=") + this._emitCode) + ", range=") + this._range) + ", flags=") + this._flags) + "]")); + } + +} +class Sampler { + + private var _flag:uint; + private var _mask:uint; + private var _name:String; + + public function Sampler(name:String, flag:uint, mask:uint){ + super(); + this._name = name; + this._flag = flag; + this._mask = mask; + } + public function get flag():uint{ + return (this._flag); + } + public function get mask():uint{ + return (this._mask); + } + public function get name():String{ + return (this._name); + } + public function toString():String{ + return ((((((("[Sampler name=\"" + this._name) + "\", flag=\"") + this._flag) + "\", mask=") + this.mask) + "]")); + } + +} diff --git a/flash_decompiled/watchdog/com/facebook/graph/Facebook.as b/flash_decompiled/watchdog/com/facebook/graph/Facebook.as new file mode 100644 index 0000000..de79878 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/Facebook.as @@ -0,0 +1,306 @@ +package com.facebook.graph { + import flash.net.*; + import com.facebook.graph.core.*; + import com.facebook.graph.net.*; + import com.facebook.graph.data.*; + import com.facebook.graph.utils.*; + import flash.utils.*; + import flash.external.*; + import com.json2.*; + + public class Facebook extends AbstractFacebook { + + protected static var _instance:Facebook; + protected static var _canInit:Boolean = false; + + protected var jsCallbacks:Object; + protected var openUICalls:Dictionary; + protected var jsBridge:FacebookJSBridge; + protected var applicationId:String; + protected var _initCallback:Function; + protected var _loginCallback:Function; + protected var _logoutCallback:Function; + + public function Facebook(){ + super(); + if (_canInit == false){ + throw (new Error("Facebook is an singleton and cannot be instantiated.")); + }; + this.jsBridge = new FacebookJSBridge(); + this.jsCallbacks = {}; + this.openUICalls = new Dictionary(); + } + public static function init(applicationId:String, callback:Function=null, options:Object=null, accessToken:String=null):void{ + getInstance().init(applicationId, callback, options, accessToken); + } + public static function set locale(value:String):void{ + getInstance().locale = value; + } + public static function login(callback:Function, options:Object=null):void{ + getInstance().login(callback, options); + } + public static function mobileLogin(redirectUri:String, display:String="touch", extendedPermissions:Array=null):void{ + var data:URLVariables = new URLVariables(); + data.client_id = getInstance().applicationId; + data.redirect_uri = redirectUri; + data.display = display; + if (extendedPermissions != null){ + data.scope = extendedPermissions.join(","); + }; + var req:URLRequest = new URLRequest(FacebookURLDefaults.AUTH_URL); + req.method = URLRequestMethod.GET; + req.data = data; + navigateToURL(req, "_self"); + } + public static function mobileLogout(redirectUri:String):void{ + getInstance().authResponse = null; + var data:URLVariables = new URLVariables(); + data.confirm = 1; + data.next = redirectUri; + var req:URLRequest = new URLRequest("http://m.facebook.com/logout.php"); + req.method = URLRequestMethod.GET; + req.data = data; + navigateToURL(req, "_self"); + } + public static function logout(callback:Function):void{ + getInstance().logout(callback); + } + public static function ui(method:String, data:Object, callback:Function=null, display:String=null):void{ + getInstance().ui(method, data, callback, display); + } + public static function api(method:String, callback:Function=null, params=null, requestMethod:String="GET"):void{ + getInstance().api(method, callback, params, requestMethod); + } + public static function getRawResult(data:Object):Object{ + return (getInstance().getRawResult(data)); + } + public static function hasNext(data:Object):Boolean{ + var result:Object = getInstance().getRawResult(data); + if (!(result.paging)){ + return (false); + }; + return (!((result.paging.next == null))); + } + public static function hasPrevious(data:Object):Boolean{ + var result:Object = getInstance().getRawResult(data); + if (!(result.paging)){ + return (false); + }; + return (!((result.paging.previous == null))); + } + public static function nextPage(data:Object, callback:Function):FacebookRequest{ + return (getInstance().nextPage(data, callback)); + } + public static function previousPage(data:Object, callback:Function):FacebookRequest{ + return (getInstance().previousPage(data, callback)); + } + public static function postData(method:String, callback:Function=null, params:Object=null):void{ + api(method, callback, params, URLRequestMethod.POST); + } + public static function uploadVideo(method:String, callback:Function=null, params=null):void{ + getInstance().uploadVideo(method, callback, params); + } + public static function fqlQuery(query:String, callback:Function=null, values:Object=null):void{ + getInstance().fqlQuery(query, callback, values); + } + public static function fqlMultiQuery(queries:FQLMultiQuery, callback:Function=null, parser:IResultParser=null):void{ + getInstance().fqlMultiQuery(queries, callback, parser); + } + public static function batchRequest(batch:Batch, callback:Function=null):void{ + getInstance().batchRequest(batch, callback); + } + public static function callRestAPI(methodName:String, callback:Function, values=null, requestMethod:String="GET"):void{ + getInstance().callRestAPI(methodName, callback, values, requestMethod); + } + public static function getImageUrl(id:String, type:String=null):String{ + return (getInstance().getImageUrl(id, type)); + } + public static function deleteObject(method:String, callback:Function=null):void{ + getInstance().deleteObject(method, callback); + } + public static function addJSEventListener(event:String, listener:Function):void{ + getInstance().addJSEventListener(event, listener); + } + public static function removeJSEventListener(event:String, listener:Function):void{ + getInstance().removeJSEventListener(event, listener); + } + public static function hasJSEventListener(event:String, listener:Function):Boolean{ + return (getInstance().hasJSEventListener(event, listener)); + } + public static function setCanvasAutoResize(autoSize:Boolean=true, interval:uint=100):void{ + getInstance().setCanvasAutoResize(autoSize, interval); + } + public static function setCanvasSize(width:Number, height:Number):void{ + getInstance().setCanvasSize(width, height); + } + public static function callJS(methodName:String, params:Object):void{ + getInstance().callJS(methodName, params); + } + public static function getAuthResponse():FacebookAuthResponse{ + return (getInstance().getAuthResponse()); + } + public static function getLoginStatus():void{ + getInstance().getLoginStatus(); + } + protected static function getInstance():Facebook{ + if (_instance == null){ + _canInit = true; + _instance = new (Facebook)(); + _canInit = false; + }; + return (_instance); + } + + protected function init(applicationId:String, callback:Function=null, options:Object=null, accessToken:String=null):void{ + ExternalInterface.addCallback("handleJsEvent", this.handleJSEvent); + ExternalInterface.addCallback("authResponseChange", this.handleAuthResponseChange); + ExternalInterface.addCallback("logout", this.handleLogout); + ExternalInterface.addCallback("uiResponse", this.handleUI); + this._initCallback = callback; + this.applicationId = applicationId; + this.oauth2 = true; + if (options == null){ + options = {}; + }; + options.appId = applicationId; + options.oauth = true; + ExternalInterface.call("FBAS.init", JSON2.encode(options)); + if (accessToken != null){ + authResponse = new FacebookAuthResponse(); + authResponse.accessToken = accessToken; + }; + if (options.status !== false){ + this.getLoginStatus(); + } else { + if (this._initCallback != null){ + this._initCallback(authResponse, null); + this._initCallback = null; + }; + }; + } + protected function getLoginStatus():void{ + ExternalInterface.call("FBAS.getLoginStatus"); + } + protected function callJS(methodName:String, params:Object):void{ + ExternalInterface.call(methodName, params); + } + protected function setCanvasSize(width:Number, height:Number):void{ + ExternalInterface.call("FBAS.setCanvasSize", width, height); + } + protected function setCanvasAutoResize(autoSize:Boolean=true, interval:uint=100):void{ + ExternalInterface.call("FBAS.setCanvasAutoResize", autoSize, interval); + } + protected function login(callback:Function, options:Object=null):void{ + this._loginCallback = callback; + ExternalInterface.call("FBAS.login", JSON2.encode(options)); + } + protected function logout(callback:Function):void{ + this._logoutCallback = callback; + ExternalInterface.call("FBAS.logout"); + } + protected function getAuthResponse():FacebookAuthResponse{ + var authResponseObj:* = null; + var result:* = ExternalInterface.call("FBAS.getAuthResponse"); + try { + authResponseObj = JSON2.decode(result); + } catch(e) { + return (null); + }; + var a:* = new FacebookAuthResponse(); + a.fromJSON(authResponseObj); + this.authResponse = a; + return (authResponse); + } + protected function ui(method:String, data:Object, callback:Function=null, display:String=null):void{ + data.method = method; + if (callback != null){ + this.openUICalls[method] = callback; + }; + if (display){ + data.display = display; + }; + ExternalInterface.call("FBAS.ui", JSON2.encode(data)); + } + protected function addJSEventListener(event:String, listener:Function):void{ + if (this.jsCallbacks[event] == null){ + this.jsCallbacks[event] = new Dictionary(); + ExternalInterface.call("FBAS.addEventListener", event); + }; + this.jsCallbacks[event][listener] = null; + } + protected function removeJSEventListener(event:String, listener:Function):void{ + if (this.jsCallbacks[event] == null){ + return; + }; + delete this.jsCallbacks[event][listener]; + } + protected function hasJSEventListener(event:String, listener:Function):Boolean{ + if ((((this.jsCallbacks[event] == null)) || (!((this.jsCallbacks[event][listener] === null))))){ + return (false); + }; + return (true); + } + protected function handleUI(result:String, method:String):void{ + var decodedResult:Object = ((result) ? JSON2.decode(result) : null); + var uiCallback:Function = this.openUICalls[method]; + if (uiCallback === null){ + delete this.openUICalls[method]; + } else { + uiCallback(decodedResult); + delete this.openUICalls[method]; + }; + } + protected function handleLogout():void{ + authResponse = null; + if (this._logoutCallback != null){ + this._logoutCallback(true); + this._logoutCallback = null; + }; + } + protected function handleJSEvent(event:String, result:String=null):void{ + var decodedResult:Object; + var func:Object; + if (this.jsCallbacks[event] != null){ + try { + decodedResult = JSON2.decode(result); + } catch(e:JSONParseError) { + }; + for (func in this.jsCallbacks[event]) { + (func as Function)(decodedResult); + delete this.jsCallbacks[event][func]; + }; + }; + } + protected function handleAuthResponseChange(result:String):void{ + var resultObj:* = null; + var result:* = result; + var success:* = true; + if (result != null){ + try { + resultObj = JSON2.decode(result); + } catch(e:JSONParseError) { + success = false; + }; + } else { + success = false; + }; + if (success){ + if (authResponse == null){ + authResponse = new FacebookAuthResponse(); + authResponse.fromJSON(resultObj); + } else { + authResponse.fromJSON(resultObj); + }; + }; + if (this._initCallback != null){ + this._initCallback(authResponse, null); + this._initCallback = null; + }; + if (this._loginCallback != null){ + this._loginCallback(authResponse, null); + this._loginCallback = null; + }; + } + + } +}//package com.facebook.graph diff --git a/flash_decompiled/watchdog/com/facebook/graph/core/AbstractFacebook.as b/flash_decompiled/watchdog/com/facebook/graph/core/AbstractFacebook.as new file mode 100644 index 0000000..016309f --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/core/AbstractFacebook.as @@ -0,0 +1,173 @@ +package com.facebook.graph.core { + import flash.utils.*; + import com.facebook.graph.net.*; + import com.facebook.graph.utils.*; + import com.facebook.graph.data.*; + import flash.net.*; + + public class AbstractFacebook { + + protected var session:FacebookSession; + protected var authResponse:FacebookAuthResponse; + protected var oauth2:Boolean; + protected var openRequests:Dictionary; + protected var resultHash:Dictionary; + protected var locale:String; + protected var parserHash:Dictionary; + + public function AbstractFacebook():void{ + super(); + this.openRequests = new Dictionary(); + this.resultHash = new Dictionary(true); + this.parserHash = new Dictionary(); + } + protected function get accessToken():String{ + if (((((this.oauth2) && (!((this.authResponse == null))))) || (!((this.session == null))))){ + return (((this.oauth2) ? this.authResponse.accessToken : this.session.accessToken)); + }; + return (null); + } + protected function api(method:String, callback:Function=null, params=null, requestMethod:String="GET"):void{ + method = ((method.indexOf("/"))!=0) ? ("/" + method) : method; + if (this.accessToken){ + if (params == null){ + params = {}; + }; + if (params.access_token == null){ + params.access_token = this.accessToken; + }; + }; + var req:FacebookRequest = new FacebookRequest(); + if (this.locale){ + params.locale = this.locale; + }; + this.openRequests[req] = callback; + req.call((FacebookURLDefaults.GRAPH_URL + method), requestMethod, this.handleRequestLoad, params); + } + protected function uploadVideo(method:String, callback:Function=null, params=null):void{ + method = ((method.indexOf("/"))!=0) ? ("/" + method) : method; + if (this.accessToken){ + if (params == null){ + params = {}; + }; + if (params.access_token == null){ + params.access_token = this.accessToken; + }; + }; + var req:FacebookRequest = new FacebookRequest(); + if (this.locale){ + params.locale = this.locale; + }; + this.openRequests[req] = callback; + req.call((FacebookURLDefaults.VIDEO_URL + method), "POST", this.handleRequestLoad, params); + } + protected function pagingCall(url:String, callback:Function):FacebookRequest{ + var req:FacebookRequest = new FacebookRequest(); + this.openRequests[req] = callback; + req.callURL(this.handleRequestLoad, url, this.locale); + return (req); + } + protected function getRawResult(data:Object):Object{ + return (this.resultHash[data]); + } + protected function nextPage(data:Object, callback:Function=null):FacebookRequest{ + var req:FacebookRequest; + var rawObj:Object = this.getRawResult(data); + if (((((rawObj) && (rawObj.paging))) && (rawObj.paging.next))){ + req = this.pagingCall(rawObj.paging.next, callback); + } else { + if (callback != null){ + callback(null, "no page"); + }; + }; + return (req); + } + protected function previousPage(data:Object, callback:Function=null):FacebookRequest{ + var req:FacebookRequest; + var rawObj:Object = this.getRawResult(data); + if (((((rawObj) && (rawObj.paging))) && (rawObj.paging.previous))){ + req = this.pagingCall(rawObj.paging.previous, callback); + } else { + if (callback != null){ + callback(null, "no page"); + }; + }; + return (req); + } + protected function handleRequestLoad(target:FacebookRequest):void{ + var data:Object; + var p:IResultParser; + var resultCallback:Function = this.openRequests[target]; + if (resultCallback === null){ + delete this.openRequests[target]; + }; + if (target.success){ + data = ((("data" in target.data)) ? target.data.data : target.data); + this.resultHash[data] = target.data; + if (data.hasOwnProperty("error_code")){ + resultCallback(null, data); + } else { + if ((this.parserHash[target] is IResultParser)){ + p = (this.parserHash[target] as IResultParser); + data = p.parse(data); + this.parserHash[target] = null; + delete this.parserHash[target]; + }; + resultCallback(data, null); + }; + } else { + resultCallback(null, target.data); + }; + delete this.openRequests[target]; + } + protected function callRestAPI(methodName:String, callback:Function=null, values=null, requestMethod:String="GET"):void{ + var p:IResultParser; + if (values == null){ + values = {}; + }; + values.format = "json"; + if (this.accessToken){ + values.access_token = this.accessToken; + }; + if (this.locale){ + values.locale = this.locale; + }; + var req:FacebookRequest = new FacebookRequest(); + this.openRequests[req] = callback; + if ((this.parserHash[values["queries"]] is IResultParser)){ + p = (this.parserHash[values["queries"]] as IResultParser); + this.parserHash[values["queries"]] = null; + delete this.parserHash[values["queries"]]; + this.parserHash[req] = p; + }; + req.call(((FacebookURLDefaults.API_URL + "/method/") + methodName), requestMethod, this.handleRequestLoad, values); + } + protected function fqlQuery(query:String, callback:Function=null, values:Object=null):void{ + var n:String; + for (n in values) { + query = query.replace(new RegExp((("\\{" + n) + "\\}"), "g"), values[n]); + }; + this.callRestAPI("fql.query", callback, {query:query}); + } + protected function fqlMultiQuery(queries:FQLMultiQuery, callback:Function=null, parser:IResultParser=null):void{ + this.parserHash[queries.toString()] = ((!((parser == null))) ? parser : new FQLMultiQueryParser()); + this.callRestAPI("fql.multiquery", callback, {queries:queries.toString()}); + } + protected function batchRequest(batch:Batch, callback:Function=null):void{ + var request:FacebookBatchRequest; + if (this.accessToken){ + request = new FacebookBatchRequest(batch, callback); + this.resultHash[request] = true; + request.call(this.accessToken); + }; + } + protected function deleteObject(method:String, callback:Function=null):void{ + var params:Object = {method:"delete"}; + this.api(method, callback, params, URLRequestMethod.POST); + } + protected function getImageUrl(id:String, type:String=null):String{ + return (((((FacebookURLDefaults.GRAPH_URL + "/") + id) + "/picture") + ((!((type == null))) ? ("?type=" + type) : ""))); + } + + } +}//package com.facebook.graph.core diff --git a/flash_decompiled/watchdog/com/facebook/graph/core/FacebookJSBridge.as b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookJSBridge.as new file mode 100644 index 0000000..42f8b2e --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookJSBridge.as @@ -0,0 +1,110 @@ +package com.facebook.graph.core { + import flash.external.*; + + public class FacebookJSBridge { + + public static const NS:String = "FBAS"; + + private const script_js:XML; + + public function FacebookJSBridge(){ + this.script_js = + ; + super(); + try { + if (ExternalInterface.available){ + ExternalInterface.call(this.script_js); + ExternalInterface.call("FBAS.setSWFObjectID", ExternalInterface.objectID); + }; + } catch(error:Error) { + }; + } + } +}//package com.facebook.graph.core diff --git a/flash_decompiled/watchdog/com/facebook/graph/core/FacebookLimits.as b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookLimits.as new file mode 100644 index 0000000..2c90168 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookLimits.as @@ -0,0 +1,8 @@ +package com.facebook.graph.core { + + public class FacebookLimits { + + public static var BATCH_REQUESTS:uint = 20; + + } +}//package com.facebook.graph.core diff --git a/flash_decompiled/watchdog/com/facebook/graph/core/FacebookURLDefaults.as b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookURLDefaults.as new file mode 100644 index 0000000..fe6abdd --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/core/FacebookURLDefaults.as @@ -0,0 +1,17 @@ +package com.facebook.graph.core { + + public class FacebookURLDefaults { + + public static var GRAPH_URL:String = "https://graph.facebook.com"; + public static var API_URL:String = "https://api.facebook.com"; + public static var AUTH_URL:String = "https://graph.facebook.com/oauth/authorize"; + public static var VIDEO_URL:String = "https://graph-video.facebook.com"; + public static var LOGIN_SUCCESS_URL:String = "http://www.facebook.com/connect/login_success.html"; + public static var LOGIN_SUCCESS_SECUREURL:String = "https://www.facebook.com/connect/login_success.html"; + public static var LOGIN_FAIL_URL:String = "http://www.facebook.com/connect/login_success.html?error_reason"; + public static var LOGIN_FAIL_SECUREURL:String = "https://www.facebook.com/connect/login_success.html?error_reason"; + public static var LOGIN_URL:String = "https://login.facebook.com/login.php"; + public static var AUTHORIZE_CANCEL:String = "https://graph.facebook.com/oauth/authorize_cancel"; + + } +}//package com.facebook.graph.core diff --git a/flash_decompiled/watchdog/com/facebook/graph/data/Batch.as b/flash_decompiled/watchdog/com/facebook/graph/data/Batch.as new file mode 100644 index 0000000..4889c69 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/data/Batch.as @@ -0,0 +1,23 @@ +package com.facebook.graph.data { + import com.facebook.graph.core.*; + + public class Batch { + + protected var _requests:Array; + + public function Batch(){ + super(); + this._requests = []; + } + public function get requests():Array{ + return (this._requests); + } + public function add(relativeURL:String, callback:Function=null, params=null, requestMethod:String="GET"):void{ + if (this._requests.length == FacebookLimits.BATCH_REQUESTS){ + throw (new Error((("Facebook limits you to " + FacebookLimits.BATCH_REQUESTS) + " requests in a single batch."))); + }; + this._requests.push(new BatchItem(relativeURL, callback, params, requestMethod)); + } + + } +}//package com.facebook.graph.data diff --git a/flash_decompiled/watchdog/com/facebook/graph/data/BatchItem.as b/flash_decompiled/watchdog/com/facebook/graph/data/BatchItem.as new file mode 100644 index 0000000..81587f5 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/data/BatchItem.as @@ -0,0 +1,18 @@ +package com.facebook.graph.data { + + public class BatchItem { + + public var relativeURL:String; + public var callback:Function; + public var params; + public var requestMethod:String; + + public function BatchItem(relativeURL:String, callback:Function=null, params=null, requestMethod:String="GET"){ + super(); + this.relativeURL = relativeURL; + this.callback = callback; + this.params = params; + this.requestMethod = requestMethod; + } + } +}//package com.facebook.graph.data diff --git a/flash_decompiled/watchdog/com/facebook/graph/data/FQLMultiQuery.as b/flash_decompiled/watchdog/com/facebook/graph/data/FQLMultiQuery.as new file mode 100644 index 0000000..9ba253a --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/data/FQLMultiQuery.as @@ -0,0 +1,27 @@ +package com.facebook.graph.data { + import com.json2.*; + + public class FQLMultiQuery { + + public var queries:Object; + + public function FQLMultiQuery(){ + super(); + this.queries = {}; + } + public function add(query:String, name:String, values:Object=null):void{ + var n:String; + if (this.queries.hasOwnProperty(name)){ + throw (new Error("Query name already exists, there cannot be duplicate names")); + }; + for (n in values) { + query = query.replace(new RegExp((("\\{" + n) + "\\}"), "g"), values[n]); + }; + this.queries[name] = query; + } + public function toString():String{ + return (JSON2.encode(this.queries)); + } + + } +}//package com.facebook.graph.data diff --git a/flash_decompiled/watchdog/com/facebook/graph/data/FacebookAuthResponse.as b/flash_decompiled/watchdog/com/facebook/graph/data/FacebookAuthResponse.as new file mode 100644 index 0000000..e5b73c8 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/data/FacebookAuthResponse.as @@ -0,0 +1,27 @@ +package com.facebook.graph.data { + + public class FacebookAuthResponse { + + public var uid:String; + public var expireDate:Date; + public var accessToken:String; + public var signedRequest:String; + + public function FacebookAuthResponse(){ + super(); + } + public function fromJSON(result:Object):void{ + if (result != null){ + this.expireDate = new Date(); + this.expireDate.setTime((this.expireDate.time + (result.expiresIn * 1000))); + this.accessToken = ((result.access_token) || (result.accessToken)); + this.signedRequest = result.signedRequest; + this.uid = result.userID; + }; + } + public function toString():String{ + return ((("[userId:" + this.uid) + "]")); + } + + } +}//package com.facebook.graph.data diff --git a/flash_decompiled/watchdog/com/facebook/graph/data/FacebookSession.as b/flash_decompiled/watchdog/com/facebook/graph/data/FacebookSession.as new file mode 100644 index 0000000..119c6a1 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/data/FacebookSession.as @@ -0,0 +1,32 @@ +package com.facebook.graph.data { + + public class FacebookSession { + + public var uid:String; + public var user:Object; + public var sessionKey:String; + public var expireDate:Date; + public var accessToken:String; + public var secret:String; + public var sig:String; + public var availablePermissions:Array; + + public function FacebookSession(){ + super(); + } + public function fromJSON(result:Object):void{ + if (result != null){ + this.sessionKey = result.session_key; + this.expireDate = new Date(result.expires); + this.accessToken = result.access_token; + this.secret = result.secret; + this.sig = result.sig; + this.uid = result.uid; + }; + } + public function toString():String{ + return ((("[userId:" + this.uid) + "]")); + } + + } +}//package com.facebook.graph.data diff --git a/flash_decompiled/watchdog/com/facebook/graph/net/AbstractFacebookRequest.as b/flash_decompiled/watchdog/com/facebook/graph/net/AbstractFacebookRequest.as new file mode 100644 index 0000000..9b45532 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/net/AbstractFacebookRequest.as @@ -0,0 +1,186 @@ +package com.facebook.graph.net { + import flash.net.*; + import flash.display.*; + import flash.utils.*; + import flash.events.*; + import com.json2.*; + import com.facebook.graph.utils.*; + import com.adobe.images.*; + + public class AbstractFacebookRequest { + + protected var urlLoader:URLLoader; + protected var urlRequest:URLRequest; + protected var _rawResult:String; + protected var _data:Object; + protected var _success:Boolean; + protected var _url:String; + protected var _requestMethod:String; + protected var _callback:Function; + + public function AbstractFacebookRequest():void{ + super(); + } + public function get rawResult():String{ + return (this._rawResult); + } + public function get success():Boolean{ + return (this._success); + } + public function get data():Object{ + return (this._data); + } + public function callURL(callback:Function, url:String="", locale:String=null):void{ + var data:URLVariables; + this._callback = callback; + this.urlRequest = new URLRequest(((url.length) ? url : this._url)); + if (locale){ + data = new URLVariables(); + data.locale = locale; + this.urlRequest.data = data; + }; + this.loadURLLoader(); + } + public function set successCallback(value:Function):void{ + this._callback = value; + } + protected function isValueFile(value:Object):Boolean{ + return ((((((((value is FileReference)) || ((value is Bitmap)))) || ((value is BitmapData)))) || ((value is ByteArray)))); + } + protected function objectToURLVariables(values:Object):URLVariables{ + var n:String; + var urlVars:URLVariables = new URLVariables(); + if (values == null){ + return (urlVars); + }; + for (n in values) { + urlVars[n] = values[n]; + }; + return (urlVars); + } + public function close():void{ + if (this.urlLoader != null){ + this.urlLoader.removeEventListener(Event.COMPLETE, this.handleURLLoaderComplete); + this.urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, this.handleURLLoaderIOError); + this.urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.handleURLLoaderSecurityError); + try { + this.urlLoader.close(); + } catch(e) { + }; + this.urlLoader = null; + }; + } + protected function loadURLLoader():void{ + this.urlLoader = new URLLoader(); + this.urlLoader.addEventListener(Event.COMPLETE, this.handleURLLoaderComplete, false, 0, false); + this.urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.handleURLLoaderIOError, false, 0, true); + this.urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.handleURLLoaderSecurityError, false, 0, true); + this.urlLoader.load(this.urlRequest); + } + protected function handleURLLoaderComplete(event:Event):void{ + this.handleDataLoad(this.urlLoader.data); + } + protected function handleDataLoad(result:Object, dispatchCompleteEvent:Boolean=true):void{ + var result:* = result; + var dispatchCompleteEvent:Boolean = dispatchCompleteEvent; + this._rawResult = (result as String); + this._success = true; + try { + this._data = JSON2.decode(this._rawResult); + } catch(e) { + _data = _rawResult; + _success = false; + }; + this.handleDataReady(); + if (dispatchCompleteEvent){ + this.dispatchComplete(); + }; + } + protected function handleDataReady():void{ + } + protected function dispatchComplete():void{ + if (this._callback != null){ + this._callback(this); + }; + this.close(); + } + protected function handleURLLoaderIOError(event:IOErrorEvent):void{ + var event:* = event; + this._success = false; + this._rawResult = (event.target as URLLoader).data; + if (this._rawResult != ""){ + try { + this._data = JSON2.decode(this._rawResult); + } catch(e) { + _data = { + type:"Exception", + message:_rawResult + }; + }; + } else { + this._data = event; + }; + this.dispatchComplete(); + } + protected function handleURLLoaderSecurityError(event:SecurityErrorEvent):void{ + var event:* = event; + this._success = false; + this._rawResult = (event.target as URLLoader).data; + try { + this._data = JSON2.decode((event.target as URLLoader).data); + } catch(e) { + _data = event; + }; + this.dispatchComplete(); + } + protected function extractFileData(values:Object):Object{ + var fileData:Object; + var n:String; + if (values == null){ + return (null); + }; + if (this.isValueFile(values)){ + fileData = values; + } else { + if (values != null){ + for (n in values) { + if (this.isValueFile(values[n])){ + fileData = values[n]; + delete values[n]; + break; + }; + }; + }; + }; + return (fileData); + } + protected function createUploadFileRequest(fileData:Object, values:Object=null):PostRequest{ + var n:String; + var ba:ByteArray; + var post:PostRequest = new PostRequest(); + if (values){ + for (n in values) { + post.writePostData(n, values[n]); + }; + }; + if ((fileData is Bitmap)){ + fileData = (fileData as Bitmap).bitmapData; + }; + if ((fileData is ByteArray)){ + post.writeFileData(values.fileName, (fileData as ByteArray), values.contentType); + } else { + if ((fileData is BitmapData)){ + ba = PNGEncoder.encode((fileData as BitmapData)); + post.writeFileData(values.fileName, ba, "image/png"); + }; + }; + post.close(); + this.urlRequest.contentType = ("multipart/form-data; boundary=" + post.boundary); + return (post); + } + public function toString():String{ + return ((this.urlRequest.url + (((this.urlRequest.data == null)) ? "" : ("?" + unescape(this.urlRequest.data.toString()))))); + } + + } +}//package com.facebook.graph.net diff --git a/flash_decompiled/watchdog/com/facebook/graph/net/FacebookBatchRequest.as b/flash_decompiled/watchdog/com/facebook/graph/net/FacebookBatchRequest.as new file mode 100644 index 0000000..7825da2 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/net/FacebookBatchRequest.as @@ -0,0 +1,125 @@ +package com.facebook.graph.net { + import com.facebook.graph.data.*; + import flash.net.*; + import com.facebook.graph.core.*; + import com.json2.*; + import flash.utils.*; + import com.facebook.graph.utils.*; + import flash.display.*; + import com.adobe.images.*; + + public class FacebookBatchRequest extends AbstractFacebookRequest { + + protected var _params:Object; + protected var _relativeURL:String; + protected var _fileData:Object; + protected var _accessToken:String; + protected var _batch:Batch; + + public function FacebookBatchRequest(batch:Batch, completeCallback:Function=null){ + super(); + this._batch = batch; + _callback = completeCallback; + } + public function call(accessToken:String):void{ + var request:BatchItem; + var fileData:Object; + var params:Object; + var urlVars:String; + var requestVars:URLVariables; + this._accessToken = accessToken; + urlRequest = new URLRequest(FacebookURLDefaults.GRAPH_URL); + urlRequest.method = URLRequestMethod.POST; + var formatted:Array = []; + var files:Array = []; + var hasFiles:Boolean; + var requests:Array = this._batch.requests; + var l:uint = requests.length; + var i:uint; + while (i < l) { + request = requests[i]; + fileData = this.extractFileData(request.params); + params = { + method:request.requestMethod, + relative_url:request.relativeURL + }; + if (request.params){ + if (request.params["contentType"] != undefined){ + params.contentType = request.params["contentType"]; + }; + urlVars = this.objectToURLVariables(request.params).toString(); + if ((((request.requestMethod == URLRequestMethod.GET)) || ((request.requestMethod.toUpperCase() == "DELETE")))){ + params.relative_url = (params.relative_url + ("?" + urlVars)); + } else { + params.body = urlVars; + }; + }; + formatted.push(params); + if (fileData){ + files.push(fileData); + params.attached_files = (((request.params.fileName == null)) ? ("file" + i) : request.params.fileName); + hasFiles = true; + } else { + files.push(null); + }; + i++; + }; + if (!(hasFiles)){ + requestVars = new URLVariables(); + requestVars.access_token = accessToken; + requestVars.batch = JSON2.encode(formatted); + urlRequest.data = requestVars; + loadURLLoader(); + } else { + this.sendPostRequest(formatted, files); + }; + } + protected function sendPostRequest(requests:Array, files:Array):void{ + var values:Object; + var fileData:Object; + var ba:ByteArray; + var post:PostRequest = new PostRequest(); + post.writePostData("access_token", this._accessToken); + post.writePostData("batch", JSON2.encode(requests)); + var l:uint = requests.length; + var i:uint; + while (i < l) { + values = requests[i]; + fileData = files[i]; + if (fileData){ + if ((fileData is Bitmap)){ + fileData = (fileData as Bitmap).bitmapData; + }; + if ((fileData is ByteArray)){ + post.writeFileData(values.attached_files, (fileData as ByteArray), values.contentType); + } else { + if ((fileData is BitmapData)){ + ba = PNGEncoder.encode((fileData as BitmapData)); + post.writeFileData(values.attached_files, ba, "image/png"); + }; + }; + }; + i++; + }; + post.close(); + urlRequest.contentType = ("multipart/form-data; boundary=" + post.boundary); + urlRequest.data = post.getPostData(); + loadURLLoader(); + } + override protected function handleDataReady():void{ + var body:Object; + var results:Array = (_data as Array); + var l:uint = results.length; + var i:uint; + while (i < l) { + body = JSON2.decode(_data[i].body); + _data[i].body = body; + if ((this._batch.requests[i] as BatchItem).callback != null){ + (this._batch.requests[i] as BatchItem).callback(_data[i]); + }; + i++; + }; + } + + } +}//package com.facebook.graph.net diff --git a/flash_decompiled/watchdog/com/facebook/graph/net/FacebookRequest.as b/flash_decompiled/watchdog/com/facebook/graph/net/FacebookRequest.as new file mode 100644 index 0000000..6d73825 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/net/FacebookRequest.as @@ -0,0 +1,66 @@ +package com.facebook.graph.net { + import flash.net.*; + import flash.events.*; + + public class FacebookRequest extends AbstractFacebookRequest { + + protected var fileReference:FileReference; + + public function FacebookRequest():void{ + super(); + } + public function call(url:String, requestMethod:String="GET", callback:Function=null, values=null):void{ + _url = url; + _requestMethod = requestMethod; + _callback = callback; + var requestUrl:String = url; + urlRequest = new URLRequest(requestUrl); + urlRequest.method = _requestMethod; + if (values == null){ + loadURLLoader(); + return; + }; + var fileData:Object = extractFileData(values); + if (fileData == null){ + urlRequest.data = objectToURLVariables(values); + loadURLLoader(); + return; + }; + if ((fileData is FileReference)){ + urlRequest.data = objectToURLVariables(values); + urlRequest.method = URLRequestMethod.POST; + this.fileReference = (fileData as FileReference); + this.fileReference.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, this.handleFileReferenceData, false, 0, true); + this.fileReference.addEventListener(IOErrorEvent.IO_ERROR, this.handelFileReferenceError, false, 0, false); + this.fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.handelFileReferenceError, false, 0, false); + this.fileReference.upload(urlRequest); + return; + }; + urlRequest.data = createUploadFileRequest(fileData, values).getPostData(); + urlRequest.method = URLRequestMethod.POST; + loadURLLoader(); + } + override public function close():void{ + super.close(); + if (this.fileReference != null){ + this.fileReference.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, this.handleFileReferenceData); + this.fileReference.removeEventListener(IOErrorEvent.IO_ERROR, this.handelFileReferenceError); + this.fileReference.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.handelFileReferenceError); + try { + this.fileReference.cancel(); + } catch(e) { + }; + this.fileReference = null; + }; + } + protected function handleFileReferenceData(event:DataEvent):void{ + handleDataLoad(event.data); + } + protected function handelFileReferenceError(event:ErrorEvent):void{ + _success = false; + _data = event; + dispatchComplete(); + } + + } +}//package com.facebook.graph.net diff --git a/flash_decompiled/watchdog/com/facebook/graph/utils/FQLMultiQueryParser.as b/flash_decompiled/watchdog/com/facebook/graph/utils/FQLMultiQueryParser.as new file mode 100644 index 0000000..25a2d0c --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/utils/FQLMultiQueryParser.as @@ -0,0 +1,18 @@ +package com.facebook.graph.utils { + + public class FQLMultiQueryParser implements IResultParser { + + public function FQLMultiQueryParser(){ + super(); + } + public function parse(data:Object):Object{ + var n:String; + var o:Object = {}; + for (n in data) { + o[data[n].name] = data[n].fql_result_set; + }; + return (o); + } + + } +}//package com.facebook.graph.utils diff --git a/flash_decompiled/watchdog/com/facebook/graph/utils/IResultParser.as b/flash_decompiled/watchdog/com/facebook/graph/utils/IResultParser.as new file mode 100644 index 0000000..d9b2e42 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/utils/IResultParser.as @@ -0,0 +1,8 @@ +package com.facebook.graph.utils { + + public interface IResultParser { + + function parse(_arg1:Object):Object; + + } +}//package com.facebook.graph.utils diff --git a/flash_decompiled/watchdog/com/facebook/graph/utils/PostRequest.as b/flash_decompiled/watchdog/com/facebook/graph/utils/PostRequest.as new file mode 100644 index 0000000..4475fd7 --- /dev/null +++ b/flash_decompiled/watchdog/com/facebook/graph/utils/PostRequest.as @@ -0,0 +1,90 @@ +package com.facebook.graph.utils { + import flash.utils.*; + + public class PostRequest { + + public var boundary:String = "-----"; + protected var postData:ByteArray; + + public function PostRequest(){ + super(); + this.createPostData(); + } + public function createPostData():void{ + this.postData = new ByteArray(); + this.postData.endian = Endian.BIG_ENDIAN; + } + public function writePostData(name:String, value:String):void{ + var bytes:String; + this.writeBoundary(); + this.writeLineBreak(); + bytes = (("Content-Disposition: form-data; name=\"" + name) + "\""); + var l:uint = bytes.length; + var i:Number = 0; + while (i < l) { + this.postData.writeByte(bytes.charCodeAt(i)); + i++; + }; + this.writeLineBreak(); + this.writeLineBreak(); + this.postData.writeUTFBytes(value); + this.writeLineBreak(); + } + public function writeFileData(filename:String, fileData:ByteArray, contentType:String):void{ + var bytes:String; + var l:int; + var i:uint; + this.writeBoundary(); + this.writeLineBreak(); + bytes = (((("Content-Disposition: form-data; name=\"" + filename) + "\"; filename=\"") + filename) + "\";"); + l = bytes.length; + i = 0; + while (i < l) { + this.postData.writeByte(bytes.charCodeAt(i)); + i++; + }; + this.postData.writeUTFBytes(filename); + this.writeQuotationMark(); + this.writeLineBreak(); + bytes = ((contentType) || ("application/octet-stream")); + l = bytes.length; + i = 0; + while (i < l) { + this.postData.writeByte(bytes.charCodeAt(i)); + i++; + }; + this.writeLineBreak(); + this.writeLineBreak(); + fileData.position = 0; + this.postData.writeBytes(fileData, 0, fileData.length); + this.writeLineBreak(); + } + public function getPostData():ByteArray{ + this.postData.position = 0; + return (this.postData); + } + public function close():void{ + this.writeBoundary(); + this.writeDoubleDash(); + } + protected function writeLineBreak():void{ + this.postData.writeShort(3338); + } + protected function writeQuotationMark():void{ + this.postData.writeByte(34); + } + protected function writeDoubleDash():void{ + this.postData.writeShort(0x2D2D); + } + protected function writeBoundary():void{ + this.writeDoubleDash(); + var l:uint = this.boundary.length; + var i:uint; + while (i < l) { + this.postData.writeByte(this.boundary.charCodeAt(i)); + i++; + }; + } + + } +}//package com.facebook.graph.utils diff --git a/flash_decompiled/watchdog/com/json2/JSON2.as b/flash_decompiled/watchdog/com/json2/JSON2.as new file mode 100644 index 0000000..946b2d8 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSON2.as @@ -0,0 +1,13 @@ +package com.json2 { + + public final class JSON2 { + + public static function encode(o:Object):String{ + return (new JSONEncoder(o).getString()); + } + public static function decode(s:String, strict:Boolean=true){ + return (new JSONDecoder(s, strict).getValue()); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONDecoder.as b/flash_decompiled/watchdog/com/json2/JSONDecoder.as new file mode 100644 index 0000000..e835142 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONDecoder.as @@ -0,0 +1,139 @@ +package com.json2 { + + public class JSONDecoder { + + private var strict:Boolean; + private var value; + private var tokenizer:JSONTokenizer; + private var token:JSONToken; + + public function JSONDecoder(s:String, strict:Boolean){ + super(); + this.strict = strict; + this.tokenizer = new JSONTokenizer(s, strict); + this.nextToken(); + this.value = this.parseValue(); + if (((strict) && (!((this.nextToken() == null))))){ + this.tokenizer.parseError("Unexpected characters left in input stream"); + }; + } + public function getValue(){ + return (this.value); + } + final private function nextToken():JSONToken{ + return ((this.token = this.tokenizer.getNextToken())); + } + final private function nextValidToken():JSONToken{ + this.token = this.tokenizer.getNextToken(); + this.checkValidToken(); + return (this.token); + } + final private function checkValidToken():void{ + if (this.token == null){ + this.tokenizer.parseError("Unexpected end of input"); + }; + } + final private function parseArray():Array{ + var a:Array = new Array(); + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACKET){ + return (a); + }; + if (((!(this.strict)) && ((this.token.type == JSONTokenType.COMMA)))){ + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACKET){ + return (a); + }; + this.tokenizer.parseError(("Leading commas are not supported. Expecting ']' but found " + this.token.value)); + }; + while (true) { + a.push(this.parseValue()); + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACKET){ + return (a); + }; + if (this.token.type == JSONTokenType.COMMA){ + this.nextToken(); + if (!(this.strict)){ + this.checkValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACKET){ + return (a); + }; + }; + } else { + this.tokenizer.parseError(("Expecting ] or , but found " + this.token.value)); + }; + }; + return (null); + } + final private function parseObject():Object{ + var key:String; + var o:Object = new Object(); + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACE){ + return (o); + }; + if (((!(this.strict)) && ((this.token.type == JSONTokenType.COMMA)))){ + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACE){ + return (o); + }; + this.tokenizer.parseError(("Leading commas are not supported. Expecting '}' but found " + this.token.value)); + }; + while (true) { + if (this.token.type == JSONTokenType.STRING){ + key = String(this.token.value); + this.nextValidToken(); + if (this.token.type == JSONTokenType.COLON){ + this.nextToken(); + o[key] = this.parseValue(); + this.nextValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACE){ + return (o); + }; + if (this.token.type == JSONTokenType.COMMA){ + this.nextToken(); + if (!(this.strict)){ + this.checkValidToken(); + if (this.token.type == JSONTokenType.RIGHT_BRACE){ + return (o); + }; + }; + } else { + this.tokenizer.parseError(("Expecting } or , but found " + this.token.value)); + }; + } else { + this.tokenizer.parseError(("Expecting : but found " + this.token.value)); + }; + } else { + this.tokenizer.parseError(("Expecting string but found " + this.token.value)); + }; + }; + return (null); + } + final private function parseValue():Object{ + this.checkValidToken(); + switch (this.token.type){ + case JSONTokenType.LEFT_BRACE: + return (this.parseObject()); + case JSONTokenType.LEFT_BRACKET: + return (this.parseArray()); + case JSONTokenType.STRING: + case JSONTokenType.NUMBER: + case JSONTokenType.TRUE: + case JSONTokenType.FALSE: + case JSONTokenType.NULL: + return (this.token.value); + case JSONTokenType.NAN: + if (!(this.strict)){ + return (this.token.value); + }; + this.tokenizer.parseError(("Unexpected " + this.token.value)); + default: + this.tokenizer.parseError(("Unexpected " + this.token.value)); + }; + return (null); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONEncoder.as b/flash_decompiled/watchdog/com/json2/JSONEncoder.as new file mode 100644 index 0000000..4fc0d49 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONEncoder.as @@ -0,0 +1,136 @@ +package com.json2 { + import flash.utils.*; + + public class JSONEncoder { + + private var jsonString:String; + + public function JSONEncoder(value){ + super(); + this.jsonString = this.convertToString(value); + } + public function getString():String{ + return (this.jsonString); + } + private function convertToString(value):String{ + if ((value is String)){ + return (this.escapeString((value as String))); + }; + if ((value is Number)){ + return (((isFinite((value as Number))) ? value.toString() : "null")); + }; + if ((value is Boolean)){ + return (((value) ? "true" : "false")); + }; + if ((value is Array)){ + return (this.arrayToString((value as Array))); + }; + if ((((value is Object)) && (!((value == null))))){ + return (this.objectToString(value)); + }; + return ("null"); + } + private function escapeString(str:String):String{ + var ch:String; + var hexCode:String; + var zeroPad:String; + var s:String = ""; + var len:Number = str.length; + var i:int; + while (i < len) { + ch = str.charAt(i); + switch (ch){ + case "\"": + s = (s + "\\\""); + break; + case "\\": + s = (s + "\\\\"); + break; + case "\b": + s = (s + "\\b"); + break; + case "\f": + s = (s + "\\f"); + break; + case "\n": + s = (s + "\\n"); + break; + case "\r": + s = (s + "\\r"); + break; + case "\t": + s = (s + "\\t"); + break; + default: + if (ch < " "){ + hexCode = ch.charCodeAt(0).toString(16); + zeroPad = (((hexCode.length == 2)) ? "00" : "000"); + s = (s + (("\\u" + zeroPad) + hexCode)); + } else { + s = (s + ch); + }; + }; + i++; + }; + return ((("\"" + s) + "\"")); + } + private function arrayToString(a:Array):String{ + var s:String = ""; + var length:int = a.length; + var i:int; + while (i < length) { + if (s.length > 0){ + s = (s + ","); + }; + s = (s + this.convertToString(a[i])); + i++; + }; + return ((("[" + s) + "]")); + } + private function objectToString(o:Object):String{ + var value:* = null; + var key:* = null; + var v:* = null; + var o:* = o; + var s:* = ""; + var classInfo:* = describeType(o); + if (classInfo.@name.toString() == "Object"){ + for (key in o) { + value = o[key]; + if ((value is Function)){ + } else { + if (s.length > 0){ + s = (s + ","); + }; + s = (s + ((this.escapeString(key) + ":") + this.convertToString(value))); + }; + }; + } else { + var _local3:int; + var _local6:int; + var _local7:* = classInfo..*; + var _local5 = new XMLList(""); + for each (var _local8 in classInfo..*) { + var _local9 = _local8; + with (_local9) { + if ((((name() == "variable")) || ((((name() == "accessor")) && ((attribute("access").charAt(0) == "r")))))){ + _local5[_local6] = _local8; + }; + }; + }; + var _local4:* = _local5; + for each (v in _local5) { + if (((v.metadata) && ((v.metadata.(@name == "Transient").length() > 0)))){ + } else { + if (s.length > 0){ + s = (s + ","); + }; + s = (s + ((this.escapeString(v.@name.toString()) + ":") + this.convertToString(o[v.@name]))); + }; + }; + }; + return ((("{" + s) + "}")); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONParseError.as b/flash_decompiled/watchdog/com/json2/JSONParseError.as new file mode 100644 index 0000000..cd35678 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONParseError.as @@ -0,0 +1,22 @@ +package com.json2 { + + public class JSONParseError extends Error { + + private var _location:int; + private var _text:String; + + public function JSONParseError(message:String="", location:int=0, text:String=""){ + super(message); + name = "JSONParseError"; + this._location = location; + this._text = text; + } + public function get location():int{ + return (this._location); + } + public function get text():String{ + return (this._text); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONToken.as b/flash_decompiled/watchdog/com/json2/JSONToken.as new file mode 100644 index 0000000..837e3fa --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONToken.as @@ -0,0 +1,23 @@ +package com.json2 { + + public final class JSONToken { + + static const token:JSONToken = new (JSONToken)(); +; + + public var type:int; + public var value:Object; + + public function JSONToken(type:int=-1, value:Object=null){ + super(); + this.type = type; + this.value = value; + } + static function create(type:int=-1, value:Object=null):JSONToken{ + token.type = type; + token.value = value; + return (token); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONTokenType.as b/flash_decompiled/watchdog/com/json2/JSONTokenType.as new file mode 100644 index 0000000..bbacf38 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONTokenType.as @@ -0,0 +1,20 @@ +package com.json2 { + + public final class JSONTokenType { + + public static const UNKNOWN:int = -1; + public static const COMMA:int = 0; + public static const LEFT_BRACE:int = 1; + public static const RIGHT_BRACE:int = 2; + public static const LEFT_BRACKET:int = 3; + public static const RIGHT_BRACKET:int = 4; + public static const COLON:int = 6; + public static const TRUE:int = 7; + public static const FALSE:int = 8; + public static const NULL:int = 9; + public static const STRING:int = 10; + public static const NUMBER:int = 11; + public static const NAN:int = 12; + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/com/json2/JSONTokenizer.as b/flash_decompiled/watchdog/com/json2/JSONTokenizer.as new file mode 100644 index 0000000..2bd7bf9 --- /dev/null +++ b/flash_decompiled/watchdog/com/json2/JSONTokenizer.as @@ -0,0 +1,341 @@ +package com.json2 { + + public class JSONTokenizer { + + private const controlCharsRegExp:RegExp; + + private var strict:Boolean; + private var obj:Object; + private var jsonString:String; + private var loc:int; + private var ch:String; + + public function JSONTokenizer(s:String, strict:Boolean){ + this.controlCharsRegExp = /[\x00-\x1F]/; + super(); + this.jsonString = s; + this.strict = strict; + this.loc = 0; + this.nextChar(); + } + public function getNextToken():JSONToken{ + var _local2:String; + var _local3:String; + var _local4:String; + var _local5:String; + var token:JSONToken; + this.skipIgnored(); + switch (this.ch){ + case "{": + token = JSONToken.create(JSONTokenType.LEFT_BRACE, this.ch); + this.nextChar(); + break; + case "}": + token = JSONToken.create(JSONTokenType.RIGHT_BRACE, this.ch); + this.nextChar(); + break; + case "[": + token = JSONToken.create(JSONTokenType.LEFT_BRACKET, this.ch); + this.nextChar(); + break; + case "]": + token = JSONToken.create(JSONTokenType.RIGHT_BRACKET, this.ch); + this.nextChar(); + break; + case ",": + token = JSONToken.create(JSONTokenType.COMMA, this.ch); + this.nextChar(); + break; + case ":": + token = JSONToken.create(JSONTokenType.COLON, this.ch); + this.nextChar(); + break; + case "t": + _local2 = ((("t" + this.nextChar()) + this.nextChar()) + this.nextChar()); + if (_local2 == "true"){ + token = JSONToken.create(JSONTokenType.TRUE, true); + this.nextChar(); + } else { + this.parseError(("Expecting 'true' but found " + _local2)); + }; + break; + case "f": + _local3 = (((("f" + this.nextChar()) + this.nextChar()) + this.nextChar()) + this.nextChar()); + if (_local3 == "false"){ + token = JSONToken.create(JSONTokenType.FALSE, false); + this.nextChar(); + } else { + this.parseError(("Expecting 'false' but found " + _local3)); + }; + break; + case "n": + _local4 = ((("n" + this.nextChar()) + this.nextChar()) + this.nextChar()); + if (_local4 == "null"){ + token = JSONToken.create(JSONTokenType.NULL, null); + this.nextChar(); + } else { + this.parseError(("Expecting 'null' but found " + _local4)); + }; + break; + case "N": + _local5 = (("N" + this.nextChar()) + this.nextChar()); + if (_local5 == "NaN"){ + token = JSONToken.create(JSONTokenType.NAN, NaN); + this.nextChar(); + } else { + this.parseError(("Expecting 'NaN' but found " + _local5)); + }; + break; + case "\"": + token = this.readString(); + break; + default: + if (((this.isDigit(this.ch)) || ((this.ch == "-")))){ + token = this.readNumber(); + } else { + if (this.ch == ""){ + token = null; + } else { + this.parseError((("Unexpected " + this.ch) + " encountered")); + }; + }; + }; + return (token); + } + final private function readString():JSONToken{ + var backspaceCount:int; + var backspaceIndex:int; + var quoteIndex:int = this.loc; + do { + quoteIndex = this.jsonString.indexOf("\"", quoteIndex); + if (quoteIndex >= 0){ + backspaceCount = 0; + backspaceIndex = (quoteIndex - 1); + while (this.jsonString.charAt(backspaceIndex) == "\\") { + backspaceCount++; + backspaceIndex--; + }; + if ((backspaceCount & 1) == 0){ + break; + }; + quoteIndex++; + } else { + this.parseError("Unterminated string literal"); + }; + } while (true); + var token:JSONToken = JSONToken.create(JSONTokenType.STRING, this.unescapeString(this.jsonString.substr(this.loc, (quoteIndex - this.loc)))); + this.loc = (quoteIndex + 1); + this.nextChar(); + return (token); + } + public function unescapeString(input:String):String{ + var nextSubstringStartPosition:int; + var escapedChar:String; + var _local7:String; + var _local8:int; + var i:int; + var possibleHexChar:String; + if (((this.strict) && (this.controlCharsRegExp.test(input)))){ + this.parseError("String contains unescaped control character (0x00-0x1F)"); + }; + var result:String = ""; + var backslashIndex:int; + nextSubstringStartPosition = 0; + var len:int = input.length; + do { + backslashIndex = input.indexOf("\\", nextSubstringStartPosition); + if (backslashIndex >= 0){ + result = (result + input.substr(nextSubstringStartPosition, (backslashIndex - nextSubstringStartPosition))); + nextSubstringStartPosition = (backslashIndex + 2); + escapedChar = input.charAt((backslashIndex + 1)); + switch (escapedChar){ + case "\"": + result = (result + escapedChar); + break; + case "\\": + result = (result + escapedChar); + break; + case "n": + result = (result + "\n"); + break; + case "r": + result = (result + "\r"); + break; + case "t": + result = (result + "\t"); + break; + case "u": + _local7 = ""; + _local8 = (nextSubstringStartPosition + 4); + if (_local8 > len){ + this.parseError("Unexpected end of input. Expecting 4 hex digits after \\u."); + }; + i = nextSubstringStartPosition; + while (i < _local8) { + possibleHexChar = input.charAt(i); + if (!(this.isHexDigit(possibleHexChar))){ + this.parseError(("Excepted a hex digit, but found: " + possibleHexChar)); + }; + _local7 = (_local7 + possibleHexChar); + i++; + }; + result = (result + String.fromCharCode(parseInt(_local7, 16))); + nextSubstringStartPosition = _local8; + break; + case "f": + result = (result + "\f"); + break; + case "/": + result = (result + "/"); + break; + case "b": + result = (result + "\b"); + break; + default: + result = (result + ("\\" + escapedChar)); + }; + } else { + result = (result + input.substr(nextSubstringStartPosition)); + break; + }; + } while (nextSubstringStartPosition < len); + return (result); + } + final private function readNumber():JSONToken{ + var input:String = ""; + if (this.ch == "-"){ + input = (input + "-"); + this.nextChar(); + }; + if (!(this.isDigit(this.ch))){ + this.parseError("Expecting a digit"); + }; + if (this.ch == "0"){ + input = (input + this.ch); + this.nextChar(); + if (this.isDigit(this.ch)){ + this.parseError("A digit cannot immediately follow 0"); + } else { + if (((!(this.strict)) && ((this.ch == "x")))){ + input = (input + this.ch); + this.nextChar(); + if (this.isHexDigit(this.ch)){ + input = (input + this.ch); + this.nextChar(); + } else { + this.parseError("Number in hex format require at least one hex digit after \"0x\""); + }; + while (this.isHexDigit(this.ch)) { + input = (input + this.ch); + this.nextChar(); + }; + }; + }; + } else { + while (this.isDigit(this.ch)) { + input = (input + this.ch); + this.nextChar(); + }; + }; + if (this.ch == "."){ + input = (input + "."); + this.nextChar(); + if (!(this.isDigit(this.ch))){ + this.parseError("Expecting a digit"); + }; + while (this.isDigit(this.ch)) { + input = (input + this.ch); + this.nextChar(); + }; + }; + if ((((this.ch == "e")) || ((this.ch == "E")))){ + input = (input + "e"); + this.nextChar(); + if ((((this.ch == "+")) || ((this.ch == "-")))){ + input = (input + this.ch); + this.nextChar(); + }; + if (!(this.isDigit(this.ch))){ + this.parseError("Scientific notation number needs exponent value"); + }; + while (this.isDigit(this.ch)) { + input = (input + this.ch); + this.nextChar(); + }; + }; + var num:Number = Number(input); + if (((isFinite(num)) && (!(isNaN(num))))){ + return (JSONToken.create(JSONTokenType.NUMBER, num)); + }; + this.parseError((("Number " + num) + " is not valid!")); + return (null); + } + final private function nextChar():String{ + return ((this.ch = this.jsonString.charAt(this.loc++))); + } + final private function skipIgnored():void{ + var originalLoc:int; + do { + originalLoc = this.loc; + this.skipWhite(); + this.skipComments(); + } while (originalLoc != this.loc); + } + private function skipComments():void{ + if (this.ch == "/"){ + this.nextChar(); + switch (this.ch){ + case "/": + do { + this.nextChar(); + } while (((!((this.ch == "\n"))) && (!((this.ch == ""))))); + this.nextChar(); + break; + case "*": + this.nextChar(); + while (true) { + if (this.ch == "*"){ + this.nextChar(); + if (this.ch == "/"){ + this.nextChar(); + break; + }; + } else { + this.nextChar(); + }; + if (this.ch == ""){ + this.parseError("Multi-line comment not closed"); + }; + }; + break; + default: + this.parseError((("Unexpected " + this.ch) + " encountered (expecting '/' or '*' )")); + }; + }; + } + final private function skipWhite():void{ + while (this.isWhiteSpace(this.ch)) { + this.nextChar(); + }; + } + final private function isWhiteSpace(ch:String):Boolean{ + if ((((((((ch == " ")) || ((ch == "\t")))) || ((ch == "\n")))) || ((ch == "\r")))){ + return (true); + }; + if (((!(this.strict)) && ((ch.charCodeAt(0) == 160)))){ + return (true); + }; + return (false); + } + final private function isDigit(ch:String):Boolean{ + return ((((ch >= "0")) && ((ch <= "9")))); + } + final private function isHexDigit(ch:String):Boolean{ + return (((((this.isDigit(ch)) || ((((ch >= "A")) && ((ch <= "F")))))) || ((((ch >= "a")) && ((ch <= "f")))))); + } + final public function parseError(message:String):void{ + throw (new JSONParseError(message, this.loc, this.jsonString)); + } + + } +}//package com.json2 diff --git a/flash_decompiled/watchdog/fr/seraf/stage3D/Stage3DData.as b/flash_decompiled/watchdog/fr/seraf/stage3D/Stage3DData.as new file mode 100644 index 0000000..24ed8cc --- /dev/null +++ b/flash_decompiled/watchdog/fr/seraf/stage3D/Stage3DData.as @@ -0,0 +1,14 @@ +package fr.seraf.stage3D { + import __AS3__.vec.*; + + public class Stage3DData { + + public var vertices:Vector.; + public var uvs:Vector.; + public var indices:Vector.; + + public function Stage3DData(){ + super(); + } + } +}//package fr.seraf.stage3D diff --git a/flash_decompiled/watchdog/help_content.as b/flash_decompiled/watchdog/help_content.as new file mode 100644 index 0000000..4816781 --- /dev/null +++ b/flash_decompiled/watchdog/help_content.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class help_content extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/intro_fla/mcMask_9.as b/flash_decompiled/watchdog/intro_fla/mcMask_9.as new file mode 100644 index 0000000..6206344 --- /dev/null +++ b/flash_decompiled/watchdog/intro_fla/mcMask_9.as @@ -0,0 +1,14 @@ +package intro_fla { + import flash.display.*; + + public dynamic class mcMask_9 extends MovieClip { + + public function mcMask_9(){ + addFrameScript(0, this.frame1); + } + function frame1(){ + stop(); + } + + } +}//package intro_fla diff --git a/flash_decompiled/watchdog/io/IO.as b/flash_decompiled/watchdog/io/IO.as new file mode 100644 index 0000000..2807c70 --- /dev/null +++ b/flash_decompiled/watchdog/io/IO.as @@ -0,0 +1,34 @@ +package io { + import flash.utils.*; + import io.utils.*; + + public class IO { + + protected static var sockets:Dictionary = new Dictionary(); + public static var transport:String = "xhr-polling"; + public static var protocol:String = "1"; + + public static function connect(host:String, user_options:Options=null):SocketNamespace{ + var uri:URI; + var prop:String; + var socket:Socket; + var options:Options = new Options(); + uri = URI.buildURI(host); + options.host = uri.host; + options.secure = (uri.protocol == "https"); + options.port = ((parseInt(uri.port)) || (((options.secure) ? 443 : 80))); + options.query = uri.query; + for (prop in user_options) { + options[prop] = user_options[prop]; + }; + socket = IO.sockets[host]; + if (!(IO.sockets[host])){ + socket = new Socket(options); + IO.sockets[host] = socket; + }; + socket = ((socket) || (IO.sockets[host])); + return (socket.of((((uri.path.length > 1)) ? uri.path : ""))); + } + + } +}//package io diff --git a/flash_decompiled/watchdog/io/Options.as b/flash_decompiled/watchdog/io/Options.as new file mode 100644 index 0000000..e0ae730 --- /dev/null +++ b/flash_decompiled/watchdog/io/Options.as @@ -0,0 +1,29 @@ +package io { + + public class Options { + + public var host:String = "localhost"; + public var port:uint = 80; + public var query:String = ""; + public var resource:String = "socket.io"; + public var secure:Boolean = false; + public var connect_timeout:uint = 10000; + public var reconnect:Boolean = true; + public var reconnection_delay:uint = 500; + public var reconnection_limit:Number = INF; + public var reopen_delay:uint = 3000; + public var max_reconnection_attempts:uint = 10; + public var sync_disconnect:Boolean = false; + public var auto_connect:Boolean = true; + + public function mergeWith(options:Object):void{ + var prop:*; + for (prop in options) { + if (this.hasOwnProperty(prop)){ + this[prop] = options[prop]; + }; + }; + } + + } +}//package io diff --git a/flash_decompiled/watchdog/io/Socket.as b/flash_decompiled/watchdog/io/Socket.as new file mode 100644 index 0000000..d1e3050 --- /dev/null +++ b/flash_decompiled/watchdog/io/Socket.as @@ -0,0 +1,237 @@ +package io { + import flash.utils.*; + import __AS3__.vec.*; + import io.packet.*; + import io.utils.*; + import flash.net.*; + import flash.events.*; + import io.event.*; + + public class Socket extends EventEmitter { + + public static const CONNECT:String = "connect"; + public static const CONNECTING:String = "connecting"; + public static const CONNECT_FAILED:String = "connect_failed"; + public static const RECONNECT:String = "reconnect"; + public static const RECONNECTING:String = "reconnecting"; + public static const RECONNECT_FAILED:String = "reconnect_failed"; + public static const OPEN:String = "open"; + public static const CLOSE:String = "close"; + public static const DISCONNECT:String = "disconnect"; + public static const ERROR:String = "error"; + public static const PACKET:String = "packet"; + public static const BOOTED:String = "booted"; + + public var options:Options; + protected var _connected:Boolean = false; + protected var _open:Boolean = false; + protected var _connecting:Boolean = false; + protected var _reconnecting:Boolean = false; + protected var transport:Transport = null; + protected var connectTimeoutTimer:Timer = null; + protected var namespaces:Dictionary; + protected var buffer:Vector.; + protected var doBuffer:Boolean = false; + protected var reconnectionAttempts:uint = 0; + protected var reconnectionTimer:Timer = null; + protected var reconnectionDelay:uint = 0; + + public function Socket(options:Options){ + this.options = new Options(); + this.namespaces = new Dictionary(); + this.buffer = new Vector.(); + super(); + this.transport = new Transport(this); + this.transport.on(PACKET, this.onPacket); + this.transport.on(CLOSE, this.onClose); + this.transport.on(OPEN, this.onOpen); + this.transport.on(DISCONNECT, this.onDisconnect); + if (options){ + this.options = options; + }; + if (options.auto_connect){ + this.connect(); + }; + } + public function get connected():Boolean{ + return (this._connected); + } + public function get open():Boolean{ + return (this._open); + } + public function get connecting():Boolean{ + return (this._connecting); + } + public function get reconnecting():Boolean{ + return (this._reconnecting); + } + public function of(name:String):SocketNamespace{ + var connect:ConnectPacket; + if (!(this.namespaces[name])){ + this.namespaces[name] = new SocketNamespace(this, name); + if (name != ""){ + connect = new ConnectPacket(); + connect.endpoint = name; + this.packet(connect); + }; + }; + return (this.namespaces[name]); + } + public function connect():void{ + if (((this.connecting) || (this.connected))){ + return; + }; + this.doHandshake(); + } + public function disconnect():void{ + if (this.connected){ + if (this.open){ + this.packet(new DisconnectPacket()); + }; + this.onDisconnect(BOOTED); + }; + } + public function packet(data:Packet):void{ + if (((this.connected) && (!(this.doBuffer)))){ + this.transport.packet(data); + } else { + this.buffer.push(data); + }; + } + protected function publish(... _args):void{ + var i:String; + emit.apply(this, _args); + for (i in this.namespaces) { + emit.apply(this.of(i), _args); + }; + } + protected function getRequest():URLRequest{ + var url:String = IOUtils.getRequestURL(this.options); + var xhr:URLRequest = new URLRequest(url); + return (xhr); + } + protected function doHandshake():void{ + var loader:* = null; + var xhr:* = this.getRequest(); + loader = new URLStream(); + loader.addEventListener(IOErrorEvent.IO_ERROR, function (event:IOErrorEvent):void{ + onError(loader.readUTFBytes(loader.bytesAvailable)); + }, false, 0, true); + loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, function (event:HTTPStatusEvent):void{ + var data:String = ((loader.bytesAvailable) ? loader.readUTFBytes(loader.bytesAvailable) : ""); + if (event.status == 200){ + onHandshake.apply(this, data.split(":")); + } else { + ((!(reconnecting)) && (onError(data))); + }; + }, false, 0, true); + loader.load(xhr); + } + protected function onHandshake(sid:String, heartbeat:Number, close:Number, transports:String):void{ + var sid:* = sid; + var heartbeat:* = heartbeat; + var close:* = close; + var transports:* = transports; + if (transports.split(",").indexOf("xhr-polling") == -1){ + return (this.publish(CONNECT_FAILED)); + }; + this.transport.init(sid, (heartbeat * 1000), (close * 1000)); + this._connecting = true; + this.publish(CONNECTING); + if (this.options.connect_timeout){ + IOUtils.createTimer(this.options.connect_timeout, function ():void{ + if (!(connected)){ + _connecting = false; + }; + }); + }; + } + protected function reconnect():void{ + var i:String; + if (((this.reconnecting) && (this.connected))){ + for (i in this.namespaces) { + if (i != ""){ + this.namespaces[i].packet(new ConnectPacket()); + }; + }; + this.publish(RECONNECT, "xhr-polling", this.reconnectionAttempts); + return (this.reset_reconnect()); + }; + if (((this.reconnecting) && ((this.reconnectionAttempts < this.options.max_reconnection_attempts)))){ + this.reset_reconnect(); + return (this.publish(RECONNECT_FAILED)); + }; + if (((this.reconnecting) && (this.connecting))){ + this.reconnectionTimer = IOUtils.createTimer(1000, this.reconnect); + return; + }; + if (this.reconnecting){ + if (this.reconnectionDelay < this.options.reconnection_limit){ + this.reconnectionDelay = (this.reconnectionDelay * 2); + }; + } else { + on(CONNECT_FAILED, this.reconnect); + on(CONNECT, this.reconnect); + }; + this._reconnecting = true; + this.reconnectionTimer = IOUtils.createTimer(this.reconnectionDelay, this.reconnect); + this.connect(); + this.publish(RECONNECTING); + } + protected function reset_reconnect():void{ + this.reconnectionTimer.stop(); + this._reconnecting = false; + this.reconnectionAttempts = 0; + removeEventListener(CONNECT_FAILED, this.reconnect); + removeEventListener(CONNECT, this.reconnect); + } + public function setBuffer(b:Boolean):void{ + this.doBuffer = b; + if (((((!(this.doBuffer)) && (this.connected))) && (this.buffer.length))){ + this.transport.payload(this.buffer); + this.buffer = new Vector.(); + }; + } + protected function onOpen():void{ + this._open = true; + } + protected function onClose():void{ + this._open = false; + } + protected function onConnect():void{ + if (!(this.connected)){ + this._connected = true; + this._connecting = false; + this.setBuffer(false); + this.emit(CONNECT); + }; + } + public function onDisconnect(reason:String):void{ + var wasConnected:Boolean = this.connected; + this._connected = false; + this._connecting = false; + this._open = false; + if (wasConnected){ + this.transport.disconnect(); + this.publish(DISCONNECT); + if (((((!((BOOTED == reason))) && (this.options.reconnect))) && (!(this.reconnecting)))){ + this.reconnect(); + }; + }; + } + protected function onPacket(packet:Packet):void{ + if ((((packet.type == ConnectPacket.TYPE)) && ((packet.endpoint == "")))){ + this.onConnect(); + }; + emit(Socket.PACKET, packet); + } + public function onError(err:Object):void{ + if ((((((((((err is ErrorPacket)) && (err.advice))) && (this.options.reconnect))) && ((err.advice == RECONNECT)))) && (this.connected))){ + this.disconnect(); + this.reconnect(); + }; + this.publish(ERROR, (((err is ErrorPacket)) ? err.reason : err)); + } + + } +}//package io diff --git a/flash_decompiled/watchdog/io/SocketNamespace.as b/flash_decompiled/watchdog/io/SocketNamespace.as new file mode 100644 index 0000000..3fde930 --- /dev/null +++ b/flash_decompiled/watchdog/io/SocketNamespace.as @@ -0,0 +1,96 @@ +package io { + import io.packet.*; + import io.event.*; + + public class SocketNamespace extends EventEmitter { + + protected var socket:Socket = null; + protected var name:String = ""; + protected var ackPackets:uint = 0; + protected var acks:Object; + + public function SocketNamespace(socket:Socket, name:String=""){ + this.acks = {}; + super(); + this.socket = socket; + this.socket.on(Socket.PACKET, this.onPacket); + this.name = ((name) || ("")); + this.ackPackets = 0; + this.acks = {}; + } + protected function $emit(... _args):void{ + super.emit.apply(this, _args); + } + protected function of(name:String):SocketNamespace{ + return (this.socket.of.call(this.socket, name)); + } + protected function packet(packet:Packet):void{ + packet.endpoint = this.name; + this.socket.packet(packet); + } + public function disconnect():void{ + if (this.name == ""){ + this.socket.disconnect(); + } else { + this.packet(new DisconnectPacket()); + this.$emit("disconnect"); + }; + } + override public function emit(name:String, ... _args):void{ + var lastArg:* = _args[(_args.length - 1)]; + var packet:EventPacket = new EventPacket(); + packet.name = name; + if ((lastArg is Function)){ + packet.id = ++this.ackPackets.toString(); + packet.ack = "data"; + this.acks[packet.id] = lastArg; + _args.splice(-1, 1); + }; + packet.args = _args; + this.packet(packet); + } + protected function onPacket(packet:Packet):void{ + var self:* = null; + var ack:* = null; + var params:* = null; + var ap:* = null; + var packet:* = packet; + ack = function (... _args):void{ + var p:AckPacket = new AckPacket(packet.id); + p.args = _args; + self.packet(p); + }; + self = this; + switch (packet.type){ + case DisconnectPacket.TYPE: + if (this.name == ""){ + this.socket.onDisconnect((((packet as DisconnectPacket).reason) || ("booted"))); + }; + break; + case MessagePacket.TYPE: + case JSONPacket.TYPE: + params = packet.getParams(); + if (packet.ack == "data"){ + params.push(ack); + } else { + this.packet(new AckPacket(packet.id)); + }; + this.$emit.apply(this, params); + return; + case AckPacket.TYPE: + ap = (packet as AckPacket); + if (this.acks[ap.ackId]){ + this.acks[ap.ackId].apply(this, ap.args); + delete this.acks[ap.ackId]; + }; + break; + case ErrorPacket.TYPE: + if ((packet as ErrorPacket).advice){ + return (this.socket.onError((packet as ErrorPacket))); + }; + }; + this.$emit.apply(this, packet.getParams()); + } + + } +}//package io diff --git a/flash_decompiled/watchdog/io/Transport.as b/flash_decompiled/watchdog/io/Transport.as new file mode 100644 index 0000000..6eacbe7 --- /dev/null +++ b/flash_decompiled/watchdog/io/Transport.as @@ -0,0 +1,122 @@ +package io { + import io.request.*; + import io.utils.*; + import io.packet.*; + import __AS3__.vec.*; + import avmplus.*; + import flash.utils.*; + import io.event.*; + + public class Transport extends EventEmitter implements IPollingRequestDelegate, IPostRequestDelegate { + + protected var socket:Socket; + protected var pollingRequest:PollingRequest; + protected var postRequest:PostRequest; + protected var session_id:String = null; + protected var closeTimer:Timer; + protected var opened:Boolean = false; + protected var closed:Boolean = false; + + public function Transport(socket:Socket){ + super(); + this.socket = socket; + this.pollingRequest = new PollingRequest(this); + this.postRequest = new PostRequest(this); + } + public function init(sid:String, heartbeat:Number, close:Number):void{ + trace((((("[transport] session: " + sid) + "\n\tclosetimeout: ") + close.toString()) + " (ms)")); + this.session_id = sid; + this.closeTimer = IOUtils.createTimer(close, this.onDisconnect); + this.onOpen(); + } + public function getURLFor(req:HTTPRequest):String{ + return (IOUtils.getSessionRequestURL(this.socket.options, this.session_id)); + } + public function disconnect():void{ + this.onDisconnect(Socket.BOOTED); + } + protected function get():void{ + if (!(this.opened)){ + return; + }; + this.pollingRequest.start(); + } + public function pollingRequestOnData(data:String):void{ + this.onData(data); + this.get(); + } + public function pollingRequestOnError():void{ + this.onClose(); + } + public function packet(packet:Packet):void{ + this.post(PacketFactory.encodePacket(packet)); + } + public function payload(payload:Vector.):void{ + this.post(PacketFactory.encodePayload(payload)); + } + protected function post(data:String):void{ + this.socket.setBuffer(true); + this.postRequest.data = data; + this.postRequest.start(); + } + public function postRequestOnSuccess():void{ + this.socket.setBuffer(false); + } + public function postRequestOnError():void{ + this.onClose(); + } + protected function onOpen():void{ + trace("[transport] onOpen"); + this.socket.setBuffer(false); + this.opened = true; + emit(Socket.OPEN); + this.get(); + this.closeTimer.reset(); + this.closeTimer.start(); + } + protected function onClose():void{ + trace("[transport] onClose"); + this.opened = false; + emit(Socket.CLOSE); + this.pollingRequest.stop(); + } + protected function onDisconnect(reason:String):void{ + trace(("[transport] onDisconnect: " + reason)); + if (((this.closed) && (this.opened))){ + this.onClose(); + }; + this.closeTimer.reset(); + emit(Socket.DISCONNECT, reason); + } + protected function onData(data:String):void{ + var msgs:Vector.; + var i:uint; + var l:uint; + trace(("[transport] onData: " + data)); + this.closeTimer.reset(); + if (((((this.socket.connected) || (this.socket.connecting))) || (this.socket.reconnecting))){ + this.closeTimer.start(); + }; + if (data !== ""){ + msgs = PacketFactory.decodePayload(data); + if (((msgs) && (msgs.length))){ + i = 0; + l = msgs.length; + while (i < l) { + this.onPacket(msgs[i]); + i++; + }; + }; + }; + } + protected function onPacket(packet:Packet):void{ + trace(("[transport] onPacket: " + getQualifiedClassName(packet))); + if (packet.type == HeartbeatPacket.TYPE){ + this.post(PacketFactory.encodePacket(new HeartbeatPacket())); + return; + }; + emit(Socket.PACKET, packet); + } + + } +}//package io diff --git a/flash_decompiled/watchdog/io/event/EmitterEvent.as b/flash_decompiled/watchdog/io/event/EmitterEvent.as new file mode 100644 index 0000000..d24cd4a --- /dev/null +++ b/flash_decompiled/watchdog/io/event/EmitterEvent.as @@ -0,0 +1,26 @@ +package io.event { + import flash.events.*; + + public class EmitterEvent extends Event { + + public static const EMIT:String = "EmitterEvent"; + + protected var _arguments:Array; + + public function EmitterEvent(type:String, arguments:Array, bubbles:Boolean=false, cancelable:Boolean=false){ + this._arguments = []; + this._arguments = arguments; + super(type, bubbles, cancelable); + } + public function get arguments():Array{ + return (this._arguments); + } + override public function clone():Event{ + return (new EmitterEvent(this.type, this.arguments)); + } + override public function toString():String{ + return (formatToString("AlarmEvent", "type", "bubbles", "cancelable", "eventPhase", "message")); + } + + } +}//package io.event diff --git a/flash_decompiled/watchdog/io/event/EventEmitter.as b/flash_decompiled/watchdog/io/event/EventEmitter.as new file mode 100644 index 0000000..e7c9c71 --- /dev/null +++ b/flash_decompiled/watchdog/io/event/EventEmitter.as @@ -0,0 +1,43 @@ +package io.event { + import flash.utils.*; + import flash.events.*; + + public class EventEmitter extends EventDispatcher { + + protected var callbacks:Dictionary; + + public function EventEmitter(){ + this.callbacks = new Dictionary(); + super(); + } + public function on(type:String, cb:Function):void{ + var type:* = type; + var cb:* = cb; + if (!(this.callbacks[cb])){ + this.callbacks[cb] = function (e:EmitterEvent):void{ + cb.apply(null, e.arguments); + }; + }; + addEventListener(type, this.callbacks[cb], false, 0, true); + } + override public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{ + super.removeEventListener(type, ((this.callbacks[listener]) || (listener)), useCapture); + } + public function once(type:String, cb:Function):void{ + var self:* = null; + var event_remover:* = null; + var type:* = type; + var cb:* = cb; + event_remover = function ():void{ + cb(); + self.removeEventListener(type, event_remover); + }; + self = this; + this.on(type, event_remover); + } + public function emit(name:String, ... _args):void{ + dispatchEvent(new EmitterEvent(name, _args)); + } + + } +}//package io.event diff --git a/flash_decompiled/watchdog/io/packet/AckPacket.as b/flash_decompiled/watchdog/io/packet/AckPacket.as new file mode 100644 index 0000000..26296ce --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/AckPacket.as @@ -0,0 +1,35 @@ +package io.packet { + + public class AckPacket extends Packet { + + public static const TYPE:String = "6"; + + public var ackId:String; + public var args:Array; + + public function AckPacket(aId:String=""):void{ + super(); + this.ackId = aId; + } + override public function get type():String{ + return (TYPE); + } + override protected function parseData(pieces:Array, data:String):void{ + pieces = data.match(/^([0-9]+)(\+)?(.*)/); + if (pieces){ + this.ackId = pieces[1]; + this.args = ((pieces[3]) ? (JSON.parse(pieces[3]) as Array) : []); + }; + } + override protected function getData():String{ + return ((this.ackId + ((((this.args) && ((this.args.length > 0)))) ? ("+" + JSON.stringify(this.args)) : ""))); + } + override public function getParams():Array{ + return ([]); + } + override public function equals(packet:Packet):Boolean{ + return (((super.equals(packet)) && ((this.ackId == packet["ackId"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/ConnectPacket.as b/flash_decompiled/watchdog/io/packet/ConnectPacket.as new file mode 100644 index 0000000..6e1eca2 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/ConnectPacket.as @@ -0,0 +1,26 @@ +package io.packet { + + public class ConnectPacket extends Packet { + + public static const TYPE:String = "1"; + + public var qs:String = null; + + override public function get type():String{ + return (TYPE); + } + override protected function parseData(pieces:Array, data:String):void{ + this.qs = ((data) || ("")); + } + override protected function getData():String{ + return (this.qs); + } + override public function getParams():Array{ + return (["connect"]); + } + override public function equals(packet:Packet):Boolean{ + return (((super.equals(packet)) && ((this.qs == packet["qs"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/DisconnectPacket.as b/flash_decompiled/watchdog/io/packet/DisconnectPacket.as new file mode 100644 index 0000000..5bda378 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/DisconnectPacket.as @@ -0,0 +1,20 @@ +package io.packet { + + public class DisconnectPacket extends Packet { + + public static const TYPE:String = "0"; + + public var reason:String = null; + + override public function get type():String{ + return (TYPE); + } + override public function getParams():Array{ + return (["disconnect", this.reason]); + } + override public function equals(packet:Packet):Boolean{ + return (((super.equals(packet)) && ((this.reason == packet["reason"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/ErrorPacket.as b/flash_decompiled/watchdog/io/packet/ErrorPacket.as new file mode 100644 index 0000000..c1b17c1 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/ErrorPacket.as @@ -0,0 +1,48 @@ +package io.packet { + + public class ErrorPacket extends Packet { + + public static const TYPE:String = "7"; + + protected static var REASONS:Array = ["transport not supported", "client not handshaken", "unauthorized"]; + protected static var ADVICE:String = "reconnect"; + + protected var _reason:String = ""; + protected var _advice:String = ""; + + override public function get type():String{ + return (TYPE); + } + public function get reason():String{ + return (this._reason); + } + public function set reason(r:String):void{ + if (REASONS.indexOf(r) > -1){ + this._reason = r; + }; + } + public function get advice():String{ + return (this._advice); + } + public function set advice(a:String):void{ + if (ADVICE == a){ + this._advice = a; + }; + } + override protected function parseData(pieces:Array, data:String):void{ + pieces = data.split("+"); + this._reason = ((REASONS[pieces[0]]) || ("")); + this._advice = (((pieces[1] == "0")) ? ADVICE : ""); + } + override protected function getData():String{ + return ((((this.reason.length) ? REASONS.indexOf(this.reason) : "") + ((this.advice.length) ? "+0" : ""))); + } + override public function getParams():Array{ + return ([(((this.reason == REASONS[2])) ? "connect_failed" : "error"), this.reason]); + } + override public function equals(packet:Packet):Boolean{ + return (((((super.equals(packet)) && ((this.reason == packet["reason"])))) && ((this.advice == packet["advice"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/EventPacket.as b/flash_decompiled/watchdog/io/packet/EventPacket.as new file mode 100644 index 0000000..0365673 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/EventPacket.as @@ -0,0 +1,43 @@ +package io.packet { + + public class EventPacket extends Packet { + + public static const TYPE:String = "5"; + + public var args:Array; + public var name:String = ""; + + public function EventPacket(){ + this.args = []; + super(); + } + override public function get type():String{ + return (TYPE); + } + override protected function parseData(pieces:Array, data:String):void{ + var opts:Object; + try { + opts = JSON.parse(data); + this.name = opts.name; + this.args = ((opts.args) || ([])); + } catch(e:SyntaxError) { + }; + } + override protected function getData():String{ + var ev:Object = {name:this.name}; + if (((this.args) && (this.args.length))){ + ev.args = this.args; + }; + return (JSON.stringify(ev)); + } + override public function getParams():Array{ + var ret:Array = [this.name].concat(this.args); + (((ack == "data")) && (ret.push(ack))); + return (ret); + } + override public function equals(packet:Packet):Boolean{ + return (((super.equals(packet)) && ((this.name == packet["name"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/HeartbeatPacket.as b/flash_decompiled/watchdog/io/packet/HeartbeatPacket.as new file mode 100644 index 0000000..cd08588 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/HeartbeatPacket.as @@ -0,0 +1,12 @@ +package io.packet { + + public class HeartbeatPacket extends Packet { + + public static const TYPE:String = "2"; + + override public function get type():String{ + return (TYPE); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/JSONPacket.as b/flash_decompiled/watchdog/io/packet/JSONPacket.as new file mode 100644 index 0000000..a38cdd1 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/JSONPacket.as @@ -0,0 +1,29 @@ +package io.packet { + + public class JSONPacket extends Packet { + + public static const TYPE:String = "4"; + + public var data:Object; + + public function JSONPacket(){ + this.data = {}; + super(); + } + override public function get type():String{ + return (TYPE); + } + override protected function parseData(pieces:Array, data:String):void{ + this.data = JSON.parse(data); + } + override protected function getData():String{ + return (JSON.stringify(this.data)); + } + override public function getParams():Array{ + var ret:Array = ["message", this.data]; + (((ack == "data")) && (ret.push(ack))); + return (ret); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/MessagePacket.as b/flash_decompiled/watchdog/io/packet/MessagePacket.as new file mode 100644 index 0000000..0fb2273 --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/MessagePacket.as @@ -0,0 +1,26 @@ +package io.packet { + + public class MessagePacket extends Packet { + + public static const TYPE:String = "3"; + + public var data:String = ""; + + override public function get type():String{ + return (TYPE); + } + override protected function parseData(pieces:Array, data:String):void{ + this.data = data; + } + override protected function getData():String{ + return (this.data); + } + override public function getParams():Array{ + return (["message", this.data]); + } + override public function equals(packet:Packet):Boolean{ + return (((super.equals(packet)) && ((this.data == packet["data"])))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/Packet.as b/flash_decompiled/watchdog/io/packet/Packet.as new file mode 100644 index 0000000..5c507da --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/Packet.as @@ -0,0 +1,43 @@ +package io.packet { + + public class Packet { + + public static const TYPE:String = "8"; + + public var endpoint:String = ""; + public var id:String = ""; + public var ack:String = ""; + + public function get type():String{ + return (TYPE); + } + public function fromData(pieces:Array):Packet{ + this.endpoint = ((pieces[4]) || ("")); + if (pieces[2]){ + this.id = ((pieces[2]) || ("")); + this.ack = ((pieces[3]) ? "data" : "true"); + }; + this.parseData(pieces, ((pieces[5]) || (""))); + return (this); + } + protected function parseData(pieces:Array, data:String):void{ + } + public function toData():String{ + var encoded:Array = [this.type, (this.id + (((this.ack == "data")) ? "+" : "")), this.endpoint]; + if (this.getData()){ + encoded.push(this.getData()); + }; + return (encoded.join(":")); + } + protected function getData():String{ + return (""); + } + public function getParams():Array{ + return (["noop"]); + } + public function equals(packet:Packet):Boolean{ + return ((((((((this.type == packet.type)) && ((this.endpoint == packet.endpoint)))) && ((this.id == packet.id)))) && ((this.ack == packet.ack)))); + } + + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/packet/PacketFactory.as b/flash_decompiled/watchdog/io/packet/PacketFactory.as new file mode 100644 index 0000000..c1d854a --- /dev/null +++ b/flash_decompiled/watchdog/io/packet/PacketFactory.as @@ -0,0 +1,67 @@ +package io.packet { + import flash.utils.*; + import __AS3__.vec.*; + + public class PacketFactory { + + public static var PACKET_TYPE_MAP:Dictionary = new Dictionary(); + + public static function decodePacket(data:String):Packet{ + var pieces:Array = data.match(/([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/); + if ((PACKET_TYPE_MAP[pieces[1]] is Class)){ + return (new ((PACKET_TYPE_MAP[pieces[1]] as Class))().fromData(pieces)); + }; + return (null); + } + public static function decodePayload(data:String):Vector.{ + var i:uint; + var length:String; + var ret:Vector. = new Vector.(); + if (data.charAt(0) == "�"){ + i = 1; + length = ""; + while (i < data.length) { + if (data.charAt(i) == "�"){ + ret.push(decodePacket(data.substr((i + 1)).substr(0, parseInt(length)))); + i = (i + (Number(length) + 1)); + length = ""; + } else { + length = (length + data.charAt(i)); + }; + i++; + }; + } else { + ret.push(decodePacket(data)); + }; + return (ret); + } + public static function encodePacket(packet:Packet):String{ + return (packet.toData()); + } + public static function encodePayload(packets:Vector.):String{ + var packet:String; + var encoded:String = ""; + if (packets.length == 1){ + return (packets[0].toData()); + }; + var i:uint; + var l:uint = packets.length; + while (i < l) { + packet = packets[i].toData(); + encoded = (encoded + ((("�" + packet.length) + "�") + packet)); + i++; + }; + return (encoded); + } + + PACKET_TYPE_MAP[DisconnectPacket.TYPE] = DisconnectPacket; + PACKET_TYPE_MAP[ConnectPacket.TYPE] = ConnectPacket; + PACKET_TYPE_MAP[HeartbeatPacket.TYPE] = HeartbeatPacket; + PACKET_TYPE_MAP[MessagePacket.TYPE] = MessagePacket; + PACKET_TYPE_MAP[JSONPacket.TYPE] = JSONPacket; + PACKET_TYPE_MAP[EventPacket.TYPE] = EventPacket; + PACKET_TYPE_MAP[AckPacket.TYPE] = AckPacket; + PACKET_TYPE_MAP[ErrorPacket.TYPE] = ErrorPacket; + PACKET_TYPE_MAP[Packet.TYPE] = Packet; + } +}//package io.packet diff --git a/flash_decompiled/watchdog/io/request/HTTPRequest.as b/flash_decompiled/watchdog/io/request/HTTPRequest.as new file mode 100644 index 0000000..9fb9fa4 --- /dev/null +++ b/flash_decompiled/watchdog/io/request/HTTPRequest.as @@ -0,0 +1,34 @@ +package io.request { + import flash.net.*; + import flash.events.*; + + public class HTTPRequest { + + protected var _delegate:IHTTPRequestDelegate; + protected var request:URLRequest; + protected var stream:URLStream; + + public function HTTPRequest(d:IHTTPRequestDelegate){ + this.request = new URLRequest(); + this.stream = new URLStream(); + super(); + this._delegate = d; + this.stream.addEventListener(IOErrorEvent.IO_ERROR, this.onError, false, 0, true); + this.stream.addEventListener(Event.COMPLETE, this.onComplete, false, 0, true); + } + public function start():void{ + this.request.url = this._delegate.getURLFor(this); + this.stream.load(this.request); + } + public function stop():void{ + if (this.stream.connected){ + this.stream.close(); + }; + } + protected function onError(event:IOErrorEvent):void{ + } + protected function onComplete(event:Event):void{ + } + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/request/IHTTPRequestDelegate.as b/flash_decompiled/watchdog/io/request/IHTTPRequestDelegate.as new file mode 100644 index 0000000..17b3b18 --- /dev/null +++ b/flash_decompiled/watchdog/io/request/IHTTPRequestDelegate.as @@ -0,0 +1,8 @@ +package io.request { + + public interface IHTTPRequestDelegate { + + function getURLFor(_arg1:HTTPRequest):String; + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/request/IPollingRequestDelegate.as b/flash_decompiled/watchdog/io/request/IPollingRequestDelegate.as new file mode 100644 index 0000000..3f90b6c --- /dev/null +++ b/flash_decompiled/watchdog/io/request/IPollingRequestDelegate.as @@ -0,0 +1,9 @@ +package io.request { + + public interface IPollingRequestDelegate extends IHTTPRequestDelegate { + + function pollingRequestOnData(_arg1:String):void; + function pollingRequestOnError():void; + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/request/IPostRequestDelegate.as b/flash_decompiled/watchdog/io/request/IPostRequestDelegate.as new file mode 100644 index 0000000..14448e5 --- /dev/null +++ b/flash_decompiled/watchdog/io/request/IPostRequestDelegate.as @@ -0,0 +1,9 @@ +package io.request { + + public interface IPostRequestDelegate extends IHTTPRequestDelegate { + + function postRequestOnSuccess():void; + function postRequestOnError():void; + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/request/PollingRequest.as b/flash_decompiled/watchdog/io/request/PollingRequest.as new file mode 100644 index 0000000..3b87e45 --- /dev/null +++ b/flash_decompiled/watchdog/io/request/PollingRequest.as @@ -0,0 +1,28 @@ +package io.request { + import flash.net.*; + import flash.events.*; + + public class PollingRequest extends HTTPRequest { + + public function PollingRequest(delegate:IPollingRequestDelegate){ + super(delegate); + request.method = URLRequestMethod.GET; + } + protected function get delegate():IPollingRequestDelegate{ + return ((_delegate as IPollingRequestDelegate)); + } + override public function start():void{ + super.start(); + trace(("[polling request] opening: " + request.url)); + } + override protected function onError(event:IOErrorEvent):void{ + this.delegate.pollingRequestOnError(); + } + override protected function onComplete(event:Event):void{ + if (stream.bytesAvailable){ + this.delegate.pollingRequestOnData(stream.readUTFBytes(stream.bytesAvailable)); + }; + } + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/request/PostRequest.as b/flash_decompiled/watchdog/io/request/PostRequest.as new file mode 100644 index 0000000..e783b09 --- /dev/null +++ b/flash_decompiled/watchdog/io/request/PostRequest.as @@ -0,0 +1,34 @@ +package io.request { + import flash.net.*; + import flash.events.*; + + public class PostRequest extends HTTPRequest { + + protected var _data:String; + + public function PostRequest(d:IPostRequestDelegate){ + super(d); + request.method = URLRequestMethod.POST; + request.contentType = "text/plain;charset=UTF-8"; + } + public function set data(d:String):void{ + this._data = d; + } + protected function get delegate():IPostRequestDelegate{ + return ((_delegate as IPostRequestDelegate)); + } + override public function start():void{ + request.data = this._data; + super.start(); + trace(("[post request] sending: " + this._data)); + } + override protected function onError(event:IOErrorEvent):void{ + this.delegate.postRequestOnError(); + } + override protected function onComplete(event:Event):void{ + this.delegate.postRequestOnSuccess(); + trace("[post request] sent"); + } + + } +}//package io.request diff --git a/flash_decompiled/watchdog/io/utils/IOUtils.as b/flash_decompiled/watchdog/io/utils/IOUtils.as new file mode 100644 index 0000000..0bfbba5 --- /dev/null +++ b/flash_decompiled/watchdog/io/utils/IOUtils.as @@ -0,0 +1,22 @@ +package io.utils { + import flash.utils.*; + import flash.events.*; + import io.*; + + public class IOUtils { + + public static function createTimer(timeout:uint, cb:Function):Timer{ + var timer:Timer = new Timer(timeout); + timer.addEventListener(TimerEvent.TIMER_COMPLETE, cb, false, 0, true); + timer.start(); + return (timer); + } + public static function getRequestURL(options:Options):String{ + return ([(("http" + ((options.secure) ? "s" : "")) + ":/"), ((options.host + ":") + options.port), options.resource, IO.protocol, ("?t=" + new Date().time)].join("/")); + } + public static function getSessionRequestURL(options:Options, session:String):String{ + return ([(("http" + ((options.secure) ? "s" : "")) + ":/"), ((options.host + ":") + options.port), options.resource, IO.protocol, "xhr-polling", session, ("?t=" + new Date().time)].join("/")); + } + + } +}//package io.utils diff --git a/flash_decompiled/watchdog/io/utils/URI.as b/flash_decompiled/watchdog/io/utils/URI.as new file mode 100644 index 0000000..9697c7b --- /dev/null +++ b/flash_decompiled/watchdog/io/utils/URI.as @@ -0,0 +1,34 @@ +package io.utils { + + public class URI { + + protected static var re:RegExp = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; + protected static var parts:Array = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"]; + + public var source:String; + public var protocol:String; + public var authority:String; + public var userInfo:String; + public var user:String; + public var password:String; + public var host:String; + public var port:String; + public var relative:String; + public var path:String; + public var directory:String; + public var file:String; + public var query:String; + public var anchor:String; + + public static function buildURI(str:String=""):URI{ + var m:Object = str.match(re); + var uri:URI = new (URI)(); + var i:uint = 14; + while (i--) { + uri[parts[i]] = ((m[i]) || ("")); + }; + return (uri); + } + + } +}//package io.utils diff --git a/flash_decompiled/watchdog/mcBmp2.as b/flash_decompiled/watchdog/mcBmp2.as new file mode 100644 index 0000000..e1775c8 --- /dev/null +++ b/flash_decompiled/watchdog/mcBmp2.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcBmp2 extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/mcLineWAD.as b/flash_decompiled/watchdog/mcLineWAD.as new file mode 100644 index 0000000..57c1f4f --- /dev/null +++ b/flash_decompiled/watchdog/mcLineWAD.as @@ -0,0 +1,12 @@ +package { + import flash.display.*; + + public dynamic class mcLineWAD extends MovieClip { + + public var mcWhite:MovieClip; + public var mcRed:MovieClip; + public var mcGreen:MovieClip; + public var mcBlue:MovieClip; + + } +}//package diff --git a/flash_decompiled/watchdog/mcMaskAlpha.as b/flash_decompiled/watchdog/mcMaskAlpha.as new file mode 100644 index 0000000..9ecb24c --- /dev/null +++ b/flash_decompiled/watchdog/mcMaskAlpha.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcMaskAlpha extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/mcMaskHelp.as b/flash_decompiled/watchdog/mcMaskHelp.as new file mode 100644 index 0000000..05311de --- /dev/null +++ b/flash_decompiled/watchdog/mcMaskHelp.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcMaskHelp extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/mcScrollCarret.as b/flash_decompiled/watchdog/mcScrollCarret.as new file mode 100644 index 0000000..3efdd3d --- /dev/null +++ b/flash_decompiled/watchdog/mcScrollCarret.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class mcScrollCarret extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/mx/core/BitmapAsset.as b/flash_decompiled/watchdog/mx/core/BitmapAsset.as new file mode 100644 index 0000000..dd5f862 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/BitmapAsset.as @@ -0,0 +1,316 @@ +package mx.core { + import flash.system.*; + import flash.events.*; + import flash.display.*; + import flash.geom.*; + + public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject, ILayoutDirectionElement { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var FlexVersionClass:Class; + private static var MatrixUtilClass:Class; + + private var layoutFeaturesClass:Class; + private var layoutFeatures:IAssetLayoutFeatures; + private var _height:Number; + private var _layoutDirection:String = "ltr"; + + public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ + var appDomain:ApplicationDomain; + super(bitmapData, pixelSnapping, smoothing); + if (FlexVersionClass == null){ + appDomain = ApplicationDomain.currentDomain; + if (appDomain.hasDefinition("mx.core::FlexVersion")){ + FlexVersionClass = Class(appDomain.getDefinition("mx.core::FlexVersion")); + }; + }; + if (((FlexVersionClass) && ((FlexVersionClass["compatibilityVersion"] >= FlexVersionClass["VERSION_4_0"])))){ + this.addEventListener(Event.ADDED, this.addedHandler); + }; + } + override public function get x():Number{ + return (((this.layoutFeatures)==null) ? super.x : this.layoutFeatures.layoutX); + } + override public function set x(value:Number):void{ + if (this.x == value){ + return; + }; + if (this.layoutFeatures == null){ + super.x = value; + } else { + this.layoutFeatures.layoutX = value; + this.validateTransformMatrix(); + }; + } + override public function get y():Number{ + return (((this.layoutFeatures)==null) ? super.y : this.layoutFeatures.layoutY); + } + override public function set y(value:Number):void{ + if (this.y == value){ + return; + }; + if (this.layoutFeatures == null){ + super.y = value; + } else { + this.layoutFeatures.layoutY = value; + this.validateTransformMatrix(); + }; + } + override public function get z():Number{ + return (((this.layoutFeatures)==null) ? super.z : this.layoutFeatures.layoutZ); + } + override public function set z(value:Number):void{ + if (this.z == value){ + return; + }; + if (this.layoutFeatures == null){ + super.z = value; + } else { + this.layoutFeatures.layoutZ = value; + this.validateTransformMatrix(); + }; + } + override public function get width():Number{ + var p:Point; + if (this.layoutFeatures == null){ + return (super.width); + }; + if (MatrixUtilClass != null){ + p = MatrixUtilClass["transformSize"](this.layoutFeatures.layoutWidth, this._height, transform.matrix); + }; + return (((p) ? p.x : super.width)); + } + override public function set width(value:Number):void{ + if (this.width == value){ + return; + }; + if (this.layoutFeatures == null){ + super.width = value; + } else { + this.layoutFeatures.layoutWidth = value; + this.layoutFeatures.layoutScaleX = ((!((this.measuredWidth == 0))) ? (value / this.measuredWidth) : 0); + this.validateTransformMatrix(); + }; + } + override public function get height():Number{ + var p:Point; + if (this.layoutFeatures == null){ + return (super.height); + }; + if (MatrixUtilClass != null){ + p = MatrixUtilClass["transformSize"](this.layoutFeatures.layoutWidth, this._height, transform.matrix); + }; + return (((p) ? p.y : super.height)); + } + override public function set height(value:Number):void{ + if (this.height == value){ + return; + }; + if (this.layoutFeatures == null){ + super.height = value; + } else { + this._height = value; + this.layoutFeatures.layoutScaleY = ((!((this.measuredHeight == 0))) ? (value / this.measuredHeight) : 0); + this.validateTransformMatrix(); + }; + } + override public function get rotationX():Number{ + return (((this.layoutFeatures)==null) ? super.rotationX : this.layoutFeatures.layoutRotationX); + } + override public function set rotationX(value:Number):void{ + if (this.rotationX == value){ + return; + }; + if (this.layoutFeatures == null){ + super.rotationX = value; + } else { + this.layoutFeatures.layoutRotationX = value; + this.validateTransformMatrix(); + }; + } + override public function get rotationY():Number{ + return (((this.layoutFeatures)==null) ? super.rotationY : this.layoutFeatures.layoutRotationY); + } + override public function set rotationY(value:Number):void{ + if (this.rotationY == value){ + return; + }; + if (this.layoutFeatures == null){ + super.rotationY = value; + } else { + this.layoutFeatures.layoutRotationY = value; + this.validateTransformMatrix(); + }; + } + override public function get rotationZ():Number{ + return (((this.layoutFeatures)==null) ? super.rotationZ : this.layoutFeatures.layoutRotationZ); + } + override public function set rotationZ(value:Number):void{ + if (this.rotationZ == value){ + return; + }; + if (this.layoutFeatures == null){ + super.rotationZ = value; + } else { + this.layoutFeatures.layoutRotationZ = value; + this.validateTransformMatrix(); + }; + } + override public function get rotation():Number{ + return (((this.layoutFeatures)==null) ? super.rotation : this.layoutFeatures.layoutRotationZ); + } + override public function set rotation(value:Number):void{ + if (this.rotation == value){ + return; + }; + if (this.layoutFeatures == null){ + super.rotation = value; + } else { + this.layoutFeatures.layoutRotationZ = value; + this.validateTransformMatrix(); + }; + } + override public function get scaleX():Number{ + return (((this.layoutFeatures)==null) ? super.scaleX : this.layoutFeatures.layoutScaleX); + } + override public function set scaleX(value:Number):void{ + if (this.scaleX == value){ + return; + }; + if (this.layoutFeatures == null){ + super.scaleX = value; + } else { + this.layoutFeatures.layoutScaleX = value; + this.layoutFeatures.layoutWidth = (Math.abs(value) * this.measuredWidth); + this.validateTransformMatrix(); + }; + } + override public function get scaleY():Number{ + return (((this.layoutFeatures)==null) ? super.scaleY : this.layoutFeatures.layoutScaleY); + } + override public function set scaleY(value:Number):void{ + if (this.scaleY == value){ + return; + }; + if (this.layoutFeatures == null){ + super.scaleY = value; + } else { + this.layoutFeatures.layoutScaleY = value; + this._height = (Math.abs(value) * this.measuredHeight); + this.validateTransformMatrix(); + }; + } + override public function get scaleZ():Number{ + return (((this.layoutFeatures)==null) ? super.scaleZ : this.layoutFeatures.layoutScaleZ); + } + override public function set scaleZ(value:Number):void{ + if (this.scaleZ == value){ + return; + }; + if (this.layoutFeatures == null){ + super.scaleZ = value; + } else { + this.layoutFeatures.layoutScaleZ = value; + this.validateTransformMatrix(); + }; + } + public function get layoutDirection():String{ + return (this._layoutDirection); + } + public function set layoutDirection(value:String):void{ + if (value == this._layoutDirection){ + return; + }; + this._layoutDirection = value; + this.invalidateLayoutDirection(); + } + public function get measuredHeight():Number{ + if (bitmapData){ + return (bitmapData.height); + }; + return (0); + } + public function get measuredWidth():Number{ + if (bitmapData){ + return (bitmapData.width); + }; + return (0); + } + public function invalidateLayoutDirection():void{ + var mirror:Boolean; + var p:DisplayObjectContainer = parent; + while (p) { + if ((p is ILayoutDirectionElement)){ + mirror = ((((!((this._layoutDirection == null))) && (!((ILayoutDirectionElement(p).layoutDirection == null))))) && (!((this._layoutDirection == ILayoutDirectionElement(p).layoutDirection)))); + if (((mirror) && ((this.layoutFeatures == null)))){ + this.initAdvancedLayoutFeatures(); + if (this.layoutFeatures != null){ + this.layoutFeatures.mirror = mirror; + this.validateTransformMatrix(); + }; + } else { + if (((!(mirror)) && (this.layoutFeatures))){ + this.layoutFeatures.mirror = mirror; + this.validateTransformMatrix(); + this.layoutFeatures = null; + }; + }; + break; + }; + p = p.parent; + }; + } + public function move(x:Number, y:Number):void{ + this.x = x; + this.y = y; + } + public function setActualSize(newWidth:Number, newHeight:Number):void{ + this.width = newWidth; + this.height = newHeight; + } + private function addedHandler(event:Event):void{ + this.invalidateLayoutDirection(); + } + private function initAdvancedLayoutFeatures():void{ + var appDomain:ApplicationDomain; + var features:IAssetLayoutFeatures; + if (this.layoutFeaturesClass == null){ + appDomain = ApplicationDomain.currentDomain; + if (appDomain.hasDefinition("mx.core::AdvancedLayoutFeatures")){ + this.layoutFeaturesClass = Class(appDomain.getDefinition("mx.core::AdvancedLayoutFeatures")); + }; + if (MatrixUtilClass == null){ + if (appDomain.hasDefinition("mx.utils::MatrixUtil")){ + MatrixUtilClass = Class(appDomain.getDefinition("mx.utils::MatrixUtil")); + }; + }; + }; + if (this.layoutFeaturesClass != null){ + features = new this.layoutFeaturesClass(); + features.layoutScaleX = this.scaleX; + features.layoutScaleY = this.scaleY; + features.layoutScaleZ = this.scaleZ; + features.layoutRotationX = this.rotationX; + features.layoutRotationY = this.rotationY; + features.layoutRotationZ = this.rotation; + features.layoutX = this.x; + features.layoutY = this.y; + features.layoutZ = this.z; + features.layoutWidth = this.width; + this._height = this.height; + this.layoutFeatures = features; + }; + } + private function validateTransformMatrix():void{ + if (this.layoutFeatures != null){ + if (this.layoutFeatures.is3D){ + super.transform.matrix3D = this.layoutFeatures.computedMatrix3D; + } else { + super.transform.matrix = this.layoutFeatures.computedMatrix; + }; + }; + } + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/FlexBitmap.as b/flash_decompiled/watchdog/mx/core/FlexBitmap.as new file mode 100644 index 0000000..49a403f --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/FlexBitmap.as @@ -0,0 +1,21 @@ +package mx.core { + import mx.utils.*; + import flash.display.*; + + public class FlexBitmap extends Bitmap { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ + super(bitmapData, pixelSnapping, smoothing); + try { + name = NameUtil.createUniqueName(this); + } catch(e:Error) { + }; + } + override public function toString():String{ + return (NameUtil.displayObjectToString(this)); + } + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/IAssetLayoutFeatures.as b/flash_decompiled/watchdog/mx/core/IAssetLayoutFeatures.as new file mode 100644 index 0000000..4cdf5f3 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/IAssetLayoutFeatures.as @@ -0,0 +1,48 @@ +package mx.core { + import flash.geom.*; + + public interface IAssetLayoutFeatures { + + function set layoutX(_arg1:Number):void; + function get layoutX():Number; + function set layoutY(_arg1:Number):void; + function get layoutY():Number; + function set layoutZ(_arg1:Number):void; + function get layoutZ():Number; + function get layoutWidth():Number; + function set layoutWidth(_arg1:Number):void; + function set transformX(_arg1:Number):void; + function get transformX():Number; + function set transformY(_arg1:Number):void; + function get transformY():Number; + function set transformZ(_arg1:Number):void; + function get transformZ():Number; + function set layoutRotationX(_arg1:Number):void; + function get layoutRotationX():Number; + function set layoutRotationY(_arg1:Number):void; + function get layoutRotationY():Number; + function set layoutRotationZ(_arg1:Number):void; + function get layoutRotationZ():Number; + function set layoutScaleX(_arg1:Number):void; + function get layoutScaleX():Number; + function set layoutScaleY(_arg1:Number):void; + function get layoutScaleY():Number; + function set layoutScaleZ(_arg1:Number):void; + function get layoutScaleZ():Number; + function set layoutMatrix(_arg1:Matrix):void; + function get layoutMatrix():Matrix; + function set layoutMatrix3D(_arg1:Matrix3D):void; + function get layoutMatrix3D():Matrix3D; + function get is3D():Boolean; + function get layoutIs3D():Boolean; + function get mirror():Boolean; + function set mirror(_arg1:Boolean):void; + function get stretchX():Number; + function set stretchX(_arg1:Number):void; + function get stretchY():Number; + function set stretchY(_arg1:Number):void; + function get computedMatrix():Matrix; + function get computedMatrix3D():Matrix3D; + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/IFlexAsset.as b/flash_decompiled/watchdog/mx/core/IFlexAsset.as new file mode 100644 index 0000000..c145a44 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/IFlexAsset.as @@ -0,0 +1,6 @@ +package mx.core { + + public interface IFlexAsset { + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/IFlexDisplayObject.as b/flash_decompiled/watchdog/mx/core/IFlexDisplayObject.as new file mode 100644 index 0000000..cbceae6 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/IFlexDisplayObject.as @@ -0,0 +1,65 @@ +package mx.core { + import flash.display.*; + import flash.geom.*; + import flash.accessibility.*; + import flash.events.*; + + public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { + + function get root():DisplayObject; + function get stage():Stage; + function get name():String; + function set name(_arg1:String):void; + function get parent():DisplayObjectContainer; + function get mask():DisplayObject; + function set mask(_arg1:DisplayObject):void; + function get visible():Boolean; + function set visible(_arg1:Boolean):void; + function get x():Number; + function set x(_arg1:Number):void; + function get y():Number; + function set y(_arg1:Number):void; + function get scaleX():Number; + function set scaleX(_arg1:Number):void; + function get scaleY():Number; + function set scaleY(_arg1:Number):void; + function get mouseX():Number; + function get mouseY():Number; + function get rotation():Number; + function set rotation(_arg1:Number):void; + function get alpha():Number; + function set alpha(_arg1:Number):void; + function get width():Number; + function set width(_arg1:Number):void; + function get height():Number; + function set height(_arg1:Number):void; + function get cacheAsBitmap():Boolean; + function set cacheAsBitmap(_arg1:Boolean):void; + function get opaqueBackground():Object; + function set opaqueBackground(_arg1:Object):void; + function get scrollRect():Rectangle; + function set scrollRect(_arg1:Rectangle):void; + function get filters():Array; + function set filters(_arg1:Array):void; + function get blendMode():String; + function set blendMode(_arg1:String):void; + function get transform():Transform; + function set transform(_arg1:Transform):void; + function get scale9Grid():Rectangle; + function set scale9Grid(_arg1:Rectangle):void; + function globalToLocal(_arg1:Point):Point; + function localToGlobal(_arg1:Point):Point; + function getBounds(_arg1:DisplayObject):Rectangle; + function getRect(_arg1:DisplayObject):Rectangle; + function get loaderInfo():LoaderInfo; + function hitTestObject(_arg1:DisplayObject):Boolean; + function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; + function get accessibilityProperties():AccessibilityProperties; + function set accessibilityProperties(_arg1:AccessibilityProperties):void; + function get measuredHeight():Number; + function get measuredWidth():Number; + function move(_arg1:Number, _arg2:Number):void; + function setActualSize(_arg1:Number, _arg2:Number):void; + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/ILayoutDirectionElement.as b/flash_decompiled/watchdog/mx/core/ILayoutDirectionElement.as new file mode 100644 index 0000000..ee4f274 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/ILayoutDirectionElement.as @@ -0,0 +1,10 @@ +package mx.core { + + public interface ILayoutDirectionElement { + + function get layoutDirection():String; + function set layoutDirection(_arg1:String):void; + function invalidateLayoutDirection():void; + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/IRepeaterClient.as b/flash_decompiled/watchdog/mx/core/IRepeaterClient.as new file mode 100644 index 0000000..3e99832 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/IRepeaterClient.as @@ -0,0 +1,15 @@ +package mx.core { + + public interface IRepeaterClient { + + function get instanceIndices():Array; + function set instanceIndices(_arg1:Array):void; + function get isDocument():Boolean; + function get repeaterIndices():Array; + function set repeaterIndices(_arg1:Array):void; + function get repeaters():Array; + function set repeaters(_arg1:Array):void; + function initializeRepeaterArrays(_arg1:IRepeaterClient):void; + + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/SoundAsset.as b/flash_decompiled/watchdog/mx/core/SoundAsset.as new file mode 100644 index 0000000..34d49e5 --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/SoundAsset.as @@ -0,0 +1,12 @@ +package mx.core { + import flash.media.*; + + public class SoundAsset extends Sound implements IFlexAsset { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public function SoundAsset(){ + super(); + } + } +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/core/mx_internal.as b/flash_decompiled/watchdog/mx/core/mx_internal.as new file mode 100644 index 0000000..a1181ae --- /dev/null +++ b/flash_decompiled/watchdog/mx/core/mx_internal.as @@ -0,0 +1,4 @@ +package mx.core { + + public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; +}//package mx.core diff --git a/flash_decompiled/watchdog/mx/utils/NameUtil.as b/flash_decompiled/watchdog/mx/utils/NameUtil.as new file mode 100644 index 0000000..2831a53 --- /dev/null +++ b/flash_decompiled/watchdog/mx/utils/NameUtil.as @@ -0,0 +1,67 @@ +package mx.utils { + import flash.utils.*; + import flash.display.*; + import mx.core.*; + + public class NameUtil { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var counter:int = 0; + + public static function createUniqueName(object:Object):String{ + if (!(object)){ + return (null); + }; + var name:String = getQualifiedClassName(object); + var index:int = name.indexOf("::"); + if (index != -1){ + name = name.substr((index + 2)); + }; + var charCode:int = name.charCodeAt((name.length - 1)); + if ((((charCode >= 48)) && ((charCode <= 57)))){ + name = (name + "_"); + }; + return ((name + counter++)); + } + public static function displayObjectToString(displayObject:DisplayObject):String{ + var result:String; + var o:DisplayObject; + var s:String; + var indices:Array; + try { + o = displayObject; + while (o != null) { + if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ + break; + }; + s = ((((("id" in o)) && (o["id"]))) ? o["id"] : o.name); + if ((o is IRepeaterClient)){ + indices = IRepeaterClient(o).instanceIndices; + if (indices){ + s = (s + (("[" + indices.join("][")) + "]")); + }; + }; + result = (((result == null)) ? s : ((s + ".") + result)); + o = o.parent; + }; + } catch(e:SecurityError) { + }; + return (result); + } + public static function getUnqualifiedClassName(object:Object):String{ + var name:String; + if ((object is String)){ + name = (object as String); + } else { + name = getQualifiedClassName(object); + }; + var index:int = name.indexOf("::"); + if (index != -1){ + name = name.substr((index + 2)); + }; + return (name); + } + + } +}//package mx.utils diff --git a/flash_decompiled/watchdog/scrolbar_bg.as b/flash_decompiled/watchdog/scrolbar_bg.as new file mode 100644 index 0000000..3928c5e --- /dev/null +++ b/flash_decompiled/watchdog/scrolbar_bg.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class scrolbar_bg extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/separator.as b/flash_decompiled/watchdog/separator.as new file mode 100644 index 0000000..23d305c --- /dev/null +++ b/flash_decompiled/watchdog/separator.as @@ -0,0 +1,7 @@ +package { + import flash.display.*; + + public dynamic class separator extends MovieClip { + + } +}//package diff --git a/flash_decompiled/watchdog/wd/core/AppState.as b/flash_decompiled/watchdog/wd/core/AppState.as new file mode 100644 index 0000000..13bc37f --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/AppState.as @@ -0,0 +1,249 @@ +package wd.core { + import wd.http.*; + import wd.utils.*; + + public class AppState { + + private static var shift:int = 0; + public static var TRANSPORTS:int = (1 << shift++); + public static var NETWORKS:int = (1 << shift++); + public static var FURNITURE:int = (1 << shift++); + public static var SOCIAL:int = (1 << shift++); + private static var _menus:uint = 0; + private static var _state:uint; + private static var _isHQ:Boolean = true; + + public function AppState(state:uint){ + super(); + AppState.state = state; + if (isActive(DataType.METRO_STATIONS)){ + deactivateMenu(TRANSPORTS); + }; + if (isActive(DataType.VELO_STATIONS)){ + deactivateMenu(TRANSPORTS); + }; + if (isActive(DataType.INTERNET_RELAYS)){ + deactivateMenu(NETWORKS); + }; + if (isActive(DataType.MOBILES)){ + deactivateMenu(NETWORKS); + }; + if (isActive(DataType.WIFIS)){ + deactivateMenu(NETWORKS); + }; + if (isActive(DataType.ADS)){ + deactivateMenu(FURNITURE); + }; + if (isActive(DataType.ATMS)){ + deactivateMenu(FURNITURE); + }; + if (isActive(DataType.TRAFFIC_LIGHTS)){ + deactivateMenu(FURNITURE); + }; + if (isActive(DataType.TOILETS)){ + deactivateMenu(FURNITURE); + }; + if (isActive(DataType.CAMERAS)){ + deactivateMenu(FURNITURE); + }; + if (isActive(DataType.TWITTERS)){ + deactivateMenu(SOCIAL); + }; + if (isActive(DataType.INSTAGRAMS)){ + deactivateMenu(SOCIAL); + }; + if (isActive(DataType.FLICKRS)){ + deactivateMenu(SOCIAL); + }; + if (isActive(DataType.FOUR_SQUARE)){ + deactivateMenu(SOCIAL); + }; + } + public static function isActive(type:int):Boolean{ + return (((state & type) == type)); + } + public static function activate(type:int):void{ + state = (state | type); + if (type == DataType.METRO_STATIONS){ + activate(DataType.TRAINS); + }; + checkState(type); + } + public static function deactivate(type:int):void{ + state = (state & ~(type)); + if (type == DataType.METRO_STATIONS){ + deactivate(DataType.TRAINS); + }; + } + public static function toggle(type:int):void{ + if (isActive(type)){ + deactivate(type); + } else { + activate(type); + }; + } + public static function all():void{ + state = 0xFFFFFFFF; + _menus = 0xFFFFFFFF; + activateMenu(TRANSPORTS); + activateMenu(NETWORKS); + activateMenu(FURNITURE); + activateMenu(SOCIAL); + } + public static function none():void{ + state = 0; + _menus = 0; + deactivateMenu(TRANSPORTS); + deactivateMenu(NETWORKS); + deactivateMenu(FURNITURE); + deactivateMenu(SOCIAL); + } + public static function get state():uint{ + return (_state); + } + public static function set state(value:uint):void{ + _state = value; + } + private static function checkState(type:int):void{ + } + public static function get isHQ():Boolean{ + return (_isHQ); + } + public static function set isHQ(value:Boolean):void{ + _isHQ = value; + SharedData.isHq = value; + } + public static function isMenuActive(type:int):Boolean{ + return (((_menus & type) == type)); + } + public static function activateMenu(type:int):void{ + _menus = (_menus | type); + } + public static function deactivateMenu(type:int):void{ + _menus = (_menus & ~(type)); + } + public static function toggleMenu(type:int):void{ + if (isMenuActive(type)){ + deactivateMenu(type); + } else { + activateMenu(type); + }; + checkMenuItemState(type); + } + private static function checkMenuItemState(type:int):void{ + if (type == TRANSPORTS){ + if (isMenuActive(TRANSPORTS)){ + deactivate(DataType.METRO_STATIONS); + deactivate(DataType.TRAINS); + deactivate(DataType.VELO_STATIONS); + } else { + activate(DataType.METRO_STATIONS); + activate(DataType.TRAINS); + activate(DataType.VELO_STATIONS); + }; + }; + if (type == NETWORKS){ + if (isMenuActive(NETWORKS)){ + deactivate(DataType.ELECTROMAGNETICS); + deactivate(DataType.INTERNET_RELAYS); + deactivate(DataType.MOBILES); + deactivate(DataType.WIFIS); + } else { + activate(DataType.ELECTROMAGNETICS); + activate(DataType.INTERNET_RELAYS); + activate(DataType.MOBILES); + activate(DataType.WIFIS); + }; + }; + if (type == FURNITURE){ + if (isMenuActive(FURNITURE)){ + deactivate(DataType.ATMS); + deactivate(DataType.ADS); + deactivate(DataType.CAMERAS); + deactivate(DataType.TRAFFIC_LIGHTS); + deactivate(DataType.RADARS); + deactivate(DataType.TOILETS); + } else { + activate(DataType.ATMS); + activate(DataType.ADS); + activate(DataType.CAMERAS); + activate(DataType.TRAFFIC_LIGHTS); + activate(DataType.RADARS); + activate(DataType.TOILETS); + }; + }; + if (type == SOCIAL){ + if (isMenuActive(SOCIAL)){ + deactivate(DataType.TWITTERS); + deactivate(DataType.FLICKRS); + deactivate(DataType.INSTAGRAMS); + deactivate(DataType.FOUR_SQUARE); + } else { + activate(DataType.TWITTERS); + activate(DataType.FLICKRS); + activate(DataType.INSTAGRAMS); + activate(DataType.FOUR_SQUARE); + }; + }; + } + public static function toggleMenuByType(type:int):void{ + var menu:int = -1; + if (type == DataType.ADS){ + menu = FURNITURE; + }; + if (type == DataType.ATMS){ + menu = FURNITURE; + }; + if (type == DataType.CAMERAS){ + menu = FURNITURE; + }; + if (type == DataType.ELECTROMAGNETICS){ + menu = NETWORKS; + }; + if (type == DataType.FLICKRS){ + menu = SOCIAL; + }; + if (type == DataType.FOUR_SQUARE){ + menu = SOCIAL; + }; + if (type == DataType.INSTAGRAMS){ + menu = SOCIAL; + }; + if (type == DataType.INTERNET_RELAYS){ + menu = NETWORKS; + }; + if (type == DataType.METRO_STATIONS){ + menu = TRANSPORTS; + }; + if (type == DataType.MOBILES){ + menu = NETWORKS; + }; + if (type == DataType.RADARS){ + menu = FURNITURE; + }; + if (type == DataType.TOILETS){ + menu = FURNITURE; + }; + if (type == DataType.TRAFFIC_LIGHTS){ + menu = FURNITURE; + }; + if (type == DataType.TRAINS){ + menu = TRANSPORTS; + }; + if (type == DataType.TWITTERS){ + menu = SOCIAL; + }; + if (type == DataType.VELO_STATIONS){ + menu = TRANSPORTS; + }; + if (type == DataType.WIFIS){ + menu = NETWORKS; + }; + if (menu == -1){ + return; + }; + toggleMenu(menu); + } + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/core/Colors.as b/flash_decompiled/watchdog/wd/core/Colors.as new file mode 100644 index 0000000..aa54002 --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/Colors.as @@ -0,0 +1,56 @@ +package wd.core { + import wd.http.*; + + public class Colors { + + public static function getColorByType(type:int=0):int{ + if (type == DataType.ADS){ + return (0xFF9600); + }; + if (type == DataType.ANTENNAS){ + return (2835711); + }; + if (type == DataType.ATMS){ + return (4504439); + }; + if (type == DataType.CAMERAS){ + return (0xE80000); + }; + if (type == DataType.ELECTROMAGNETICS){ + return (13160522); + }; + if (type == DataType.FOUR_SQUARE){ + return (3262707); + }; + if (type == DataType.FLICKRS){ + return (0xFE0072); + }; + if (type == DataType.INSTAGRAMS){ + return (0xFF9600); + }; + if (type == DataType.INTERNET_RELAYS){ + return (2835711); + }; + if (type == DataType.MOBILES){ + return (13160522); + }; + if (type == DataType.TRAFFIC_LIGHTS){ + return (14880537); + }; + if (type == DataType.TOILETS){ + return (13160522); + }; + if (type == DataType.TWITTERS){ + return (3262707); + }; + if (type == DataType.VELO_STATIONS){ + return (5083929); + }; + if (type == DataType.WIFIS){ + return (2835711); + }; + return (0xFFFFFF); + } + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/core/Config.as b/flash_decompiled/watchdog/wd/core/Config.as new file mode 100644 index 0000000..4a58552 --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/Config.as @@ -0,0 +1,163 @@ +package wd.core { + import flash.net.*; + import flash.events.*; + import wd.http.*; + import wd.events.*; + import flash.geom.*; + import wd.providers.texts.*; + import flash.text.*; + import wd.utils.*; + + public class Config extends EventDispatcher { + + public static const FACEBOOK_LOGIN_OPTS:Object = {scope:"user_work_history, user_birthday"}; + + private static var config:XML; + private static var filterAvailability:FilterAvailability; + public static var city_xml:XML; + public static var STYLESHEET:StyleSheet; + public static var ROOT_URL:String; + public static var GATEWAY:String = "http://ubisoft-ctos-recette.betc.fr/amfserver.php"; + public static var LIVE_FEED_GATEWAY:String; + public static var FACEBOOK_APP_ID:String = "519212701474404"; + public static var FACEBOOK_CONNECT_AVAILABLE:Boolean = true; + public static var LIVE_WEBSOCKETSERVER_URL:String; + public static var FONTS_FILE:String = ""; + public static var CSS_FILE:String = ""; + public static var DEBUG:Boolean; + public static var DEBUG_FLASHVARS:Boolean; + public static var DEBUG_SIMULATION:Boolean; + public static var DEBUG_SERVICES:Boolean; + public static var DEBUG_LOCATOR:Boolean; + public static var DEBUG_HUD:Boolean; + public static var DEBUG_TRACKER:Boolean; + public static var NAVIGATION_LOCKED:Boolean; + public static var TOKEN:String; + public static var CITY:String; + public static var LANG:String; + public static var LOCALE:String; + public static var COUNTRY:String; + public static var STARTING_PLACE:Place; + public static var WORLD_RECT:Rectangle; + public static var WORLD_SCALE:Number; + public static var MIN_BUILDING_HEIGHT:Number; + public static var MAX_BUILDING_HEIGHT:Number; + public static var BUILDING_DEBRIS_OFFSET:Number; + public static var CAM_MIN_HEIGHT:Number; + public static var CAM_MAX_HEIGHT:Number; + public static var CAM_MIN_FOV:Number; + public static var CAM_MAX_FOV:Number; + public static var CAM_MIN_RADIUS:Number; + public static var CAM_MAX_RADIUS:Number; + public static var XML_LANG_MENU:XML; + public static var SETTINGS_BUILDING_RADIUS:Number; + public static var SETTINGS_BUILDING_PAGINATION:Number; + public static var SETTINGS_DATA_RADIUS:Number; + public static var SETTINGS_DATA_PAGINATION:Number; + public static var AGENT:String; + + private var loader:URLLoader; + private var req:URLRequest; + private var loadingProfile:String; + + public function Config(city:String, locale:String, loadingProfile:String, agent:String, xmlUrl:String="assets/xml/config.xml"){ + super(); + this.loadingProfile = loadingProfile; + CITY = city; + LOCALE = locale; + LANG = locale.split("-")[0]; + COUNTRY = locale.split("-")[1]; + AGENT = agent; + this.req = new URLRequest(xmlUrl); + this.loader = new URLLoader(); + this.loader.addEventListener(IOErrorEvent.IO_ERROR, this.errorHandler); + this.loader.addEventListener(Event.COMPLETE, this.xmlCompleteHandler); + } + public static function get CONTENT_FILE():String{ + return ((((("assets/xml/" + LANG.toLowerCase()) + "-") + COUNTRY.toUpperCase()) + "/content.xml")); + } + + public function load():void{ + this.loader.load(this.req); + } + private function xmlCompleteHandler(e:Event):void{ + var e:* = e; + config = new XML(this.loader.data); + TOKEN = ((config.weAreData) || ("")); + GATEWAY = config.service.path.@url; + var mode:* = this.loadingProfile; + SETTINGS_BUILDING_RADIUS = parseFloat(config.service.mode.child(mode).building.@radius); + SETTINGS_BUILDING_PAGINATION = parseFloat(config.service.mode.child(mode).building.@pagination); + SETTINGS_DATA_RADIUS = parseFloat(config.service.mode.child(mode).data.@radius); + SETTINGS_DATA_PAGINATION = parseFloat(config.service.mode.child(mode).data.@pagination); + if (isNaN(SETTINGS_BUILDING_RADIUS)){ + SETTINGS_BUILDING_RADIUS = 0.5; + }; + if (isNaN(SETTINGS_BUILDING_PAGINATION)){ + SETTINGS_BUILDING_PAGINATION = 5000; + }; + if (isNaN(SETTINGS_DATA_RADIUS)){ + SETTINGS_DATA_RADIUS = 1; + }; + if (isNaN(SETTINGS_DATA_PAGINATION)){ + SETTINGS_DATA_PAGINATION = 5000; + }; + new GoogleAnalytics(config.googleAnalytics); + FACEBOOK_APP_ID = config.facebook.appId; + FACEBOOK_CONNECT_AVAILABLE = ((config.languages.lang.(@locale == LOCALE).@facebookConnectAvailable)=="false") ? false : true; + LIVE_WEBSOCKETSERVER_URL = config.live.socketServer.@url; + ROOT_URL = config.rootUrl.@url; + FONTS_FILE = config.languages.lang.(@locale == LOCALE).@fonts; + CSS_FILE = config.languages.lang.(@locale == LOCALE).@css; + DEBUG = !((config.debug.@active == "0")); + if (DEBUG){ + DEBUG_FLASHVARS = !((config.debug.flashVars == "0")); + DEBUG_SIMULATION = !((config.debug.simulation == "0")); + DEBUG_SERVICES = !((config.debug.service == "0")); + DEBUG_LOCATOR = !((config.debug.locator == "0")); + DEBUG_HUD = !((config.debug.hud == "0")); + DEBUG_TRACKER = !((config.debug.tracker == "0")); + }; + CAM_MIN_FOV = parseFloat(config.cameraController.minFOV); + CAM_MAX_FOV = parseFloat(config.cameraController.maxFOV); + XML_LANG_MENU = config.languages[0]; + this.loader.removeEventListener(Event.COMPLETE, this.xmlCompleteHandler); + dispatchEvent(new LoadingEvent(LoadingEvent.CONFIG_COMPLETE)); + } + public function loadCity():void{ + this.loader.addEventListener(Event.COMPLETE, this.cityCompleteHandler); + var req:URLRequest = new URLRequest((("assets/xml/" + CITY.toLowerCase()) + ".xml")); + this.loader.load(req); + } + private function cityCompleteHandler(e:Event):void{ + city_xml = new XML(this.loader.data); + CAM_MIN_HEIGHT = parseFloat(city_xml.camera.minHeight); + CAM_MAX_HEIGHT = parseFloat(city_xml.camera.maxHeight); + CAM_MIN_RADIUS = parseFloat(city_xml.camera.minRadius); + CAM_MAX_RADIUS = parseFloat(city_xml.camera.maxRadius); + WORLD_RECT = new Rectangle(city_xml.bounds.@minlon, city_xml.bounds.@minlat, city_xml.bounds.@maxlon, city_xml.bounds.@maxlat); + WORLD_SCALE = parseFloat(city_xml.worldScale); + MIN_BUILDING_HEIGHT = parseFloat(city_xml.building.@minHeight); + MAX_BUILDING_HEIGHT = parseFloat(city_xml.building.@maxHeight); + BUILDING_DEBRIS_OFFSET = parseFloat(city_xml.building.@debrisOffset); + trace(WORLD_SCALE, MIN_BUILDING_HEIGHT, MAX_BUILDING_HEIGHT, BUILDING_DEBRIS_OFFSET); + filterAvailability = new FilterAvailability(); + filterAvailability.reset(city_xml.filters); + this.loader.removeEventListener(Event.COMPLETE, this.cityCompleteHandler); + this.loader.addEventListener(Event.COMPLETE, this.loaderCompleteHandler); + var req:URLRequest = new URLRequest(("assets/css/" + CSS_FILE)); + this.loader.load(req); + dispatchEvent(new LoadingEvent(LoadingEvent.CITY_COMPLETE)); + CityTexts.resetUnits(city_xml.dataUnits[0]); + } + public function loaderCompleteHandler(event:Event):void{ + STYLESHEET = new StyleSheet(); + STYLESHEET.parseCSS(this.loader.data); + dispatchEvent(new LoadingEvent(LoadingEvent.CSS_COMPLETE)); + } + public function errorHandler(e:IOErrorEvent):void{ + trace(this, e.text); + } + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/core/Constants.as b/flash_decompiled/watchdog/wd/core/Constants.as new file mode 100644 index 0000000..2f4f470 --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/Constants.as @@ -0,0 +1,25 @@ +package wd.core { + + public class Constants { + + public static const GOLDEN_RATIO:Number = ((1 + Math.sqrt(5)) * 0.5); + public static const RAD_TO_DEG:Number = 57.2957795130823; + public static const DEG_TO_RAD:Number = 0.0174532925199433; + public static const ALPHABET:String = "0123456789 abcdefghijklmnopqrstuvwxyz"; + public static const EXTERNAL_LINK_TARGET:String = "_blank"; + public static const MAX_SUBGGEOM_BUFFER_SIZE:uint = int(0xFFFF); + + public static var BG_COLOR:uint = 0; + public static var GRID_CASE_SIZE:int = 500; + public static var GRID_METRO_CASE_SIZE:int = 800; + public static var GRID_TRACKERS_CASE_SIZE:int = 500; + public static var BUILDING_SEGMENTS_TOP_COLOR:uint = 0xFFFFFF; + public static var BUILDING_SEGMENTS_BOTTOM_COLOR:uint = 0; + public static var BUILDING_SEGMENTS_RADIUS:Number = 0.5; + public static var GREY_BUILDING_COLOR_RGBA:uint = 4278584838; + public static var BLUE_NETWORK:uint = 5219767; + public static var BLUE_COLOR_RGB:uint = 7986420; + public static var BLUE_COLOR_RGBA:uint = ((0xFF << 24) | BLUE_COLOR_RGB); + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/core/FilterAvailability.as b/flash_decompiled/watchdog/wd/core/FilterAvailability.as new file mode 100644 index 0000000..ca856a6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/FilterAvailability.as @@ -0,0 +1,49 @@ +package wd.core { + import flash.utils.*; + import wd.http.*; + + public class FilterAvailability { + + public static var instance:FilterAvailability; + + private var xml:XMLList; + private var list:Dictionary; + + public function FilterAvailability(){ + super(); + instance = this; + this.list = new Dictionary(false); + this.list[DataType.METRO_STATIONS] = "metro"; + this.list[DataType.VELO_STATIONS] = "bicycle"; + this.list[DataType.ELECTROMAGNETICS] = "electromagnetic"; + this.list[DataType.INTERNET_RELAYS] = "internetRelays"; + this.list[DataType.WIFIS] = "wifiHotSpots"; + this.list[DataType.MOBILES] = "mobile"; + this.list[DataType.ATMS] = "atm"; + this.list[DataType.ADS] = "ad"; + this.list[DataType.TRAINS] = ""; + this.list[DataType.TRAFFIC_LIGHTS] = "traffic"; + this.list[DataType.RADARS] = "traffic"; + this.list[DataType.TOILETS] = "toilets"; + this.list[DataType.CAMERAS] = "cameras"; + this.list[DataType.TWITTERS] = "twitter"; + this.list[DataType.INSTAGRAMS] = "instagram"; + this.list[DataType.FOUR_SQUARE] = "fourSquare"; + this.list[DataType.FLICKRS] = "flickr"; + } + public static function isPopinActive(type:int):Boolean{ + return ((instance.xml.child(instance.list[type]).@showPopin == "1")); + } + public static function isDetailActive(type:int):Boolean{ + return ((instance.xml.child(instance.list[type]).@showDetail == "1")); + } + + public function reset(xml:XMLList):void{ + this.xml = xml; + } + public function isActive(type:int):Boolean{ + return ((this.xml.child(this.list[type]).@active == "1")); + } + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/core/Keys.as b/flash_decompiled/watchdog/wd/core/Keys.as new file mode 100644 index 0000000..a560ab4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/core/Keys.as @@ -0,0 +1,94 @@ +package wd.core { + import __AS3__.vec.*; + import flash.events.*; + import flash.display.*; + import wd.hud.*; + import wd.d3.*; + import wd.d3.control.*; + import flash.ui.*; + + public class Keys { + + public static var arrows:Vector. = Vector.([false, false, false, false]); + + private var simulation:Simulation; + private var hud:Hud; + private var main:InteractiveObject; + + public function Keys(main:InteractiveObject, hud:Hud, simulation:Simulation, stage:Stage){ + super(); + this.main = main; + this.hud = hud; + this.simulation = simulation; + stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyboardHandler); + stage.addEventListener(KeyboardEvent.KEY_UP, this.keyboardHandler); + } + private function keyboardHandler(e:KeyboardEvent):void{ + var state:uint; + var id:int; + if (Config.NAVIGATION_LOCKED){ + return; + }; + if (e.type == KeyboardEvent.KEY_DOWN){ + state = AppState.state; + id = -1; + if ((((e.charCode == "x".charCodeAt(0))) || ((e.charCode == "X".charCodeAt(0))))){ + AppState.toggleMenu(AppState.TRANSPORTS); + }; + if ((((e.charCode == "c".charCodeAt(0))) || ((e.charCode == "C".charCodeAt(0))))){ + AppState.toggleMenu(AppState.NETWORKS); + }; + if ((((e.charCode == "v".charCodeAt(0))) || ((e.charCode == "V".charCodeAt(0))))){ + AppState.toggleMenu(AppState.FURNITURE); + }; + if ((((e.charCode == "b".charCodeAt(0))) || ((e.charCode == "B".charCodeAt(0))))){ + AppState.toggleMenu(AppState.SOCIAL); + }; + if ((((e.charCode == "h".charCodeAt(0))) || ((e.charCode == "H".charCodeAt(0))))){ + if (AppState.isHQ){ + AppState.isHQ = false; + if (this.simulation != null){ + this.simulation.setLQ(); + }; + } else { + AppState.isHQ = true; + if (this.simulation != null){ + this.simulation.setHQ(); + }; + }; + }; + if (state != AppState.state){ + if (this.hud != null){ + this.hud.checkState(); + }; + }; + }; + if (e.charCode == "+".charCodeAt(0)){ + CameraController.forward(0.1); + }; + if (e.charCode == "-".charCodeAt(0)){ + if (CameraController.instance.zoomLevel == 0){ + CameraController.instance.mouseWheelAccu = CameraController.instance.mouseWheelAccuLimit; + CameraController.backward(1); + } else { + CameraController.backward(0.1); + }; + }; + switch (e.keyCode){ + case Keyboard.LEFT: + arrows[0] = (e.type == KeyboardEvent.KEY_DOWN); + break; + case Keyboard.UP: + arrows[1] = (e.type == KeyboardEvent.KEY_DOWN); + break; + case Keyboard.RIGHT: + arrows[2] = (e.type == KeyboardEvent.KEY_DOWN); + break; + case Keyboard.DOWN: + arrows[3] = (e.type == KeyboardEvent.KEY_DOWN); + break; + }; + } + + } +}//package wd.core diff --git a/flash_decompiled/watchdog/wd/d3/Simulation.as b/flash_decompiled/watchdog/wd/d3/Simulation.as new file mode 100644 index 0000000..226fbf7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/Simulation.as @@ -0,0 +1,293 @@ +package wd.d3 { + import flash.events.*; + import flash.geom.*; + import away3d.core.managers.*; + import away3d.events.*; + import away3d.containers.*; + import away3d.cameras.*; + import wd.core.*; + import flash.text.*; + import flash.display.*; + import wd.d3.lights.*; + import wd.d3.material.*; + import wd.d3.control.*; + import wd.d3.geom.*; + import wd.d3.geom.particle.*; + import wd.d3.geom.objects.*; + import wd.d3.geom.monuments.*; + import wd.utils.*; + import wd.d3.geom.building.*; + import wd.d3.geom.river.*; + import wd.d3.geom.parcs.*; + import wd.d3.geom.axes.*; + import wd.d3.geom.rails.*; + import wd.d3.geom.metro.*; + import wd.d3.geom.objects.linker.*; + import away3d.debug.*; + import flash.ui.*; + import wd.events.*; + import wd.http.*; + import away3d.filters.*; + import away3d.entities.*; + + public class Simulation extends Sprite { + + public static var instance:Simulation; + public static var log_tf:TextField; + public static var CONTEXT_READY:String = "CONTEXT_READY"; + public static var stage3DProxy:Stage3DProxy; + + public var scene:Scene3D; + public var camera:Camera3D; + public var view:View3D; + private var dofFilter:DepthOfFieldFilter3D; + private var bloom:BloomFilter3D; + private var ground:Ground; + private var buildings_service:BuildingService; + private var buildings:BuildingMesh3; + private var data:DataService; + private var metro:Metro; + public var container:ObjectContainer3D; + private var target:ObjectContainer3D; + public var location:Location; + public var controller:CameraController; + public var navigation:Navigator; + public var itemObjects:ItemObjectsManager; + private var trident:Trident; + private var mouseDown:Boolean; + private var stage3DManager:Stage3DManager; + private var cyclo:Mesh; + public var stage3DProxy:Stage3DProxy; + private var monuments:MonumentsMesh; + private var memoryText:TextField; + private var rivers:Rivers; + private var parcs:Parcs; + private var particles:ParticleMesh; + private var links:Linker; + private var rails:Rails; + + public function Simulation(){ + super(); + addEventListener(Event.ADDED_TO_STAGE, this.initProxies); + } + public function get cameraTargetPos():Vector3D{ + return (this.target.position); + } + private function initProxies(e:Event):void{ + removeEventListener(Event.ADDED_TO_STAGE, this.initProxies); + this.stage3DManager = Stage3DManager.getInstance(stage); + this.stage3DProxy = this.stage3DManager.getFreeStage3DProxy(); + this.stage3DProxy.addEventListener(Stage3DEvent.CONTEXT3D_CREATED, this.onContextCreated); + this.stage3DProxy.antiAlias = 2; + this.stage3DProxy.color = 0; + Simulation.stage3DProxy = this.stage3DProxy; + } + private function onContextCreated(event:Stage3DEvent):void{ + this.scene = new Scene3D(); + this.camera = new Camera3D(); + this.view = new View3D(); + this.view.stage3DProxy = this.stage3DProxy; + this.view.scene = this.scene; + this.view.camera = this.camera; + addChild(this.view); + this.view.shareContext = true; + this.container = new ObjectContainer3D(); + this.scene.addChild(this.container); + if (Config.DEBUG_SIMULATION){ + addChild((log_tf = new TextField())); + log_tf.autoSize = TextFieldAutoSize.LEFT; + log_tf.defaultTextFormat.color = 0xFFFFFF; + log_tf.blendMode = BlendMode.INVERT; + }; + instance = this; + this.init(); + dispatchEvent(new Event(CONTEXT_READY)); + } + private function init():void{ + this.initLights(); + this.initMaterials(); + this.initObjects(); + this.initListeners(); + } + private function initLights():void{ + new LightProvider(); + } + private function initMaterials():void{ + new TextureProvider(); + new MaterialProvider(); + } + private function initObjects():void{ + var bitmapDebug:Bitmap; + this.location = new Location(); + this.navigation = new Navigator(this.location); + this.target = new ObjectContainer3D(); + this.container.addChild(this.target); + this.controller = new CameraController(this.location, this.camera, this.target); + this.controller.listenTarget = this; + this.ground = new Ground(3); + this.ground.y = -50; + this.container.addChild(this.ground); + this.particles = new ParticleMesh(); + this.container.addChild(this.particles); + this.itemObjects = new ItemObjectsManager(this); + this.scene.addChild(this.itemObjects); + this.monuments = new MonumentsMesh(); + this.container.addChild(this.monuments); + this.monuments.setCity(Config.CITY); + if (Config.CITY == Locator.BERLIN){ + this.scene.addChild(new BerlinWall()); + }; + this.buildings = new BuildingMesh3(); + this.buildings.init(Constants.GRID_CASE_SIZE, Locator.world_rect); + if (this.buildings.debug){ + bitmapDebug = new Bitmap(this.buildings.debugGrid); + bitmapDebug.x = 300; + stage.addChild(bitmapDebug); + this.memoryText = new TextField(); + this.memoryText.textColor = 0xFFFFFF; + this.memoryText.x = 300; + stage.addChild(this.memoryText); + }; + this.container.addChild(this.buildings); + this.container.addChild(this.buildings.debris); + this.container.addChild(this.buildings.roofs); + this.rivers = new Rivers(); + this.container.addChild(this.rivers); + this.rivers.y = -0.25; + this.parcs = new Parcs(); + this.container.addChild(this.parcs); + this.parcs.y = -0.5; + new Axes(); + this.rails = new Rails(); + Building3.staticInit(this.buildings); + this.metro = new Metro(); + this.metro.init(Constants.GRID_METRO_CASE_SIZE, Locator.world_rect); + this.container.addChild(this.metro.segments); + this.links = new Linker(this); + this.scene.addChild(this.links); + if (Config.DEBUG_SIMULATION){ + this.scene.addChild(this.location); + this.scene.addChild((this.trident = new Trident(180))); + MaterialProvider.yellow.alpha = 1; + }; + } + protected function deplaceMonumentsTest(e:KeyboardEvent):void{ + if (this.buildings.debug){ + if (e.ctrlKey){ + switch (e.keyCode){ + case Keyboard.LEFT: + this.monuments.x--; + break; + case Keyboard.UP: + this.monuments.z++; + break; + case Keyboard.RIGHT: + this.monuments.x++; + break; + case Keyboard.DOWN: + this.monuments.z--; + break; + }; + }; + }; + } + private function onBatchComplete(e:ServiceEvent):void{ + } + private function initListeners():void{ + stage.addEventListener(Event.RESIZE, this.onResize); + this.resize(); + dispatchEvent(new Event(Event.COMPLETE)); + } + public function update():void{ + if (this.buildings.debug){ + }; + this.controller.update(this.location); + this.links.update(); + LightProvider.light0.x = this.target.x; + LightProvider.light0.y = ((this.ground.y + 50) + (CameraController.CAM_HEIGHT * 100)); + LightProvider.light0.z = this.target.z; + this.buildings.sortBuilding(this); + if (AppState.isActive(DataType.METRO_STATIONS)){ + this.metro.sortSegment(this, 3); + }; + this.itemObjects.update(); + } + public function start():void{ + if (AppState.isHQ){ + this.setHQ(); + } else { + this.setLQ(); + }; + } + public function pause():void{ + } + public function render():void{ + try { + this.view.render(); + } catch(err:Error) { + trace("render ", err.message); + }; + } + private function onResize(e:Event):void{ + this.resize(); + } + public function resize():void{ + this.view.width = stage.stageWidth; + this.view.height = stage.stageHeight; + this.stage3DProxy.width = stage.stageWidth; + this.stage3DProxy.height = stage.stageHeight; + } + public function checkState():void{ + if (AppState.isActive(DataType.METRO_STATIONS)){ + this.rivers.y = -8; + this.parcs.y = -9; + this.ground.y = -15; + } else { + this.rivers.y = -0.25; + this.parcs.y = -0.5; + this.ground.y = -1; + }; + this.metro.segments.visible = (this.metro.container.visible = AppState.isActive(DataType.METRO_STATIONS)); + } + public function setLQ():void{ + if (this.container.contains(this.buildings.debris)){ + this.container.removeChild(this.buildings.debris); + }; + if (this.container.contains(this.buildings.roofs)){ + this.container.removeChild(this.buildings.roofs); + }; + if (this.container.contains(this.particles)){ + this.container.removeChild(this.particles); + }; + this.stage3DProxy.antiAlias = 0; + } + public function setHQ():void{ + if (!(this.container.contains(this.buildings.debris))){ + this.container.addChild(this.buildings.debris); + }; + if (!(this.container.contains(this.buildings.roofs))){ + this.container.addChild(this.buildings.roofs); + }; + if (!(this.container.contains(this.particles))){ + this.container.addChild(this.particles); + }; + this.stage3DProxy.antiAlias = 2; + } + public function dispose():void{ + this.monuments.dispose(); + this.metro.dispose(); + this.buildings.dispose(); + this.rivers.dispose(); + if (this.parcs != null){ + this.parcs.dispose(); + }; + } + public function reset():void{ + this.metro.init(Constants.GRID_METRO_CASE_SIZE, Locator.world_rect); + this.monuments.setCity(Config.CITY); + this.buildings.init(Constants.GRID_CASE_SIZE, Locator.world_rect); + this.rivers.init(); + } + + } +}//package wd.d3 diff --git a/flash_decompiled/watchdog/wd/d3/control/CameraController.as b/flash_decompiled/watchdog/wd/d3/control/CameraController.as new file mode 100644 index 0000000..f014f1f --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/control/CameraController.as @@ -0,0 +1,296 @@ +package wd.d3.control { + import __AS3__.vec.*; + import wd.events.*; + import aze.motion.*; + import wd.core.*; + import away3d.cameras.lenses.*; + import flash.geom.*; + import away3d.cameras.*; + import away3d.containers.*; + import flash.events.*; + import wd.utils.*; + import biga.utils.*; + import flash.display.*; + import aze.motion.easing.*; + import wd.hud.items.*; + + public class CameraController extends EventDispatcher { + + public static const TOP_VIEW:String = "topView"; + public static const BIRD_VIEW:String = "birdView"; + public static const BLOCK_VIEW:String = "blockView"; + public static const STREET_VIEW:String = "streetView"; + + private static var VIEWS:Vector. = Vector.([TOP_VIEW, STREET_VIEW]); + private static var VIEWS_ITERATOR:int = 0; + private static var _VIEW:String = VIEWS[VIEWS_ITERATOR]; + public static var MIN_HEIGHT:Number; + public static var MAX_HEIGHT:Number; + public static var CAM_HEIGHT:Number; + public static var CAM_TARGET_HEIGHT:Number; + public static var instance:CameraController; + public static var CAM_MIN_RAIDUS:Number = -1; + public static var CAM_MAX_RAIDUS:Number = -100; + public static var CAM_RAIDUS:Number = CAM_MIN_RAIDUS; + public static var MIN_FOV:Number = 60; + public static var MAX_FOV:Number = -15; + public static var locked:Boolean; + + public var FRICTION_X:Number = 0.75; + public var FRICTION_Y:Number = 0.1; + public var FRICTION_Z:Number = 0.65; + public var camera:Camera3D; + private var perspective:PerspectiveLens; + public var target:ObjectContainer3D; + private var objectToListenTo:InteractiveObject; + private var mouseDown:Boolean; + public var tweenTime:Number = 0; + private var mouse:Point; + private var lastMouse:Point; + private var reachTarget:Boolean; + private var location:Location; + private var targetLocation:Point; + private var followTarget:Tracker; + private var following:Boolean; + public var radius:Number; + public var zoomLevel:Number = 1; + public var mouseWheelAccu:Number = 0; + public var mouseWheelAccuLimit:Number = -84; + + public function CameraController(location:Location, camera:Camera3D, target:ObjectContainer3D){ + super(); + instance = this; + this.location = location; + this.location.y = -5; + this.camera = camera; + this.target = target; + MIN_HEIGHT = Config.CAM_MIN_HEIGHT; + MAX_HEIGHT = Config.CAM_MAX_HEIGHT; + CAM_MIN_RAIDUS = Config.CAM_MIN_RADIUS; + CAM_MAX_RAIDUS = Config.CAM_MAX_RADIUS; + MIN_FOV = Config.CAM_MIN_FOV; + MAX_FOV = (Config.CAM_MAX_FOV - MIN_FOV); + this.camera.y = (CAM_HEIGHT = MAX_HEIGHT); + VIEW = VIEWS[VIEWS_ITERATOR]; + this.perspective = new PerspectiveLens(60); + this.perspective.far = 10000000; + this.perspective.near = 1; + this.camera.lens = this.perspective; + this.mouse = new Point(); + this.lastMouse = new Point(); + } + public static function forward(value:Number=0.01, apply:Boolean=false):void{ + instance.zoomLevel = (instance.zoomLevel + value); + if (apply){ + VIEW = STREET_VIEW; + }; + instance.checkZoomLevel(); + instance.dispatchEvent(new NavigatorEvent(NavigatorEvent.ZOOM_CHANGE)); + instance.mouseWheelAccu = 0; + } + public static function backward(value:Number=0.01, apply:Boolean=false):void{ + instance.zoomLevel = (instance.zoomLevel - value); + if (apply){ + VIEW = TOP_VIEW; + }; + instance.checkZoomLevel(); + instance.dispatchEvent(new NavigatorEvent(NavigatorEvent.ZOOM_CHANGE)); + if (instance.zoomLevel <= 0){ + if (instance.zoomLevel <= 0){ + instance.mouseWheelAccu = (instance.mouseWheelAccu - 7); + }; + if (instance.mouseWheelAccu <= instance.mouseWheelAccuLimit){ + VIEW = TOP_VIEW; + }; + }; + } + public static function forceLocation():void{ + instance.location.reset(); + instance.camera.x = instance.location.x; + instance.camera.z = instance.location.z; + instance.target.x = instance.location.x; + instance.target.z = instance.location.z; + } + public static function get VIEW():String{ + return (_VIEW); + } + public static function set VIEW(value:String):void{ + _VIEW = value; + switch (value){ + case TOP_VIEW: + if (instance.mouseWheelAccu <= instance.mouseWheelAccuLimit){ + VIEWS_ITERATOR = 0; + instance.FRICTION_X = (instance.FRICTION_Z = 1); + instance.dispatchEvent(new NavigatorEvent(NavigatorEvent.INTRO_SHOW)); + instance.mouseWheelAccu = 0; + }; + break; + case STREET_VIEW: + VIEWS_ITERATOR = 1; + eaze(instance).to(2, { + FRICTION_X:0.25, + FRICTION_Z:0.25 + }); + instance.mouseWheelAccu = 0; + instance.zoomLevel = 1; + break; + }; + } + public static function applyView():void{ + instance.camera.y = CAM_TARGET_HEIGHT; + } + public static function nextView():void{ + instance.mouseWheelAccu = 0; + VIEWS_ITERATOR++; + VIEWS_ITERATOR = ((VIEWS_ITERATOR)>(VIEWS.length - 1)) ? (VIEWS.length - 1) : VIEWS_ITERATOR; + VIEW = VIEWS[VIEWS_ITERATOR]; + } + public static function prevView(delta:Number):void{ + instance.mouseWheelAccu = (instance.mouseWheelAccu + delta); + VIEWS_ITERATOR--; + VIEWS_ITERATOR = ((VIEWS_ITERATOR)<0) ? 0 : VIEWS_ITERATOR; + VIEW = VIEWS[VIEWS_ITERATOR]; + } + + private function onUp(e:MouseEvent):void{ + this.mouseDown = false; + } + private function onDown(e:MouseEvent):void{ + this.mouseDown = true; + this.lastMouse.x = (this.mouse.x = this.objectToListenTo.mouseX); + this.lastMouse.y = (this.mouse.y = this.objectToListenTo.mouseY); + } + private function onWheel(e:MouseEvent):void{ + this.zoomLevel = (this.zoomLevel + (e.delta / 140)); + this.checkZoomLevel(); + instance.dispatchEvent(new NavigatorEvent(NavigatorEvent.ZOOM_CHANGE)); + if (this.zoomLevel <= 0){ + if (e.delta <= 0){ + this.mouseWheelAccu = (this.mouseWheelAccu - 7); + }; + if (this.mouseWheelAccu <= this.mouseWheelAccuLimit){ + VIEW = TOP_VIEW; + }; + }; + } + private function checkZoomLevel():void{ + if (this.zoomLevel < 0){ + this.zoomLevel = 0; + }; + if (this.zoomLevel > 1){ + this.zoomLevel = 1; + }; + } + public function update(location:Location):void{ + if (this.location == null){ + this.location = location; + this.location.y = 10; + }; + if (this.reachTarget){ + return; + }; + if (this.following){ + this.targetLocation = ((this.targetLocation) || (new Point())); + Locator.LOCATE(this.followTarget.x, this.followTarget.z, this.targetLocation); + Locator.LONGITUDE = (Locator.LONGITUDE + ((this.targetLocation.x - Locator.LONGITUDE) * 0.25)); + Locator.LATITUDE = (Locator.LATITUDE + ((this.targetLocation.y - Locator.LATITUDE) * 0.25)); + location.update(false); + this.updateCameraPosition(); + return; + }; + this.mouse.x = this.objectToListenTo.mouseX; + this.mouse.y = this.objectToListenTo.mouseY; + var a:Number = location.angle; + var v:Number = location.velocity; + var dx:Number = 0; + var dz:Number = 0; + if (this.mouseDown){ + dx = (this.lastMouse.x - this.objectToListenTo.mouseX); + dz = (this.lastMouse.y - this.objectToListenTo.mouseY); + location.angle = (a + (Math.PI / 2)); + location.velocity = ((-(dx) * location.SPEED) * 0.1); + location.update(false); + location.angle = a; + location.velocity = ((-(dz) * location.SPEED) * 0.1); + location.update(false); + location.velocity = v; + } else { + location.update(true); + }; + this.updateCameraPosition(); + } + private function updateCameraPosition():void{ + if (this.camera.y < MIN_HEIGHT){ + this.camera.y = MIN_HEIGHT; + }; + if (this.camera.y > MAX_HEIGHT){ + this.camera.y = MAX_HEIGHT; + }; + if (VIEW == STREET_VIEW){ + CAM_TARGET_HEIGHT = (MIN_HEIGHT + ((1 - this.zoomLevel) * ((MAX_HEIGHT * 0.5) - MIN_HEIGHT))); + }; + CAM_HEIGHT = GeomUtils.normalize(this.camera.y, MIN_HEIGHT, MAX_HEIGHT); + this.perspective.fieldOfView = (MIN_FOV + (CAM_HEIGHT * MAX_FOV)); + this.target.x = (this.target.x + ((this.location.x - this.target.x) * 0.1)); + this.target.z = (this.target.z + ((this.location.z - this.target.z) * 0.1)); + this.radius = (CAM_MIN_RAIDUS + (Math.min(0.99, (1 - CAM_HEIGHT)) * CAM_MAX_RAIDUS)); + var dx:Number = (this.target.x + (Math.cos(this.location.angle) * this.radius)); + var dz:Number = (this.target.z + (Math.sin(this.location.angle) * this.radius)); + this.FRICTION_X = (this.FRICTION_Z = 1); + if (isNaN(CAM_HEIGHT)){ + CAM_TARGET_HEIGHT = (MAX_HEIGHT * 0.75); + }; + this.camera.x = (this.camera.x + ((dx - this.camera.x) * this.FRICTION_X)); + if (!(locked)){ + this.camera.y = (this.camera.y + ((CAM_TARGET_HEIGHT - this.camera.y) * this.FRICTION_Y)); + }; + this.camera.z = (this.camera.z + ((dz - this.camera.z) * this.FRICTION_Z)); + this.camera.lookAt(this.target.position); + } + public function set listenTarget(value:InteractiveObject):void{ + this.objectToListenTo = value; + this.objectToListenTo.addEventListener(MouseEvent.MOUSE_UP, this.onUp); + this.objectToListenTo.addEventListener(MouseEvent.MOUSE_OUT, this.onUp); + this.objectToListenTo.addEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + this.objectToListenTo.addEventListener(MouseEvent.MOUSE_WHEEL, this.onWheel); + } + public function setTarget(tracker:Tracker, lon:Number, lat:Number):void{ + this.reachTarget = true; + this.targetLocation = new Point(lon, lat); + var o:Point = new Point(Locator.LONGITUDE, Locator.LATITUDE); + var p:Point = new Point(lon, lat); + var d:Number = GeomUtils.distance(o, p); + var a:Number = GeomUtils.angle(o, p); + var t:Number = 0.75; + if (d < 0.0002){ + this.updateCameraPosition(); + this.onTargetReached(tracker); + return; + }; + this.FRICTION_X = (this.FRICTION_Z = 1); + this.tweenTime = 0; + eaze(this).to(t, {tweenTime:1}, false).easing(Expo.easeOut).onUpdate(this.onTargetUpdate).onComplete(this.onTargetReached, tracker); + } + public function follow(tracker:Tracker):void{ + this.following = true; + this.followTarget = tracker; + } + public function unfollow():void{ + this.following = false; + this.followTarget = null; + } + private function onTargetUpdate():void{ + Locator.LONGITUDE = (Locator.LONGITUDE + ((this.targetLocation.x - Locator.LONGITUDE) * this.tweenTime)); + Locator.LATITUDE = (Locator.LATITUDE + ((this.targetLocation.y - Locator.LATITUDE) * this.tweenTime)); + this.location.update(false); + this.updateCameraPosition(); + } + private function onTargetReached(tracker:Tracker):void{ + this.reachTarget = false; + var s:String = VIEW; + VIEW = s; + dispatchEvent(new NavigatorEvent(NavigatorEvent.TARGET_REACHED, tracker)); + } + + } +}//package wd.d3.control diff --git a/flash_decompiled/watchdog/wd/d3/control/Location.as b/flash_decompiled/watchdog/wd/d3/control/Location.as new file mode 100644 index 0000000..56ab829 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/control/Location.as @@ -0,0 +1,134 @@ +package wd.d3.control { + import away3d.entities.*; + import wd.core.*; + import away3d.primitives.*; + import wd.d3.material.*; + import wd.utils.*; + import flash.geom.*; + import biga.shapes2d.*; + import away3d.containers.*; + + public class Location extends ObjectContainer3D { + + private const FRICTION:Number = 0.5; + + public var SPEED:Number = 1.2E-5; + private var angleStep:Number = 0.0261799387799149; + public var position2D:Point; + public var velocity:Number = 0; + public var angle:Number = 0; + public var dest_velocity:Number = 0; + public var dest_angle:Number = 0; + public var mesh:ObjectContainer3D; + + public function Location(){ + var m:Mesh; + super(); + if (Config.DEBUG_SIMULATION){ + m = new Mesh(new SphereGeometry(10), MaterialProvider.yellow); + addChild(m); + m.y = 0.01; + m = new Mesh(new CylinderGeometry(100, 100, 1, 64, 1, false, false), MaterialProvider.yellow); + addChild(m); + m.y = 0.5; + }; + this.dest_angle = (Math.PI * 0.5); + this.dest_velocity = 0; + this.reset(); + } + public function update(useKeys:Boolean=true):void{ + if (((useKeys) && (!(Config.NAVIGATION_LOCKED)))){ + if (Keys.arrows[0]){ + this.dest_angle = (this.dest_angle + this.angleStep); + }; + if (Keys.arrows[1]){ + this.dest_velocity = (this.dest_velocity + this.SPEED); + }; + if (Keys.arrows[2]){ + this.dest_angle = (this.dest_angle - this.angleStep); + }; + if (Keys.arrows[3]){ + this.dest_velocity = (this.dest_velocity - this.SPEED); + }; + this.dest_velocity = Math.max(-10, Math.min(this.dest_velocity, 10)); + this.velocity = (this.velocity + ((this.dest_velocity - this.velocity) * this.FRICTION)); + this.velocity = this.dest_velocity; + this.angle = (this.angle + ((this.dest_angle - this.angle) * this.FRICTION)); + this.dest_velocity = (this.dest_velocity * 0.9); + }; + var maxSpeed:Number = 10; + if (this.velocity > (maxSpeed * this.SPEED)){ + this.velocity = (maxSpeed * this.SPEED); + }; + if (this.velocity < (-(maxSpeed) * this.SPEED)){ + this.velocity = (-(maxSpeed) * this.SPEED); + }; + Locator.LONGITUDE = (Locator.LONGITUDE + (Math.cos(this.angle) * this.velocity)); + Locator.LATITUDE = (Locator.LATITUDE + (Math.sin(this.angle) * this.velocity)); + Locator.REMAP(Locator.LONGITUDE, Locator.LATITUDE, this.position2D); + x = this.position2D.x; + z = this.position2D.y; + this.checkbounds2(); + } + private function checkbounds2():void{ + if (x > Locator.world_rect.right){ + x = Locator.world_rect.right; + this.velocity = (this.velocity * -1); + this.dest_velocity = 0; + }; + if (x < Locator.world_rect.left){ + x = Locator.world_rect.left; + this.velocity = (this.velocity * -1); + this.dest_velocity = 0; + }; + if (z > Locator.world_rect.bottom){ + z = Locator.world_rect.bottom; + this.velocity = (this.velocity * -1); + this.dest_velocity = 0; + }; + if (z < Locator.world_rect.top){ + z = Locator.world_rect.top; + this.velocity = (this.velocity * -1); + this.dest_velocity = 0; + }; + } + private function closestPointOnRect(p:Point, rect:Rectangle):Point{ + var res_p:Point; + var c:Point = new Point((rect.left + (rect.right * 0.5)), (rect.top + (rect.bottom * 0.5))); + var e:Edge = new Edge(c, p); + var tp0:Point = rect.topLeft.clone(); + var tp1:Point = rect.topLeft.clone(); + var tmp_edge:Edge = new Edge(tp0, tp1); + tmp_edge.p1.x = rect.right; + res_p = e.intersect(tmp_edge); + if (res_p != null){ + return (res_p); + }; + tmp_edge.p0 = rect.bottomRight; + res_p = e.intersect(tmp_edge); + if (res_p != null){ + return (res_p); + }; + tmp_edge.p1.x = rect.x; + tmp_edge.p1.y = rect.bottom; + res_p = e.intersect(tmp_edge); + if (res_p != null){ + return (res_p); + }; + tmp_edge.p0 = rect.topLeft; + res_p = e.intersect(tmp_edge); + if (res_p != null){ + return (res_p); + }; + return (null); + } + public function reset():void{ + this.position2D = Locator.REMAP(Locator.LONGITUDE, Locator.LATITUDE); + x = this.position2D.x; + z = this.position2D.y; + this.angle = (Math.PI / 2); + this.dest_angle = this.angle; + } + + } +}//package wd.d3.control diff --git a/flash_decompiled/watchdog/wd/d3/control/Navigator.as b/flash_decompiled/watchdog/wd/d3/control/Navigator.as new file mode 100644 index 0000000..f5112f0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/control/Navigator.as @@ -0,0 +1,83 @@ +package wd.d3.control { + import wd.http.*; + import wd.events.*; + import flash.geom.*; + import wd.utils.*; + import flash.utils.*; + import wd.d3.geom.parcs.*; + import wd.d3.geom.rails.*; + import wd.hud.objects.*; + import flash.events.*; + + public class Navigator extends EventDispatcher { + + public static var instance:Navigator; + + public var building_service:BuildingService; + private var location:Location; + private var refreshrate:int; + private var checkInterval:uint; + private var loading:Boolean; + private var origin:Point; + private var data:DataService; + public var previous:Point; + + public function Navigator(location:Location, refreshrate:int=100){ + super(); + this.location = location; + this.refreshrate = refreshrate; + this.building_service = new BuildingService(); + this.building_service.addEventListener(ServiceEvent.BUILDINGS_COMPLETE, this.onBuildingComplete); + this.building_service.addEventListener(ServiceEvent.BUILDINGS_CANCEL, this.onBuildingCancel); + this.data = new DataService(); + this.data.addEventListener(ServiceEvent.BATCH_COMPLETE, this.onBatchComplete); + this.origin = new Point(Locator.LONGITUDE, Locator.LATITUDE); + this.previous = new Point(Locator.LONGITUDE, Locator.LATITUDE); + instance = this; + } + public function reset():void{ + clearInterval(this.checkInterval); + this.checkInterval = setInterval(this.checkPosition, this.refreshrate); + this.callService(); + } + private function checkPosition():void{ + if (((!(this.loading)) && ((Locator.DISTANCE(this.origin.x, this.origin.y, Locator.LONGITUDE, Locator.LATITUDE) > (ServiceConstants.REQ_RADIUS * 0.5))))){ + this.callService(); + }; + } + private function callService():void{ + this.loading = true; + this.previous.x = this.origin.x; + this.previous.y = this.origin.y; + this.origin.x = Locator.LONGITUDE; + this.origin.y = Locator.LATITUDE; + dispatchEvent(new NavigatorEvent(NavigatorEvent.LOADING_START)); + Parcs.call(true); + Rails.call(true); + VeloStations.call(); + this.data.batchCall(); + this.building_service.callBuildings(true); + } + private function onBuildingComplete(e:ServiceEvent):void{ + dispatchEvent(e); + if (e.data.next_page != null){ + this.building_service.callBuildings(false); + } else { + dispatchEvent(new NavigatorEvent(NavigatorEvent.LOADING_STOP)); + this.loading = false; + this.data.batchCall(); + Parcs.call(true); + Rails.call(true); + VeloStations.call(); + }; + } + private function onBuildingCancel(e:ServiceEvent):void{ + this.loading = false; + dispatchEvent(e); + } + private function onBatchComplete(e:ServiceEvent):void{ + dispatchEvent(e); + } + + } +}//package wd.d3.control diff --git a/flash_decompiled/watchdog/wd/d3/geom/Ground.as b/flash_decompiled/watchdog/wd/d3/geom/Ground.as new file mode 100644 index 0000000..f4fbbdc --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/Ground.as @@ -0,0 +1,42 @@ +package wd.d3.geom { + import away3d.core.base.*; + import wd.utils.*; + import away3d.primitives.*; + import flash.geom.*; + import away3d.entities.*; + import wd.d3.material.*; + import away3d.containers.*; + + public class Ground extends ObjectContainer3D { + + public function Ground(groundCells:int=3){ + var j:int; + var sg:SubGeometry; + super(); + var ww:Number = Locator.WORLD_RECT.width; + var wh:Number = Locator.WORLD_RECT.height; + var w:Number = (ww / groundCells); + var h:Number = (wh / groundCells); + var plane:SubGeometry = new PlaneGeometry(w, h, 1, 1).subGeometries[0]; + var geom:Geometry = new Geometry(); + var m:Matrix3D = new Matrix3D(); + var i:int; + while (i < groundCells) { + j = 0; + while (j < groundCells) { + sg = plane.clone(); + m.identity(); + m.appendTranslation(((ww * 0.5) - (i * w)), 0, ((wh * 0.5) - (h * j))); + sg.applyTransformation(m); + geom.addSubGeometry(sg); + j++; + }; + i++; + }; + var s:Number = 10000; + var grid:Mesh = new Mesh(geom, MaterialProvider.ground); + grid.geometry.scaleUV(s, s); + addChild(grid); + } + } +}//package wd.d3.geom diff --git a/flash_decompiled/watchdog/wd/d3/geom/axes/Axes.as b/flash_decompiled/watchdog/wd/d3/geom/axes/Axes.as new file mode 100644 index 0000000..7fe6bb8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/axes/Axes.as @@ -0,0 +1,12 @@ +package wd.d3.geom.axes { + import wd.utils.*; + import wd.core.*; + + public class Axes { + + public function Axes(){ + super(); + new CSVLoader((("assets/csv/axes/" + Config.CITY.toLowerCase()) + ".csv")); + } + } +}//package wd.d3.geom.axes diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/Building.as b/flash_decompiled/watchdog/wd/d3/geom/building/Building.as new file mode 100644 index 0000000..8ed8f29 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/Building.as @@ -0,0 +1,103 @@ +package wd.d3.geom.building { + import wd.d3.geom.segments.*; + import wd.utils.*; + import __AS3__.vec.*; + import flash.geom.*; + + public class Building { + + public static var wire:Wire = new Wire(0, 0x707070); + public static var debris:Debris = new Debris(0xCCCCCC, 0xCCCCCC, 1); + public static var roofs:Roofs = new Roofs(0x303030, 0x404040, 0.5); + + public var id:uint; + public var index_offset:uint; + public var vertices:Vector.; + public var indices:Vector.; + public var height:Number; + public var lon:Number; + public var lat:Number; + public var uvs:Vector.; + public var center:Point; + public var sug_geometry:BuildingSubGeometry; + + public function Building(id:uint, vertices:Vector., indices:Vector., _height:Number=NaN, _lon:Number=NaN, _lat:Number=NaN, valid:Boolean=false){ + super(); + this.reset(id, vertices, indices, _height, _lon, _lat, valid); + this.lon = ((isNaN(_lon)) ? 0 : _lon); + this.lat = ((isNaN(_lat)) ? 0 : _lat); + this.center = Locator.REMAP(this.lon, this.lat, this.center); + } + public function reset(id:uint, vertices:Vector., indices:Vector., _height:Number=NaN, _lon:Number=NaN, _lat:Number=NaN, valid:Boolean=false):void{ + this.id = id; + this.vertices = vertices; + this.indices = indices; + if (!(valid)){ + indices = Vector.([]); + }; + this.height = ((isNaN(this.height)) ? (0.15 + (Math.random() * 0.75)) : this.height); + } + public function init(sg:BuildingSubGeometry):void{ + var i:int; + var i0:uint; + var i1:uint; + var i2:uint; + var i3:uint; + var h:Number; + this.sug_geometry = sg; + this.uvs = new Vector.(); + var p:Vector3D = new Vector3D(); + var v0:Vector3D = new Vector3D(); + var v1:Vector3D = new Vector3D(); + var sides:uint = (this.vertices.length / 3); + var uv:int; + var pos:Point = new Point(); + i = 0; + while (i < this.vertices.length) { + Locator.REMAP(this.vertices[i], this.vertices[(i + 2)], pos); + p.x = (this.vertices[i] = pos.x); + p.y = (this.vertices[(i + 1)] = this.height); + p.z = (this.vertices[(i + 2)] = pos.y); + v0.x = (v1.x = p.x); + v0.y = 0; + v1.y = this.height; + v0.z = (v1.z = p.z); + this.uvs.push(0, 0.25); + i = (i + 3); + }; + i = 0; + while (i < this.vertices.length) { + h = (0.25 + ((Math.random() * this.height) * 0.75)); + v1.x = this.vertices[i]; + v1.y = h; + v1.z = this.vertices[(i + 2)]; + if (i > 0){ + roofs.addSegment(p, v1); + }; + p.x = this.vertices[((i + 3) % this.vertices.length)]; + p.y = h; + p.z = this.vertices[(((i + 2) + 3) % this.vertices.length)]; + roofs.addSegment(v1, p); + i = (i + 3); + }; + var len:uint = this.vertices.length; + i = 0; + while (i < len) { + this.vertices.push(this.vertices[i], 0, this.vertices[(i + 2)]); + this.uvs.push(0, 1); + i = (i + 3); + }; + i = 0; + while (i < sides) { + i0 = i; + i1 = ((i + 1) % sides); + i2 = (sides + i); + i3 = (sides + ((i + 1) % sides)); + this.indices.push(i0, i2, i1); + this.indices.push(i2, i3, i1); + i++; + }; + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/Building3.as b/flash_decompiled/watchdog/wd/d3/geom/building/Building3.as new file mode 100644 index 0000000..f1c65e5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/Building3.as @@ -0,0 +1,134 @@ +package wd.d3.geom.building { + import flash.geom.*; + import __AS3__.vec.*; + import wd.core.*; + import wd.utils.*; + import wd.data.*; + + public class Building3 extends Vector3D { + + private static var staticSortingArea:SortArea; + private static var node:ListNodeVec3D; + private static var b:Building3; + private static var mesh:BuildingMesh3; + + public var id:uint; + public var vertices:Vector.; + public var indices:Vector.; + public var indices2:Vector.; + public var uvs:Vector.; + public var height:Number; + public var lon:Number; + public var lat:Number; + public var center:Point; + private var pts:Point; + + public function Building3(id:uint, vertices:Vector., indices:Vector., _height:Number=NaN, _lon:Number=NaN, _lat:Number=NaN, valid:Boolean=false){ + this.pts = new Point(); + this.id = id; + this.vertices = vertices; + this.indices = indices; + this.indices2 = new Vector.(); + this.height = ((isNaN(this.height)) ? (Config.MIN_BUILDING_HEIGHT + (Math.random() * (Config.MAX_BUILDING_HEIGHT - Config.MIN_BUILDING_HEIGHT))) : this.height); + this.lon = ((isNaN(_lon)) ? 0 : _lon); + this.lat = ((isNaN(_lat)) ? 0 : _lat); + this.center = Locator.REMAP(this.lon, this.lat, this.center); + super(this.center.x, this.center.y, this.center.y); + if (!(valid)){ + indices = Vector.([]); + }; + BuildingMesh3.commitBuilding(this); + } + public static function staticInit(_mesh:BuildingMesh3):void{ + mesh = _mesh; + } + + private function reduceVertice(pos:Point):void{ + this.pts.x = (pos.x - this.center.x); + this.pts.y = (pos.y - this.center.y); + this.pts.normalize(0.2); + pos.x = (pos.x - this.pts.x); + pos.y = (pos.y - this.pts.y); + } + public function init():void{ + var i:int; + var i0:uint; + var i1:uint; + var i2:uint; + var i3:uint; + var h:Number; + var p:Vector3D = new Vector3D(); + var v0:Vector3D = new Vector3D(); + var v1:Vector3D = new Vector3D(); + var sides:uint = (this.vertices.length / 3); + var uv:int; + this.uvs = new Vector.(); + var pos:Point = new Point(); + i = 0; + while (i < this.vertices.length) { + Locator.REMAP(this.vertices[i], this.vertices[(i + 2)], pos); + this.reduceVertice(pos); + p.x = (this.vertices[i] = pos.x); + p.y = (this.vertices[(i + 1)] = this.height); + p.z = (this.vertices[(i + 2)] = pos.y); + v0.x = (v1.x = p.x); + v0.y = this.height; + v1.y = 0; + v0.z = (v1.z = p.z); + this.uvs.push(0, 0); + if (Math.random() > 0.1){ + v0.x = (v1.x = (v0.x + ((Math.random() - 0.5) * Config.BUILDING_DEBRIS_OFFSET))); + v0.y = ((Math.random() * this.height) * 0.75); + v0.z = (v1.z = (v0.z + ((Math.random() - 0.5) * Config.BUILDING_DEBRIS_OFFSET))); + v1.y = (v0.y + 0.25); + BuildingMesh3.getInstance().debris.addSegment(this, v0, v1); + }; + i = (i + 3); + }; + i = 0; + while (i < this.vertices.length) { + h = (0.25 + ((Math.random() * this.height) * 0.75)); + v1.x = this.vertices[i]; + v1.y = h; + v1.z = this.vertices[(i + 2)]; + if (i > 0){ + BuildingMesh3.getInstance().roofs.addSegment(this, p, v1); + }; + p.x = this.vertices[((i + 3) % this.vertices.length)]; + p.y = h; + p.z = this.vertices[(((i + 2) + 3) % this.vertices.length)]; + BuildingMesh3.getInstance().roofs.addSegment(this, v1, p); + i = (i + 3); + }; + var len:uint = this.vertices.length; + i = 0; + while (i < len) { + this.vertices.push(this.vertices[i], 0, this.vertices[(i + 2)]); + this.uvs.push(0, 1); + i = (i + 3); + }; + i = 0; + while (i < sides) { + i0 = i; + i1 = ((i + 1) % sides); + i2 = (sides + i); + i3 = (sides + ((i + 1) % sides)); + this.indices.push(i0, i2, i1); + this.indices.push(i2, i3, i1); + this.indices2.push(i0, i1, i2); + this.indices2.push(i2, i1, i3); + i++; + }; + } + public function dispose():void{ + BuildingMesh3.removeBuilding(this.id); + this.vertices.length = 0; + this.vertices = null; + this.indices.length = 0; + this.indices = null; + this.uvs.length = 0; + this.uvs = null; + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/BuildingGridCase.as b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingGridCase.as new file mode 100644 index 0000000..4e67de0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingGridCase.as @@ -0,0 +1,67 @@ +package wd.d3.geom.building { + import __AS3__.vec.*; + + public class BuildingGridCase { + + public var geometry:Vector.; + public var y:int; + public var x:int; + private var caseDistance:int = 8; + public var lastTimeOnScreen:int = 0; + private var timeBeforePurge:int = 10000; + public var index:int; + + public function BuildingGridCase(_x:int, _y:int, i:int){ + super(); + this.x = _x; + this.y = _y; + this.index = i; + this.geometry = new Vector.(); + } + public function isOld(time:int):Boolean{ + return ((time > (this.lastTimeOnScreen + this.timeBeforePurge))); + } + public function get isUsed():Boolean{ + return ((this.geometry[0]._indices.length > 0)); + } + public function get length():int{ + return (this.geometry.length); + } + public function push(sub:BuildingSubGeometry3):void{ + this.geometry.push(sub); + } + public function awayFrom(itemX:uint, itemY:uint):Boolean{ + if (itemX > (this.x + this.caseDistance)){ + return (true); + }; + if (itemX < (this.x - this.caseDistance)){ + return (true); + }; + if (itemY > (this.y + this.caseDistance)){ + return (true); + }; + if (itemY < (this.y - this.caseDistance)){ + return (true); + }; + return (false); + } + public function purge():void{ + var sub:BuildingSubGeometry3; + var numSubGeoms:int = this.geometry.length; + while (numSubGeoms--) { + sub = this.geometry[numSubGeoms]; + this.geometry.splice(numSubGeoms, 1); + sub.purge(); + sub = null; + }; + this.geometry.push(new BuildingSubGeometry3()); + } + public function dispose():void{ + this.geometry[0].purge(); + this.geometry[0] = null; + this.geometry.length = 0; + this.geometry = null; + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/BuildingMesh3.as b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingMesh3.as new file mode 100644 index 0000000..707fc74 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingMesh3.as @@ -0,0 +1,337 @@ +package wd.d3.geom.building { + import flash.utils.*; + import flash.display.*; + import __AS3__.vec.*; + import wd.d3.geom.segments.*; + import flash.geom.*; + import wd.core.*; + import wd.d3.material.*; + import wd.events.*; + import wd.d3.*; + import wd.hud.items.*; + import away3d.core.base.*; + import wd.utils.*; + import away3d.entities.*; + + public class BuildingMesh3 extends Mesh { + + private static var instance:BuildingMesh3; + private static var buildings:Dictionary = new Dictionary(true); + + public var roofs:SegmentGridSortableMesh; + public var debris:SegmentGridSortableMesh; + protected var ceilSize:int; + protected var w:uint; + protected var h:uint; + protected var offX:Number = 0; + protected var offY:Number = 0; + protected var gridLength:uint; + protected var m:Number; + private var pos:uint; + private var adjX:uint; + protected var grid:Vector.; + private var gridCase:BuildingGridCase; + private var gridCaseAdd:BuildingGridCase; + private var current:BuildingSubGeometry3; + private var currentAdd:BuildingSubGeometry3; + public var radius:uint; + public var gridMinX:int; + public var gridMaxX:int; + public var gridMinY:int; + public var gridMaxY:int; + public var debugGrid:BitmapData; + public var debug:Boolean = false; + private var purgeCount:int = 0; + private var purgeEnabled:Boolean = true; + private var purgeTime:int = 75; + private var lastSearchX:uint = 0; + private var lastSearchY:uint = 0; + private var dirty:Boolean = true; + private var buildingWaitingForBuild:Vector.; + private var b:Building3; + private var time:int; + private var TIME_AVAILABLE_FOR_BUILD:int = 10; + + public function BuildingMesh3(){ + this.buildingWaitingForBuild = new Vector.(); + BuildingMesh3.instance = this; + Simulation.instance.controller.addEventListener(NavigatorEvent.DO_WAVE, this.doWave); + Simulation.instance.itemObjects.addEventListener(NavigatorEvent.DO_WAVE, this.doWave); + super(new Geometry(), MaterialProvider.building_blockHQ); + } + public static function removeBuilding(id:uint):void{ + delete buildings[id]; + } + public static function commitBuilding(building:Building3):void{ + buildings[building.id] = true; + instance.addBuilding(building); + } + public static function buildingExist(id:uint):Boolean{ + return (!((buildings[id] == null))); + } + public static function getInstance():BuildingMesh3{ + return (instance); + } + + override public function dispose():void{ + this.clearCurrentGeom(); + var l:int = (this.gridLength - 1); + while (l--) { + this.gridCase = this.grid[l]; + this.purgeGrid(l); + }; + l = (this.gridLength - 1); + while (l--) { + this.gridCase = this.grid[l]; + this.grid.splice(l, 1); + this.gridCase.dispose(); + }; + this.grid = null; + this.roofs.dispose(); + this.debris.dispose(); + } + public function init(ceilSize:int, _b:Rectangle):void{ + this.ceilSize = ceilSize; + this.w = (Math.ceil((_b.width / ceilSize)) + 1); + this.h = (Math.ceil((_b.height / ceilSize)) + 1); + this.gridLength = (this.w * this.h); + if (this.debug){ + this.debugGrid = new BitmapData((this.h * 5), (this.w * 5), true, 872415231); + }; + this.offX = -(_b.x); + this.offY = -(_b.y); + this.m = (1 / ceilSize); + this.grid = new Vector.(this.gridLength, true); + var i:uint; + while (i < this.gridLength) { + this.gridCase = new BuildingGridCase((i % this.h), int((i / this.h)), i); + this.current = new BuildingSubGeometry3(); + this.gridCase.push(this.current); + this.grid[i] = this.gridCase; + i++; + }; + if (this.roofs == null){ + this.roofs = new SegmentGridSortableMesh(0x606060, 0.5); + }; + this.roofs.init(ceilSize, _b); + if (this.debris == null){ + this.debris = new SegmentGridSortableMesh(0xFFFFFF, 2, true); + }; + this.debris.init(ceilSize, _b); + } + public function doHide(e:NavigatorEvent):void{ + if (AppState.isHQ){ + (material as BuildingMaterial).doHide(); + }; + } + public function doWave(e:NavigatorEvent):void{ + var t:Point; + if (AppState.isHQ){ + t = new Point(Simulation.instance.cameraTargetPos.x, Simulation.instance.cameraTargetPos.z); + if (((!((e.data == null))) && ((e.data is Tracker)))){ + t.x = (e.data as Tracker).x; + t.y = (e.data as Tracker).z; + }; + (material as BuildingMaterial).doWave(t.x, t.y); + }; + } + public function setLQ():void{ + material = MaterialProvider.building_blockLQ; + } + public function setHQ():void{ + material = MaterialProvider.building_blockHQ; + } + private function clearCurrentGeom():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = geometry.subGeometries.length; + while (numSubGeoms--) { + subGeom = geometry.subGeometries[numSubGeoms]; + geometry.removeSubGeometry(subGeom); + subGeom.dispose(); + subGeom = null; + }; + } + public function sortBuilding(scene:Simulation, _radius:uint=2):void{ + var numSubGeoms:uint; + var subGeom:SubGeometry; + var y:uint; + this.radius = _radius; + var itemX:uint = (((scene.cameraTargetPos.x + this.offX) / this.ceilSize) | 0); + var itemY:uint = (((scene.cameraTargetPos.z + this.offY) / this.ceilSize) | 0); + if (itemY > this.h){ + itemY = this.h; + }; + if (itemX > this.w){ + itemX = this.w; + }; + if (itemY < 0){ + itemY = 0; + }; + if (itemX < 0){ + itemX = 0; + }; + this.purgeCount++; + if (this.purgeCount > this.purgeTime){ + this.purgeCount = 0; + this.purgeGrid(itemX, itemY); + } else { + this.buildBuilding(20); + }; + if ((((((this.lastSearchX == itemX)) && ((this.lastSearchY == itemY)))) && (!(this.dirty)))){ + return; + }; + this.dirty = false; + this.lastSearchX = uint(itemX); + this.lastSearchY = uint(itemY); + this.clearCurrentGeom(); + this.gridMinX = (itemX - this.radius); + if (this.gridMinX < 0){ + this.gridMinX = 0; + }; + this.gridMinY = (itemY - this.radius); + if (this.gridMinY < 0){ + this.gridMinY = 0; + }; + this.gridMaxX = (itemX + this.radius); + if (this.gridMaxX > this.w){ + this.gridMaxX = this.w; + }; + this.gridMaxY = (itemY + this.radius); + if (this.gridMaxY > this.h){ + this.gridMaxY = this.h; + }; + this.roofs.clearSegment(); + this.debris.clearSegment(); + var x:uint = this.gridMinX; + while (x <= this.gridMaxX) { + this.adjX = (x * this.h); + y = this.gridMinY; + while (y <= this.gridMaxY) { + if ((this.adjX + y) < this.gridLength){ + this.gridCase = this.grid[(this.adjX + y)]; + this.roofs.sortCaseSegment((this.adjX + y)); + this.debris.sortCaseSegment((this.adjX + y)); + this.gridCase.lastTimeOnScreen = getTimer(); + numSubGeoms = this.gridCase.length; + while (numSubGeoms--) { + if (this.gridCase.geometry[numSubGeoms]._vertices.length > 2){ + subGeom = new SubGeometry(); + subGeom.updateVertexData(this.gridCase.geometry[numSubGeoms]._vertices); + subGeom.updateIndexData(this.gridCase.geometry[numSubGeoms]._indices); + subGeom.updateUVData(this.gridCase.geometry[numSubGeoms]._uvs); + geometry.addSubGeometry(subGeom); + }; + }; + }; + y++; + }; + x++; + }; + } + private function purgeGrid(itemX:uint, itemY:int=-1):void{ + var j:int; + if (this.debug){ + this.debugGrid.lock(); + this.debugGrid.fillRect(this.debugGrid.rect, 872415231); + }; + if (itemY != -1){ + j = ((itemX * this.h) + itemY); + if (j >= (this.gridLength - 1)){ + j = (this.gridLength - 1); + }; + if (j < 0){ + j = 0; + }; + } else { + j = itemX; + }; + var gridCaseTemp:BuildingGridCase = this.grid[j]; + var time:int = getTimer(); + var i:uint; + while (i < this.gridLength) { + this.gridCase = this.grid[i]; + if (this.gridCase.isUsed){ + if (this.gridCase.awayFrom(gridCaseTemp.x, gridCaseTemp.y)){ + if (this.gridCase.isOld(time)){ + if (this.debug){ + this.debugGrid.fillRect(new Rectangle((this.gridCase.x * 5), (this.gridCase.y * 5), 4, 4), 0xFF000000); + }; + if (this.purgeEnabled){ + this.gridCase.purge(); + this.roofs.purge(this.gridCase.index); + this.debris.purge(this.gridCase.index); + Tracker.purge(this.gridCase.index); + }; + } else { + if (this.debug){ + this.debugGrid.fillRect(new Rectangle((this.gridCase.x * 5), (this.gridCase.y * 5), 4, 4), 0xFF00FFFF); + }; + }; + } else { + if (this.debug){ + this.debugGrid.fillRect(new Rectangle((this.gridCase.x * 5), (this.gridCase.y * 5), 4, 4), 0xFFFFFFFF); + }; + }; + } else { + if (this.debug){ + this.debugGrid.fillRect(new Rectangle((this.gridCase.x * 5), (this.gridCase.y * 5), 4, 4), 1157627903); + }; + }; + i++; + }; + if (this.debug){ + this.debugGrid.fillRect(new Rectangle(((gridCaseTemp.x * 5) + 1), ((gridCaseTemp.y * 5) + 1), 2, 2), 0xFFFF0000); + }; + if (this.debug){ + this.debugGrid.unlock(); + }; + } + private function addBuilding(b:Building3):void{ + this.buildingWaitingForBuild.push(b); + } + private function buildBuilding(count:uint):void{ + var _x:uint; + var _y:uint; + this.time = getTimer(); + var l:int = this.buildingWaitingForBuild.length; + if (l == 0){ + return; + }; + if (l < count){ + count = l; + }; + while (count--) { + if ((getTimer() - this.time) > this.TIME_AVAILABLE_FOR_BUILD){ + return; + }; + this.b = this.buildingWaitingForBuild.shift(); + this.b.init(); + Stats.totalPolygoneCount = (Stats.totalPolygoneCount + (this.b.indices.length / 3)); + _x = (((this.b.x + this.offX) / this.ceilSize) | 0); + _y = (((this.b.z + this.offY) / this.ceilSize) | 0); + if (_y > this.h){ + _y = this.h; + }; + if (_x > this.w){ + _x = this.w; + }; + this.pos = ((_x * this.h) + _y); + if (this.pos <= this.gridLength){ + this.gridCaseAdd = this.grid[this.pos]; + this.currentAdd = this.gridCaseAdd.geometry[(this.gridCaseAdd.length - 1)]; + } else { + return; + }; + if ((((this.currentAdd.numVertices >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (this.b.vertices.length / 3)))) || ((this.currentAdd.numTriangles >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (this.b.indices.length / 3)))))){ + trace("new building buffer"); + this.currentAdd = new BuildingSubGeometry3(); + this.gridCaseAdd.push(this.currentAdd); + }; + this.gridCaseAdd.lastTimeOnScreen = getTimer(); + this.currentAdd.mergeBuilding(this.b); + this.dirty = true; + }; + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry.as b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry.as new file mode 100644 index 0000000..25b74db --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry.as @@ -0,0 +1,72 @@ +package wd.d3.geom.building { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.core.base.*; + + public class BuildingSubGeometry extends SubGeometry { + + private var index_offset:uint; + public var count:int = 0; + public var buildings:Vector.; + public var i_offsets:Vector.; + public var v_offsets:Vector.; + public var uv_offsets:Vector.; + public var tmp_vertices:Vector.; + public var tmp_indices:Vector.; + public var tmp_uvs:Vector.; + public var centers:Vector.; + + public function BuildingSubGeometry(){ + super(); + this.buildings = new Vector.(); + this.v_offsets = new Vector.(); + this.i_offsets = new Vector.(); + this.uv_offsets = new Vector.(); + this.centers = new Vector.(); + } + public function mergeBuilding(building:Building):void{ + var ind:uint; + var v:Number; + var uv:Number; + building.init(this); + var v_offset:int; + var i_offset:int; + v_offset = (this.tmp_vertices.length / 3); + building.index_offset = (this.tmp_indices.length - this.index_offset); + for each (ind in building.indices) { + this.tmp_indices.push((ind + v_offset)); + }; + for each (v in building.vertices) { + this.tmp_vertices.push(v); + }; + for each (uv in building.uvs) { + this.tmp_uvs.push(uv); + }; + this.buildings.push(building); + this.centers.push(building.center); + this.count++; + } + public function initTemporaryBuffers():void{ + this.tmp_vertices = ((vertexData) ? vertexData : Vector.([0, 0, 0])); + this.tmp_indices = ((indexData) ? indexData : new Vector.()); + this.index_offset = this.tmp_indices.length; + this.tmp_uvs = ((UVData) ? UVData : Vector.([0, 0])); + } + public function commitTemporaryBuffers():void{ + updateVertexData(this.tmp_vertices); + updateIndexData(this.tmp_indices); + updateUVData(this.tmp_uvs); + } + public function remove(b:Building):void{ + var start:uint = b.index_offset; + var end:uint = (b.index_offset + b.indices.length); + var i:int = start; + while (i < end) { + this.tmp_indices[i] = 0; + i++; + }; + this.count--; + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry3.as b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry3.as new file mode 100644 index 0000000..dd17870 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/building/BuildingSubGeometry3.as @@ -0,0 +1,102 @@ +package wd.d3.geom.building { + import __AS3__.vec.*; + import fr.seraf.stage3D.*; + import flash.geom.*; + + public class BuildingSubGeometry3 { + + private static var _id:int = 0; + + private var index_offset:uint = 0; + public var _vertices:Vector.; + public var _indices:Vector.; + public var _uvs:Vector.; + public var buildings:Vector.; + public var id:int; + private var v_offset:uint; + private var _numVertices:uint; + private var _numTriangles:uint; + private var scale:Number = 2.3; + + public function BuildingSubGeometry3(){ + this._vertices = new Vector.(); + this._indices = new Vector.(); + this._uvs = new Vector.(); + super(); + this.id = _id++; + this.buildings = new Vector.(); + } + public function get numVertices():uint{ + return (this._numVertices); + } + public function get numTriangles():uint{ + return (this._numTriangles); + } + public function purge():void{ + var b:Building3; + var l:int = this.buildings.length; + while (l--) { + b = this.buildings[l]; + b.dispose(); + b = null; + }; + this.buildings.length = 0; + this._vertices.length = 0; + this._indices.length = 0; + this._uvs.length = 0; + this._vertices = null; + this._indices = null; + this._uvs = null; + } + public function mergeMesh(mesh:Stage3DData, center:Point, decalX:Number, decalY:Number, decalZ:Number):void{ + var ind:uint; + var l:int; + var i:int; + var uv:Number; + this.v_offset = (this._vertices.length / 3); + for each (ind in mesh.indices) { + this._indices.push((ind + this.v_offset)); + }; + l = mesh.vertices.length; + i = 0; + while (i < l) { + var _temp1 = i; + i = (i + 1); + this._vertices.push((((mesh.vertices[_temp1] * this.scale) + center.x) + decalX)); + var _temp2 = i; + i = (i + 1); + this._vertices.push(((mesh.vertices[_temp2] * this.scale) + decalY)); + this._vertices.push((((mesh.vertices[i] * this.scale) + center.y) + decalZ)); + i++; + }; + for each (uv in mesh.uvs) { + this._uvs.push(uv); + }; + this._numVertices = (this._vertices.length / 3); + this._numTriangles = (this._indices.length / 3); + } + public function mergeBuilding(building:Building3):void{ + var ind:uint; + var v:Number; + var uv:Number; + this.v_offset = (this._vertices.length / 3); + for each (ind in building.indices) { + this._indices.push((ind + this.v_offset)); + }; + for each (v in building.vertices) { + this._vertices.push(v); + }; + for each (uv in building.uvs) { + this._uvs.push(uv); + }; + this._numVertices = (this._vertices.length / 3); + this._numTriangles = (this._indices.length / 3); + this.buildings.push(building); + } + public function initTemporaryBuffers():void{ + } + public function commitTemporaryBuffers():void{ + } + + } +}//package wd.d3.geom.building diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/HEdge.as b/flash_decompiled/watchdog/wd/d3/geom/metro/HEdge.as new file mode 100644 index 0000000..22a4e77 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/HEdge.as @@ -0,0 +1,106 @@ +package wd.d3.geom.metro { + import flash.utils.*; + import __AS3__.vec.*; + import wd.hud.*; + import flash.geom.*; + + public class HEdge { + + private static var edges:Dictionary = new Dictionary(); + + public var busy:Boolean; + private var _line:MetroLine; + private var _start:MetroStation; + private var _end:MetroStation; + private var _startPosition:Vector3D; + private var _endPosition:Vector3D; + private var color:int; + private var thickness:Number; + + public function HEdge(line:MetroLine, start:MetroStation, end:MetroStation, color:int=-1, thickness:Number=1){ + super(); + this.thickness = thickness; + this.color = color; + this.line = line; + this.start = start; + this.startPosition = start.position.clone(); + this.startPosition.y = ((start.addLine(line) - 1) * -2); + this.end = end; + this.endPosition = end.position.clone(); + this.endPosition.y = ((end.addLine(line) - 1) * -2); + if (edges[line.name] == null){ + edges[line.name] = new Vector.(); + }; + edges[line.name].push(this); + } + public static function exists(line:MetroLine, start:MetroStation, end:MetroStation):Boolean{ + var he:HEdge; + if (edges[line.name] == null){ + return (false); + }; + var tmp:Vector. = edges[line.name]; + for each (he in tmp) { + if (he.equals(start, end)){ + return (true); + }; + }; + return (false); + } + public static function getEdge(line:MetroLine, start:MetroStation, end:MetroStation):HEdge{ + var he:HEdge; + if (edges[line.name] == null){ + return (null); + }; + var tmp:Vector. = edges[line.name]; + for each (he in tmp) { + if ((((he.start.ref == start.ref)) && ((he.end.ref == end.ref)))){ + return (he); + }; + }; + he = new HEdge(line, start, end); + Metro.addEdge(he); + if (start.lineCount == 1){ + Hud.addStation(line, start, false); + }; + if (end.lineCount == 1){ + Hud.addStation(line, end, false); + }; + return (null); + } + + public function equals(start:MetroStation, end:MetroStation):Boolean{ + return ((((start.ref == this.start.ref)) && ((end.ref == this.end.ref)))); + } + public function get line():MetroLine{ + return (this._line); + } + public function set line(value:MetroLine):void{ + this._line = value; + } + public function get startPosition():Vector3D{ + return (this._startPosition); + } + public function set startPosition(value:Vector3D):void{ + this._startPosition = value; + } + public function get endPosition():Vector3D{ + return (this._endPosition); + } + public function set endPosition(value:Vector3D):void{ + this._endPosition = value; + } + public function get start():MetroStation{ + return (this._start); + } + public function set start(value:MetroStation):void{ + this._start = value; + } + public function get end():MetroStation{ + return (this._end); + } + public function set end(value:MetroStation):void{ + this._end = value; + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/Metro.as b/flash_decompiled/watchdog/wd/d3/geom/metro/Metro.as new file mode 100644 index 0000000..2fc451f --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/Metro.as @@ -0,0 +1,152 @@ +package wd.d3.geom.metro { + import flash.geom.*; + import wd.providers.*; + import away3d.containers.*; + import flash.utils.*; + import __AS3__.vec.*; + import wd.http.*; + import wd.events.*; + import wd.d3.geom.segments.*; + import wd.hud.*; + import wd.d3.*; + import flash.events.*; + + public class Metro extends EventDispatcher { + + public static const STATIONS:String = "stations"; + public static const WAYS:String = "ways"; + public static const TAGS:String = "tags"; + public static const INDEX:String = "index"; + public static const UPDATE_EVERY_MINUTE:Number = 8; + + public static var BERLIN_LINE_COLORS:Dictionary; + public static var LONDON_LINE_COLORS:Dictionary; + public static var LONDON_LINE_ID:Dictionary; + public static var PARIS_LINE_COLORS:Dictionary; + private static var instance:Metro; + + public var container:ObjectContainer3D; + private var service:MetroService; + private var lines:Vector.; + private var stations:Vector.; + public var segments:SegmentColorGridSortableMesh; + private var schedule:Schedule; + + public function Metro(){ + super(); + instance = this; + this.container = new ObjectContainer3D(); + LONDON_LINE_ID = new Dictionary(); + this.lines = new Vector.(); + this.stations = new Vector.(); + this.service = new MetroService(); + this.service.addEventListener(ServiceEvent.METRO_COMPLETE, this.onComplete); + this.service.addEventListener(ServiceEvent.METRO_CANCEL, this.onCancel); + } + public static function getInstance():Metro{ + return (instance); + } + public static function addSegment(s:Vector3D, n:Vector3D, color:int, thickness:Number):void{ + instance.segments.addSegment(s, n, color, thickness); + } + public static function addEdge(edge:HEdge):void{ + instance.segments.addSegment(edge.startPosition, edge.endPosition, MetroLineColors.getColorByName(edge.line.name), 1); + } + + public function dispose():void{ + this.lines.length = 0; + this.segments.dispose(); + } + public function init(ceilSize:int, _b:Rectangle):void{ + if (this.segments == null){ + this.segments = new SegmentColorGridSortableMesh(1); + }; + this.segments.init(ceilSize, _b); + this.service.call(false); + } + private function onComplete(e:ServiceEvent):void{ + var key:*; + var prop:*; + var line:MetroLine; + var n:int; + var s:String; + var obj_line:Object; + var obj_station:Object; + var station:MetroStation; + var multi:Boolean; + var result:Object = e.data; + if (result == null){ + return; + }; + this.lines = ((this.lines) || (new Vector.())); + for (key in result["line"]) { + obj_line = result["line"][key]; + line = new MetroLine(obj_line["ref"], obj_line["name"], obj_line["way"], obj_line["trainset"]); + this.lines.push(line); + }; + for (key in result["station"]) { + obj_station = result["station"][key]; + station = new MetroStation(obj_station["id"], obj_station["ref"], obj_station["name"], obj_station["lng"], obj_station["lat"], obj_station["passengers"]); + this.stations.push(station); + }; + dispatchEvent(new ServiceEvent(ServiceEvent.METRO_TEXT_READY, this.stations)); + if (this.lines == null){ + return; + }; + if (this.stations == null){ + return; + }; + for each (line in this.lines) { + s = line.name; + n = s.indexOf("_"); + if (n != -1){ + s = s.substring(0, n); + }; + line.buildMesh(MetroLineColors.getColorByName(s), 1); + }; + for each (station in this.stations) { + if (station.lineCount == 0){ + trace("station", station.name, "has no lines"); + } else { + multi = (station.lineCount > 1); + Hud.addStation(station.defaultLine, station, multi); + }; + }; + this.schedule = ((this.schedule) || (new Schedule())); + this.schedule.stations = this.stations; + this.schedule.reset(result["time"], result["trips"]); + dispatchEvent(new ServiceEvent(ServiceEvent.METRO_COMPLETE)); + this.service.removeEventListener(ServiceEvent.METRO_COMPLETE, this.onComplete); + this.service.addEventListener(ServiceEvent.METRO_COMPLETE, this.onUpdate); + setTimeout(this.updateTrips, (UPDATE_EVERY_MINUTE * 60000)); + } + private function updateTrips():void{ + this.service.call(true); + } + private function onUpdate(e:ServiceEvent):void{ + var key:*; + var obj_station:Object; + var station:MetroStation; + var result:Object = e.data; + if (result == null){ + return; + }; + for (key in result["station"]) { + obj_station = result["station"][key]; + station = MetroStation.getStationById(obj_station["id"]); + station.passengers = obj_station["passengers"]; + }; + this.schedule.reset(result["time"], result["trips"]); + setTimeout(this.updateTrips, (UPDATE_EVERY_MINUTE * 60000)); + } + private function onCancel(e:ServiceEvent):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.METRO_CANCEL)); + } + public function sortSegment(scene:Simulation, radius:uint):void{ + if (this.segments){ + this.segments.sortSegment(scene, radius); + }; + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/MetroLine.as b/flash_decompiled/watchdog/wd/d3/geom/metro/MetroLine.as new file mode 100644 index 0000000..9742182 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/MetroLine.as @@ -0,0 +1,80 @@ +package wd.d3.geom.metro { + import __AS3__.vec.*; + import flash.utils.*; + import flash.geom.*; + import biga.utils.*; + + public class MetroLine { + + private static var edges:Vector. = new Vector.(); +; + private static var linesByName:Dictionary = new Dictionary(); + private static var linesByRef:Dictionary = new Dictionary(); + private static var position:Vector3D = new Vector3D(); + + public var stationHeightByRef:Dictionary; + public var ref:String; + public var name:String; + private var way:Array; + public var trainset:int; + private var vectors:Vector.; + + public function MetroLine(ref:String, name:String, way:Array, trainset:int=-1){ + this.stationHeightByRef = new Dictionary(); + super(); + this.name = name.toUpperCase(); + this.ref = ref; + this.way = way; + this.trainset = trainset; + linesByName[name] = this; + linesByRef[this.ref] = this; + this.vectors = new Vector.(); + } + public static function getLineByName(_name:String):MetroLine{ + return (linesByName[_name]); + } + public static function getLineByRef(_ref:String):MetroLine{ + return (linesByRef[_ref]); + } + + public function buildMesh(color:int, thickness:Number=1):void{ + var he:HEdge; + var prev:MetroStation; + var start:MetroStation; + var end:MetroStation; + var i:int; + while (i < (this.way.length - 1)) { + prev = MetroStation.getStationByRef(this.way[i]); + start = MetroStation.getStationByRef(this.way[i]); + end = MetroStation.getStationByRef(this.way[(i + 1)]); + if (!(HEdge.exists(this, start, end))){ + edges.push(new HEdge(this, start, end, color, thickness)); + }; + if (!(HEdge.exists(this, end, start))){ + edges.push(new HEdge(this, end, start, color, thickness)); + }; + i++; + }; + for each (he in edges) { + Metro.addSegment(he.startPosition, he.endPosition, color, thickness); + }; + } + public function getVectorAt(t:Number, v:Vector3D=null):Vector3D{ + if (this.vectors == null){ + return (position); + }; + var length:int = this.vectors.length; + var i0:int = int((length * t)); + i0 = (((i0 < (this.vectors.length - 1))) ? i0 : (this.vectors.length - 1)); + var i1:int = ((((i0 + 1) < this.vectors.length)) ? (i0 + 1) : i0); + var delta:Number = (1 / length); + t = ((t - (i0 * delta)) / delta); + v = ((v) || (position)); + v.x = GeomUtils.lerp(t, this.vectors[i0].x, this.vectors[i1].x); + v.y = GeomUtils.lerp(t, this.vectors[i0].y, this.vectors[i1].y); + v.z = GeomUtils.lerp(t, this.vectors[i0].z, this.vectors[i1].z); + return (v); + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/MetroStation.as b/flash_decompiled/watchdog/wd/d3/geom/metro/MetroStation.as new file mode 100644 index 0000000..119b885 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/MetroStation.as @@ -0,0 +1,138 @@ +package wd.d3.geom.metro { + import flash.utils.*; + import flash.geom.*; + import __AS3__.vec.*; + import wd.d3.geom.metro.trains.*; + import wd.utils.*; + + public class MetroStation { + + public static var stations:Dictionary = new Dictionary(); + public static var stations_ids:Dictionary = new Dictionary(); + private static var pos:Point = new Point(); + + public var ref:String; + public var id:int; + public var name:String; + public var lon:Number; + public var lat:Number; + public var passengers:String; + public var position:Vector3D; + public var hasLabel:Boolean; + private var trains:Vector.; + private var lines:Vector.; + private var positions:Vector.; + private var depth:Number; + private var lastTrainset:Number = 0; + + public function MetroStation(id:int, ref:String, name:String, lon:Number, lat:Number, passengers:String){ + this.trains = new Vector.(); + super(); + this.id = id; + this.ref = ref; + this.name = name; + this.lon = lon; + this.lat = lat; + this.passengers = passengers; + this.lines = new Vector.(); + stations[ref] = this; + stations_ids[id] = this; + Locator.REMAP(lon, lat, pos); + this.position = new Vector3D(pos.x, 0, pos.y); + this.lines = new Vector.(); + this.positions = new Vector.(); + } + public static function getStationByRef(ref:String):MetroStation{ + return (stations[ref]); + } + public static function getStationById(id:uint):MetroStation{ + return (stations_ids[id]); + } + + public function getClosestTrains():Vector.{ + this.trains.sort(this.arrivalTime); + return (this.trains); + } + private function arrivalTime(a:Train, b:Train):Number{ + return ((((a.arrivalTime < b.arrivalTime)) ? -1 : 1)); + } + public function addLine(line:MetroLine):int{ + var _l:MetroLine; + if (this.lines.indexOf(line) != -1){ + return (this.lines.length); + }; + for each (_l in this.lines) { + if (line.name == _l.name){ + return (this.lines.length); + }; + }; + this.lines.push(line); + return (this.lines.length); + } + public function getLineByRef(ref:String):MetroLine{ + var _l:MetroLine; + var _ref:String; + for each (_l in this.lines) { + _ref = _l.ref; + _ref = _ref.replace("_r", ""); + _ref = _ref.replace("_f", ""); + if (ref == _ref){ + return (_l); + }; + }; + return (null); + } + public function getLineByName(name:String):MetroLine{ + var _l:MetroLine; + for each (_l in this.lines) { + if (name == _l.name){ + return (_l); + }; + }; + return (null); + } + public function get defaultLine():MetroLine{ + return ((((this.lines == null)) ? null : this.lines[0])); + } + public function get lineCount():int{ + return ((((this.lines == null)) ? 0 : this.lines.length)); + } + public function getLineDepth(name:String):Number{ + var l:MetroLine = this.getLineByName(name); + if (l == null){ + return (0); + }; + return (this.lines.indexOf(l)); + } + public function addTrain(t:Train):void{ + this.trains.push(t); + } + public function removeTrain(t:Train):void{ + if (this.trains.indexOf(t) == -1){ + return; + }; + this.trains.splice(this.trains.indexOf(t), 1); + } + public function getTrainset():Number{ + var t:Train; + var trainset:int; + for each (t in this.trains) { + trainset = (trainset + t.trainset); + }; + if ((((this.lastTrainset < trainset)) || (!((trainset == 0))))){ + this.lastTrainset = trainset; + }; + if (trainset == 0){ + return (this.lastTrainset); + }; + return (trainset); + } + public function trainHasLeft(train:Train):void{ + this.trains.push(train); + } + public function trainHasArrived(train:Train):void{ + this.removeTrain(train); + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/Schedule.as b/flash_decompiled/watchdog/wd/d3/geom/metro/Schedule.as new file mode 100644 index 0000000..b8a2936 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/Schedule.as @@ -0,0 +1,91 @@ +package wd.d3.geom.metro { + import __AS3__.vec.*; + import flash.utils.*; + import flash.events.*; + import wd.d3.geom.metro.trains.*; + + public class Schedule { + + public static const TIME_INTERVAL:int = 1000; + + private var _stations:Vector.; + private var trips:Vector.; + private var timer:Timer; + private var date:Date; + private var time:Number; + + public function Schedule(){ + super(); + } + public function reset(_time:String, _trips:Array):void{ + var bits:Array; + var t:Trip; + if (isNaN(this.time)){ + bits = _time.split(":"); + this.date = new Date(); + this.date.hours = parseFloat(bits[0]); + this.date.minutes = parseFloat(bits[1]); + this.date.seconds = parseFloat(bits[2]); + this.time = this.date.getTime(); + }; + this.trips = ((this.trips) || (new Vector.())); + var i:int; + while (i < _trips.length) { + if ((((_trips[i] == null)) || ((_trips[i] == false)))){ + } else { + t = new Trip(_trips[i]); + if (((!((t.edge == null))) && ((this.time < (t.time + t.duration))))){ + if (this.time < t.time){ + this.trips.push(t); + }; + } else { + t.dispose(); + t = null; + }; + }; + i++; + }; + this.timer = new Timer(TIME_INTERVAL); + this.timer.addEventListener(TimerEvent.TIMER, this.onTick); + this.timer.start(); + } + private function onTick(e:TimerEvent):void{ + var i:int; + var t:Trip; + i = 0; + while (i < this.trips.length) { + t = this.trips[i]; + if (t == null){ + } else { + if (this.time <= (t.time + t.duration)){ + if (this.time >= (t.time - TIME_INTERVAL)){ + this.startTrain(t); + }; + } else { + t.dispose(); + t = null; + }; + }; + i++; + }; + this.time = (this.time + TIME_INTERVAL); + } + private function startTrain(trip:Trip):void{ + if (trip.edge.busy){ + trip.time = (trip.time + (5 * TIME_INTERVAL)); + return; + }; + new Train(trip); + this.trips.splice(this.trips.indexOf(trip), 1); + trip.dispose(); + trip = null; + } + public function get stations():Vector.{ + return (this._stations); + } + public function set stations(value:Vector.):void{ + this._stations = value; + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/Trip.as b/flash_decompiled/watchdog/wd/d3/geom/metro/Trip.as new file mode 100644 index 0000000..dee411d --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/Trip.as @@ -0,0 +1,43 @@ +package wd.d3.geom.metro { + + public final class Trip { + + public static const DELAY_VARIATION:Number = 0; + public static const SPEED_VARIATION:Number = 0; + + private static var date:Date = new Date(); + private static var STOP_TIME:Number = 10; + public static var line:MetroLine; + + public var dep_station:MetroStation; + public var arr_station:MetroStation; + public var time:Number; + public var duration:Number; + public var trainset:uint; + public var train_id:uint; + public var edge:HEdge; + public var started:Boolean; + + public function Trip(desc:String){ + super(); + var bits:Array = desc.split("|"); + this.edge = HEdge.getEdge((line = MetroLine.getLineByName(bits[1])), MetroStation.getStationByRef(bits[0]), MetroStation.getStationByRef(bits[4])); + var tmp:Array = bits[2].split(":"); + date.hours = tmp[0]; + date.minutes = tmp[1]; + date.seconds = tmp[2]; + this.time = date.getTime(); + this.duration = (parseFloat(bits[3]) * 1000); + this.train_id = bits[5]; + this.trainset = bits[6]; + } + public function dispose():void{ + this.dep_station = null; + line = null; + this.time = NaN; + this.duration = NaN; + this.arr_station = null; + } + + } +}//package wd.d3.geom.metro diff --git a/flash_decompiled/watchdog/wd/d3/geom/metro/trains/Train.as b/flash_decompiled/watchdog/wd/d3/geom/metro/trains/Train.as new file mode 100644 index 0000000..1b6d92f --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/metro/trains/Train.as @@ -0,0 +1,50 @@ +package wd.d3.geom.metro.trains { + import aze.motion.*; + import aze.motion.easing.*; + import wd.hud.*; + import wd.d3.geom.metro.*; + import biga.utils.*; + import flash.geom.*; + + public class Train extends Vector3D { + + private static var uid:int = 0; + + public var id:int; + public var duration:Number; + public var edge:HEdge; + public var progress:Number; + public var arrivalTime:Number; + public var trainset:uint; + + public function Train(trip:Trip, progress:Number=0){ + super(); + this.edge = trip.edge; + this.edge.busy = true; + this.id = trip.train_id; + this.trainset = trip.trainset; + this.duration = trip.duration; + this.arrivalTime = (trip.time + this.duration); + this.progress = progress; + eaze(this).to(((this.duration / 1000) * (1 - progress)), {progress:1}).easing(Linear.easeNone).onUpdate(this.update).onComplete(this.dispose); + this.edge.end.trainHasLeft(this); + Hud.addTrain(this); + } + public function update():void{ + x = GeomUtils.lerp(this.progress, this.edge.startPosition.x, this.edge.endPosition.x); + y = GeomUtils.lerp(this.progress, this.edge.startPosition.y, this.edge.endPosition.y); + z = GeomUtils.lerp(this.progress, this.edge.startPosition.z, this.edge.endPosition.z); + } + public function get line():MetroLine{ + return (this.edge.line); + } + public function dispose():void{ + this.edge.start.removeTrain(this); + this.edge.start.trainHasArrived(this); + this.edge.end.trainHasArrived(this); + this.edge.busy = false; + Hud.removeTrain(this); + } + + } +}//package wd.d3.geom.metro.trains diff --git a/flash_decompiled/watchdog/wd/d3/geom/monuments/BerlinWall.as b/flash_decompiled/watchdog/wd/d3/geom/monuments/BerlinWall.as new file mode 100644 index 0000000..3241db6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/monuments/BerlinWall.as @@ -0,0 +1,47 @@ +package wd.d3.geom.monuments { + import flash.geom.*; + import wd.d3.geom.objects.networks.*; + import __AS3__.vec.*; + import wd.utils.*; + import away3d.containers.*; + + public class BerlinWall extends ObjectContainer3D { + + private var mat:NetworkMaterial; + private var net:NetworkSet; + + public function BerlinWall(){ + var p:Point; + super(); + var coords:Array = [52.558685, 13.3987970000001, 52.554741, 13.398636, 52.551567, 13.399871, 52.542053, 13.404409, 52.53804, 13.395843, 52.537392, 13.3935759999999, 52.535915, 13.391156, 52.534813, 13.389595, 52.53381, 13.388544, 52.532616, 13.3884399999999, 52.532299, 13.3888480000001, 52.533321, 13.386254, 52.53495, 13.3836200000001, 52.535767, 13.38229, 52.536255, 13.381044, 52.539921, 13.379306, 52.532875, 13.3698910000001, 52.53162, 13.371074, 52.521568, 13.377514, 52.521015, 13.377755, 52.507137, 13.382614, 52.502914, 13.384316, 52.502556, 13.38477, 52.503269, 13.420935, 52.505016, 13.422194, 52.508289, 13.434562, 52.507011, 13.4364410000001, 52.505241, 13.439118, 52.504108, 13.4420259999999, 52.502697, 13.446175]; + this.net = new NetworkSet(0.5, (this.mat = new NetworkMaterial(0xFFFFFF, 0.5))); + var vecs:Vector. = new Vector.(); + var i:int; + while (i < coords.length) { + p = Locator.REMAP(coords[(i + 1)], coords[i]); + vecs.push(new Vector3D(p.x, 0, p.y)); + i = (i + 2); + }; + var j:int; + while (j < (vecs.length - 1)) { + this.net.addSegment(vecs[j], vecs[(j + 1)]); + vecs[j].x = (vecs[j].x + 5); + vecs[(j + 1)].x = (vecs[(j + 1)].x + 5); + this.net.addSegment(vecs[j], vecs[(j + 1)]); + vecs[j].x = (vecs[j].x + 5); + vecs[(j + 1)].x = (vecs[(j + 1)].x + 5); + this.net.addSegment(vecs[j], vecs[(j + 1)]); + vecs[j].x = (vecs[j].x + 5); + vecs[(j + 1)].x = (vecs[(j + 1)].x + 5); + this.net.addSegment(vecs[j], vecs[(j + 1)]); + vecs[j].x = (vecs[j].x + 5); + vecs[(j + 1)].x = (vecs[(j + 1)].x + 5); + this.net.addSegment(vecs[j], vecs[(j + 1)]); + vecs[j].x = (vecs[j].x - 20); + vecs[(j + 1)].x = (vecs[(j + 1)].x - 20); + j++; + }; + addChild(this.net); + } + } +}//package wd.d3.geom.monuments diff --git a/flash_decompiled/watchdog/wd/d3/geom/monuments/Monument.as b/flash_decompiled/watchdog/wd/d3/geom/monuments/Monument.as new file mode 100644 index 0000000..d7df137 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/monuments/Monument.as @@ -0,0 +1,37 @@ +package wd.d3.geom.monuments { + import flash.geom.*; + import wd.utils.*; + import fr.seraf.stage3D.*; + + public class Monument { + + public var mesh:Stage3DData; + public var lon:Number; + public var lat:Number; + public var decalX:Number; + public var decalY:Number; + public var decalZ:Number; + private var rotation:Number; + public var scale:Number; + public var center:Point; + public var matrix:Matrix3D; + + public function Monument(mesh:Stage3DData, props:XML):void{ + this.center = new Point(); + super(); + this.lon = parseFloat(props.@lon); + this.lat = parseFloat(props.@lat); + this.decalX = parseFloat(props.@decalX); + this.decalY = parseFloat(props.@decalY); + this.decalZ = parseFloat(props.@decalZ); + this.rotation = parseFloat(props.@rotation); + this.scale = parseFloat(props.@scale); + this.center = Locator.REMAP(this.lon, this.lat, this.center); + this.matrix = new Matrix3D(); + this.matrix.appendScale(this.scale, this.scale, this.scale); + this.matrix.appendRotation(this.rotation, Vector3D.Y_AXIS); + this.matrix.appendTranslation((this.center.x + this.decalX), this.decalY, (this.center.y + this.decalZ)); + this.mesh = mesh; + } + } +}//package wd.d3.geom.monuments diff --git a/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsMesh.as b/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsMesh.as new file mode 100644 index 0000000..04efb60 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsMesh.as @@ -0,0 +1,96 @@ +package wd.d3.geom.monuments { + import away3d.core.base.*; + import wd.d3.material.*; + import flash.events.*; + import __AS3__.vec.*; + import wd.core.*; + import away3d.entities.*; + + public class MonumentsMesh extends Mesh { + + private var currentAdd:SubGeometry; + private var v_offset:uint; + private var modelScale:Number = 2.3; + private var meshs:Vector.; + private var city:String; + + public function MonumentsMesh(){ + super(new Geometry(), MaterialProvider.monuments); + } + override public function dispose():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = geometry.subGeometries.length; + while (numSubGeoms--) { + subGeom = geometry.subGeometries[numSubGeoms]; + geometry.removeSubGeometry(subGeom); + subGeom.dispose(); + subGeom = null; + }; + } + public function setCity(city:String):void{ + var l:int; + this.city = city; + if (MonumentsProvider.isLoaded){ + this.meshs = MonumentsProvider.getMonumentsByCity(city); + l = this.meshs.length; + if (l > 0){ + this.currentAdd = new SubGeometry(); + this.openCurrent(); + geometry.addSubGeometry(this.currentAdd); + while (l--) { + this.addMonument(this.meshs[l]); + }; + this.closeCurrent(); + }; + } else { + MonumentsProvider.instance.addEventListener(MonumentsProvider.ON_LOAD, this.onMeshLoaded); + }; + } + protected function onMeshLoaded(event:Event):void{ + MonumentsProvider.instance.removeEventListener(MonumentsProvider.ON_LOAD, this.onMeshLoaded); + this.setCity(this.city); + } + private function openCurrent():void{ + this.currentAdd.updateVertexData(new []); + this.currentAdd.updateUVData(new []); + this.currentAdd.updateIndexData(new []); + } + private function closeCurrent():void{ + this.currentAdd.updateVertexData(this.currentAdd.vertexData); + this.currentAdd.updateUVData(this.currentAdd.UVData); + this.currentAdd.updateIndexData(this.currentAdd.indexData); + } + private function addMonument(monument:Monument):void{ + if ((((this.currentAdd.numVertices >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (monument.mesh.vertices.length / 3)))) || ((this.currentAdd.numTriangles >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (monument.mesh.indices.length / 3)))))){ + this.closeCurrent(); + this.currentAdd = new SubGeometry(); + this.openCurrent(); + geometry.addSubGeometry(this.currentAdd); + }; + this.mergeMonument(monument); + } + public function mergeMonument(monument:Monument):void{ + var ind:uint; + var tmp:Vector.; + var l:int; + var i:int; + var uv:Number; + this.v_offset = (this.currentAdd.vertexData.length / 3); + for each (ind in monument.mesh.indices) { + this.currentAdd.indexData.push((ind + this.v_offset)); + }; + tmp = new Vector.(); + monument.matrix.transformVectors(monument.mesh.vertices, tmp); + l = monument.mesh.vertices.length; + i = 0; + while (i < l) { + this.currentAdd.vertexData.push(tmp[i]); + i++; + }; + for each (uv in monument.mesh.uvs) { + this.currentAdd.UVData.push(uv); + }; + } + + } +}//package wd.d3.geom.monuments diff --git a/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsProvider.as b/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsProvider.as new file mode 100644 index 0000000..7ee5d5a --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/monuments/MonumentsProvider.as @@ -0,0 +1,82 @@ +package wd.d3.geom.monuments { + import flash.utils.*; + import flash.display.*; + import flash.net.*; + import flash.events.*; + import flash.system.*; + import wd.utils.*; + import __AS3__.vec.*; + + public class MonumentsProvider extends EventDispatcher { + + public static var paris:Vector.; + public static var berlin:Vector.; + public static var london:Vector.; + private static var data:Dictionary = new Dictionary(); + public static var _isLoaded:Boolean = false; + public static var _instance:MonumentsProvider; + public static var ON_LOAD:String = "ON_LOAD"; + + public function MonumentsProvider(){ + super(); + } + public static function get isLoaded():Boolean{ + if (!(_isLoaded)){ + startLoad(); + }; + return (_isLoaded); + } + private static function startLoad():void{ + trace("Monuments startLoad"); + var loader:Loader = new Loader(); + var req:URLRequest = new URLRequest("assets/swf/monuments.swf"); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fooLoadComplete); + loader.load(req, new LoaderContext(false, ApplicationDomain.currentDomain)); + } + protected static function fooLoadComplete(e:Event):void{ + _isLoaded = true; + _instance.dispatchEvent(new Event(ON_LOAD)); + } + public static function get instance():MonumentsProvider{ + if (_instance == null){ + _instance = new (MonumentsProvider)(); + }; + return (_instance); + } + public static function setMeshData(xml:XMLList, city:String):void{ + data[city] = xml; + } + public static function getMonumentsByCity(city:String):Vector.{ + switch (city){ + case Locator.PARIS: + if (paris == null){ + paris = setCity(Locator.PARIS); + }; + return (paris); + case Locator.LONDON: + if (london == null){ + london = setCity(Locator.LONDON); + }; + return (london); + case Locator.BERLIN: + if (berlin == null){ + berlin = setCity(Locator.BERLIN); + }; + return (berlin); + }; + return (null); + } + private static function setCity(city:String):Vector.{ + var c:Class; + var m:Vector. = new Vector.(); + var xml:XMLList = data[city]; + var l:int = xml.mesh.length(); + while (l--) { + c = (getDefinitionByName(String(xml.mesh[l].@classpath)) as Class); + m.push(new Monument(new (c)(), xml.mesh[l])); + }; + return (m); + } + + } +}//package wd.d3.geom.monuments diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/AntennasItemObject.as b/flash_decompiled/watchdog/wd/d3/geom/objects/AntennasItemObject.as new file mode 100644 index 0000000..15717ac --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/AntennasItemObject.as @@ -0,0 +1,71 @@ +package wd.d3.geom.objects { + import wd.hud.items.*; + import wd.hud.items.datatype.*; + import wd.core.*; + import __AS3__.vec.*; + import biga.utils.*; + import wd.sound.*; + import aze.motion.*; + import flash.geom.*; + + public class AntennasItemObject extends BaseItemObject { + + private var values:Vector.; + public var time:Number = 0; + + public function AntennasItemObject(manager:ItemObjectsManager){ + super(manager); + } + override public function open(tracker:Tracker, list:Vector.=null, apply:Boolean=false):void{ + var t:Tracker; + var e:ElectroMagneticTrackerData; + var i:int; + super.open(tracker, list, apply); + net.flush(); + net.reloacte(manager); + net.color = Colors.getColorByType(tracker.data.type); + this.values = new Vector.(); + list.push(tracker); + if (list.length == 1){ + this.values.push(1); + } else { + i = 0; + while (i < list.length) { + e = (list[i].data as ElectroMagneticTrackerData); + this.values.push(parseFloat(e.level)); + i++; + }; + this.values = VectorUtils.normallizeAbsolute(this.values); + }; + SoundManager.playFX("MultiConnecteV17", (0.5 + (Math.random() * 0.5))); + net.triangleRenderCount = 1; + this.time = 0; + eaze(this).to(1, {time:1}).onUpdate(this.updateTween).onComplete(onOpened); + } + private function updateTween():void{ + var v0:Vector3D; + var v1:Vector3D; + var i:int; + var h:Number; + net.flush(); + v0 = new Vector3D(); + v1 = new Vector3D(); + i = 0; + while (i < list.length) { + h = (((this.time * this.values[i]) * Config.MAX_BUILDING_HEIGHT) * 4); + v0.x = list[i].x; + v0.z = list[i].z; + v1.x = list[i].x; + v1.y = (list[i].y = h); + v1.z = list[i].z; + net.addSegment(v0, v1); + i++; + }; + } + override public function close(apply:Boolean=true):void{ + super.close(apply); + eaze(this).to(1, {time:0}).onUpdate(this.updateTween).onComplete(onClosed); + } + + } +}//package wd.d3.geom.objects diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/BaseItemObject.as b/flash_decompiled/watchdog/wd/d3/geom/objects/BaseItemObject.as new file mode 100644 index 0000000..e4762e0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/BaseItemObject.as @@ -0,0 +1,99 @@ +package wd.d3.geom.objects { + import __AS3__.vec.*; + import wd.hud.items.*; + import flash.geom.*; + import wd.d3.geom.objects.delaunay.*; + import wd.d3.geom.objects.networks.*; + import away3d.containers.*; + + public class BaseItemObject extends ObjectContainer3D { + + protected var manager:ItemObjectsManager; + protected var net:Network; + private var _list:Vector.; + private var _tracker:Tracker; + private var _opened:Boolean; + + public function BaseItemObject(manager:ItemObjectsManager){ + super(); + this.manager = manager; + this.net = manager.net; + manager.addChild(this); + this.list = new Vector.(); + } + public function open(tracker:Tracker, list:Vector.=null, apply:Boolean=false):void{ + this.tracker = tracker; + if (list != null){ + this.list = list; + }; + this.opened = apply; + } + public function onOpened():void{ + this.opened = true; + this.manager.popinManager.openPopin(this.tracker.data); + } + public function show():void{ + } + public function hide():void{ + } + public function close(apply:Boolean=true):void{ + this.opened = apply; + } + public function onClosed():void{ + this.opened = false; + } + public function update():void{ + } + public function get tracker():Tracker{ + return (this._tracker); + } + public function set tracker(value:Tracker):void{ + this._tracker = value; + } + public function get list():Vector.{ + return (this._list); + } + public function set list(value:Vector.):void{ + this._list = value; + } + public function get opened():Boolean{ + return (this._opened); + } + public function set opened(value:Boolean):void{ + this._opened = value; + } + public function createDelaunayFromList():void{ + if (this.list == null){ + return; + }; + var v:Vector3D = new Vector3D(this.tracker.x, 0, this.tracker.z); + if (this.list.length == 0){ + this.net.flush(); + this.net.addSegment(this.tracker, v); + this.net.triangleRenderCount = 1; + return; + }; + if (this.list.length == 1){ + this.net.flush(); + this.net.addSegment(this.tracker, v); + this.net.addSegment(v, this.list[0]); + this.net.addSegment(this.list[0], this.tracker); + this.net.triangleRenderCount = 1; + return; + }; + this.list.unshift(this.tracker); + var inds:Vector. = CustomDelaunay.instance.compute(Vector.(this.list)); + if (inds == null){ + return; + }; + this.net.initAsTriangles(this.list, inds); + this.net.triangleRenderCount = 0; + } + private function horizontalSort(a:Tracker, b:Tracker):Number{ + return ((((a.x < b.x)) ? -1 : 1)); + } + public function removeListeners():void{ + } + + } +}//package wd.d3.geom.objects diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/ItemObjectsManager.as b/flash_decompiled/watchdog/wd/d3/geom/objects/ItemObjectsManager.as new file mode 100644 index 0000000..b02317a --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/ItemObjectsManager.as @@ -0,0 +1,141 @@ +package wd.d3.geom.objects { + import wd.utils.*; + import flash.utils.*; + import wd.d3.geom.objects.networks.*; + import wd.d3.*; + import wd.hud.items.*; + import wd.data.*; + import wd.http.*; + import __AS3__.vec.*; + import flash.geom.*; + import wd.hud.popins.*; + import flash.events.*; + import wd.events.*; + import away3d.containers.*; + + public class ItemObjectsManager extends ObjectContainer3D { + + private static var instance:ItemObjectsManager; + + private var objects:Dictionary; + private var current:BaseItemObject; + private var nextTracker:Tracker; + private var nextList:Vector.; + public var sim:Simulation; + public var net:Network; + private var tracker:Tracker; + private var _popinManager:PopinsManager; + + public function ItemObjectsManager(sim:Simulation){ + this.objects = new Dictionary(true); + super(); + this.sim = sim; + this.net = new Network(this, 0xFF00, 0.5); + this.objects["network"] = new NetworkObject(this); + this.objects["spot"] = new WifiItemObject(this); + this.objects["electro"] = new AntennasItemObject(this); + instance = this; + } + public static function get activityType():int{ + var type:int = -1; + if (((((!((instance == null))) && (!((instance.current == null))))) && (instance.current.opened))){ + type = instance.current.tracker.data.type; + }; + URLFormater.activityType = type; + return (type); + } + + public function update():void{ + if (this.current != null){ + this.current.update(); + }; + } + public function itemRollOutHandler(tracker:Tracker, staticTrackersOnView:ListVec3D):void{ + } + public function itemRollOverHandler(tracker:Tracker, staticTrackersOnView:ListVec3D):void{ + } + public function itemClickHandler(tracker:Tracker):void{ + if (this.closeCurrent(tracker)){ + return; + }; + if ((((tracker.data.type == DataType.TRAINS)) || ((tracker.data.type == DataType.METRO_STATIONS)))){ + this.popinManager.openPopin(tracker.data); + return; + }; + switch (tracker.data.type){ + case DataType.WIFIS: + this.current = this.objects["spot"]; + (this.current as WifiItemObject).radius = 100; + break; + case DataType.INTERNET_RELAYS: + this.current = this.objects["spot"]; + (this.current as WifiItemObject).radius = 200; + break; + case DataType.ELECTROMAGNETICS: + this.current = this.objects["electro"]; + break; + default: + this.current = this.objects["network"]; + }; + this.current.open(tracker, this.collectListFromTrackers(tracker)); + } + private function collectListFromTrackers(tracker:Tracker):Vector.{ + var t:Tracker; + var i:int; + var node:ListNodeVec3D = Tracker.staticTrackersOnView.head; + var list:Vector. = new Vector.(); + if (node != null){ + i = 0; + while (node) { + t = (node.data as Tracker); + if (((!((t == tracker))) && ((t.data.type == tracker.data.type)))){ + list.push(t); + }; + node = node.next; + }; + }; + this.tracker = tracker; + list.sort(this.closestSort); + list = list.splice(0, 10); + return (list); + } + private function closestSort(a:Tracker, b:Tracker):Number{ + return ((((Vector3D.distance(this.tracker, a) < Vector3D.distance(this.tracker, b))) ? -1 : 1)); + } + public function get popinManager():PopinsManager{ + return (this._popinManager); + } + public function set popinManager(value:PopinsManager):void{ + if (this._popinManager != null){ + this._popinManager.removeEventListener(Event.CLOSE, this.onPopinClose); + }; + this._popinManager = value; + this._popinManager.addEventListener(Event.CLOSE, this.onPopinClose); + } + private function onPopinClose(e:Event=null):void{ + this.closeCurrent(null); + } + private function closeCurrent(next:Tracker):Boolean{ + var o:BaseItemObject; + var sameId:Boolean; + if (this.current != null){ + if (this.current.opened){ + this.current.close(); + dispatchEvent(new NavigatorEvent(NavigatorEvent.DO_WAVE, this.current.tracker)); + }; + this.current.opened = false; + this.current.tracker.selected = false; + this.current.removeListeners(); + if (((!((next == null))) && ((next.data.id == this.current.tracker.data.id)))){ + sameId = true; + }; + }; + this.current = null; + for each (o in this.objects) { + o.opened = false; + }; + return (sameId); + } + + } +}//package wd.d3.geom.objects diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/NetworkObject.as b/flash_decompiled/watchdog/wd/d3/geom/objects/NetworkObject.as new file mode 100644 index 0000000..3c4408c --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/NetworkObject.as @@ -0,0 +1,128 @@ +package wd.d3.geom.objects { + import wd.core.*; + import flash.events.*; + import wd.sound.*; + import aze.motion.*; + import wd.hud.items.*; + import __AS3__.vec.*; + import flash.ui.*; + import wd.http.*; + import wd.d3.control.*; + import wd.events.*; + import wd.hud.items.datatype.*; + import flash.geom.*; + import flash.utils.*; + + public class NetworkObject extends BaseItemObject { + + private var height:Number = 15; + private var iterator:int = 0; + public var switching:Boolean; + + public function NetworkObject(manager:ItemObjectsManager){ + super(manager); + } + override public function open(tracker:Tracker, list:Vector.=null, apply:Boolean=false):void{ + Config.NAVIGATION_LOCKED = true; + tracker.data.visited = true; + manager.sim.stage.addEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown); + super.open(tracker, list, apply); + net.reloacte(manager); + net.color = Colors.getColorByType(tracker.data.type); + createDelaunayFromList(); + net.triangleRenderCount = 0; + SoundManager.playFX("MultiConnecteV17", (0.5 + (Math.random() * 0.5))); + eaze(net).to(1.5, {triangleRenderCount:1}); + eaze(this).delay(0.75).onComplete(onOpened); + } + private function onKeyDown(e:KeyboardEvent):void{ + if ((((((((((e.keyCode == Keyboard.ESCAPE)) || ((e.keyCode == Keyboard.UP)))) || ((e.keyCode == Keyboard.DOWN)))) || ((e.charCode == "+".charCodeAt(0))))) || ((e.charCode == "-".charCodeAt(0))))){ + manager.popinManager.hide(null); + return; + }; + if (list.length <= 1){ + return; + }; + if ((((((((((((((((((((list[0].data.type == DataType.ADS)) || ((list[0].data.type == DataType.ATMS)))) || ((list[0].data.type == DataType.CAMERAS)))) || ((list[0].data.type == DataType.ELECTROMAGNETICS)))) || ((list[0].data.type == DataType.FOUR_SQUARE)))) || ((list[0].data.type == DataType.MOBILES)))) || ((list[0].data.type == DataType.TOILETS)))) || ((list[0].data.type == DataType.TRAFFIC_LIGHTS)))) || ((list[0].data.type == DataType.VELO_STATIONS)))) || ((this.pickBestCandidate(list) == false)))){ + list.splice(list.indexOf(tracker), 1); + list.sort(this.randomSort); + tracker = list[0]; + }; + tracker.data.visited = true; + manager.popinManager.hide(null); + manager.sim.stage.removeEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown); + CameraController.instance.addEventListener(NavigatorEvent.TARGET_REACHED, this.onTargetReached); + CameraController.instance.setTarget(tracker, tracker.data.lon, tracker.data.lat); + } + private function pickBestCandidate(list:Vector.):Boolean{ + var item:Tracker; + var tw:TwitterTrackerData; + var ntw:TwitterTrackerData; + var f:FlickrTrackerData; + var nf:FlickrTrackerData; + var i:InstagramTrackerData; + var ni:InstagramTrackerData; + var found:Boolean; + var t:Tracker = tracker; + t.data.visited = true; + for each (item in list) { + if (item != t){ + if (item.data.visited){ + } else { + if ((item.data is TwitterTrackerData)){ + tw = (t.data as TwitterTrackerData); + ntw = (item.data as TwitterTrackerData); + if ((((((tw.from_user == ntw.from_user)) || (!((ntw.caption.lastIndexOf(tw.name) == -1))))) || (((!((tw.place_name == ""))) && ((tw.place_name == ntw.place_name)))))){ + tracker = item; + return (true); + }; + }; + if ((item.data is FlickrTrackerData)){ + f = (t.data as FlickrTrackerData); + nf = (item.data as FlickrTrackerData); + if ((((f.userName == nf.userName)) || ((f.time == nf.time)))){ + tracker = item; + return (true); + }; + }; + if ((item.data is InstagramTrackerData)){ + i = (t.data as InstagramTrackerData); + ni = (item.data as InstagramTrackerData); + if (i.name == ni.name){ + tracker = item; + return (true); + }; + }; + }; + }; + }; + return (false); + } + private function closestSort(a:Tracker, b:Tracker):Number{ + return ((((Vector3D.distance(tracker, a) < Vector3D.distance(tracker, b))) ? -1 : 1)); + } + private function randomSort(a:Tracker, b:Tracker):Number{ + return ((((Math.random() > 0.5)) ? -1 : 1)); + } + private function onTargetReached(e:NavigatorEvent):void{ + CameraController.instance.removeEventListener(NavigatorEvent.TARGET_REACHED, this.onTargetReached); + manager.itemClickHandler(e.data); + } + override public function close(apply:Boolean=false):void{ + manager.sim.stage.removeEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown); + Config.NAVIGATION_LOCKED = false; + super.close(true); + eaze(net).to(0.5, {triangleRenderCount:0}); + } + override public function update():void{ + var t:Number = (0.5 + (Math.sin((getTimer() * 0.001)) * 0.5)); + net.thickness = (0.2 + (Math.random() * 1)); + net.alpha = (0.5 + (Math.random() * 0.5)); + } + override public function removeListeners():void{ + manager.sim.stage.removeEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown); + CameraController.instance.removeEventListener(NavigatorEvent.TARGET_REACHED, this.onTargetReached); + } + + } +}//package wd.d3.geom.objects diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/WifiItemObject.as b/flash_decompiled/watchdog/wd/d3/geom/objects/WifiItemObject.as new file mode 100644 index 0000000..3933399 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/WifiItemObject.as @@ -0,0 +1,82 @@ +package wd.d3.geom.objects { + import away3d.materials.*; + import wd.core.*; + import wd.d3.lights.*; + import flash.display.*; + import away3d.entities.*; + import away3d.primitives.*; + import aze.motion.*; + import aze.motion.easing.*; + import wd.hud.items.*; + import __AS3__.vec.*; + import flash.utils.*; + + public class WifiItemObject extends BaseItemObject { + + private var mesh:Mesh; + private var height:Number = 30; + private var mat:ColorMaterial; + private var contour:WireframeCylinder; + private var time:Number = 0; + public var radius:Number = 50; + + public function WifiItemObject(manager:ItemObjectsManager){ + super(manager); + visible = false; + } + override public function open(tracker:Tracker, list:Vector.=null, apply:Boolean=false):void{ + var top:Number; + var bottom:Number; + var sides:Number; + super.open(tracker, list, true); + if (this.mat == null){ + top = 0; + bottom = 1; + sides = 32; + this.mat = new ColorMaterial(Colors.getColorByType(tracker.data.type), 0.25); + this.mat.gloss = 10; + this.mat.specular = 0.5; + this.mat.lightPicker = LightProvider.lightPickerObjects; + this.mat.blendMode = BlendMode.ADD; + this.mat.bothSides = true; + this.mesh = new Mesh(new CylinderGeometry(top, bottom, this.height, sides), this.mat); + this.mesh.y = (this.height * 0.5); + addChild(this.mesh); + scale(0.001); + }; + visible = true; + position = tracker; + var s:Number = 1E-6; + scale(s); + eaze(this).to(0.5, { + scaleX:this.radius, + scaleY:1, + y:(this.height * 0.5), + scaleZ:this.radius + }).easing(Expo.easeOut).onComplete(onOpened); + } + override public function close(apply:Boolean=false):void{ + super.close(); + var s:Number = 1E-6; + eaze(this).to(0.5, { + scaleX:s, + scaleY:1, + y:(this.height * 0.5), + scaleZ:s + }).easing(Expo.easeOut).chain(this).to(0.35, { + scaleY:s, + y:0 + }).easing(Expo.easeOut); + } + override public function update():void{ + this.time = (((getTimer() * 0.01) % 30) / 30); + this.mat.alpha = (0.5 - (this.time * 0.5)); + this.mesh.scaleX = (this.mesh.scaleZ = this.time); + if (((opened) && (!((tracker == null))))){ + LightProvider.light1.position = tracker; + LightProvider.light1.y = tracker.y; + }; + } + + } +}//package wd.d3.geom.objects diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/delaunay/CustomDelaunay.as b/flash_decompiled/watchdog/wd/d3/geom/objects/delaunay/CustomDelaunay.as new file mode 100644 index 0000000..9816e29 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/delaunay/CustomDelaunay.as @@ -0,0 +1,148 @@ +package wd.d3.geom.objects.delaunay { + import flash.geom.*; + import __AS3__.vec.*; + + public class CustomDelaunay { + + public static var EPSILON:Number = Number.MIN_VALUE; + public static var SUPER_TRIANGLE_RADIUS:Number = 0x3B9ACA00; + private static var _instance:CustomDelaunay; + + private var indices:Vector.; + private var _circles:Vector.; + + public function CustomDelaunay(secret:Secret){ + super(); + if (secret == null){ + throw (new Error((this + ", is a signleton, use CustomDelaunay.instance instead"))); + }; + } + public static function get instance():CustomDelaunay{ + if (_instance == null){ + _instance = new CustomDelaunay(new Secret()); + }; + return (_instance); + } + public static function set instance(value:CustomDelaunay):void{ + _instance = value; + } + + public function compute(points:Vector.):Vector.{ + var i:int; + var j:int; + var k:int; + var id0:int; + var id1:int; + var id2:int; + if (points == null){ + return (null); + }; + var nv:int = points.length; + if (nv < 3){ + return (null); + }; + var d:Number = SUPER_TRIANGLE_RADIUS; + points.push(new Vector3D(0, 0, -(d)), new Vector3D(d, 0, d), new Vector3D(-(d), 0, d)); + this.indices = Vector.([(points.length - 3), (points.length - 2), (points.length - 1)]); + this.circles = Vector.([0, 0, d]); + var edgeIds:Vector. = new Vector.(); + i = 0; + while (i < nv) { + j = 0; + while (j < this.indices.length) { + if ((((this.circles[(j + 2)] > EPSILON)) && (this.circleContains(j, points[i])))){ + id0 = this.indices[j]; + id1 = this.indices[(j + 1)]; + id2 = this.indices[(j + 2)]; + edgeIds.push(id0, id1, id1, id2, id2, id0); + this.indices.splice(j, 3); + this.circles.splice(j, 3); + j = (j - 3); + }; + j = (j + 3); + }; + j = 0; + while (j < edgeIds.length) { + k = (j + 2); + while (k < edgeIds.length) { + if ((((((edgeIds[j] == edgeIds[k])) && ((edgeIds[(j + 1)] == edgeIds[(k + 1)])))) || ((((edgeIds[(j + 1)] == edgeIds[k])) && ((edgeIds[j] == edgeIds[(k + 1)])))))){ + edgeIds.splice(k, 2); + edgeIds.splice(j, 2); + j = (j - 2); + k = (k - 2); + if (j < 0){ + break; + }; + if (k < 0){ + break; + }; + }; + k = (k + 2); + }; + j = (j + 2); + }; + j = 0; + while (j < edgeIds.length) { + this.indices.push(edgeIds[j], edgeIds[(j + 1)], i); + this.computeCircle(points, edgeIds[j], edgeIds[(j + 1)], i); + j = (j + 2); + }; + edgeIds.length = 0; + i++; + }; + id0 = (points.length - 3); + id1 = (points.length - 2); + id2 = (points.length - 1); + i = 0; + while (i < this.indices.length) { + if ((((((((((((((((((this.indices[i] == id0)) || ((this.indices[i] == id1)))) || ((this.indices[i] == id2)))) || ((this.indices[(i + 1)] == id0)))) || ((this.indices[(i + 1)] == id1)))) || ((this.indices[(i + 1)] == id2)))) || ((this.indices[(i + 2)] == id0)))) || ((this.indices[(i + 2)] == id1)))) || ((this.indices[(i + 2)] == id2)))){ + this.indices.splice(i, 3); + this.circles.splice(i, 3); + i = (i - 3); + }; + i = (i + 3); + }; + points.pop(); + points.pop(); + points.pop(); + return (this.indices); + } + private function circleContains(circleId:int, p:Vector3D):Boolean{ + var dx:Number = (this.circles[circleId] - p.x); + var dy:Number = (this.circles[(circleId + 1)] - p.z); + return ((this.circles[(circleId + 2)] > ((dx * dx) + (dy * dy)))); + } + private function computeCircle(points:Vector., id0:int, id1:int, id2:int):void{ + var p0:Vector3D = points[id0]; + var p1:Vector3D = points[id1]; + var p2:Vector3D = points[id2]; + var A:Number = (p1.x - p0.x); + var B:Number = (p1.z - p0.z); + var C:Number = (p2.x - p0.x); + var D:Number = (p2.z - p0.z); + var E:Number = ((A * (p0.x + p1.x)) + (B * (p0.z + p1.z))); + var F:Number = ((C * (p0.x + p2.x)) + (D * (p0.z + p2.z))); + var G:Number = (2 * ((A * (p2.z - p1.z)) - (B * (p2.x - p1.x)))); + var x:Number = (((D * E) - (B * F)) / G); + this.circles.push(x); + var z:Number = (((A * F) - (C * E)) / G); + this.circles.push(z); + x = (x - p0.x); + z = (z - p0.z); + this.circles.push(((x * x) + (z * z))); + } + public function get circles():Vector.{ + return (this._circles); + } + public function set circles(value:Vector.):void{ + this._circles = value; + } + + } +}//package wd.d3.geom.objects.delaunay + +class Secret { + + public function Secret(){ + } +} diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Bind.as b/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Bind.as new file mode 100644 index 0000000..def2156 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Bind.as @@ -0,0 +1,22 @@ +package wd.d3.geom.objects.linker { + import flash.geom.*; + import wd.d3.*; + import wd.d3.geom.objects.networks.*; + + public class Bind { + + public var point:Point; + public var vector:Vector3D; + + public function Bind(point:Point, vector:Vector3D){ + super(); + this.vector = vector; + this.point = point; + } + public function reset(net:NetworkSet):void{ + var v:Vector3D = Simulation.instance.view.unproject(this.point.x, this.point.y); + net.addSegment(v, this.vector); + } + + } +}//package wd.d3.geom.objects.linker diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Linker.as b/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Linker.as new file mode 100644 index 0000000..bc08433 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/linker/Linker.as @@ -0,0 +1,54 @@ +package wd.d3.geom.objects.linker { + import flash.geom.*; + import __AS3__.vec.*; + import wd.d3.geom.objects.networks.*; + import wd.d3.*; + import away3d.containers.*; + + public class Linker extends ObjectContainer3D { + + private static var instance:Linker; + + private var bounds:Vector.; + private var net:NetworkSet; + + public function Linker(sim:Simulation){ + super(); + this.bounds = new Vector.(); + this.net = new NetworkSet(2, new NetworkMaterial(0xFF0000, 0.5)); + addChild(this.net); + instance = this; + } + public static function addLink(p:Point, v:Vector3D):void{ + instance.bounds.push(new Bind(p, v)); + } + public static function removeLink(p:Point=null, v:Vector3D=null):void{ + var b:Bind; + for each (b in instance.bounds) { + if (b.vector.equals(v)){ + instance.bounds.splice(instance.bounds.indexOf(b), 1); + b = null; + return; + }; + }; + instance.reset(); + } + + public function reset():void{ + var b:Bind; + for each (b in this.bounds) { + b.reset(this.net); + }; + } + public function update():void{ + var b:Bind; + this.net.removeAllSegments(); + for each (b in this.bounds) { + b.reset(this.net); + }; + this.net.thickness = (0.1 + Math.random()); + this.net.alpha = (0.1 + Math.random()); + } + + } +}//package wd.d3.geom.objects.linker diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/networks/Network.as b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/Network.as new file mode 100644 index 0000000..b01fb4d --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/Network.as @@ -0,0 +1,108 @@ +package wd.d3.geom.objects.networks { + import __AS3__.vec.*; + import away3d.containers.*; + import wd.hud.items.*; + import flash.geom.*; + import wd.core.*; + + public class Network extends ObjectContainer3D { + + public static var instance:Network; + + private var sets:Vector.; + private var current:NetworkSet; + private var material:NetworkMaterial; + private var manager:ObjectContainer3D; + + public function Network(manager:ObjectContainer3D, color:int=0, thickness:Number=1){ + super(); + this.manager = manager; + instance = this; + manager.addChild(this); + this.material = new NetworkMaterial(color, thickness); + this.current = new NetworkSet(thickness, this.material); + this.sets = new Vector.(); + this.sets.push(this.current); + addChild(this.current); + } + public function initAsSegments(vectors:Vector., loop:Boolean=false):void{ + this.current.removeAllSegments(); + if ((((vectors == null)) || ((vectors.length < 2)))){ + return; + }; + var i:int; + while (i < (vectors.length - 1)) { + this.addSegment(vectors[i], vectors[(i + 1)]); + i++; + }; + if (loop){ + this.addSegment(vectors[(vectors.length - 1)], vectors[0]); + }; + } + public function initAsTriangles(vectors:Vector., indices:Vector.):void{ + var v0:Vector3D; + var v1:Vector3D; + var v2:Vector3D; + this.flush(); + if ((((vectors == null)) || ((vectors.length < 3)))){ + return; + }; + var i:int; + while (i < indices.length) { + v0 = vectors[indices[i]]; + v1 = vectors[indices[(i + 1)]]; + v2 = vectors[indices[(i + 2)]]; + this.addSegment(v0, v1); + this.addSegment(v1, v2); + this.addSegment(v2, v0); + i = (i + 3); + }; + } + public function flush():void{ + this.current.removeAllSegments(); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + if ((((this.current.vertexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 28))) || ((this.current.indexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 6))))){ + trace("extra Buffer created on Network"); + this.current = new NetworkSet(this.material.thickness, this.material); + this.sets.push(this.current); + addChild(this.current); + }; + this.current.addSegment(s, e); + } + public function reloacte(container:ObjectContainer3D):void{ + if (((!((parent == null))) && (parent.contains(this)))){ + parent.removeChild(this); + }; + container.addChild(this); + } + public function set color(value:int):void{ + this.material.color = value; + } + public function set alpha(value:Number):void{ + this.material.alpha = value; + } + public function get alpha():Number{ + return (this.material.alpha); + } + public function set thickness(value:Number):void{ + this.material.thickness = value; + } + public function get thickness():Number{ + return (this.material.thickness); + } + public function set triangleRenderCount(value:Number):void{ + this.material.triangleRenderCount = value; + } + public function get triangleRenderCount():Number{ + return (this.material.triangleRenderCount); + } + public function get triangleRenderStart():Number{ + return (this.material.triangleRenderStart); + } + public function set triangleRenderStart(value:Number):void{ + this.material.triangleRenderStart = value; + } + + } +}//package wd.d3.geom.objects.networks diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkMaterial.as b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkMaterial.as new file mode 100644 index 0000000..d5ad0a8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkMaterial.as @@ -0,0 +1,45 @@ +package wd.d3.geom.objects.networks { + import __AS3__.vec.*; + import away3d.materials.*; + + public class NetworkMaterial extends MaterialBase { + + private var _thickness:Number; + private var _screenPass:NetworkPass; + + public function NetworkMaterial(color:int, thickness:Number=1.25):void{ + super(); + this._thickness = thickness; + addPass((this._screenPass = new NetworkPass(color, thickness))); + this._screenPass.material = this; + } + public function set color(value:int):void{ + this._screenPass.color = Vector.([(((value >> 16) & 0xFF) / 0xFF), (((value >> 8) & 0xFF) / 0xFF), ((value & 0xFF) / 0xFF), 1]); + } + public function set alpha(value:Number):void{ + this._screenPass.color[3] = value; + } + public function get alpha():Number{ + return (this._screenPass.color[3]); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._screenPass.thickness = (this._thickness = value); + } + public function set triangleRenderStart(value:Number):void{ + this._screenPass.triangleRenderStart = value; + } + public function get triangleRenderStart():Number{ + return (this._screenPass.triangleRenderStart); + } + public function set triangleRenderCount(value:Number):void{ + this._screenPass.triangleRenderCount = value; + } + public function get triangleRenderCount():Number{ + return (this._screenPass.triangleRenderCount); + } + + } +}//package wd.d3.geom.objects.networks diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkPass.as b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkPass.as new file mode 100644 index 0000000..3885de6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkPass.as @@ -0,0 +1,99 @@ +package wd.d3.geom.objects.networks { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import away3d.materials.passes.*; + + public class NetworkPass extends MaterialPassBase { + + protected static const ONE_VECTOR:Vector. = Vector.([1, 1, 1, 1]); + protected static const FRONT_VECTOR:Vector. = Vector.([0, 0, -1, 0]); + + private static var VARIABLES:Vector. = Vector.([1, 2]); + private static var angle:Number = 0; + + private var _constants:Vector.; + private var _color:Vector.; + private var _calcMatrix:Matrix3D; + private var _thickness:Number; + private var _triangleRenderCount:Number = 1; + private var _triangleRenderStart:Number = 0; + + public function NetworkPass(color:int, thickness:Number){ + this._constants = new Vector.(4, true); + this._color = new Vector.(4, true); + this._calcMatrix = new Matrix3D(); + this._thickness = thickness; + this._color[0] = (((color >> 16) & 0xFF) / 0xFF); + this._color[1] = (((color >> 8) & 0xFF) / 0xFF); + this._color[2] = ((color & 0xFF) / 0xFF); + this._color[3] = 1; + this._constants[1] = (1 / 0xFF); + super(); + } + override function getVertexCode(code:String):String{ + code = ((((((((((((((((((((((((((("m44 vt0, va0, vc8\t\t\t\t\n" + "m44 vt1, va1, vc8\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "slt vt5.x, vt0.z, vc7.z\t\t\n") + "sub vt5.y, vc5.x, vt5.x\t\t\n") + "add vt4.x, vt0.z, vc7.z\t\t\n") + "sub vt4.y, vt0.z, vt1.z\t\t\n") + "div vt4.z, vt4.x, vt4.y\t\t\n") + "mul vt4.xyz, vt4.zzz, vt2.xyz\t\n") + "add vt3.xyz, vt0.xyz, vt4.xyz\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "mul vt0, vt0, vt5.yyyy\t\t\t\n") + "mul vt3, vt3, vt5.xxxx\t\t\t\n") + "add vt0, vt0, vt3\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "nrm vt2.xyz, vt2.xyz\t\t\t\n") + "nrm vt5.xyz, vt0.xyz\t\t\t\n") + "mov vt5.w, vc5.x\t\t\t\t\n") + "crs vt3.xyz, vt2, vt5\t\t\t\n") + "nrm vt3.xyz, vt3.xyz\t\t\t\n") + "mul vt3.xyz, vt3.xyz, va2.xxx\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "dp3 vt4.x, vt0, vc6\t\t\t\n") + "mul vt4.x, vt4.x, vc7.x\t\t\n") + "mul vt3.xyz, vt3.xyz, vt4.xxx\t\n") + "add vt0.xyz, vt0.xyz, vt3.xyz\t\n") + "m44 vt0, vt0, vc0\t\t\t\t\n") + "mul op, vt0, vc4\t\t\t\t\n"); + return (code); + } + override function getFragmentCode():String{ + return ("mov oc, fc0 \n"); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + var vertexBuffer:VertexBuffer3D = renderable.getVertexBuffer(stage3DProxy); + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(2, vertexBuffer, 6, Context3DVertexBufferFormat.FLOAT_1); + this._calcMatrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._calcMatrix.append(camera.inverseSceneTransform); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 8, this._calcMatrix, true); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), int((this._triangleRenderStart * renderable.numTriangles)), int((this._triangleRenderCount * renderable.numTriangles))); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + this._constants[0] = (this._thickness / Math.min(stage3DProxy.width, stage3DProxy.height)); + this._constants[2] = camera.lens.near; + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, ONE_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, FRONT_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this._constants); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, camera.lens.matrix, true); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._color); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(2, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(3, null, null, 0); + } + public function get color():Vector.{ + return (this._color); + } + public function set color(value:Vector.):void{ + this._color = value; + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = value; + } + public function get triangleRenderCount():Number{ + return (this._triangleRenderCount); + } + public function set triangleRenderCount(value:Number):void{ + this._triangleRenderCount = value; + } + public function get triangleRenderStart():Number{ + return (this._triangleRenderStart); + } + public function set triangleRenderStart(value:Number):void{ + this._triangleRenderStart = value; + } + + } +}//package wd.d3.geom.objects.networks diff --git a/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkSet.as b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkSet.as new file mode 100644 index 0000000..a23ab48 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/objects/networks/NetworkSet.as @@ -0,0 +1,310 @@ +package wd.d3.geom.objects.networks { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.entities.*; + import away3d.materials.*; + import away3d.animators.*; + import away3d.bounds.*; + import away3d.core.partition.*; + import away3d.core.base.*; + + public class NetworkSet extends Entity implements IRenderable { + + public var VERTEX_BUFFER_LENGTH:int = 7; + private var _material:MaterialBase; + private var _vertices:Vector.; + private var _animator:IAnimator; + private var _numVertices:uint = 0; + private var _indices:Vector.; + private var _numIndices:uint; + private var _vertexBufferDirty:Boolean; + private var _indexBufferDirty:Boolean; + private var _vertexContext3D:Context3D; + private var _indexContext3D:Context3D; + private var _vertexBuffer:VertexBuffer3D; + private var _indexBuffer:IndexBuffer3D; + private var _lineCount:uint; + private var _thickness:Number; + + public function NetworkSet(thickness:Number=1, material:NetworkMaterial=null){ + super(); + this.thickness = thickness; + this.material = material; + this._vertices = new Vector.(); + this._indices = new Vector.(); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + var index:uint = this._vertices.length; + var _temp1 = index; + index = (index + 1); + var _local4 = _temp1; + this._vertices[_local4] = s.x; + var _temp2 = index; + index = (index + 1); + var _local5 = _temp2; + this._vertices[_local5] = s.y; + var _temp3 = index; + index = (index + 1); + var _local6 = _temp3; + this._vertices[_local6] = s.z; + var _temp4 = index; + index = (index + 1); + var _local7 = _temp4; + this._vertices[_local7] = e.x; + var _temp5 = index; + index = (index + 1); + var _local8 = _temp5; + this._vertices[_local8] = e.y; + var _temp6 = index; + index = (index + 1); + var _local9 = _temp6; + this._vertices[_local9] = e.z; + var _temp7 = index; + index = (index + 1); + var _local10 = _temp7; + this._vertices[_local10] = this.thickness; + var _temp8 = index; + index = (index + 1); + var _local11 = _temp8; + this._vertices[_local11] = e.x; + var _temp9 = index; + index = (index + 1); + var _local12 = _temp9; + this._vertices[_local12] = e.y; + var _temp10 = index; + index = (index + 1); + var _local13 = _temp10; + this._vertices[_local13] = e.z; + var _temp11 = index; + index = (index + 1); + var _local14 = _temp11; + this._vertices[_local14] = s.x; + var _temp12 = index; + index = (index + 1); + var _local15 = _temp12; + this._vertices[_local15] = s.y; + var _temp13 = index; + index = (index + 1); + var _local16 = _temp13; + this._vertices[_local16] = s.z; + var _temp14 = index; + index = (index + 1); + var _local17 = _temp14; + this._vertices[_local17] = -(this.thickness); + var _temp15 = index; + index = (index + 1); + var _local18 = _temp15; + this._vertices[_local18] = s.x; + var _temp16 = index; + index = (index + 1); + var _local19 = _temp16; + this._vertices[_local19] = s.y; + var _temp17 = index; + index = (index + 1); + var _local20 = _temp17; + this._vertices[_local20] = s.z; + var _temp18 = index; + index = (index + 1); + var _local21 = _temp18; + this._vertices[_local21] = e.x; + var _temp19 = index; + index = (index + 1); + var _local22 = _temp19; + this._vertices[_local22] = e.y; + var _temp20 = index; + index = (index + 1); + var _local23 = _temp20; + this._vertices[_local23] = e.z; + var _temp21 = index; + index = (index + 1); + var _local24 = _temp21; + this._vertices[_local24] = -(this.thickness); + var _temp22 = index; + index = (index + 1); + var _local25 = _temp22; + this._vertices[_local25] = e.x; + var _temp23 = index; + index = (index + 1); + var _local26 = _temp23; + this._vertices[_local26] = e.y; + var _temp24 = index; + index = (index + 1); + var _local27 = _temp24; + this._vertices[_local27] = e.z; + var _temp25 = index; + index = (index + 1); + var _local28 = _temp25; + this._vertices[_local28] = s.x; + var _temp26 = index; + index = (index + 1); + var _local29 = _temp26; + this._vertices[_local29] = s.y; + var _temp27 = index; + index = (index + 1); + var _local30 = _temp27; + this._vertices[_local30] = s.z; + var _temp28 = index; + index = (index + 1); + var _local31 = _temp28; + this._vertices[_local31] = this.thickness; + index = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + this._lineCount++; + } + private function removeSegmentByIndex(index:uint):void{ + var indVert:uint = (this._indices[index] * this.VERTEX_BUFFER_LENGTH); + this._indices.splice(index, 6); + this._vertices.splice(indVert, (4 * this.VERTEX_BUFFER_LENGTH)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function removeAllSegments():void{ + this._vertices.length = 0; + this._indices.length = 0; + this._numVertices = 0; + this._numIndices = 0; + this._lineCount = 0; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (null); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + if (((!((this._indexContext3D == stage3DProxy.context3D))) || (this._indexBufferDirty))){ + this._indexBuffer = stage3DProxy._context3D.createIndexBuffer(this._numIndices); + this._indexBuffer.uploadFromVector(this._indices, 0, this._numIndices); + this._indexBufferDirty = false; + this._indexContext3D = stage3DProxy.context3D; + }; + return (this._indexBuffer); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + if (this._numVertices == 0){ + this.addSegment(new Vector3D(0, 0, 0), new Vector3D(0, 0, 0)); + }; + if (((!((this._vertexContext3D == stage3DProxy.context3D))) || (this._vertexBufferDirty))){ + this._vertexBuffer = stage3DProxy._context3D.createVertexBuffer(this._numVertices, this.VERTEX_BUFFER_LENGTH); + this._vertexBuffer.uploadFromVector(this._vertices, 0, this._numVertices); + this._vertexBufferDirty = false; + this._vertexContext3D = stage3DProxy.context3D; + }; + return (this._vertexBuffer); + } + override public function dispose():void{ + super.dispose(); + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + }; + if (this._indexBuffer){ + this._indexBuffer.dispose(); + }; + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + override public function get mouseEnabled():Boolean{ + return (false); + } + public function get numTriangles2():uint{ + return (0); + } + public function get numTriangles():uint{ + return ((this._numIndices / 3)); + } + public function get sourceEntity():Entity{ + return (this); + } + public function get castsShadows():Boolean{ + return (false); + } + public function get material():MaterialBase{ + return (this._material); + } + public function get animator():IAnimator{ + return (this._animator); + } + public function set material(value:MaterialBase):void{ + if (value == this._material){ + return; + }; + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new BoundingSphere()); + } + override protected function updateBounds():void{ + _bounds.fromExtremes(-10000, -10000, 0, 10000, 10000, 0); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new RenderableNode(this)); + } + public function get uvTransform():Matrix{ + return (null); + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexData():Vector.{ + return (this._vertices); + } + public function get indexData():Vector.{ + return (this._indices); + } + public function get UVData():Vector.{ + return (null); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexBufferOffset():int{ + return (0); + } + public function get normalBufferOffset():int{ + return (0); + } + public function get tangentBufferOffset():int{ + return (0); + } + public function get UVBufferOffset():int{ + return (0); + } + public function get secondaryUVBufferOffset():int{ + return (0); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = value; + } + public function get alpha():Number{ + return ((this._material as NetworkMaterial).alpha); + } + public function set alpha(value:Number):void{ + (this._material as NetworkMaterial).alpha = value; + } + + } +}//package wd.d3.geom.objects.networks diff --git a/flash_decompiled/watchdog/wd/d3/geom/parcs/Parcs.as b/flash_decompiled/watchdog/wd/d3/geom/parcs/Parcs.as new file mode 100644 index 0000000..2626283 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/parcs/Parcs.as @@ -0,0 +1,145 @@ +package wd.d3.geom.parcs { + import __AS3__.vec.*; + import wd.utils.*; + import wd.core.*; + import away3d.entities.*; + import away3d.core.base.*; + import wd.d3.material.*; + import flash.net.*; + import flash.geom.*; + import wd.http.*; + import away3d.containers.*; + + public class Parcs extends ObjectContainer3D { + + private static var instance:Parcs; + + private var responder:Responder; + private var param:ServiceConstants; + private var connection:NetConnection; + private var mesh:Mesh; + private var currentAdd:SubGeometry; + private var voffset:Number = 0; + private var vs:Vector.; + private var inds:Vector.; + private var ids:Vector.; + + public function Parcs(){ + this.vs = new Vector.(); + this.inds = new Vector.(); + this.ids = new Vector.(); + super(); + new CSVLoader((("assets/csv/parcs/" + Config.CITY.toLowerCase()) + ".csv")); + this.mesh = new Mesh(new Geometry(), MaterialProvider.parc); + addChild(this.mesh); + this.currentAdd = new SubGeometry(); + this.responder = new Responder(this.onComplete, this.onCancel); + this.connection = new NetConnection(); + this.connection.connect(Config.GATEWAY); + instance = this; + } + public static function call(flush:Boolean):void{ + instance.getParcs(flush); + } + + override public function dispose():void{ + this.clearCurrentGeom(); + } + private function clearCurrentGeom():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = this.mesh.geometry.subGeometries.length; + while (numSubGeoms--) { + subGeom = this.mesh.geometry.subGeometries[numSubGeoms]; + this.mesh.geometry.removeSubGeometry(subGeom); + subGeom.dispose(); + subGeom = null; + }; + this.currentAdd = new SubGeometry(); + this.vs = new Vector.(); + this.inds = new Vector.(); + this.ids = new Vector.(); + this.voffset = 0; + } + public function reset():void{ + } + private function onComplete(res:Object):void{ + var k:*; + var m:*; + var p:Point; + var v0:Vector3D; + var v1:Vector3D; + var i:int; + var vertices:Array; + var indices:Array; + var result:Array = res["parcs"]; + var id:int; + for (k in result) { + for (m in result[k]) { + if (m == "id"){ + id = parseInt(result[k][m]); + }; + if (m == "vertex"){ + vertices = result[k][m]; + }; + if (m == "index"){ + indices = result[k][m]; + }; + }; + if (this.ids.indexOf(id) != -1){ + } else { + this.ids.push(id); + if ((((((((indices == null)) || ((vertices == null)))) || ((indices.length == 0)))) || ((vertices.length == 0)))){ + } else { + p = Locator.REMAP(vertices[0], vertices[2]); + v0 = new Vector3D(p.x, 0, p.y); + v1 = new Vector3D(); + if ((((this.vs.length >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (vertices.length / 3)))) || ((this.inds.length >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - (indices.length / 3)))))){ + this.currentAdd.updateVertexData(this.vs); + this.currentAdd.updateIndexData(this.inds); + this.currentAdd = new SubGeometry(); + this.vs = new Vector.(); + this.inds = new Vector.(); + this.voffset = 0; + }; + i = 0; + while (i < vertices.length) { + p = Locator.REMAP(parseFloat(vertices[i]), parseFloat(vertices[(i + 2)])); + this.vs.push(p.x, 0, p.y); + i = (i + 3); + }; + i = 0; + while (i < indices.length) { + this.inds.push((indices[i] + this.voffset)); + i++; + }; + this.voffset = (this.vs.length / 3); + }; + }; + }; + this.currentAdd.updateVertexData(this.vs); + this.currentAdd.updateIndexData(this.inds); + if (this.mesh.geometry != this.currentAdd.parentGeometry){ + this.mesh.geometry.addSubGeometry(this.currentAdd); + }; + if (res["next_page"] != null){ + this.param[ServiceConstants.PAGE] = res["next_page"]; + this.getParcs(false); + }; + } + private function onCancel(fault:Object):void{ + } + private function getParcs(flush:Boolean=false):void{ + if (flush){ + this.param = Service.initServiceConstants(); + this.param["radius"] = (Config.SETTINGS_BUILDING_RADIUS * 2); + this.param["current_page"] = 0; + this.param["item_per_page"] = Config.SETTINGS_BUILDING_PAGINATION; + }; + try { + this.connection.call(Service.METHOD_PARCS, this.responder, this.param); + } catch(err:Error) { + }; + } + + } +}//package wd.d3.geom.parcs diff --git a/flash_decompiled/watchdog/wd/d3/geom/particle/ParticleMesh.as b/flash_decompiled/watchdog/wd/d3/geom/particle/ParticleMesh.as new file mode 100644 index 0000000..1cdce3a --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/particle/ParticleMesh.as @@ -0,0 +1,63 @@ +package wd.d3.geom.particle { + import away3d.core.base.*; + import wd.d3.material.*; + import wd.utils.*; + import away3d.cameras.*; + import wd.d3.control.*; + import __AS3__.vec.*; + import wd.core.*; + import flash.geom.*; + import away3d.entities.*; + + public class ParticleMesh extends Mesh { + + private var currentAdd:SubGeometry; + private var v_offset:uint; + private var SIZE2:Number = 5; + private var area:Rectangle; + + public function ParticleMesh(){ + super(new Geometry(), MaterialProvider.particle); + this.createParticles(); + } + public function update(camera:Camera3D):void{ + x = (camera.x - (this.area.width * (camera.x / Locator.WORLD_RECT.width))); + z = (camera.z - (this.area.height * (camera.z / Locator.WORLD_RECT.height))); + } + private function createParticles():void{ + this.currentAdd = new SubGeometry(); + this.openCurrent(); + geometry.addSubGeometry(this.currentAdd); + this.area = Locator.world_rect.clone(); + var i:int; + while (i < 10000) { + this.addParticle((this.area.x + (Math.random() * this.area.width)), ((CameraController.MIN_HEIGHT * 2) + ((Math.random() * CameraController.MAX_HEIGHT) * 0.1)), (this.area.x + (Math.random() * this.area.height))); + i++; + }; + this.closeCurrent(); + } + private function openCurrent():void{ + this.currentAdd.updateVertexData(new []); + this.currentAdd.updateUVData(new []); + this.currentAdd.updateIndexData(new []); + } + private function closeCurrent():void{ + this.currentAdd.updateVertexData(this.currentAdd.vertexData); + this.currentAdd.updateUVData(this.currentAdd.UVData); + this.currentAdd.updateIndexData(this.currentAdd.indexData); + } + private function addParticle(_x:Number, _y:Number, _z:Number):void{ + if ((((this.currentAdd.numVertices >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 20))) || ((this.currentAdd.numTriangles >= (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 4))))){ + this.closeCurrent(); + this.currentAdd = new SubGeometry(); + this.openCurrent(); + geometry.addSubGeometry(this.currentAdd); + }; + this.v_offset = (this.currentAdd.vertexData.length / 3); + this.currentAdd.indexData.push((this.v_offset + 2), (this.v_offset + 1), this.v_offset, (this.v_offset + 2), (this.v_offset + 3), (this.v_offset + 1)); + this.currentAdd.UVData.push(0, 0, 1, 0, 0, 1, 1, 1); + this.currentAdd.vertexData.push((_x - this.SIZE2), _y, (_z - this.SIZE2), (_x + this.SIZE2), _y, (_z - this.SIZE2), (_x - this.SIZE2), _y, (_z + this.SIZE2), (_x + this.SIZE2), _y, (_z + this.SIZE2)); + } + + } +}//package wd.d3.geom.particle diff --git a/flash_decompiled/watchdog/wd/d3/geom/rails/Rails.as b/flash_decompiled/watchdog/wd/d3/geom/rails/Rails.as new file mode 100644 index 0000000..a2f95f4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/rails/Rails.as @@ -0,0 +1,101 @@ +package wd.d3.geom.rails { + import __AS3__.vec.*; + import flash.net.*; + import wd.core.*; + import flash.geom.*; + import wd.utils.*; + import wd.d3.geom.metro.*; + import wd.http.*; + + public class Rails { + + private static var instance:Rails; + + private var responder:Responder; + private var param:ServiceConstants; + private var connection:NetConnection; + private var vs:Vector.; + private var inds:Vector.; + private var ids:Vector.; + + public function Rails(){ + this.vs = new Vector.(); + this.inds = new Vector.(); + this.ids = new Vector.(); + super(); + this.responder = new Responder(this.onComplete, this.onCancel); + this.connection = new NetConnection(); + this.connection.connect(Config.GATEWAY); + instance = this; + } + public static function call(flush:Boolean):void{ + instance.getRails(flush); + } + + public function dispose():void{ + } + public function reset():void{ + } + private function onComplete(res:Object):void{ + var k:*; + var m:*; + var p:Point; + var v0:Vector3D; + var v1:Vector3D; + var i:int; + var vertices:Array; + var result:Array = res["rails"]; + var id:int; + for (k in result) { + for (m in result[k]) { + if (m == "id"){ + id = parseInt(result[k][m]); + }; + if (m == "vertex"){ + vertices = result[k][m].split(","); + }; + }; + if (this.ids.indexOf(id) != -1){ + } else { + this.ids.push(id); + if ((((vertices == null)) || ((vertices.length == 0)))){ + } else { + p = Locator.REMAP(vertices[0], vertices[2]); + v0 = new Vector3D(); + v1 = new Vector3D(); + i = 0; + while (i < (vertices.length - 2)) { + p = Locator.REMAP(parseFloat(vertices[i]), parseFloat(vertices[(i + 1)])); + v0.x = p.x; + v0.z = p.y; + p = Locator.REMAP(parseFloat(vertices[(i + 2)]), parseFloat(vertices[(i + 3)])); + v1.x = p.x; + v1.z = p.y; + Metro.addSegment(v0, v1, 0xBBBBBB, 0.5); + i = (i + 2); + }; + }; + }; + }; + if (res["next_page"] != null){ + this.param[ServiceConstants.PAGE] = res["next_page"]; + this.getRails(false); + }; + } + private function onCancel(fault:Object):void{ + } + private function getRails(flush:Boolean=false):void{ + if (flush){ + this.param = Service.initServiceConstants(); + this.param["radius"] = (Config.SETTINGS_BUILDING_RADIUS * 2); + this.param["current_page"] = 0; + this.param["item_per_page"] = Config.SETTINGS_BUILDING_PAGINATION; + }; + try { + this.connection.call(Service.METHOD_RAILS, this.responder, this.param); + } catch(err:Error) { + }; + } + + } +}//package wd.d3.geom.rails diff --git a/flash_decompiled/watchdog/wd/d3/geom/river/Rivers.as b/flash_decompiled/watchdog/wd/d3/geom/river/Rivers.as new file mode 100644 index 0000000..c11cf51 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/river/Rivers.as @@ -0,0 +1,98 @@ +package wd.d3.geom.river { + import away3d.entities.*; + import away3d.core.base.*; + import wd.d3.material.*; + import flash.net.*; + import wd.core.*; + import wd.http.*; + import flash.geom.*; + import __AS3__.vec.*; + import wd.utils.*; + import wd.d3.geom.objects.networks.*; + import away3d.containers.*; + + public class Rivers extends ObjectContainer3D { + + private var net:Network; + private var responder:Responder; + private var param:ServiceConstants; + private var connection:NetConnection; + private var mesh:Mesh; + + public function Rivers(){ + super(); + this.mesh = new Mesh(new Geometry(), MaterialProvider.river); + addChild(this.mesh); + this.responder = new Responder(this.onComplete, this.onCancel); + this.connection = new NetConnection(); + this.connection.connect(Config.GATEWAY); + this.init(); + } + override public function dispose():void{ + this.clearCurrentGeom(); + } + private function clearCurrentGeom():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = this.mesh.geometry.subGeometries.length; + while (numSubGeoms--) { + subGeom = this.mesh.geometry.subGeometries[numSubGeoms]; + this.mesh.geometry.removeSubGeometry(subGeom); + subGeom.dispose(); + subGeom = null; + }; + } + public function init():void{ + this.param = Service.initServiceConstants(); + this.connection.call(Service.METHOD_RIVERS, this.responder, this.param); + } + private function onComplete(result):void{ + var k:*; + var sg:SubGeometry; + var m:*; + var p:Point; + var v0:Vector3D; + var v1:Vector3D; + var i:int; + var vertices:Array; + var indices:Array; + var voffset:Number = 0; + var vs:Vector. = new Vector.(); + var inds:Vector. = new Vector.(); + for (k in result) { + for (m in result[k]) { + if (m == "vertex"){ + vertices = result[k][m]; + }; + if (m == "index"){ + indices = result[k][m]; + }; + }; + if ((((((((indices == null)) || ((vertices == null)))) || ((indices.length == 0)))) || ((vertices.length == 0)))){ + } else { + p = Locator.REMAP(vertices[0], vertices[2]); + v0 = new Vector3D(p.x, 0, p.y); + v1 = new Vector3D(); + i = 0; + while (i < vertices.length) { + p = Locator.REMAP(vertices[i], vertices[(i + 2)]); + vs.push(p.x, 0, p.y); + i = (i + 3); + }; + i = 0; + while (i < indices.length) { + inds.push((indices[i] + voffset)); + i++; + }; + voffset = (vs.length / 3); + }; + }; + sg = new SubGeometry(); + sg.updateVertexData(vs); + sg.updateIndexData(inds); + this.mesh.geometry.addSubGeometry(sg); + } + private function onCancel(fault:Object):void{ + } + + } +}//package wd.d3.geom.river diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/Debris.as b/flash_decompiled/watchdog/wd/d3/geom/segments/Debris.as new file mode 100644 index 0000000..8efb90b --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/Debris.as @@ -0,0 +1,38 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import wd.core.*; + import flash.geom.*; + import away3d.containers.*; + + public class Debris extends ObjectContainer3D { + + public static var instance:Debris; + + private var sets:Vector.; + private var current:WireSegmentSetV2; + private var topcolor:int; + private var thickness:Number; + private var bottomColor:int; + + public function Debris(bottomColor:int=0, topcolor:int=0x707070, thickness:Number=1){ + super(); + this.bottomColor = bottomColor; + this.thickness = thickness; + this.topcolor = topcolor; + instance = this; + this.sets = new Vector.(); + this.current = new WireSegmentSetV2(bottomColor, thickness); + this.sets.push(this.current); + addChild(this.current); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + if ((((this.current.vertexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 28))) || ((this.current.indexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 6))))){ + this.current = new WireSegmentSetV2(this.bottomColor, this.thickness); + this.sets.push(this.current); + addChild(this.current); + }; + this.current.addSegment(s, e); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/Roofs.as b/flash_decompiled/watchdog/wd/d3/geom/segments/Roofs.as new file mode 100644 index 0000000..32418d5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/Roofs.as @@ -0,0 +1,38 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import wd.core.*; + import flash.geom.*; + import away3d.containers.*; + + public class Roofs extends ObjectContainer3D { + + public static var instance:Roofs; + + private var sets:Vector.; + private var current:WireSegmentSetV2; + private var topcolor:int; + private var thickness:Number; + private var bottomColor:int; + + public function Roofs(bottomColor:int=0, topcolor:int=0x707070, thickness:Number=1){ + super(); + this.bottomColor = bottomColor; + this.thickness = thickness; + this.topcolor = topcolor; + instance = this; + this.sets = new Vector.(); + this.current = new WireSegmentSetV2(bottomColor, thickness); + this.sets.push(this.current); + addChild(this.current); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + if ((((this.current.vertexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 28))) || ((this.current.indexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 6))))){ + this.current = new WireSegmentSetV2(this.bottomColor, this.thickness); + this.sets.push(this.current); + addChild(this.current); + }; + this.current.addSegment(s, e); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableMesh.as b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableMesh.as new file mode 100644 index 0000000..61dd9aa --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableMesh.as @@ -0,0 +1,145 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.core.base.*; + import wd.d3.*; + import wd.utils.*; + import wd.core.*; + import away3d.entities.*; + + public class SegmentColorGridSortableMesh extends Mesh { + + private const LIMIT:uint = 196605; + + public var VERTEX_BUFFER_LENGTH:int = 11; + protected var ceilSize:int; + protected var w:uint; + protected var h:uint; + protected var offX:Number = 0; + protected var offY:Number = 0; + protected var gridLength:uint; + protected var m:Number; + private var pos:uint; + private var adjX:uint; + protected var grid:Vector.>; + private var geom:Vector.; + private var geomAdd:Vector.; + private var current:SegmentColorGridSortableSubGeometry; + private var currentAdd:SegmentColorGridSortableSubGeometry; + + public function SegmentColorGridSortableMesh(thickness:Number=1){ + super(new Geometry(), new WireSegmentMaterial(thickness, true)); + } + public function init(ceilSize:int, _b:Rectangle):void{ + this.ceilSize = ceilSize; + this.w = (Math.ceil((_b.width / ceilSize)) + 1); + this.h = (Math.ceil((_b.height / ceilSize)) + 1); + this.gridLength = (this.w * this.h); + this.offX = -(_b.x); + this.offY = -(_b.y); + this.m = (1 / ceilSize); + this.grid = new Vector.>(this.gridLength, true); + var i:uint; + while (i < this.gridLength) { + this.geom = new Vector.(); + this.current = new SegmentColorGridSortableSubGeometry(); + this.geom.push(this.current); + this.grid[i] = this.geom; + i++; + }; + } + override public function dispose():void{ + var l2:int; + var segSubGeom:SegmentColorGridSortableSubGeometry; + this.clearCurrentGeom(); + var l:int = this.gridLength; + while (l--) { + this.geom = this.grid[l]; + l2 = this.geom.length; + while (l2--) { + segSubGeom = this.geom[l2]; + segSubGeom.dispose(); + segSubGeom = null; + this.geom.splice(l2, 1); + }; + this.grid.splice(l, 1); + }; + this.grid = null; + } + public function sortSegment(scene:Simulation, radius:uint):void{ + var numSubGeoms:uint; + var subGeom:SubGeometry; + var y:uint; + this.clearCurrentGeom(); + var itemX:uint = (((scene.cameraTargetPos.x + this.offX) / this.ceilSize) | 0); + var itemY:uint = (((scene.cameraTargetPos.z + this.offY) / this.ceilSize) | 0); + var minX:int = (itemX - radius); + if (minX < 0){ + minX = 0; + }; + var minY:int = (itemY - radius); + if (minY < 0){ + minY = 0; + }; + var maxX:uint = (itemX + radius); + if (maxX > this.w){ + maxX = this.w; + }; + var maxY:uint = (itemY + radius); + if (maxY > this.h){ + maxY = this.h; + }; + var x:uint = minX; + while (x <= maxX) { + this.adjX = (x * this.h); + y = minY; + while (y <= maxY) { + if ((this.adjX + y) < this.gridLength){ + this.geom = this.grid[(this.adjX + y)]; + numSubGeoms = this.geom.length; + while (numSubGeoms--) { + if (this.geom[numSubGeoms]._vertices.length > 40){ + subGeom = new SubGeometry(); + subGeom.initCustomBuffer((this.geom[numSubGeoms]._vertices.length / this.VERTEX_BUFFER_LENGTH), this.VERTEX_BUFFER_LENGTH); + subGeom.updateCustomData(this.geom[numSubGeoms]._vertices); + subGeom.updateIndexData(this.geom[numSubGeoms]._indices); + geometry.addSubGeometry(subGeom); + }; + }; + }; + y++; + }; + x++; + }; + } + private function clearCurrentGeom():void{ + var subGeom:SubGeometry; + var numSubGeoms:uint = geometry.subGeometries.length; + while (numSubGeoms--) { + subGeom = geometry.subGeometries[numSubGeoms]; + geometry.removeSubGeometry(subGeom); + subGeom.dispose(); + subGeom = null; + }; + } + public function addSegment(s:Vector3D, e:Vector3D, color:int, thickness:Number):void{ + Stats.totalPolygoneCount = (Stats.totalPolygoneCount + 2); + var itemX:uint = (((s.x + this.offX) / this.ceilSize) | 0); + var itemY:uint = (((s.z + this.offY) / this.ceilSize) | 0); + this.pos = ((itemX * this.h) + itemY); + if (this.pos < this.gridLength){ + this.geomAdd = this.grid[this.pos]; + this.currentAdd = this.geomAdd[(this.geomAdd.length - 1)]; + } else { + return; + }; + if ((((((this.currentAdd._vertices.length / this.VERTEX_BUFFER_LENGTH) + this.VERTEX_BUFFER_LENGTH) > Constants.MAX_SUBGGEOM_BUFFER_SIZE)) || ((((this.currentAdd._indices.length / 3) + 2) > Constants.MAX_SUBGGEOM_BUFFER_SIZE)))){ + trace("new segment color buffer"); + this.currentAdd = new SegmentColorGridSortableSubGeometry(); + this.geomAdd.push(this.currentAdd); + }; + this.currentAdd.mergeSegment(s, e, color, thickness); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableSubGeometry.as b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableSubGeometry.as new file mode 100644 index 0000000..8c2a01d --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentColorGridSortableSubGeometry.as @@ -0,0 +1,233 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + + public class SegmentColorGridSortableSubGeometry { + + private static var _id:int = 0; + + public var VERTEX_BUFFER_LENGTH:int = 11; + private var v_offset:uint; + private var _numVertices:uint; + private var _numTriangles:uint; + private var _numIndices:uint; + public var _vertices:Vector.; + public var _indices:Vector.; + public var _uvs:Vector.; + private var _lineCount:uint = 0; + private var _thickness:Number; + public var id:int; + + public function SegmentColorGridSortableSubGeometry(thickness:Number=1){ + this._vertices = new Vector.(); + this._indices = new Vector.(); + this._uvs = new Vector.(); + super(); + this._thickness = thickness; + this.id = _id++; + } + public function get numVertices():uint{ + return (this._numVertices); + } + public function get numTriangles():uint{ + return (this._numTriangles); + } + public function mergeSegment(s:Vector3D, e:Vector3D, color:int, thickness:Number):void{ + var sr:Number = (((color >> 16) & 0xFF) / 0xFF); + var sg:Number = (((color >> 8) & 0xFF) / 0xFF); + var sb:Number = ((color & 0xFF) / 0xFF); + var index:uint = this._vertices.length; + var _temp1 = index; + index = (index + 1); + var _local9 = _temp1; + this._vertices[_local9] = s.x; + var _temp2 = index; + index = (index + 1); + var _local10 = _temp2; + this._vertices[_local10] = s.y; + var _temp3 = index; + index = (index + 1); + var _local11 = _temp3; + this._vertices[_local11] = s.z; + var _temp4 = index; + index = (index + 1); + var _local12 = _temp4; + this._vertices[_local12] = e.x; + var _temp5 = index; + index = (index + 1); + var _local13 = _temp5; + this._vertices[_local13] = e.y; + var _temp6 = index; + index = (index + 1); + var _local14 = _temp6; + this._vertices[_local14] = e.z; + var _temp7 = index; + index = (index + 1); + var _local15 = _temp7; + this._vertices[_local15] = thickness; + var _temp8 = index; + index = (index + 1); + var _local16 = _temp8; + this._vertices[_local16] = sr; + var _temp9 = index; + index = (index + 1); + var _local17 = _temp9; + this._vertices[_local17] = sg; + var _temp10 = index; + index = (index + 1); + var _local18 = _temp10; + this._vertices[_local18] = sb; + var _temp11 = index; + index = (index + 1); + var _local19 = _temp11; + this._vertices[_local19] = 1; + var _temp12 = index; + index = (index + 1); + var _local20 = _temp12; + this._vertices[_local20] = e.x; + var _temp13 = index; + index = (index + 1); + var _local21 = _temp13; + this._vertices[_local21] = e.y; + var _temp14 = index; + index = (index + 1); + var _local22 = _temp14; + this._vertices[_local22] = e.z; + var _temp15 = index; + index = (index + 1); + var _local23 = _temp15; + this._vertices[_local23] = s.x; + var _temp16 = index; + index = (index + 1); + var _local24 = _temp16; + this._vertices[_local24] = s.y; + var _temp17 = index; + index = (index + 1); + var _local25 = _temp17; + this._vertices[_local25] = s.z; + var _temp18 = index; + index = (index + 1); + var _local26 = _temp18; + this._vertices[_local26] = -(thickness); + var _temp19 = index; + index = (index + 1); + var _local27 = _temp19; + this._vertices[_local27] = sr; + var _temp20 = index; + index = (index + 1); + var _local28 = _temp20; + this._vertices[_local28] = sg; + var _temp21 = index; + index = (index + 1); + var _local29 = _temp21; + this._vertices[_local29] = sb; + var _temp22 = index; + index = (index + 1); + var _local30 = _temp22; + this._vertices[_local30] = 1; + var _temp23 = index; + index = (index + 1); + var _local31 = _temp23; + this._vertices[_local31] = s.x; + var _temp24 = index; + index = (index + 1); + var _local32 = _temp24; + this._vertices[_local32] = s.y; + var _temp25 = index; + index = (index + 1); + var _local33 = _temp25; + this._vertices[_local33] = s.z; + var _temp26 = index; + index = (index + 1); + var _local34 = _temp26; + this._vertices[_local34] = e.x; + var _temp27 = index; + index = (index + 1); + var _local35 = _temp27; + this._vertices[_local35] = e.y; + var _temp28 = index; + index = (index + 1); + var _local36 = _temp28; + this._vertices[_local36] = e.z; + var _temp29 = index; + index = (index + 1); + var _local37 = _temp29; + this._vertices[_local37] = -(thickness); + var _temp30 = index; + index = (index + 1); + var _local38 = _temp30; + this._vertices[_local38] = sr; + var _temp31 = index; + index = (index + 1); + var _local39 = _temp31; + this._vertices[_local39] = sg; + var _temp32 = index; + index = (index + 1); + var _local40 = _temp32; + this._vertices[_local40] = sb; + var _temp33 = index; + index = (index + 1); + var _local41 = _temp33; + this._vertices[_local41] = 1; + var _temp34 = index; + index = (index + 1); + var _local42 = _temp34; + this._vertices[_local42] = e.x; + var _temp35 = index; + index = (index + 1); + var _local43 = _temp35; + this._vertices[_local43] = e.y; + var _temp36 = index; + index = (index + 1); + var _local44 = _temp36; + this._vertices[_local44] = e.z; + var _temp37 = index; + index = (index + 1); + var _local45 = _temp37; + this._vertices[_local45] = s.x; + var _temp38 = index; + index = (index + 1); + var _local46 = _temp38; + this._vertices[_local46] = s.y; + var _temp39 = index; + index = (index + 1); + var _local47 = _temp39; + this._vertices[_local47] = s.z; + var _temp40 = index; + index = (index + 1); + var _local48 = _temp40; + this._vertices[_local48] = thickness; + var _temp41 = index; + index = (index + 1); + var _local49 = _temp41; + this._vertices[_local49] = sr; + var _temp42 = index; + index = (index + 1); + var _local50 = _temp42; + this._vertices[_local50] = sg; + var _temp43 = index; + index = (index + 1); + var _local51 = _temp43; + this._vertices[_local51] = sb; + var _temp44 = index; + index = (index + 1); + var _local52 = _temp44; + this._vertices[_local52] = 1; + index = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._numTriangles = (this._indices.length / 3); + this._lineCount++; + } + public function dispose():void{ + this._vertices.length = 0; + this._vertices = null; + this._indices.length = 0; + this._indices = null; + this._uvs.length = 0; + this._uvs = null; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridCase.as b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridCase.as new file mode 100644 index 0000000..e94ebfe --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridCase.as @@ -0,0 +1,30 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + + public class SegmentGridCase { + + public var geometry:Vector.; + public var y:int; + public var x:int; + + public function SegmentGridCase(_x:int, _y:int){ + super(); + this.x = _x; + this.y = _y; + this.geometry = new Vector.(); + } + public function push(sub:SegmentGridSortableSubGeometry):void{ + this.geometry.push(sub); + } + public function get isUsed():Boolean{ + return ((this.geometry[0]._indices.length > 0)); + } + public function dispose():void{ + this.geometry[0].purge(); + this.geometry[0] = null; + this.geometry.length = 0; + this.geometry = null; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableMesh.as b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableMesh.as new file mode 100644 index 0000000..c223fa4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableMesh.as @@ -0,0 +1,145 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + import away3d.core.base.*; + import wd.utils.*; + import wd.core.*; + import wd.d3.geom.building.*; + import flash.display.*; + import away3d.entities.*; + + public class SegmentGridSortableMesh extends Mesh { + + private const LIMIT:uint = 196605; + + public var VERTEX_BUFFER_LENGTH:int = 7; + protected var ceilSize:int; + protected var w:uint; + protected var h:uint; + protected var offX:Number = 0; + protected var offY:Number = 0; + protected var gridLength:uint; + protected var m:Number; + private var pos:uint; + private var adjX:uint; + protected var grid:Vector.; + private var gridCase:SegmentGridCase; + private var gridCaseAdd:SegmentGridCase; + private var current:SegmentGridSortableSubGeometry; + private var currentAdd:SegmentGridSortableSubGeometry; + public var radius:uint; + public var gridMinX:uint; + public var gridMaxX:uint; + public var gridMinY:uint; + public var gridMaxY:uint; + public var debugGrid:BitmapData; + public var debug:Boolean = true; + private var purgeCount:int = 0; + private var purgeTime:int = 150; + private var numSubGeoms:uint; + private var subGeom:SubGeometry; + + public function SegmentGridSortableMesh(startColor:int=-1, thickness:Number=1, sint:Boolean=false){ + super(new Geometry(), new WireSegmentMaterialBuilding(startColor, thickness, sint)); + } + override public function dispose():void{ + this.clearSegment(); + var l:int = this.gridLength; + while (l--) { + this.gridCase = this.grid[l]; + this.grid.splice(l, 1); + this.gridCase.dispose(); + }; + this.grid = null; + } + public function purge(i:int):void{ + var sub:SegmentGridSortableSubGeometry; + this.gridCase = this.grid[i]; + var numSubGeoms:int = this.gridCase.geometry.length; + while (numSubGeoms--) { + sub = this.gridCase.geometry[numSubGeoms]; + this.gridCase.geometry.splice(numSubGeoms, 1); + sub.purge(); + sub = null; + }; + this.current = new SegmentGridSortableSubGeometry(); + this.gridCase.push(this.current); + } + public function init(ceilSize:int, _b:Rectangle):void{ + this.ceilSize = ceilSize; + this.w = (Math.ceil((_b.width / ceilSize)) + 1); + this.h = (Math.ceil((_b.height / ceilSize)) + 1); + this.gridLength = (this.w * this.h); + this.offX = -(_b.x); + this.offY = -(_b.y); + this.m = (1 / ceilSize); + this.grid = new Vector.(this.gridLength, true); + var i:uint; + while (i < this.gridLength) { + this.gridCase = new SegmentGridCase((i % this.h), int((i / this.h))); + this.current = new SegmentGridSortableSubGeometry(); + this.gridCase.push(this.current); + this.grid[i] = this.gridCase; + i++; + }; + } + public function clearSegment():void{ + var c:uint; + this.numSubGeoms = geometry.subGeometries.length; + while (this.numSubGeoms--) { + this.subGeom = geometry.subGeometries[this.numSubGeoms]; + geometry.removeSubGeometry(this.subGeom); + this.subGeom.dispose(); + this.subGeom = null; + }; + } + public function sortCaseSegment(c:uint):void{ + this.gridCase = this.grid[c]; + this.numSubGeoms = this.gridCase.geometry.length; + while (this.numSubGeoms--) { + if (this.gridCase.geometry[this.numSubGeoms]._vertices.length > 0){ + this.subGeom = new SubGeometry(); + this.subGeom.initCustomBuffer((this.gridCase.geometry[this.numSubGeoms]._vertices.length / this.VERTEX_BUFFER_LENGTH), this.VERTEX_BUFFER_LENGTH); + this.subGeom.updateCustomData(this.gridCase.geometry[this.numSubGeoms]._vertices); + this.subGeom.updateIndexData(this.gridCase.geometry[this.numSubGeoms]._indices); + geometry.addSubGeometry(this.subGeom); + }; + }; + } + private function updateDebugGrid():void{ + var gridCase:SegmentGridCase; + this.debugGrid.lock(); + this.debugGrid.fillRect(this.debugGrid.rect, 872415231); + var i:uint; + while (i < this.gridLength) { + gridCase = this.grid[i]; + if (gridCase.geometry[0]._indices.length > 4){ + this.debugGrid.fillRect(new Rectangle((gridCase.x * 5), (gridCase.y * 5), 4, 4), 0xFFFFFFFF); + } else { + this.debugGrid.fillRect(new Rectangle((gridCase.x * 5), (gridCase.y * 5), 4, 4), 1442840575); + }; + i++; + }; + this.debugGrid.unlock(); + } + public function addSegment(b:Building3, s:Vector3D, e:Vector3D):void{ + Stats.totalPolygoneCount = (Stats.totalPolygoneCount + 2); + var itemX:uint = (((b.x + this.offX) / this.ceilSize) | 0); + var itemY:uint = (((b.z + this.offY) / this.ceilSize) | 0); + this.pos = ((itemX * this.h) + itemY); + if (this.pos <= this.gridLength){ + this.gridCaseAdd = this.grid[this.pos]; + this.currentAdd = this.gridCaseAdd.geometry[(this.gridCaseAdd.geometry.length - 1)]; + } else { + return; + }; + if ((((((this.currentAdd._vertices.length / this.VERTEX_BUFFER_LENGTH) + this.VERTEX_BUFFER_LENGTH) > Constants.MAX_SUBGGEOM_BUFFER_SIZE)) || ((((this.currentAdd._indices.length / 3) + 2) > Constants.MAX_SUBGGEOM_BUFFER_SIZE)))){ + trace("new segment buffer"); + this.currentAdd = new SegmentGridSortableSubGeometry(); + this.gridCaseAdd.push(this.currentAdd); + }; + this.currentAdd.mergeSegment(s, e); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableSubGeometry.as b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableSubGeometry.as new file mode 100644 index 0000000..319059c --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/SegmentGridSortableSubGeometry.as @@ -0,0 +1,166 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + + public class SegmentGridSortableSubGeometry { + + private static var _id:int = 0; + + public var VERTEX_BUFFER_LENGTH:int = 7; + private var v_offset:uint; + private var _numVertices:uint; + private var _numTriangles:uint; + private var _numIndices:uint; + public var _vertices:Vector.; + public var _indices:Vector.; + public var _uvs:Vector.; + private var _lineCount:uint = 0; + private var _thickness:Number; + public var id:int; + + public function SegmentGridSortableSubGeometry(thickness:Number=1){ + this._vertices = new Vector.(); + this._indices = new Vector.(); + this._uvs = new Vector.(); + super(); + this._thickness = thickness; + this.id = _id++; + } + public function purge():void{ + this._vertices.length = 0; + this._indices.length = 0; + this._uvs.length = 0; + this._vertices = null; + this._indices = null; + this._uvs = null; + } + public function get numVertices():uint{ + return (this._numVertices); + } + public function get numTriangles():uint{ + return (this._numTriangles); + } + public function mergeSegment(s:Vector3D, e:Vector3D):void{ + var index:uint = this._vertices.length; + var _temp1 = index; + index = (index + 1); + var _local4 = _temp1; + this._vertices[_local4] = s.x; + var _temp2 = index; + index = (index + 1); + var _local5 = _temp2; + this._vertices[_local5] = s.y; + var _temp3 = index; + index = (index + 1); + var _local6 = _temp3; + this._vertices[_local6] = s.z; + var _temp4 = index; + index = (index + 1); + var _local7 = _temp4; + this._vertices[_local7] = e.x; + var _temp5 = index; + index = (index + 1); + var _local8 = _temp5; + this._vertices[_local8] = e.y; + var _temp6 = index; + index = (index + 1); + var _local9 = _temp6; + this._vertices[_local9] = e.z; + var _temp7 = index; + index = (index + 1); + var _local10 = _temp7; + this._vertices[_local10] = this._thickness; + var _temp8 = index; + index = (index + 1); + var _local11 = _temp8; + this._vertices[_local11] = e.x; + var _temp9 = index; + index = (index + 1); + var _local12 = _temp9; + this._vertices[_local12] = e.y; + var _temp10 = index; + index = (index + 1); + var _local13 = _temp10; + this._vertices[_local13] = e.z; + var _temp11 = index; + index = (index + 1); + var _local14 = _temp11; + this._vertices[_local14] = s.x; + var _temp12 = index; + index = (index + 1); + var _local15 = _temp12; + this._vertices[_local15] = s.y; + var _temp13 = index; + index = (index + 1); + var _local16 = _temp13; + this._vertices[_local16] = s.z; + var _temp14 = index; + index = (index + 1); + var _local17 = _temp14; + this._vertices[_local17] = -(this._thickness); + var _temp15 = index; + index = (index + 1); + var _local18 = _temp15; + this._vertices[_local18] = s.x; + var _temp16 = index; + index = (index + 1); + var _local19 = _temp16; + this._vertices[_local19] = s.y; + var _temp17 = index; + index = (index + 1); + var _local20 = _temp17; + this._vertices[_local20] = s.z; + var _temp18 = index; + index = (index + 1); + var _local21 = _temp18; + this._vertices[_local21] = e.x; + var _temp19 = index; + index = (index + 1); + var _local22 = _temp19; + this._vertices[_local22] = e.y; + var _temp20 = index; + index = (index + 1); + var _local23 = _temp20; + this._vertices[_local23] = e.z; + var _temp21 = index; + index = (index + 1); + var _local24 = _temp21; + this._vertices[_local24] = -(this._thickness); + var _temp22 = index; + index = (index + 1); + var _local25 = _temp22; + this._vertices[_local25] = e.x; + var _temp23 = index; + index = (index + 1); + var _local26 = _temp23; + this._vertices[_local26] = e.y; + var _temp24 = index; + index = (index + 1); + var _local27 = _temp24; + this._vertices[_local27] = e.z; + var _temp25 = index; + index = (index + 1); + var _local28 = _temp25; + this._vertices[_local28] = s.x; + var _temp26 = index; + index = (index + 1); + var _local29 = _temp26; + this._vertices[_local29] = s.y; + var _temp27 = index; + index = (index + 1); + var _local30 = _temp27; + this._vertices[_local30] = s.z; + var _temp28 = index; + index = (index + 1); + var _local31 = _temp28; + this._vertices[_local31] = this._thickness; + index = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._numTriangles = (this._indices.length / 3); + this._lineCount++; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/Wire.as b/flash_decompiled/watchdog/wd/d3/geom/segments/Wire.as new file mode 100644 index 0000000..dc3c5a4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/Wire.as @@ -0,0 +1,36 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import wd.core.*; + import flash.geom.*; + import away3d.containers.*; + + public class Wire extends ObjectContainer3D { + + public static var instance:Wire; + + private var sets:Vector.; + private var current:WireSegmentSetV2; + private var topcolor:int; + private var bottomColor:int; + + public function Wire(bottomColor:int=0, topcolor:int=0x707070){ + super(); + this.bottomColor = bottomColor; + this.topcolor = topcolor; + instance = this; + this.sets = new Vector.(); + this.current = new WireSegmentSetV2(bottomColor, 0.5); + this.sets.push(this.current); + addChild(this.current); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + if ((((this.current.vertexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 44))) || ((this.current.indexData.length > (Constants.MAX_SUBGGEOM_BUFFER_SIZE - 6))))){ + this.current = new WireSegmentSetV2(this.bottomColor, 0.5); + this.sets.push(this.current); + addChild(this.current); + }; + this.current.addSegment(s, e); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegment.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegment.as new file mode 100644 index 0000000..c3c2c43 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegment.as @@ -0,0 +1,101 @@ +package wd.d3.geom.segments { + import flash.geom.*; + + public class WireSegment { + + var _segmentsBase:WireSegmentSet; + var _thickness:Number; + private var _index:uint; + var _start:Vector3D; + var _end:Vector3D; + private var _startColor:uint; + private var _endColor:uint; + var _startR:Number; + var _startG:Number; + var _startB:Number; + var _endR:Number; + var _endG:Number; + var _endB:Number; + + public function WireSegment(start:Vector3D, end:Vector3D, colorStart:uint=0x333333, colorEnd:uint=0x333333, thickness:Number=1):void{ + super(); + this._thickness = thickness; + this._start = start; + this._end = end; + this.startColor = colorStart; + this.endColor = colorEnd; + } + public function autoUpdate(thickness:Number=1):void{ + this.updateSegment(this.start, this.end, null, this._startColor, this.endColor, thickness); + } + public function updateSegment(start:Vector3D, end:Vector3D, anchor:Vector3D, colorStart:uint=0x333333, colorEnd:uint=0x333333, thickness:Number=1):void{ + anchor = null; + this._start = start; + this._end = end; + if (this._startColor != colorStart){ + this.startColor = colorStart; + }; + if (this._endColor != colorEnd){ + this.endColor = colorEnd; + }; + this._thickness = thickness; + this.update(); + } + public function get start():Vector3D{ + return (this._start); + } + public function set start(value:Vector3D):void{ + this._start = value; + this.update(); + } + public function get end():Vector3D{ + return (this._end); + } + public function set end(value:Vector3D):void{ + this._end = value; + this.update(); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = (value * 0.5); + this.update(); + } + public function get startColor():uint{ + return (this._startColor); + } + public function set startColor(color:uint):void{ + this._startR = (((color >> 16) & 0xFF) / 0xFF); + this._startG = (((color >> 8) & 0xFF) / 0xFF); + this._startB = ((color & 0xFF) / 0xFF); + this._startColor = color; + this.update(); + } + public function get endColor():uint{ + return (this._endColor); + } + public function set endColor(color:uint):void{ + this._endR = (((color >> 16) & 0xFF) / 0xFF); + this._endG = (((color >> 8) & 0xFF) / 0xFF); + this._endB = ((color & 0xFF) / 0xFF); + this._endColor = color; + this.update(); + } + function get index():uint{ + return (this._index); + } + function set index(ind:uint):void{ + this._index = ind; + } + function set segmentsBase(segBase:WireSegmentSet):void{ + this._segmentsBase = segBase; + } + private function update():void{ + if (!(this._segmentsBase)){ + return; + }; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterial.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterial.as new file mode 100644 index 0000000..2f0f47c --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterial.as @@ -0,0 +1,15 @@ +package wd.d3.geom.segments { + import away3d.materials.*; + + public class WireSegmentMaterial extends MaterialBase { + + private var _screenPass:WireSegmentPass; + + public function WireSegmentMaterial(thickness:Number=1.25, useCustomData:Boolean=false):void{ + super(); + bothSides = false; + addPass((this._screenPass = new WireSegmentPass(thickness, useCustomData, true))); + this._screenPass.material = this; + } + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialBuilding.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialBuilding.as new file mode 100644 index 0000000..f91166e --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialBuilding.as @@ -0,0 +1,15 @@ +package wd.d3.geom.segments { + import away3d.materials.*; + + public class WireSegmentMaterialBuilding extends MaterialBase { + + private var _screenPass:WireSegmentPassbuilding2; + + public function WireSegmentMaterialBuilding(color:int, thickness:Number=1.25, sint:Boolean=false):void{ + super(); + bothSides = false; + addPass((this._screenPass = new WireSegmentPassbuilding2(color, thickness, sint))); + this._screenPass.material = this; + } + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialV2.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialV2.as new file mode 100644 index 0000000..7ec1e67 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentMaterialV2.as @@ -0,0 +1,15 @@ +package wd.d3.geom.segments { + import away3d.materials.*; + + public class WireSegmentMaterialV2 extends MaterialBase { + + private var _screenPass:WireSegmentPassV2; + + public function WireSegmentMaterialV2(color:int, thickness:Number=1.25):void{ + super(); + bothSides = false; + addPass((this._screenPass = new WireSegmentPassV2(color, thickness))); + this._screenPass.material = this; + } + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPass.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPass.as new file mode 100644 index 0000000..3b08f12 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPass.as @@ -0,0 +1,104 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import wd.d3.*; + import wd.d3.control.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import away3d.materials.passes.*; + + public class WireSegmentPass extends MaterialPassBase { + + protected static const ONE_VECTOR:Vector. = Vector.([1, 1, 1, 1]); + protected static const FRONT_VECTOR:Vector. = Vector.([0, 0, -1, 0]); + + private static var VARIABLES:Vector. = Vector.([1, 2]); + private static var angle:Number = 0; + + private var _constants:Vector.; + private var _calcMatrix:Matrix3D; + private var _thickness:Number; + private var useCustomData:Boolean; + private var mVarsV:Vector.; + private var mVarsV2:Vector.; + private var useFog:Boolean; + + public function WireSegmentPass(thickness:Number, useCustomData:Boolean=false, useFog:Boolean=false){ + this._constants = new Vector.(4, true); + this.mVarsV = new [30, 30, 30, 30]; + this.mVarsV2 = new [1, 30, 30, 30]; + this.useFog = useFog; + this.useCustomData = useCustomData; + this._calcMatrix = new Matrix3D(); + this._thickness = thickness; + this._constants[1] = (1 / 0xFF); + this.radius = 400; + this.falloff = 200; + super(); + } + public function set radius(v:Number):void{ + this.mVarsV[2] = v; + } + public function set falloff(v:Number):void{ + this.mVarsV[3] = v; + } + override function getVertexCode(code:String):String{ + code = ((((((((((((((((((((((((((("m44 vt0, va0, vc8\t\t\t\t\n" + "m44 vt1, va1, vc8\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "slt vt5.x, vt0.z, vc7.z\t\t\n") + "sub vt5.y, vc5.x, vt5.x\t\t\n") + "add vt4.x, vt0.z, vc7.z\t\t\n") + "sub vt4.y, vt0.z, vt1.z\t\t\n") + "div vt4.z, vt4.x, vt4.y\t\t\n") + "mul vt4.xyz, vt4.zzz, vt2.xyz\t\n") + "add vt3.xyz, vt0.xyz, vt4.xyz\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "mul vt0, vt0, vt5.yyyy\t\t\t\n") + "mul vt3, vt3, vt5.xxxx\t\t\t\n") + "add vt0, vt0, vt3\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "nrm vt2.xyz, vt2.xyz\t\t\t\n") + "nrm vt5.xyz, vt0.xyz\t\t\t\n") + "mov vt5.w, vc5.x\t\t\t\t\n") + "crs vt3.xyz, vt2, vt5\t\t\t\n") + "nrm vt3.xyz, vt3.xyz\t\t\t\n") + "mul vt3.xyz, vt3.xyz, va2.xxx\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "dp3 vt4.x, vt0, vc6\t\t\t\n") + "mul vt4.x, vt4.x, vc7.x\t\t\n") + "mul vt3.xyz, vt3.xyz, vt4.xxx\t\n") + "add vt0.xyz, vt0.xyz, vt3.xyz\t\n") + "m44 vt0, vt0, vc0\t\t\t\t\n") + "mul op, vt0, vc4\t\t\t\t\n"); + if (this.useFog){ + code = (code + ("mov v0, va0\t\t\t\t\t\n" + "mov v1, va3\t\t\t\t\t\n")); + } else { + code = (code + "mov v0, va3\t\t\t\t\t\n"); + }; + return (code); + } + override function getFragmentCode():String{ + var code:String; + if (this.useFog){ + code = ((((((((((("sub ft0.x, v0.x, \tfc1.x \n" + "mul ft0.x, ft0.x, ft0.x \n") + "sub ft0.y, v0.z, \tfc1.y \n") + "mul ft0.y, ft0.y, ft0.y \n") + "add ft0.z, ft0.x, ft0.y \n") + "sqt ft0.z, ft0.z \n") + "sub ft0.x, ft0.z,\tfc1.z \n") + "div ft0.w, ft0.x,\tfc1.w \n") + "sub ft0.w, fc2.x,ft0.w \n") + "mov ft1,v1 \n") + "mov ft1.w , ft0.w \n") + "mov oc, ft1 \n"); + return (code); + }; + return ("mov oc, v0\n"); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + this._constants[0] = (this._thickness / Math.min(stage3DProxy.width, stage3DProxy.height)); + this._constants[2] = camera.lens.near; + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, ONE_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, FRONT_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this._constants); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, camera.lens.matrix, true); + context.setCulling(Context3DTriangleFace.BACK); + context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + var vertexBuffer:VertexBuffer3D = ((this.useCustomData) ? renderable.getCustomBuffer(stage3DProxy) : renderable.getVertexBuffer(stage3DProxy)); + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(2, vertexBuffer, 6, Context3DVertexBufferFormat.FLOAT_1); + context.setVertexBufferAt(3, vertexBuffer, 7, Context3DVertexBufferFormat.FLOAT_4); + this._calcMatrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._calcMatrix.append(camera.inverseSceneTransform); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 8, this._calcMatrix, true); + if (this.useFog){ + this.mVarsV[0] = Simulation.instance.cameraTargetPos.x; + this.mVarsV[1] = Simulation.instance.cameraTargetPos.z; + this.falloff = (400 + (CameraController.CAM_HEIGHT * 1500)); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 1, this.mVarsV); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 2, this.mVarsV2); + }; + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(2, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(3, null, null, 0); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassV2.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassV2.as new file mode 100644 index 0000000..cae4db4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassV2.as @@ -0,0 +1,75 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import away3d.materials.passes.*; + + public class WireSegmentPassV2 extends MaterialPassBase { + + protected static const ONE_VECTOR:Vector. = Vector.([1, 1, 1, 1]); + protected static const FRONT_VECTOR:Vector. = Vector.([0, 0, -1, 0]); + + private static var VARIABLES:Vector. = Vector.([1, 2]); + private static var angle:Number = 0; + + private var _constants:Vector.; + private var _color:Vector.; + private var _calcMatrix:Matrix3D; + private var _thickness:Number; + + public function WireSegmentPassV2(color:int, thickness:Number){ + this._constants = new Vector.(4, true); + this._color = new Vector.(4, true); + this._calcMatrix = new Matrix3D(); + this._thickness = thickness; + this._color[0] = (((color >> 16) & 0xFF) / 0xFF); + this._color[1] = (((color >> 8) & 0xFF) / 0xFF); + this._color[2] = ((color & 0xFF) / 0xFF); + this._color[3] = 1; + this._constants[1] = (1 / 0xFF); + super(); + } + override function getVertexCode(code:String):String{ + code = ((((((((((((((((((((((((((("m44 vt0, va0, vc8\t\t\t\t\n" + "m44 vt1, va1, vc8\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "slt vt5.x, vt0.z, vc7.z\t\t\n") + "sub vt5.y, vc5.x, vt5.x\t\t\n") + "add vt4.x, vt0.z, vc7.z\t\t\n") + "sub vt4.y, vt0.z, vt1.z\t\t\n") + "div vt4.z, vt4.x, vt4.y\t\t\n") + "mul vt4.xyz, vt4.zzz, vt2.xyz\t\n") + "add vt3.xyz, vt0.xyz, vt4.xyz\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "mul vt0, vt0, vt5.yyyy\t\t\t\n") + "mul vt3, vt3, vt5.xxxx\t\t\t\n") + "add vt0, vt0, vt3\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "nrm vt2.xyz, vt2.xyz\t\t\t\n") + "nrm vt5.xyz, vt0.xyz\t\t\t\n") + "mov vt5.w, vc5.x\t\t\t\t\n") + "crs vt3.xyz, vt2, vt5\t\t\t\n") + "nrm vt3.xyz, vt3.xyz\t\t\t\n") + "mul vt3.xyz, vt3.xyz, va2.xxx\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "dp3 vt4.x, vt0, vc6\t\t\t\n") + "mul vt4.x, vt4.x, vc7.x\t\t\n") + "mul vt3.xyz, vt3.xyz, vt4.xxx\t\n") + "add vt0.xyz, vt0.xyz, vt3.xyz\t\n") + "m44 vt0, vt0, vc0\t\t\t\t\n") + "mul op, vt0, vc4\t\t\t\t\n"); + return (code); + } + override function getFragmentCode():String{ + return ("mov oc, fc0 \n"); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + context.setCulling(Context3DTriangleFace.BACK); + context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + var vertexBuffer:VertexBuffer3D = renderable.getCustomBuffer(stage3DProxy); + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(2, vertexBuffer, 6, Context3DVertexBufferFormat.FLOAT_1); + this._calcMatrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._calcMatrix.append(camera.inverseSceneTransform); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 8, this._calcMatrix, true); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._color); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + this._constants[0] = (this._thickness / Math.min(stage3DProxy.width, stage3DProxy.height)); + this._constants[2] = camera.lens.near; + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, ONE_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, FRONT_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this._constants); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, camera.lens.matrix, true); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(2, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(3, null, null, 0); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassbuilding2.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassbuilding2.as new file mode 100644 index 0000000..2d28a15 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentPassbuilding2.as @@ -0,0 +1,113 @@ +package wd.d3.geom.segments { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import wd.d3.*; + import flash.utils.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import away3d.materials.passes.*; + + public class WireSegmentPassbuilding2 extends MaterialPassBase { + + protected static const ONE_VECTOR:Vector. = Vector.([1, 1, 1, 1]); + protected static const FRONT_VECTOR:Vector. = Vector.([0, 0, -1, 0]); + + private static var VARIABLES:Vector. = Vector.([1, 2]); + private static var angle:Number = 0; + + private var _constants:Vector.; + private var _color:Vector.; + private var _calcMatrix:Matrix3D; + private var _thickness:Number; + private var mVarsV:Vector.; + private var mVarsV2:Vector.; + private var mVarsF:Vector.; + private var mVarsF2:Vector.; + private var sintille:Boolean; + + public function WireSegmentPassbuilding2(color:int, thickness:Number, sintille:Boolean=false){ + this._constants = new Vector.(4, true); + this._color = new Vector.(4, true); + this.mVarsV = new [30, 30, 30, 30]; + this.mVarsV2 = new [30, 0.5, 0, 1]; + this.mVarsF = new [100, 100, 200, 50]; + this.mVarsF2 = new [30, 0.5, 30, 1]; + this.sintille = sintille; + this._calcMatrix = new Matrix3D(); + this._thickness = thickness; + this._color[0] = (((color >> 16) & 0xFF) / 0xFF); + this._color[1] = (((color >> 8) & 0xFF) / 0xFF); + this._color[2] = ((color & 0xFF) / 0xFF); + this._color[3] = 1; + this._constants[1] = (1 / 0xFF); + this.radius = 100; + this.falloff = 100; + super(); + } + public function set radius(v:Number):void{ + this.mVarsV[2] = v; + } + public function set falloff(v:Number):void{ + this.mVarsV[3] = v; + } + override function getVertexCode(code:String):String{ + code = (((((((((((((((((((((((((((((("mov vt0, va0 \n" + "m44 vt0, vt0, vc8\t\t\t\n") + "mov vt1, va1 \n") + "m44 vt1, vt1, vc8\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "slt vt5.x, vt0.z, vc7.z\t\t\n") + "sub vt5.y, vc5.x, vt5.x\t\t\n") + "add vt4.x, vt0.z, vc7.z\t\t\n") + "sub vt4.y, vt0.z, vt1.z\t\t\n") + "div vt4.z, vt4.x, vt4.y\t\t\n") + "mul vt4.xyz, vt4.zzz, vt2.xyz\t\n") + "add vt3.xyz, vt0.xyz, vt4.xyz\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "mul vt0, vt0, vt5.yyyy\t\t\t\n") + "mul vt3, vt3, vt5.xxxx\t\t\t\n") + "add vt0, vt0, vt3\t\t\t\t\n") + "sub vt2, vt1, vt0 \t\t\t\t\n") + "nrm vt2.xyz, vt2.xyz\t\t\t\n") + "nrm vt5.xyz, vt0.xyz\t\t\t\n") + "mov vt5.w, vc5.x\t\t\t\t\n") + "crs vt3.xyz, vt2, vt5\t\t\t\n") + "nrm vt3.xyz, vt3.xyz\t\t\t\n") + "mul vt3.xyz, vt3.xyz, va2.xxx\t\n") + "mov vt3.w, vc5.x\t\t\t\t\n") + "dp3 vt4.x, vt0, vc6\t\t\t\n") + "mul vt4.x, vt4.x, vc7.x\t\t\n") + "mul vt3.xyz, vt3.xyz, vt4.xxx\t\n") + "add vt0.xyz, vt0.xyz, vt3.xyz\t\n") + "m44 vt0, vt0, vc0\t\t\t\t\n") + "mul op, vt0, vc4\t\t\t\t\n") + "mov v0, va0\t\t\t\t\t\n"); + return (code); + } + override function getFragmentCode():String{ + var code:String = (((((((((("sub ft0.x, v0.x, \tfc1.x \n" + "mul ft0.x, ft0.x, ft0.x \n") + "sub ft0.y, v0.z, \tfc1.y \n") + "mul ft0.y, ft0.y, ft0.y \n") + "add ft0.z, ft0.x, ft0.y \n") + "sqt ft0.z, ft0.z \n") + "sub ft0.x, ft0.z,\tfc1.z \n") + "div ft0.w, ft0.x,\tfc1.w \n") + "sub ft0.w, fc2.w,ft0.w \n") + "mov ft1,fc0 \n") + "mov ft1.w , ft0.w \n"); + if (this.sintille){ + code = (code + (((("add ft2.x, fc2.x, v0.x \n" + "div ft2.x, ft2.x, v0.z \n") + "cos ft2.x, ft2.x \n") + "abs ft2.x, ft2.x\t\t\n") + "mul ft1.w, ft1.w, ft2.x \n")); + }; + code = (code + "mov oc, ft1 \n"); + return (code); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + this._constants[0] = (this._thickness / Math.min(stage3DProxy.width, stage3DProxy.height)); + this._constants[2] = camera.lens.near; + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, camera.lens.matrix, true); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, ONE_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, FRONT_VECTOR); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this._constants); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this._color); + context.setCulling(Context3DTriangleFace.NONE); + if (!(this.sintille)){ + context.setDepthTest(true, Context3DCompareMode.ALWAYS); + }; + context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + var vertexBuffer:VertexBuffer3D = renderable.getCustomBuffer(stage3DProxy); + context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(2, vertexBuffer, 6, Context3DVertexBufferFormat.FLOAT_1); + this._calcMatrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._calcMatrix.append(camera.inverseSceneTransform); + this.mVarsV[0] = Simulation.instance.cameraTargetPos.x; + this.mVarsV[1] = Simulation.instance.cameraTargetPos.z; + this.radius = (Simulation.instance.cameraTargetPos.y + 300); + this.mVarsF[0] = Simulation.instance.cameraTargetPos.x; + this.mVarsF[1] = Simulation.instance.cameraTargetPos.z; + this.mVarsF[2] = this.mVarsV[2]; + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 1, this.mVarsF); + if (this.sintille){ + this.mVarsF2[0] = getTimer(); + }; + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 2, this.mVarsF2); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 8, this._calcMatrix, true); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(2, null, null, 0); + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSet.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSet.as new file mode 100644 index 0000000..eca7eba --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSet.as @@ -0,0 +1,427 @@ +package wd.d3.geom.segments { + import wd.core.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.entities.*; + import away3d.materials.*; + import away3d.animators.*; + import away3d.bounds.*; + import away3d.core.partition.*; + import away3d.core.base.*; + + public class WireSegmentSet extends Entity implements IRenderable { + + public var _segments:Vector.; + public var VERTEX_BUFFER_LENGTH:int = 11; + private var _material:MaterialBase; + private var _vertices:Vector.; + private var _animator:IAnimator; + private var _numVertices:uint = 0; + private var _indices:Vector.; + private var _numIndices:uint; + private var _vertexBufferDirty:Boolean; + private var _indexBufferDirty:Boolean; + private var _vertexContext3D:Context3D; + private var _indexContext3D:Context3D; + private var _vertexBuffer:VertexBuffer3D; + private var _indexBuffer:IndexBuffer3D; + private var _lineCount:uint; + private var _startColor:int; + private var sr:Number; + private var sg:Number; + private var sb:Number; + private var _endColor:int; + private var er:Number; + private var eg:Number; + private var eb:Number; + private var _thickness:Number; + + public function WireSegmentSet(startColor:int=-1, endColor:int=-1, thickness:Number=1){ + this.thickness = thickness; + if (startColor == -1){ + startColor = Constants.BUILDING_SEGMENTS_TOP_COLOR; + }; + this.startColor = startColor; + if (endColor == -1){ + endColor = Constants.BUILDING_SEGMENTS_BOTTOM_COLOR; + }; + this.endColor = endColor; + super(); + this._vertices = new Vector.(); + this._indices = new Vector.(); + this.material = new WireSegmentMaterial(); + } + public function addSegment(s:Vector3D, e:Vector3D, alpha:Number=1):void{ + var index:uint = this._vertices.length; + var _temp1 = index; + index = (index + 1); + var _local5 = _temp1; + this._vertices[_local5] = s.x; + var _temp2 = index; + index = (index + 1); + var _local6 = _temp2; + this._vertices[_local6] = s.y; + var _temp3 = index; + index = (index + 1); + var _local7 = _temp3; + this._vertices[_local7] = s.z; + var _temp4 = index; + index = (index + 1); + var _local8 = _temp4; + this._vertices[_local8] = e.x; + var _temp5 = index; + index = (index + 1); + var _local9 = _temp5; + this._vertices[_local9] = e.y; + var _temp6 = index; + index = (index + 1); + var _local10 = _temp6; + this._vertices[_local10] = e.z; + var _temp7 = index; + index = (index + 1); + var _local11 = _temp7; + this._vertices[_local11] = this.thickness; + var _temp8 = index; + index = (index + 1); + var _local12 = _temp8; + this._vertices[_local12] = this.sr; + var _temp9 = index; + index = (index + 1); + var _local13 = _temp9; + this._vertices[_local13] = this.sg; + var _temp10 = index; + index = (index + 1); + var _local14 = _temp10; + this._vertices[_local14] = this.sb; + var _temp11 = index; + index = (index + 1); + var _local15 = _temp11; + this._vertices[_local15] = alpha; + var _temp12 = index; + index = (index + 1); + var _local16 = _temp12; + this._vertices[_local16] = e.x; + var _temp13 = index; + index = (index + 1); + var _local17 = _temp13; + this._vertices[_local17] = e.y; + var _temp14 = index; + index = (index + 1); + var _local18 = _temp14; + this._vertices[_local18] = e.z; + var _temp15 = index; + index = (index + 1); + var _local19 = _temp15; + this._vertices[_local19] = s.x; + var _temp16 = index; + index = (index + 1); + var _local20 = _temp16; + this._vertices[_local20] = s.y; + var _temp17 = index; + index = (index + 1); + var _local21 = _temp17; + this._vertices[_local21] = s.z; + var _temp18 = index; + index = (index + 1); + var _local22 = _temp18; + this._vertices[_local22] = -(this.thickness); + var _temp19 = index; + index = (index + 1); + var _local23 = _temp19; + this._vertices[_local23] = this.er; + var _temp20 = index; + index = (index + 1); + var _local24 = _temp20; + this._vertices[_local24] = this.eg; + var _temp21 = index; + index = (index + 1); + var _local25 = _temp21; + this._vertices[_local25] = this.eb; + var _temp22 = index; + index = (index + 1); + var _local26 = _temp22; + this._vertices[_local26] = alpha; + var _temp23 = index; + index = (index + 1); + var _local27 = _temp23; + this._vertices[_local27] = s.x; + var _temp24 = index; + index = (index + 1); + var _local28 = _temp24; + this._vertices[_local28] = s.y; + var _temp25 = index; + index = (index + 1); + var _local29 = _temp25; + this._vertices[_local29] = s.z; + var _temp26 = index; + index = (index + 1); + var _local30 = _temp26; + this._vertices[_local30] = e.x; + var _temp27 = index; + index = (index + 1); + var _local31 = _temp27; + this._vertices[_local31] = e.y; + var _temp28 = index; + index = (index + 1); + var _local32 = _temp28; + this._vertices[_local32] = e.z; + var _temp29 = index; + index = (index + 1); + var _local33 = _temp29; + this._vertices[_local33] = -(this.thickness); + var _temp30 = index; + index = (index + 1); + var _local34 = _temp30; + this._vertices[_local34] = this.sr; + var _temp31 = index; + index = (index + 1); + var _local35 = _temp31; + this._vertices[_local35] = this.sg; + var _temp32 = index; + index = (index + 1); + var _local36 = _temp32; + this._vertices[_local36] = this.sb; + var _temp33 = index; + index = (index + 1); + var _local37 = _temp33; + this._vertices[_local37] = alpha; + var _temp34 = index; + index = (index + 1); + var _local38 = _temp34; + this._vertices[_local38] = e.x; + var _temp35 = index; + index = (index + 1); + var _local39 = _temp35; + this._vertices[_local39] = e.y; + var _temp36 = index; + index = (index + 1); + var _local40 = _temp36; + this._vertices[_local40] = e.z; + var _temp37 = index; + index = (index + 1); + var _local41 = _temp37; + this._vertices[_local41] = s.x; + var _temp38 = index; + index = (index + 1); + var _local42 = _temp38; + this._vertices[_local42] = s.y; + var _temp39 = index; + index = (index + 1); + var _local43 = _temp39; + this._vertices[_local43] = s.z; + var _temp40 = index; + index = (index + 1); + var _local44 = _temp40; + this._vertices[_local44] = this.thickness; + var _temp41 = index; + index = (index + 1); + var _local45 = _temp41; + this._vertices[_local45] = this.er; + var _temp42 = index; + index = (index + 1); + var _local46 = _temp42; + this._vertices[_local46] = this.eg; + var _temp43 = index; + index = (index + 1); + var _local47 = _temp43; + this._vertices[_local47] = this.eb; + var _temp44 = index; + index = (index + 1); + var _local48 = _temp44; + this._vertices[_local48] = alpha; + index = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + this._lineCount++; + } + private function removeSegmentByIndex(index:uint):void{ + var indVert:uint = (this._indices[index] * this.VERTEX_BUFFER_LENGTH); + this._indices.splice(index, 6); + this._vertices.splice(indVert, (4 * this.VERTEX_BUFFER_LENGTH)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function removeSegment(segment:WireSegment):void{ + var index:uint; + var i:uint; + while (i < this._segments.length) { + if (this._segments[i] == segment){ + segment.segmentsBase = null; + this._segments.splice(i, 1); + this.removeSegmentByIndex(segment.index); + segment = null; + this._lineCount--; + } else { + this._segments[i].index = index; + index = (index + 6); + }; + i++; + }; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getSegment(index:uint):WireSegment{ + return (this._segments[index]); + } + public function removeAllSegments():void{ + this._vertices.length = 0; + this._indices.length = 0; + this._segments.length = 0; + this._numVertices = 0; + this._numIndices = 0; + this._lineCount = 0; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (null); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + if (((!((this._indexContext3D == stage3DProxy.context3D))) || (this._indexBufferDirty))){ + this._indexBuffer = stage3DProxy._context3D.createIndexBuffer(this._numIndices); + this._indexBuffer.uploadFromVector(this._indices, 0, this._numIndices); + this._indexBufferDirty = false; + this._indexContext3D = stage3DProxy.context3D; + }; + return (this._indexBuffer); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + if (this._numVertices == 0){ + this.addSegment(new Vector3D(0, 0, 0), new Vector3D(0, 0, 0)); + }; + if (((!((this._vertexContext3D == stage3DProxy.context3D))) || (this._vertexBufferDirty))){ + this._vertexBuffer = stage3DProxy._context3D.createVertexBuffer(this._numVertices, this.VERTEX_BUFFER_LENGTH); + this._vertexBuffer.uploadFromVector(this._vertices, 0, this._numVertices); + this._vertexBufferDirty = false; + this._vertexContext3D = stage3DProxy.context3D; + }; + return (this._vertexBuffer); + } + override public function dispose():void{ + super.dispose(); + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + }; + if (this._indexBuffer){ + this._indexBuffer.dispose(); + }; + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + override public function get mouseEnabled():Boolean{ + return (false); + } + public function get numTriangles2():uint{ + return (0); + } + public function get numTriangles():uint{ + return ((this._numIndices / 3)); + } + public function get sourceEntity():Entity{ + return (this); + } + public function get castsShadows():Boolean{ + return (false); + } + public function get material():MaterialBase{ + return (this._material); + } + public function get animator():IAnimator{ + return (this._animator); + } + public function set material(value:MaterialBase):void{ + if (value == this._material){ + return; + }; + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new BoundingSphere()); + } + override protected function updateBounds():void{ + _bounds.fromExtremes(-10000, -10000, 0, 10000, 10000, 0); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new RenderableNode(this)); + } + public function get uvTransform():Matrix{ + return (null); + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexData():Vector.{ + return (this._vertices); + } + public function get indexData():Vector.{ + return (this._indices); + } + public function get UVData():Vector.{ + return (null); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexBufferOffset():int{ + return (0); + } + public function get normalBufferOffset():int{ + return (0); + } + public function get tangentBufferOffset():int{ + return (0); + } + public function get UVBufferOffset():int{ + return (0); + } + public function get secondaryUVBufferOffset():int{ + return (0); + } + public function get startColor():int{ + return (this._startColor); + } + public function set startColor(value:int):void{ + this._startColor = value; + this.sr = (((value >> 16) & 0xFF) / 0xFF); + this.sg = (((value >> 8) & 0xFF) / 0xFF); + this.sb = ((value & 0xFF) / 0xFF); + } + public function get endColor():int{ + return (this._endColor); + } + public function set endColor(value:int):void{ + this._endColor = value; + this.er = (((value >> 16) & 0xFF) / 0xFF); + this.eg = (((value >> 8) & 0xFF) / 0xFF); + this.eb = ((value & 0xFF) / 0xFF); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = value; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSetV2.as b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSetV2.as new file mode 100644 index 0000000..9c0208a --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/geom/segments/WireSegmentSetV2.as @@ -0,0 +1,346 @@ +package wd.d3.geom.segments { + import wd.core.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + import away3d.core.managers.*; + import away3d.entities.*; + import away3d.materials.*; + import away3d.animators.*; + import away3d.bounds.*; + import away3d.core.partition.*; + import away3d.core.base.*; + + public class WireSegmentSetV2 extends Entity implements IRenderable { + + public var _segments:Vector.; + public var VERTEX_BUFFER_LENGTH:int = 7; + private var _material:MaterialBase; + private var _vertices:Vector.; + private var _animator:IAnimator; + private var _numVertices:uint = 0; + private var _indices:Vector.; + private var _numIndices:uint; + private var _vertexBufferDirty:Boolean; + private var _indexBufferDirty:Boolean; + private var _vertexContext3D:Context3D; + private var _indexContext3D:Context3D; + private var _vertexBuffer:VertexBuffer3D; + private var _indexBuffer:IndexBuffer3D; + private var _lineCount:uint; + private var _startColor:int; + private var sr:Number; + private var sg:Number; + private var sb:Number; + private var _thickness:Number; + + public function WireSegmentSetV2(startColor:int=-1, thickness:Number=1){ + this.thickness = thickness; + if (startColor == -1){ + startColor = Constants.BUILDING_SEGMENTS_TOP_COLOR; + }; + this.startColor = startColor; + super(); + this._vertices = new Vector.(); + this._indices = new Vector.(); + this.material = new WireSegmentMaterialV2(startColor, thickness); + } + public function addSegment(s:Vector3D, e:Vector3D):void{ + var index:uint = this._vertices.length; + var _temp1 = index; + index = (index + 1); + var _local4 = _temp1; + this._vertices[_local4] = s.x; + var _temp2 = index; + index = (index + 1); + var _local5 = _temp2; + this._vertices[_local5] = s.y; + var _temp3 = index; + index = (index + 1); + var _local6 = _temp3; + this._vertices[_local6] = s.z; + var _temp4 = index; + index = (index + 1); + var _local7 = _temp4; + this._vertices[_local7] = e.x; + var _temp5 = index; + index = (index + 1); + var _local8 = _temp5; + this._vertices[_local8] = e.y; + var _temp6 = index; + index = (index + 1); + var _local9 = _temp6; + this._vertices[_local9] = e.z; + var _temp7 = index; + index = (index + 1); + var _local10 = _temp7; + this._vertices[_local10] = this.thickness; + var _temp8 = index; + index = (index + 1); + var _local11 = _temp8; + this._vertices[_local11] = e.x; + var _temp9 = index; + index = (index + 1); + var _local12 = _temp9; + this._vertices[_local12] = e.y; + var _temp10 = index; + index = (index + 1); + var _local13 = _temp10; + this._vertices[_local13] = e.z; + var _temp11 = index; + index = (index + 1); + var _local14 = _temp11; + this._vertices[_local14] = s.x; + var _temp12 = index; + index = (index + 1); + var _local15 = _temp12; + this._vertices[_local15] = s.y; + var _temp13 = index; + index = (index + 1); + var _local16 = _temp13; + this._vertices[_local16] = s.z; + var _temp14 = index; + index = (index + 1); + var _local17 = _temp14; + this._vertices[_local17] = -(this.thickness); + var _temp15 = index; + index = (index + 1); + var _local18 = _temp15; + this._vertices[_local18] = s.x; + var _temp16 = index; + index = (index + 1); + var _local19 = _temp16; + this._vertices[_local19] = s.y; + var _temp17 = index; + index = (index + 1); + var _local20 = _temp17; + this._vertices[_local20] = s.z; + var _temp18 = index; + index = (index + 1); + var _local21 = _temp18; + this._vertices[_local21] = e.x; + var _temp19 = index; + index = (index + 1); + var _local22 = _temp19; + this._vertices[_local22] = e.y; + var _temp20 = index; + index = (index + 1); + var _local23 = _temp20; + this._vertices[_local23] = e.z; + var _temp21 = index; + index = (index + 1); + var _local24 = _temp21; + this._vertices[_local24] = -(this.thickness); + var _temp22 = index; + index = (index + 1); + var _local25 = _temp22; + this._vertices[_local25] = e.x; + var _temp23 = index; + index = (index + 1); + var _local26 = _temp23; + this._vertices[_local26] = e.y; + var _temp24 = index; + index = (index + 1); + var _local27 = _temp24; + this._vertices[_local27] = e.z; + var _temp25 = index; + index = (index + 1); + var _local28 = _temp25; + this._vertices[_local28] = s.x; + var _temp26 = index; + index = (index + 1); + var _local29 = _temp26; + this._vertices[_local29] = s.y; + var _temp27 = index; + index = (index + 1); + var _local30 = _temp27; + this._vertices[_local30] = s.z; + var _temp28 = index; + index = (index + 1); + var _local31 = _temp28; + this._vertices[_local31] = this.thickness; + index = (this._lineCount << 2); + this._indices.push(index, (index + 1), (index + 2), (index + 3), (index + 2), (index + 1)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + this._lineCount++; + } + private function removeSegmentByIndex(index:uint):void{ + var indVert:uint = (this._indices[index] * this.VERTEX_BUFFER_LENGTH); + this._indices.splice(index, 6); + this._vertices.splice(indVert, (4 * this.VERTEX_BUFFER_LENGTH)); + this._numVertices = (this._vertices.length / this.VERTEX_BUFFER_LENGTH); + this._numIndices = this._indices.length; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function removeSegment(segment:WireSegment):void{ + var index:uint; + var i:uint; + while (i < this._segments.length) { + if (this._segments[i] == segment){ + segment.segmentsBase = null; + this._segments.splice(i, 1); + this.removeSegmentByIndex(segment.index); + segment = null; + this._lineCount--; + } else { + this._segments[i].index = index; + index = (index + 6); + }; + i++; + }; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getSegment(index:uint):WireSegment{ + return (this._segments[index]); + } + public function removeAllSegments():void{ + this._vertices.length = 0; + this._indices.length = 0; + this._segments.length = 0; + this._numVertices = 0; + this._numIndices = 0; + this._lineCount = 0; + this._vertexBufferDirty = true; + this._indexBufferDirty = true; + } + public function getIndexBuffer2(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + return (null); + } + public function getIndexBuffer(stage3DProxy:Stage3DProxy):IndexBuffer3D{ + if (((!((this._indexContext3D == stage3DProxy.context3D))) || (this._indexBufferDirty))){ + this._indexBuffer = stage3DProxy._context3D.createIndexBuffer(this._numIndices); + this._indexBuffer.uploadFromVector(this._indices, 0, this._numIndices); + this._indexBufferDirty = false; + this._indexContext3D = stage3DProxy.context3D; + }; + return (this._indexBuffer); + } + public function getVertexBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + if (this._numVertices == 0){ + this.addSegment(new Vector3D(0, 0, 0), new Vector3D(0, 0, 0)); + }; + if (((!((this._vertexContext3D == stage3DProxy.context3D))) || (this._vertexBufferDirty))){ + this._vertexBuffer = stage3DProxy._context3D.createVertexBuffer(this._numVertices, this.VERTEX_BUFFER_LENGTH); + this._vertexBuffer.uploadFromVector(this._vertices, 0, this._numVertices); + this._vertexBufferDirty = false; + this._vertexContext3D = stage3DProxy.context3D; + }; + return (this._vertexBuffer); + } + override public function dispose():void{ + super.dispose(); + if (this._vertexBuffer){ + this._vertexBuffer.dispose(); + }; + if (this._indexBuffer){ + this._indexBuffer.dispose(); + }; + } + public function getUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexNormalBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function getVertexTangentBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + override public function get mouseEnabled():Boolean{ + return (false); + } + public function get numTriangles2():uint{ + return (0); + } + public function get numTriangles():uint{ + return ((this._numIndices / 3)); + } + public function get sourceEntity():Entity{ + return (this); + } + public function get castsShadows():Boolean{ + return (false); + } + public function get material():MaterialBase{ + return (this._material); + } + public function get animator():IAnimator{ + return (this._animator); + } + public function set material(value:MaterialBase):void{ + if (value == this._material){ + return; + }; + if (this._material){ + this._material.removeOwner(this); + }; + this._material = value; + if (this._material){ + this._material.addOwner(this); + }; + } + override protected function getDefaultBoundingVolume():BoundingVolumeBase{ + return (new BoundingSphere()); + } + override protected function updateBounds():void{ + _bounds.fromExtremes(-10000, -10000, 0, 10000, 10000, 0); + _boundsInvalid = false; + } + override protected function createEntityPartitionNode():EntityNode{ + return (new RenderableNode(this)); + } + public function get uvTransform():Matrix{ + return (null); + } + public function getSecondaryUVBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexData():Vector.{ + return (this._vertices); + } + public function get indexData():Vector.{ + return (this._indices); + } + public function get UVData():Vector.{ + return (null); + } + public function getCustomBuffer(stage3DProxy:Stage3DProxy):VertexBuffer3D{ + return (null); + } + public function get vertexBufferOffset():int{ + return (0); + } + public function get normalBufferOffset():int{ + return (0); + } + public function get tangentBufferOffset():int{ + return (0); + } + public function get UVBufferOffset():int{ + return (0); + } + public function get secondaryUVBufferOffset():int{ + return (0); + } + public function get startColor():int{ + return (this._startColor); + } + public function set startColor(value:int):void{ + this._startColor = value; + this.sr = (((value >> 16) & 0xFF) / 0xFF); + this.sg = (((value >> 8) & 0xFF) / 0xFF); + this.sb = ((value & 0xFF) / 0xFF); + } + public function get thickness():Number{ + return (this._thickness); + } + public function set thickness(value:Number):void{ + this._thickness = value; + } + + } +}//package wd.d3.geom.segments diff --git a/flash_decompiled/watchdog/wd/d3/lights/LightProvider.as b/flash_decompiled/watchdog/wd/d3/lights/LightProvider.as new file mode 100644 index 0000000..6506aec --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/lights/LightProvider.as @@ -0,0 +1,22 @@ +package wd.d3.lights { + import away3d.materials.lightpickers.*; + import away3d.lights.*; + + public class LightProvider { + + public static var lightPicker:StaticLightPicker; + public static var lightPickerObjects:StaticLightPicker; + public static var light0:PointLight; + public static var light1:PointLight; + + public function LightProvider(){ + super(); + lightPicker = new StaticLightPicker([]); + light0 = new PointLight(); + lightPicker.lights = [light0]; + lightPickerObjects = new StaticLightPicker([]); + light1 = new PointLight(); + lightPickerObjects.lights = [light1]; + } + } +}//package wd.d3.lights diff --git a/flash_decompiled/watchdog/wd/d3/material/BuildingMaterial.as b/flash_decompiled/watchdog/wd/d3/material/BuildingMaterial.as new file mode 100644 index 0000000..03b07f4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/BuildingMaterial.as @@ -0,0 +1,23 @@ +package wd.d3.material { + import away3d.textures.*; + import away3d.materials.*; + + public class BuildingMaterial extends MaterialBase { + + private var _screenPass:BuildingPass2; + + public function BuildingMaterial(tex:BitmapTexture){ + super(); + bothSides = false; + addPass((this._screenPass = new BuildingPass2(tex))); + this._screenPass.material = this; + } + public function doHide():void{ + this._screenPass.doHide(); + } + public function doWave(_x:Number, _y:Number):void{ + this._screenPass.doWave(_x, _y); + } + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/BuildingPass2.as b/flash_decompiled/watchdog/wd/d3/material/BuildingPass2.as new file mode 100644 index 0000000..9990a04 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/BuildingPass2.as @@ -0,0 +1,166 @@ +package wd.d3.material { + import __AS3__.vec.*; + import flash.geom.*; + import wd.d3.*; + import away3d.textures.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import flash.display3D.textures.*; + import away3d.materials.passes.*; + + public class BuildingPass2 extends MaterialPassBase { + + private var texture:BitmapTexture; + private var _calcMatrix:Matrix3D; + private var textGPU:TextureBase; + private var mVarsV:Vector.; + private var waveVars:Vector.; + private var mVarsV2:Vector.; + private var mVarsF2:Vector.; + private var shockRadius:Number = 0; + private var shockForce:Number = 100; + private var startPart:String = "mov vt0, va0 \n"; + private var carpetPart:String; + private var inceptionPart:String; + private var distancePart:String; + private var earthQuakePart:String; + private var shockwavePart:String; + private var hidePart:String = "mul vt0.y, vc7.z, vt0.y \n"; + private var endPart:String; + private var _waveEnabled:Boolean = false; + private var _programDirty:Boolean = false; + private var _earthQuakeEnabled:Boolean = false; + private var _hideEnabled:Boolean = false; + private var _hideValue:Number = 1; + + public function BuildingPass2(tex:BitmapTexture){ + this.mVarsV = new [30, 30, 30, 30]; + this.waveVars = new [30, 30, 30, 30]; + this.mVarsV2 = new [3, 30, 0, 1]; + this.mVarsF2 = new [1, 1, 1, 0.8]; + this.carpetPart = ((((((((("sub vt1.x, \tvt0.x, \tvc5.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc5.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n") + "slt vt1.w, vc5.z,vt1.z \n") + "sub vt1.x, vt1.z,vc5.z \n") + "mul vt1.x, vt1.w, vt1.x \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.inceptionPart = ((((((((((("sub vt1.x, \tvt0.x, \tvc5.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc5.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n") + "sub vt1.x, vt1.z,vc5.z \n") + "slt vt1.w,vc6.z, vt1.x \n") + "div vt1.x, vt1.x ,vc5.w \n") + "mul vt1.x, vt0.y, vt1.x \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt1.x,vt0.y \n"); + this.distancePart = ((((("sub vt1.x, \tvt0.x, \tvc7.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc7.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n"); + this.earthQuakePart = (((("slt vt1.w, vt1.z, vc5.z \n" + "div vt1.x, vt1.z, vc5.z \n") + "mul vt1.x, vt1.x, vc5.w \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.shockwavePart = ((((("slt vt1.w, vt1.z, vc7.z \n" + "div vt1.x, vt1.z, vc7.z \n") + "mul vt1.x, vt1.x, vc7.w \n") + "mul vt1.x, vt1.x, vc6.x \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.endPart = ("m44 op, vt0, vc0\t\n" + "mov v0, va1\t\t\n"); + this.texture = tex; + this._calcMatrix = new Matrix3D(); + this.textGPU = this.texture.getTextureForStage3D(Simulation.stage3DProxy); + this.radius = 600; + this.falloff = 100; + super(); + } + public function set radius(v:Number):void{ + this.mVarsV[2] = v; + } + public function set falloff(v:Number):void{ + this.mVarsV[3] = v; + } + override function getVertexCode(code:String):String{ + code = this.startPart; + if (this._waveEnabled){ + code = (code + this.distancePart); + code = (code + this.shockwavePart); + }; + if (this._earthQuakeEnabled){ + code = (code + this.distancePart); + code = (code + this.earthQuakePart); + }; + if (this._hideEnabled){ + code = (code + this.hidePart); + }; + code = (code + this.endPart); + return (code); + } + override function getFragmentCode():String{ + var code:String = (("tex ft0, v0, fs0 <2d,linear, mipnone> \n" + "mul ft0.w, ft0.w,fc0.w \n") + "mov oc, ft0 \n"); + return (code); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + if (this._programDirty){ + updateProgram(stage3DProxy); + this._programDirty = false; + }; + context.setCulling(Context3DTriangleFace.NONE); + context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + context.setVertexBufferAt(0, renderable.getVertexBuffer(stage3DProxy), 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, renderable.getUVBuffer(stage3DProxy), 0, Context3DVertexBufferFormat.FLOAT_2); + this._calcMatrix.copyFrom(renderable.sceneTransform); + this._calcMatrix.append(camera.viewProjection); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, this._calcMatrix, true); + this.mVarsV[0] = Simulation.instance.cameraTargetPos.x; + this.mVarsV[1] = Simulation.instance.cameraTargetPos.z; + this.radius = (Simulation.instance.cameraTargetPos.y + 400); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, this.mVarsV); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, this.mVarsV2); + if (this._earthQuakeEnabled){ + this.waveVars[2] = ((this.shockRadius++ % 50) + 1); + this.waveVars[3] = ((1 - ((this.shockForce++ % 100) / 100)) + 1); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this.waveVars); + }; + if (this._waveEnabled){ + this.shockRadius = (this.shockRadius + 0.3); + this.waveVars[2] = ((this.shockRadius + 1) * 2); + this.shockForce = (this.shockForce + 0.3); + if (this.shockForce > 100){ + this.shockForce = 100; + this._waveEnabled = false; + this._programDirty = true; + }; + this.waveVars[3] = (1 - (this.shockForce / 100)); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this.waveVars); + }; + if (this._hideEnabled){ + this._hideValue = (this._hideValue - 0.002); + if (this._hideValue < 0){ + this._hideValue = 0; + }; + this.waveVars[2] = this._hideValue; + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this.waveVars); + }; + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this.mVarsF2); + context.setTextureAt(0, this.textGPU); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + public function doHide():void{ + this._hideValue = 1; + this._hideEnabled = true; + this._programDirty = true; + } + public function doWave(_x:Number, _y:Number):void{ + this.shockRadius = 0; + this.shockForce = 0; + this.waveVars[0] = _x; + this.waveVars[1] = _y; + this._waveEnabled = true; + this._programDirty = true; + } + public function doEarthQuake(_x:Number, _y:Number):void{ + this.shockRadius = 0; + this.shockForce = 0; + this.waveVars[0] = _x; + this.waveVars[1] = _y; + this._earthQuakeEnabled = true; + this._programDirty = true; + } + public function stopEarthQuake():void{ + this._earthQuakeEnabled = false; + this._programDirty = true; + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setTextureAt(0, null); + } + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/MaterialProvider.as b/flash_decompiled/watchdog/wd/d3/material/MaterialProvider.as new file mode 100644 index 0000000..98c5480 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/MaterialProvider.as @@ -0,0 +1,128 @@ +package wd.d3.material { + import away3d.materials.*; + import away3d.materials.methods.*; + import away3d.textures.*; + import wd.core.*; + import wd.d3.control.*; + import flash.display.*; + import wd.d3.lights.*; + + public class MaterialProvider { + + public static var FOG:FogMethod; + public static var CEL_DIFFUSE:CelDiffuseMethod; + public static var CEL_SPECULAR:CelSpecularMethod; + public static var RIM_LIGHT:RimLightMethod; + public static var white:ColorMaterial; + public static var black:ColorMaterial; + public static var yellow:ColorMaterial; + public static var red:ColorMaterial; + public static var blue:ColorMaterial; + public static var uv:TextureMaterial; + public static var ground:TextureMaterial; + public static var particle:TextureMaterial; + public static var BLUE_FOG:FogMethod; + public static var ANTI_FOG:FogMethod; + public static var vignette:TextureMaterial; + public static var cyclo:TextureMaterial; + public static var river:ColorMaterial; + public static var parc:ColorMaterial; + private static var _building_block:BuildingMaterial; + private static var _building_blocklq:TextureMaterial; + private static var _monuments:MonumentMaterial; + + public function MaterialProvider(){ + var m:ColorMaterial; + super(); + new TextureProvider(); + FOG = new FogMethod(0, 1500, Constants.BG_COLOR); + ANTI_FOG = new FogMethod(3000, 1000, Constants.BG_COLOR); + BLUE_FOG = new FogMethod(CameraController.MAX_HEIGHT, CameraController.MIN_HEIGHT, Constants.BLUE_COLOR_RGB); + CEL_DIFFUSE = new CelDiffuseMethod(3); + CEL_SPECULAR = new CelSpecularMethod(1); + RIM_LIGHT = new RimLightMethod(Constants.BLUE_COLOR_RGB, 0.75, 4, BlendMode.ADD); + red = new ColorMaterial(0xFF0000); + red.bothSides = true; + white = new ColorMaterial(0xFFFFFF); + black = new ColorMaterial(0); + yellow = new ColorMaterial(0xFFCC00); + yellow.alpha = 0.5; + yellow.bothSides = true; + blue = new ColorMaterial(1056972, 1); + blue.alpha = 0.2; + blue.bothSides = true; + var mats:Array = [black, white, yellow, blue, red]; + for each (m in mats) { + m.addMethod(FOG); + }; + ground = new TextureMaterial(TextureProvider.ground, false, true); + ground.specularColor = 0; + ground.ambientColor = 0; + ground.specular = 0.85; + ground.gloss = 1; + ground.bothSides = true; + ground.smooth = true; + ground.lightPicker = LightProvider.lightPicker; + particle = new TextureMaterial(TextureProvider.particle, true); + particle.alphaPremultiplied = true; + particle.blendMode = BlendMode.ADD; + vignette = new TextureMaterial(TextureProvider.vignette, true, false); + vignette.alphaPremultiplied = true; + vignette.alphaBlending = true; + vignette.blendMode = BlendMode.MULTIPLY; + cyclo = new TextureMaterial(TextureProvider.cyclo); + cyclo.alpha = 0.5; + cyclo.bothSides = true; + river = new ColorMaterial(1252144, 1); + river.bothSides = true; + parc = new ColorMaterial(929570, 1); + parc.bothSides = true; + } + public static function get network_material():MaterialBase{ + var mat:TextureMaterial; + mat = new TextureMaterial(TextureProvider.network, true, true); + mat.alpha = 0.8; + mat.bothSides = true; + mat.addMethod(new OutlineMethod(0xFFFFFF, 1)); + mat.animateUVs = true; + return (mat); + } + public static function get monuments():MonumentMaterial{ + if (_monuments != null){ + return (_monuments); + }; + var tex:BitmapTexture = TextureProvider.monument; + var mat:MonumentMaterial = new MonumentMaterial(tex); + return ((_monuments = mat)); + } + public static function get building_blockHQ():BuildingMaterial{ + if (_building_block != null){ + return (_building_block); + }; + var tex:BitmapTexture = TextureProvider.building_block; + var mat:BuildingMaterial = new BuildingMaterial(tex); + return ((_building_block = mat)); + } + public static function get building_blockLQ():TextureMaterial{ + if (_building_blocklq != null){ + return (_building_blocklq); + }; + var tex:BitmapTexture = TextureProvider.building_block; + var mat:TextureMaterial = new TextureMaterial(tex); + mat.alpha = 0.8; + mat.smooth = true; + mat.bothSides = false; + return ((_building_blocklq = mat)); + } + public static function get building_side():MaterialBase{ + var mat:TextureMaterial = new TextureMaterial(TextureProvider.building_side, true, true); + mat.alphaPremultiplied = true; + mat.alpha = 0.9; + mat.smooth = true; + mat.bothSides = true; + mat.addMethod(FOG); + return (mat); + } + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/MonumentMaterial.as b/flash_decompiled/watchdog/wd/d3/material/MonumentMaterial.as new file mode 100644 index 0000000..9ed792d --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/MonumentMaterial.as @@ -0,0 +1,16 @@ +package wd.d3.material { + import away3d.textures.*; + import away3d.materials.*; + + public class MonumentMaterial extends MaterialBase { + + private var _screenPass:MonumentPass; + + public function MonumentMaterial(tex:BitmapTexture){ + super(); + bothSides = false; + addPass((this._screenPass = new MonumentPass(tex))); + this._screenPass.material = this; + } + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/MonumentPass.as b/flash_decompiled/watchdog/wd/d3/material/MonumentPass.as new file mode 100644 index 0000000..e5738c8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/MonumentPass.as @@ -0,0 +1,149 @@ +package wd.d3.material { + import __AS3__.vec.*; + import flash.geom.*; + import wd.d3.*; + import away3d.textures.*; + import flash.display3D.*; + import away3d.core.base.*; + import away3d.core.managers.*; + import away3d.cameras.*; + import away3d.materials.lightpickers.*; + import flash.display3D.textures.*; + import away3d.materials.passes.*; + + public class MonumentPass extends MaterialPassBase { + + private var texture:BitmapTexture; + private var _calcMatrix:Matrix3D; + private var textGPU:TextureBase; + private var mVarsV:Vector.; + private var waveVars:Vector.; + private var mVarsV2:Vector.; + private var mVarsF2:Vector.; + private var shockRadius:Number = 0; + private var shockForce:Number = 100; + private var startPart:String = "mov vt0, va0 \n"; + private var carpetPart:String; + private var inceptionPart:String; + private var distancePart:String; + private var earthQuakePart:String; + private var shockwavePart:String; + private var endPart:String; + private var _waveEnabled:Boolean = false; + private var _programDirty:Boolean = false; + private var _earthQuakeEnabled:Boolean = false; + + public function MonumentPass(tex:BitmapTexture){ + this.mVarsV = new [30, 30, 30, 0.06]; + this.waveVars = new [30, 30, 30, 30]; + this.mVarsV2 = new [3, 0.05, 0, 1]; + this.mVarsF2 = new [1, 1, 1, 0.8]; + this.carpetPart = (((((((((("sub vt1.x, \tvt0.x, \tvc5.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc5.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n") + "slt vt1.w, vc5.z,vt1.z \n") + "sub vt1.x, vt1.z,vc5.z \n") + "mul vt1.x, vt1.w, vt1.x \n") + "mul vt1.x, vc6.y, vt1.x \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.inceptionPart = ((((((((((("sub vt1.x, \tvt0.x, \tvc5.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc5.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n") + "sub vt1.x, vt1.z,vc5.z \n") + "slt vt1.w,vc6.z, vt1.x \n") + "div vt1.x, vt1.x ,vc5.w \n") + "mul vt1.x, vt0.y, vt1.x \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt1.x,vt0.y \n"); + this.distancePart = ((((("sub vt1.x, \tvt0.x, \tvc7.x \n" + "mul vt1.x, \tvt1.x, \tvt1.x \n") + "sub vt1.y, \tvt0.z, \tvc7.y \n") + "mul vt1.y, \tvt1.y, \tvt1.y \n") + "add vt1.z, \tvt1.x, \tvt1.y \n") + "sqt vt1.z, \tvt1.z \n"); + this.earthQuakePart = (((("slt vt1.w, vt1.z, vc7.z \n" + "div vt1.x, vt1.z, vc7.z \n") + "mul vt1.x, vt1.x, vc7.w \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.shockwavePart = ((((("slt vt1.w, vt1.z, vc7.z \n" + "div vt1.x, vt1.z, vc7.z \n") + "mul vt1.x, vt1.x, vc7.w \n") + "mul vt1.x, vt1.x, vc6.x \n") + "mul vt1.x, vt1.x, vt1.w \n") + "add vt0.y, vt0.y, vt1.x \n"); + this.endPart = (("m44 op, vt0, vc0\t\n" + "mov v0, va0\t\t\n") + "mov v1, va1\t\t\n"); + this.texture = tex; + this._calcMatrix = new Matrix3D(); + this.textGPU = this.texture.getTextureForStage3D(Simulation.stage3DProxy); + this.radius = 600; + this.falloff = 60000; + super(); + } + public function set radius(v:Number):void{ + this.mVarsV[2] = v; + } + public function set falloff(v:Number):void{ + this.mVarsV[3] = v; + } + override function getVertexCode(code:String):String{ + code = this.startPart; + code = (code + this.carpetPart); + if (this._waveEnabled){ + code = (code + this.distancePart); + code = (code + this.shockwavePart); + }; + if (this._earthQuakeEnabled){ + code = (code + this.distancePart); + code = (code + this.earthQuakePart); + }; + code = (code + this.endPart); + return (code); + } + override function getFragmentCode():String{ + var code:String = (((((((((((("sub ft0.x, v0.x, \tfc0.x \n" + "mul ft0.x, ft0.x, ft0.x \n") + "sub ft0.y, v0.z, \tfc0.y \n") + "mul ft0.y, ft0.y, ft0.y \n") + "add ft0.z, ft0.x, ft0.y \n") + "sqt ft0.z, ft0.z \n") + "sub ft0.x, ft0.z,\tfc0.z \n") + "div ft0.w, ft0.x,\tfc0.w \n") + "sub ft0.w, fc1.z,ft0.w \n") + "tex ft1, v1, fs0 <2d,linear, mipnone> \n") + "mov ft1.w , ft0.w \n") + "mul ft1.w, ft1.w,fc1.w \n") + "mov oc, ft1 \n"); + return (code); + } + override function render(renderable:IRenderable, stage3DProxy:Stage3DProxy, camera:Camera3D, lightPicker:LightPickerBase):void{ + var context:Context3D = stage3DProxy._context3D; + if (this._programDirty){ + updateProgram(stage3DProxy); + this._programDirty = false; + }; + context.setCulling(Context3DTriangleFace.NONE); + context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + context.setVertexBufferAt(0, renderable.getVertexBuffer(stage3DProxy), 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, renderable.getUVBuffer(stage3DProxy), 0, Context3DVertexBufferFormat.FLOAT_2); + this._calcMatrix.copyFrom(renderable.sceneTransform); + this._calcMatrix.append(camera.viewProjection); + this.mVarsV[0] = Simulation.instance.cameraTargetPos.x; + this.mVarsV[1] = Simulation.instance.cameraTargetPos.z; + this.radius = (Simulation.instance.cameraTargetPos.y + 2000); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, this._calcMatrix, true); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 5, this.mVarsV); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 6, this.mVarsV2); + if (this._earthQuakeEnabled){ + this.waveVars[2] = ((this.shockRadius++ % 50) + 1); + this.waveVars[3] = ((1 - ((this.shockForce++ % 100) / 100)) + 1); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this.waveVars); + }; + if (this._waveEnabled){ + this.shockRadius = (this.shockRadius + 0.3); + this.waveVars[2] = ((this.shockRadius + 1) * 2); + this.shockForce = (this.shockForce + 0.3); + if (this.shockForce > 100){ + this.shockForce = 100; + this._waveEnabled = false; + this._programDirty = true; + }; + this.waveVars[3] = (1 - (this.shockForce / 100)); + context.setProgramConstantsFromVector(Context3DProgramType.VERTEX, 7, this.waveVars); + }; + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, this.mVarsV); + context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 1, this.mVarsF2); + context.setTextureAt(0, this.textGPU); + context.drawTriangles(renderable.getIndexBuffer(stage3DProxy), 0, renderable.numTriangles); + } + public function doWave(_x:Number, _y:Number):void{ + this.shockRadius = 0; + this.shockForce = 0; + this.waveVars[0] = _x; + this.waveVars[1] = _y; + this._waveEnabled = true; + this._programDirty = true; + } + public function doEarthQuake(_x:Number, _y:Number):void{ + this.shockRadius = 0; + this.shockForce = 0; + this.waveVars[0] = _x; + this.waveVars[1] = _y; + this._earthQuakeEnabled = true; + this._programDirty = true; + } + public function stopEarthQuake():void{ + this._earthQuakeEnabled = false; + this._programDirty = true; + } + override function activate(stage3DProxy:Stage3DProxy, camera:Camera3D, textureRatioX:Number, textureRatioY:Number):void{ + var context:Context3D = stage3DProxy._context3D; + super.activate(stage3DProxy, camera, textureRatioX, textureRatioY); + } + override function deactivate(stage3DProxy:Stage3DProxy):void{ + stage3DProxy.setSimpleVertexBuffer(0, null, null, 0); + stage3DProxy.setSimpleVertexBuffer(1, null, null, 0); + stage3DProxy.setTextureAt(0, null); + } + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/TextureProvider.as b/flash_decompiled/watchdog/wd/d3/material/TextureProvider.as new file mode 100644 index 0000000..924a084 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/TextureProvider.as @@ -0,0 +1,52 @@ +package wd.d3.material { + import away3d.textures.*; + import flash.display.*; + import flash.geom.*; + + public class TextureProvider { + + private static var ground_bd:BitmapData; + public static var ground:BitmapTexture; + private static var particleSrc:Class = TextureProvider_particleSrc; + public static var particle:BitmapTexture = new BitmapTexture(new particleSrc().bitmapData); + private static var vignetteSrc:Class = TextureProvider_vignetteSrc; + public static var vignette:BitmapTexture = new BitmapTexture(new vignetteSrc().bitmapData); + private static var building_block_bd:BitmapData; + public static var building_block:BitmapTexture; + private static var cyclo_bd:BitmapData; + public static var cyclo:BitmapTexture; + private static var building_side_bd:BitmapData; + public static var building_side:BitmapTexture; + private static var building_roof_bd:BitmapData; + public static var building_roof:BitmapTexture; + private static var network_bd:BitmapData; + public static var network:BitmapTexture; + private static var monument_bd:BitmapData; + public static var monument:BitmapTexture; + + public function TextureProvider(){ + super(); + var top:uint; + var topAlpha:uint = 204; + var bootom:uint = 170; + var bottomAlpha:uint = 170; + var sh:Shape = new Shape(); + var m:Matrix = new Matrix(); + m.createGradientBox(128, 128, (Math.PI / 2)); + sh.graphics.beginGradientFill(GradientType.LINEAR, [0, 0xAAAAAA, 0xAAAAAA, 0], [0.5, 0.5, 0.8, 0], [0, 128, 254, 0xFF], m); + sh.graphics.drawRect(0, 0, 128, 128); + building_block_bd = new BitmapData(128, 128, true, 0); + building_block_bd.draw(sh); + building_block = new BitmapTexture(building_block_bd); + monument_bd = new BitmapData(16, 16, true, 1440603613); + monument = new BitmapTexture(monument_bd); + ground_bd = new BitmapData(32, 32, false, 0x101010); + ground_bd.fillRect(new Rectangle(8, 8, 16, 16), 0x303030); + ground = new BitmapTexture(ground_bd); + cyclo_bd = new BitmapData(2, 2, true, ((((topAlpha << 24) | (bootom << 16)) | (bootom << 8)) | bootom)); + cyclo_bd.setPixel(0, 0, ((((bottomAlpha << 24) | (top << 16)) | (top << 8)) | top)); + cyclo_bd.setPixel(1, 0, ((((bottomAlpha << 24) | (top << 16)) | (top << 8)) | top)); + cyclo = new BitmapTexture(cyclo_bd); + } + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/TextureProvider_particleSrc.as b/flash_decompiled/watchdog/wd/d3/material/TextureProvider_particleSrc.as new file mode 100644 index 0000000..6a2a1e3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/TextureProvider_particleSrc.as @@ -0,0 +1,7 @@ +package wd.d3.material { + import mx.core.*; + + public class TextureProvider_particleSrc extends BitmapAsset { + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/d3/material/TextureProvider_vignetteSrc.as b/flash_decompiled/watchdog/wd/d3/material/TextureProvider_vignetteSrc.as new file mode 100644 index 0000000..01f08a8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/d3/material/TextureProvider_vignetteSrc.as @@ -0,0 +1,7 @@ +package wd.d3.material { + import mx.core.*; + + public class TextureProvider_vignetteSrc extends BitmapAsset { + + } +}//package wd.d3.material diff --git a/flash_decompiled/watchdog/wd/data/ListNodeTracker.as b/flash_decompiled/watchdog/wd/data/ListNodeTracker.as new file mode 100644 index 0000000..4090f01 --- /dev/null +++ b/flash_decompiled/watchdog/wd/data/ListNodeTracker.as @@ -0,0 +1,28 @@ +package wd.data { + import wd.hud.items.*; + + public class ListNodeTracker { + + public var next:ListNodeTracker; + public var prev:ListNodeTracker; + public var data:Tracker; + public var pos:uint; + public var time:int = 0; + + public function ListNodeTracker(obj:Tracker){ + super(); + this.data = obj; + this.next = null; + this.prev = null; + } + public function insertAfter(node:ListNodeTracker):void{ + node.next = this.next; + node.prev = this; + if (this.next){ + this.next.prev = node; + }; + this.next = node; + } + + } +}//package wd.data diff --git a/flash_decompiled/watchdog/wd/data/ListNodeVec3D.as b/flash_decompiled/watchdog/wd/data/ListNodeVec3D.as new file mode 100644 index 0000000..4f23fc0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/data/ListNodeVec3D.as @@ -0,0 +1,28 @@ +package wd.data { + import flash.geom.*; + + public class ListNodeVec3D { + + public var next:ListNodeVec3D; + public var prev:ListNodeVec3D; + public var data:Vector3D; + public var pos:uint; + public var time:int = 0; + + public function ListNodeVec3D(obj:Vector3D){ + super(); + this.data = obj; + this.next = null; + this.prev = null; + } + public function insertAfter(node:ListNodeVec3D):void{ + node.next = this.next; + node.prev = this; + if (this.next){ + this.next.prev = node; + }; + this.next = node; + } + + } +}//package wd.data diff --git a/flash_decompiled/watchdog/wd/data/ListTracker.as b/flash_decompiled/watchdog/wd/data/ListTracker.as new file mode 100644 index 0000000..583774e --- /dev/null +++ b/flash_decompiled/watchdog/wd/data/ListTracker.as @@ -0,0 +1,46 @@ +package wd.data { + import wd.hud.items.*; + + public class ListTracker { + + public var head:ListNodeTracker; + public var tail:ListNodeTracker; + + public function ListTracker(){ + super(); + this.head = null; + this.tail = null; + } + public function insert(v:Tracker):ListNodeTracker{ + var node:ListNodeTracker = new ListNodeTracker(v); + if (this.head){ + this.tail.insertAfter(node); + this.tail = this.tail.next; + } else { + this.head = (this.tail = node); + }; + return (node); + } + public function remove(node:ListNodeTracker):Boolean{ + if (node == this.head){ + this.head = this.head.next; + } else { + if (node == this.tail){ + this.tail = this.tail.prev; + }; + }; + if (node.prev){ + node.prev.next = node.next; + }; + if (node.next){ + node.next.prev = node.prev; + }; + node.next = (node.prev = null); + if (this.head == null){ + this.tail = null; + }; + return (true); + } + + } +}//package wd.data diff --git a/flash_decompiled/watchdog/wd/data/ListVec3D.as b/flash_decompiled/watchdog/wd/data/ListVec3D.as new file mode 100644 index 0000000..c59ad10 --- /dev/null +++ b/flash_decompiled/watchdog/wd/data/ListVec3D.as @@ -0,0 +1,46 @@ +package wd.data { + import flash.geom.*; + + public class ListVec3D { + + public var head:ListNodeVec3D; + public var tail:ListNodeVec3D; + + public function ListVec3D(){ + super(); + this.head = null; + this.tail = null; + } + public function insert(v:Vector3D):ListNodeVec3D{ + var node:ListNodeVec3D = new ListNodeVec3D(v); + if (this.head){ + this.tail.insertAfter(node); + this.tail = this.tail.next; + } else { + this.head = (this.tail = node); + }; + return (node); + } + public function remove(node:ListNodeVec3D):Boolean{ + if (node == this.head){ + this.head = this.head.next; + } else { + if (node == this.tail){ + this.tail = this.tail.prev; + }; + }; + if (node.prev){ + node.prev.next = node.next; + }; + if (node.next){ + node.next.prev = node.prev; + }; + node.next = (node.prev = null); + if (this.head == null){ + this.tail = null; + }; + return (true); + } + + } +}//package wd.data diff --git a/flash_decompiled/watchdog/wd/data/SortArea.as b/flash_decompiled/watchdog/wd/data/SortArea.as new file mode 100644 index 0000000..6430e29 --- /dev/null +++ b/flash_decompiled/watchdog/wd/data/SortArea.as @@ -0,0 +1,196 @@ +package wd.data { + import flash.geom.*; + import flash.utils.*; + import __AS3__.vec.*; + + public class SortArea { + + protected var ceilSize:int; + protected var bounds:Rectangle; + protected var w:uint; + protected var h:uint; + protected var offX:Number = 0; + protected var offY:Number = 0; + private var length:uint; + protected var lengths:Vector.; + protected var m:Number; + protected var grid:Vector.; + protected var _items:ListVec3D; + private var dirty:Boolean = true; + private var lastSearchX:uint = 9999999; + private var lastSearchY:uint = 999999; + private var results:ListVec3D; + private var adjX:uint; + private var l:uint; + private var pos:uint; + private var item:Vector3D; + private var needEntityAcces:Boolean; + public var caseCount:int; + public var nodeEntity:ListNodeVec3D; + + public function SortArea(ceilSize:int, bounds:Rectangle, needEntityAcces:Boolean=false){ + this._items = new ListVec3D(); + super(); + this.needEntityAcces = needEntityAcces; + this.ceilSize = ceilSize; + this.bounds = bounds; + this.init(); + } + public function get entitys():ListVec3D{ + return (this._items); + } + public function deleteEntity(sortNode:ListNodeVec3D, sortNode2:ListNodeVec3D=null):void{ + if (this.needEntityAcces){ + this._items.remove(sortNode2); + }; + this.grid[sortNode.pos].remove(sortNode); + } + public function addEntity(item:Vector3D):ListNodeVec3D{ + this.pos = (((((item.x + this.offX) * this.m) | 0) * this.h) + ((item.z + this.offY) * this.m)); + if (this.pos > (this.length - 1)){ + this.pos = (this.length - 1); + }; + if (this.pos < 0){ + this.pos = 0; + }; + var itemNode:ListNodeVec3D = this.grid[this.pos].insert(item); + itemNode.pos = this.pos; + if (this.needEntityAcces){ + this.nodeEntity = this._items.insert(item); + }; + this.dirty = true; + return (itemNode); + } + public function clear():void{ + this._items = new ListVec3D(); + var i:int; + while (i < this.length) { + this.grid[i] = new ListVec3D(); + i++; + }; + } + public function update():void{ + var nodeList:ListVec3D; + var node0:ListNodeVec3D; + var node1:ListNodeVec3D; + this.dirty = true; + var t:int = getTimer(); + var i:int; + while (i < this.length) { + nodeList = this.grid[i]; + node0 = nodeList.head; + while (node0) { + if (node0.time != t){ + node0.time = t; + this.pos = (((((node0.data.x + this.offX) * this.m) | 0) * this.h) + ((node0.data.z + this.offY) * this.m)); + if (this.pos >= this.length){ + this.pos = 0; + }; + if (this.pos < 0){ + this.pos = 0; + }; + if (this.pos != node0.pos){ + node1 = this.grid[this.pos].insert(node0.data); + node1.pos = this.pos; + node1.time = t; + if (node0.next){ + node0 = node0.next; + nodeList.remove(node0.prev); + } else { + nodeList.remove(node0); + node0 = null; + }; + } else { + node0 = node0.next; + }; + } else { + node0 = node0.next; + }; + }; + i++; + }; + } + public function getNeighbors(item:Vector3D, resultVector:Vector., radius:uint=1):ListVec3D{ + var node:ListNodeVec3D; + var y:uint; + var itemX:uint = (((item.x + this.offX) / this.ceilSize) | 0); + var itemY:uint = (((item.z + this.offY) / this.ceilSize) | 0); + if (itemY > this.h){ + itemY = this.h; + }; + if (itemX > this.w){ + itemX = this.w; + }; + if (itemY < 0){ + itemY = 0; + }; + if (itemX < 0){ + itemX = 0; + }; + if ((((((this.lastSearchX == itemX)) && ((this.lastSearchY == itemY)))) && (!(this.dirty)))){ + return (this.results); + }; + this.dirty = false; + this.lastSearchX = uint(itemX); + this.lastSearchY = uint(itemY); + var minX:int = (itemX - radius); + if (minX < 0){ + minX = 0; + }; + var minY:int = (itemY - radius); + if (minY < 0){ + minY = 0; + }; + var maxX:uint = (itemX + radius); + if (maxX > this.w){ + maxX = this.w; + }; + var maxY:uint = (itemY + radius); + if (maxY > this.h){ + maxY = this.h; + }; + this.results = new ListVec3D(); + var count:uint = ((resultVector) ? resultVector.length : 0); + var x:uint = minX; + while (x <= maxX) { + this.adjX = (x * this.h); + y = minY; + while (y <= maxY) { + if ((this.adjX + y) < this.length){ + node = this.grid[(this.adjX + y)].head; + while (node) { + this.results.insert(node.data); + node = node.next; + }; + }; + y++; + }; + x++; + }; + return (this.results); + } + protected function init():void{ + this.w = (Math.ceil((this.bounds.width / this.ceilSize)) + 1); + this.h = (Math.ceil((this.bounds.height / this.ceilSize)) + 1); + this.length = (this.w * this.h); + this.caseCount = this.length; + this.offX = -(this.bounds.x); + this.offY = -(this.bounds.y); + this.m = (1 / this.ceilSize); + this._items = new ListVec3D(); + this.grid = new Vector.(this.length, true); + var i:uint; + while (i < this.length) { + this.grid[i] = new ListVec3D(); + i++; + }; + } + public function getEntityCaseGrid(i:int):ListVec3D{ + return (this.grid[i]); + } + public function clearCaseGrid(i:int):void{ + this.grid[i] = new ListVec3D(); + } + + } +}//package wd.data diff --git a/flash_decompiled/watchdog/wd/events/LoadingEvent.as b/flash_decompiled/watchdog/wd/events/LoadingEvent.as new file mode 100644 index 0000000..23d5cb0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/events/LoadingEvent.as @@ -0,0 +1,21 @@ +package wd.events { + import flash.events.*; + + public class LoadingEvent extends Event { + + public static const CITY_COMPLETE:String = "cityComplete"; + public static const CONFIG_COMPLETE:String = "configComplete"; + public static const CSS_COMPLETE:String = "cssComplete"; + + public function LoadingEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + } + override public function clone():Event{ + return (new LoadingEvent(type, bubbles, cancelable)); + } + override public function toString():String{ + return (formatToString("LoadingEvent", "type", "bubbles", "cancelable", "eventPhase")); + } + + } +}//package wd.events diff --git a/flash_decompiled/watchdog/wd/events/NavigatorEvent.as b/flash_decompiled/watchdog/wd/events/NavigatorEvent.as new file mode 100644 index 0000000..960c481 --- /dev/null +++ b/flash_decompiled/watchdog/wd/events/NavigatorEvent.as @@ -0,0 +1,33 @@ +package wd.events { + import flash.events.*; + + public class NavigatorEvent extends Event { + + public static const LOCATION_CHANGE:String = "locationChange"; + public static const LOADING_START:String = "loadingStart"; + public static const LOADING_STOP:String = "loadingStop"; + public static const LOADING_PROGRESS:String = "loadingProgress"; + public static const TARGET_REACHED:String = "targetReached"; + public static const SET_START_LOCATION:String = "setStartLocation"; + public static const INTRO_VISIBLE:String = "introVisible"; + public static const INTRO_HIDDEN:String = "introHidden"; + public static const INTRO_SHOW:String = "introShow"; + public static const INTRO_HIDE:String = "introHide"; + public static const ZOOM_CHANGE:String = "ZOOM_CHANGE"; + public static const DO_WAVE:String = "doWave"; + + public var data; + + public function NavigatorEvent(type:String, data=null, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + this.data = data; + } + override public function clone():Event{ + return (new NavigatorEvent(type, this.data, bubbles, cancelable)); + } + override public function toString():String{ + return (formatToString("NavigatorEvent", "type", "data", "bubbles", "cancelable", "eventPhase")); + } + + } +}//package wd.events diff --git a/flash_decompiled/watchdog/wd/events/ServiceEvent.as b/flash_decompiled/watchdog/wd/events/ServiceEvent.as new file mode 100644 index 0000000..9fd29c9 --- /dev/null +++ b/flash_decompiled/watchdog/wd/events/ServiceEvent.as @@ -0,0 +1,68 @@ +package wd.events { + import flash.events.*; + + public class ServiceEvent extends Event { + + public static const SINGLE_BUILDING_COMPLETE:String = "singleBuildingComplete"; + public static const SINGLE_BUILDING_CANCEL:String = "singleBuildingCancel"; + public static const BUILDINGS_COMPLETE:String = "buildingsComplete"; + public static const BUILDINGS_CANCEL:String = "buildingsCancel"; + public static const METRO_COMPLETE:String = "metroComplete"; + public static const METRO_TEXT_READY:String = "metroTextReady"; + public static const METRO_CANCEL:String = "metroCancel"; + public static const DISTRICT_COMPLETE:String = "districtComplete"; + public static const DISTRICT_CANCEL:String = "districtCancel"; + public static const TRAFFIC_COMPLETE:String = "trafficComplete"; + public static const TRAFFIC_CANCEL:String = "trafficCancel"; + public static const BATCH_COMPLETE:String = "batchComplete"; + public static const ATM_COMPLETE:String = "atmComplete"; + public static const ATM_CANCEL:String = "atmCancel"; + public static const CAMERA_COMPLETE:String = "cameraComplete"; + public static const CAMERA_CANCEL:String = "cameraCancel"; + public static const WIFI_COMPLETE:String = "wifiComplete"; + public static const WIFI_CANCEL:String = "wifiCancel"; + public static const ANTENNAS_COMPLETE:String = "antennasComplete"; + public static const ANTENNAS_CANCEL:String = "antennasCancel"; + public static const ELECTROMAGNETIC_COMPLETE:String = "electromagneticComplete"; + public static const ELECTROMAGNETIC_CANCEL:String = "electromagneticCancel"; + public static const TOILETS_COMPLETE:String = "toiletsComplete"; + public static const TOILETS_CANCEL:String = "toiletsCancel"; + public static const FLICKRS_COMPLETE:String = "flickrsComplete"; + public static const FLICKRS_CANCEL:String = "flickrsCancel"; + public static const FOUR_SQUARES_COMPLETE:String = "fourSquaresComplete"; + public static const FOUR_SQUARES_CANCEL:String = "fourSquaresCancel"; + public static const INSTAGRAMS_COMPLETE:String = "instagramComplete"; + public static const INSTAGRAMS_CANCEL:String = "instagramsCancel"; + public static const STATISTICS_COMPLETE:String = "statisticsComplete"; + public static const STATISTICS_CANCEL:String = "statisticsCancel"; + public static const VELO_STATIONS_COMPLETE:String = "veloStationsComplete"; + public static const VELO_STATIONS_CANCEL:String = "veloStationsCancel"; + public static const INETRNET_REALYS_COMPLETE:String = "inetrnetRealysComplete"; + public static const INETRNET_REALYS_CANCEL:String = "inetrnetRealysCancel"; + public static const MOBILES_COMPLETE:String = "mobilesComplete"; + public static const MOBILES_CANCEL:String = "mobilesCancel"; + public static const RADARS_COMPLETE:String = "radarsComplete"; + public static const RADARS_CANCEL:String = "radarsCancel"; + public static const ADS_COMPLETE:String = "adsComplete"; + public static const ADS_CANCEL:String = "adsCancel"; + public static const TWITTERS_COMPLETE:String = "twittersComplete"; + public static const TWITTERS_CANCEL:String = "twittersCancel"; + public static const PLACES_COMPLETE:String = "placesComplete"; + public static const PLACES_CANCEL:String = "placesCancel"; + public static const TOKEN_VALID:String = "tokenValid"; + + public var data; + + public function ServiceEvent(type:String, data=null, bubbles:Boolean=false, cancelable:Boolean=false){ + super(type, bubbles, cancelable); + this.data = data; + } + override public function clone():Event{ + return (new ServiceEvent(type, this.data, bubbles, cancelable)); + } + override public function toString():String{ + return (formatToString("ServiceEvent", "type", "data", "bubbles", "cancelable", "eventPhase")); + } + + } +}//package wd.events diff --git a/flash_decompiled/watchdog/wd/footer/CitySelector.as b/flash_decompiled/watchdog/wd/footer/CitySelector.as new file mode 100644 index 0000000..b67b675 --- /dev/null +++ b/flash_decompiled/watchdog/wd/footer/CitySelector.as @@ -0,0 +1,175 @@ +package wd.footer { + import __AS3__.vec.*; + import wd.providers.texts.*; + import wd.utils.*; + import flash.display.*; + import flash.events.*; + import wd.core.*; + import aze.motion.*; + import flash.net.*; + + public class CitySelector extends Sprite { + + public static const ITEM_HEIGHT:uint = 20; + public static const DEFAULT_WIDTH:uint = 70; + + private const ITEM_PADDING:uint = 2; + + private var items:Array; + private var arrow:DropListArrowAsset; + private var mouseZone:Shape; + + public function CitySelector(){ + super(); + this.items = new Array(); + this.build(); + this.defaultSelection(); + } + public function build():void{ + var item:CitySelectorItem; + var maxWidth:uint; + var c:CitySelectorItem; + var h:CitySelectorItem; + var items:Vector. = Vector.([new CitySelectorItem(CommonsText.paris, this.clickItemHandler, Locator.PARIS, CitySelector.DEFAULT_WIDTH, CitySelector.ITEM_HEIGHT), new CitySelectorItem(CommonsText.berlin, this.clickItemHandler, Locator.BERLIN, CitySelector.DEFAULT_WIDTH, CitySelector.ITEM_HEIGHT), new CitySelectorItem(CommonsText.london, this.clickItemHandler, Locator.LONDON, CitySelector.DEFAULT_WIDTH, CitySelector.ITEM_HEIGHT)]); + items.sort(this.citySort); + for each (item in items) { + this.addItem(item); + }; + maxWidth = 0; + for each (c in items) { + maxWidth = Math.max(maxWidth, c.width); + }; + for each (h in items) { + h.setWidth(maxWidth); + }; + this.mouseZone = new Shape(); + this.mouseZone.graphics.beginFill(0xFF0000, 0); + this.mouseZone.graphics.drawRect(0, 0, DEFAULT_WIDTH, ITEM_HEIGHT); + this.addChildAt(this.mouseZone, 0); + this.addEventListener(MouseEvent.ROLL_OVER, this.expand); + this.addEventListener(MouseEvent.ROLL_OUT, this.reduce); + this.arrow = new DropListArrowAsset(); + this.arrow.x = (maxWidth - 10); + this.arrow.y = ((ITEM_HEIGHT / 2) - 2); + this.addChild(this.arrow); + } + private function citySort(a:CitySelectorItem, b:CitySelectorItem):Number{ + if (a.id == Config.CITY){ + return (-1); + }; + if (b.id == Config.CITY){ + return (-1); + }; + return (0); + } + private function expand(e:Event):void{ + var c:CitySelectorItem; + this.mouseZone.height = (this.items.length * (ITEM_HEIGHT + this.ITEM_PADDING)); + this.mouseZone.y = (-((this.items.length - 1)) * (ITEM_HEIGHT + this.ITEM_PADDING)); + var l:uint; + for each (c in this.items) { + if (c.id == Locator.CITY){ + } else { + c.visible = true; + eaze(c).to(0.5, {alpha:1}); + c.y = (-((this.ITEM_PADDING + ITEM_HEIGHT)) * (l + 1)); + l++; + }; + }; + eaze(this.arrow).to(0.25, { + rotation:-180, + y:((ITEM_HEIGHT / 2) + 2) + }); + } + private function reduce(e:Event=null):void{ + var c:CitySelectorItem; + this.mouseZone.y = 0; + for each (c in this.items) { + if (c.id == Locator.CITY){ + } else { + c.visible = true; + eaze(c).to(0.5, {alpha:0}); + }; + }; + eaze(this.arrow).to(0.25, { + rotation:0, + y:((ITEM_HEIGHT / 2) - 2) + }); + } + private function addItem(item:CitySelectorItem):void{ + this.items.push(item); + this.addChild(item); + } + public function defaultSelection():void{ + var s:CitySelectorItem; + for each (s in this.items) { + if (s.id == Locator.CITY){ + s.visible = true; + this.select(s); + } else { + s.alpha = 0; + s.visible = false; + }; + }; + } + public function select(item:CitySelectorItem):void{ + item.y = 0; + item.visible = true; + } + private function clickItemHandler(e:Event):void{ + URLFormater.city = e.target.id; + URLFormater.shortenURL(URLFormater.changeCityUrl(e.target.id), this.goToURL); + this.select((e.target as CitySelectorItem)); + this.reduce(); + } + public function goToURL(url:String):void{ + navigateToURL(new URLRequest(url), "_self"); + } + + } +}//package wd.footer + +import flash.display.*; +import flash.events.*; +import wd.core.*; +import aze.motion.*; +import wd.hud.common.text.*; + +class CitySelectorItem extends Sprite { + + private var label:CustomTextField; + private var bg:Shape; + public var id:String; + + public function CitySelectorItem(label:String, clickFunc:Function, id:String, w:uint, h:uint){ + super(); + this.id = id; + this.label = new CustomTextField(label.toUpperCase(), "centerFooterItem"); + this.label.wordWrap = false; + this.addChild(this.label); + this.bg = new Shape(); + this.bg.graphics.beginFill(0x343434, 1); + this.bg.graphics.drawRoundRect(0, 0, (this.label.width + 30), h, 5, 5); + this.label.x = ((w - this.label.width) / 2); + this.label.y = ((h - this.label.height) / 2); + this.addChildAt(this.bg, 0); + if (Config.CITY != id){ + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.CLICK, clickFunc); + }; + } + public function setWidth(w:uint):void{ + this.bg.graphics.beginFill(0x343434, 1); + this.bg.graphics.drawRoundRect(0, 0, w, this.bg.height, 3, 3); + this.label.x = ((w - this.label.width) / 2); + } + public function hide(delay:Number):void{ + eaze(this).to(0.5, {alpha:0}).delay(delay); + } + public function show(delay:Number):void{ + this.visible = true; + eaze(this).to(0.5, {alpha:1}).delay(delay); + } + +} diff --git a/flash_decompiled/watchdog/wd/footer/Footer.as b/flash_decompiled/watchdog/wd/footer/Footer.as new file mode 100644 index 0000000..67372ac --- /dev/null +++ b/flash_decompiled/watchdog/wd/footer/Footer.as @@ -0,0 +1,298 @@ +package wd.footer { + import wd.providers.texts.*; + import wd.core.*; + import flash.display.*; + import wd.hud.common.graphics.*; + import wd.hud.aidenMessages.*; + import flash.net.*; + import flash.events.*; + import wd.http.*; + import wd.hud.*; + import wd.sound.*; + import aze.motion.*; + import wd.hud.common.text.*; + import wd.utils.*; + import flash.geom.*; + import wd.hud.popins.*; + + public class Footer extends HudElement { + + public static const FOOTER_HEIGHT:uint = 36; + + public static var tutoStartPoint:Point; + public static var tutoStartPoint2:Point; + + private const FOOTER_MARGIN:uint = 20; + private const LEFT_ITEMS_PADDING:uint = 26; + private const LEFT_FOOTER_STRUCTURE:Array; + + private var line:Line; + private var bg:Shape; + private var leftItemsContainer:Sprite; + private var citySelector:CitySelector; + private var shareMenu:ShareMenu; + protected var tuto:Sprite; + private var aidenMessages:AidenMessages; + private var helpButton:Sprite; + private var ubiBtn:Sprite; + private var sndBtnMask:Sprite; + private var HQLabel:CustomTextField; + private var _main:Main; + private var _popin:PopinsManager; + private var fullScreenAllowed:Boolean = true; + + public function Footer(main:Main){ + this.LEFT_FOOTER_STRUCTURE = [{ + label:FooterText.about, + func:this.clickAbout + }, { + label:FooterText.legals, + func:this.clickLegals + }, { + label:FooterText.help, + func:this.clickHelp, + isHelp:true + }, { + label:FooterText.languages, + func:this.clickLanguages + }, { + asset:"SOUND", + func:this.clickSound + }, { + asset:"FULLSCREEN", + func:this.clickFullscreen + }, { + label:FooterText.hq, + func:this.clickQualityswitch + }]; + super(); + this.main = main; + this.fullScreenAllowed = (Config.AGENT.toLowerCase().lastIndexOf("chrome") == -1); + this.bg = new Shape(); + this.bg.graphics.beginFill(0, 0.5); + this.bg.graphics.drawRect(0, 0, 1, FOOTER_HEIGHT); + this.addChild(this.bg); + addTweenInItem([this.bg, {alpha:0}, {alpha:1}]); + this.line = new Line(1, 0xFFFFFF); + this.line.alpha = 0.3; + this.addChild(this.line); + addTweenInItem([this.line, {scaleX:0}, {scaleX:1}]); + var logo:Sprite = new FooterLogoAsset(); + this.addChild(logo); + addTweenInItem([logo, {alpha:0}, {alpha:1}]); + var l:Sprite = new Sprite(); + l.graphics.lineStyle(1, 0xFFFFFF, 1, false, "normal", CapsStyle.SQUARE); + l.graphics.lineTo(0, 20); + l.y = ((FOOTER_HEIGHT - l.height) / 2); + l.x = ((logo.x + logo.width) + 17); + l.alpha = 0.5; + this.addChild(l); + addTweenInItem([l, {scaleY:0}, {scaleY:1}]); + var wdBtn:Sprite = this.makeItem({ + label:FooterText.watchdogs, + func:this.openWdLink + }); + wdBtn.x = (l.x + this.LEFT_ITEMS_PADDING); + wdBtn.y = ((FOOTER_HEIGHT - wdBtn.height) / 2); + addTweenInItem([wdBtn, {alpha:0}, {alpha:0.5}]); + this.addChild(wdBtn); + this.ubiBtn = this.makeItem({ + label:FooterText.ubisoft, + func:this.openUbiLink + }); + this.ubiBtn.x = ((wdBtn.x + wdBtn.width) + this.LEFT_ITEMS_PADDING); + this.ubiBtn.y = ((FOOTER_HEIGHT - this.ubiBtn.height) / 2); + addTweenInItem([this.ubiBtn, {alpha:0}, {alpha:0.5}]); + this.addChild(this.ubiBtn); + this.citySelector = new CitySelector(); + this.citySelector.y = ((FOOTER_HEIGHT - CitySelector.ITEM_HEIGHT) / 2); + this.addChild(this.citySelector); + addTweenInItem([this.citySelector, {alpha:0}, {alpha:1}]); + this.shareMenu = new ShareMenu(); + this.shareMenu.y = ((FOOTER_HEIGHT - ShareMenu.HEIGHT) / 2); + this.addChild(this.shareMenu); + addTweenInItem([this.shareMenu, {alpha:0}, {alpha:1}]); + this.aidenMessages = new AidenMessages(); + this.addChild(this.aidenMessages); + this.aidenMessages.start(); + this.makeLeftItems(); + tweenInBaseDelay = 0.1; + tweenInSpeed = 0.5; + tweenIn(); + } + private function openUbiLink(e:MouseEvent):void{ + navigateToURL(new URLRequest(FooterText.ubisoft_link), "_blank"); + } + private function openWdLink(e:MouseEvent):void{ + navigateToURL(new URLRequest(FooterText.watchdogs_link), "_blank"); + } + public function showIntroItems():void{ + } + public function showAllItems():void{ + } + public function reset():void{ + } + private function clickAbout(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_ABOUT); + this.dispatchEvent(new Event(HudEvents.OPEN_ABOUT_POPIN)); + } + private function clickLegals(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_LEGALS); + this.dispatchEvent(new Event(HudEvents.OPEN_LEGALS_POPIN)); + } + private function clickHelp(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_HELP); + this.dispatchEvent(new Event(HudEvents.OPEN_HELP_POPIN)); + } + private function clickLanguages(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_LANGUAGE); + this.dispatchEvent(new Event(HudEvents.OPEN_LANG_POPIN)); + } + private function clickQualityswitch(e:MouseEvent):void{ + AppState.isHQ = !(AppState.isHQ); + if (AppState.isHQ){ + this.HQLabel.text = FooterText.hq; + } else { + this.HQLabel.text = FooterText.lq; + }; + this.dispatchEvent(new Event(HudEvents.QUALITY_CHANGE)); + } + private function clickSound(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_SOUND); + SoundManager.swapMute(null); + if (SoundManager.MASTER_VOLUME == 0){ + eaze(this.sndBtnMask).to(0.5, { + y:10, + height:3 + }); + } else { + eaze(this.sndBtnMask).to(0.5, { + y:0, + height:14 + }); + }; + } + private function clickFullscreen(e:MouseEvent):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_FULLSCREEN); + this.main.stage.displayState = (((this.main.stage.displayState == StageDisplayState.FULL_SCREEN)) ? StageDisplayState.NORMAL : StageDisplayState.FULL_SCREEN); + this.main.onResize(); + } + private function makeLeftItems(isIntro:Boolean=true):void{ + var b:Sprite; + this.leftItemsContainer = new Sprite(); + var w:uint; + var i:uint; + while (i < this.LEFT_FOOTER_STRUCTURE.length) { + if (((this.fullScreenAllowed) || (!((this.LEFT_FOOTER_STRUCTURE[i].asset == "FULLSCREEN"))))){ + b = this.makeItem(this.LEFT_FOOTER_STRUCTURE[i]); + b.x = w; + w = (w + (b.width + this.LEFT_ITEMS_PADDING)); + b.alpha = 0; + if (this.LEFT_FOOTER_STRUCTURE[i].isHelp){ + this.helpButton = b; + }; + this.leftItemsContainer.addChild(b); + addTweenInItem([b, { + alpha:0, + y:20 + }, { + alpha:0.5, + y:0 + }]); + }; + i++; + }; + this.leftItemsContainer.y = ((FOOTER_HEIGHT - this.leftItemsContainer.height) / 2); + this.addChild(this.leftItemsContainer); + } + private function makeItem(data:Object):Sprite{ + var t:CustomTextField; + var _local4:Sprite; + var r:Sprite = new Sprite(); + if (data.label){ + t = new CustomTextField(data.label.toUpperCase(), "leftFooterItem"); + t.wordWrap = false; + r.addChild(t); + if (data.label == FooterText.hq){ + this.HQLabel = t; + t.text = ((SharedData.isHq) ? FooterText.hq : FooterText.lq); + }; + } else { + if (data.asset){ + switch (data.asset){ + case "SOUND": + _local4 = new SoundBtnAsset(); + this.sndBtnMask = new Sprite(); + this.sndBtnMask.graphics.beginFill(0xFF, 0.5); + this.sndBtnMask.graphics.drawRect(0, 0, _local4.width, _local4.height); + if (SoundManager.MASTER_VOLUME == 0){ + this.sndBtnMask.y = 10; + this.sndBtnMask.height = 3; + }; + r.graphics.beginFill(0xFF0000, 0); + r.graphics.drawRect(0, 0, _local4.width, _local4.height); + r.addChild(_local4); + r.addChild(this.sndBtnMask); + _local4.mask = this.sndBtnMask; + break; + case "FULLSCREEN": + r.addChild(new FullscreenBtnAsset()); + break; + }; + }; + }; + r.mouseChildren = false; + r.buttonMode = true; + r.addEventListener(MouseEvent.ROLL_OVER, this.leftItemRov); + r.addEventListener(MouseEvent.ROLL_OUT, this.leftItemRou); + r.addEventListener(MouseEvent.CLICK, data.func); + r.alpha = 0.5; + return (r); + } + private function leftItemRov(e:MouseEvent):void{ + eaze(e.target).to(0.7, {alpha:1}); + } + private function leftItemRou(e:MouseEvent):void{ + eaze(e.target).to(0.5, {alpha:0.5}); + } + public function resize(stageWidth:uint, stageHeight:uint):void{ + this.y = (stageHeight - FOOTER_HEIGHT); + this.x = this.FOOTER_MARGIN; + this.line.width = (stageWidth - (2 * this.FOOTER_MARGIN)); + this.bg.width = (stageWidth - (2 * this.FOOTER_MARGIN)); + this.leftItemsContainer.x = (this.bg.width - this.leftItemsContainer.width); + this.citySelector.x = (((this.ubiBtn.x + this.ubiBtn.width) + (((stageWidth - this.leftItemsContainer.width) - (this.ubiBtn.x + this.ubiBtn.width)) / 2)) - this.citySelector.width); + this.shareMenu.x = ((this.citySelector.x + this.citySelector.width) + 10); + if (this.tuto){ + this.tuto.x = this.citySelector.x; + }; + if (this.popin != null){ + this.popin.resize(); + }; + this.aidenMessages.resize(); + } + public function get main():Main{ + return (this._main); + } + public function set main(value:Main):void{ + this._main = value; + } + override public function set x(value:Number):void{ + super.x = value; + tutoStartPoint = new Point((((this.x + this.leftItemsContainer.x) + this.helpButton.x) + (this.helpButton.width / 2)), this.y); + tutoStartPoint2 = new Point(((this.x + this.citySelector.x) + (this.citySelector.width / 2)), this.y); + } + override public function set y(value:Number):void{ + super.y = value; + tutoStartPoint = new Point((((this.x + this.leftItemsContainer.x) + this.helpButton.x) + (this.helpButton.width / 2)), this.y); + tutoStartPoint2 = new Point(((this.x + this.citySelector.x) + (this.citySelector.width / 2)), this.y); + } + public function get popin():PopinsManager{ + return (this._popin); + } + public function set popin(value:PopinsManager):void{ + this._popin = value; + } + + } +}//package wd.footer diff --git a/flash_decompiled/watchdog/wd/footer/ShareMenu.as b/flash_decompiled/watchdog/wd/footer/ShareMenu.as new file mode 100644 index 0000000..0f7e3e3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/footer/ShareMenu.as @@ -0,0 +1,157 @@ +package wd.footer { + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.display.*; + import flash.events.*; + import wd.hud.*; + import flash.net.*; + import wd.http.*; + import wd.utils.*; + import aze.motion.*; + + public class ShareMenu extends Sprite { + + public static const HEIGHT:uint = 20; + public static const SQUARE_WIDTH:uint = 25; + + private const BG_ALPHA:Number = 0.32; + private const ITEM_PADDING:uint = 10; + private const config:Array; + + private var label:CustomTextField; + private var iconsContainer:Sprite; + private var bg:Shape; + private var mouseZone:Shape; + private var arrow:DropListArrowAsset; + public var bgRenderStep:Number = 0; + + public function ShareMenu(){ + var d:Object; + this.config = [{ + id:"mail", + icon:new ShareIconLinkAsset(), + click:this.clickMail + }, { + id:"gplus", + icon:new ShareIconGplusAsset(), + click:this.clickGplus + }, { + id:"fb", + icon:new ShareIconFbAsset(), + click:this.clickFb + }, { + id:"twitter", + icon:new ShareIconTwitterAsset(), + click:this.clickTwitter + }]; + super(); + this.label = new CustomTextField(FooterText.share.toUpperCase(), "centerFooterItem"); + this.label.wordWrap = false; + this.label.y = ((HEIGHT - this.label.height) / 2); + this.addChild(this.label); + this.bg = new Shape(); + this.bg.graphics.beginFill(0xFFFFFF, this.BG_ALPHA); + this.bg.graphics.drawRoundRect(0, 0, SQUARE_WIDTH, HEIGHT, 4, 4); + this.addChild(this.bg); + this.bg.x = ((this.label.x + this.label.width) + 5); + this.iconsContainer = new Sprite(); + this.iconsContainer.visible = false; + this.iconsContainer.y = ((-((HEIGHT + this.ITEM_PADDING)) * this.config.length) + 5); + this.iconsContainer.x = (this.bg.x + 4); + this.addChild(this.iconsContainer); + var y0:int; + for each (d in this.config) { + this.addItem(d, y0); + y0 = (y0 + (HEIGHT + this.ITEM_PADDING)); + }; + this.mouseZone = new Shape(); + this.mouseZone.graphics.beginFill(0xFF0000, 0); + this.mouseZone.graphics.drawRect(0, 0, ((this.label.width + SQUARE_WIDTH) + 5), HEIGHT); + this.addChildAt(this.mouseZone, 0); + this.addEventListener(MouseEvent.ROLL_OVER, this.expand); + this.addEventListener(MouseEvent.ROLL_OUT, this.reduce); + this.arrow = new DropListArrowAsset(); + this.arrow.x = (this.bg.x + (SQUARE_WIDTH / 2)); + this.arrow.y = ((HEIGHT / 2) - 2); + this.addChild(this.arrow); + } + private function addItem(d:Object, posY:uint):void{ + var it:ShareMenuItem = new ShareMenuItem(d.id, d.icon, d.click, HEIGHT, HEIGHT); + it.y = posY; + this.iconsContainer.addChild(it); + } + private function renderBg():void{ + var h:int = (HEIGHT + (this.bgRenderStep * ((this.mouseZone.height - HEIGHT) - 10))); + var dy:int = ((-((HEIGHT + this.ITEM_PADDING)) * this.config.length) * this.bgRenderStep); + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0xFFFFFF, this.BG_ALPHA); + this.bg.graphics.drawRoundRect(0, 0, SQUARE_WIDTH, h, 3, 3); + this.bg.y = dy; + } + private function clickMail(e:Event):void{ + this.dispatchEvent(new Event(HudEvents.OPEN_SHARE_LINK_POPIN, true)); + } + private function clickMailCallBack(shortened:String):void{ + navigateToURL(new URLRequest(((("mailto:?subject=" + ShareText.FBGtitle) + "&body=") + shortened))); + } + private function clickGplus(e:Event):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_SHARE_GOOGLE); + URLFormater.shorten(this.googleCallBack); + } + private function googleCallBack(shortened:String):void{ + JsPopup.open(((("https://plus.google.com/share?url=" + shortened) + "&text=") + URLFormater.replaceTags(ShareText.TwitterText))); + } + private function clickTwitter(e:Event):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_SHARE_TWITTER); + URLFormater.shorten(this.twitterCallBack, URLFormater.SHARE_TO_TWITTER); + } + private function twitterCallBack(shortened:String):void{ + JsPopup.open(((("https://twitter.com/intent/tweet?url=" + shortened) + "&text=") + URLFormater.replaceTags(ShareText.TwitterText))); + } + private function clickFb(e:Event):void{ + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_SHARE_FACEBOOK); + FacebookConnector.share(); + } + private function expand(e:Event):void{ + this.mouseZone.height = ((HEIGHT + this.ITEM_PADDING) * (this.config.length + 1)); + this.mouseZone.y = (-((HEIGHT + this.ITEM_PADDING)) * this.config.length); + this.iconsContainer.visible = true; + eaze(this.arrow).to(0.25, { + rotation:-180, + y:((HEIGHT / 2) + 2) + }); + eaze(this).to(0.25, {bgRenderStep:1}).onUpdate(this.renderBg); + eaze(this.iconsContainer).delay(0.25).to(0.25, {alpha:1}); + } + private function reduce(e:Event=null):void{ + this.mouseZone.y = 0; + eaze(this.iconsContainer).to(0.25, {alpha:0}); + eaze(this).delay(0.25).to(0.25, {bgRenderStep:0}).onUpdate(this.renderBg); + eaze(this.arrow).to(0.25, { + rotation:0, + y:((HEIGHT / 2) - 2) + }); + } + + } +}//package wd.footer + +import flash.display.*; +import flash.events.*; + +class ShareMenuItem extends Sprite { + + private var id:String; + + public function ShareMenuItem(id:String, icon:Sprite, clickFunc:Function, w:uint, h:uint){ + super(); + var sh:Shape = new Shape(); + sh.graphics.beginFill(0xFF0000, 0); + sh.graphics.drawRect(0, 0, w, h); + this.addChild(sh); + this.addChild(icon); + this.buttonMode = true; + this.addEventListener(MouseEvent.CLICK, clickFunc); + this.addChild(icon); + } +} diff --git a/flash_decompiled/watchdog/wd/http/BuildingService.as b/flash_decompiled/watchdog/wd/http/BuildingService.as new file mode 100644 index 0000000..7d3c29a --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/BuildingService.as @@ -0,0 +1,85 @@ +package wd.http { + import flash.net.*; + import __AS3__.vec.*; + import wd.d3.geom.building.*; + import wd.events.*; + import flash.events.*; + import flash.geom.*; + + public class BuildingService extends Service { + + public static var indices:Vector.; + public static var vertices:Vector.; + public static var height:Number; + public static var lon:Number; + public static var lat:Number; + public static var id:uint; + public static var debug:Boolean = false; + + public var rect:Rectangle; + public var buildings:Vector.; + private var responder:Responder; + private var params:ServiceConstants; + private var valid:Boolean; + private var buildings_ids:Vector.; + + public function BuildingService(){ + super(); + this.params = initServiceConstants(); + this.responder = new Responder(this.onComplete, this.onCancel); + this.buildings_ids = new Vector.(); + } + public function callBuildings(flush:Boolean=false):void{ + if (flush){ + resetServiceConstants(this.params); + }; + customCall(METHOD_BUILDINGS, this.responder, this.params); + } + private function onComplete(result:Object):void{ + var buildingInformation:Array; + var i:int; + var buildingInfo:Object; + var p:*; + var item_count:int = result[ServiceConstants.KEY_ITEM_COUNT]; + if (debug){ + trace(this, "count", item_count); + }; + if (!(isNaN(item_count))){ + buildingInformation = (result.buildings as Array); + i = 0; + while (i < buildingInformation.length) { + buildingInfo = buildingInformation[i]; + if (debug){ + for (p in buildingInfo) { + trace("\t", p, "->", buildingInfo[p]); + }; + }; + id = buildingInfo[ServiceConstants.KEY_BUILDING_ID]; + if (BuildingMesh3.buildingExist(id)){ + } else { + lon = buildingInfo[ServiceConstants.KEY_LONGITUDE]; + lat = buildingInfo[ServiceConstants.KEY_LATITUDE]; + height = buildingInfo[ServiceConstants.KEY_BUILDING_HEIGHT]; + this.valid = buildingInfo[ServiceConstants.KEY_COMPLETE]; + indices = Vector.(buildingInfo[ServiceConstants.KEY_INDICES]); + vertices = Vector.(buildingInfo[ServiceConstants.KEY_VERTICES]); + new Building3(id, vertices, indices, height, lon, lat, this.valid); + }; + i++; + }; + }; + this.params[ServiceConstants.PAGE] = result.next_page; + dispatchEvent(new ServiceEvent(ServiceEvent.BUILDINGS_COMPLETE, result)); + } + private function onCancel(fault:Object):void{ + var p:*; + if (debug){ + for (p in fault) { + trace("\t", p, "->", fault[p]); + }; + }; + dispatchEvent(new Event(Event.CANCEL)); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/DataService.as b/flash_decompiled/watchdog/wd/http/DataService.as new file mode 100644 index 0000000..85c95d0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/DataService.as @@ -0,0 +1,276 @@ +package wd.http { + import __AS3__.vec.*; + import wd.hud.items.*; + import flash.net.*; + import wd.events.*; + import wd.hud.items.datatype.*; + import wd.hud.*; + import flash.utils.*; + import wd.core.*; + + public class DataService extends Service { + + public static var debug:Boolean = false; + + private var responder:Responder; + private var param:ServiceConstants; + private var twitterService:TwitterService; + private var currentType:int; + private var currentResultArrayName:String; + private var currentMethod:String; + private var currentCompleteEvent:String; + private var currentCancelEvent:String; + private var pool:Vector.; + private var addInterval:uint; + private var typeIterator:int = -1; + private var types:Vector.; + private var ready:Boolean = true; + private var reload:Boolean = false; + + public function DataService(){ + this.types = Vector.([DataType.ADS, DataType.ATMS, DataType.CAMERAS, DataType.ELECTROMAGNETICS, DataType.INTERNET_RELAYS, DataType.FLICKRS, DataType.FOUR_SQUARE, DataType.INSTAGRAMS, DataType.MOBILES, DataType.RADARS, DataType.TOILETS, DataType.TRAFFIC_LIGHTS, DataType.WIFIS, DataType.TWITTERS]); + super(); + this.pool = new Vector.(); + this.param = Service.initServiceConstants(); + this.responder = new Responder(this.onComplete, this.onCancel); + this.twitterService = new TwitterService(); + this.twitterService.addEventListener(ServiceEvent.TWITTERS_COMPLETE, this.onTwitterComplete); + } + private function onTwitterComplete(e:ServiceEvent):void{ + var tweet:TwitterTrackerData; + var i:int; + while (i < e.data.length) { + tweet = (e.data[i] as TwitterTrackerData); + if (tweet.isValid){ + Hud.addItem(tweet); + } else { + TrackerData.remove(tweet.id); + }; + i++; + }; + } + public function batchCall():void{ + if (!(this.ready)){ + this.reload = true; + return; + }; + this.ready = false; + this.typeIterator = -1; + this.callNext(true); + clearInterval(this.addInterval); + this.addInterval = setInterval(this.addItem, 25); + } + private function callNext(flush:Boolean=false):void{ + this.typeIterator++; + if (this.typeIterator >= this.types.length){ + dispatchEvent(new ServiceEvent(ServiceEvent.BATCH_COMPLETE)); + this.ready = true; + if (this.reload){ + this.reload = false; + this.batchCall(); + }; + return; + }; + if (!(FilterAvailability.instance.isActive(this.types[this.typeIterator]))){ + return (this.callNext(flush)); + }; + this.call(this.types[this.typeIterator], flush); + } + private function call(type:int, flush:Boolean=false):void{ + if (flush){ + resetServiceConstants(this.param); + this.param[ServiceConstants.PAGE] = 0; + this.param["radius"] = Config.SETTINGS_DATA_RADIUS; + this.param["item_per_page"] = Config.SETTINGS_DATA_PAGINATION; + }; + this.currentType = type; + switch (type){ + case DataType.ADS: + this.currentMethod = Service.METHOD_ADS; + this.currentResultArrayName = "advertisements"; + this.currentCompleteEvent = ServiceEvent.ADS_COMPLETE; + this.currentCancelEvent = ServiceEvent.ADS_CANCEL; + break; + case DataType.ATMS: + this.currentMethod = Service.METHOD_ATM; + this.currentResultArrayName = "atms"; + this.currentCompleteEvent = ServiceEvent.ATM_COMPLETE; + this.currentCancelEvent = ServiceEvent.ATM_CANCEL; + break; + case DataType.CAMERAS: + this.currentMethod = Service.METHOD_CAMERAS; + this.currentResultArrayName = "cameras"; + this.currentCompleteEvent = ServiceEvent.CAMERA_COMPLETE; + this.currentCancelEvent = ServiceEvent.CAMERA_CANCEL; + break; + case DataType.ELECTROMAGNETICS: + this.currentMethod = Service.METHOD_ELECTROMAGNETIC; + this.currentResultArrayName = "electromagnicals"; + this.currentCompleteEvent = ServiceEvent.ELECTROMAGNETIC_COMPLETE; + this.currentCancelEvent = ServiceEvent.ELECTROMAGNETIC_CANCEL; + break; + case DataType.FLICKRS: + this.currentMethod = Service.METHOD_FLICKRS; + this.currentResultArrayName = "flickrs"; + this.currentCompleteEvent = ServiceEvent.FLICKRS_COMPLETE; + this.currentCancelEvent = ServiceEvent.FLICKRS_CANCEL; + break; + case DataType.FOUR_SQUARE: + this.currentMethod = Service.METHOD_FOUR_SQUARE; + this.currentResultArrayName = "places"; + this.currentCompleteEvent = ServiceEvent.FOUR_SQUARES_COMPLETE; + this.currentCancelEvent = ServiceEvent.FOUR_SQUARES_CANCEL; + break; + case DataType.INTERNET_RELAYS: + this.currentMethod = Service.METHOD_INTERNET_RELAYS; + this.currentResultArrayName = "nras"; + this.currentCompleteEvent = ServiceEvent.INETRNET_REALYS_COMPLETE; + this.currentCancelEvent = ServiceEvent.INETRNET_REALYS_CANCEL; + break; + case DataType.INSTAGRAMS: + this.currentMethod = Service.METHOD_INSTAGRAMS; + this.currentResultArrayName = "instagrams"; + this.currentCompleteEvent = ServiceEvent.INSTAGRAMS_COMPLETE; + this.currentCancelEvent = ServiceEvent.INSTAGRAMS_CANCEL; + break; + case DataType.MOBILES: + this.currentMethod = Service.METHOD_MOBILE; + this.currentResultArrayName = "antennas"; + this.currentCompleteEvent = ServiceEvent.MOBILES_COMPLETE; + this.currentCancelEvent = ServiceEvent.MOBILES_CANCEL; + break; + case DataType.RADARS: + this.currentMethod = Service.METHOD_RADARS; + this.currentResultArrayName = "radars"; + this.currentCompleteEvent = ServiceEvent.RADARS_COMPLETE; + this.currentCancelEvent = ServiceEvent.RADARS_CANCEL; + break; + case DataType.TOILETS: + this.currentMethod = Service.METHOD_TOILETS; + this.currentResultArrayName = "toilets"; + this.currentCompleteEvent = ServiceEvent.TOILETS_COMPLETE; + this.currentCancelEvent = ServiceEvent.TOILETS_CANCEL; + break; + case DataType.TRAFFIC_LIGHTS: + this.currentMethod = Service.METHOD_TRAFFIC; + this.currentResultArrayName = "signals"; + this.currentCompleteEvent = ServiceEvent.TRAFFIC_COMPLETE; + this.currentCancelEvent = ServiceEvent.TRAFFIC_CANCEL; + break; + case DataType.TWITTERS: + this.currentMethod = Service.METHOD_TWITTERS; + this.currentResultArrayName = "twitters"; + this.currentCompleteEvent = ServiceEvent.TWITTERS_COMPLETE; + this.currentCancelEvent = ServiceEvent.TWITTERS_CANCEL; + break; + case DataType.WIFIS: + this.currentMethod = Service.METHOD_WIFI; + this.currentResultArrayName = "wifis"; + this.currentCompleteEvent = ServiceEvent.WIFI_COMPLETE; + this.currentCancelEvent = ServiceEvent.WIFI_CANCEL; + break; + }; + customCall(this.currentMethod, this.responder, this.param); + } + private function onComplete(result:Object):void{ + if (Config.DEBUG_SERVICES){ + trace("\t\tDataService.onComplete", DataType.toString(this.currentType), "result > ", result[this.currentResultArrayName], "<"); + if (result[this.currentResultArrayName] != null){ + trace("\tDS results: ", DataType.toString(this.currentType), result[this.currentResultArrayName].length); + }; + }; + this.addPins(this.currentType, result[this.currentResultArrayName]); + if (((false) && (!((result.next_page == null))))){ + if (Config.DEBUG_SERVICES){ + trace("\t", this, DataType.toString(this.currentType), "complete call next page:", result.next_page); + }; + this.param[ServiceConstants.PAGE] = result.next_page; + this.call(this.currentType); + } else { + if (Config.DEBUG_SERVICES){ + trace("\t", this, DataType.toString(this.currentType), "all done next type"); + trace("-----------------------------------"); + }; + dispatchEvent(new ServiceEvent(this.currentCompleteEvent, result)); + this.callNext(); + }; + } + private function onCancel(fault:Object):void{ + if (Config.DEBUG_SERVICES){ + trace(this, DataType.toString(this.currentType), "cancel"); + }; + dispatchEvent(new ServiceEvent(this.currentCancelEvent)); + this.callNext(); + } + private function addPins(type:int, array:Array):void{ + var _p:*; + var baseClass:Class; + var extra:*; + var trackerData:TrackerData; + var trackerDataBaseClass:String = ""; + switch (type){ + case DataType.ADS: + trackerDataBaseClass = getQualifiedClassName(AdsTrackerData); + break; + case DataType.ATMS: + trackerDataBaseClass = getQualifiedClassName(AtmTrackerData); + break; + case DataType.CAMERAS: + trackerDataBaseClass = getQualifiedClassName(CamerasTrackerData); + break; + case DataType.ELECTROMAGNETICS: + trackerDataBaseClass = getQualifiedClassName(ElectroMagneticTrackerData); + break; + case DataType.FLICKRS: + trackerDataBaseClass = getQualifiedClassName(FlickrTrackerData); + break; + case DataType.FOUR_SQUARE: + trackerDataBaseClass = getQualifiedClassName(FoursquareTrackerData); + break; + case DataType.INTERNET_RELAYS: + trackerDataBaseClass = getQualifiedClassName(InternetRelaysTrackerData); + break; + case DataType.INSTAGRAMS: + trackerDataBaseClass = getQualifiedClassName(InstagramTrackerData); + break; + case DataType.MOBILES: + trackerDataBaseClass = getQualifiedClassName(MobilesTrackerData); + break; + case DataType.TOILETS: + trackerDataBaseClass = getQualifiedClassName(ToiletsTrackerData); + break; + case DataType.TWITTERS: + trackerDataBaseClass = getQualifiedClassName(TwitterTrackerData); + break; + default: + trackerDataBaseClass = "wd.hud.items.TrackerData"; + }; + for (_p in array) { + if (TrackerData.exists(array[_p][ServiceConstants.KEY_ID])){ + } else { + baseClass = (getDefinitionByName(trackerDataBaseClass) as Class); + extra = ((array[_p].tags) || (array[_p].info)); + if (extra == null){ + extra = array[_p]; + }; + trackerData = new baseClass(type, array[_p][ServiceConstants.KEY_ID], array[_p][ServiceConstants.KEY_LONGITUDE], array[_p][ServiceConstants.KEY_LATITUDE], extra); + if (trackerData.isValid){ + Hud.addItem(trackerData); + } else { + TrackerData.remove(array[_p][ServiceConstants.KEY_ID]); + }; + }; + }; + } + private function addItem():void{ + var i:int; + while (i < 10) { + if ((((this.pool.length > 0)) && (!((Hud.getInstance() == null))))){ + Hud.addItem(this.pool.splice(int((Math.random() * this.pool.length)), 1)[0]); + }; + i++; + }; + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/DataType.as b/flash_decompiled/watchdog/wd/http/DataType.as new file mode 100644 index 0000000..d847ac1 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/DataType.as @@ -0,0 +1,89 @@ +package wd.http { + import __AS3__.vec.*; + import wd.providers.texts.*; + + public class DataType { + + public static const ADS:int = (1 << shift++); + public static const ANTENNAS:int = (1 << shift++); + public static const ATMS:int = (1 << shift++); + public static const CAMERAS:int = (1 << shift++); + public static const ELECTROMAGNETICS:int = (1 << shift++); + public static const FOUR_SQUARE:int = (1 << shift++); + public static const FLICKRS:int = (1 << shift++); + public static const INSTAGRAMS:int = (1 << shift++); + public static const INTERNET_RELAYS:int = (1 << shift++); + public static const METRO_STATIONS:int = (1 << shift++); + public static const MOBILES:int = (1 << shift++); + public static const PLACES:int = (1 << shift++); + public static const RADARS:int = (1 << shift++); + public static const TRAFFIC_LIGHTS:int = (1 << shift++); + public static const TRAINS:int = (1 << shift++); + public static const TOILETS:int = (1 << shift++); + public static const TWITTERS:int = (1 << shift++); + public static const VELO_STATIONS:int = (1 << shift++); + public static const WIFIS:int = (1 << shift++); + public static const LIST:Vector. = Vector.([ADS, ATMS, CAMERAS, ELECTROMAGNETICS, FOUR_SQUARE, FLICKRS, INSTAGRAMS, INTERNET_RELAYS, METRO_STATIONS, MOBILES, PLACES, RADARS, TRAFFIC_LIGHTS, TRAINS, TOILETS, TWITTERS, VELO_STATIONS, WIFIS]); + + private static var shift:int = 0; + + public static function toString(type:int):String{ + if (type == ADS){ + return (DataLabel.ad); + }; + if (type == ATMS){ + return (DataLabel.atm); + }; + if (type == CAMERAS){ + return (DataLabel.cameras); + }; + if (type == ELECTROMAGNETICS){ + return (DataLabel.electromagnetics); + }; + if (type == FLICKRS){ + return (DataLabel.flickr); + }; + if (type == FOUR_SQUARE){ + return (DataLabel.fourSquare); + }; + if (type == INSTAGRAMS){ + return (DataLabel.instagram); + }; + if (type == INTERNET_RELAYS){ + return (DataLabel.internetRelays); + }; + if (type == METRO_STATIONS){ + return (DataLabel.metro); + }; + if (type == MOBILES){ + return (DataLabel.mobile); + }; + if (type == PLACES){ + return ("PLACES"); + }; + if (type == RADARS){ + return ("RADARS"); + }; + if (type == TOILETS){ + return (DataLabel.toilets); + }; + if (type == TRAFFIC_LIGHTS){ + return (DataLabel.traffic); + }; + if (type == TRAINS){ + return ("TRAINS"); + }; + if (type == TWITTERS){ + return (DataLabel.twitter); + }; + if (type == VELO_STATIONS){ + return (DataLabel.bicycle); + }; + if (type == WIFIS){ + return (DataLabel.wifiHotSpots); + }; + return (""); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/DistrictService.as b/flash_decompiled/watchdog/wd/http/DistrictService.as new file mode 100644 index 0000000..2ab0706 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/DistrictService.as @@ -0,0 +1,39 @@ +package wd.http { + import flash.net.*; + import wd.utils.*; + import wd.hud.panels.district.*; + import wd.events.*; + + public class DistrictService extends Service { + + public static var debug:Boolean = true; + + private var districtResponder:Responder; + private var statsResponder:Responder; + + public function DistrictService(){ + super(); + this.districtResponder = new Responder(this.onDistrictComplete, this.onDistrictCancel); + this.statsResponder = new Responder(this.onStatsComplete, this.onStatsCancel); + } + public function call():void{ + customCall(Service.METHOD_DISTRICT, this.districtResponder, Locator.CITY); + } + public function getStats(district:District):void{ + connection.call(Service.METHOD_STAISTICS, this.statsResponder, district.name, Locator.CITY); + } + private function onDistrictComplete(result:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.DISTRICT_COMPLETE, result)); + } + private function onDistrictCancel(fault:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.DISTRICT_CANCEL)); + } + private function onStatsComplete(result:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.STATISTICS_COMPLETE, result)); + } + private function onStatsCancel(fault:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.STATISTICS_CANCEL, fault)); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/FacebookConnector.as b/flash_decompiled/watchdog/wd/http/FacebookConnector.as new file mode 100644 index 0000000..a5cf325 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/FacebookConnector.as @@ -0,0 +1,118 @@ +package wd.http { + import wd.core.*; + import flash.utils.*; + import flash.events.*; + import com.facebook.graph.*; + import com.facebook.graph.data.*; + import wd.utils.*; + import wd.providers.texts.*; + + public class FacebookConnector { + + public static const FB_LOGGED_IN:String = "FB_LOGGED_IN"; + public static const FB_NOT_LOGGED:String = "FB_NOT_LOGGED"; + public static const FB_LOGIN_FAIL:String = "FB_LOGIN_FAIL"; + public static const FB_ON_DATA:String = "FB_ON_DATA"; + public static const FB_ERROR:String = "FB_ERROR"; + + public static var isConnected:Boolean = false; + public static var fbSession:FacebookSession; + public static var evtDispatcher:EventDispatcher; + public static var currentData:Object; + private static var userId:String; + + public function FacebookConnector(){ + super(); + } + public static function init():void{ + trace(("FacebookConnector Init: " + Config.FACEBOOK_APP_ID)); + setTimeout(FacebookConnector.initFb, 3000); + evtDispatcher = new EventDispatcher(); + } + public static function initFb():void{ + Facebook.init(Config.FACEBOOK_APP_ID, onInit); + } + public static function handleFacebookFriendsLoaded(result:Object, fail:Object):void{ + trace(("handleFacebookFriendsLoaded : " + result)); + trace(("handleFacebookFriendsLoaded fail : " + fail)); + } + public static function onInit(result:Object, fail:Object):void{ + var i:*; + trace(("onInit result : " + result)); + if (result){ + setConnected((result as FacebookSession)); + trace(("result " + result)); + } else { + isConnected = false; + trace(("fail : " + fail)); + for (i in fail) { + trace(((i + ":") + fail[i])); + }; + evtDispatcher.dispatchEvent(new Event(FB_NOT_LOGGED)); + }; + } + private static function setConnected(_fbSession:FacebookSession):void{ + isConnected = true; + fbSession = _fbSession; + trace(("fbSession : " + fbSession)); + evtDispatcher.dispatchEvent(new Event(FB_LOGGED_IN)); + } + public static function login():void{ + Facebook.login(onLoginResult, {scope:"user_work_history,user_birthday"}); + } + public static function getUserData():void{ + Facebook.api("/me", onData); + } + public static function onData(result:Object, fail:Object):void{ + var i:*; + if (result){ + currentData = result; + evtDispatcher.dispatchEvent(new Event(FB_ON_DATA)); + } else { + trace(("fail : " + fail)); + for (i in fail) { + trace(((i + ":") + fail[i])); + }; + evtDispatcher.dispatchEvent(new Event(FB_ERROR)); + }; + } + private static function onLoginResult(result:Object, fail:Object):void{ + if (result){ + setConnected((result as FacebookSession)); + } else { + isConnected = false; + evtDispatcher.dispatchEvent(new Event(FB_LOGIN_FAIL)); + }; + } + public static function share():void{ + URLFormater.shorten(fbCallback, URLFormater.SHARE_TO_FACEBOOK); + } + private static function fbCallback(shorten:String):void{ + var shareOpt:Object; + if (isConnected){ + shareOpt = { + method:"feed", + name:ShareText.FBGtitle, + link:shorten, + picture:(Config.ROOT_URL + ShareText.FBGimage), + caption:ShareText.FBGtitle, + description:replaceTags(ShareText.FBGtext) + }; + Facebook.ui("feed", shareOpt, shareCb, "popup"); + } else { + JsPopup.open(("https://www.facebook.com/sharer.php?u=" + shorten)); + }; + } + private static function replaceTags(input:String):String{ + return (URLFormater.replaceTags(input)); + } + public static function shareCb(result:Object):void{ + if (result){ + trace("[share] Success"); + } else { + trace("[share] Fail"); + }; + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/GoogleAnalytics.as b/flash_decompiled/watchdog/wd/http/GoogleAnalytics.as new file mode 100644 index 0000000..87fc3df --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/GoogleAnalytics.as @@ -0,0 +1,197 @@ +package wd.http { + import flash.utils.*; + import flash.external.*; + import wd.core.*; + + public class GoogleAnalytics { + + public static const APP_TOPVIEW:String = "/app/topview"; + public static const APP_MAP:String = "/app/map"; + public static const TUTORIAL_CLOSE:String = "/tutorial/close"; + public static const TUTORIAL_FIRST:String = "/tutorial/first"; + public static const TUTORIAL_SECOND:String = "/tutorial/second"; + public static const TUTORIAL_THIRD:String = "/tutorial/third"; + public static const TUTORIAL_FOURTH:String = "/tutorial/fourth"; + public static const TUTORIAL_FIFTH:String = "/tutorial/fifth"; + public static const TUTORIAL_SIXTH:String = "/tutorial/sixth"; + public static const TUTORIAL_SEVENTH:String = "/tutorial/seventh"; + public static const APP_FACEBOOK:String = "/app/facebook"; + public static const APP_FACEBOOK_DISCLAIMER:String = "/app/facebook/disclaimer"; + public static const APP_FACEBOOK_CONNECTED:String = "/app/facebook/connected"; + public static const FOOTER_WD:String = "/footer/wd"; + public static const FOOTER_UBI:String = "/footer/ubi"; + public static const FOOTER_SHARE_TWITTER:String = "/footer/share/twitter"; + public static const FOOTER_SHARE_FACEBOOK:String = "/footer/share/facebook"; + public static const FOOTER_SHARE_GOOGLE:String = "/footer/share/google"; + public static const FOOTER_SHARE_URLCOPY:String = "/footer/share/urlcopy"; + public static const FOOTER_ABOUT:String = "/footer/about"; + public static const FOOTER_LEGALS:String = "/footer/legals"; + public static const FOOTER_HELP:String = "/footer/help"; + public static const FOOTER_LANGUAGE:String = "/footer/language"; + public static const FOOTER_SOUND:String = "/footer/sound"; + public static const FOOTER_FULLSCREEN:String = "/footer/fullscreen"; + public static const MAP_ITEM_CLICK:String = "mapItemClick"; + public static const FB_ITEM_CLICK:String = "fbItemClick"; + public static const PAGE_VIEW:String = "_pageView"; + public static const TRACK_EVENT:String = "_trackEvent"; + + public static var TRANSPORTS:String = "transports"; + public static var NETWORKS:String = "networks"; + public static var STREET_FURNITURE:String = "street furnitures"; + public static var SOCIAL:String = "social"; + private static var tags:Dictionary = new Dictionary(); + + private var campaignId:String; + + public function GoogleAnalytics(xml:XMLList){ + var t:XML; + var tag:GoogleAnalyticsTag; + super(); + TRANSPORTS = ((xml.transports) || ("transports")); + NETWORKS = ((xml.networks) || ("networks")); + STREET_FURNITURE = ((xml.streetFurniture) || ("street furnitures")); + SOCIAL = ((xml.social) || ("social")); + for each (t in xml.tag) { + tag = new GoogleAnalyticsTag(t.@id, t.@type, t.@format); + tags[tag.id] = tag; + }; + } + public static function callPageView(value:String):void{ + var tag:GoogleAnalyticsTag = tags[value]; + if (ExternalInterface.available){ + ExternalInterface.call("pushPageview", tag.format); + }; + } + public static function mapItemClick(datatype:int=0):void{ + var str:String = (Config.CITY + ","); + str = (str + (getCategoryFromData(datatype) + ",")); + str = (str + (getRawDataName(datatype) + ",")); + str = (str + "0"); + if (ExternalInterface.available){ + ExternalInterface.call("pushEvent", Config.CITY, getCategoryFromData(datatype), getRawDataName(datatype), "0"); + }; + } + public static function FBItemClick(datatype:int=0):void{ + var tag:GoogleAnalyticsTag = tags[FB_ITEM_CLICK]; + var str:String = tag.format.replace("city", Config.CITY); + if (ExternalInterface.available){ + ExternalInterface.call("pushEvent", str); + }; + } + private static function getCategoryFromData(type:int):String{ + if (type == DataType.ADS){ + return (STREET_FURNITURE); + }; + if (type == DataType.ATMS){ + return (STREET_FURNITURE); + }; + if (type == DataType.CAMERAS){ + return (STREET_FURNITURE); + }; + if (type == DataType.ELECTROMAGNETICS){ + return (NETWORKS); + }; + if (type == DataType.FLICKRS){ + return (SOCIAL); + }; + if (type == DataType.FOUR_SQUARE){ + return (SOCIAL); + }; + if (type == DataType.INSTAGRAMS){ + return (SOCIAL); + }; + if (type == DataType.INTERNET_RELAYS){ + return (NETWORKS); + }; + if (type == DataType.METRO_STATIONS){ + return (TRANSPORTS); + }; + if (type == DataType.MOBILES){ + return (NETWORKS); + }; + if (type == DataType.PLACES){ + return ("places"); + }; + if (type == DataType.RADARS){ + return (STREET_FURNITURE); + }; + if (type == DataType.TOILETS){ + return (STREET_FURNITURE); + }; + if (type == DataType.TRAFFIC_LIGHTS){ + return (STREET_FURNITURE); + }; + if (type == DataType.TRAINS){ + return (TRANSPORTS); + }; + if (type == DataType.TWITTERS){ + return (SOCIAL); + }; + if (type == DataType.VELO_STATIONS){ + return (TRANSPORTS); + }; + if (type == DataType.WIFIS){ + return (NETWORKS); + }; + return (""); + } + private static function getRawDataName(type:int):String{ + if (type == DataType.ADS){ + return ("ads"); + }; + if (type == DataType.ATMS){ + return ("atms"); + }; + if (type == DataType.CAMERAS){ + return ("cameras"); + }; + if (type == DataType.ELECTROMAGNETICS){ + return ("electromagnetics"); + }; + if (type == DataType.FLICKRS){ + return ("flickrs"); + }; + if (type == DataType.FOUR_SQUARE){ + return ("fourSquare"); + }; + if (type == DataType.INSTAGRAMS){ + return ("instagram"); + }; + if (type == DataType.INTERNET_RELAYS){ + return ("internetRelays"); + }; + if (type == DataType.METRO_STATIONS){ + return ("metro"); + }; + if (type == DataType.MOBILES){ + return ("mobile"); + }; + if (type == DataType.PLACES){ + return ("places"); + }; + if (type == DataType.RADARS){ + return ("radars"); + }; + if (type == DataType.TOILETS){ + return ("toilets"); + }; + if (type == DataType.TRAFFIC_LIGHTS){ + return ("traffic"); + }; + if (type == DataType.TRAINS){ + return ("trains"); + }; + if (type == DataType.TWITTERS){ + return ("twitter"); + }; + if (type == DataType.VELO_STATIONS){ + return ("bicycle"); + }; + if (type == DataType.WIFIS){ + return ("wifi"); + }; + return (""); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/GoogleAnalyticsTag.as b/flash_decompiled/watchdog/wd/http/GoogleAnalyticsTag.as new file mode 100644 index 0000000..4d60da5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/GoogleAnalyticsTag.as @@ -0,0 +1,39 @@ +package wd.http { + import wd.core.*; + + public class GoogleAnalyticsTag { + + private var _id:String; + private var _type:String; + private var _format:String; + + public function GoogleAnalyticsTag(id:String, type:String, _format:String){ + super(); + this.id = id; + this.type = type; + this.format = _format; + this.format = this.format.replace("XXX", Config.CITY); + this.format = this.format.replace("aa-AA", Config.LOCALE); + this.format = this.format.replace(/\|/gi, "&"); + } + public function get id():String{ + return (this._id); + } + public function set id(value:String):void{ + this._id = value; + } + public function get type():String{ + return (this._type); + } + public function set type(value:String):void{ + this._type = value; + } + public function get format():String{ + return (this._format); + } + public function set format(value:String):void{ + this._format = value; + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/MetroService.as b/flash_decompiled/watchdog/wd/http/MetroService.as new file mode 100644 index 0000000..2216b55 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/MetroService.as @@ -0,0 +1,27 @@ +package wd.http { + import flash.net.*; + import wd.utils.*; + import wd.events.*; + + public class MetroService extends Service { + + public static var debug:Boolean = true; + + private var metroResponder:Responder; + + public function MetroService(){ + super(); + this.metroResponder = new Responder(this.onMetroComplete, this.onMetroCancel); + } + public function call(refresh:Boolean=false):void{ + connection.call(Service.METHOD_METRO, this.metroResponder, Locator.CITY, ((refresh) ? "1" : "0")); + } + private function onMetroComplete(result):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.METRO_COMPLETE, result)); + } + private function onMetroCancel(fault:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.METRO_CANCEL)); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/PlacesService.as b/flash_decompiled/watchdog/wd/http/PlacesService.as new file mode 100644 index 0000000..63f3b2f --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/PlacesService.as @@ -0,0 +1,54 @@ +package wd.http { + import flash.net.*; + import wd.core.*; + import wd.utils.*; + import wd.events.*; + + public class PlacesService extends Service { + + private var responder:Responder; + private var param:ServiceConstants; + + public function PlacesService(){ + super(); + this.responder = new Responder(this.onComplete, this.onCancel); + this.param = Service.initServiceConstants(); + switch (Config.CITY){ + case Locator.BERLIN: + this.param["lng"] = 13.40933; + this.param["lat"] = 52.52219; + break; + case Locator.LONDON: + this.param["lng"] = -0.127962; + this.param["lat"] = 51.507723; + break; + case Locator.PARIS: + this.param["lng"] = 2.294254; + this.param["lat"] = 48.858278; + break; + }; + this.param["radius"] = 100; + this.param["town"] = Config.CITY; + connection.call(Service.METHOD_PLACES, this.responder, this.param); + } + private function onComplete(result):void{ + var p:*; + var q:*; + var place:Place; + Places[Locator.CITY.toUpperCase()].length = 0; + for (p in result) { + if (p == "places"){ + for (q in result[p]) { + place = new Place(result[p][q].name, result[p][q].lng, result[p][q].lat); + Places[Locator.CITY.toUpperCase()].push(place); + }; + }; + }; + dispatchEvent(new ServiceEvent(ServiceEvent.PLACES_COMPLETE)); + } + private function onCancel(fault:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.PLACES_CANCEL)); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/Service.as b/flash_decompiled/watchdog/wd/http/Service.as new file mode 100644 index 0000000..3236cc6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/Service.as @@ -0,0 +1,76 @@ +package wd.http { + import flash.geom.*; + import wd.utils.*; + import wd.core.*; + import flash.net.*; + import flash.display.*; + + public class Service extends Sprite { + + public static const METHOD_ADS:String = "WatchDog.getAdvertisements"; + public static const METHOD_ATM:String = "WatchDog.getAtms"; + public static const METHOD_BUILDINGS:String = "WatchDog.getBuildings"; + public static const METHOD_CAMERAS:String = "WatchDog.getCameras"; + public static const METHOD_DISTRICT:String = "WatchDog.getDistrict"; + public static const METHOD_ELECTROMAGNETIC:String = "WatchDog.getElectromagnicals"; + public static const METHOD_FLICKRS:String = "WatchDog.getFlickrs"; + public static const METHOD_FOUR_SQUARE:String = "WatchDog.getVenues"; + public static const METHOD_INSTAGRAMS:String = "WatchDog.getInstagrams"; + public static const METHOD_INTERNET_RELAYS:String = "WatchDog.getNras"; + public static const METHOD_METRO:String = "WatchDog.getMetro"; + public static const METHOD_MOBILE:String = "WatchDog.getAntennas"; + public static const METHOD_PARCS:String = "WatchDog.getParcs"; + public static const METHOD_PLACES:String = "WatchDog.getPlaces"; + public static const METHOD_STAISTICS:String = "WatchDog.getStatistics"; + public static const METHOD_RADARS:String = "WatchDog.getRadars"; + public static const METHOD_RIVERS:String = "WatchDog.getRivers"; + public static const METHOD_TOILETS:String = "WatchDog.getToilets"; + public static const METHOD_TRAFFIC:String = "WatchDog.getSignals"; + public static const METHOD_VELO_STATIONS:String = "WatchDog.getVeloStations"; + public static const METHOD_WIFI:String = "WatchDog.getWifis"; + public static const METHOD_TWITTERS:String = "WatchDog.getTweets"; + public static const METHOD_TINYURL:String = "WatchDog.tinyUrl"; + public static const METHOD_RAILS:String = "WatchDog.getRails"; + + public static var gateway:String = "http://ubisoft-ctos-dev.betc.fr/amfserver.php"; + public static var debug:Boolean = false; + + protected var connection:NetConnection; + + public function Service(){ + super(); + this.connection = new NetConnection(); + this.connection.connect(Config.GATEWAY); + if (Config.DEBUG_SERVICES){ + trace(this, "gateway", gateway); + }; + } + public static function initServiceConstants():ServiceConstants{ + var param:ServiceConstants = new ServiceConstants(); + resetServiceConstants(param); + return (param); + } + public static function resetServiceConstants(param:ServiceConstants):void{ + var p:Point = new Point(Locator.LONGITUDE, Locator.LATITUDE); + param[ServiceConstants.PREV_LONGITUDE] = ("" + String(p.x)); + param[ServiceConstants.PREV_LATTITUDE] = ("" + String(p.y)); + param[ServiceConstants.LONGITUDE] = ("" + String(Locator.LONGITUDE)); + param[ServiceConstants.LATTITUDE] = ("" + String(Locator.LATITUDE)); + param[ServiceConstants.RADIUS] = ("" + ServiceConstants.REQ_RADIUS); + param[ServiceConstants.ITEMS_PER_PAGE] = ServiceConstants.REQ_ITEM_PER_PAGE; + param[ServiceConstants.PAGE] = 0; + param[ServiceConstants.TOWN] = Config.CITY; + } + + public function customCall(serviceName:String, responder:Responder, args=null):void{ + try { + this.connection.call(serviceName, responder, args); + if (Config.DEBUG_SERVICES){ + trace(this, "customCall", serviceName, "-> args", args); + }; + } catch(err:Error) { + }; + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/ServiceConstants.as b/flash_decompiled/watchdog/wd/http/ServiceConstants.as new file mode 100644 index 0000000..fb1dc52 --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/ServiceConstants.as @@ -0,0 +1,61 @@ +package wd.http { + + public dynamic class ServiceConstants extends Array { + + public static const PREV_LATTITUDE:String = "prev_lat"; + public static const PREV_LONGITUDE:String = "prev_lng"; + public static const LATTITUDE:String = "lat"; + public static const LONGITUDE:String = "lng"; + public static const RADIUS:String = "radius"; + public static const ITEMS_PER_PAGE:String = "item_per_page"; + public static const PAGE:String = "page"; + public static const TOWN:String = "town"; + public static const KEY_ITEM_COUNT:String = "item_count"; + public static const KEY_INDICES:String = "index"; + public static const KEY_VERTICES:String = "vertex"; + public static const KEY_COMPLETE:String = "complete"; + public static const KEY_BUILDING_ID:String = "id"; + public static const KEY_ID:String = "id"; + public static const KEY_NAME:String = "name"; + public static const KEY_LATITUDE:String = "lat"; + public static const KEY_LONGITUDE:String = "lng"; + public static const KEY_BUILDING_HEIGHT:String = "height"; + public static const KEY_TAGS:String = "tags"; + public static const KEY_MIN_LAT:String = "minLat"; + public static const KEY_MIN_LON:String = "minLng"; + public static const KEY_MAX_LAT:String = "maxLat"; + public static const KEY_MAX_LON:String = "maxLng"; + public static const TAG_NAME:String = "name"; + public static const TAG_AMENITY:String = "amenity"; + public static const TAG_NOTE:String = "note"; + public static const TAG_ADDRESS:String = "address"; + public static const TAG_DATE:String = "date"; + public static const TAG_INDOOR:String = "indoor"; + public static const TAG_LABO:String = "labo"; + public static const TAG_LEVEL:String = "level"; + public static const TAG_PLACE:String = "place"; + public static const TAG_REF:String = "ref"; + public static const TAG_ZIPCODE:String = "zipcode"; + public static const TAG_HEIGHT:String = "height"; + public static const TAG_OPERATOR:String = "operator"; + public static const TAG_SURVEILLANCE:String = "surveillance"; + public static const TAG_MAN_MADE:String = "manMade"; + public static const TAG_CAMERA_TYPE:String = "camera_type"; + public static const TAG_CAMERA_MOUNT:String = "camera_mount"; + public static const TAG_SURVEILLANCE_TYPE:String = "surveillance_type"; + public static const TAG_DIRECTION:String = "direction"; + public static const TAG_BONUS:String = "bonus"; + public static const TAG_OPEN:String = "open"; + public static const TAG_TOTAL:String = "total"; + public static const TAG_UPDATE:String = "update"; + public static const TAG_MAYOR:String = "mayor"; + public static const TAG_TYPE:String = "type"; + public static const TAG_FORMAT:String = "format"; + public static const TAG_WEEK_VIEWS:String = "weekviews"; + public static const TAG_SUBSCRIBERS:String = "subscribers"; + + public static var REQ_RADIUS:Number = 0.5; + public static var REQ_ITEM_PER_PAGE:Number = 5000; + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/TokenChecker.as b/flash_decompiled/watchdog/wd/http/TokenChecker.as new file mode 100644 index 0000000..8fd44ab --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/TokenChecker.as @@ -0,0 +1,50 @@ +package wd.http { + import flash.net.*; + import wd.events.*; + import flash.utils.*; + import wd.core.*; + + public class TokenChecker extends Service { + + public static const TIME_OUT:Number = 1200000; + + private var loadResponder:Responder; + private var checkResponder:Responder; + private var token:String; + + public function TokenChecker(){ + super(); + this.loadResponder = new Responder(this.onComplete, this.onCancel); + this.checkResponder = new Responder(this.onCheckComplete, this.onCancel); + } + public function load(token:String):void{ + this.token = token; + customCall("WatchDog.helo", this.loadResponder, token); + } + private function onComplete(e):void{ + trace(" -- token complete success ? ", e); + if (e){ + dispatchEvent(new ServiceEvent(ServiceEvent.TOKEN_VALID)); + setTimeout(this.check, TIME_OUT); + } else { + this.onCancel(null); + }; + } + public function check():void{ + customCall("WatchDog.connected", this.checkResponder); + } + private function onCheckComplete(e):void{ + trace(" -- check success ? ", e); + if (e){ + setTimeout(this.check, TIME_OUT); + } else { + this.onCancel(null); + }; + } + private function onCancel(e):void{ + trace(" -- AUTH FAIL "); + navigateToURL(new URLRequest(Config.ROOT_URL), "_self"); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/TwitterService.as b/flash_decompiled/watchdog/wd/http/TwitterService.as new file mode 100644 index 0000000..ce0506a --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/TwitterService.as @@ -0,0 +1,79 @@ +package wd.http { + import wd.core.*; + import wd.utils.*; + import flash.net.*; + import flash.events.*; + import wd.hud.items.datatype.*; + import flash.utils.*; + import wd.hud.items.*; + import wd.events.*; + + public class TwitterService extends EventDispatcher { + + public static var FREQUECY:int = 20000; + + private var loader:URLLoader; + private var req:URLRequest; + private var date:Date; + + public function TwitterService(){ + super(); + this.date = new Date(); + this.callService(); + } + private function callService():void{ + var rpp:String = "100"; + var lang:String = Config.LANG; + var geocode:String = (((((Locator.LATITUDE + ",") + Locator.LONGITUDE) + ",") + ServiceConstants.REQ_RADIUS) + "km"); + var searchUrl:String = (((Config.ROOT_URL + "html/tweets/?q=&rpp=") + rpp) + "&include_entities=true&result_type=mixed"); + searchUrl = (searchUrl + (("&geocode=" + geocode) + "&callback=?")); + this.req = new URLRequest(searchUrl); + this.loader = new URLLoader(this.req); + this.loader.addEventListener(Event.COMPLETE, this.onComplete); + this.loader.addEventListener(IOErrorEvent.IO_ERROR, this.onError); + } + private function onError(e:IOErrorEvent):void{ + } + private function onComplete(e:Event):void{ + var o:* = null; + var str:* = null; + var obj:* = undefined; + var lon:* = NaN; + var lat:* = NaN; + var params:* = null; + var tweet:* = null; + var e:* = e; + try { + str = this.loader.data; + str = str.substring(2, (str.length - 2)); + obj = JSON.parse(str); + } catch(err:Error) { + setTimeout(callService, FREQUECY); + return; + }; + var result:* = []; + for each (o in obj.statuses) { + if (((!((o.coordinates == null))) && ((o.coordinates.type == "Point")))){ + if (TrackerData.exists(uint(o.id))){ + } else { + lon = parseFloat(o.coordinates.coordinates[0]); + lat = parseFloat(o.coordinates.coordinates[1]); + params = []; + params.id = o.id_str; + params.caption = o.text; + params.created_time = (Date.parse(o.created_at) * 0.001).toFixed(0); + params.from_user_id = o.user.id; + params.pseudo = o.user.screen_name; + params.full_name = o.user.name; + params.profile_picture = o.user.profile_image_url; + tweet = new TwitterTrackerData(DataType.TWITTERS, o.id, lon, lat, params); + result.push(tweet); + }; + }; + }; + dispatchEvent(new ServiceEvent(ServiceEvent.TWITTERS_COMPLETE, result)); + setTimeout(this.callService, FREQUECY); + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/http/VeloStationService.as b/flash_decompiled/watchdog/wd/http/VeloStationService.as new file mode 100644 index 0000000..a1b670c --- /dev/null +++ b/flash_decompiled/watchdog/wd/http/VeloStationService.as @@ -0,0 +1,36 @@ +package wd.http { + import flash.net.*; + import wd.events.*; + + public class VeloStationService extends Service { + + public static var debug:Boolean = true; + + private var veloResponder:Responder; + private var param:ServiceConstants; + private var _radius:Number; + + public function VeloStationService(){ + super(); + this.param = Service.initServiceConstants(); + this.radius = 100; + this.veloResponder = new Responder(this.onVeloComplete, this.onVeloCancel); + } + public function call(refresh:Boolean):void{ + connection.call(Service.METHOD_VELO_STATIONS, this.veloResponder, this.param, ((refresh) ? "1" : "0")); + } + private function onVeloComplete(result):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.VELO_STATIONS_COMPLETE, result)); + } + private function onVeloCancel(fault:Object):void{ + dispatchEvent(new ServiceEvent(ServiceEvent.VELO_STATIONS_CANCEL)); + } + public function get radius():Number{ + return (this.param["radius"]); + } + public function set radius(value:Number):void{ + this.param["radius"] = value; + } + + } +}//package wd.http diff --git a/flash_decompiled/watchdog/wd/hud/Hud.as b/flash_decompiled/watchdog/wd/hud/Hud.as new file mode 100644 index 0000000..4359a8e --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/Hud.as @@ -0,0 +1,364 @@ +package wd.hud { + import wd.data.*; + import wd.http.*; + import wd.hud.items.*; + import wd.hud.items.datatype.*; + import wd.d3.geom.metro.*; + import wd.d3.geom.metro.trains.*; + import flash.events.*; + import wd.hud.items.pictos.*; + import wd.utils.*; + import wd.events.*; + import wd.d3.*; + import wd.footer.*; + import wd.wq.textures.*; + import wd.wq.core.*; + import flash.geom.*; + import wd.wq.display.*; + import wd.hud.panels.layers.*; + import wd.hud.panels.*; + import wd.hud.popins.*; + import wd.hud.panels.search.*; + import wd.hud.panels.district.*; + import wd.hud.panels.live.*; + import wd.hud.tutorial.*; + import wd.sound.*; + import wd.hud.objects.*; + import wd.core.*; + import flash.display.*; + import aze.motion.*; + import flash.utils.*; + import wd.hud.preloaders.*; + + public class Hud extends Sprite { + + private static var instance:Hud; + + private const BLACK_SCREEN_OPACITY:Number = 0.7; + private const TUTORIAL_TIME_FOR_EACH_PANEL:Number = 7; + + private var trackers:Trackers; + private var started:Boolean = false; + private var sim:Simulation; + private var districtPanel:DistrictPanel; + private var footer:Footer; + private var tutoTimer:Timer; + private var tutoSequence:Array; + private var building_preloader:BuildingPreloader; + private var engine2D:WatchQuads; + private var pictoQuad:WQuad; + private var layerPanel:LayerPanel; + private var livePanel:LivePanel; + private var compass:Compass; + private var tutoMananger:TutorialManager; + private var trackerLabel:TrackerLabel; + private var veloStations:VeloStations; + public var mouseIsOver:Boolean = false; + public var mouseIsClicked:Boolean = false; + private var searchBar:Search; + private var _popinManager:PopinsManager; + private var spriteSheetFactory2Scren:Bitmap; + private var blackScreen:Sprite; + private var light:Sprite; + private var lightQuad:WQuad; + private var b:Bitmap; + public var hook:TrainHook; + + public function Hud(sim:Simulation, footer:Footer){ + super(); + this.footer = footer; + this.sim = sim; + this.addEventListener(MouseEvent.ROLL_OVER, this.onRollOver); + this.addEventListener(MouseEvent.ROLL_OUT, this.onRollOut); + instance = this; + UVPicto.init(SpriteSheetFactory2.texture.width, SpriteSheetFactory2.texture.height); + Metro.getInstance().addEventListener(ServiceEvent.METRO_TEXT_READY, this.updatePicto); + this.trackers = new Trackers(); + Tracker.init(); + addEventListener(Event.ADDED_TO_STAGE, this.onAdded); + } + public static function removeItem(type:int, node:ListNodeTracker):void{ + instance.trackers.remove(type, node); + } + public static function open(id:int):void{ + instance.trackers.open(id); + } + public static function close(id:int):void{ + instance.trackers.close(id); + } + public static function addItem(data:TrackerData):Tracker{ + if (data.type == DataType.PLACES){ + return (instance.trackers.addPlace(data)); + }; + if (instance == null){ + return (null); + }; + instance.trackers.addDynamicTracker(data); + return (null); + } + public static function addStation(line:MetroLine, station:MetroStation, multipleConnexion:Boolean):void{ + var data:StationTrackerData = new StationTrackerData(DataType.METRO_STATIONS, station.id, station.lon, station.lat, station); + instance.trackers.addStation(data, line, station, multipleConnexion); + } + public static function addTrain(train:Train):void{ + instance.trackers.addTrain(DataType.TRAINS, train.id, train); + } + public static function removeTrain(train:Train):void{ + if (instance.hook.tracker != null){ + if (instance.hook.tracker.data != null){ + if (instance.hook.tracker.data.object == train){ + instance.hook.release(); + }; + }; + }; + instance.trackers.removeTrain(train); + } + public static function getInstance():Hud{ + return (instance); + } + + public function majTexture():void{ + var texture:WQConcreteTexture = WQTexture.fromBitmapData(SpriteSheetFactory2.texture); + this.pictoQuad.texture = texture; + } + protected function updatePicto(e:ServiceEvent):void{ + Metro.getInstance().removeEventListener(ServiceEvent.METRO_TEXT_READY, this.updatePicto); + SpriteSheetFactory2.addStations(e.data); + this.majTexture(); + } + protected function onRollOut(event:MouseEvent):void{ + this.mouseIsOver = false; + } + protected function onRollOver(event:MouseEvent):void{ + this.mouseIsOver = true; + } + protected function onAdded(event:Event):void{ + this.engine2D = new WatchQuads(stage, new Rectangle(0, 0, stage.stageWidth, stage.stageHeight), this.sim.stage3DProxy.stage3D); + var texture:WQConcreteTexture = WQTexture.fromBitmapData(SpriteSheetFactory2.texture); + this.pictoQuad = new WQuad(texture, true); + this.engine2D.addQuad(this.pictoQuad); + var textureLight:WQConcreteTexture = WQTexture.fromBitmapData(this.getLight()); + this.lightQuad = new WQuad(textureLight); + this.engine2D.addQuad(this.lightQuad); + stage.addEventListener(MouseEvent.MOUSE_DOWN, this.onClick); + this.tutoSequence = new Array(); + this.layerPanel = new LayerPanel(this); + this.layerPanel.y = 20; + this.layerPanel.x = 20; + addChild(this.layerPanel); + this.tutoSequence.push("layerPanel"); + this.compass = new Compass(this.sim); + addChild(this.compass); + this.popinManager = new PopinsManager(this.sim); + this.searchBar = new Search(); + this.addChild(this.searchBar); + this.tutoSequence.push("searchBar"); + this.districtPanel = new DistrictPanel(); + this.districtPanel.y = 20; + this.districtPanel.x = 20; + addChild(this.districtPanel); + this.tutoSequence.push("districtPanel"); + this.livePanel = new LivePanel(); + this.livePanel.addEventListener(HudEvents.OPEN_DISCLAIMER_POPIN, this.popinManager.openPopin); + addChild(this.livePanel); + this.tutoSequence.push("livePanel"); + this.trackerLabel = new TrackerLabel(); + this.addChild(this.trackerLabel); + this.tutoMananger = new TutorialManager(); + this.tutoMananger.addEventListener(TutorialManager.TUTORIAL_NEXT, this.showNextTuto); + this.tutoMananger.addEventListener(TutorialManager.TUTORIAL_END, this.tutoEnd); + this.addChild(this.tutoMananger); + this.footer.popin = this.popinManager; + this.footer.main.addChild(this.popinManager); + this.footer.addEventListener(HudEvents.OPEN_HELP_POPIN, this.startTuto); + this.footer.addEventListener(HudEvents.OPEN_LEGALS_POPIN, this.popinManager.openPopin); + this.footer.addEventListener(HudEvents.OPEN_ABOUT_POPIN, this.popinManager.openPopin); + this.footer.addEventListener(HudEvents.OPEN_LANG_POPIN, this.popinManager.openPopin); + this.footer.addEventListener(HudEvents.OPEN_LANG_POPIN, this.popinManager.openPopin); + this.footer.addEventListener(HudEvents.OPEN_SOUND_POPIN, SoundManager.swapMute); + this.footer.addEventListener(HudEvents.OPEN_SHARE_LINK_POPIN, this.popinManager.openPopin); + this.footer.addEventListener(HudEvents.QUALITY_CHANGE, this.qualityChange); + this.tutoSequence.push("footer"); + this.hook = new TrainHook(); + addChild(this.hook); + this.veloStations = new VeloStations(); + } + private function qualityChange(e:Event):void{ + if (AppState.isHQ){ + this.sim.setHQ(); + } else { + this.sim.setLQ(); + }; + } + private function onClick(e:MouseEvent):void{ + if (this.popinManager.currentPopin == null){ + this.mouseIsClicked = true; + }; + this.hook.release(); + } + public function update():void{ + Tracker.update(this.sim, this.pictoQuad); + this.compass.update(); + } + public function checkState():void{ + this.sim.checkState(); + this.trackers.checkState(); + this.layerPanel.checkState(); + if (!(AppState.isActive(DataType.METRO_STATIONS))){ + Trackers.hideByType(DataType.TRAINS); + } else { + Trackers.showByType(DataType.TRAINS); + }; + if (!(AppState.isActive(DataType.TRAFFIC_LIGHTS))){ + Trackers.hideByType(DataType.RADARS); + } else { + Trackers.showByType(DataType.RADARS); + }; + } + public function start():void{ + if (!(this.started)){ + this.checkState(); + if (SharedData.firstTime){ + this.startTuto(); + }; + this.layerPanel.tweenIn(); + this.districtPanel.tweenIn(); + this.started = true; + }; + } + public function pause():void{ + } + public function resize():void{ + this.districtPanel.x = ((stage.stageWidth - Panel.RIGHT_PANEL_WIDTH) - 20); + this.livePanel.x = ((stage.stageWidth - Panel.RIGHT_PANEL_WIDTH) - 20); + this.livePanel.replace(); + this.compass.x = 20; + this.compass.y = (stage.stageHeight - 220); + this.searchBar.y = (this.compass.y + 130); + this.engine2D.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); + if (this.blackScreen){ + this.blackScreen.width = stage.stageWidth; + this.blackScreen.height = stage.height; + }; + this.lightQuad.clear(); + this.lightQuad.add(0, 0, stage.stageWidth, stage.stageHeight, 0, 0, 1, 1); + this.tutoMananger.resize(); + } + public function render():void{ + this.engine2D.render(); + } + public function trackerRollOut(tracker:Tracker):void{ + if (this.popinManager.currentPopin != null){ + return; + }; + this.trackerLabel.rolloutHandler(tracker); + this.sim.itemObjects.itemRollOutHandler(tracker, Tracker.staticTrackersOnView); + } + public function trackerRollOver(tracker:Tracker):void{ + if (this.popinManager.currentPopin != null){ + return; + }; + URLFormater.place = tracker.data.labelData; + if (!((tracker.data is TrainTrackerData))){ + this.trackerLabel.rolloverHandler(tracker); + }; + this.sim.itemObjects.itemRollOverHandler(tracker, Tracker.staticTrackersOnView); + var s:Array = ["RollOverLieuxVille", "ClickV4", "ClickV7"]; + SoundManager.playFX(s[int((Math.random() * s.length))], (0.5 + (Math.random() * 0.5))); + } + public function trackerClick(tracker:Tracker):void{ + var p:Point; + this.trackerLabel.rolloutHandler(tracker); + if (this.popinManager.currentPopin != null){ + return; + }; + if (tracker.data.object != null){ + p = Locator.LOCATE(tracker.x, tracker.z); + tracker.data.lon = p.x; + tracker.data.lat = p.y; + }; + var s:Array = ["ClickV4", "ClickV7"]; + SoundManager.playFX(s[int((Math.random() * s.length))], (0.5 + (Math.random() * 0.5))); + this.sim.itemObjects.popinManager = ((this.sim.itemObjects.popinManager) || (this.popinManager)); + this.hook.release(); + if ((tracker.data is TrainTrackerData)){ + this.hook.hook(tracker); + }; + this.sim.itemObjects.itemClickHandler(tracker); + SocketInterface.sendData(tracker.data.lat, tracker.data.lon, tracker.data.labelData); + GoogleAnalytics.mapItemClick(tracker.data.type); + } + private function startTuto(e:Event=null):void{ + this.popinManager.clear(); + this.tutoSequence = new Array(); + this.tutoSequence.push(this.footer); + this.tutoSequence.push(this.compass); + this.tutoSequence.push(this.searchBar); + this.tutoSequence.push(this.layerPanel); + this.tutoSequence.push(this.districtPanel); + this.tutoSequence.push(this.livePanel); + this.tutoSequence.push(this.footer); + this.tutoSequence.push(this.footer); + var i:int; + while (i < this.tutoSequence.length) { + this.tutoSequence[i].tutoMode = true; + i++; + }; + this.tutoMananger.launch(); + this.blackScreen = new Sprite(); + this.blackScreen.graphics.beginFill(0, this.BLACK_SCREEN_OPACITY); + this.blackScreen.graphics.drawRect(0, 0, stage.stageWidth, stage.stageWidth); + } + private function showNextTuto(e:Event=null):void{ + if (this.tutoMananger.index > 0){ + trace(("desativate : " + this.tutoSequence[this.tutoMananger.index])); + this.tutoSequence[(this.tutoMananger.index - 1)].tutoFocusOut(); + }; + if (this.tutoMananger.index == this.tutoSequence.length){ + } else { + trace(("activate : " + this.tutoSequence[this.tutoMananger.index])); + this.tutoSequence[this.tutoMananger.index].tutoFocusIn(); + }; + } + private function tutoEnd(e:Event):void{ + var i:int; + while (i < this.tutoSequence.length) { + this.tutoSequence[i].tutoMode = false; + i++; + }; + eaze(this.blackScreen).to(0.5, {alpha:0}); + } + private function getLight():BitmapData{ + if (!(this.light)){ + this.light = new Sprite(); + }; + var m:Matrix = new Matrix(); + m.createGradientBox(0x0200, 0x0200); + this.light.graphics.clear(); + this.light.graphics.beginGradientFill(GradientType.RADIAL, [0, 0], [0, 0.8], [124, 254], m, "pad", InterpolationMethod.LINEAR_RGB, 0); + this.light.graphics.drawRect(0, 0, 0x0200, 0x0200); + this.light.mouseEnabled = false; + this.mouseEnabled = false; + this.light.buttonMode = false; + var bd:BitmapData = new BitmapData(0x0200, 0x0200, true, 0); + bd.draw(this.light); + this.light.graphics.clear(); + this.light = null; + return (bd); + } + public function dispose():void{ + Tracker.dispose(); + this.trackers.dispose(); + } + public function reset():void{ + Tracker.init(); + } + public function get popinManager():PopinsManager{ + return (this._popinManager); + } + public function set popinManager(value:PopinsManager):void{ + this._popinManager = value; + } + + } +}//package wd.hud diff --git a/flash_decompiled/watchdog/wd/hud/HudElement.as b/flash_decompiled/watchdog/wd/hud/HudElement.as new file mode 100644 index 0000000..aceb588 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/HudElement.as @@ -0,0 +1,98 @@ +package wd.hud { + import flash.events.*; + import flash.display.*; + import aze.motion.*; + import wd.hud.popins.datapopins.triangledatapopin.*; + + public class HudElement extends Sprite { + + protected const DESACTIVATION_ALPHA:Number = 0.2; + + protected var _enabled:Boolean = true; + protected var _tutoMode:Boolean = true; + private var tweenSequence:Array; + protected var tweenInSpeed:Number = 0.3; + protected var tweenInBaseDelay:Number = 0.05; + + public function HudElement(){ + super(); + this.tweenSequence = new Array(); + } + protected function activate():void{ + this.activationTween(this); + } + protected function desactivate(e:Event=null):void{ + this.desactivationTween(this); + } + public function tutoFocusIn():void{ + this.activationTween(this); + } + public function tutoFocusOut():void{ + this.desactivationTween(this); + } + protected function activationTween(dp:DisplayObject=null):void{ + if (dp == null){ + dp = this; + }; + eaze(dp).to(0.5, {alpha:1}, false); + } + protected function desactivationTween(dp:DisplayObject=null):void{ + if (dp == null){ + dp = this; + }; + eaze(dp).to(0.5, {alpha:this.DESACTIVATION_ALPHA}, false); + } + public function disable():void{ + this._enabled = false; + this.mouseEnabled = false; + this.mouseChildren = false; + this.desactivationTween(this); + } + public function enable():void{ + this._enabled = true; + this.mouseEnabled = true; + this.mouseChildren = true; + this.activationTween(this); + } + public function get tutoMode():Boolean{ + return (this._tutoMode); + } + public function set tutoMode(value:Boolean):void{ + this._tutoMode = value; + if (this._tutoMode){ + this.disable(); + } else { + this.enable(); + }; + } + protected function addTweenInItem(element:Array):void{ + if (element[1] == null){ + element[1] = {alpha:0}; + element[2] = {alpha:1}; + }; + if ((element[0] is TriangleDataPopin)){ + eaze(element[0]).apply({alpha:0}); + } else { + eaze(element[0]).apply(element[1]); + }; + this.tweenSequence.push(element); + } + public function tweenIn(delay:Number=0):void{ + var i:Array; + var d:int; + for each (i in this.tweenSequence) { + if ((i[0] is TriangleDataPopin)){ + eaze(i[0]).delay((delay + (this.tweenInBaseDelay * d))).to(this.tweenInSpeed, {alpha:1}).onComplete(i[1]); + } else { + eaze(i[0]).delay((delay + (this.tweenInBaseDelay * d))).to(this.tweenInSpeed, i[2]); + }; + d++; + }; + } + public function tweenInElement(element:DisplayObject, from:Object, to:Object):void{ + eaze(element).apply(from); + eaze(element).to(this.tweenInSpeed, to); + } + + } +}//package wd.hud diff --git a/flash_decompiled/watchdog/wd/hud/HudEvents.as b/flash_decompiled/watchdog/wd/hud/HudEvents.as new file mode 100644 index 0000000..b075878 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/HudEvents.as @@ -0,0 +1,18 @@ +package wd.hud { + + public class HudEvents { + + public static const OPEN_DISCLAIMER_POPIN:String = "OPEN_DISCLAIMER_POPIN"; + public static const OPEN_HELP_POPIN:String = "OPEN_HELP_POPIN"; + public static const OPEN_ABOUT_POPIN:String = "OPEN_ABOUT_POPIN"; + public static const OPEN_LEGALS_POPIN:String = "OPEN_LEGALS_POPIN"; + public static const OPEN_LANG_POPIN:String = "OPEN_LANG_POPIN"; + public static const OPEN_SOUND_POPIN:String = "OPEN_SOUND_POPIN"; + public static const OPEN_SHARE_LINK_POPIN:String = "OPEN_SHARE_LINK_POPIN"; + public static const QUALITY_CHANGE:String = "QUALITY_CHANGE"; + + public function HudEvents(){ + super(); + } + } +}//package wd.hud diff --git a/flash_decompiled/watchdog/wd/hud/aidenMessages/AidenMessages.as b/flash_decompiled/watchdog/wd/hud/aidenMessages/AidenMessages.as new file mode 100644 index 0000000..78ac5e7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/aidenMessages/AidenMessages.as @@ -0,0 +1,134 @@ +package wd.hud.aidenMessages { + import flash.display.*; + import flash.events.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.net.*; + import flash.utils.*; + import aze.motion.*; + import wd.landing.effect.*; + import wd.hud.panels.*; + + public class AidenMessages extends Sprite { + + private var timerMessages:Timer; + private var timerAutoHide:Timer; + private var container:Sprite; + private var bg:Sprite; + private var txtContainer:Sprite; + private var title:CustomTextField; + private var txt:CustomTextField; + private var link:CustomTextField; + private var img:AidanFaceAsset; + private var messageIndex:int = 0; + private var POPIN_WIDH:uint = 400; + private var btnClose:DistrictPanelInfoBubbleCloseAsset; + private var stopped:Boolean = false; + + public function AidenMessages(){ + super(); + this.container = new Sprite(); + this.bg = new Sprite(); + this.bg.buttonMode = true; + this.bg.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.container.addChild(this.bg); + this.txtContainer = new Sprite(); + this.title = new CustomTextField(AidenTexts.xml.aidenName, "aidenMessageTitle"); + this.title.wordWrap = false; + this.txtContainer.addChild(this.title); + this.txt = new CustomTextField("Empty
Empty", "aidenMessageText"); + this.txt.y = this.title.height; + this.txt.width = 281; + this.txtContainer.buttonMode = true; + this.txtContainer.mouseChildren = false; + this.txtContainer.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.txtContainer.addChild(this.txt); + this.link = new CustomTextField(AidenTexts.xml.link_label, "aidenMessageLink"); + this.link.y = (this.txt.y + this.txt.height); + this.link.wordWrap = false; + this.txtContainer.addChild(this.link); + this.img = new AidanFaceAsset(); + this.img.x = 17; + this.img.y = 17; + this.img.buttonMode = true; + this.img.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.container.addChild(this.img); + this.txtContainer.y = (this.img.y - 5); + this.txtContainer.x = ((this.img.x + this.img.width) + 7); + this.container.addChild(this.txtContainer); + this.btnClose = new DistrictPanelInfoBubbleCloseAsset(); + this.btnClose.y = 17; + this.btnClose.x = ((this.POPIN_WIDH - 17) - this.btnClose.width); + this.btnClose.buttonMode = true; + this.btnClose.addEventListener(MouseEvent.CLICK, this.stopItNow); + this.container.addChild(this.btnClose); + this.addChild(this.container); + this.setBg(); + this.alpha = 0; + this.visible = false; + } + public function gotoLink(e:Event):void{ + navigateToURL(new URLRequest(AidenTexts.xml.link_url), "_blank"); + } + public function stopItNow(e:Event):void{ + this.stopped = true; + this.hideMessage(e); + } + public function start():void{ + this.timerMessages = new Timer((1000 * 60), 1); + this.timerMessages.addEventListener(TimerEvent.TIMER_COMPLETE, this.showMessage); + this.timerMessages.start(); + this.timerAutoHide = new Timer(5000, 1); + this.timerAutoHide.addEventListener(TimerEvent.TIMER_COMPLETE, this.hideMessage); + } + public function showMessage(e:Event):void{ + this.txt.text = AidenTexts.xml.meassages.message[this.messageIndex]; + this.link.y = (this.txt.y + this.txt.height); + this.setBg(); + this.resize(); + this.alpha = 0; + this.visible = true; + eaze(this).to(0.5, {alpha:1}); + this.timerAutoHide.reset(); + this.timerAutoHide.start(); + this.messageIndex++; + if (this.messageIndex == AidenTexts.xml.meassages.message.length()){ + this.messageIndex = 0; + }; + DistortImg_sglT.instance.startEffect(this.container, 50); + } + private function hideMessage(e:Event):void{ + eaze(this).to(0.5, {alpha:0}).onComplete(this.disable); + DistortImg_sglT.instance.startEffect(this.container, 50); + } + private function disable():void{ + if (!(this.stopped)){ + this.timerMessages.reset(); + this.timerMessages.start(); + }; + this.visible = false; + } + private function setBg():void{ + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0xFFFFFF, 0.2); + this.bg.graphics.drawRect(0, 0, this.POPIN_WIDH, (((this.txtContainer.y + this.link.y) + this.link.height) + 17)); + } + override public function get width():Number{ + return (this.POPIN_WIDH); + } + override public function set width(value:Number):void{ + super.width = value; + } + override public function get height():Number{ + return (this.bg.height); + } + override public function set height(value:Number):void{ + super.height = value; + } + public function resize():void{ + this.x = (((stage.stageWidth - Panel.RIGHT_PANEL_WIDTH) - 65) - this.width); + this.y = (-(this.height) - 25); + } + + } +}//package wd.hud.aidenMessages diff --git a/flash_decompiled/watchdog/wd/hud/common/graphics/Line.as b/flash_decompiled/watchdog/wd/hud/common/graphics/Line.as new file mode 100644 index 0000000..562dc31 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/common/graphics/Line.as @@ -0,0 +1,27 @@ +package wd.hud.common.graphics { + import flash.display.*; + + public class Line extends Sprite { + + private var sh:Shape; + private var color:uint; + + public function Line(width:uint, color:uint=0xFFFFFF){ + super(); + this.color = color; + this.sh = new Shape(); + this.sh.graphics.lineStyle(1, color, 1, false, "normal", CapsStyle.SQUARE); + this.sh.graphics.lineTo(width, 0); + this.addChild(this.sh); + } + override public function get width():Number{ + return (super.width); + } + override public function set width(value:Number):void{ + this.sh.graphics.clear(); + this.sh.graphics.lineStyle(1, this.color, 1, false, "normal", CapsStyle.SQUARE); + this.sh.graphics.lineTo(value, 0); + } + + } +}//package wd.hud.common.graphics diff --git a/flash_decompiled/watchdog/wd/hud/common/text/CustomTextField.as b/flash_decompiled/watchdog/wd/hud/common/text/CustomTextField.as new file mode 100644 index 0000000..91ab59e --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/common/text/CustomTextField.as @@ -0,0 +1,99 @@ +package wd.hud.common.text { + import flash.text.*; + import wd.core.*; + import flash.events.*; + import flash.utils.*; + + public class CustomTextField extends TextField { + + public static const AUTOSIZE_CENTER:String = "center"; + public static const AUTOSIZE_LEFT:String = "left"; + public static const AUTOSIZE_RIGHT:String = "right"; + + public static var embedFonts:Boolean = true; + + private const TWEEN_CHAR_SET:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÃÂÃÄÅÉÇÈÉÊËÌÃÃŽÃÑÒÓÔÕÖÙÚÛÜ0123456789!$%&'()*+,-./:;<=>?@[÷]_`{}·–—‘’“‚â€â€žÂ·Â£"; + + private var timerTween:Timer; + private var forcedStyle:String = ""; + private var destText:String; + + public function CustomTextField(txt:String, forceStyle:String="", autoSize:String="left", autoStartTween:Boolean=false){ + super(); + this.destText = txt; + this.embedFonts = CustomTextField.embedFonts; + this.antiAliasType = AntiAliasType.ADVANCED; + this.selectable = false; + this.condenseWhite = true; + this.multiline = true; + this.wordWrap = true; + this.autoSize = autoSize; + this.styleSheet = Config.STYLESHEET; + this.forcedStyle = forceStyle; + this.htmlText = txt; + if (autoStartTween){ + this.startTween(); + }; + } + override public function set x(val:Number):void{ + var xv:Number = val; + if (this.autoSize == CustomTextField.AUTOSIZE_CENTER){ + xv = (xv - (this.width / 2)); + } else { + if (this.autoSize == CustomTextField.AUTOSIZE_RIGHT){ + xv = (xv - this.width); + }; + }; + super.x = xv; + } + public function startTween(destText:String=""):void{ + if (destText != ""){ + this.destText = destText; + }; + if (this.timerTween){ + this.timerTween.stop(); + this.timerTween.removeEventListener(TimerEvent.TIMER, this.renderTween); + }; + this.timerTween = new Timer(20, destText.length); + this.timerTween.addEventListener(TimerEvent.TIMER, this.renderTween); + this.timerTween.start(); + } + public function renderTween(e:TimerEvent):void{ + var t:String = ""; + var i:uint; + while (i < this.destText.length) { + if (i < this.timerTween.currentCount){ + t = (t + this.destText.charAt(i)); + } else { + if (i < (this.timerTween.currentCount + 4)){ + t = (t + this.TWEEN_CHAR_SET.charAt(Math.floor((Math.random() * this.TWEEN_CHAR_SET.length)))); + }; + }; + i++; + }; + this.htmlText = t; + } + override public function get htmlText():String{ + return (super.htmlText); + } + override public function set htmlText(value:String):void{ + var closeTag:String; + if (!(this.destText)){ + this.destText = value; + }; + if (this.forcedStyle != ""){ + closeTag = this.forcedStyle.split(" ")[0]; + super.htmlText = (((("

") + value) + "

"); + } else { + super.htmlText = (("

" + value) + "

"); + }; + } + override public function get text():String{ + return (super.text); + } + override public function set text(value:String):void{ + this.htmlText = value; + } + + } +}//package wd.hud.common.text diff --git a/flash_decompiled/watchdog/wd/hud/common/tween/AnimatedLine.as b/flash_decompiled/watchdog/wd/hud/common/tween/AnimatedLine.as new file mode 100644 index 0000000..622342c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/common/tween/AnimatedLine.as @@ -0,0 +1,35 @@ +package wd.hud.common.tween { + import aze.motion.*; + import flash.geom.*; + import flash.events.*; + import flash.display.*; + + public class AnimatedLine extends Sprite { + + public static const TWEEN_END:String = "TWEEN_END"; + public static const TWEEN_RENDER:String = "TWEEN_RENDER"; + + private var _pDest:Point; + private var _color:uint; + public var step:Number = 0; + + public function AnimatedLine(destination:Point, color:uint=0xFFFFFF, time:Number=0.7){ + super(); + this._color = color; + this._pDest = destination; + this.graphics.lineStyle(1, color, 1); + this.graphics.moveTo(0, 0); + eaze(this).to(time, {step:1}).onUpdate(this.render).onComplete(this.tweenEnd); + } + public function render():void{ + this.graphics.clear(); + this.graphics.lineStyle(1, this._color, 1); + this.graphics.lineTo(((this._pDest.x * this.step) / 1), ((this._pDest.y * this.step) / 1)); + this.dispatchEvent(new Event(TWEEN_RENDER)); + } + public function tweenEnd():void{ + this.dispatchEvent(new Event(TWEEN_END)); + } + + } +}//package wd.hud.common.tween diff --git a/flash_decompiled/watchdog/wd/hud/common/ui/SimpleButton.as b/flash_decompiled/watchdog/wd/hud/common/ui/SimpleButton.as new file mode 100644 index 0000000..c84390c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/common/ui/SimpleButton.as @@ -0,0 +1,56 @@ +package wd.hud.common.ui { + import flash.display.*; + import wd.hud.common.text.*; + import flash.events.*; + import aze.motion.*; + + public class SimpleButton extends Sprite { + + private var bgrov:Sprite; + private var bgrou:Sprite; + private var txtrov:CustomTextField; + private var txtrou:CustomTextField; + + public function SimpleButton(label:String, clickMethod:Function, textStyle:String="simpleButton", minWidth:uint=80){ + super(); + this.bgrov = new Sprite(); + this.bgrov.graphics.beginFill(0, 1); + this.addChild(this.bgrov); + this.bgrou = new Sprite(); + this.bgrou.graphics.beginFill(0xFFFFFF, 1); + this.addChild(this.bgrou); + this.txtrov = new CustomTextField(label, (textStyle + "Rollover")); + this.txtrov.wordWrap = false; + this.addChild(this.txtrov); + this.txtrou = new CustomTextField(label, (textStyle + "Rollout")); + this.txtrou.wordWrap = false; + this.addChild(this.txtrou); + if (this.txtrou.width < minWidth){ + this.txtrou.x = (this.txtrov.x = ((minWidth - this.txtrou.width) / 2)); + }; + var w:uint = Math.max(minWidth, this.txtrov.width); + this.bgrov.graphics.drawRect(-5, 0, (w + 10), (this.txtrov.height + 1)); + this.bgrou.graphics.drawRect(-5, 0, (w + 10), (this.txtrov.height + 1)); + this.bgrov.alpha = 0; + this.txtrov.alpha = 0; + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.ROLL_OVER, this.rov); + this.addEventListener(MouseEvent.ROLL_OUT, this.rou); + this.addEventListener(MouseEvent.CLICK, clickMethod); + } + private function rov(e:Event):void{ + eaze(this.bgrov).to(0.3, {alpha:1}); + eaze(this.bgrou).to(0.3, {alpha:0}); + eaze(this.txtrov).to(0.3, {alpha:1}); + eaze(this.txtrou).to(0.3, {alpha:0}); + } + private function rou(e:Event):void{ + eaze(this.bgrov).to(0.3, {alpha:0}); + eaze(this.bgrou).to(0.3, {alpha:1}); + eaze(this.txtrov).to(0.3, {alpha:0}); + eaze(this.txtrou).to(0.3, {alpha:1}); + } + + } +}//package wd.hud.common.ui diff --git a/flash_decompiled/watchdog/wd/hud/items/Tracker.as b/flash_decompiled/watchdog/wd/hud/items/Tracker.as new file mode 100644 index 0000000..e5ebbea --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/Tracker.as @@ -0,0 +1,424 @@ +package wd.hud.items { + import __AS3__.vec.*; + import flash.geom.*; + import wd.data.*; + import wd.core.*; + import wd.utils.*; + import aze.motion.*; + import aze.motion.easing.*; + import flash.utils.*; + import wd.d3.control.*; + import wd.intro.*; + import flash.ui.*; + import wd.hud.*; + import wd.d3.*; + import wd.wq.display.*; + import wd.hud.items.pictos.*; + import wd.sound.*; + import flash.media.*; + import flash.events.*; + + public class Tracker extends Vector3D { + + private static var pool:Vector. = new Vector.(); +; + private static var transform:Vector3D; + private static var extendedStaticSortingArea:SortArea; + private static var staticSortingArea:SortArea; + private static var dynamicSortingArea:SortArea; + private static var test:Vector. = new Vector.(); +; + private static var mouseX:Number; + private static var mouseY:Number; + private static var mouseOver:Boolean; + private static var mouseResults:ListVec3D; + private static var node:ListNodeVec3D; + private static var v:Tracker; + private static var allwaysOnViewList:ListVec3D; + private static var pts0:Point = new Point(); + private static var pts1:Point = new Point(); + private static var pts2:Point = new Point(); + private static var maskTop:Number; + public static var trackerOnMouse:Tracker = null; + public static var _staticTrackersOnView:ListVec3D = new ListVec3D(); + public static var SCALE:Number = 0; + public static var trackerSelected:Tracker; + private static var sound:Sound; + private static var channel:SoundChannel; + private static var playing:Boolean; + + public var screenPosition:Point; + public var active:Boolean; + public var visible:Boolean; + public var mouseEnabled:Boolean = false; + public var flag:uint; + public var sortNode:ListNodeVec3D; + public var updateCallback:Function; + public var nodeOnTrackersList:ListNodeTracker; + public var selected:Boolean = false; + public var scale2:Number = 0; + public var scaleFinal:Number; + private var _data:TrackerData; + private var uvs:UVPicto; + private var sortNode2:ListNodeVec3D; + + public function Tracker(data:TrackerData, uv:UVPicto){ + super(data.position.x, data.position.y, data.position.z, data.position.w); + this.screenPosition = new Point(); + this.uvs = uv; + this.data = data; + if (Intro.visible){ + this.scale2 = 1; + } else { + eaze(this).delay(Math.random()).to(1, {scale2:1}).easing(Expo.easeOut); + }; + this.playSndApear(); + } + public static function init():void{ + staticSortingArea = new SortArea(Constants.GRID_TRACKERS_CASE_SIZE, Locator.world_rect); + dynamicSortingArea = new SortArea(Constants.GRID_TRACKERS_CASE_SIZE, Locator.world_rect, true); + extendedStaticSortingArea = new SortArea((Constants.GRID_TRACKERS_CASE_SIZE * 2), Locator.world_rect); + } + public static function dispose():void{ + var l:int = staticSortingArea.caseCount; + while (l--) { + purge(l, 0); + }; + l = dynamicSortingArea.caseCount; + while (l--) { + purge(l, 1); + }; + l = extendedStaticSortingArea.caseCount; + while (l--) { + purge(l, 2); + }; + staticSortingArea.clear(); + staticSortingArea = null; + dynamicSortingArea.clear(); + dynamicSortingArea = null; + extendedStaticSortingArea.clear(); + extendedStaticSortingArea = null; + } + public static function show():void{ + eaze(Tracker).delay((Math.random() * 2)).to(3, {SCALE:[0, 1.15, 1]}).easing(Expo.easeOut); + } + public static function hide():void{ + eaze(Tracker).to(4, {SCALE:0}); + } + public static function get staticTrackersOnView():ListVec3D{ + return (_staticTrackersOnView); + } + public static function update(scene:Simulation, quad:WQuad):void{ + var t:Tracker; + var t2:int; + if (Config.DEBUG_TRACKER){ + t2 = getTimer(); + }; + var target:Vector3D = scene.cameraTargetPos; + maskTop = (scene.camera.y / CameraController.MAX_HEIGHT); + pts1.x = (scene.camera.x - target.x); + pts1.y = (scene.camera.z - target.z); + pts1.normalize(1); + pts0.x = (scene.camera.x + ((pts1.x * 1000) * maskTop)); + pts0.y = (scene.camera.z + ((pts1.y * 1000) * maskTop)); + pts1.x = (pts0.x - target.x); + pts1.y = (pts0.y - target.z); + mouseOver = false; + _staticTrackersOnView = staticSortingArea.getNeighbors(target, null, 1); + mouseResults = new ListVec3D(); + drawListOnGPU(scene, quad, _staticTrackersOnView); + node = dynamicSortingArea.entitys.head; + while (node) { + t = (node.data as Tracker); + t.x = t.data.object.x; + t.y = t.data.object.y; + t.z = t.data.object.z; + t.w = t.data.object.w; + node = node.next; + }; + dynamicSortingArea.update(); + var vec:ListVec3D = extendedStaticSortingArea.getNeighbors(target, null, 2); + drawListOnGPUWithCheckFront(scene, quad, vec); + vec = dynamicSortingArea.getNeighbors(target, null, 1); + drawListOnGPU(scene, quad, vec); + v = null; + var nodeHead:ListNodeVec3D = mouseResults.head; + if (nodeHead != null){ + if (nodeHead.next != null){ + zSort(mouseResults); + }; + node = nodeHead.next; + while (node) { + v = (node.data as Tracker); + addToQuad(v, quad); + node = node.next; + }; + v = (nodeHead.data as Tracker); + quad.add((v.screenPosition.x - ((v.uvs.halfWidth * v.scale2) * SCALE)), (v.screenPosition.y - ((v.uvs.halfHeight * v.scale2) * SCALE)), ((v.uvs.width * v.scale2) * SCALE), ((v.uvs.height * v.scale2) * SCALE), v.uvs.uvsRoll.x, v.uvs.uvsRoll.y, v.uvs.uvsRoll.xC, v.uvs.uvsRoll.yC); + }; + if (!(Intro.visible)){ + Mouse.cursor = ((mouseOver) ? MouseCursor.BUTTON : MouseCursor.AUTO); + }; + if (Config.DEBUG_TRACKER){ + trace("grid Sorting+Z sorting+ draw quad", (getTimer() - t2), "ms"); + }; + if (Tracker.trackerOnMouse != v){ + if (Tracker.trackerOnMouse != null){ + Hud.getInstance().trackerRollOut(Tracker.trackerOnMouse); + }; + if (v != null){ + Hud.getInstance().trackerRollOver(v); + }; + }; + Tracker.trackerOnMouse = v; + if (((!((Tracker.trackerOnMouse == null))) && (Hud.getInstance().mouseIsClicked))){ + Hud.getInstance().trackerClick(Tracker.trackerOnMouse); + v.selected = true; + if (Tracker.trackerSelected != null){ + Tracker.trackerSelected.selected = false; + }; + Tracker.trackerSelected = v; + }; + Hud.getInstance().mouseIsClicked = false; + } + public static function getTracker(data:TrackerData, uv:UVPicto=null, flag:uint=0, mouseEnabled:Boolean=false):Tracker{ + var t:Tracker = pool.shift(); + if (t == null){ + t = new Tracker(data, uv); + t.mouseEnabled = mouseEnabled; + } else { + t.init(data, uv); + t.mouseEnabled = mouseEnabled; + }; + t.flag = flag; + if (flag == 0){ + t.sortNode = staticSortingArea.addEntity(t); + } else { + if (flag == 1){ + t.sortNode = dynamicSortingArea.addEntity(t); + t.sortNode2 = dynamicSortingArea.nodeEntity; + } else { + t.sortNode = extendedStaticSortingArea.addEntity(t); + }; + }; + return (t); + } + public static function purge(i:int, flag:int=0):void{ + var list:ListVec3D; + if (flag == 0){ + list = staticSortingArea.getEntityCaseGrid(i); + staticSortingArea.clearCaseGrid(i); + } else { + if (flag == 1){ + list = dynamicSortingArea.getEntityCaseGrid(i); + dynamicSortingArea.clearCaseGrid(i); + } else { + list = extendedStaticSortingArea.getEntityCaseGrid(i); + extendedStaticSortingArea.clearCaseGrid(i); + }; + }; + var node:ListNodeVec3D = list.head; + while (node) { + (node.data as Tracker).recycle(); + node = node.next; + }; + } + private static function drawListOnGPUWithCheckFront(scene:Simulation, quad:WQuad, vec:ListVec3D):void{ + var vec2:Vector3D; + var dist:Number; + node = vec.head; + while (node) { + v = (node.data as Tracker); + vec2 = v.subtract(scene.cameraTargetPos); + dist = (Math.max(30, (vec2.length - 200)) / 4); + v.y = dist; + if (onView(scene, v)){ + transform = scene.view.project(v); + if ((((((transform.x < 300)) || ((transform.x > (scene.view.width - 300))))) || ((transform.y < 0)))){ + node = node.next; + continue; + }; + v.screenPosition.x = transform.x; + v.screenPosition.y = transform.y; + v.w = transform.z; + v.scaleFinal = (v.scale2 * SCALE); + quad.add((v.screenPosition.x - (v.uvs.halfWidth * v.scaleFinal)), (v.screenPosition.y - (v.uvs.halfHeight * v.scaleFinal)), (v.uvs.width * v.scaleFinal), (v.uvs.height * v.scaleFinal), v.uvs.uvs.x, v.uvs.uvs.y, v.uvs.uvs.xC, v.uvs.uvs.yC); + }; + node = node.next; + }; + } + private static function onView(scene:Simulation, v:Tracker):Boolean{ + pts2.x = (pts0.x - v.x); + pts2.y = (pts0.y - v.z); + return ((((pts2.x * pts1.x) + (pts2.y * pts1.y)) > 0)); + } + private static function drawListOnGPU(scene:Simulation, quad:WQuad, vec:ListVec3D):void{ + var locked:Boolean = !((Hud.getInstance().popinManager.currentPopin == null)); + node = vec.head; + while (node) { + v = (node.data as Tracker); + if (v.active){ + v.w = -1; + if (onView(scene, v)){ + transform = scene.view.project(v); + v.screenPosition.x = transform.x; + v.screenPosition.y = transform.y; + v.w = transform.z; + } else { + v.w = -1; + }; + }; + node = node.next; + }; + zSort(vec); + mouseX = scene.stage.mouseX; + mouseY = scene.stage.mouseY; + node = vec.head; + while (node) { + v = (node.data as Tracker); + if (v.active){ + if (v.w != -1){ + if ((((v.screenPosition.y > 0)) && ((v.screenPosition.y < scene.view.height)))){ + v.scaleFinal = (v.scale2 * SCALE); + if (((v.mouseEnabled) && (!(Hud.getInstance().mouseIsOver)))){ + if (((!(locked)) && (isMouseOver((v.screenPosition.x - v.uvs.btnSizeD2), (v.screenPosition.y - v.uvs.btnSizeD2), v.uvs.btnSize, v.uvs.btnSize)))){ + mouseOver = true; + mouseResults.insert(v); + } else { + addToQuad(v, quad); + }; + } else { + addToQuad(v, quad); + }; + }; + }; + }; + node = node.next; + }; + } + private static function addToQuad(v:Tracker, quad:WQuad):void{ + if (v.selected){ + quad.add((v.screenPosition.x - (v.uvs.halfWidth * v.scaleFinal)), (v.screenPosition.y - (v.uvs.halfHeight * v.scaleFinal)), (v.uvs.width * v.scaleFinal), (v.uvs.height * v.scaleFinal), v.uvs.uvsRoll.x, v.uvs.uvsRoll.y, v.uvs.uvsRoll.xC, v.uvs.uvsRoll.yC); + } else { + quad.add((v.screenPosition.x - (v.uvs.halfWidth * v.scaleFinal)), (v.screenPosition.y - (v.uvs.halfHeight * v.scaleFinal)), (v.uvs.width * v.scaleFinal), (v.uvs.height * v.scaleFinal), v.uvs.uvs.x, v.uvs.uvs.y, v.uvs.uvs.xC, v.uvs.uvs.yC); + }; + } + private static function isMouseOver(x:Number, y:Number, w:int, h:int):Boolean{ + if (x > mouseX){ + return (false); + }; + if (y > mouseY){ + return (false); + }; + if ((x + w) < mouseX){ + return (false); + }; + if ((y + h) < mouseY){ + return (false); + }; + return (true); + } + private static function zSort(vec:ListVec3D):void{ + var f:ListNodeVec3D; + var n:ListNodeVec3D; + var j:ListNodeVec3D; + var p:ListNodeVec3D; + var c:ListNodeVec3D; + if (vec.head == null){ + return; + }; + if (vec.head.next == null){ + return; + }; + f = vec.head; + c = f.next; + while (c) { + n = c.next; + p = c.prev; + if (c.data.w > p.data.w){ + j = p; + while (j.prev) { + if (c.data.w > j.prev.data.w){ + j = j.prev; + } else { + break; + }; + }; + if (n){ + p.next = n; + n.prev = p; + } else { + p.next = null; + }; + if (j == f){ + c.prev = null; + c.next = j; + j.prev = c; + f = c; + } else { + c.prev = j.prev; + j.prev.next = c; + c.next = j; + j.prev = c; + }; + }; + c = n; + }; + vec.head = f; + } + + private function playSndApear():void{ + var vec2:Vector3D = subtract(Simulation.instance.cameraTargetPos); + var v:Number = vec2.length; + if (v < 1000){ + if (((playing) || ((SoundManager.MASTER_VOLUME == 0)))){ + return; + }; + playing = true; + sound = ((sound) || (SoundLibrary.getSound("ApparitionSignalisation"))); + channel = sound.play(); + channel.addEventListener(Event.SOUND_COMPLETE, this.onSoundComplete); + channel.soundTransform.volume = 0.5; + }; + } + private function onSoundComplete(e:Event):void{ + channel.removeEventListener(Event.SOUND_COMPLETE, this.onSoundComplete); + channel.stop(); + playing = false; + } + public function recycle():void{ + if (this.flag == 0){ + staticSortingArea.deleteEntity(this.sortNode); + } else { + if (this.flag == 1){ + dynamicSortingArea.deleteEntity(this.sortNode, this.sortNode2); + } else { + extendedStaticSortingArea.deleteEntity(this.sortNode); + }; + }; + this.active = false; + Hud.removeItem(this._data.type, this.nodeOnTrackersList); + TrackerData.remove(this._data.id); + this._data = null; + this.uvs = null; + pool.push(this); + } + public function init(data:TrackerData, uv:UVPicto):Tracker{ + this.uvs = uv; + this.data = data; + return (this); + } + public function get data():TrackerData{ + return (this._data); + } + public function set data(value:TrackerData):void{ + this._data = value; + x = this._data.position.x; + y = this._data.position.y; + z = this._data.position.z; + w = this._data.position.w; + this.active = AppState.isActive(this._data.type); + } + + } +}//package wd.hud.items diff --git a/flash_decompiled/watchdog/wd/hud/items/TrackerData.as b/flash_decompiled/watchdog/wd/hud/items/TrackerData.as new file mode 100644 index 0000000..8bd7ade --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/TrackerData.as @@ -0,0 +1,74 @@ +package wd.hud.items { + import flash.geom.*; + import flash.utils.*; + import wd.http.*; + import wd.utils.*; + + public class TrackerData { + + private static var pos:Point = new Point(); + public static var ids:Dictionary = new Dictionary(true); + public static var lonLat:Dictionary = new Dictionary(true); + + public var position:Vector3D; + public var type:int; + public var lat:Number; + public var lon:Number; + public var id:uint; + public var extra; + public var object; + public var tracker:Tracker; + public var visited:Boolean; + public var canOpenPopin:Boolean = true; + + public function TrackerData(type:int, id:uint, lon:Number, lat:Number, extra){ + super(); + this.id = id; + this.lon = lon; + this.lat = lat; + if (((TrackerData.existsLonLat(((lon + "") + lat))) && (!((type == DataType.METRO_STATIONS))))){ + lon = (lon + ((Math.random() * 0.0003) - 0.00015)); + lat = (lat + ((Math.random() * 0.0003) - 0.00015)); + } else { + TrackerData.lonLat[((lon + "") + lat)] = true; + }; + Locator.REMAP(lon, lat, pos); + this.position = new Vector3D(pos.x, 0, pos.y); + this.extra = extra; + this.type = type; + if (id != 0){ + ids[id] = this; + }; + } + public static function remove(id:uint):void{ + ids[id] = null; + } + public static function exists(id:uint):Boolean{ + return (!((ids[id] == null))); + } + public static function removeLonLat(id:Number):void{ + lonLat[id] = null; + } + public static function existsLonLat(id:String):Boolean{ + return (!((lonLat[id] == null))); + } + + public function debugExtra():void{ + var i:*; + trace("TrackerData Extra Data trace : "); + for (i in this.extra) { + trace(((i + " : ") + this.extra[i])); + }; + } + public function get labelData():String{ + return (DataType.toString(this.type)); + } + public function get labelSubData():String{ + return (""); + } + public function get isValid():Boolean{ + return (true); + } + + } +}//package wd.hud.items diff --git a/flash_decompiled/watchdog/wd/hud/items/Trackers.as b/flash_decompiled/watchdog/wd/hud/items/Trackers.as new file mode 100644 index 0000000..39fd9a0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/Trackers.as @@ -0,0 +1,230 @@ +package wd.hud.items { + import wd.data.*; + import flash.utils.*; + import wd.http.*; + import wd.core.*; + import wd.hud.items.pictos.*; + import wd.d3.geom.metro.*; + import wd.hud.items.datatype.*; + import wd.d3.geom.metro.trains.*; + import flash.display.*; + + public class Trackers extends Sprite { + + public static var ADS:ListTracker = new ListTracker(); + public static var ATMS:ListTracker = new ListTracker(); + public static var CAMERAS:ListTracker = new ListTracker(); + public static var ELECTROMAGNETICS:ListTracker = new ListTracker(); + public static var FLICKRS:ListTracker = new ListTracker(); + public static var FOUR_SQUARES:ListTracker = new ListTracker(); + public static var INSTAGRAMS:ListTracker = new ListTracker(); + public static var INTERNET_RELAYS:ListTracker = new ListTracker(); + public static var METRO_STATIONS:ListTracker = new ListTracker(); + public static var MOBILES:ListTracker = new ListTracker(); + public static var PLACES:ListTracker = new ListTracker(); + public static var TRAFFIC_LIGHTS:ListTracker = new ListTracker(); + public static var RADARS:ListTracker = new ListTracker(); + public static var TRAINS:ListTracker = new ListTracker(); + public static var TOILETS:ListTracker = new ListTracker(); + public static var TWITTERS:ListTracker = new ListTracker(); + public static var VELO_STATIONS:ListTracker = new ListTracker(); + public static var WIFIS:ListTracker = new ListTracker(); + private static var textTrackers:Dictionary = new Dictionary(true); + + private var removeSpacePattern:RegExp; + + public function Trackers(){ + this.removeSpacePattern = /\s/g; + super(); + } + private static function getListByType(type:int):ListTracker{ + switch (type){ + case DataType.ADS: + return (ADS); + case DataType.ATMS: + return (ATMS); + case DataType.CAMERAS: + return (CAMERAS); + case DataType.ELECTROMAGNETICS: + return (ELECTROMAGNETICS); + case DataType.FLICKRS: + return (FLICKRS); + case DataType.FOUR_SQUARE: + return (FOUR_SQUARES); + case DataType.INSTAGRAMS: + return (INSTAGRAMS); + case DataType.INTERNET_RELAYS: + return (INTERNET_RELAYS); + case DataType.METRO_STATIONS: + return (METRO_STATIONS); + case DataType.MOBILES: + return (MOBILES); + case DataType.PLACES: + return (PLACES); + case DataType.TRAFFIC_LIGHTS: + return (TRAFFIC_LIGHTS); + case DataType.RADARS: + return (RADARS); + case DataType.TRAINS: + return (TRAINS); + case DataType.TOILETS: + return (TOILETS); + case DataType.TWITTERS: + return (TWITTERS); + case DataType.VELO_STATIONS: + return (VELO_STATIONS); + case DataType.WIFIS: + return (WIFIS); + }; + return (null); + } + public static function hideByType(type:int):void{ + var node2:ListNodeTracker; + var list:ListTracker = getListByType(type); + if (list == null){ + return; + }; + var node:ListNodeTracker = list.head; + while (node) { + node.data.visible = false; + node = node.next; + }; + } + public static function showByType(type:int):void{ + var node2:ListNodeTracker; + var list:ListTracker = getListByType(type); + if (list == null){ + return; + }; + var node:ListNodeTracker = list.head; + while (node) { + node.data.visible = true; + node = node.next; + }; + } + + public function checkState():void{ + var type:int; + for each (type in DataType.LIST) { + if (AppState.isActive(type)){ + this.open(type); + } else { + this.close(type); + }; + }; + } + public function open(type:int):void{ + var list:ListTracker = getListByType(type); + if (list == null){ + return; + }; + var node:ListNodeTracker = list.head; + while (node) { + node.data.active = true; + node = node.next; + }; + } + public function close(type:int):void{ + var list:ListTracker = getListByType(type); + if (list == null){ + return; + }; + var node:ListNodeTracker = list.head; + while (node) { + node.data.active = false; + node = node.next; + }; + } + public function remove(type:int, node:ListNodeTracker):void{ + getListByType(type).remove(node); + } + public function addPlace(data:TrackerData):Tracker{ + var uv:UVPicto; + var t:Tracker; + if (textTrackers[data.extra] == null){ + uv = UVPicto.getTextUVs(data.extra); + t = Tracker.getTracker(data, uv, 2, false); + t.y = 20; + t.nodeOnTrackersList = getListByType(data.type).insert(t); + return (t); + }; + return (null); + } + public function addDynamicTracker(data:TrackerData):void{ + var uv:UVPicto = UVPicto.getTrackerUVs(data.type); + var n:String = DataType.toString(data.type); + var t:Tracker = Tracker.getTracker(data, uv, 0, true); + t.nodeOnTrackersList = getListByType(data.type).insert(t); + } + public function addStaticTracker(data:TrackerData):void{ + var uv:UVPicto = UVPicto.getTrackerUVs(data.type); + var t:Tracker = Tracker.getTracker(data, uv, 0, false); + t.nodeOnTrackersList = getListByType(data.type).insert(t); + } + public function addStation(data:TrackerData, line:MetroLine, station:MetroStation, multipleConnexions:Boolean=false):void{ + var uv:UVPicto; + var str:String; + var t:Tracker; + if (!(station.hasLabel)){ + str = station.name.toUpperCase(); + str = str.replace(this.removeSpacePattern, ""); + if (textTrackers[str] == null){ + uv = UVPicto.getTextUVs(station.name.toUpperCase()); + if (uv != null){ + t = Tracker.getTracker(data, uv, 2, false); + t.y = 20; + t.active = true; + t.nodeOnTrackersList = getListByType(data.type).insert(t); + }; + textTrackers[str] = true; + }; + uv = UVPicto.getStationUVs(line.ref, multipleConnexions); + t = Tracker.getTracker(data, uv, 0, true); + t.nodeOnTrackersList = getListByType(data.type).insert(t); + station.hasLabel = true; + }; + } + public function addTrain(type:int, id:int, train:Train):void{ + var uv:UVPicto = UVPicto.getMetroUVs(train.line.ref); + var data:TrainTrackerData = new TrainTrackerData(type, 0, 0, 0, train); + data.object = train; + var t:Tracker = Tracker.getTracker(data, uv, 1, true); + t.nodeOnTrackersList = getListByType(type).insert(t); + } + public function removeTrain(train:Train):void{ + var node2:ListNodeTracker; + var list:ListTracker = getListByType(DataType.TRAINS); + if (list == null){ + return; + }; + var node:ListNodeTracker = list.head; + while (node) { + node2 = node; + node = node.next; + if (node2.data.data.extra == train){ + getListByType(DataType.TRAINS).remove(node2); + node2.data.recycle(); + return; + }; + }; + } + private function tagsToString(tags=null):String{ + var p:*; + if ((((tags == false)) || ((tags == null)))){ + return (""); + }; + var str:String = ""; + for (p in tags) { + str = (str + (tags[p] + "\n")); + }; + return (str.replace(/null\n/gi, "")); + } + public function dispose():void{ + var id:String; + for (id in textTrackers) { + delete textTrackers[id]; + }; + } + + } +}//package wd.hud.items diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/AdsTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/AdsTrackerData.as new file mode 100644 index 0000000..20ae077 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/AdsTrackerData.as @@ -0,0 +1,31 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class AdsTrackerData extends TrackerData { + + public var format:String; + public var name:String; + public var ad_type:String; + public var weekviews:String; + + public function AdsTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_FORMAT, ServiceConstants.TAG_NAME, ServiceConstants.TAG_TYPE, ServiceConstants.TAG_WEEK_VIEWS]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + if (tag == ServiceConstants.TAG_TYPE){ + this.ad_type = extra[tag]; + } else { + this[tag] = extra[tag]; + }; + }; + }; + } + public function toString():String{ + return (((((((("AtmTrackerData: name" + this.name) + ", ad_type: ") + this.ad_type) + " format: ") + this.format) + " weekviews: ") + this.weekviews)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/AtmTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/AtmTrackerData.as new file mode 100644 index 0000000..8abd5ba --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/AtmTrackerData.as @@ -0,0 +1,29 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class AtmTrackerData extends TrackerData { + + public var amenity:String; + public var name:String; + public var note:String; + + public function AtmTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_AMENITY, ServiceConstants.TAG_NAME, ServiceConstants.TAG_NOTE]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + this[tag] = extra[tag]; + }; + }; + } + public function toString():String{ + return (((((("AtmTrackerData: name" + this.name) + ", amenity: ") + this.amenity) + " note: ") + this.note)); + } + override public function get labelData():String{ + return (super.labelData); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/CamerasTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/CamerasTrackerData.as new file mode 100644 index 0000000..37781d4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/CamerasTrackerData.as @@ -0,0 +1,40 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class CamerasTrackerData extends TrackerData { + + public var name:String; + public var surveillance:String; + public var man_made:String; + public var height:String; + public var camera_type:String; + public var camera_mount:String; + public var operator:String; + public var surveillance_type:String; + public var amenity:String; + public var direction:String; + + public function CamerasTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_NAME, ServiceConstants.TAG_SURVEILLANCE, ServiceConstants.TAG_MAN_MADE, ServiceConstants.TAG_HEIGHT, ServiceConstants.TAG_CAMERA_TYPE, ServiceConstants.TAG_CAMERA_MOUNT, ServiceConstants.TAG_OPERATOR, ServiceConstants.TAG_SURVEILLANCE_TYPE, ServiceConstants.TAG_AMENITY, ServiceConstants.TAG_DIRECTION]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + this[tag] = extra[tag]; + }; + }; + } + public function toString():String{ + return (((((((((((((((((((("CamerasTrackerData: name " + this.name) + "surveillance ") + this.surveillance) + "man_made ") + this.man_made) + "height ") + this.height) + "camera_type ") + this.camera_type) + "camera_mount ") + this.camera_mount) + "operator ") + this.operator) + "surveillance_type ") + this.surveillance_type) + "amenity ") + this.amenity) + "direction ") + this.direction)); + } + override public function get labelData():String{ + var add:String = ""; + if (this.name != null){ + add = (" " + this.name); + }; + return ((super.labelData + add)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/ElectroMagneticTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/ElectroMagneticTrackerData.as new file mode 100644 index 0000000..8e5ebf7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/ElectroMagneticTrackerData.as @@ -0,0 +1,32 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class ElectroMagneticTrackerData extends TrackerData { + + public var address:String; + public var date:String; + public var indoor:String; + public var labo:String; + public var level:String; + public var name:String; + public var place:String; + public var ref:String; + public var zipcode:String; + + public function ElectroMagneticTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_ADDRESS, ServiceConstants.TAG_DATE, ServiceConstants.TAG_INDOOR, ServiceConstants.TAG_LABO, ServiceConstants.TAG_LEVEL, ServiceConstants.TAG_NAME, ServiceConstants.TAG_PLACE, ServiceConstants.TAG_REF, ServiceConstants.TAG_ZIPCODE]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + this[tag] = extra[tag]; + }; + }; + } + public function toString():String{ + return (((((((((((((((((("ElectroMagneticTrackerData: " + this.address) + "\n") + this.date) + "\n") + this.indoor) + "\n") + this.labo) + "\n") + this.level) + "\n") + this.name) + "\n") + this.place) + "\n") + this.ref) + "\n") + this.zipcode)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/FlickrTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/FlickrTrackerData.as new file mode 100644 index 0000000..f407fd0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/FlickrTrackerData.as @@ -0,0 +1,36 @@ +package wd.hud.items.datatype { + import wd.hud.items.*; + + public class FlickrTrackerData extends TrackerData { + + public var title:String; + public var description:String; + public var owner:String; + public var userName:String; + public var time:String; + public var url:String; + public var width:int; + public var height:int; + public var httpUrl:String; + + public function FlickrTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + super(type, id, lon, lat, extra); + this.time = ((extra["dateupload"]) || ("")); + this.description = ((extra["description"]) || ("")); + this.height = parseInt(extra["height_s"]); + this.width = parseInt(extra["width_s"]); + this.owner = ((extra["owner"]) || ("")); + this.userName = ((extra["ownername"]) || ("")); + this.title = ((extra["title"]) || ("")); + this.url = extra["url_s"]; + this.httpUrl = (((("http://www.flickr.com/photos/" + this.owner) + "/") + extra["id"]) + "/"); + } + override public function get isValid():Boolean{ + return (((!((this.url == null))) && (!((this.url == ""))))); + } + public function toString():String{ + return (((((((((((((((((((((("FlickrTrackerData:" + "\ntime \t\t\t") + this.time) + "") + "\ndescription \t\t") + this.description) + "") + "\nheight \t\t\t") + this.height) + "") + "\nwidth \t\t\t") + this.width) + "") + "\nuserName \t\t") + this.userName) + "") + "\ntitle \t\t\t") + this.title) + "") + "\nurl \t\t\t\t") + this.url) + "")); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/FoursquareTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/FoursquareTrackerData.as new file mode 100644 index 0000000..f7c8502 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/FoursquareTrackerData.as @@ -0,0 +1,35 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class FoursquareTrackerData extends TrackerData { + + public var mayor:Array; + public var count:int; + public var photoUrl:String = ""; + public var userName:String = ""; + public var userId:String = ""; + public var place:String; + public var venueUrl:String; + + public function FoursquareTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + super(type, id, lon, lat, extra); + this.place = extra[ServiceConstants.TAG_NAME]; + this.venueUrl = extra.url; + if (extra[ServiceConstants.TAG_MAYOR] != null){ + this.mayor = extra[ServiceConstants.TAG_MAYOR]; + this.count = this.mayor["count"]; + this.photoUrl = this.mayor["photo"]; + this.userName = this.mayor["user"]; + this.userId = this.mayor["userid"]; + }; + } + override public function get isValid():Boolean{ + return (((((!((extra[ServiceConstants.TAG_MAYOR] == null))) && (!((this.userId == ""))))) && (!((this.userName == ""))))); + } + public function toString():String{ + return (((((((((("FoursquareTrackerData: place " + this.place) + " user: ") + this.userName) + " user ID: ") + this.userId) + " photo: ") + this.photoUrl) + " count: ") + this.count)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/InstagramTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/InstagramTrackerData.as new file mode 100644 index 0000000..1f16295 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/InstagramTrackerData.as @@ -0,0 +1,42 @@ +package wd.hud.items.datatype { + import wd.hud.items.*; + + public class InstagramTrackerData extends TrackerData { + + public var title:String; + public var name:String; + public var time:String; + public var comments:int; + public var likes:int; + public var link:String; + public var tags:Array; + public var width:int; + public var height:int; + public var profile:String; + public var thumbnail:String; + public var picture:String; + + public function InstagramTrackerData(type:int, id:int, lon:Number, lat:Number, extra:Array){ + super(type, id, lon, lat, extra); + this.title = ((extra["caption"]) || ("")); + this.name = ((extra["full_name"]) || ("")); + this.time = ((extra["created_time"]) || ("")); + this.comments = parseInt(extra["comments"]); + this.likes = parseInt(extra["likes"]); + this.link = ((extra["link"]) || ("")); + this.tags = (((extra["tags"] == false)) ? [] : extra["tags"]); + this.width = parseInt(extra["width"]); + this.height = parseInt(extra["height"]); + this.profile = ((extra["profile_picture"]) || ("")); + this.picture = ((extra["picture"]) || ("")); + this.thumbnail = ((extra["thumbnail"]) || ("")); + } + override public function get isValid():Boolean{ + return (((!((this.title == null))) && (((!((this.picture == null))) || (!((this.picture == ""))))))); + } + public function toString():String{ + return ((((((((((((((((((((((((((((((((((((("InstagramTrackerData " + "\ntitle ") + this.title) + "") + "\nname ") + this.name) + "") + "\ntime ") + this.time) + "") + "\ncomments ") + this.comments) + "") + "\nlikes ") + this.likes) + "") + "\nlink ") + this.link) + "") + "\ntags ") + this.tags) + "") + "\nheight ") + this.height) + "") + "\nwidth ") + this.width) + "") + "\nprofile ") + this.profile) + "") + "\nthumbnail ") + this.thumbnail) + "") + "\npicture ") + this.picture) + "")); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/InternetRelaysTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/InternetRelaysTrackerData.as new file mode 100644 index 0000000..370d850 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/InternetRelaysTrackerData.as @@ -0,0 +1,40 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.providers.texts.*; + import wd.hud.items.*; + + public class InternetRelaysTrackerData extends TrackerData { + + public var name:String; + public var subscribers:Number; + + public function InternetRelaysTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_NAME, ServiceConstants.TAG_SUBSCRIBERS]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + if (tag == "subscribers"){ + this[tag] = parseFloat(extra[tag]); + } else { + this[tag] = extra[tag]; + }; + }; + }; + } + public function toString():String{ + return (((("InternetRelaysTrackerData: name" + this.name) + ", subscribers: ") + this.subscribers)); + } + override public function get labelData():String{ + return (super.labelData); + } + override public function get labelSubData():String{ + var r:String = ""; + if (!(isNaN(this.subscribers))){ + r = (((super.labelSubData + this.subscribers) + " ") + DataDetailText.internetSubscribers); + }; + return (r); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/MobilesTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/MobilesTrackerData.as new file mode 100644 index 0000000..cbabbb0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/MobilesTrackerData.as @@ -0,0 +1,28 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class MobilesTrackerData extends TrackerData { + + public var address:String; + public var height:String; + public var operator:String; + public var ref:String; + public var zipcode:String; + + public function MobilesTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_ADDRESS, ServiceConstants.TAG_HEIGHT, ServiceConstants.TAG_OPERATOR, ServiceConstants.TAG_REF, ServiceConstants.TAG_ZIPCODE]; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + this[tag] = extra[tag]; + }; + }; + } + public function toString():String{ + return (((((((((("MobileTrackerData: address" + this.address) + ", height: ") + this.height) + " operator (Array) : ") + this.operator) + ", ref: ") + this.ref) + ", zipcode: ") + this.zipcode)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/StationTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/StationTrackerData.as new file mode 100644 index 0000000..f0f7d12 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/StationTrackerData.as @@ -0,0 +1,44 @@ +package wd.hud.items.datatype { + import wd.d3.geom.metro.*; + import __AS3__.vec.*; + import wd.d3.geom.metro.trains.*; + import wd.hud.items.*; + + public class StationTrackerData extends TrackerData { + + private var name:String; + private var _station:MetroStation; + private var _averageCommuters:String; + + public function StationTrackerData(type:int, id:int, lon:Number, lat:Number, station:MetroStation){ + super(type, id, lon, lat, null); + this.station = station; + this.resetVars(); + } + public function get station():MetroStation{ + return (this._station); + } + public function set station(value:MetroStation):void{ + this._station = value; + this.resetVars(); + } + public function get trainsPerHour():int{ + return (this.station.getTrainset()); + } + public function get averageCommuters():String{ + return (this._averageCommuters); + } + private function resetVars():void{ + this.name = this.station.name; + if (this.station.passengers != null){ + this._averageCommuters = (((this.station.passengers.toLowerCase() == "nc")) ? "--" : this.station.passengers); + } else { + this._averageCommuters = "--"; + }; + } + public function get nextTrains():Vector.{ + return (this.station.getClosestTrains()); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/ToiletsTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/ToiletsTrackerData.as new file mode 100644 index 0000000..cc571e4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/ToiletsTrackerData.as @@ -0,0 +1,18 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.hud.items.*; + + public class ToiletsTrackerData extends TrackerData { + + public var name:String; + + public function ToiletsTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + super(type, id, lon, lat, extra); + this.name = ((extra[ServiceConstants.TAG_NAME]) || ("")); + } + public function toString():String{ + return (("ToiletsTrackerData: name" + this.name)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/TrainTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/TrainTrackerData.as new file mode 100644 index 0000000..4aaedb9 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/TrainTrackerData.as @@ -0,0 +1,26 @@ +package wd.hud.items.datatype { + import wd.d3.geom.metro.trains.*; + import wd.providers.texts.*; + import wd.hud.items.*; + + public class TrainTrackerData extends TrackerData { + + private var train:Train; + + public function TrainTrackerData(type:int, id:int, lon:Number, lat:Number, train:Train){ + super(type, train.id, lon, lat, train); + this.train = train; + } + public function update():void{ + } + override public function get labelData():String{ + var str:String = ((DataLabel.train_line + " ") + this.train.edge.line.name.toUpperCase()); + str = (str + (((("
" + DataLabel.train_frequency) + this.train.trainset) + " ") + DataLabel.train_frequency_unit)); + str = (str + ((("
" + DataLabel.train_from) + " ") + this.train.edge.start.name)); + str = (str + ((("
" + DataLabel.train_to) + " ") + this.train.edge.end.name)); + str = (str + (((("
" + DataLabel.train_arrival_time) + " ") + ((this.train.duration * (1 - this.train.progress)) / 1000).toFixed(3)) + " s")); + return (str); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/TwitterTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/TwitterTrackerData.as new file mode 100644 index 0000000..a25a84d --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/TwitterTrackerData.as @@ -0,0 +1,49 @@ +package wd.hud.items.datatype { + import wd.core.*; + import flash.xml.*; + import wd.hud.items.*; + + public class TwitterTrackerData extends TrackerData { + + private var xmlDoc:XMLDocument; + public var caption:String; + public var time:String; + public var name:String; + public var profile_picture:String; + public var source:String; + public var iso_language:String; + public var from_user:String; + public var from_user_id:String; + public var from_user_id_str:String; + public var place:Object; + public var place_name:String; + public var metadata:Object; + public var user_id:String; + public var user_id_str:String; + public var tweet_id:String; + + public function TwitterTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + super(type, id, lon, lat, extra); + this.tweet_id = ((extra.id) || ("")); + this.caption = ((this.htmlUnescape(extra.caption)) || ("")); + this.time = ((extra.created_time) || ("")); + this.from_user_id = ((extra.from_user_id) || ("")); + this.name = ((this.htmlUnescape(extra.pseudo)) || ("")); + this.from_user = ((this.htmlUnescape(extra.full_name)) || ("")); + this.profile_picture = ((extra.profile_picture) || ("")); + this.place_name = Config.CITY; + } + public function htmlUnescape(str:String):String{ + this.xmlDoc = ((this.xmlDoc) || (new XMLDocument(str))); + this.xmlDoc.parseXML(str); + return (this.xmlDoc.firstChild.nodeValue); + } + override public function get isValid():Boolean{ + return (((((!((this.caption == ""))) && (!((this.from_user == ""))))) && (!((this.tweet_id == ""))))); + } + public function toString():String{ + return (((((((((((((((((((((((((((((((((((((((((((((((("TwitterTrackerData: \n" + "lon/lat \t\t\t\t") + lon) + " / ") + lat) + "\n") + "caption \t\t\t\t") + this.caption) + "\n") + "time \t\t\t\t") + this.time) + "\n") + "name \t\t\t\t") + this.name) + "\n") + "user_id \t\t\t\t") + this.user_id) + "\n") + "user_id_str\t\t\t") + this.user_id_str) + "\n") + "profile_picture \t\t") + this.profile_picture) + "\n") + "source \t\t\t\t") + this.source) + "\n") + "iso_language \t\t") + this.iso_language) + "\n") + "from_user \t\t\t") + this.from_user) + "\n") + "from_user_id \t\t") + this.from_user_id) + "\n") + "from_user_id_str \t") + this.from_user_id_str) + "\n") + "place \t\t\t\t") + this.place) + "\n") + "place_name \t\t\t") + this.place_name) + "\n") + "metadata \t\t\t") + this.metadata) + "\n")); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/datatype/VeloTrackerData.as b/flash_decompiled/watchdog/wd/hud/items/datatype/VeloTrackerData.as new file mode 100644 index 0000000..6a99b18 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/datatype/VeloTrackerData.as @@ -0,0 +1,65 @@ +package wd.hud.items.datatype { + import wd.http.*; + import wd.utils.*; + import wd.hud.items.*; + + public class VeloTrackerData extends TrackerData { + + public var address:String = ""; + public var bonus:Number; + public var name:String; + public var open:Number; + public var ref:String; + public var updated:String; + public var total:Number; + public var available:Number; + public var free:Number; + + public function VeloTrackerData(type:int, id:int, lon:Number, lat:Number, extra){ + var tag:String; + var i:String; + super(type, id, lon, lat, extra); + var tags:Array = [ServiceConstants.TAG_ADDRESS, ServiceConstants.TAG_BONUS, ServiceConstants.TAG_NAME, ServiceConstants.TAG_OPEN, ServiceConstants.TAG_REF, ServiceConstants.TAG_TOTAL, ServiceConstants.TAG_UPDATE]; + if ((extra is Boolean)){ + return; + }; + if (extra == null){ + return; + }; + for each (tag in tags) { + if (((!((extra[tag] == null))) && (!((extra[tag] == ""))))){ + if ((this[tag] is Number)){ + this[tag] = parseFloat(extra[tag]); + } else { + this[tag] = extra[tag]; + }; + }; + }; + this.update(extra); + if (Locator.CITY == Locator.PARIS){ + canOpenPopin = false; + for each (i in this.address.split(" ")) { + if ((((int(i) >= 75000)) && ((int(i) < 76000)))){ + canOpenPopin = true; + }; + }; + }; + } + override public function get isValid():Boolean{ + return (((((!((extra is Boolean))) && (!((extra == null))))) && (canOpenPopin))); + } + public function update(tags:Array):void{ + this.available = ((!((tags["available"] == null))) ? parseFloat(tags["available"]) : (this.total * 0.25)); + this.free = ((!((tags["free"] == null))) ? parseFloat(tags["free"]) : (this.total * 0.75)); + if (tags["updated"] == null){ + this.updated = "N/A"; + } else { + this.updated = tags["updated"]; + }; + } + public function toString():String{ + return (((((((((("VeloTrackerData: name" + this.name) + ", available: ") + this.available) + ", free: ") + this.free) + ", total: ") + this.total) + ", updated: ") + this.updated)); + } + + } +}//package wd.hud.items.datatype diff --git a/flash_decompiled/watchdog/wd/hud/items/pictos/UVPicto.as b/flash_decompiled/watchdog/wd/hud/items/pictos/UVPicto.as new file mode 100644 index 0000000..36c852a --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/items/pictos/UVPicto.as @@ -0,0 +1,289 @@ +package wd.hud.items.pictos { + import flash.utils.*; + import flash.geom.*; + import __AS3__.vec.*; + import wd.wq.datas.*; + import wd.http.*; + import wd.providers.*; + import wd.utils.*; + import wd.core.*; + + public class UVPicto { + + private static var pow2Dico:Dictionary; + private static var instances:Dictionary = new Dictionary(); + private static var rectTracker:Rectangle = new Rectangle(0, 0, 43, 43); + private static var rectMetro:Rectangle = new Rectangle(0, 0, 32, 32); + private static var uvs:Vector.; + private static var uvsRoll:Vector.; + public static var textUVs:Dictionary = new Dictionary(); + private static var DATA_TYPE_PICTO_COUNT:int = 19; + private static var PARIS_TRAIN_COUNT:int = 17; + private static var LONDON_TRAIN_COUNT:int = 14; + private static var BERLIN_TRAIN_COUNT:int = 26; + private static var londonStartIndex:int = (DATA_TYPE_PICTO_COUNT + PARIS_TRAIN_COUNT); + private static var berlinStartIndex:int = ((DATA_TYPE_PICTO_COUNT + PARIS_TRAIN_COUNT) + LONDON_TRAIN_COUNT); + private static var parisStationStartIndex:int = (((DATA_TYPE_PICTO_COUNT + PARIS_TRAIN_COUNT) + LONDON_TRAIN_COUNT) + BERLIN_TRAIN_COUNT); + private static var londonStationStartIndex:int = (((DATA_TYPE_PICTO_COUNT + (PARIS_TRAIN_COUNT * 2)) + LONDON_TRAIN_COUNT) + BERLIN_TRAIN_COUNT); + private static var berlinStationStartIndex:int = (((DATA_TYPE_PICTO_COUNT + (PARIS_TRAIN_COUNT * 2)) + (LONDON_TRAIN_COUNT * 2)) + BERLIN_TRAIN_COUNT); + + public const btnSize:int = 22; + public const btnSizeD2:int = 11; + + public var uvs:UVCoord; + public var uvsRoll:UVCoord; + public var width:Number; + public var height:Number; + public var halfWidth:Number; + public var halfHeight:Number; + + public static function init(width:int, height:int):void{ + pow2Dico = new Dictionary(); + var l:int = 20; + var n:int = 1; + var i:int; + while (l--) { + pow2Dico[n] = i; + n = (n * 2); + i++; + }; + uvs = new Vector.(150, true); + uvsRoll = new Vector.(20, true); + uvs[pow2Dico[DataType.ADS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 9), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.ADS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 9), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.ANTENNAS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 4), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.ANTENNAS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 4), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.ATMS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 17), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.ATMS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 17), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.CAMERAS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 12), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.CAMERAS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 12), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.ELECTROMAGNETICS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 8), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.ELECTROMAGNETICS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 8), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.FOUR_SQUARE]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 16), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.FOUR_SQUARE]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 16), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.FLICKRS]] = new UVCoord((rectTracker.width / width), (((rectTracker.height * 15) - 3) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.FLICKRS]] = new UVCoord(((rectTracker.width * 2) / width), (((rectTracker.height * 15) - 3) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.INSTAGRAMS]] = new UVCoord((rectTracker.width / width), (((rectTracker.height * 14) - 3) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.INSTAGRAMS]] = new UVCoord(((rectTracker.width * 2) / width), (((rectTracker.height * 14) - 3) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.INTERNET_RELAYS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height * 4) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.INTERNET_RELAYS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height * 4) / height), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.METRO_STATIONS]] = new UVCoord((rectTracker.width / width), (rectTracker.height / height), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.METRO_STATIONS]] = new UVCoord(((rectTracker.width * 2) / width), (rectTracker.height / height), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.MOBILES]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 7), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.MOBILES]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 7), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.PLACES]] = new UVCoord((rectTracker.width / width), (rectTracker.height / height), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.PLACES]] = new UVCoord(((rectTracker.width * 2) / width), (rectTracker.height / height), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.TOILETS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 11), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.TOILETS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 11), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.TRAFFIC_LIGHTS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 10), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.TRAFFIC_LIGHTS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 10), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.VELO_STATIONS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 2), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.VELO_STATIONS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 2), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.WIFIS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 6), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.WIFIS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 6), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.TWITTERS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 13), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.TWITTERS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 13), (rectTracker.width / width), (rectTracker.height / height)); + uvs[pow2Dico[DataType.RADARS]] = new UVCoord((rectTracker.width / width), ((rectTracker.height / height) * 18), (rectTracker.width / width), (rectTracker.height / height)); + uvsRoll[pow2Dico[DataType.RADARS]] = new UVCoord(((rectTracker.width * 2) / width), ((rectTracker.height / height) * 18), (rectTracker.width / width), (rectTracker.height / height)); + var y:Number = 0; + var x:Number = (43 * 3); + var startIndex:uint = DATA_TYPE_PICTO_COUNT; + i = 0; + while (i < PARIS_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + y = (32 / height); + x = (43 * 3); + i = 0; + while (i < LONDON_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + y = ((32 / height) * 2); + x = (43 * 3); + i = 0; + while (i < BERLIN_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + y = ((32 / height) * 4); + x = (43 * 3); + i = 0; + while (i < PARIS_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + y = ((32 / height) * 5); + x = (43 * 3); + i = 0; + while (i < LONDON_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + y = ((32 / height) * 6); + x = (43 * 3); + i = 0; + while (i < BERLIN_TRAIN_COUNT) { + uvs[startIndex] = new UVCoord(((x + (rectMetro.width * i)) / width), y, (rectMetro.width / width), (rectMetro.height / height)); + startIndex++; + i++; + }; + } + public static function getTextUVs(id:String):UVPicto{ + if (textUVs[id] == null){ + return (null); + }; + if (instances[id] != null){ + return (instances[id]); + }; + var inst:UVPicto = new (UVPicto)(); + inst.uvsRoll = (inst.uvs = textUVs[id]); + inst.width = inst.uvsRoll.realW; + inst.height = inst.uvsRoll.realH; + inst.halfWidth = (inst.width >> 1); + inst.halfHeight = (inst.height >> 1); + instances[(id + "_text")] = inst; + return (inst); + } + public static function getTrackerUVs(type:int):UVPicto{ + if (instances[(type + "picto")] != null){ + return (instances[(type + "picto")]); + }; + var inst:UVPicto = new (UVPicto)(); + var n:uint = pow2Dico[type]; + inst.uvs = UVPicto.uvs[n]; + inst.uvsRoll = UVPicto.uvsRoll[n]; + inst.width = (inst.height = 43); + inst.halfWidth = (inst.halfHeight = 21.5); + instances[(type + "picto")] = inst; + return (inst); + } + public static function getMetroUVs(lineRef:String):UVPicto{ + var n:int; + if (instances[lineRef] != null){ + return (instances[lineRef]); + }; + var lineRef2:String = String(lineRef); + var inst:UVPicto = new (UVPicto)(); + switch (Locator.CITY){ + case Locator.PARIS: + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + n = lineRef2.indexOf("bis"); + if (n != -1){ + switch (lineRef2){ + case "3bis": + inst.uvs = (inst.uvsRoll = UVPicto.uvs[(londonStartIndex - 2)]); + break; + case "7bis": + inst.uvs = (inst.uvsRoll = UVPicto.uvs[(londonStartIndex - 1)]); + break; + }; + } else { + n = ((parseInt(lineRef2) + DATA_TYPE_PICTO_COUNT) - 1); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + }; + break; + case Locator.LONDON: + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + lineRef2 = lineRef2.toUpperCase(); + n = (MetroLineColors.getIDByName(lineRef2) + londonStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + break; + default: + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + lineRef2 = lineRef2.toUpperCase(); + n = (MetroLineColors.getIDByName(lineRef2) + berlinStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + }; + inst.width = (inst.height = 32); + inst.halfWidth = (inst.halfHeight = 16); + instances[lineRef] = inst; + return (inst); + } + public static function getStationUVs(lineRef:String, hasMultipleConnexions:Boolean=false):UVPicto{ + var n:int; + if (hasMultipleConnexions){ + lineRef = ("multiLine" + Config.CITY); + }; + if (instances[(lineRef + "_station")] != null){ + return (instances[(lineRef + "_station")]); + }; + var lineRef2:String = String(lineRef); + var inst:UVPicto = new (UVPicto)(); + switch (Locator.CITY){ + case Locator.PARIS: + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + n = lineRef2.indexOf("bis"); + if (n != -1){ + switch (lineRef2){ + case "3bis": + inst.uvs = (inst.uvsRoll = UVPicto.uvs[(londonStationStartIndex - 2)]); + break; + case "7bis": + inst.uvs = (inst.uvsRoll = UVPicto.uvs[(londonStationStartIndex - 1)]); + break; + }; + } else { + if (hasMultipleConnexions){ + n = (MetroLineColors.getIDByName(lineRef) + parisStationStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + break; + }; + n = ((parseInt(lineRef2) + parisStationStartIndex) - 1); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + }; + break; + case Locator.LONDON: + if (hasMultipleConnexions){ + n = (MetroLineColors.getIDByName(lineRef) + londonStationStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + break; + }; + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + lineRef2 = lineRef2.toUpperCase(); + n = (MetroLineColors.getIDByName(lineRef2) + londonStationStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + break; + default: + if (hasMultipleConnexions){ + n = (MetroLineColors.getIDByName(lineRef) + berlinStationStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + break; + }; + n = lineRef2.indexOf("_"); + if (n != -1){ + lineRef2 = lineRef2.substring(0, n); + }; + lineRef2 = lineRef2.toUpperCase(); + n = (MetroLineColors.getIDByName(lineRef2) + berlinStationStartIndex); + inst.uvs = (inst.uvsRoll = UVPicto.uvs[n]); + }; + inst.width = (inst.height = 32); + inst.halfWidth = (inst.halfHeight = 16); + instances[(lineRef + "station")] = inst; + return (inst); + } + + } +}//package wd.hud.items.pictos diff --git a/flash_decompiled/watchdog/wd/hud/mentions/Mentions.as b/flash_decompiled/watchdog/wd/hud/mentions/Mentions.as new file mode 100644 index 0000000..5179fc8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/mentions/Mentions.as @@ -0,0 +1,50 @@ +package wd.hud.mentions { + import wd.hud.common.text.*; + import flash.display.*; + import wd.http.*; + import wd.providers.texts.*; + import aze.motion.*; + import wd.hud.*; + + public class Mentions extends HudElement { + + private var ctn:Sprite; + + public function Mentions(){ + super(); + } + public function setState(id:uint):void{ + var ti:CustomTextField; + this.alpha = 1; + if (((this.ctn) && (this.contains(this.ctn)))){ + this.removeChild(this.ctn); + }; + this.ctn = new Sprite(); + var ty:uint; + if (id == DataType.INSTAGRAMS){ + ti = new CustomTextField(DataDetailText.instragramDisclaimer, "mentions"); + }; + if (id == DataType.FOUR_SQUARE){ + ti = new CustomTextField(DataDetailText.fourSquareDisclaimer, "mentions"); + }; + if (id == DataType.TWITTERS){ + ti = new CustomTextField(DataDetailText.twitterDisclaimer, "mentions"); + }; + if (id == DataType.FLICKRS){ + ti = new CustomTextField(DataDetailText.flickrDisclaimer, "mentions"); + }; + if (ti){ + ti.wordWrap = false; + ti.x = -(ti.width); + ti.y = ty; + ty = (ty + ti.height); + this.ctn.addChild(ti); + ti.alpha = 0; + eaze(ti).delay(1).to(1, {alpha:1}); + }; + this.ctn.y = -(this.ctn.height); + this.addChild(this.ctn); + } + + } +}//package wd.hud.mentions diff --git a/flash_decompiled/watchdog/wd/hud/objects/TrainHook.as b/flash_decompiled/watchdog/wd/hud/objects/TrainHook.as new file mode 100644 index 0000000..beb4676 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/objects/TrainHook.as @@ -0,0 +1,38 @@ +package wd.hud.objects { + import wd.hud.panels.*; + import wd.hud.items.datatype.*; + import wd.d3.control.*; + import flash.utils.*; + import wd.hud.items.*; + import flash.display.*; + + public class TrainHook extends Sprite { + + private var label:TrainLabel; + public var tracker:Tracker; + private var interval:uint; + private var data:TrainTrackerData; + + public function TrainHook(){ + super(); + this.label = new TrainLabel(); + addChild(this.label); + } + public function hook(tracker:Tracker):void{ + this.tracker = tracker; + this.data = (tracker.data as TrainTrackerData); + this.label.rolloverHandler(tracker); + CameraController.instance.follow(tracker); + this.interval = setInterval(this.update, 50); + } + private function update():void{ + this.label.update(this.tracker.screenPosition); + } + public function release():void{ + CameraController.instance.unfollow(); + clearInterval(this.interval); + this.label.rolloutHandler(this.tracker); + } + + } +}//package wd.hud.objects diff --git a/flash_decompiled/watchdog/wd/hud/objects/VeloStations.as b/flash_decompiled/watchdog/wd/hud/objects/VeloStations.as new file mode 100644 index 0000000..9a65744 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/objects/VeloStations.as @@ -0,0 +1,89 @@ +package wd.hud.objects { + import wd.http.*; + import wd.events.*; + import flash.utils.*; + import wd.core.*; + import wd.hud.items.datatype.*; + import wd.hud.items.*; + import wd.hud.*; + + public class VeloStations { + + private static var instance:VeloStations; + public static var UPDATE_FREQUENCY:int = 600000; + + private var service:VeloStationService; + private var interval:uint; + + public function VeloStations(){ + super(); + this.service = new VeloStationService(); + this.reset(); + instance = this; + } + public static function call():void{ + if (instance != null){ + instance.update(); + }; + } + + public function reset():void{ + this.stop(); + this.service.radius = 500; + this.service.addEventListener(ServiceEvent.VELO_STATIONS_COMPLETE, this.onComplete); + this.service.removeEventListener(ServiceEvent.VELO_STATIONS_COMPLETE, this.onUpdate); + this.service.call(false); + } + public function start():void{ + this.stop(); + this.interval = setInterval(this.update, UPDATE_FREQUENCY); + } + public function stop():void{ + clearInterval(this.interval); + } + private function update():void{ + this.service.radius = Config.SETTINGS_DATA_RADIUS; + this.service.call(true); + } + private function onComplete(e:ServiceEvent):void{ + var k:*; + var stationInfo:Object; + var p:*; + var vtd:VeloTrackerData; + for (k in e.data.bicycles) { + stationInfo = e.data.bicycles[k]; + for (p in stationInfo) { + if (TrackerData.exists(stationInfo[ServiceConstants.KEY_ID])){ + } else { + vtd = new VeloTrackerData(DataType.VELO_STATIONS, stationInfo[ServiceConstants.KEY_ID], stationInfo[ServiceConstants.KEY_LONGITUDE], stationInfo[ServiceConstants.KEY_LATITUDE], stationInfo[ServiceConstants.KEY_TAGS]); + if (vtd.isValid){ + Hud.addItem(vtd); + }; + }; + }; + }; + this.service.removeEventListener(ServiceEvent.VELO_STATIONS_COMPLETE, this.onComplete); + this.service.addEventListener(ServiceEvent.VELO_STATIONS_COMPLETE, this.onUpdate); + call(); + } + private function onUpdate(e:ServiceEvent):void{ + var k:*; + var stationInfo:Object; + var p:*; + var vt:VeloTrackerData; + for (k in e.data.bicycles) { + stationInfo = e.data.bicycles[k]; + for (p in stationInfo) { + if (TrackerData.ids[stationInfo[ServiceConstants.KEY_ID]] == null){ + } else { + vt = (TrackerData.ids[stationInfo[ServiceConstants.KEY_ID]] as VeloTrackerData); + vt.update(stationInfo[ServiceConstants.KEY_TAGS]); + }; + }; + }; + } + private function onCancel(e:ServiceEvent):void{ + } + + } +}//package wd.hud.objects diff --git a/flash_decompiled/watchdog/wd/hud/panels/Compass.as b/flash_decompiled/watchdog/wd/hud/panels/Compass.as new file mode 100644 index 0000000..618ddd6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/Compass.as @@ -0,0 +1,120 @@ +package wd.hud.panels { + import flash.events.*; + import flash.utils.*; + import wd.d3.control.*; + import wd.events.*; + import wd.d3.*; + import flash.display.*; + import aze.motion.*; + import wd.core.*; + import flash.geom.*; + + public class Compass extends Panel { + + public static var tutoStartPoint:Point; + + private const DELTA_ANGLE_VAL:Number = 0.1; + private const DELTA_ZOOM_VAL:Number = 12; + + private var sim:Simulation; + private var asset:CompassAsset; + private var timerAct:Timer; + private var deltaAngle:Number = 0; + private var deltaZoom:Number = 0; + + public function Compass(sim:Simulation){ + super(); + this.sim = sim; + this.asset = new CompassAsset(); + this.asset.scaleX = (this.asset.scaleY = 0.6); + this.addChild(this.asset); + this.setAsButton(this.asset.left, this.turnLeft); + this.setAsButton(this.asset.right, this.turnRight); + this.setAsButton(this.asset.more, this.zoomIn); + this.setAsButton(this.asset.less, this.zoomOut); + this.addEventListener(MouseEvent.ROLL_OUT, this.stopAct); + this.asset.topView.visible = false; + this.timerAct = new Timer(10); + this.timerAct.addEventListener(TimerEvent.TIMER, this.act); + CameraController.instance.addEventListener(NavigatorEvent.ZOOM_CHANGE, this.zoomChange); + this.setBg(this.width, this.height); + } + private function zoomChange(e:Event):void{ + if (CameraController.instance.zoomLevel == 0){ + this.asset.min.visible = false; + this.asset.topView.visible = true; + } else { + this.asset.min.visible = true; + this.asset.topView.visible = false; + }; + } + private function setAsButton(spr:Sprite, downFunc:Function):void{ + spr.buttonMode = true; + spr.mouseChildren = false; + spr.addEventListener(MouseEvent.ROLL_OVER, this.rovButton); + spr.addEventListener(MouseEvent.ROLL_OUT, this.rouButton); + spr.addEventListener(MouseEvent.MOUSE_DOWN, downFunc); + spr.addEventListener(MouseEvent.MOUSE_UP, this.stopAct); + } + override protected function setBg(w:uint, h:uint):void{ + } + private function rovButton(e:Event):void{ + eaze(e.target).to(1, {alpha:0.7}); + } + private function rouButton(e:Event):void{ + eaze(e.target).to(1, {alpha:0.1}); + } + private function turnLeft(e:Event):void{ + Keys.arrows[0] = true; + this.timerAct.start(); + } + private function turnRight(e:Event):void{ + Keys.arrows[2] = true; + this.timerAct.start(); + } + private function zoomIn(e:Event):void{ + CameraController.forward(0.2); + } + private function zoomOut(e:Event):void{ + if (this.asset.topView.visible){ + CameraController.instance.mouseWheelAccu = CameraController.instance.mouseWheelAccuLimit; + CameraController.backward(1); + } else { + CameraController.backward(0.2); + }; + } + private function act(e:Event):void{ + this.sim.location.dest_angle = (this.sim.location.dest_angle + this.deltaAngle); + this.sim.camera.y = (this.sim.camera.y + this.deltaZoom); + this.sim.location.update(true); + } + private function stopAct(e:Event):void{ + this.deltaAngle = 0; + this.deltaZoom = 0; + this.timerAct.stop(); + var i:uint; + while (i < 4) { + Keys.arrows[i] = false; + i++; + }; + } + private function onDown(e:MouseEvent):void{ + this.sim.location.dest_angle = (Math.PI * 0.5); + } + public function render():void{ + } + public function update():void{ + var angle:Number = (this.sim.location.dest_angle - (Math.PI / 2)); + this.asset.north.rotation = (angle * Constants.RAD_TO_DEG); + } + override public function set x(value:Number):void{ + super.x = value; + tutoStartPoint = new Point((this.x + 83), (this.y + 83)); + } + override public function set y(value:Number):void{ + super.y = value; + tutoStartPoint = new Point((this.x + 83), (this.y + 83)); + } + + } +}//package wd.hud.panels diff --git a/flash_decompiled/watchdog/wd/hud/panels/Panel.as b/flash_decompiled/watchdog/wd/hud/panels/Panel.as new file mode 100644 index 0000000..8c2adb8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/Panel.as @@ -0,0 +1,83 @@ +package wd.hud.panels { + import flash.events.*; + import flash.utils.*; + import flash.display.*; + import aze.motion.*; + import flash.text.*; + import wd.hud.*; + + public class Panel extends HudElement { + + public static const LEFT_PANEL_WIDTH:uint = 160; + public static const RIGHT_PANEL_WIDTH:uint = 190; + public static const LINE_H_MARGIN:uint = 8; + + protected var title:TextField; + protected var arrow:Sprite; + protected var bg:Sprite; + protected var reduced:Boolean = false; + protected var expandedContainer:Sprite; + protected var desactivateTimer:Timer; + + public function Panel(){ + super(); + this.addEventListener(MouseEvent.ROLL_OVER, this.rovHandler); + this.addEventListener(MouseEvent.ROLL_OUT, this.rouHandler); + this.desactivateTimer = new Timer(3000, 1); + this.desactivateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, desactivate); + this.expandedContainer = new Sprite(); + this.addChild(this.expandedContainer); + } + protected function addArrow(posX:uint):void{ + this.arrow = new ArrowAsset(); + this.arrow.x = posX; + this.arrow.y = 24; + this.arrow.buttonMode = true; + this.arrow.addEventListener(MouseEvent.CLICK, this.reduceTrigger); + this.addChild(this.arrow); + } + protected function reduceTrigger(e:Event):void{ + var destRotation:Number; + var destAlpha:Number; + if (this.reduced){ + this.reduced = false; + eaze(this.arrow).to(0.3, {rotation:0}); + eaze(this.expandedContainer).to(0.3, {alpha:1}); + } else { + this.reduced = true; + eaze(this.arrow).to(0.3, {rotation:-180}); + eaze(this.expandedContainer).to(0.3, {alpha:0}); + }; + this.setBg(this.width, this.height); + } + protected function setBg(w:uint, h:uint):void{ + if (!(this.bg)){ + this.bg = new Sprite(); + this.addChildAt(this.bg, 0); + addTweenInItem([this.bg]); + } else { + this.setChildIndex(this.bg, 0); + }; + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0, 0.35); + this.bg.graphics.drawRect(0, 0, w, h); + } + protected function rovHandler(e:Event):void{ + this.activate(); + } + protected function rouHandler(e:Event):void{ + this.desactivateTimer.reset(); + this.desactivateTimer.start(); + } + protected function enlight():void{ + this.activate(); + this.desactivateTimer.reset(); + this.desactivateTimer.start(); + } + override protected function activate():void{ + super.activate(); + this.desactivateTimer.stop(); + } + + } +}//package wd.hud.panels diff --git a/flash_decompiled/watchdog/wd/hud/panels/TrackerLabel.as b/flash_decompiled/watchdog/wd/hud/panels/TrackerLabel.as new file mode 100644 index 0000000..ec33e92 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/TrackerLabel.as @@ -0,0 +1,214 @@ +package wd.hud.panels { + import flash.display.*; + import aze.motion.*; + import flash.events.*; + import wd.hud.items.*; + import wd.hud.items.datatype.*; + import aze.motion.easing.*; + import flash.utils.*; + import wd.http.*; + import flash.geom.*; + + public class TrackerLabel extends Sprite { + + protected const PADDING:uint = 5; + protected const DELTA_X:uint = 40; + protected const DELTA_Y:uint = 20; + + protected var line:Sprite; + protected var dot:Shape; + protected var mainLabel:Label; + protected var subLabel:Label; + protected var posX:int = 0; + protected var posY:int = 0; + protected var currentTracker:Tracker; + protected var lineDrawStep:uint = 0; + protected var lineDrawStepMax:uint = 5; + protected var lineEnded:Boolean = false; + protected var LINE_ICON_POS:Dictionary; + protected var hasSub:Boolean; + + public function TrackerLabel(){ + super(); + this.visible = false; + this.line = new Sprite(); + this.mouseEnabled = false; + this.mouseChildren = false; + addChild(this.line); + this.mainLabel = new Label(""); + this.addChild(this.mainLabel); + this.subLabel = new Label(""); + this.addChild(this.subLabel); + this.dot = this.makeDot(); + addChild(this.dot); + this.initDic(); + } + public function rolloutHandler(t:Tracker):void{ + this.line.graphics.clear(); + eaze(this.dot).to(0.2, { + scaleX:0, + scaleY:0 + }); + eaze(this.subLabel).to(0.2, {alpha:0}).delay(0.1); + eaze(this.mainLabel).to(0.2, {alpha:0}); + this.removeEventListener(Event.ENTER_FRAME, this.render); + } + public function rolloverHandler(t:Tracker, text:String="", textSub:String=""):void{ + this.currentTracker = t; + if (text == ""){ + text = t.data.labelData; + }; + if (textSub == ""){ + textSub = t.data.labelSubData; + }; + text = text.toUpperCase(); + textSub = textSub.toUpperCase(); + this.mainLabel.setText(text, (this.currentTracker is TrainTrackerData)); + if (textSub != ""){ + this.hasSub = true; + this.subLabel.setText(textSub); + this.subLabel.visible = true; + } else { + this.hasSub = false; + this.subLabel.visible = false; + }; + this.visible = true; + if (this.trackertIsOnTheLeft()){ + this.posX = -(this.DELTA_X); + } else { + this.posX = this.DELTA_X; + }; + if (this.trackertIsOnTop()){ + this.posY = -(this.DELTA_Y); + } else { + this.posY = this.DELTA_Y; + }; + this.posX = (this.posX + this.currentTracker.screenPosition.x); + this.posY = (this.posY + this.currentTracker.screenPosition.y); + this.lineDrawStep = 0; + this.dot.x = this.posX; + this.dot.y = this.posY; + this.dot.scaleX = (this.dot.scaleY = 0); + this.lineEnded = false; + this.addEventListener(Event.ENTER_FRAME, this.render); + } + public function makeDot():Shape{ + var s:Shape = new Shape(); + s.graphics.lineStyle(2, 0xFFFFFF, 1); + s.graphics.beginFill(0, 1); + s.graphics.drawCircle(-2, 0, 4); + return (s); + } + public function render(e:Event=null):void{ + var iconDeltaX:Number = ((this.LINE_ICON_POS[this.currentTracker.data.type]) ? this.LINE_ICON_POS[this.currentTracker.data.type].x : 5); + var iconDeltaY:Number = ((this.LINE_ICON_POS[this.currentTracker.data.type]) ? this.LINE_ICON_POS[this.currentTracker.data.type].y : 5); + if (this.trackertIsOnTheLeft()){ + iconDeltaX = -(iconDeltaX); + this.mainLabel.x = (((this.dot.x - this.mainLabel.width) + this.PADDING) - 2); + this.subLabel.x = (((this.dot.x - this.subLabel.width) + this.PADDING) - 2); + } else { + this.mainLabel.x = ((this.dot.x + this.PADDING) - 2); + this.subLabel.x = this.mainLabel.x; + }; + if (this.trackertIsOnTop()){ + iconDeltaY = -(iconDeltaY); + }; + if (this.hasSub){ + this.mainLabel.y = ((this.dot.y - this.mainLabel.height) + 3); + this.subLabel.y = ((this.mainLabel.y + this.mainLabel.height) - 1); + this.subLabel.render(); + } else { + this.mainLabel.y = ((this.dot.y - (this.mainLabel.height / 2)) + 3); + }; + this.mainLabel.render(); + var lx0:Number = (this.currentTracker.screenPosition.x + iconDeltaX); + var ly0:Number = (this.currentTracker.screenPosition.y + iconDeltaY); + var lxt:Number = (lx0 + ((this.dot.x - lx0) * (this.lineDrawStep / this.lineDrawStepMax))); + var lyt:Number = (ly0 + ((this.dot.y - ly0) * (this.lineDrawStep / this.lineDrawStepMax))); + var g:Graphics = this.line.graphics; + g.clear(); + g.moveTo(lx0, ly0); + g.lineStyle(1, 0x575757, 1); + g.lineTo(lxt, lyt); + this.lineDrawStep++; + this.lineDrawStep = Math.min(this.lineDrawStep, this.lineDrawStepMax); + if ((((this.lineEnded == false)) && ((this.lineDrawStep == this.lineDrawStepMax)))){ + this.lineEnded = true; + this.showDot(); + }; + } + private function showDot():void{ + eaze(this.dot).to(0.5, { + scaleX:1, + scaleY:1 + }).easing(Back.easeInOut); + eaze(this.mainLabel).to(0.3, {alpha:1}).delay(0.2); + if (this.hasSub){ + eaze(this.subLabel).to(0.3, {alpha:1}).delay(0.2); + }; + } + protected function trackertIsOnTheLeft():Boolean{ + return ((this.currentTracker.screenPosition.x > (stage.stageWidth / 2))); + } + protected function trackertIsOnTop():Boolean{ + return ((this.currentTracker.screenPosition.y > (stage.stageHeight / 2))); + } + private function initDic():void{ + this.LINE_ICON_POS = new Dictionary(); + this.LINE_ICON_POS[DataType.METRO_STATIONS] = new Point(6, 6); + this.LINE_ICON_POS[DataType.TOILETS] = new Point(9, 10); + this.LINE_ICON_POS[DataType.INTERNET_RELAYS] = new Point(8, 11); + this.LINE_ICON_POS[DataType.MOBILES] = new Point(8, 8); + this.LINE_ICON_POS[DataType.ADS] = new Point(11, 11); + this.LINE_ICON_POS[DataType.TOILETS] = new Point(10, 10); + this.LINE_ICON_POS[DataType.VELO_STATIONS] = new Point(10, 10); + this.LINE_ICON_POS[DataType.INSTAGRAMS] = new Point(13, 8); + this.LINE_ICON_POS[DataType.WIFIS] = new Point(9, 12); + this.LINE_ICON_POS[DataType.ELECTROMAGNETICS] = new Point(6, 6); + this.LINE_ICON_POS[DataType.TRAFFIC_LIGHTS] = new Point(6, 6); + this.LINE_ICON_POS[DataType.CAMERAS] = new Point(6, 9); + this.LINE_ICON_POS[DataType.TWITTERS] = new Point(12, 8); + this.LINE_ICON_POS[DataType.FOUR_SQUARE] = new Point(10, 8); + this.LINE_ICON_POS[DataType.ATMS] = new Point(8, 8); + this.LINE_ICON_POS[DataType.FLICKRS] = new Point(12, 10); + this.LINE_ICON_POS[DataType.PLACES] = new Point(3, 3); + this.LINE_ICON_POS[DataType.RADARS] = new Point(8, 8); + } + + } +}//package wd.hud.panels + +import flash.display.*; +import wd.hud.common.text.*; + +class Label extends Sprite { + + private const PADDING:uint = 5; + + private var labeltxt:CustomTextField; + private var bg:Sprite; + + public function Label(txt:String){ + super(); + this.bg = new Sprite(); + this.addChild(this.bg); + this.labeltxt = new CustomTextField("", "rolloverTrackerLabel"); + this.labeltxt.mouseEnabled = false; + this.labeltxt.wordWrap = false; + addChild(this.labeltxt); + } + public function setText(txt:String, tweening:Boolean=true):void{ + if (tweening){ + this.labeltxt.startTween(txt); + } else { + this.labeltxt.text = txt; + }; + } + public function render():void{ + this.bg.graphics.clear(); + this.bg.graphics.lineStyle(1, 0x575757, 1, false, "normel", CapsStyle.SQUARE); + this.bg.graphics.beginFill(0, 1); + this.bg.graphics.drawRect(-(this.PADDING), (-(this.PADDING) / 2), (this.labeltxt.width + (this.PADDING * 2)), (this.labeltxt.height + this.PADDING)); + } + +} diff --git a/flash_decompiled/watchdog/wd/hud/panels/TrainLabel.as b/flash_decompiled/watchdog/wd/hud/panels/TrainLabel.as new file mode 100644 index 0000000..cae6e08 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/TrainLabel.as @@ -0,0 +1,28 @@ +package wd.hud.panels { + import flash.geom.*; + + public class TrainLabel extends TrackerLabel { + + public function TrainLabel(){ + super(); + } + public function update(dest:Point):void{ + mainLabel.setText(currentTracker.data.labelData, false); + if (trackertIsOnTheLeft()){ + posX = -(DELTA_X); + } else { + posX = DELTA_X; + }; + if (trackertIsOnTop()){ + posY = -(DELTA_Y); + } else { + posY = DELTA_Y; + }; + posX = (posX + currentTracker.screenPosition.x); + posY = (posY + currentTracker.screenPosition.y); + dot.x = posX; + dot.y = posY; + } + + } +}//package wd.hud.panels diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/District.as b/flash_decompiled/watchdog/wd/hud/panels/district/District.as new file mode 100644 index 0000000..53eefb8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/District.as @@ -0,0 +1,29 @@ +package wd.hud.panels.district { + import __AS3__.vec.*; + import flash.geom.*; + import biga.utils.*; + + public class District { + + public var id:int; + public var name:String; + public var vertices:Vector.; + + public function District(id:int, name:String, vertexList:String){ + super(); + this.id = id; + this.name = name; + this.vertices = Vector.([]); + var tmp:Vector. = Vector.(vertexList.split(",")); + var i:int; + while (i < tmp.length) { + this.vertices.push(new Point(tmp[(i + 1)], tmp[i])); + i = (i + 2); + }; + } + public function contains(longitude:Number, latitude:Number):Boolean{ + return (PolygonUtils.contains(longitude, latitude, this.vertices)); + } + + } +}//package wd.hud.panels.district diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/DistrictData.as b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictData.as new file mode 100644 index 0000000..352b0d4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictData.as @@ -0,0 +1,79 @@ +package wd.hud.panels.district { + + public class DistrictData { + + public var id:int; + public var name:String; + public var inhabitants:Number; + public var births:Number; + public var display:String; + public var deaths_thousand:Number; + public var salary_monthly:Number; + public var births_thousand:Number; + public var unemployment:Number; + public var salary_hourly:Number; + public var deaths:Number; + public var electricity_consumption:Number; + public var electricity:Number; + public var jobs:String; + public var crimes_thousands:String; + public var crimes_thousand:Number; + public var crimes:Number; + + public function DistrictData(){ + super(); + } + public function reset(result:Object=null):void{ + var k:*; + var i:*; + var value:String; + if ((((result == null)) || ((result.length == 0)))){ + this.name = "-------"; + this.id = 0; + this.inhabitants = 0; + this.births = 0; + this.display = ""; + this.deaths_thousand = 0; + this.salary_monthly = 0; + this.births_thousand = 0; + this.unemployment = 0; + this.salary_hourly = 0; + this.deaths = 0; + this.electricity_consumption = 0; + this.electricity = 0; + this.jobs = ""; + this.crimes_thousands = ""; + this.crimes_thousand = 0; + this.crimes = 0; + return; + }; + this.id = result.id; + for (k in result) { + if ((result[k] is Object)){ + for (i in result[k]) { + if ((this[i] is String)){ + trace(("i" + result[k][i])); + this[i] = result[k][i]; + } else { + value = result[k][i]; + value = value.replace(/\s/gi, ""); + if (value.lastIndexOf(",") != -1){ + value = value.replace(",", "."); + }; + this[i] = parseFloat(value); + }; + }; + }; + }; + if (isNaN(this.salary_monthly)){ + this.salary_monthly = -1; + }; + this.name = this.display; + this.crimes_thousand = (this.crimes_thousand * 0.01); + } + public function toString():String{ + return (((((((((((((((((((((((((((((((((((((((((("name \t\t\t\t" + this.name) + "\n") + "id \t\t\t\t") + this.id) + "\n") + "inhabitants\t\t\t") + this.inhabitants) + "\n") + "births\t\t\t\t") + this.births) + "\n") + "display\t\t\t") + this.display) + "\n") + "deaths_thousand\t\t") + this.deaths_thousand) + "\n") + "salary_monthly\t\t") + this.salary_monthly) + "\n") + "births_thousand\t\t") + this.births_thousand) + "\n") + "unemployment\t\t\t") + this.unemployment) + "\n") + "salary_hourly\t\t\t") + this.salary_hourly) + "\n") + "deaths\t\t\t\t") + this.deaths) + "\n") + "electricity_consumption\t\t\t\t") + this.electricity_consumption) + "\n") + "electricity\t\t\t\t") + this.electricity_consumption) + "\n") + "crimes_thousand\t\t\t\t") + this.crimes_thousand) + "\n")); + } + + } +}//package wd.hud.panels.district diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/DistrictInfo.as b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictInfo.as new file mode 100644 index 0000000..b4d9148 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictInfo.as @@ -0,0 +1,74 @@ +package wd.hud.panels.district { + import wd.http.*; + import wd.events.*; + import flash.utils.*; + import wd.utils.*; + import flash.display.*; + + public class DistrictInfo extends Sprite { + + private var service:DistrictService; + private var districts:Dictionary; + private var current:District; + private var _data:DistrictData; + + public function DistrictInfo(){ + super(); + this.data = new DistrictData(); + this.data.reset(null); + this.service = new DistrictService(); + this.service.addEventListener(ServiceEvent.DISTRICT_COMPLETE, this.onServiceComplete); + this.service.call(); + this.service.addEventListener(ServiceEvent.STATISTICS_COMPLETE, this.onStatisticsComplete); + this.service.addEventListener(ServiceEvent.STATISTICS_CANCEL, this.onStatisticsCancel); + } + private function onServiceComplete(e:ServiceEvent):void{ + var info:Object; + var k:*; + this.districts = new Dictionary(true); + var result:Object = e.data; + for (k in result) { + info = result[k]; + this.districts[info[ServiceConstants.KEY_ID]] = new District(info[ServiceConstants.KEY_ID], info[ServiceConstants.KEY_NAME], info[ServiceConstants.KEY_VERTICES]); + }; + this.current = null; + this.checkLocation(); + setInterval(this.checkLocation, 100); + } + public function checkLocation():void{ + var next:District; + var d:District; + for each (d in this.districts) { + if (d.contains(Locator.LONGITUDE, Locator.LATITUDE)){ + next = d; + }; + }; + if ((((next == null)) && (!((this.current == null))))){ + this.setDefaults(); + dispatchEvent(new ServiceEvent(ServiceEvent.STATISTICS_COMPLETE, null)); + this.current = null; + }; + if (((!((next == null))) && (!((next == this.current))))){ + this.service.getStats(next); + this.current = next; + }; + } + private function setDefaults():void{ + this.data.reset(null); + } + private function onStatisticsComplete(e:ServiceEvent):void{ + this.data.reset(e.data); + dispatchEvent(e); + } + private function onStatisticsCancel(e:ServiceEvent):void{ + this.data.reset(null); + } + public function get data():DistrictData{ + return (this._data); + } + public function set data(value:DistrictData):void{ + this._data = value; + } + + } +}//package wd.hud.panels.district diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/DistrictPanel.as b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictPanel.as new file mode 100644 index 0000000..5db8071 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/DistrictPanel.as @@ -0,0 +1,177 @@ +package wd.hud.panels.district { + import wd.hud.common.graphics.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import wd.events.*; + import wd.utils.*; + import wd.hud.panels.district.distictDataDisplay.*; + import flash.events.*; + import flash.utils.*; + import flash.geom.*; + import wd.hud.panels.*; + + public class DistrictPanel extends Panel { + + public static var tutoStartPoint:Point; + + private var info:DistrictInfo; + private var districtName:CustomTextField; + private var districtName2:CustomTextField; + private var latlong:CustomTextField; + private var timerRefreshLatLong:Timer; + private var line2:Line; + private var firstRefresh:Boolean = true; + private var infoBubble:InfoBubble; + + public function DistrictPanel(){ + var unit:String; + super(); + var l:Line = new Line(RIGHT_PANEL_WIDTH); + addTweenInItem([l, { + scaleX:0, + x:RIGHT_PANEL_WIDTH + }, { + scaleX:1, + x:0 + }]); + this.addChild(l); + title = new CustomTextField(StatsText.title, "panelTitle"); + title.width = RIGHT_PANEL_WIDTH; + title.y = 0; + addTweenInItem([title, {alpha:0}, {alpha:1}]); + this.addChild(title); + addArrow((RIGHT_PANEL_WIDTH - 7)); + addTweenInItem([arrow, {alpha:0}, {alpha:1}]); + this.districtName = new CustomTextField("", "statsPanelLocation"); + this.districtName.wordWrap = false; + this.districtName.width = RIGHT_PANEL_WIDTH; + addChild(this.districtName); + this.districtName.y = ((title.height + title.y) - 15); + this.districtName2 = new CustomTextField("e", "exp"); + this.districtName2.y = this.districtName.y; + this.districtName2.visible = false; + addChild(this.districtName2); + this.latlong = new CustomTextField("", "latlong", CustomTextField.AUTOSIZE_RIGHT); + addChild(this.latlong); + this.latlong.wordWrap = false; + this.latlong.y = ((this.districtName.height + this.districtName.y) - 26); + this.latlong.x = RIGHT_PANEL_WIDTH; + this.line2 = new Line(RIGHT_PANEL_WIDTH); + this.line2.y = ((this.latlong.y + this.latlong.height) + LINE_H_MARGIN); + addTweenInItem([this.line2, { + scaleX:0, + x:RIGHT_PANEL_WIDTH + }, { + scaleX:1, + x:0 + }]); + this.addChild(this.line2); + this.info = new DistrictInfo(); + this.info.addEventListener(ServiceEvent.STATISTICS_COMPLETE, this.onStatsComplete); + var oy:int = (this.line2.y + 5); + var slideHeight:int = 40; + if (Locator.CITY == Locator.LONDON){ + unit = "£"; + } else { + unit = "€"; + }; + var d1:DistrictDataAmount = new DistrictDataAmount(this.info.data, "salary_monthly", StatsText.incomeText, RIGHT_PANEL_WIDTH, oy, unit, CityTexts.perMonth); + expandedContainer.addChild(d1); + d1.addEventListener(TextEvent.LINK, this.linkHandler); + addTweenInItem([d1, {alpha:0}, {alpha:1}]); + oy = (oy + d1.height); + var d2:DistrictDataSlider = new DistrictDataSlider(this.info.data, "unemployment", StatsText.unemploymentText, RIGHT_PANEL_WIDTH, oy); + expandedContainer.addChild(d2); + d2.addEventListener(TextEvent.LINK, this.linkHandler); + addTweenInItem([d2, {alpha:0}, {alpha:1}]); + oy = (oy + d2.height); + var d3:DistrictDataSlider = new DistrictDataSlider(this.info.data, "crimes_thousand", StatsText.crimeInfractionText, RIGHT_PANEL_WIDTH, oy); + expandedContainer.addChild(d3); + d3.addEventListener(TextEvent.LINK, this.linkHandler); + addTweenInItem([d3, {alpha:0}, {alpha:1}]); + oy = (oy + d3.height); + var d4:DistrictDataAmount = new DistrictDataAmount(this.info.data, "electricity", StatsText.electricityConsumption, RIGHT_PANEL_WIDTH, oy, CityTexts.electricityConsumptionUnit); + expandedContainer.addChild(d4); + d4.addEventListener(TextEvent.LINK, this.linkHandler); + addTweenInItem([d4, {alpha:0}, {alpha:1}]); + this.setBg(this.width, this.height); + this.infoBubble = new InfoBubble(); + this.infoBubble.x = -20; + this.addChild(this.infoBubble); + this.timerRefreshLatLong = new Timer(100); + this.timerRefreshLatLong.addEventListener(TimerEvent.TIMER, this.refreshLatLong); + this.timerRefreshLatLong.start(); + } + private function linkHandler(e:TextEvent):void{ + trace(e.currentTarget.property); + this.infoBubble.setText(e.currentTarget.property); + this.infoBubble.y = e.currentTarget.y; + } + private function refreshLatLong(e:Event):void{ + this.latlong.text = ((Locator.LATITUDE.toFixed(6) + " ") + Locator.LONGITUDE.toFixed(6)); + } + private function onStatsComplete(e:ServiceEvent):void{ + URLFormater.district = this.info.data.name; + if (this.info.data.name.length < 4){ + this.districtName2.visible = true; + if (!(this.firstRefresh)){ + tweenInElement(this.districtName2, {alpha:0}, {alpha:1}); + }; + this.districtName.text = this.info.data.name.split("e")[0]; + } else { + this.districtName2.visible = false; + this.districtName.text = this.info.data.name; + }; + if (!(this.firstRefresh)){ + tweenInElement(this.districtName, {alpha:0}, {alpha:1}); + }; + this.districtName.scaleX = (this.districtName.scaleY = 1); + this.districtName.y = ((title.height + title.y) - 15); + while (this.districtName.width > RIGHT_PANEL_WIDTH) { + this.districtName.scaleX = (this.districtName.scaleX - 0.05); + this.districtName.y = (this.districtName.y + 1); + this.districtName.scaleY = this.districtName.scaleX; + }; + if (this.info.data.name.length > 4){ + while (this.districtName.height > 41) { + this.districtName.scaleX = (this.districtName.scaleX - 0.05); + this.districtName.y = (this.districtName.y + 1); + this.districtName.scaleY = this.districtName.scaleX; + }; + }; + this.districtName2.x = (this.districtName.x + this.districtName.width); + if ((((this.districtName.height > 41)) && ((this.info.data.name.length > 4)))){ + this.latlong.visible = false; + } else { + this.latlong.visible = true; + }; + if (this.info.data.name.length < 4){ + this.latlong.y = ((this.districtName.height + this.districtName.y) - 26); + } else { + this.latlong.y = ((this.line2.y - this.latlong.height) + 1); + }; + var i:int; + while (i < DistrictDataDisplay.datatsDisplays.length) { + DistrictDataDisplay.datatsDisplays[i].update(1, (i * 0.25)); + i++; + }; + this.firstRefresh = false; + } + override protected function setBg(w:uint, h:uint):void{ + if (reduced){ + super.setBg(RIGHT_PANEL_WIDTH, this.line2.y); + } else { + super.setBg(RIGHT_PANEL_WIDTH, h); + }; + } + override public function set x(value:Number):void{ + super.x = value; + tutoStartPoint = new Point(this.x, this.y); + } + override public function set y(value:Number):void{ + super.y = value; + tutoStartPoint = new Point(this.x, this.y); + } + + } +}//package wd.hud.panels.district diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/InfoBubble.as b/flash_decompiled/watchdog/wd/hud/panels/district/InfoBubble.as new file mode 100644 index 0000000..3c25e62 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/InfoBubble.as @@ -0,0 +1,73 @@ +package wd.hud.panels.district { + import flash.display.*; + import wd.hud.common.text.*; + import flash.events.*; + import wd.providers.texts.*; + import aze.motion.*; + + public class InfoBubble extends Sprite { + + private var bg:Sprite; + private var ctf:CustomTextField; + private var symbStart:DistrictPanelInfoBubbleStartAsset; + private var symbEnd:DistrictPanelInfoBubbleEndAsset; + private var symbClose:DistrictPanelInfoBubbleCloseAsset; + + public function InfoBubble(){ + super(); + this.bg = new Sprite(); + this.addChild(this.bg); + this.ctf = new CustomTextField("", "infoPopin"); + this.addChild(this.ctf); + this.symbStart = new DistrictPanelInfoBubbleStartAsset(); + this.addChild(this.symbStart); + this.symbEnd = new DistrictPanelInfoBubbleEndAsset(); + this.addChild(this.symbEnd); + this.symbEnd.x = -(this.symbEnd.width); + this.symbClose = new DistrictPanelInfoBubbleCloseAsset(); + this.symbClose.x = ((-(this.symbEnd.width) - this.symbClose.width) - 8); + this.symbClose.y = ((this.symbEnd.height - this.symbClose.height) / 2); + this.symbClose.buttonMode = true; + this.symbClose.mouseChildren = false; + this.symbClose.addEventListener(MouseEvent.CLICK, this.close); + this.addChild(this.symbClose); + this.visible = false; + } + public function setText(propertyName:String):void{ + var txt:String = ""; + switch (propertyName){ + case "salary_monthly": + txt = StatsText.infoPopinTxtIncome; + break; + case "unemployment": + txt = StatsText.infoPopinTxtUnemployment; + break; + case "crimes_thousand": + txt = StatsText.infoPopinTxtCrime; + break; + case "electricity": + txt = StatsText.infoPopinTxtElectricity; + break; + }; + this.ctf.text = txt; + this.ctf.width = 100; + while (this.ctf.height > this.symbStart.height) { + this.ctf.width = (this.ctf.width + 10); + }; + this.ctf.x = ((this.symbClose.x - this.ctf.width) - 8); + this.ctf.y = ((this.symbEnd.height - this.ctf.height) / 2); + this.symbStart.x = ((this.ctf.x - this.symbStart.width) - 2); + this.visible = true; + this.alpha = 0; + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0, 0.35); + this.bg.graphics.drawRect(0, -1, this.width, this.height); + this.bg.x = this.symbStart.x; + eaze(this).to(0.4, {alpha:1}); + } + private function close(e:MouseEvent):void{ + this.visible = false; + } + + } +}//package wd.hud.panels.district diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataAmount.as b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataAmount.as new file mode 100644 index 0000000..a342f85 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataAmount.as @@ -0,0 +1,55 @@ +package wd.hud.panels.district.distictDataDisplay { + import wd.hud.common.text.*; + import wd.hud.panels.district.*; + + public class DistrictDataAmount extends DistrictDataDisplay { + + private var unit:String = "XX"; + private var per:String = "XX"; + private var dataValue:CustomTextField; + + public function DistrictDataAmount(data:DistrictData, property:String, labelTxt:String, w:uint, _y:Number, unit:String, per:String=""){ + super(data, property, labelTxt, w, _y); + this.unit = unit; + this.per = per; + this.dataValue = new CustomTextField("", ("statsPanelDataAmountValue_" + property)); + this.dataValue.x = 0; + this.dataValue.y = (label.height - 5); + this.dataValue.width = alowedWidth; + value = data[property]; + this.addChild(this.dataValue); + } + override protected function render():void{ + super.render(); + var d:String = this.addDots(value.toFixed(0).toString()); + if ((((value == 0)) || ((value == -1)))){ + d = "--- "; + }; + if (this.unit == "£"){ + this.dataValue.text = ((((this.unit + d.replace(".", ",")) + " ") + this.per) + ""); + } else { + this.dataValue.text = ((((d + this.unit) + " ") + this.per) + ""); + }; + } + private function addDots(val:String):String{ + var r:String = ""; + var pad:uint; + if (val.length < 4){ + return (val); + }; + var i:int = (val.length - 1); + while (i >= 0) { + r = val.charAt(i).concat(r); + if ((((pad == 2)) && ((i > 0)))){ + r = ".".concat(r); + pad = 0; + } else { + pad++; + }; + i--; + }; + return (r); + } + + } +}//package wd.hud.panels.district.distictDataDisplay diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataDisplay.as b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataDisplay.as new file mode 100644 index 0000000..f46e670 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataDisplay.as @@ -0,0 +1,48 @@ +package wd.hud.panels.district.distictDataDisplay { + import __AS3__.vec.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import wd.hud.panels.district.*; + import aze.motion.*; + import flash.display.*; + + public class DistrictDataDisplay extends Sprite { + + public static var datatsDisplays:Vector. = new Vector.(); +; + + protected var data:DistrictData; + public var property:String; + protected var alowedWidth:uint; + protected var label:CustomTextField; + protected var labelTxt:String; + public var value:Number; + + public function DistrictDataDisplay(data:DistrictData, property:String, labelTxt:String, w:uint, _y:Number){ + super(); + this.data = data; + this.property = property; + this.y = _y; + this.alowedWidth = w; + this.label = new CustomTextField((((((labelTxt + " ") + StatsText.infoPopinBtn) + ""), "statsPanelDataLabel"); + this.labelTxt = labelTxt; + this.label.width = this.alowedWidth; + addChild(this.label); + datatsDisplays.push(this); + } + protected function register():void{ + } + public function update(duration:Number=0.25, delay:Number=0.1):void{ + if (isNaN(this.value)){ + this.value = 0; + }; + if ((((this.data[this.property] == null)) || (isNaN(this.data[this.property])))){ + this.data[this.property] = 0; + }; + eaze(this).delay(delay).to(duration, {value:this.data[this.property]}).onUpdate(this.render); + } + protected function render():void{ + } + + } +}//package wd.hud.panels.district.distictDataDisplay diff --git a/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataSlider.as b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataSlider.as new file mode 100644 index 0000000..9ea4534 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/district/distictDataDisplay/DistrictDataSlider.as @@ -0,0 +1,67 @@ +package wd.hud.panels.district.distictDataDisplay { + import flash.geom.*; + import wd.hud.common.text.*; + import wd.hud.panels.district.*; + import flash.display.*; + + public class DistrictDataSlider extends DistrictDataDisplay { + + private static var rect:Rectangle; + + private var dataValue:CustomTextField; + + public function DistrictDataSlider(data:DistrictData, property:String, labelTxt:String, w:uint, _y:Number){ + super(data, property, labelTxt, w, _y); + rect = new Rectangle(0, 0, alowedWidth, 11); + this.dataValue = new CustomTextField("0%", "statsPanelDataSilderValueOut"); + this.dataValue.x = 0; + this.dataValue.width = alowedWidth; + this.dataValue.y = (label.height - 2); + value = data[property]; + this.addChild(this.dataValue); + this.drawBg(); + } + override public function update(duration:Number=0.25, delay:Number=0.1):void{ + super.update(duration, delay); + } + override protected function render():void{ + var val:Number; + if (isNaN(value)){ + value = 0; + }; + graphics.clear(); + this.drawBg(); + graphics.beginFill(0xFFFFFF); + if (property == "crimes_thousand"){ + val = ((value * 0.1) * rect.width); + if (Math.round((value * 100)) <= 0){ + this.dataValue.text = "---"; + } else { + this.dataValue.text = (Math.round((value * 100)).toString() + "‰"); + }; + } else { + val = ((value * 0.01) * rect.width); + if ((((value.toFixed(2) == "0.00")) || ((value.toFixed(2) == "-1.00")))){ + this.dataValue.text = "---"; + } else { + this.dataValue.text = (value.toFixed(2).toString() + "%"); + }; + }; + graphics.lineStyle(1, 0xFFFFFF, 0, false, "normal", CapsStyle.SQUARE); + graphics.drawRect(0, int((label.height + 2)), val, rect.height); + this.dataValue.x = val; + } + private function drawBg():void{ + var sh:int = (label.height + 2); + graphics.beginFill(0xFFFFFF, 0.25); + graphics.lineStyle(1, 0xFFFFFF, 0, false, "normal", CapsStyle.SQUARE); + graphics.drawRect(0, sh, rect.width, rect.height); + graphics.lineStyle(1, 0xFFFFFF, 1, false, "normal", CapsStyle.SQUARE); + graphics.moveTo(0, sh); + graphics.lineTo(0, (sh + rect.height)); + graphics.moveTo(rect.width, sh); + graphics.lineTo(rect.width, (sh + rect.height)); + } + + } +}//package wd.hud.panels.district.distictDataDisplay diff --git a/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItem.as b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItem.as new file mode 100644 index 0000000..6d909a3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItem.as @@ -0,0 +1,84 @@ +package wd.hud.panels.layers { + import flash.display.*; + import wd.hud.common.text.*; + import flash.events.*; + import wd.hud.*; + import wd.core.*; + import wd.http.*; + import wd.sound.*; + import aze.motion.*; + import flash.text.*; + + public class LayerItem extends Sprite { + + private var type; + private var label:TextField; + private var h:int; + private var hud:Hud; + private var picto:Sprite; + + public function LayerItem(hud:Hud, type, labelTxt:String, h:int=20, w:uint=190){ + super(); + this.hud = hud; + this.h = h; + this.type = type; + this.picto = new Sprite(); + if ((type is int)){ + this.picto = new LayerItemIcon(type); + this.picto.visible = false; + this.addChild(this.picto); + this.picto.x = 10; + this.picto.y = 9; + this.label = new CustomTextField(labelTxt.toUpperCase(), "layerPanelItem", CustomTextField.AUTOSIZE_LEFT); + this.label.x = 20; + } else { + this.label = new CustomTextField((labelTxt.toUpperCase() + "/"), "layerPanelFolder", CustomTextField.AUTOSIZE_LEFT); + }; + this.label.width = (w - this.picto.width); + addChild(this.label); + this.drawBg(); + this.drawState(); + mouseChildren = false; + buttonMode = true; + addEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + } + public function getType(){ + return (this.type); + } + private function onDown(e:MouseEvent):void{ + graphics.clear(); + this.drawBg(); + if ((this.type is Array)){ + AppState.toggleMenuByType(this.type[0]); + } else { + AppState.toggle(this.type); + if (this.type == DataType.TRAFFIC_LIGHTS){ + if (AppState.isActive(DataType.TRAFFIC_LIGHTS)){ + AppState.activate(DataType.RADARS); + } else { + AppState.deactivate(DataType.RADARS); + }; + }; + }; + this.hud.checkState(); + this.drawState(); + SoundManager.playFX("ClickPanneauFiltre", 1); + } + private function drawBg():void{ + graphics.beginFill(0, 0); + graphics.drawRect(0, 0, this.label.width, this.h); + } + private function drawState():void{ + var palpha:Number = ((AppState.isActive(this.type)) ? 1 : 0.35); + var lalpha:Number = ((AppState.isActive(this.type)) ? 1 : 0.35); + eaze(this.picto).to(0.3, {alpha:palpha}); + eaze(this.label).to(0.3, {alpha:lalpha}); + } + public function checkState():void{ + graphics.clear(); + this.drawBg(); + this.drawState(); + } + + } +}//package wd.hud.panels.layers diff --git a/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon.as b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon.as new file mode 100644 index 0000000..e979ec5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon.as @@ -0,0 +1,78 @@ +package wd.hud.panels.layers { + import flash.geom.*; + import wd.http.*; + import flash.events.*; + import flash.display.*; + + public class LayerItemIcon extends Sprite { + + private static var icons_src:Class = LayerItemIcon_icons_src; + public static var icons:BitmapData = new icons_src().bitmapData; + private static var rect:Rectangle = new Rectangle(0, 0, 12, 12); + + public function LayerItemIcon(type:uint){ + super(); + var m:Matrix = new Matrix(); + var w:int = rect.width; + var h:int = rect.height; + m.tx = -16; + switch (type){ + case DataType.ATMS: + m.ty = -752; + break; + case DataType.CAMERAS: + m.ty = -531; + break; + case DataType.ELECTROMAGNETICS: + m.ty = -362; + break; + case DataType.FLICKRS: + m.ty = -661; + break; + case DataType.INSTAGRAMS: + m.ty = -617; + break; + case DataType.WIFIS: + m.ty = -273; + break; + case DataType.INTERNET_RELAYS: + m.ty = -189; + break; + case DataType.ADS: + m.ty = -404; + break; + case DataType.METRO_STATIONS: + m.ty = -15; + break; + case DataType.MOBILES: + m.ty = -316; + break; + case DataType.TRAFFIC_LIGHTS: + m.ty = -447; + break; + case DataType.TOILETS: + m.ty = -487; + break; + case DataType.TWITTERS: + m.ty = -574; + break; + case DataType.VELO_STATIONS: + m.ty = -102; + break; + case DataType.FOUR_SQUARE: + m.ty = -706; + break; + }; + m.tx = (m.tx - (rect.width * 0.5)); + m.ty = (m.ty - (rect.height * 0.5)); + graphics.beginBitmapFill(icons, m, false, false); + graphics.drawRect((-(rect.width) * 0.5), (-(rect.height) * 0.5), rect.width, rect.height); + cacheAsBitmap = true; + buttonMode = true; + addEventListener(MouseEvent.CLICK, this.onClick); + } + private function onClick(e:MouseEvent):void{ + } + + } +}//package wd.hud.panels.layers diff --git a/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon_icons_src.as b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon_icons_src.as new file mode 100644 index 0000000..f7f61b4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerItemIcon_icons_src.as @@ -0,0 +1,7 @@ +package wd.hud.panels.layers { + import mx.core.*; + + public class LayerItemIcon_icons_src extends BitmapAsset { + + } +}//package wd.hud.panels.layers diff --git a/flash_decompiled/watchdog/wd/hud/panels/layers/LayerPanel.as b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerPanel.as new file mode 100644 index 0000000..57e93b4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/layers/LayerPanel.as @@ -0,0 +1,184 @@ +package wd.hud.panels.layers { + import wd.providers.texts.*; + import wd.http.*; + import __AS3__.vec.*; + import wd.hud.common.text.*; + import wd.hud.common.graphics.*; + import wd.utils.*; + import wd.core.*; + import wd.hud.*; + import flash.events.*; + import flash.geom.*; + import wd.hud.panels.*; + + public class LayerPanel extends Panel { + + public static var tutoStartPoint:Point; + + private var scheme:Array; + private var items:Vector.; + private var labels:Vector.; + private var line:Line; + + public function LayerPanel(hud:Hud){ + var d:Object; + var dy:int; + var av:Boolean; + var i:uint; + var li:LayerItem; + this.scheme = [{ + filterLabel:DataFilterText.transports, + dataType:[DataType.METRO_STATIONS, DataType.VELO_STATIONS] + }, { + filterLabel:DataFilterText.metro, + dataType:DataType.METRO_STATIONS + }, { + filterLabel:DataFilterText.bicycle, + dataType:DataType.VELO_STATIONS + }, { + filterLabel:DataFilterText.networks, + dataType:[DataType.ELECTROMAGNETICS, DataType.INTERNET_RELAYS, DataType.WIFIS, DataType.MOBILES] + }, { + filterLabel:DataFilterText.electromagnetics, + dataType:DataType.ELECTROMAGNETICS + }, { + filterLabel:DataFilterText.internetRelays, + dataType:DataType.INTERNET_RELAYS + }, { + filterLabel:DataFilterText.wifiHotSpots, + dataType:DataType.WIFIS + }, { + filterLabel:DataFilterText.mobile, + dataType:DataType.MOBILES + }, { + filterLabel:DataFilterText.streetFurniture, + dataType:[DataType.ATMS, DataType.ADS, DataType.RADARS, DataType.TRAFFIC_LIGHTS, DataType.TOILETS, DataType.CAMERAS] + }, { + filterLabel:DataFilterText.atm, + dataType:DataType.ATMS + }, { + filterLabel:DataFilterText.ad, + dataType:DataType.ADS + }, { + filterLabel:DataFilterText.traffic, + dataType:DataType.TRAFFIC_LIGHTS + }, { + filterLabel:DataFilterText.toilets, + dataType:DataType.TOILETS + }, { + filterLabel:DataFilterText.cameras, + dataType:DataType.CAMERAS + }, { + filterLabel:DataFilterText.social, + dataType:[DataType.TWITTERS, DataType.INSTAGRAMS, DataType.FOUR_SQUARE, DataType.FLICKRS] + }, { + filterLabel:DataFilterText.twitter, + dataType:DataType.TWITTERS + }, { + filterLabel:DataFilterText.instagram, + dataType:DataType.INSTAGRAMS + }, { + filterLabel:DataFilterText.fourSquare, + dataType:DataType.FOUR_SQUARE + }, { + filterLabel:DataFilterText.flickr, + dataType:DataType.FLICKRS + }]; + this.items = new Vector.(); + this.labels = new Vector.(); + super(); + this.line = new Line(LEFT_PANEL_WIDTH); + addTweenInItem([this.line, {scaleX:0}, {scaleX:1}]); + this.addChild(this.line); + title = new CustomTextField((CommonsText[Locator.CITY] + " Data."), "panelTitle"); + title.width = LEFT_PANEL_WIDTH; + title.y = LINE_H_MARGIN; + addTweenInItem([title, {alpha:0}, {alpha:1}]); + this.addChild(title); + addArrow((LEFT_PANEL_WIDTH - 7)); + var oy:int = int(title.height); + var h:int = 14; + for each (d in this.scheme) { + dy = 0; + if (d.dataType){ + av = true; + if ((d.dataType is Array)){ + for each (i in d.dataType) { + av = ((av) || (FilterAvailability.instance.isActive(d.dataType))); + }; + dy = 3; + } else { + av = FilterAvailability.instance.isActive(d.dataType); + }; + if (av){ + li = new LayerItem(hud, d.dataType, d.filterLabel, h, LEFT_PANEL_WIDTH); + li.y = (oy + dy); + oy = (oy + ((li.height - 3) + dy)); + expandedContainer.addChild(li); + this.items.push(li); + addTweenInItem([li, { + alpha:0, + x:-(LEFT_PANEL_WIDTH) + }, { + alpha:1, + x:0 + }]); + }; + }; + }; + this.setBg(LEFT_PANEL_WIDTH, this.height); + } + public function build():void{ + } + override protected function desactivate(e:Event=null):void{ + var li:LayerItem; + var label:CustomTextField; + desactivationTween(this.line); + desactivationTween(title); + desactivationTween(arrow); + for each (li in this.items) { + if (!(AppState.isActive(li.getType()))){ + desactivationTween(li); + }; + }; + for each (label in this.labels) { + desactivationTween(label); + }; + } + override protected function activate():void{ + var li:LayerItem; + var label:CustomTextField; + activationTween(this.line); + activationTween(title); + activationTween(arrow); + for each (li in this.items) { + activationTween(li); + }; + for each (label in this.labels) { + activationTween(label); + }; + } + override protected function setBg(w:uint, h:uint):void{ + if (reduced){ + super.setBg(LEFT_PANEL_WIDTH, title.height); + } else { + super.setBg(LEFT_PANEL_WIDTH, h); + }; + } + public function checkState():void{ + var li:LayerItem; + for each (li in this.items) { + li.checkState(); + }; + } + override public function set x(value:Number):void{ + super.x = value; + tutoStartPoint = new Point((this.x + LEFT_PANEL_WIDTH), this.y); + } + override public function set y(value:Number):void{ + super.y = value; + tutoStartPoint = new Point((this.x + LEFT_PANEL_WIDTH), this.y); + } + + } +}//package wd.hud.panels.layers diff --git a/flash_decompiled/watchdog/wd/hud/panels/live/FbButton.as b/flash_decompiled/watchdog/wd/hud/panels/live/FbButton.as new file mode 100644 index 0000000..95fa4c2 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/live/FbButton.as @@ -0,0 +1,46 @@ +package wd.hud.panels.live { + import flash.display.*; + import wd.hud.common.text.*; + import flash.geom.*; + import flash.filters.*; + import flash.events.*; + + public class FbButton extends Sprite { + + private const HEIGHT:uint = 23; + private const MIN_WIDTH:uint = 105; + + private var labelt:CustomTextField; + + public function FbButton(label:String, clickFunc:Function){ + super(); + var f:Sprite = new FacebookFAsset(); + f.x = 5; + this.addChild(f); + var l1:Shape = new Shape(); + l1.graphics.lineStyle(1, 5007018, 1, false, "normal", CapsStyle.SQUARE); + l1.graphics.moveTo(22, 0); + l1.graphics.lineTo(22, this.HEIGHT); + l1.graphics.lineStyle(1, 7702973, 1, false, "normal", CapsStyle.SQUARE); + l1.graphics.moveTo(23, 0); + l1.graphics.lineTo(23, this.HEIGHT); + this.addChild(l1); + this.labelt = new CustomTextField(label, "facebookButton"); + this.labelt.wordWrap = false; + var padding:int = Math.max(((this.MIN_WIDTH - (22 + this.labelt.width)) / 2), 1); + this.labelt.x = (22 + padding); + this.labelt.y = ((this.HEIGHT - this.labelt.height) / 2); + this.addChild(this.labelt); + var bg:Shape = new Shape(); + var m:Matrix = new Matrix(); + m.createGradientBox((22 + this.labelt.width), this.HEIGHT, (-(Math.PI) / 2)); + bg.graphics.beginGradientFill(GradientType.LINEAR, [5401772, 8294849], [1, 1], [0, 254], m); + bg.graphics.drawRoundRect(0, 0, (((22 + padding) + this.labelt.width) + padding), this.HEIGHT, 5, 5); + this.addChildAt(bg, 0); + this.filters = [new BevelFilter(1, 45, 0xFFFFFF, 0.5, 0, 0.5, 1, 1)]; + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.CLICK, clickFunc); + } + } +}//package wd.hud.panels.live diff --git a/flash_decompiled/watchdog/wd/hud/panels/live/LiveActivities.as b/flash_decompiled/watchdog/wd/hud/panels/live/LiveActivities.as new file mode 100644 index 0000000..470a80c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/live/LiveActivities.as @@ -0,0 +1,68 @@ +package wd.hud.panels.live { + import flash.display.*; + import aze.motion.*; + import flash.events.*; + import wd.d3.control.*; + import wd.http.*; + + public class LiveActivities extends Sprite { + + private const ITEM_HEIGHT:uint = 42; + private const LIVE_MAX_ITEMS:uint = 4; + + private var items:Array; + public var aWidth:uint; + private var bottom:Shape; + + public function LiveActivities(w:uint){ + super(); + this.aWidth = w; + this.items = new Array(); + this.bottom = new Shape(); + this.bottom.graphics.beginBitmapFill(new RayPatternAsset(5, 5)); + this.bottom.graphics.drawRect(0, 0, this.aWidth, 9); + this.bottom.alpha = 0.5; + this.addChild(this.bottom); + } + public function addItem(user:String, doWhat:String, lat:Number, long:Number):void{ + var ittoremove:LiveItem; + var it:LiveItem = new LiveItem(user, doWhat, this.aWidth, this.ITEM_HEIGHT, lat, long); + it.alpha = 0; + eaze(it).delay(0.4).to(0.7, {alpha:1}); + this.items.unshift(it); + if (((!((lat == 0))) && (!((long == 0))))){ + it.buttonMode = true; + it.mouseChildren = false; + it.addEventListener(MouseEvent.CLICK, this.itemClick); + }; + this.addChild(it); + var hcounter:uint = it.height; + var i:uint = 1; + while (i < this.items.length) { + eaze(this.items[i]).to(0.7, {y:hcounter}); + hcounter = (hcounter + this.items[i].height); + i++; + }; + if (this.items.length > this.LIVE_MAX_ITEMS){ + ittoremove = this.items.pop(); + hcounter = (hcounter - ittoremove.height); + this.removeChild(ittoremove); + }; + this.bottom.y = (hcounter + 6); + } + protected function itemClick(e:Event):void{ + CameraController.instance.setTarget(null, (e.target as LiveItem).longitude, (e.target as LiveItem).latitude); + GoogleAnalytics.FBItemClick(-1); + } + public function clear():void{ + var i:uint; + while (i < this.items.length) { + this.removeChild(this.items[i]); + i++; + }; + this.items = new Array(); + this.bottom.y = 0; + } + + } +}//package wd.hud.panels.live diff --git a/flash_decompiled/watchdog/wd/hud/panels/live/LiveItem.as b/flash_decompiled/watchdog/wd/hud/panels/live/LiveItem.as new file mode 100644 index 0000000..2c28ca7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/live/LiveItem.as @@ -0,0 +1,27 @@ +package wd.hud.panels.live { + import wd.hud.common.text.*; + import wd.hud.common.graphics.*; + import flash.display.*; + + public class LiveItem extends Sprite { + + private var txt:CustomTextField; + public var latitude:Number; + public var longitude:Number; + + public function LiveItem(user:String, doWhat:String, w:uint, h:uint, lat:Number=0, long:Number=0){ + super(); + this.latitude = lat; + this.longitude = long; + this.txt = new CustomTextField(((user + " ") + doWhat), "liveActivityData"); + this.txt.width = w; + this.txt.wordWrap = true; + this.txt.width = w; + this.addChild(this.txt); + this.txt.y = 5; + var l:Line = new Line(w, 0x565656); + l.y = (this.txt.height + 10); + this.addChild(l); + } + } +}//package wd.hud.panels.live diff --git a/flash_decompiled/watchdog/wd/hud/panels/live/LivePanel.as b/flash_decompiled/watchdog/wd/hud/panels/live/LivePanel.as new file mode 100644 index 0000000..fffbcc8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/live/LivePanel.as @@ -0,0 +1,195 @@ +package wd.hud.panels.live { + import wd.core.*; + import wd.hud.common.graphics.*; + import flash.geom.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.external.*; + import wd.http.*; + import flash.events.*; + import flash.utils.*; + import wd.utils.*; + import wd.hud.*; + import wd.footer.*; + import wd.hud.panels.*; + + public class LivePanel extends Panel { + + public static var tutoStartPoint:Point; + + private var line:Line; + private var text:CustomTextField; + private var fbButton:FbButton; + private var liveActivities:LiveActivities; + private var fakeTimer:Timer; + private var fakeIndex:uint = 0; + private var spaceFromBottom:uint = 0; + private var l2:Line; + private var gettingDataAttempt:int = 0; + + public function LivePanel(){ + super(); + if (Config.FACEBOOK_CONNECT_AVAILABLE){ + this.line = new Line(RIGHT_PANEL_WIDTH); + LivePanel.tutoStartPoint = new Point(this.x, this.y); + this.addChild(this.line); + title = new CustomTextField(LiveActivitiesText.title0, "panelTitle"); + title.y = LINE_H_MARGIN; + this.addChild(title); + this.text = new CustomTextField(CommonsText.loading, "livePanelSubtitle"); + this.text.y = (title.y + title.height); + this.text.width = 80; + this.addChild(this.text); + addArrow((RIGHT_PANEL_WIDTH - 7)); + title.width = (RIGHT_PANEL_WIDTH - arrow.width); + this.l2 = new Line(RIGHT_PANEL_WIDTH); + this.l2.y = ((this.text.y + this.text.height) + LINE_H_MARGIN); + this.addChild(this.l2); + if (ExternalInterface.available){ + FacebookConnector.init(); + FacebookConnector.evtDispatcher.addEventListener(FacebookConnector.FB_LOGGED_IN, this.logged); + FacebookConnector.evtDispatcher.addEventListener(FacebookConnector.FB_NOT_LOGGED, this.notLogged); + } else { + this.notLogged(); + }; + this.feedFakeActivities(); + }; + } + private function notLogged(e:Event=null):void{ + this.text.text = LiveActivitiesText.text01; + this.text.y = (title.y + title.height); + this.fbButton = new FbButton(LiveActivitiesText.faceBookConnectButton, this.clickConnect); + this.fbButton.x = (RIGHT_PANEL_WIDTH - this.fbButton.width); + this.fbButton.y = (this.text.y + ((this.text.height - this.fbButton.height) / 2)); + this.addChild(this.fbButton); + this.text.width = ((RIGHT_PANEL_WIDTH - this.fbButton.width) - 5); + this.l2.y = ((this.text.y + this.text.height) + LINE_H_MARGIN); + this.replace(); + } + private function logged(e:Event):void{ + if (this.fbButton){ + this.removeChild(this.fbButton); + }; + this.text.text = "Getting Facebook data ..."; + this.text.width = LEFT_PANEL_WIDTH; + setTimeout(this.getUserData, 1000); + this.gettingDataAttempt = 0; + } + private function getUserData():void{ + this.gettingDataAttempt++; + FacebookConnector.getUserData(); + FacebookConnector.evtDispatcher.addEventListener(FacebookConnector.FB_ON_DATA, this.fbIdentComplete); + FacebookConnector.evtDispatcher.addEventListener(FacebookConnector.FB_ERROR, this.fbError); + GoogleAnalytics.callPageView(GoogleAnalytics.APP_FACEBOOK_CONNECTED); + } + private function fbIdentComplete(e:Event):void{ + var i:*; + var data:Object = FacebookConnector.currentData; + trace("data : "); + for (i in data) { + trace(((i + ":") + data[i])); + }; + if (((!(data.name)) || (!(data.birthday)))){ + if (this.gettingDataAttempt == 5){ + this.notLogged(); + } else { + setTimeout(this.getUserData, 2000); + }; + } else { + title.text = LiveActivitiesText.title1; + this.text.text = (("" + data.name) + "
"); + this.text.text = (this.text.text + ((this.getAge(data.birthday) + ",") + data.work[0].employer.name)); + this.text.width = RIGHT_PANEL_WIDTH; + this.text.y = (title.y + title.height); + this.liveActivities.y = (this.l2.y = ((this.text.y + this.text.height) + LINE_H_MARGIN)); + SocketInterface.init(); + SocketInterface.login(data.id, data.first_name, data.last_name, this.getAge(data.birthday), data.work[0].employer.name, data.locale, CommonsText[Locator.CITY]); + SocketInterface.bridge.addEventListener("NEW_MESSAGE", this.addLastMessage); + this.stopAndClearFake(); + this.replace(); + }; + } + private function getAge(fbBday:String):String{ + trace(("fbBday : " + fbBday)); + if (fbBday == null){ + return ("--"); + }; + var da:Array = fbBday.split("/"); + var bDate:Date = new Date(da[2], da[0], da[1]); + var today:Date = new Date(); + var age:Date = new Date((today.time - bDate.time)); + age.fullYear = (age.fullYear - 1970); + return (age.fullYear.toString()); + } + private function fbError(e:Event):void{ + } + public function clickConnect(e:Event):void{ + this.dispatchEvent(new Event(HudEvents.OPEN_DISCLAIMER_POPIN)); + GoogleAnalytics.callPageView(GoogleAnalytics.APP_FACEBOOK); + } + private function addLastMessage(e:Event):void{ + var data:Object; + if (_enabled){ + data = SocketInterface.messageFifo.shift(); + this.liveActivities.addItem((((((((((data.firstName + " ") + data.lastName) + " ") + data.age) + ", ") + data.job) + ", ") + data.country) + ""), (((("" + LiveActivitiesText.feed1) + " ") + data.action) + ""), data.longLat[1], data.longLat[0]); + this.y = ((stage.stageHeight - this.height) - Footer.FOOTER_HEIGHT); + enlight(); + }; + this.replace(); + } + private function feedFakeActivities():void{ + this.liveActivities = new LiveActivities(RIGHT_PANEL_WIDTH); + this.liveActivities.y = this.l2.y; + this.fakeTimer = new Timer((1000 + (5000 * Math.random())), 1); + this.fakeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, this.addFakeActivity); + this.fakeTimer.start(); + expandedContainer.addChild(this.liveActivities); + } + private function addFakeActivity(e:Event):void{ + var fake:XML; + this.fakeTimer.delay = (1000 + (5000 * Math.random())); + this.fakeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, this.addFakeActivity); + this.fakeTimer.start(); + if (_enabled){ + fake = LiveActivitiesText.fakeActivities.data[this.fakeIndex]; + this.liveActivities.addItem(fake.user, (((("" + LiveActivitiesText.feed1) + " ") + fake.lookingAt) + ""), 0, 0); + this.fakeIndex++; + if (this.fakeIndex == LiveActivitiesText.fakeActivities.data.length()){ + this.fakeIndex = 0; + }; + enlight(); + }; + this.replace(); + } + public function replace():void{ + if (((this.liveActivities) && (!(reduced)))){ + this.liveActivities.y = this.l2.y; + setBg(RIGHT_PANEL_WIDTH, (this.l2.y + this.liveActivities.height)); + } else { + setBg(RIGHT_PANEL_WIDTH, this.l2.y); + }; + if (stage){ + this.y = ((this.stage.stageHeight - this.height) - Footer.FOOTER_HEIGHT); + }; + LivePanel.tutoStartPoint = new Point(this.x, this.y); + } + override public function get height():Number{ + if (reduced){ + return (this.l2.y); + }; + return (super.height); + } + override protected function reduceTrigger(e:Event):void{ + super.reduceTrigger(e); + this.replace(); + } + override public function set height(value:Number):void{ + super.height = value; + } + private function stopAndClearFake():void{ + this.fakeTimer.stop(); + this.liveActivities.clear(); + } + + } +}//package wd.hud.panels.live diff --git a/flash_decompiled/watchdog/wd/hud/panels/live/SocketInterface.as b/flash_decompiled/watchdog/wd/hud/panels/live/SocketInterface.as new file mode 100644 index 0000000..b108bee --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/live/SocketInterface.as @@ -0,0 +1,109 @@ +package wd.hud.panels.live { + import wd.core.*; + import flash.events.*; + import flash.system.*; + import flash.utils.*; + import io.*; + + public class SocketInterface { + + private static var hostName:String; + private static var options:Options; + private static var socket:SocketNamespace; + private static var timerRetry:Timer; + private static var connected:Boolean = false; + private static var logged:Boolean = false; + public static var messageFifo:Array; + private static var loginData:Object; + private static var initied:Boolean = false; + public static var bridge:EventDispatcher; + + public function SocketInterface(){ + super(); + } + public static function init():void{ + if (!(initied)){ + hostName = Config.LIVE_WEBSOCKETSERVER_URL; + bridge = new EventDispatcher(); + messageFifo = new Array(); + Security.allowDomain(hostName); + Security.loadPolicyFile(hostName); + timerRetry = new Timer(1000, 1); + timerRetry.addEventListener(TimerEvent.TIMER, timerRetryHandler); + timerRetry.start(); + initied = true; + }; + } + private static function timerRetryHandler(e:TimerEvent):void{ + if (connected){ + timerRetry.stop(); + } else { + trace((("[socket] Server connect try n° " + timerRetry.currentCount) + "...")); + socket = IO.connect(hostName, options); + socket.on("connected", onConnected); + socket.on("error", onError); + socket.on("custom_error", onError); + timerRetry = new Timer(7000); + timerRetry.addEventListener(TimerEvent.TIMER, timerRetryHandler); + timerRetry.start(); + }; + } + private static function onConnected(data:Object):void{ + trace("[socket] Server connected"); + connected = true; + socket.on("loggedIn", onLoggedIn); + socket.on("loggedOut", onLoggedOut); + socket.on("receiveAction", onReceiveMessage); + socket.on("messageSubmited", onMessageSubmited); + if (loginData){ + socket.emit("login", loginData); + }; + } + private static function onLoggedIn(data:Object):void{ + trace("[socket] Logged In "); + logged = true; + } + private static function onLoggedOut(data:Object):void{ + logged = false; + } + private static function onMessageSubmited(data:Object):void{ + } + public static function onError(data:Object):void{ + if (!(data)){ + trace("[Error] Cannot connect to the WebSocket server"); + } else { + if (data.error > 0){ + trace(("[Error]" + data.message)); + }; + }; + } + private static function onReceiveMessage(data:Object):void{ + trace(("[Action]" + data.fbId)); + messageFifo.push(data); + bridge.dispatchEvent(new Event("NEW_MESSAGE")); + } + public static function sendData(lat:Number, long:Number, action:String):void{ + if (((connected) && (logged))){ + socket.emit("action", { + long_lat:[long, lat], + action:action + }); + }; + } + public static function login(fb_id:String, first_name:String, last_name:String, age:String, job:String, country:String, city:String):void{ + loginData = { + fb_id:fb_id, + first_name:first_name, + last_name:last_name, + age:age, + job:job, + country:country, + server:city.toLowerCase() + }; + if (connected){ + socket.emit("login", loginData); + }; + } + + } +}//package wd.hud.panels.live diff --git a/flash_decompiled/watchdog/wd/hud/panels/search/ResultList.as b/flash_decompiled/watchdog/wd/hud/panels/search/ResultList.as new file mode 100644 index 0000000..baf92e9 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/search/ResultList.as @@ -0,0 +1,90 @@ +package wd.hud.panels.search { + import __AS3__.vec.*; + import wd.http.*; + import flash.events.*; + import aze.motion.*; + import wd.d3.geom.objects.linker.*; + import wd.utils.*; + import flash.display.*; + + public class ResultList extends Sprite { + + private const STATION:String = "station"; + private const PLACES:String = "places"; + private const VELIB:String = "velib"; + private const TWITTER:String = "twitter"; + private const INSTAGRAM:String = "instagram"; + private const FLICKR:String = "flickr"; + + private var answerArrayTypes:Vector.; + private var answerTypes:Vector.; + private var items:Vector.; + private var service:SearchService; + private var place:Place; + + public function ResultList(){ + this.answerArrayTypes = Vector.([this.STATION, this.PLACES, this.VELIB, this.TWITTER, this.INSTAGRAM, this.FLICKR]); + this.answerTypes = Vector.([DataType.METRO_STATIONS, DataType.PLACES, DataType.VELO_STATIONS, DataType.TWITTERS, DataType.INSTAGRAMS, DataType.FLICKRS]); + super(); + this.service = new SearchService(this); + this.items = new Vector.(); + } + public function search(term:String):void{ + this.service.search(term); + } + public function onResult(result:Array):void{ + var type:String; + var it:SearchItem; + if (result == null){ + return; + }; + this.flushItemList(); + var id:int; + var i:int; + while (i < this.answerArrayTypes.length) { + type = this.answerArrayTypes[i]; + if (result[type] != null){ + id++; + it = new SearchItem(this.answerTypes[i], result[type][0], this); + it.addEventListener(Event.SELECT, this.onSelect); + eaze(it).delay((id * 0.05)).to(0.25, { + alpha:1, + y:(-(id) * it.height) + }); + this.items.push(it); + }; + i++; + }; + this.items.reverse(); + for each (it in this.items) { + it.x = 10; + it.alpha = 0; + this.addChild(it); + }; + } + public function onSelect():void{ + dispatchEvent(new Event(Event.SELECT)); + this.flushItemList(); + } + public function flushItemList():void{ + var itd:SearchItem; + if (((this.items) && (this.items.length))){ + for each (itd in this.items) { + if (itd.destination != null){ + Linker.removeLink(null, itd.destination); + }; + itd.removeEventListener(Event.SELECT, this.onSelect); + eaze(itd).to(0.15, { + alpha:0, + y:0 + }).onComplete(removeChild, itd); + }; + }; + this.items.length = 0; + } + public function onCancel(result:Object):void{ + this.flushItemList(); + } + + } +}//package wd.hud.panels.search diff --git a/flash_decompiled/watchdog/wd/hud/panels/search/Search.as b/flash_decompiled/watchdog/wd/hud/panels/search/Search.as new file mode 100644 index 0000000..fd8416c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/search/Search.as @@ -0,0 +1,176 @@ +package wd.hud.panels.search { + import flash.events.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.text.*; + import aze.motion.*; + import wd.core.*; + import flash.geom.*; + import wd.hud.*; + + public class Search extends HudElement { + + private static const WIDTH:Number = 333; + private static const HEIGHT:Number = 23; + + public static var tutoStartPoint:Point; + + private var asset:SearchIconAsset; + private var label:CustomTextField; + private var labelRov:CustomTextField; + private var input:TextField; + private var WIDTH_REDUCED:Number; + private var _expanded:Boolean; + private var results:ResultList; + + public function Search(){ + super(); + this.asset = new SearchIconAsset(); + this.asset.iconRov.alpha = 0; + this.asset.barRov.alpha = 0; + this.asset.name = "searchbar"; + this.addChild(this.asset); + this.asset.iconRov.buttonMode = (this.asset.iconRov.buttonMode = true); + this.asset.iconRov.mouseEnabled = false; + this.asset.barRov.mouseEnabled = false; + this.asset.addEventListener(MouseEvent.ROLL_OVER, this.onRoll); + this.asset.addEventListener(MouseEvent.ROLL_OUT, this.onRoll); + this.asset.addEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + this.label = new CustomTextField((("_ " + FooterText.search) + " /"), "searchTitle"); + this.labelRov = new CustomTextField((("_ " + FooterText.search) + " /"), "searchTitleRollover"); + this.label.wordWrap = (this.labelRov.wordWrap = false); + this.WIDTH_REDUCED = ((this.label.width + 20) + 15); + this.label.x = (this.labelRov.x = ((this.asset.x - this.label.width) - 15)); + this.label.y = (this.labelRov.y = ((HEIGHT - this.label.height) / 2)); + this.asset.addChild(this.label); + this.asset.addChild(this.labelRov); + this.labelRov.alpha = 0; + this.label.mouseEnabled = (this.labelRov.mouseEnabled = false); + this.input = new TextField(); + this.input.defaultTextFormat = new TextFormat("Arial", 11, 0); + this.input.name = "searchbartf"; + this.input.multiline = false; + this.input.condenseWhite = false; + this.input.text = (("_ " + FooterText.search) + " /"); + this.input.type = TextFieldType.INPUT; + this.input.wordWrap = false; + this.input.selectable = true; + this.input.addEventListener(FocusEvent.FOCUS_IN, this.focusInHandler); + this.input.addEventListener(FocusEvent.FOCUS_OUT, this.focusOutHandler); + this.input.width = (WIDTH - 25); + this.input.height = (HEIGHT - 4); + this.input.x = (-(WIDTH) + 10); + this.input.y = 2; + this.asset.addChild(this.input); + this.asset.x = this.WIDTH_REDUCED; + this.results = new ResultList(); + this.results.addEventListener(Event.SELECT, this.onDown); + this.results.x = 10; + this.results.y = (this.asset.y - 5); + addChild(this.results); + tutoMode = false; + } + private function focusInHandler(e:FocusEvent):void{ + if (this.input.text == (("_ " + FooterText.search) + " /")){ + this.input.text = ""; + }; + this.input.setSelection(0, this.input.text.length); + } + private function focusOutHandler(e:FocusEvent):void{ + this.input.text = (("_ " + FooterText.search) + " /"); + this.results.flushItemList(); + } + private function expand(e:Event):void{ + if (e != null){ + eaze(this.asset).to(0.5, {x:WIDTH}, true).onComplete(stage.addEventListener, MouseEvent.MOUSE_DOWN, this.onDown); + } else { + eaze(this.asset).to(0.5, {x:WIDTH}, true); + }; + this.rou(); + eaze(this.label).to(0.7, {alpha:0}, true); + eaze(this.labelRov).to(0.7, {alpha:0}, true); + } + private function reduce(e:Event):void{ + if (e != null){ + eaze(this.asset).to(0.5, {x:0}, true).onComplete(stage.removeEventListener, MouseEvent.MOUSE_DOWN, this.onDown); + } else { + eaze(this.asset).to(0.5, {x:0}, true); + }; + this.rou(); + } + private function onDown(e:Event):void{ + if (tutoMode){ + return; + }; + if (((this.expanded) && (((!((e == null))) && (!((e.target == this.input))))))){ + Config.NAVIGATION_LOCKED = false; + stage.removeEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + stage.removeEventListener(KeyboardEvent.KEY_UP, this.onKeyDown); + this.reduce(null); + } else { + Config.NAVIGATION_LOCKED = true; + stage.addEventListener(KeyboardEvent.KEY_UP, this.onKeyDown); + this.expand(null); + }; + this.expanded = ((!(this.expanded)) ? true : false); + } + private function onKeyDown(e:KeyboardEvent):void{ + if (tutoMode){ + return; + }; + if (this.input.text.length > 1){ + this.results.search(this.input.text); + }; + } + private function onRoll(e:MouseEvent):void{ + if (tutoMode){ + return; + }; + if (!(this.expanded)){ + switch (e.type){ + case MouseEvent.ROLL_OVER: + this.rov(); + break; + case MouseEvent.ROLL_OUT: + this.rou(); + break; + }; + }; + } + private function rov():void{ + eaze(this.asset.iconRov).to(0.5, {alpha:1}, true); + eaze(this.asset.barRov).to(0.5, {alpha:1}, true); + eaze(this.label).to(0.7, {alpha:0}, true); + eaze(this.labelRov).to(0.7, {alpha:1}, true); + } + private function rou():void{ + eaze(this.asset.iconRov).to(0.5, {alpha:0}, true); + eaze(this.asset.barRov).to(0.5, {alpha:0}, true); + eaze(this.label).to(0.7, {alpha:1}, true); + eaze(this.labelRov).to(0.7, {alpha:0}, true); + } + public function get expanded():Boolean{ + return (this._expanded); + } + public function set expanded(value:Boolean):void{ + this._expanded = value; + } + override public function set x(value:Number):void{ + super.x = value; + tutoStartPoint = new Point(((this.x + WIDTH) + 20), (this.y + 10)); + } + override public function set y(value:Number):void{ + super.y = value; + tutoStartPoint = new Point(((this.x + WIDTH) + 20), (this.y + 10)); + } + override public function tutoFocusIn():void{ + super.tutoFocusIn(); + this.expand(null); + } + override public function tutoFocusOut():void{ + super.tutoFocusOut(); + this.reduce(null); + } + + } +}//package wd.hud.panels.search diff --git a/flash_decompiled/watchdog/wd/hud/panels/search/SearchItem.as b/flash_decompiled/watchdog/wd/hud/panels/search/SearchItem.as new file mode 100644 index 0000000..6d9dbc2 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/search/SearchItem.as @@ -0,0 +1,88 @@ +package wd.hud.panels.search { + import wd.hud.common.text.*; + import wd.utils.*; + import wd.hud.panels.layers.*; + import flash.events.*; + import flash.geom.*; + import wd.d3.*; + import flash.display.*; + + public class SearchItem extends Sprite { + + private var picto:LayerItemIcon; + private var list:ResultList; + private var _position:Point; + public var destination:Vector3D; + public var id:uint; + public var place:Place; + + public function SearchItem(type:int, result:Array, list:ResultList){ + var t:String; + var desc:CustomTextField; + super(); + this.list = list; + this.id = parseInt(result["id"]); + this.place = new Place(((((result["description"]) || (result["title"]))) || (result["name"])), parseFloat(result["lng"]), parseFloat(result["lat"])); + name = ((((result["description"]) || (result["title"]))) || (result["name"])); + this.picto = new LayerItemIcon(type); + this.addChild(this.picto); + this.picto.x = 10; + this.picto.y = 9; + t = ((result["title"]) || (result["name"])); + if (t.length > 40){ + t = (t.substr(0, 35) + "[...]"); + }; + var title:CustomTextField = new CustomTextField(t, "searchResult"); + title.width = 300; + title.wordWrap = false; + title.multiline = false; + this.addChild(title); + title.x = ((this.picto.x + this.picto.width) + 10); + title.background = true; + title.backgroundColor = 0x101010; + t = ((((result["description"]) || (result["title"]))) || (result["name"])); + if ((((t == null)) || ((t == "")))){ + if (t.length > 40){ + t = (t.substr(0, 35) + "[...]"); + }; + desc = new CustomTextField(t, "searchResult"); + desc.width = 300; + desc.wordWrap = false; + desc.multiline = false; + desc.y = title.height; + this.addChild(desc); + desc.background = true; + desc.backgroundColor = 0x101010; + desc.x = ((this.picto.x + this.picto.width) + 10); + }; + this.mouseChildren = false; + this.buttonMode = true; + addEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + var p:Point = Locator.REMAP(this.place.lon, this.place.lat); + this.destination = new Vector3D(p.x, 0, p.y); + this.position = new Point((this.width + 10), this.y); + } + private function onDown(e:MouseEvent):void{ + if (Simulation.instance != null){ + Simulation.instance.controller.setTarget(null, this.place.lon, this.place.lat); + }; + e.stopImmediatePropagation(); + removeEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + this.list.onSelect(); + } + override public function get y():Number{ + return (super.y); + } + override public function set y(value:Number):void{ + super.y = value; + this.position.y = this.y; + } + public function get position():Point{ + return (localToGlobal(this._position)); + } + public function set position(value:Point):void{ + this._position = value; + } + + } +}//package wd.hud.panels.search diff --git a/flash_decompiled/watchdog/wd/hud/panels/search/SearchService.as b/flash_decompiled/watchdog/wd/hud/panels/search/SearchService.as new file mode 100644 index 0000000..50528dc --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/panels/search/SearchService.as @@ -0,0 +1,36 @@ +package wd.hud.panels.search { + import flash.net.*; + import wd.core.*; + + public class SearchService { + + private var connection:NetConnection; + private var responder:Responder; + private var args:Array; + private var list:ResultList; + + public function SearchService(list:ResultList){ + this.args = []; + super(); + this.list = list; + this.connection = new NetConnection(); + this.connection.connect(Config.GATEWAY); + this.responder = new Responder(this.onResult, this.onCancel); + this.args["town"] = Config.CITY; + this.args["query"] = ""; + } + public function search(term:String):void{ + this.args["town"] = Config.CITY; + this.args["query"] = term; + this.connection.call("WatchDog.search", this.responder, this.args); + } + private function onResult(res:Object):void{ + var result:Array = (res as Array); + this.list.onResult(result); + } + private function onCancel(res:Object):void{ + this.list.onCancel(res); + } + + } +}//package wd.hud.panels.search diff --git a/flash_decompiled/watchdog/wd/hud/popins/HelpPopin.as b/flash_decompiled/watchdog/wd/hud/popins/HelpPopin.as new file mode 100644 index 0000000..7c731ea --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/HelpPopin.as @@ -0,0 +1,18 @@ +package wd.hud.popins { + import flash.display.*; + import wd.hud.popins.helppopin.*; + + public class HelpPopin extends Popin { + + public function HelpPopin(){ + super(); + setIcon(new Sprite()); + setLine(); + disposeHeader(); + var wrap:HelpPopinWrapper = new HelpPopinWrapper(); + wrap.x = 20; + wrap.y = line.y; + this.addChild(wrap); + } + } +}//package wd.hud.popins diff --git a/flash_decompiled/watchdog/wd/hud/popins/Popin.as b/flash_decompiled/watchdog/wd/hud/popins/Popin.as new file mode 100644 index 0000000..de0abb6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/Popin.as @@ -0,0 +1,76 @@ +package wd.hud.popins { + import flash.events.*; + import wd.sound.*; + import flash.display.*; + import wd.hud.common.text.*; + import wd.hud.common.graphics.*; + import wd.hud.*; + + public class Popin extends HudElement { + + public static const ICON_WIDTH:uint = 43; + + protected var title:CustomTextField; + protected var titleCtn:Sprite; + protected var line:Line; + protected var icon:Sprite; + public var POPIN_WIDTH:uint = 476; + protected var btnClose:Sprite; + + public function Popin(){ + super(); + this.addBtnClose(); + } + protected function addBtnClose():void{ + this.btnClose = new CrossAsset(); + this.btnClose.x = (this.POPIN_WIDTH - this.btnClose.width); + this.btnClose.buttonMode = true; + this.btnClose.addEventListener(MouseEvent.CLICK, this.close); + this.addChild(this.btnClose); + addTweenInItem([this.btnClose, {alpha:0}, {alpha:1}]); + } + protected function close(e:Event=null):void{ + this.dispatchEvent(new Event("CLOSE")); + SoundManager.playFX("ClicLieuxVille", 1); + } + protected function setTitle(str:String):void{ + this.titleCtn = new Sprite(); + this.title = new CustomTextField(str, "popinTitle"); + this.title.wordWrap = false; + if (this.title.width > ((this.POPIN_WIDTH - ICON_WIDTH) - this.btnClose.width)){ + this.title.width = ((this.POPIN_WIDTH - ICON_WIDTH) - this.btnClose.width); + this.title.wordWrap = true; + }; + this.titleCtn.addChild(this.title); + this.addChild(this.titleCtn); + addTweenInItem([this.titleCtn, {alpha:0}, {alpha:1}]); + } + protected function setLine():void{ + this.line = new Line((this.POPIN_WIDTH - ICON_WIDTH), 0xFFFFFF); + this.addChild(this.line); + addTweenInItem([this.line, {scaleX:0}, {scaleX:1}]); + } + protected function setIcon(spr:Sprite=null):void{ + if (spr != null){ + this.icon = spr; + } else { + this.icon = new Sprite(); + this.icon.graphics.lineStyle(2, 0xFFFFFF); + this.icon.graphics.drawCircle(0, 0, 20); + }; + this.addChild(this.icon); + addTweenInItem([this.icon, {alpha:0}, {alpha:1}]); + } + protected function disposeHeader():void{ + this.icon.x = (this.icon.y = (ICON_WIDTH / 2)); + this.title.x = ICON_WIDTH; + this.line.x = ICON_WIDTH; + this.line.y = (this.title.height + 10); + } + public function open():void{ + } + public function clear():void{ + } + + } +}//package wd.hud.popins diff --git a/flash_decompiled/watchdog/wd/hud/popins/PopinButton.as b/flash_decompiled/watchdog/wd/hud/popins/PopinButton.as new file mode 100644 index 0000000..8e8116c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/PopinButton.as @@ -0,0 +1,64 @@ +package wd.hud.popins { + import wd.hud.common.text.*; + import flash.display.*; + import flash.events.*; + import aze.motion.*; + + public class PopinButton extends Sprite { + + private const MIN_WIDTH:uint = 100; + private const ROLLOVER_WIDTH:uint = 10; + private const TEXT_MARGIN:uint = 5; + + private var btnBaseWidth:uint; + private var bgRov:Shape; + private var btnBaseHeight:uint; + + public function PopinButton(label:String, onClick:Function){ + super(); + var txt:CustomTextField = new CustomTextField(label, "popinBtn"); + txt.wordWrap = false; + this.btnBaseWidth = Math.max(this.MIN_WIDTH, (txt.width + (2 * this.TEXT_MARGIN))); + this.btnBaseHeight = (txt.height + (2 * this.TEXT_MARGIN)); + this.setBg(this.btnBaseWidth, this.btnBaseHeight); + var bg:Shape = new Shape(); + bg.graphics.beginFill(0xFFFFFF, 1); + bg.graphics.drawRect(0, 0, this.btnBaseWidth, this.btnBaseHeight); + this.addChild(bg); + txt.x = ((bg.width - txt.width) / 2); + txt.y = ((bg.height - txt.height) / 2); + this.addChild(txt); + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.ROLL_OVER, this.rov); + this.addEventListener(MouseEvent.ROLL_OUT, this.rou); + this.addEventListener(MouseEvent.CLICK, onClick); + } + private function setBg(w:uint, h:uint):void{ + this.bgRov = new Shape(); + this.bgRov.graphics.beginBitmapFill(new RayPatternAsset(5, 5), null, true, true); + this.bgRov.graphics.drawRect(0, 0, (w + (this.ROLLOVER_WIDTH * 2)), (h + (this.ROLLOVER_WIDTH * 2))); + this.bgRov.width = w; + this.bgRov.height = h; + this.bgRov.alpha = 0.5; + this.addChildAt(this.bgRov, 0); + } + private function rov(e:Event):void{ + eaze(this.bgRov).to(0.5, { + x:-(this.ROLLOVER_WIDTH), + y:-(this.ROLLOVER_WIDTH), + width:(this.btnBaseWidth + (this.ROLLOVER_WIDTH * 2)), + height:(this.btnBaseHeight + (this.ROLLOVER_WIDTH * 2)) + }); + } + private function rou(e:Event):void{ + eaze(this.bgRov).to(0.3, { + x:0, + y:0, + width:this.btnBaseWidth, + height:this.btnBaseHeight + }); + } + + } +}//package wd.hud.popins diff --git a/flash_decompiled/watchdog/wd/hud/popins/PopinsManager.as b/flash_decompiled/watchdog/wd/hud/popins/PopinsManager.as new file mode 100644 index 0000000..33dbda1 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/PopinsManager.as @@ -0,0 +1,166 @@ +package wd.hud.popins { + import flash.display.*; + import flash.events.*; + import wd.hud.mentions.*; + import wd.d3.*; + import wd.hud.items.*; + import wd.core.*; + import wd.hud.popins.datapopins.*; + import wd.http.*; + import wd.hud.popins.disclaimerpopin.*; + import wd.hud.popins.legalspopin.*; + import wd.hud.popins.aboutpopin.*; + import wd.hud.popins.langpopin.*; + import wd.hud.popins.sharelinkpopin.*; + import wd.hud.*; + import wd.sound.*; + import aze.motion.*; + import wd.footer.*; + import wd.hud.panels.*; + + public class PopinsManager extends Sprite { + + private const BG_ALPHA:Number = 0.75; + + private var _currentPopin:Popin; + private var bg:Sprite; + private var sim:Simulation; + private var mentions:Mentions; + + public function PopinsManager(sim:Simulation){ + super(); + this.sim = sim; + this.bg = new Sprite(); + this.bg.addEventListener(MouseEvent.MOUSE_DOWN, this.onBgMouseDown); + this.bg.visible = false; + this.bg.alpha = 0; + this.addChild(this.bg); + this.mentions = new Mentions(); + this.addChild(this.mentions); + } + private function onBgMouseDown(e:MouseEvent):void{ + this.hide(null); + } + public function clear():void{ + if (((this.currentPopin) && (this.contains(this.currentPopin)))){ + this.currentPopin.removeEventListener("CLOSE", this.hide); + this.removeChild(this.currentPopin); + this.currentPopin = null; + }; + } + public function openPopin(data:Object):void{ + var tdata:TrackerData; + var e:Event; + this.clear(); + if (!((((data is Event)) || ((data is TrackerData))))){ + trace("Nico, t'es viré ..."); + }; + if ((data is TrackerData)){ + tdata = (data as TrackerData); + if (((!(FilterAvailability.isPopinActive(tdata.type))) || (!(tdata.canOpenPopin)))){ + return; + }; + Config.NAVIGATION_LOCKED = true; + switch (tdata.type){ + case DataType.METRO_STATIONS: + this.currentPopin = new MetroPopin(tdata); + break; + case DataType.VELO_STATIONS: + this.currentPopin = new VeloPopin(tdata); + break; + case DataType.ELECTROMAGNETICS: + this.currentPopin = new ElectromagneticPopin(tdata); + break; + case DataType.INSTAGRAMS: + this.currentPopin = new InstagramPopin(tdata); + break; + case DataType.MOBILES: + this.currentPopin = new MobilePopin(tdata); + break; + case DataType.FOUR_SQUARE: + this.currentPopin = new FoursquarePopin(tdata); + break; + case DataType.ADS: + this.currentPopin = new AdPopin(tdata); + break; + case DataType.TWITTERS: + this.currentPopin = new TwitterPopin(tdata); + break; + case DataType.FLICKRS: + this.currentPopin = new FlickPopin(tdata); + break; + }; + this.mentions.setState(tdata.type); + } else { + if ((data is Event)){ + e = (data as Event); + switch (e.type){ + case HudEvents.OPEN_HELP_POPIN: + this.currentPopin = new HelpPopin(); + break; + case HudEvents.OPEN_DISCLAIMER_POPIN: + this.currentPopin = new DisclaimerPopin(); + break; + case HudEvents.OPEN_LEGALS_POPIN: + this.currentPopin = new LegalsPopin(); + break; + case HudEvents.OPEN_ABOUT_POPIN: + this.currentPopin = new AboutPopin(); + break; + case HudEvents.OPEN_LANG_POPIN: + this.currentPopin = new LangPopin(); + break; + case HudEvents.OPEN_SHARE_LINK_POPIN: + this.currentPopin = new ShareLinkPopin(); + break; + }; + }; + }; + if (this.currentPopin){ + this.currentPopin.addEventListener("CLOSE", this.hide); + this.addChild(this.currentPopin); + this.resize(); + this.show(); + }; + SoundManager.playFX("PopIn", (0.5 + (Math.random() * 0.5))); + } + public function show():void{ + this.currentPopin.visible = (this.bg.visible = true); + this.bg.alpha = 0; + this.currentPopin.tweenIn(0.2); + eaze(this.bg).to(0.5, {alpha:1}); + this.sim.pause(); + } + public function hide(e:Event):void{ + if (this.currentPopin != null){ + eaze(this.currentPopin).to(0.3, {alpha:0}).onComplete(this.disposeCurrent); + }; + eaze(this.bg).delay(0.15).to(0.3, {alpha:0}); + this.sim.start(); + dispatchEvent(new Event(Event.CLOSE)); + Config.NAVIGATION_LOCKED = false; + this.mentions.alpha = 0; + } + private function disposeCurrent():void{ + this.currentPopin = null; + } + public function resize():void{ + if (this.currentPopin){ + this.currentPopin.x = ((stage.stageWidth - (this.currentPopin.POPIN_WIDTH + Popin.ICON_WIDTH)) / 2); + this.currentPopin.y = (((stage.stageHeight - this.currentPopin.height) - Footer.FOOTER_HEIGHT) / 2); + }; + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0, this.BG_ALPHA); + this.bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); + this.mentions.x = (((stage.stageWidth - Panel.RIGHT_PANEL_WIDTH) - 20) - 3); + this.mentions.y = (stage.stageHeight - 40); + } + public function get currentPopin():Popin{ + return (this._currentPopin); + } + public function set currentPopin(value:Popin):void{ + this._currentPopin = value; + } + + } +}//package wd.hud.popins diff --git a/flash_decompiled/watchdog/wd/hud/popins/aboutpopin/AboutPopin.as b/flash_decompiled/watchdog/wd/hud/popins/aboutpopin/AboutPopin.as new file mode 100644 index 0000000..e5c6924 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/aboutpopin/AboutPopin.as @@ -0,0 +1,17 @@ +package wd.hud.popins.aboutpopin { + import wd.providers.texts.*; + import flash.display.*; + import wd.hud.popins.textpopin.*; + + public class AboutPopin extends TextPopin { + + public function AboutPopin(){ + super(); + setTitle(AboutText.title); + setIcon(new Sprite()); + setLine(); + disposeHeader(); + setText(AboutText.text, "aboutPopinText"); + } + } +}//package wd.hud.popins.aboutpopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/AdPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/AdPopin.as new file mode 100644 index 0000000..d7af054 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/AdPopin.as @@ -0,0 +1,29 @@ +package wd.hud.popins.datapopins { + import wd.hud.common.text.*; + import wd.hud.items.datatype.*; + import wd.providers.texts.*; + import flash.display.*; + + public class AdPopin extends DataPopin { + + private var txt1:CustomTextField; + + public function AdPopin(data:Object){ + super(data); + this.txt1 = new CustomTextField(((((Math.round((int((tdata as AdsTrackerData).weekviews) / 1000)) * 1000) + " ") + CityTexts.adConsumerExposedUnit) + ""), "adPopinTxt1"); + this.txt1.width = (POPIN_WIDTH - ICON_WIDTH); + this.txt1.y = line.y; + this.txt1.x = ICON_WIDTH; + addTweenInItem([this.txt1, {alpha:0}, {alpha:1}]); + this.addChild(this.txt1); + } + override protected function getIcon(type:uint):Sprite{ + return (new AdPopinIconAsset()); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin.as new file mode 100644 index 0000000..3b456be --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin.as @@ -0,0 +1,97 @@ +package wd.hud.popins.datapopins { + import wd.hud.items.*; + import flash.display.*; + import flash.geom.*; + import wd.http.*; + import wd.hud.popins.*; + + public class DataPopin extends Popin { + + private static var icons_src:Class = DataPopin_icons_src; + public static var icons:BitmapData = new icons_src().bitmapData; + + protected var tdata:TrackerData; + + public function DataPopin(data:Object){ + super(); + this.tdata = (data as TrackerData); + setTitle(this.titleData); + trace(("Popin eating data : " + data)); + data.debugExtra(); + setIcon(this.getIcon(data.type)); + setLine(); + disposeHeader(); + } + protected function get titleData():String{ + return (this.tdata.labelData); + } + protected function getIcon(type:uint):Sprite{ + var r:Sprite = new Sprite(); + var m:Matrix = new Matrix(); + var rect:Rectangle = new Rectangle(0, 0, 43, 43); + var w:int = rect.width; + var h:int = rect.height; + m.tx = -107; + switch (type){ + case DataType.ATMS: + m.ty = -752; + break; + case DataType.CAMERAS: + m.ty = -540; + break; + case DataType.ELECTROMAGNETICS: + m.ty = -371; + break; + case DataType.FLICKRS: + m.ty = 0; + break; + case DataType.INSTAGRAMS: + m.ty = -626; + break; + case DataType.WIFIS: + m.ty = -284; + break; + case DataType.INTERNET_RELAYS: + m.ty = -196; + break; + case DataType.ADS: + m.ty = -410; + break; + case DataType.METRO_STATIONS: + m.ty = -15; + break; + case DataType.MOBILES: + m.ty = -325; + break; + case DataType.TRAFFIC_LIGHTS: + m.ty = -453; + break; + case DataType.TOILETS: + m.ty = -498; + break; + case DataType.TWITTERS: + m.ty = -584; + break; + case DataType.VELO_STATIONS: + m.ty = -108; + break; + case DataType.FOUR_SQUARE: + m.ty = -706; + break; + }; + r.graphics.beginBitmapFill(icons, m, false, false); + r.graphics.drawRect((-(rect.width) * 0.5), (-(rect.height) * 0.5), rect.width, rect.height); + r.cacheAsBitmap = true; + return (r); + } + public function getUnixDate(ts:Number):String{ + var r:String; + var d:Date = new Date((ts * 1000)); + r = ("" + d.getDate()); + r = (r + ("/" + (d.getMonth() + 1))); + r = (r + ("/" + d.getFullYear())); + return (r); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin_icons_src.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin_icons_src.as new file mode 100644 index 0000000..d89998e --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/DataPopin_icons_src.as @@ -0,0 +1,7 @@ +package wd.hud.popins.datapopins { + import mx.core.*; + + public class DataPopin_icons_src extends BitmapAsset { + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/ElectromagneticPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/ElectromagneticPopin.as new file mode 100644 index 0000000..9fed403 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/ElectromagneticPopin.as @@ -0,0 +1,84 @@ +package wd.hud.popins.datapopins { + import wd.hud.items.datatype.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.display.*; + import wd.hud.popins.datapopins.triangledatapopin.*; + + public class ElectromagneticPopin extends DataPopin { + + private var txt1:CustomTextField; + private var txt2:CustomTextField; + private var txtGps:CustomTextField; + private var txtLatLabel:CustomTextField; + private var txtLatData:CustomTextField; + private var txtLongLabel:CustomTextField; + private var txtLongData:CustomTextField; + + public function ElectromagneticPopin(data:Object){ + var expString:String; + super(data); + var vdata:ElectroMagneticTrackerData = (tdata as ElectroMagneticTrackerData); + trace(("data :" + vdata)); + var valStr:String = ""; + var val:Number = parseFloat(vdata.level); + var exp:int; + if ((((val < 0.01)) && ((val > 0)))){ + while (val < 1) { + val = (val * 10); + exp = (exp + 1); + }; + }; + if (exp > 0){ + expString = ((exp)<10) ? ("0" + exp.toString()) : exp.toString(); + valStr = ((val.toFixed(3).toString() + "E-") + expString); + } else { + valStr = vdata.level; + }; + this.txt1 = new CustomTextField((((((valStr + " ") + CityTexts.electroMagneticFieldsLevelUnit) + " ") + CityTexts.electroMagneticFieldsLevelLabel) + ""), "elecPopinTxt1"); + this.txt1.width = POPIN_WIDTH; + this.txt1.y = (this.line.y + 20); + this.addChild(this.txt1); + addTweenInItem([this.txt1]); + this.txt2 = new CustomTextField((((vdata.date + " ") + DataDetailText.electroMagneticFieldsMeasurementDate) + ""), "elecPopinTxt1"); + this.txt2.width = POPIN_WIDTH; + this.txt2.y = (this.txt1.y + this.txt1.height); + this.addChild(this.txt2); + addTweenInItem([this.txt2]); + this.txt1.x = (this.txt2.x = ICON_WIDTH); + var bgGps:Shape = new Shape(); + bgGps.graphics.lineStyle(1, 0xFFFFFF, 0.5); + bgGps.graphics.beginFill(0, 1); + bgGps.y = ((this.txt2.y + this.txt2.height) + 10); + bgGps.x = ICON_WIDTH; + this.addChild(bgGps); + addTweenInItem([bgGps]); + this.txtGps = new CustomTextField(DataDetailText.electroMagneticFieldsGpsCoordinates.toUpperCase(), "elecGps"); + this.txtGps.wordWrap = false; + this.txtGps.x = (10 + ICON_WIDTH); + this.addChild(this.txtGps); + addTweenInItem([this.txtGps]); + bgGps.graphics.drawRect(0, 0, (this.txtGps.width + 20), 25); + this.txtGps.y = (bgGps.y + ((bgGps.height - this.txtGps.height) / 2)); + var d1:TriangleDataPopinData = new TriangleDataPopinData(CommonsText.latitude, tdata.lat); + var d2:TriangleDataPopinData = new TriangleDataPopinData(CommonsText.longitude, tdata.lon); + var td:TriangleDataPopin = new TriangleDataPopin(d1, d2); + this.addChild(td); + td.x = (bgGps.x + bgGps.width); + td.y = (bgGps.y + bgGps.height); + addTweenInItem([td, td.start]); + } + override protected function get titleData():String{ + return (DataDetailText.electroMagneticFields); + } + override protected function getIcon(type:uint):Sprite{ + var i:Sprite = new ElectroPopinIconAsset(); + return (i); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/FlickPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/FlickPopin.as new file mode 100644 index 0000000..bc412f7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/FlickPopin.as @@ -0,0 +1,141 @@ +package wd.hud.popins.datapopins { + import wd.hud.items.datatype.*; + import flash.net.*; + import flash.events.*; + import flash.display.*; + import wd.utils.*; + import flash.geom.*; + import wd.hud.common.text.*; + import flash.xml.*; + + public class FlickPopin extends DataPopin { + + private var imgLoader:URLLoader; + private var img:Loader; + private var imgContainer:Sprite; + private var miniLoader:MiniLoaderAsset; + private var footer:Sprite; + private var link:String; + + public function FlickPopin(data:Object){ + super(data); + var idata:FlickrTrackerData = (tdata as FlickrTrackerData); + this.imgLoader = new URLLoader(); + this.imgLoader.dataFormat = "binary"; + if (idata.url != null){ + this.imgLoader.load(new URLRequest(idata.url)); + this.imgLoader.addEventListener(ProgressEvent.PROGRESS, this.imgLoaderProgress); + this.imgLoader.addEventListener(IOErrorEvent.IO_ERROR, this.imgLoaderIoError); + this.imgLoader.addEventListener(Event.COMPLETE, this.imgLoaderComplete); + }; + this.link = idata.httpUrl; + this.footer = new Sprite(); + var t:String = ""; + if (idata.title != "null"){ + t = (t + idata.title); + }; + if (idata.description != "null"){ + t = (t + (" " + idata.description)); + }; + t = StringUtils.htmlDecode(t); + if (t.length > 0x0200){ + t = (t.substring(0, 0x0200) + "..."); + }; + var imgSize:Rectangle = this.getImageSize(idata.width, idata.height); + var txt1:CustomTextField = new CustomTextField(t, "instPopinImageTitle"); + txt1.wordWrap = false; + if (txt1.width > 370){ + txt1.wordWrap = true; + txt1.width = 370; + }; + this.footer.addChild(txt1); + txt1.y = (-(txt1.height) / 2); + var txt2:CustomTextField = new CustomTextField(getUnixDate(Number(idata.time)), "instPopinImagePlace"); + txt2.wordWrap = false; + txt2.y = (txt1.y + txt1.height); + this.footer.addChild(txt2); + this.imgContainer = new Sprite(); + this.imgContainer.y = (line.y + 10); + this.imgContainer.x = (ICON_WIDTH + (((POPIN_WIDTH - ICON_WIDTH) - imgSize.width) / 2)); + var sh:Shape = new Shape(); + sh.graphics.beginFill(0, 0.5); + sh.graphics.drawRect(0, 0, imgSize.width, imgSize.height); + this.imgContainer.addChild(sh); + this.addChild(this.imgContainer); + this.miniLoader = new MiniLoaderAsset(); + this.miniLoader.x = (imgSize.width / 2); + this.miniLoader.y = (imgSize.height / 2); + this.imgContainer.addChild(this.miniLoader); + addTweenInItem([this.imgContainer]); + this.footer.x = ICON_WIDTH; + this.addChild(this.footer); + this.footer.y = ((this.imgContainer.y + this.imgContainer.height) + (this.footer.height / 2)); + addTweenInItem([this.footer]); + this.footer.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.footer.buttonMode = true; + this.footer.mouseChildren = false; + } + private function getImageSize(w:uint, h:uint):Rectangle{ + var r:Rectangle = new Rectangle(0, 0, w, h); + if (w > (POPIN_WIDTH - ICON_WIDTH)){ + r.width = (POPIN_WIDTH - ICON_WIDTH); + r.height = ((h * r.width) / w); + }; + if (r.height > 370){ + r.height = 370; + r.width = ((w * r.height) / h); + }; + return (r); + } + public function htmlUnescape(str:String):String{ + return (new XMLDocument(str).firstChild.nodeValue); + } + private function imgLoaderProgress(e:Event):void{ + trace(e.toString()); + } + private function imgLoaderIoError(e:Event):void{ + trace(e.toString()); + } + private function imgLoaderComplete(e:Event):void{ + this.img = new Loader(); + this.img.loadBytes(e.target.data); + this.imgContainer.addChild(this.img); + this.img.contentLoaderInfo.addEventListener(Event.INIT, this.posImage); + trace(("img.width:" + this.img.width)); + } + private function posImage(e:Event):void{ + this.imgContainer.removeChild(this.miniLoader); + (this.img.content as Bitmap).smoothing = true; + var size:Rectangle = this.getImageSize(this.img.width, this.img.height); + this.img.width = size.width; + this.img.height = size.height; + this.imgContainer.x = (ICON_WIDTH + (((POPIN_WIDTH - ICON_WIDTH) - this.imgContainer.width) / 2)); + this.imgContainer.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.imgContainer.buttonMode = true; + this.imgContainer.mouseChildren = false; + } + private function gotoLink(e:Event):void{ + navigateToURL(new URLRequest(this.link), "_blank"); + } + override protected function get titleData():String{ + return ((tdata as FlickrTrackerData).userName); + } + override protected function setTitle(str:String):void{ + super.setTitle(StringUtils.htmlDecode(str)); + titleCtn.addEventListener(MouseEvent.CLICK, this.clickTitle); + titleCtn.buttonMode = true; + titleCtn.mouseChildren = false; + } + private function clickTitle(e:Event):void{ + JsPopup.open((("http://www.flickr.com/people/" + (tdata as FlickrTrackerData).owner) + "/")); + } + override protected function getIcon(type:uint):Sprite{ + return (new FlickRPopinIconAsset()); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/FoursquarePopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/FoursquarePopin.as new file mode 100644 index 0000000..ebe9f3f --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/FoursquarePopin.as @@ -0,0 +1,72 @@ +package wd.hud.popins.datapopins { + import flash.display.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.events.*; + import wd.utils.*; + import wd.hud.items.datatype.*; + + public class FoursquarePopin extends DataPopin { + + private var txt1:CustomTextField; + private var txt2:CustomTextField; + private var txt3:CustomTextField; + + public function FoursquarePopin(data:Object){ + var sprCtn:Sprite; + super(data); + this.txt1 = new CustomTextField("", "foursquarePopinDate"); + this.txt1.y = (line.y + 10); + this.txt1.x = ICON_WIDTH; + this.addChild(this.txt1); + addTweenInItem([this.txt1]); + var logo2:Sprite = new FoursquarePopinIcon2Asset(); + logo2.y = (line.y + 10); + logo2.x = (POPIN_WIDTH - logo2.width); + this.addChild(logo2); + addTweenInItem([logo2]); + this.txt2 = new CustomTextField(DataDetailText.fourSquarePowered, "foursquarePopinDate"); + this.txt2.y = (line.y + 10); + this.txt2.wordWrap = false; + this.txt2.x = ((logo2.x - this.txt2.width) - 2); + this.addChild(this.txt2); + addTweenInItem([this.txt2]); + var logo3:Sprite = new FoursquarePopinMayorIcon(); + logo3.y = (line.y + 42); + logo3.x = ICON_WIDTH; + this.addChild(logo3); + addTweenInItem([logo3]); + sprCtn = new Sprite(); + sprCtn.mouseChildren = false; + sprCtn.buttonMode = true; + sprCtn.addEventListener(MouseEvent.CLICK, this.clickVenue); + this.txt3 = new CustomTextField((((DataDetailText.fourSquareIsTheNewMayorOf + "") + StringUtils.htmlDecode((data as FoursquareTrackerData).place)) + ""), "foursquarePopinText"); + this.txt3.y = (line.y + 42); + this.txt3.width = ((POPIN_WIDTH - ICON_WIDTH) - logo3.width); + this.txt3.x = ((logo3.x + logo3.width) + 20); + sprCtn.addChild(this.txt3); + this.addChild(sprCtn); + addTweenInItem([this.txt3]); + } + override protected function setTitle(str:String):void{ + super.setTitle(StringUtils.htmlDecode((tdata as FoursquareTrackerData).userName)); + titleCtn.addEventListener(MouseEvent.CLICK, this.clickTitle); + titleCtn.buttonMode = true; + titleCtn.mouseChildren = false; + } + private function clickVenue(e:MouseEvent):void{ + JsPopup.open((tdata as FoursquareTrackerData).venueUrl); + } + private function clickTitle(e:MouseEvent):void{ + JsPopup.open(("https://www.foursquare.com/user/" + (tdata as FoursquareTrackerData).userId)); + } + override protected function getIcon(type:uint):Sprite{ + return (new FoursquarePopinIconAsset()); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/InstagramPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/InstagramPopin.as new file mode 100644 index 0000000..f3dfb8b --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/InstagramPopin.as @@ -0,0 +1,157 @@ +package wd.hud.popins.datapopins { + import flash.xml.*; + import flash.display.*; + import wd.hud.items.datatype.*; + import flash.net.*; + import flash.events.*; + import wd.hud.common.text.*; + import wd.utils.*; + import wd.providers.texts.*; + import flash.geom.*; + + public class InstagramPopin extends DataPopin { + + private var imgLoader:URLLoader; + private var img:Loader; + private var footer:Sprite; + private var profileLink:String; + private var link:String; + private var imgContainer:Sprite; + private var miniLoader:MiniLoaderAsset; + + public function InstagramPopin(data:Object){ + var comment:Sprite; + super(data); + var idata:InstagramTrackerData = (tdata as InstagramTrackerData); + this.imgLoader = new URLLoader(); + this.imgLoader.dataFormat = "binary"; + this.profileLink = (("http://instagram.com/" + idata.name) + "/"); + this.link = idata.link; + this.imgContainer = new Sprite(); + this.imgContainer.y = (line.y + 10); + if (idata.picture != null){ + this.imgLoader.load(new URLRequest(idata.picture)); + this.imgLoader.addEventListener(ProgressEvent.PROGRESS, this.imgLoaderProgress); + this.imgLoader.addEventListener(IOErrorEvent.IO_ERROR, this.imgLoaderIoError); + this.imgLoader.addEventListener(Event.COMPLETE, this.imgLoaderComplete); + }; + addTweenInItem([this.imgContainer]); + this.footer = new Sprite(); + var t:String = idata.title; + var txt1:CustomTextField = new CustomTextField(StringUtils.htmlDecode(t), "instPopinImageTitle"); + txt1.wordWrap = false; + if (txt1.width > 300){ + txt1.wordWrap = true; + txt1.width = 300; + }; + this.footer.addChild(txt1); + txt1.y = (-(txt1.height) / 2); + var txtDate:CustomTextField = new CustomTextField(getUnixDate(int(idata.time)), "instPopinImagePlace"); + txtDate.wordWrap = false; + txtDate.x = txt1.x; + txtDate.y = (txt1.y + txt1.height); + this.footer.addChild(txtDate); + var img:Sprite = new InstagramPopinLocAsset(); + this.footer.addChild(img); + img.x = ((txt1.x + txt1.width) + 10); + img.y = (-(img.height) / 2); + var txt2:CustomTextField = new CustomTextField(CommonsText[Locator.CITY], "instPopinImagePlace"); + txt2.wordWrap = false; + txt2.x = ((img.x + img.width) + 3); + txt2.y = (-(txt2.height) / 2); + this.footer.addChild(txt2); + comment = new InstagramPopinCommentAsset(); + comment.buttonMode = true; + comment.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.footer.addChild(comment); + comment.x = ((POPIN_WIDTH - comment.width) - ICON_WIDTH); + comment.y = (-(comment.height) / 2); + var like:Sprite = new InstagramPopinLikeAsset(); + like.buttonMode = true; + like.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.footer.addChild(like); + like.x = ((((POPIN_WIDTH - comment.width) - like.width) - ICON_WIDTH) - 5); + like.y = (-(like.height) / 2); + var imgSize:Rectangle = this.getImageSize(idata.width, idata.height); + this.imgContainer.x = (ICON_WIDTH + (((POPIN_WIDTH - ICON_WIDTH) - imgSize.width) / 2)); + var sh:Shape = new Shape(); + sh.graphics.beginFill(0, 0.5); + sh.graphics.drawRect(0, 0, imgSize.width, imgSize.height); + this.imgContainer.addChild(sh); + this.addChild(this.imgContainer); + this.miniLoader = new MiniLoaderAsset(); + this.miniLoader.x = (this.imgContainer.width / 2); + this.miniLoader.y = (this.imgContainer.height / 2); + this.imgContainer.addChild(this.miniLoader); + this.footer.x = ICON_WIDTH; + this.addChild(this.footer); + this.footer.y = (((this.imgContainer.y + this.imgContainer.height) + (this.footer.height / 2)) + 10); + addTweenInItem([this.footer]); + } + public static function htmlUnescape(str:String):String{ + return (new XMLDocument(str).firstChild.nodeValue); + } + public static function htmlEscape(str:String):String{ + return (XML(new XMLNode(XMLNodeType.TEXT_NODE, str)).toXMLString()); + } + + override protected function setTitle(str:String):void{ + super.setTitle(str); + titleCtn.addEventListener(MouseEvent.CLICK, this.gotoProfile); + titleCtn.buttonMode = true; + titleCtn.mouseChildren = false; + } + private function gotoProfile(e:Event):void{ + navigateToURL(new URLRequest(this.profileLink), "_blank"); + } + private function gotoLink(e:Event):void{ + navigateToURL(new URLRequest(this.link), "_blank"); + } + private function imgLoaderProgress(e:Event):void{ + trace(e.toString()); + } + private function imgLoaderIoError(e:Event):void{ + trace(e.toString()); + } + private function imgLoaderComplete(e:Event):void{ + this.img = new Loader(); + this.img.loadBytes(e.target.data); + this.imgContainer.addChild(this.img); + this.img.contentLoaderInfo.addEventListener(Event.INIT, this.posImage); + trace(("img.width:" + this.img.width)); + } + private function getImageSize(w:uint, h:uint):Rectangle{ + var r:Rectangle = new Rectangle(0, 0, w, h); + if (w > (POPIN_WIDTH - ICON_WIDTH)){ + r.width = (POPIN_WIDTH - ICON_WIDTH); + r.height = ((h * r.width) / w); + }; + if (r.height > (POPIN_WIDTH - ICON_WIDTH)){ + r.height = (POPIN_WIDTH - ICON_WIDTH); + r.width = ((w * r.height) / h); + }; + return (r); + } + private function posImage(e:Event):void{ + (this.img.content as Bitmap).smoothing = true; + var size:Rectangle = this.getImageSize(this.img.width, this.img.height); + this.img.width = size.width; + this.img.height = size.height; + this.imgContainer.x = (ICON_WIDTH + (((POPIN_WIDTH - ICON_WIDTH) - this.imgContainer.width) / 2)); + this.imgContainer.addEventListener(MouseEvent.CLICK, this.gotoLink); + this.imgContainer.buttonMode = true; + this.imgContainer.mouseChildren = false; + } + override protected function get titleData():String{ + return ((((StringUtils.htmlDecode((tdata as InstagramTrackerData).name) + " ") + DataDetailText.instagramHasPostedAnewPic) + "")); + } + override protected function getIcon(type:uint):Sprite{ + return (new InstagramPopinIconAsset()); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/MetroPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/MetroPopin.as new file mode 100644 index 0000000..1442db0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/MetroPopin.as @@ -0,0 +1,106 @@ +package wd.hud.popins.datapopins { + import wd.hud.items.datatype.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import wd.core.*; + import wd.http.*; + import wd.hud.popins.datapopins.triangledatapopin.*; + import flash.events.*; + import flash.display.*; + import wd.providers.*; + + public class MetroPopin extends DataPopin { + + private var m1:MetroLine1Asset; + private var m2:MetroLine2Asset; + private var m3:MetroLine3Asset; + private var m3BIS:MetroLine3BISAsset; + private var m4:MetroLine4Asset; + private var m5:MetroLine5Asset; + private var m6:MetroLine6Asset; + private var m7:MetroLine7Asset; + private var m7BIS:MetroLine7BISAsset; + private var m8:MetroLine8Asset; + private var m9:MetroLine9Asset; + private var m10:MetroLine10Asset; + private var m11:MetroLine11Asset; + private var m12:MetroLine12Asset; + private var m13:MetroLine13Asset; + private var m14:MetroLine14Asset; + private var txt1:CustomTextField; + private var txt2:CustomTextField; + private var nextTrains:CustomTextField; + private var triangleData:TriangleDataPopin; + + public function MetroPopin(data:Object){ + super(data); + var vdata:StationTrackerData = (tdata as StationTrackerData); + this.txt1 = new CustomTextField(((vdata.trainsPerHour + " ") + CityTexts.metroTrainFrequencyUnit), "trainsPopinTxt1"); + this.txt1.width = POPIN_WIDTH; + this.txt1.y = (this.line.y + 20); + this.addChild(this.txt1); + addTweenInItem([this.txt1]); + if (FilterAvailability.isDetailActive(DataType.METRO_STATIONS)){ + this.txt2 = new CustomTextField((((vdata.averageCommuters + " ") + CityTexts.metroCommutersFrequencyUnit) + ""), "trainsPopinTxt1"); + this.txt2.width = POPIN_WIDTH; + this.txt2.y = (this.txt1.y + this.txt1.height); + this.addChild(this.txt2); + addTweenInItem([this.txt2]); + this.txt2.x = ICON_WIDTH; + }; + this.txt1.x = ICON_WIDTH; + } + private function rolloverTrain(e:Event):void{ + if (((this.triangleData) && (this.contains(this.triangleData)))){ + this.removeChild(this.triangleData); + }; + var icon:Icon = (e.target as Icon); + var d1:TriangleDataPopinData = new TriangleDataPopinData(DataDetailText.metroNextTrainsTerminus1, icon.terminus1, CityTexts.metroTrainFrequencyUnit); + var d2:TriangleDataPopinData = new TriangleDataPopinData(DataDetailText.metroNextTrainsTerminus2, icon.terminus2, CityTexts.metroTrainFrequencyUnit); + this.triangleData = new TriangleDataPopin(d1, d2); + this.triangleData.start(); + this.triangleData.mouseEnabled = false; + this.triangleData.x = (e.target.x + (e.target.width / 2)); + this.triangleData.y = (e.target.y + (e.target.height / 2)); + this.addChildAt(this.triangleData, 0); + } + override protected function get titleData():String{ + var vdata:StationTrackerData = (tdata as StationTrackerData); + return (vdata.station.name); + } + override protected function getIcon(type:uint):Sprite{ + var vdata:StationTrackerData = (tdata as StationTrackerData); + var r:Sprite = new Sprite(); + if (vdata.station.lineCount > 1){ + r.graphics.lineStyle(5, 0); + r.graphics.beginFill(0xFFFFFF); + r.graphics.drawCircle(0, 0, 15); + return (r); + }; + r.graphics.beginFill(0); + r.graphics.lineStyle(5, MetroLineColors.getColorByName(vdata.station.defaultLine.name)); + r.graphics.drawCircle(0, 0, 15); + return (r); + } + + } +}//package wd.hud.popins.datapopins + +import flash.display.*; +import __AS3__.vec.*; +import wd.d3.geom.metro.trains.*; + +class Icon extends Sprite { + + public var terminus1:Number; + public var terminus2:Number; + + public function Icon(trains:Vector.){ + super(); + this.terminus1 = trains[0].trainset; + this.terminus2 = 0; + if (trains.length > 1){ + this.terminus2 = trains[1].trainset; + }; + } +} diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/MobilePopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/MobilePopin.as new file mode 100644 index 0000000..d96fe6c --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/MobilePopin.as @@ -0,0 +1,55 @@ +package wd.hud.popins.datapopins { + import wd.hud.common.text.*; + import wd.hud.items.datatype.*; + import wd.providers.texts.*; + import flash.display.*; + + public class MobilePopin extends DataPopin { + + private var txt1:CustomTextField; + + public function MobilePopin(data:Object){ + var txt:String; + super(data); + this.txt1 = new CustomTextField("", "mobilePopinText"); + this.txt1.width = (POPIN_WIDTH - ICON_WIDTH); + var out:String = ""; + if ((data as MobilesTrackerData).operator != null){ + txt = (data as MobilesTrackerData).operator.toLowerCase(); + if (txt.lastIndexOf("gsm") != -1){ + out = (out + "2G"); + }; + if (txt.lastIndexOf("umt") != -1){ + if (out != ""){ + out = (out + " "); + }; + out = (out + "3G"); + }; + if (txt.lastIndexOf("lte") != -1){ + if (out != ""){ + out = (out + " "); + }; + out = (out + "4G"); + }; + if (out.length == 5){ + out = out.substr(0, 2); + }; + } else { + out = DataLabel.mobile; + }; + this.txt1.text = ((DataDetailText.mobileNetworks2G3G + " ") + out); + this.txt1.y = line.y; + this.txt1.x = ICON_WIDTH; + this.addChild(this.txt1); + addTweenInItem([this.txt1]); + } + override protected function getIcon(type:uint):Sprite{ + return (new MobilePopinIconAsset()); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/TwitterPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/TwitterPopin.as new file mode 100644 index 0000000..468ae11 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/TwitterPopin.as @@ -0,0 +1,183 @@ +package wd.hud.popins.datapopins { + import flash.display.*; + import wd.hud.items.datatype.*; + import flash.net.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import wd.utils.*; + import flash.events.*; + import flash.geom.*; + import flash.xml.*; + + public class TwitterPopin extends DataPopin { + + private var txtAt:CustomTextField; + private var txtDate:CustomTextField; + private var menu:Sprite; + private var bottomMenu:Sprite; + private var btnFollow:Sprite; + private var txt:CustomTextField; + private var tweet_id:String; + private var tweetos_id:String; + private var user_name:String; + private var user_name2:String; + private var xmlDoc:XMLDocument; + + public function TwitterPopin(data:Object){ + var profileImage:Loader; + var twData:TwitterTrackerData = (data as TwitterTrackerData); + this.user_name = twData.name; + this.user_name2 = twData.from_user; + super(data); + if (twData.profile_picture){ + profileImage = new Loader(); + profileImage.x = -13; + profileImage.y = -3; + profileImage.load(new URLRequest(twData.profile_picture)); + this.addChild(profileImage); + addTweenInItem([profileImage]); + profileImage.y = (title.y + ((title.height - 48) / 2)); + }; + this.menu = new Sprite(); + this.bottomMenu = new Sprite(); + this.tweet_id = twData.tweet_id; + this.tweetos_id = twData.from_user_id; + this.txtAt = new CustomTextField(((twData.place_name + " ") + getUnixDate(Number(twData.time))), "twitterPopinAt"); + this.txtAt.wordWrap = false; + this.txtAt.y = (-(this.txtAt.height) / 2); + this.menu.addChild(this.txtAt); + var btnFollow:Sprite = this.followButton(((DataDetailText.twitterFollow + " @") + data.name), this.clickFollow); + btnFollow.y = (-(btnFollow.height) / 2); + this.menu.addChild(btnFollow); + var btnFav:Sprite = this.setMenuItem(new TwitterPopinIconFavAsset(), DataDetailText.twitterFavorites, this.clickFav); + btnFav.x = (POPIN_WIDTH - btnFav.width); + btnFav.y = (-(btnFav.height) / 2); + this.bottomMenu.addChild(btnFav); + var btnRetw:Sprite = this.setMenuItem(new TwitterPopinIconRetAsset(), DataDetailText.twitterRetweet, this.clickRetw); + btnRetw.x = (btnFav.x - btnRetw.width); + btnRetw.y = (-(btnFav.height) / 2); + this.bottomMenu.addChild(btnRetw); + var btnReply:Sprite = this.setMenuItem(new TwitterPopinIconReplyAsset(), DataDetailText.twitterReply, this.clickReply); + btnReply.x = (btnRetw.x - btnReply.width); + btnReply.y = (-(btnReply.height) / 2); + this.bottomMenu.addChild(btnReply); + var btnSeeConv:Sprite = this.setMenuItem(new Sprite(), DataDetailText.twitterSeeConversation, this.clickSeeConv); + btnSeeConv.y = 0; + btnSeeConv.x = ICON_WIDTH; + this.bottomMenu.addChild(btnSeeConv); + btnFollow.x = ((POPIN_WIDTH - btnFollow.width) - ICON_WIDTH); + this.menu.x = ICON_WIDTH; + this.menu.y = ((line.y + (this.menu.height / 2)) + 10); + this.addChild(this.menu); + this.addChild(this.bottomMenu); + addTweenInItem([this.menu]); + var t:String = URLFormater.addAnchors(StringUtils.htmlDecode(data.caption)); + t = this.addTwitterAnchors(t); + trace(("t : " + t)); + var txt:CustomTextField = new CustomTextField(t, "twitterPopinText"); + txt.embedFonts = false; + txt.width = (POPIN_WIDTH - ICON_WIDTH); + txt.y = (this.menu.y + this.menu.height); + txt.x = ICON_WIDTH; + this.bottomMenu.y = ((txt.y + txt.height) + 15); + this.addChild(txt); + addTweenInItem([txt]); + addTweenInItem([this.bottomMenu]); + } + private function addTwitterAnchors(strIn:String):String{ + var r:String; + var i:*; + var a:Array = strIn.split(" "); + trace(("a.length :" + a.length)); + if (a.length > 0){ + for (i in a) { + if (a[i].charAt(0) == "@"){ + a[i] = (((("") + a[i]) + ""); + } else { + if (a[i].charAt(0) == "#"){ + a[i] = (((("") + a[i]) + ""); + }; + }; + }; + r = a.join(" "); + } else { + r = strIn; + }; + return (r); + } + private function clickFav(e:Event):void{ + JsPopup.open(("https://twitter.com/intent/favorite?tweet_id=" + this.tweet_id)); + } + private function clickRetw(e:Event):void{ + JsPopup.open(("https://twitter.com/intent/retweet?tweet_id=" + this.tweet_id)); + } + private function clickReply(e:Event):void{ + JsPopup.open(("https://twitter.com/intent/tweet?in_reply_to=" + this.tweet_id)); + } + private function clickSeeConv(e:Event):void{ + JsPopup.open(((("https://twitter.com/" + this.tweetos_id) + "/status/") + this.tweet_id)); + } + private function setMenuItem(icon:Sprite, label:String, clickMethod:Function):Sprite{ + var r:Sprite = new Sprite(); + var i:Sprite = icon; + var t:CustomTextField = new CustomTextField(label, "twitterPopinMenuItem"); + var bg:Sprite = new Sprite(); + r.addChild(bg); + t.wordWrap = false; + t.x = (i.width + 2); + t.y = ((i.height - t.height) / 2); + r.addChild(i); + r.addChild(t); + r.buttonMode = true; + r.mouseChildren = false; + r.addEventListener(MouseEvent.CLICK, clickMethod); + bg.graphics.beginFill(0xFFFFFF, 0); + bg.graphics.drawRect(0, 0, r.width, r.height); + return (r); + } + private function clickFollow(e:MouseEvent):void{ + JsPopup.open(("https://twitter.com/intent/user?user_id=" + this.tweetos_id)); + } + override protected function getIcon(type:uint):Sprite{ + return (new Sprite()); + } + override protected function setTitle(str:String):void{ + super.setTitle(((((this.user_name2 + "
") + "@") + this.user_name) + "")); + titleCtn.addEventListener(MouseEvent.CLICK, this.clickTitle); + titleCtn.buttonMode = true; + titleCtn.mouseChildren = false; + } + private function clickTitle(e:Event):void{ + JsPopup.open(("https://twitter.com/" + this.user_name)); + } + override protected function disposeHeader():void{ + super.disposeHeader(); + icon.x = (icon.y = 0); + } + public function followButton(label:String, clickFunc:Function):Sprite{ + var r:Sprite = new Sprite(); + var HEIGHT:uint = 18; + var f:Sprite = new TwitterBtnIconAsset(); + f.x = 5; + f.y = (((HEIGHT - f.height) / 2) + 2); + r.addChild(f); + var labelt:CustomTextField = new CustomTextField(label, "twitterPopinFollowBtn"); + labelt.x = (f.width + 3); + labelt.wordWrap = false; + labelt.y = (((HEIGHT - labelt.height) / 2) + 2); + r.addChild(labelt); + var bg:Shape = new Shape(); + var m:Matrix = new Matrix(); + m.createGradientBox((f.width + labelt.width), HEIGHT, (-(Math.PI) / 2)); + bg.graphics.lineStyle(1, 0x999999); + bg.graphics.beginGradientFill(GradientType.LINEAR, [0xFDFDFD, 0xE1E1E1], [1, 1], [0, 254], m); + bg.graphics.drawRoundRect(0, 2, ((22 + 3) + labelt.width), HEIGHT, 5, 5); + r.addChildAt(bg, 0); + r.buttonMode = true; + r.mouseChildren = false; + r.addEventListener(MouseEvent.CLICK, clickFunc); + return (r); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/VeloPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/VeloPopin.as new file mode 100644 index 0000000..f0b5586 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/VeloPopin.as @@ -0,0 +1,50 @@ +package wd.hud.popins.datapopins { + import wd.core.*; + import wd.http.*; + import wd.hud.items.datatype.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + + public class VeloPopin extends DataPopin { + + private var txt1:CustomTextField; + private var txt2:CustomTextField; + private var txt3:CustomTextField; + private var txt4:CustomTextField; + + public function VeloPopin(data:Object){ + super(data); + if (!(FilterAvailability.isDetailActive(DataType.VELO_STATIONS))){ + return; + }; + var vdata:VeloTrackerData = (tdata as VeloTrackerData); + this.txt1 = new CustomTextField(((int(vdata.free) + " ") + DataDetailText.bicycleAvailable), "bikesPopinTxt1"); + this.txt1.width = POPIN_WIDTH; + this.txt1.y = (this.line.y + 20); + this.addChild(this.txt1); + addTweenInItem([this.txt1, {alpha:0}, {alpha:1}]); + this.txt2 = new CustomTextField(((int(vdata.available) + " ") + DataDetailText.bicycleAvailableSlots), "bikesPopinTxt1"); + this.txt2.width = POPIN_WIDTH; + this.txt2.y = (this.txt1.y + this.txt1.height); + this.addChild(this.txt2); + addTweenInItem([this.txt2, {alpha:0}, {alpha:1}]); + if (vdata.updated != "null"){ + this.txt3 = new CustomTextField(((DataDetailText.bicycleUpdatedAt + " ") + vdata.updated), "bikesPopinTxt3"); + this.txt3.y = ((this.txt2.y + this.txt2.height) + 5); + this.txt3.width = POPIN_WIDTH; + this.addChild(this.txt3); + addTweenInItem([this.txt3, {alpha:0}, {alpha:1}]); + }; + this.txt4 = new CustomTextField(vdata.address, "bikesPopinTxt4"); + this.txt4.y = ((this.txt3.y + this.txt3.height) + 5); + this.txt4.width = POPIN_WIDTH; + this.addChild(this.txt4); + addTweenInItem([this.txt4, {alpha:0}, {alpha:1}]); + this.txt1.x = (this.txt2.x = (this.txt3.x = (this.txt4.x = ICON_WIDTH))); + } + override protected function get titleData():String{ + return ((((tdata as VeloTrackerData).id + " - ") + (tdata as VeloTrackerData).name)); + } + + } +}//package wd.hud.popins.datapopins diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopin.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopin.as new file mode 100644 index 0000000..c3685e0 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopin.as @@ -0,0 +1,99 @@ +package wd.hud.popins.datapopins.triangledatapopin { + import flash.geom.*; + import flash.display.*; + import wd.hud.common.tween.*; + import wd.hud.common.text.*; + import flash.events.*; + + public class TriangleDataPopin extends Sprite { + + private static const DATA_1_SPOT:Point = new Point(-109, 125); + private static const DATA_2_SPOT:Point = new Point(66, 66); + + private var data1:TriangleDataPopinData; + private var data2:TriangleDataPopinData; + private var data1LabelCTF:CustomTextField; + private var data2LabelCTF:CustomTextField; + private var data1ValueCTF:CustomTextField; + private var data2ValueCTF:CustomTextField; + private var data1Dot:Sprite; + private var data2Dot:Sprite; + private var line1:AnimatedLine; + private var line2:AnimatedLine; + private var dotStart:Sprite; + + public function TriangleDataPopin(d1:TriangleDataPopinData, d2:TriangleDataPopinData){ + super(); + this.data1 = d1; + this.data2 = d2; + } + public function start():void{ + this.dotStart = new Sprite(); + this.dotStart.graphics.lineStyle(2, 0xFFFFFF, 1); + this.dotStart.graphics.beginFill(0, 1); + this.dotStart.graphics.drawCircle(0, 0, 4); + this.line1 = new AnimatedLine(DATA_1_SPOT); + this.line1.alpha = 0.5; + this.line1.addEventListener(AnimatedLine.TWEEN_RENDER, this.renderLine1); + this.addChild(this.line1); + this.data1Dot = new Sprite(); + this.data1Dot.graphics.beginFill(0xFFFFFF, 1); + this.data1Dot.graphics.drawCircle(0, 0, 4); + this.addChild(this.data1Dot); + this.line2 = new AnimatedLine(DATA_2_SPOT); + this.line2.alpha = 0.5; + this.line2.addEventListener(AnimatedLine.TWEEN_RENDER, this.renderLine2); + this.addChild(this.line2); + this.data2Dot = new Sprite(); + this.data2Dot.graphics.beginFill(0xFFFFFF, 1); + this.data2Dot.graphics.drawCircle(0, 0, 4); + this.addChild(this.data2Dot); + this.data1LabelCTF = new CustomTextField(this.data1.label, "elecCoordsLabels"); + this.data1LabelCTF.wordWrap = false; + this.addChild(this.data1LabelCTF); + this.data1ValueCTF = new CustomTextField("", "elecCoordsData"); + this.data1ValueCTF.wordWrap = false; + this.addChild(this.data1ValueCTF); + this.data2LabelCTF = new CustomTextField(this.data2.label, "elecCoordsLabels"); + this.data2LabelCTF.wordWrap = false; + this.addChild(this.data2LabelCTF); + this.data2ValueCTF = new CustomTextField("", "elecCoordsData"); + this.data2ValueCTF.wordWrap = false; + this.addChild(this.data2ValueCTF); + this.addChild(this.dotStart); + } + protected function renderLine1(e:Event):void{ + var t:Array; + this.data1Dot.x = (DATA_1_SPOT.x * e.target.step); + this.data1Dot.y = (DATA_1_SPOT.y * e.target.step); + this.data1LabelCTF.x = (this.data1Dot.x + 10); + this.data1LabelCTF.y = (this.data1Dot.y - (this.data1LabelCTF.height / 2)); + if ((this.data2.data is int)){ + this.data1ValueCTF.text = Math.round((this.data1.data * e.target.step)).toString(); + } else { + t = (this.data1.data * e.target.step).toFixed(6).split("."); + this.data1ValueCTF.text = (((t[0] + ".") + t[1]) + ""); + }; + this.data1ValueCTF.text = (this.data1ValueCTF.text + this.data1.unit); + this.data1ValueCTF.x = this.data1LabelCTF.x; + this.data1ValueCTF.y = ((this.data1LabelCTF.y + this.data1LabelCTF.height) - 10); + } + protected function renderLine2(e:Event):void{ + var t:Array; + this.data2Dot.x = (DATA_2_SPOT.x * e.target.step); + this.data2Dot.y = (DATA_2_SPOT.y * e.target.step); + this.data2LabelCTF.x = (this.data2Dot.x + 10); + this.data2LabelCTF.y = (this.data2Dot.y - (this.data2LabelCTF.height / 2)); + if ((this.data2.data is int)){ + this.data2ValueCTF.text = Math.round((this.data2.data * e.target.step)).toString(); + } else { + t = (this.data2.data * e.target.step).toFixed(6).split("."); + this.data2ValueCTF.text = (((t[0] + ".") + t[1]) + ""); + }; + this.data2ValueCTF.text = (this.data2ValueCTF.text + this.data2.unit); + this.data2ValueCTF.x = this.data2LabelCTF.x; + this.data2ValueCTF.y = ((this.data2LabelCTF.y + this.data2LabelCTF.height) - 10); + } + + } +}//package wd.hud.popins.datapopins.triangledatapopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopinData.as b/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopinData.as new file mode 100644 index 0000000..8eb9641 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/datapopins/triangledatapopin/TriangleDataPopinData.as @@ -0,0 +1,16 @@ +package wd.hud.popins.datapopins.triangledatapopin { + + public class TriangleDataPopinData { + + public var label:String; + public var data:Number; + public var unit:String; + + public function TriangleDataPopinData(l:String, d:Number, u:String=""){ + super(); + this.label = l; + this.data = d; + this.unit = u; + } + } +}//package wd.hud.popins.datapopins.triangledatapopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/disclaimerpopin/DisclaimerPopin.as b/flash_decompiled/watchdog/wd/hud/popins/disclaimerpopin/DisclaimerPopin.as new file mode 100644 index 0000000..5934ccb --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/disclaimerpopin/DisclaimerPopin.as @@ -0,0 +1,40 @@ +package wd.hud.popins.disclaimerpopin { + import wd.providers.texts.*; + import flash.display.*; + import wd.hud.common.text.*; + import wd.hud.popins.*; + import wd.http.*; + import flash.events.*; + + public class DisclaimerPopin extends Popin { + + public function DisclaimerPopin(){ + super(); + setTitle(LiveActivitiesText.popinTitle); + setIcon(new Sprite()); + setLine(); + disposeHeader(); + var txt:CustomTextField = new CustomTextField(LiveActivitiesText.disclaimerText, "disclaimerPopinText"); + txt.x = ICON_WIDTH; + txt.y = (line.y + 10); + txt.width = (POPIN_WIDTH - ICON_WIDTH); + this.addChild(txt); + addTweenInItem([txt]); + var okButton:PopinButton = new PopinButton(LiveActivitiesText.okButton, this.clickOk); + var cancelButton:PopinButton = new PopinButton(LiveActivitiesText.cancelButton, close); + this.addChild(okButton); + this.addChild(cancelButton); + addTweenInItem([okButton]); + addTweenInItem([cancelButton]); + cancelButton.y = (okButton.y = ((txt.y + txt.height) + 30)); + cancelButton.x = (POPIN_WIDTH - cancelButton.width); + okButton.x = (((POPIN_WIDTH - cancelButton.width) - okButton.width) - 30); + } + private function clickOk(e:Event):void{ + FacebookConnector.login(); + GoogleAnalytics.callPageView(GoogleAnalytics.APP_FACEBOOK_DISCLAIMER); + close(); + } + + } +}//package wd.hud.popins.disclaimerpopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/helppopin/HelpPopinWrapper.as b/flash_decompiled/watchdog/wd/hud/popins/helppopin/HelpPopinWrapper.as new file mode 100644 index 0000000..18d7eda --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/helppopin/HelpPopinWrapper.as @@ -0,0 +1,36 @@ +package wd.hud.popins.helppopin { + import flash.geom.*; + import flash.utils.*; + import flash.events.*; + import biga.utils.*; + + public class HelpPopinWrapper extends HelpPopinContent { + + private var drag_rect:Rectangle; + private var interval:uint; + private var ratio:Number; + + public function HelpPopinWrapper(){ + super(); + } + private function onMouseHandler(e:MouseEvent):void{ + this.drag_rect = new Rectangle(scrollbar.bg.x, scrollbar.bg.y, ((scrollbar.bg.width - scrollbar.carret.width) + 14), 0); + switch (e.type){ + case MouseEvent.MOUSE_DOWN: + scrollbar.carret.startDrag(false, this.drag_rect); + this.interval = setInterval(this.checkRatio, 30); + break; + default: + scrollbar.carret.stopDrag(); + this.checkRatio(); + clearInterval(this.interval); + return; + }; + } + private function checkRatio():void{ + this.ratio = GeomUtils.normalize(scrollbar.carret.x, this.drag_rect.x, this.drag_rect.right); + contenu.x = (contenu.x + (((this.ratio * -((contenu.width - masque.width))) - contenu.x) * 0.5)); + } + + } +}//package wd.hud.popins.helppopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/langpopin/LangPopin.as b/flash_decompiled/watchdog/wd/hud/popins/langpopin/LangPopin.as new file mode 100644 index 0000000..ad29dec --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/langpopin/LangPopin.as @@ -0,0 +1,83 @@ +package wd.hud.popins.langpopin { + import wd.providers.texts.*; + import flash.display.*; + import wd.core.*; + import flash.net.*; + import wd.utils.*; + import flash.events.*; + import wd.hud.popins.*; + + public class LangPopin extends Popin { + + public function LangPopin(){ + var lang:XML; + var item:LangItem; + LangItem.ICONS["en-EN"] = new FlagENenAsset(); + LangItem.ICONS["fr-FR"] = new FlagFRfrAsset(); + LangItem.ICONS["ru-RU"] = new FlagRUruAsset(); + LangItem.ICONS["pl-PL"] = new FlagPLplAsset(); + LangItem.ICONS["sw-SW"] = new FlagSWswAsset(); + LangItem.ICONS["it-IT"] = new FlagITitAsset(); + LangItem.ICONS["jp-JP"] = new FlagJPjpAsset(); + LangItem.ICONS["nl-NL"] = new FlagNLnlAsset(); + LangItem.ICONS["de-DE"] = new FlagDEdeAsset(); + LangItem.ICONS["es-ES"] = new FlagESesAsset(); + super(); + setTitle(FooterText.languages); + setIcon(new Sprite()); + setLine(); + disposeHeader(); + var l:uint; + var c:uint; + for each (lang in Config.XML_LANG_MENU.lang) { + item = new LangItem(lang.label, this.clickHandler, lang.@locale); + item.x = (ICON_WIDTH + (c * 214)); + item.y = ((line.y + 30) + (l * 28)); + this.addChild(item); + addTweenInItem([item]); + l++; + if (l == 5){ + l = 0; + c++; + }; + }; + } + public function clickHandler(e:Event):void{ + navigateToURL(new URLRequest(URLFormater.changeLanguageUrl(e.target.locale)), "_self"); + } + + } +}//package wd.hud.popins.langpopin + +import flash.display.*; +import flash.events.*; +import flash.utils.*; +import wd.hud.common.text.*; + +class LangItem extends Sprite { + + public static var ICONS:Dictionary = new Dictionary(); + + private var label:CustomTextField; + private var bg:Shape; + public var locale:String; + + public function LangItem(label:String, clickFunc:Function, locale:String){ + super(); + this.locale = locale; + var iconName:String = (("Flag" + locale.replace("-", "_")) + "Asset"); + trace(((("iconName :" + iconName) + " ") + "FlagENenAsset")); + var icon:Sprite = ICONS[locale]; + this.addChild(icon); + this.label = new CustomTextField(label.toUpperCase(), "langPopinItem"); + if ((((locale == "ru-RU")) || ((locale == "jp-JP")))){ + this.label.embedFonts = false; + }; + this.label.wordWrap = false; + this.label.x = (icon.width + 10); + this.addChild(this.label); + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.CLICK, clickFunc); + } +} diff --git a/flash_decompiled/watchdog/wd/hud/popins/legalspopin/LegalsPopin.as b/flash_decompiled/watchdog/wd/hud/popins/legalspopin/LegalsPopin.as new file mode 100644 index 0000000..ec4a733 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/legalspopin/LegalsPopin.as @@ -0,0 +1,85 @@ +package wd.hud.popins.legalspopin { + import wd.providers.texts.*; + import flash.display.*; + import flash.events.*; + import wd.hud.popins.textpopin.*; + + public class LegalsPopin extends TextPopin { + + private var btn1:BtnPopin; + private var btn2:BtnPopin; + + public function LegalsPopin(){ + super(); + setTitle(LegalsText.title); + setIcon(new Sprite()); + setLine(); + disposeHeader(); + setText(LegalsText.text, "legalsPopinText"); + this.btn2 = new BtnPopin(LegalsText.btnCredits.toUpperCase(), this.openCredits); + this.btn2.x = (POPIN_WIDTH - this.btn2.width); + this.btn1 = new BtnPopin(LegalsText.btnTerms.toUpperCase(), this.openTerms); + this.btn1.x = ((this.btn2.x - this.btn1.width) - 5); + this.btn1.y = (this.btn2.y = (line.y + 10)); + this.addChild(this.btn1); + this.addChild(this.btn2); + addTweenInItem([this.btn1]); + addTweenInItem([this.btn2]); + text.y = (txtY0 = ((this.btn1.y + this.btn1.height) + 10)); + if (sbar){ + sbar.y = (txtMask.y = text.y); + }; + } + private function openTerms(e:Event):void{ + setText(LegalsText.text, "legalsPopinText"); + tweenIn(); + text.y = (txtY0 = ((this.btn1.y + this.btn1.height) + 10)); + if (sbar){ + sbar.y = (txtMask.y = text.y); + }; + } + private function openCredits(e:Event):void{ + setText(LegalsText.text2, "legalsPopinText"); + tweenIn(); + text.y = (txtY0 = ((this.btn1.y + this.btn1.height) + 10)); + if (sbar){ + sbar.y = (txtMask.y = text.y); + }; + } + + } +}//package wd.hud.popins.legalspopin + +import flash.display.*; +import flash.events.*; +import wd.hud.common.text.*; +import aze.motion.*; + +class BtnPopin extends Sprite { + + private var bg:Sprite; + private var txt:CustomTextField; + + public function BtnPopin(label:String, clickMethod:Function):void{ + super(); + this.bg = new Sprite(); + this.bg.graphics.beginFill(0xFFFFFF, 1); + this.addChild(this.bg); + this.txt = new CustomTextField(label, "legalsPopinBtn"); + this.txt.wordWrap = false; + this.addChild(this.txt); + this.bg.graphics.drawRect(-5, 0, (this.txt.width + 10), this.txt.height); + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.ROLL_OVER, this.rov); + this.addEventListener(MouseEvent.ROLL_OUT, this.rou); + this.addEventListener(MouseEvent.CLICK, clickMethod); + } + private function rov(e:Event):void{ + eaze(this.bg).to(0.3, {alpha:0.8}); + } + private function rou(e:Event):void{ + eaze(this.bg).to(0.3, {alpha:18}); + } + +} diff --git a/flash_decompiled/watchdog/wd/hud/popins/sharelinkpopin/ShareLinkPopin.as b/flash_decompiled/watchdog/wd/hud/popins/sharelinkpopin/ShareLinkPopin.as new file mode 100644 index 0000000..6e93870 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/sharelinkpopin/ShareLinkPopin.as @@ -0,0 +1,111 @@ +package wd.hud.popins.sharelinkpopin { + import wd.providers.texts.*; + import flash.display.*; + import wd.hud.common.text.*; + import flash.events.*; + import wd.http.*; + import wd.utils.*; + import flash.system.*; + import wd.hud.popins.*; + + public class ShareLinkPopin extends Popin { + + public static const BAR_HEIGHT:uint = 33; + + private var copyBtn:Sprite; + private var txtLink:CustomTextField; + + public function ShareLinkPopin(){ + super(); + setTitle(FooterText.share); + setLine(); + setIcon(new Sprite()); + disposeHeader(); + var txt:CustomTextField = new CustomTextField(ShareText.FBGtitle, "sharePopinTxt"); + txt.width = (POPIN_WIDTH - ICON_WIDTH); + this.addChild(txt); + txt.y = (line.y + 5); + txt.x = line.x; + addTweenInItem([txt]); + var btn:CopyButton = new CopyButton(); + btn.addEventListener(MouseEvent.CLICK, this.copyClick); + var bg:Sprite = new Sprite(); + bg.graphics.beginFill(0xFFFFFF, 1); + bg.graphics.drawRect(0, 0, ((POPIN_WIDTH - ICON_WIDTH) - btn.width), BAR_HEIGHT); + bg.y = ((txt.y + txt.height) + 5); + bg.x = line.x; + btn.x = (bg.x + bg.width); + btn.y = bg.y; + var icon:Sprite = new SharePopinLinkAsset(); + icon.x = 10; + icon.y = ((BAR_HEIGHT - icon.height) / 2); + bg.addChild(icon); + this.txtLink = new CustomTextField(" ", "sharePopinLink"); + this.txtLink.wordWrap = false; + this.txtLink.y = (bg.y + ((BAR_HEIGHT - this.txtLink.height) / 2)); + this.txtLink.x = (((bg.x + icon.x) + icon.width) + 10); + this.addChild(bg); + addTweenInItem([bg]); + this.addChild(this.txtLink); + this.addChild(btn); + addTweenInItem([btn]); + GoogleAnalytics.callPageView(GoogleAnalytics.FOOTER_SHARE_URLCOPY); + URLFormater.shorten(this.setShortLink); + } + private function setShortLink(l:String):void{ + this.txtLink.text = l; + } + private function copyClick(e:Event):void{ + System.setClipboard(this.txtLink.text); + } + + } +}//package wd.hud.popins.sharelinkpopin + +import flash.display.*; +import wd.hud.common.text.*; +import flash.events.*; +import aze.motion.*; + +class CopyButton extends Sprite { + + private var rovState:Sprite; + private var rouState:Sprite; + + public function CopyButton():void{ + super(); + var txtRov:CustomTextField = new CustomTextField("COPY", "sharePopinBtn_rollover"); + txtRov.wordWrap = false; + this.rovState = new Sprite(); + this.rovState.graphics.lineStyle(1, 0, 1, false, "normal", CapsStyle.SQUARE); + this.rovState.graphics.beginFill(0xFFFFFF, 1); + this.rovState.graphics.drawRect(0, 0, (txtRov.width + 40), 33); + txtRov.x = ((this.rovState.width - txtRov.width) / 2); + txtRov.y = ((this.rovState.height - txtRov.height) / 2); + this.rovState.addChild(txtRov); + var txtRou:CustomTextField = new CustomTextField("COPY", "sharePopinBtn_rollout"); + txtRou.wordWrap = false; + this.rouState = new Sprite(); + this.rouState.graphics.lineStyle(1, 0xFFFFFF, 0.5, false, "normal", CapsStyle.SQUARE); + this.rouState.graphics.beginFill(0, 1); + this.rouState.graphics.drawRect(0, 0, (txtRov.width + 40), 33); + txtRou.x = ((this.rouState.width - txtRou.width) / 2); + txtRou.y = ((this.rouState.height - txtRou.height) / 2); + this.rouState.addChild(txtRou); + this.addChild(this.rovState); + this.addChild(this.rouState); + this.buttonMode = true; + this.mouseChildren = false; + this.addEventListener(MouseEvent.ROLL_OVER, this.rov); + this.addEventListener(MouseEvent.ROLL_OUT, this.rou); + } + private function rov(e:Event):void{ + eaze(this.rouState).to(0.5, {alpha:0}); + eaze(this.rovState).to(0.5, {alpha:1}); + } + private function rou(e:Event):void{ + eaze(this.rouState).to(0.5, {alpha:1}); + eaze(this.rovState).to(0.5, {alpha:0}); + } + +} diff --git a/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopin.as b/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopin.as new file mode 100644 index 0000000..8b07373 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopin.as @@ -0,0 +1,80 @@ +package wd.hud.popins.textpopin { + import flash.events.*; + import wd.hud.common.text.*; + import flash.display.*; + import aze.motion.*; + import aze.motion.easing.*; + import wd.hud.popins.*; + + public class TextPopin extends Popin { + + protected var text:CustomTextField; + protected var MAX_HEIGHT:uint = 240; + protected var txtY0:uint; + protected var sbar:TextPopinScrollbar; + protected var txtMask:Sprite; + + public function TextPopin(){ + super(); + this.MAX_HEIGHT = (this.MAX_HEIGHT * 1.7); + POPIN_WIDTH = (POPIN_WIDTH * 1.2); + } + override protected function addBtnClose():void{ + btnClose = new CrossAsset(); + btnClose.x = ((POPIN_WIDTH * 1.2) - btnClose.width); + btnClose.buttonMode = true; + btnClose.addEventListener(MouseEvent.CLICK, close); + this.addChild(btnClose); + addTweenInItem([btnClose, {alpha:0}, {alpha:1}]); + } + protected function clearText():void{ + if (this.text){ + this.removeChild(this.text); + }; + if (this.sbar){ + this.sbar.removeEventListener(TextPopinScrollbar.SCROLL_EVENT, this.scroll); + this.removeChild(this.sbar); + this.sbar = null; + }; + } + protected function setText(txt:String, cssClass:String="popinTextBtn"):void{ + this.clearText(); + this.text = new CustomTextField(txt, cssClass); + this.text.width = (POPIN_WIDTH - ICON_WIDTH); + this.text.x = ICON_WIDTH; + this.text.y = (line.y + 10); + this.addChild(this.text); + addTweenInItem([this.text]); + if (this.text.height > this.MAX_HEIGHT){ + this.txtY0 = this.text.y; + this.text.width = (((POPIN_WIDTH - ICON_WIDTH) - TextPopinScrollbar.BAR_WIDTH) - 5); + this.txtMask = new Sprite(); + this.txtMask.graphics.beginFill(0xFF0000, 0.5); + this.txtMask.graphics.drawRect(0, 0, this.text.width, this.MAX_HEIGHT); + this.txtMask.x = this.text.x; + this.txtMask.y = this.text.y; + this.addChild(this.txtMask); + this.sbar = new TextPopinScrollbar(this.MAX_HEIGHT, this.text.height, this); + this.sbar.x = ((this.text.x + this.text.width) + 5); + this.sbar.y = this.text.y; + this.addChild(this.sbar); + addTweenInItem([this.sbar]); + this.text.mask = this.txtMask; + this.sbar.addEventListener(TextPopinScrollbar.SCROLL_EVENT, this.scroll); + }; + } + override public function get width():Number{ + return (super.width); + } + override public function set width(value:Number):void{ + super.width = value; + } + override public function get height():Number{ + return (((line.y + 10) + this.MAX_HEIGHT)); + } + private function scroll(e:Event):void{ + eaze(this.text).easing(Cubic.easeOut).to(0.5, {y:(this.txtY0 - this.sbar.desty)}); + } + + } +}//package wd.hud.popins.textpopin diff --git a/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopinScrollbar.as b/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopinScrollbar.as new file mode 100644 index 0000000..24465d1 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/popins/textpopin/TextPopinScrollbar.as @@ -0,0 +1,66 @@ +package wd.hud.popins.textpopin { + import flash.display.*; + import flash.geom.*; + import flash.events.*; + + public class TextPopinScrollbar extends Sprite { + + public static const SCROLL_EVENT:String = "I'M SCROLLIN' MOTHERFUCKER !"; + public static const BAR_WIDTH:uint = 10; + + private var barHeight:uint; + private var maxHeight:uint; + private var scrollBounds:Rectangle; + private var bar:Sprite; + private var bgScroll:Sprite; + public var desty:uint; + private var wheelHost:Sprite; + + public function TextPopinScrollbar(height:uint, maxHeight:uint, wheelHost:Sprite){ + super(); + this.barHeight = height; + this.maxHeight = maxHeight; + this.bgScroll = new Sprite(); + this.bgScroll.graphics.beginBitmapFill(new RayPatternAsset()); + this.bgScroll.graphics.drawRect(0, 0, BAR_WIDTH, this.barHeight); + this.bgScroll.graphics.endFill(); + this.bgScroll.alpha = 0.3; + this.addChild(this.bgScroll); + this.bar = new Sprite(); + this.bar.graphics.beginFill(0xFFFFFF, 1); + this.bar.graphics.drawRect(0, 0, BAR_WIDTH, (this.barHeight * (this.barHeight / maxHeight))); + this.bar.graphics.endFill(); + this.addChild(this.bar); + this.scrollBounds = new Rectangle(0, 0, 0, (this.bgScroll.height - this.bar.height)); + this.bar.mouseChildren = false; + this.bar.buttonMode = true; + this.bar.mouseEnabled = true; + this.bar.addEventListener(MouseEvent.MOUSE_DOWN, this.startScroll); + wheelHost.addEventListener(MouseEvent.MOUSE_WHEEL, this.onMouseWheel); + } + private function startScroll(e:Event):void{ + this.bar.startDrag(false, this.scrollBounds); + this.bar.removeEventListener(MouseEvent.MOUSE_DOWN, this.startScroll); + this.bar.stage.addEventListener(MouseEvent.MOUSE_MOVE, this.scroll); + this.bar.stage.addEventListener(MouseEvent.MOUSE_UP, this.stopScroll); + } + private function stopScroll(e:Event):void{ + this.bar.stopDrag(); + this.bar.stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.scroll); + this.bar.stage.removeEventListener(MouseEvent.MOUSE_UP, this.stopScroll); + this.bar.addEventListener(MouseEvent.MOUSE_DOWN, this.startScroll); + } + private function onMouseWheel(e:MouseEvent):void{ + var delta:int = (((e.delta > 0)) ? -10 : 10); + this.bar.y = (this.bar.y + delta); + this.bar.y = Math.max(this.bar.y, 0); + this.bar.y = Math.min(this.bar.y, this.scrollBounds.height); + this.scroll(null); + } + private function scroll(e:Event):void{ + this.desty = ((this.bar.y / this.scrollBounds.height) * (this.maxHeight - this.barHeight)); + this.dispatchEvent(new Event(SCROLL_EVENT)); + } + + } +}//package wd.hud.popins.textpopin diff --git a/flash_decompiled/watchdog/wd/hud/preloaders/BuildingPreloader.as b/flash_decompiled/watchdog/wd/hud/preloaders/BuildingPreloader.as new file mode 100644 index 0000000..32b9499 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/preloaders/BuildingPreloader.as @@ -0,0 +1,22 @@ +package wd.hud.preloaders { + import wd.d3.control.*; + import wd.events.*; + import wd.http.*; + import flash.display.*; + + public class BuildingPreloader extends Sprite { + + private var bs:BuildingService; + + public function BuildingPreloader(){ + super(); + this.bs = Navigator.instance.building_service; + Navigator.instance.addEventListener(NavigatorEvent.LOADING_START, this.loadingHandler); + Navigator.instance.addEventListener(NavigatorEvent.LOADING_PROGRESS, this.loadingHandler); + Navigator.instance.addEventListener(NavigatorEvent.LOADING_STOP, this.loadingHandler); + } + private function loadingHandler(e:NavigatorEvent):void{ + } + + } +}//package wd.hud.preloaders diff --git a/flash_decompiled/watchdog/wd/hud/tutorial/TuorialCompassWindow.as b/flash_decompiled/watchdog/wd/hud/tutorial/TuorialCompassWindow.as new file mode 100644 index 0000000..3423df4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/tutorial/TuorialCompassWindow.as @@ -0,0 +1,35 @@ +package wd.hud.tutorial { + import wd.hud.common.text.*; + import flash.display.*; + + public class TuorialCompassWindow extends TutorialWindow { + + private var icons:Sprite; + + public function TuorialCompassWindow(xmlData:XML, index:uint, w:uint=300){ + super(xmlData, index, w); + } + override protected function setNextButton(label:String=""):void{ + super.setNextButton(); + this.icons = new ControlsAsset(); + this.icons.x = 0; + this.icons.y = ((txt.y + txt.height) + 5); + ctn.addChild(this.icons); + var t1:CustomTextField = new CustomTextField(data.wheel, "tutoCompassText"); + t1.wordWrap = false; + t1.x = (60 - (t1.width / 2)); + ctn.addChild(t1); + var t2:CustomTextField = new CustomTextField(data.mouse, "tutoCompassText"); + t2.wordWrap = false; + t2.x = (217 - (t2.width / 2)); + ctn.addChild(t2); + var t3:CustomTextField = new CustomTextField(data.keyboard, "tutoCompassText"); + t3.wordWrap = false; + t3.x = (390 - (t3.width / 2)); + ctn.addChild(t3); + t1.y = (t2.y = (t3.y = ((this.icons.y + this.icons.height) - 20))); + nextButton.y = ((t1.y + t1.height) + 5); + } + + } +}//package wd.hud.tutorial diff --git a/flash_decompiled/watchdog/wd/hud/tutorial/TutorialEndWindow.as b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialEndWindow.as new file mode 100644 index 0000000..51f7ecf --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialEndWindow.as @@ -0,0 +1,20 @@ +package wd.hud.tutorial { + import wd.providers.texts.*; + import flash.events.*; + + public class TutorialEndWindow extends TutorialWindow { + + public function TutorialEndWindow(xmlData:XML, index:uint, w:uint=300){ + super(xmlData, index, w); + } + override protected function setNextButton(label:String=""):void{ + super.setNextButton(TutorialText.btnOk); + } + override protected function setSkipButton():void{ + super.setSkipButton(); + skipButton.removeEventListener(MouseEvent.CLICK, clickSkip); + skipButton.addEventListener(MouseEvent.CLICK, clickNext); + } + + } +}//package wd.hud.tutorial diff --git a/flash_decompiled/watchdog/wd/hud/tutorial/TutorialManager.as b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialManager.as new file mode 100644 index 0000000..9186541 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialManager.as @@ -0,0 +1,183 @@ +package wd.hud.tutorial { + import wd.footer.*; + import flash.geom.*; + import wd.hud.panels.*; + import wd.http.*; + import wd.hud.panels.search.*; + import wd.hud.panels.layers.*; + import wd.hud.panels.district.*; + import wd.hud.panels.live.*; + import wd.providers.texts.*; + import wd.hud.common.tween.*; + import flash.events.*; + import flash.display.*; + + public class TutorialManager extends Sprite { + + public static const TUTORIAL_END:String = "TUTO_END"; + public static const TUTORIAL_SKIP:String = "TUTORIAL_SKIP"; + public static const TUTORIAL_START:String = "TUTORIAL_START"; + public static const TUTORIAL_NEXT:String = "TUTORIAL_NEXT"; + public static const INTRO_WINDOW_TYPE:String = "INTRO_WINDOW_TYPE"; + public static const COMPASS_WINDOW_TYPE:String = "COMPASS_WINDOW_TYPE"; + public static const BASE_WINDOW_TYPE:String = "BASE_WINDOW_TYPE"; + public static const END_WINDOW_TYPE:String = "END_WINDOW_TYPE"; + + public static var isActive:Boolean = false; + + public var index:int = 0; + private var currentWindow:TutorialWindow; + private var skiped:Boolean = false; + private var line:AnimatedLine; + private var sequence:Array; + private var line_destX:Sprite; + private var line_destY:Sprite; + + public function TutorialManager(){ + this.sequence = [{ + targetClass:Footer, + lineDelta:new Point(0, -70), + windowType:INTRO_WINDOW_TYPE, + width:226 + }, { + targetClass:Compass, + lineDelta:new Point(70, 0), + windowType:COMPASS_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_FIRST, + width:470 + }, { + targetClass:Search, + lineDelta:new Point(65, 0), + windowType:BASE_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_SECOND, + width:452 + }, { + targetClass:LayerPanel, + lineDelta:new Point(50, 0), + windowType:BASE_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_THIRD, + width:470 + }, { + targetClass:DistrictPanel, + lineDelta:new Point(-90, 0), + windowType:BASE_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_FOURTH, + width:500 + }, { + targetClass:LivePanel, + lineDelta:new Point(-100, 0), + windowType:BASE_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_FIFTH, + width:520 + }, { + targetClass:CitySelector, + lineDelta:new Point(0, -60), + windowType:BASE_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_SEVENTH, + width:375 + }, { + targetClass:Footer, + lineDelta:new Point(0, -60), + windowType:END_WINDOW_TYPE, + tag:GoogleAnalytics.TUTORIAL_CLOSE, + width:320 + }]; + super(); + } + public function launch():void{ + trace("launch"); + isActive = true; + this.skiped = false; + this.index = 0; + this.startWindow(); + } + private function clearWindow():void{ + if (this.currentWindow){ + this.currentWindow.removeEventListener(TUTORIAL_NEXT, this.showNextWindow); + this.currentWindow.removeEventListener(TUTORIAL_SKIP, this.skip); + this.currentWindow.removeEventListener(TUTORIAL_END, this.end); + this.removeChild(this.currentWindow); + this.removeChild(this.line); + this.currentWindow = null; + }; + } + private function startWindow():void{ + var title:String = TutorialText.xml[("step" + (this.index + 1))].title; + var text:String = TutorialText.xml[("step" + (this.index + 1))].text; + if (this.currentWindow){ + this.clearWindow(); + }; + switch (this.sequence[this.index].windowType){ + case BASE_WINDOW_TYPE: + this.currentWindow = new TutorialWindow(TutorialText.xml[("step" + (this.index + 1))][0], (this.index + 1), this.sequence[this.index].width); + break; + case INTRO_WINDOW_TYPE: + this.currentWindow = new TutorialWindowIntro(TutorialText.xml[("step" + (this.index + 1))][0], (this.index + 1), this.sequence[this.index].width, this.skiped); + break; + case END_WINDOW_TYPE: + this.currentWindow = new TutorialEndWindow(TutorialText.xml[("step" + (this.index + 1))][0], (this.index + 1), this.sequence[this.index].width); + break; + case COMPASS_WINDOW_TYPE: + this.currentWindow = new TuorialCompassWindow(TutorialText.xml[("step" + (this.index + 1))][0], (this.index + 1), this.sequence[this.index].width); + break; + default: + this.currentWindow = new TutorialWindow(TutorialText.xml[("step" + (this.index + 1))][0], (this.index + 1), this.sequence[this.index].width); + }; + if (this.sequence[this.index].tag){ + GoogleAnalytics.callPageView(this.sequence[this.index].tag); + }; + this.currentWindow.visible = false; + this.currentWindow.addEventListener(TUTORIAL_NEXT, this.showNextWindow); + this.currentWindow.addEventListener(TUTORIAL_SKIP, this.skip); + this.currentWindow.addEventListener(TUTORIAL_END, this.end); + this.addChild(this.currentWindow); + trace(("sequence[index].targetClass : " + this.sequence[this.index].targetClass)); + trace(("sequence[index].targetClass.tutoStartPoint" + this.sequence[this.index].targetClass.tutoStartPoint)); + this.line = new AnimatedLine(this.sequence[this.index].lineDelta); + this.line.addEventListener(AnimatedLine.TWEEN_END, this.showWindow); + this.resize(); + this.line.alpha = 0.85; + this.addChild(this.line); + this.dispatchEvent(new Event(TUTORIAL_NEXT)); + } + private function replace():void{ + } + private function showWindow(e:Event):void{ + trace("showWindow : "); + this.currentWindow.show(); + } + private function showNextWindow(e:Event):void{ + this.index++; + if (this.index == this.sequence.length){ + this.end(); + } else { + this.startWindow(); + }; + } + private function skip(e:Event):void{ + this.skiped = true; + this.index = 0; + this.startWindow(); + } + public function end(e:Event=null):void{ + this.clearWindow(); + isActive = false; + this.dispatchEvent(new Event(TUTORIAL_END)); + } + public function resize():void{ + var pStart:Point; + if (isActive){ + if (this.sequence[this.index].targetClass == CitySelector){ + pStart = Footer.tutoStartPoint2; + } else { + pStart = this.sequence[this.index].targetClass.tutoStartPoint; + }; + this.line.x = pStart.x; + this.line.y = pStart.y; + this.currentWindow.x = (pStart.x + this.sequence[this.index].lineDelta.x); + this.currentWindow.y = (pStart.y + this.sequence[this.index].lineDelta.y); + }; + } + + } +}//package wd.hud.tutorial diff --git a/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindow.as b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindow.as new file mode 100644 index 0000000..2796192 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindow.as @@ -0,0 +1,121 @@ +package wd.hud.tutorial { + import flash.display.*; + import wd.hud.common.text.*; + import flash.events.*; + import wd.providers.texts.*; + import wd.hud.common.ui.*; + import aze.motion.*; + + public class TutorialWindow extends Sprite { + + protected const PADDING_H:uint = 15; + protected const PADDING_V:uint = 15; + + private var bg:Shape; + protected var ctn:Sprite; + protected var popinWidth:uint; + protected var data:XML; + protected var nextButton:SimpleButton; + protected var skipButton:Sprite; + protected var title:CustomTextField; + protected var txt:CustomTextField; + protected var pos:int = 1; + + public function TutorialWindow(xmlData:XML, index:uint, w:uint=300){ + super(); + this.pos = (index - 1); + this.popinWidth = w; + this.data = xmlData; + this.setTexts(); + this.setNextButton(); + this.setSkipButton(); + this.setIndex(); + this.drawBg(); + } + private function setTexts():void{ + this.ctn = new Sprite(); + this.addChild(this.ctn); + this.bg = new Shape(); + this.ctn.addChild(this.bg); + this.title = new CustomTextField(this.data.title, "tutoTitle"); + this.title.x = this.PADDING_H; + this.title.y = (this.PADDING_V - 5); + this.title.width = ((this.popinWidth - (this.PADDING_H * 2)) - 60); + this.ctn.addChild(this.title); + this.txt = new CustomTextField(this.data.text, "tutoText"); + this.txt.y = (this.title.y + this.title.height); + this.txt.x = this.title.x; + this.txt.width = (this.popinWidth - (this.PADDING_H * 2)); + this.ctn.addChild(this.txt); + } + protected function setSkipButton():void{ + this.skipButton = new BlackCrossAsset(); + this.skipButton.y = this.PADDING_V; + this.skipButton.x = ((this.popinWidth - this.skipButton.width) - this.PADDING_H); + this.skipButton.buttonMode = true; + this.skipButton.mouseChildren = false; + this.skipButton.addEventListener(MouseEvent.CLICK, this.clickSkip); + this.ctn.addChild(this.skipButton); + } + protected function setNextButton(label:String=""):void{ + if (label == ""){ + label = TutorialText.btnNext; + }; + this.nextButton = new SimpleButton(label, this.clickNext); + this.nextButton.y = ((this.txt.y + this.txt.height) + 5); + this.nextButton.x = ((this.popinWidth - this.PADDING_H) - this.nextButton.width); + this.ctn.addChild(this.nextButton); + } + protected function drawBg():void{ + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0xFFFFFF, 0.85); + this.bg.graphics.lineStyle(1, 0xFFFFFF, 0.85); + this.bg.graphics.drawRect(0, 0, (this.ctn.width + (2 * this.PADDING_H)), ((this.ctn.height + this.PADDING_V) + 5)); + } + protected function setIndex():void{ + var bg:Shape; + var c:CustomTextField; + if ((((this.pos > 0)) && ((this.pos < 8)))){ + bg = new Shape(); + bg.graphics.beginFill(0, 1); + this.ctn.addChild(bg); + c = new CustomTextField((this.pos + "/7"), "tutoIndex"); + c.wordWrap = false; + bg.y = (c.y = this.PADDING_V); + bg.x = (c.x = ((this.skipButton.x - c.width) - 10)); + this.ctn.addChild(c); + bg.graphics.drawRect(0, 0, c.width, c.height); + }; + } + override public function set x(value:Number):void{ + trace(((x + "> ") + (stage.stageWidth / 2))); + if (value > (stage.stageWidth / 2)){ + this.ctn.x = -(this.ctn.width); + }; + super.x = value; + } + override public function set y(value:Number):void{ + if (value > (stage.stageHeight / 2)){ + this.ctn.y = -(this.ctn.height); + }; + super.y = value; + } + public function show():void{ + this.visible = true; + this.ctn.alpha = 0; + this.nextButton.alpha = 0; + eaze(this.ctn).to(0.5, {alpha:1}); + eaze(this.nextButton).delay(0.2).to(0.5, {alpha:1}); + } + protected function clickNext(e:Event):void{ + this.dispatchEvent(new Event(TutorialManager.TUTORIAL_NEXT)); + } + protected function clickSkip(e:Event):void{ + this.dispatchEvent(new Event(TutorialManager.TUTORIAL_SKIP)); + } + protected function end(e:Event):void{ + this.dispatchEvent(new Event(TutorialManager.TUTORIAL_END)); + } + + } +}//package wd.hud.tutorial diff --git a/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindowIntro.as b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindowIntro.as new file mode 100644 index 0000000..09e9661 --- /dev/null +++ b/flash_decompiled/watchdog/wd/hud/tutorial/TutorialWindowIntro.as @@ -0,0 +1,41 @@ +package wd.hud.tutorial { + import wd.hud.common.ui.*; + import wd.providers.texts.*; + import flash.events.*; + import aze.motion.*; + + public class TutorialWindowIntro extends TutorialWindow { + + private var btnNok:SimpleButton; + + public function TutorialWindowIntro(xmlData:XML, index:uint, w:uint=300, skipped:Boolean=false){ + super(xmlData, w); + if (skipped){ + this.clickNok(); + }; + } + override protected function setNextButton(label:String=""):void{ + nextButton = new SimpleButton(TutorialText.btnOk, clickNext); + nextButton.y = ((txt.y + txt.height) + 5); + nextButton.x = PADDING_H; + ctn.addChild(nextButton); + this.btnNok = new SimpleButton(TutorialText.btnNok, this.clickNok); + this.btnNok.y = ((txt.y + txt.height) + 5); + this.btnNok.x = ((nextButton.x + nextButton.width) + 5); + ctn.addChild(this.btnNok); + } + private function clickNok(e:Event=null):void{ + txt.text = TutorialText.xml.step1.textRemember; + ctn.removeChild(this.btnNok); + ctn.removeChild(nextButton); + skipButton.removeEventListener(MouseEvent.CLICK, clickSkip); + skipButton.addEventListener(MouseEvent.CLICK, end); + } + override public function show():void{ + super.show(); + this.btnNok.alpha = 0; + eaze(this.btnNok).delay(0.3).to(0.5, {alpha:1}); + } + + } +}//package wd.hud.tutorial diff --git a/flash_decompiled/watchdog/wd/intro/DistrictClip.as b/flash_decompiled/watchdog/wd/intro/DistrictClip.as new file mode 100644 index 0000000..459f388 --- /dev/null +++ b/flash_decompiled/watchdog/wd/intro/DistrictClip.as @@ -0,0 +1,61 @@ +package wd.intro { + import flash.geom.*; + import __AS3__.vec.*; + import wd.utils.*; + import wd.hud.panels.district.*; + import flash.display.*; + + public class DistrictClip { + + public var points:Vector.; + public var spots:Vector.; + public var alpha:Number; + public var visible:Boolean; + public var district:District; + + public function DistrictClip(district:District, rect:Rectangle){ + var p:Point; + var rm:Point; + super(); + this.district = district; + this.points = new Vector.(); + for each (p in district.vertices) { + rm = Locator.INTRO_REMAP(p.x, p.y, rect); + rm.y = (rect.bottom - (rm.y - rect.top)); + this.points.push(rm.clone()); + }; + this.alpha = 0; + } + public function render(graphics:Graphics):void{ + if (this.alpha == 0){ + return; + }; + if ((((this.points == null)) || ((this.points.length == 0)))){ + return; + }; + var p:Point = this.points[0]; + graphics.beginFill(0xFFFFFF, ((this.alpha * 0.75) + ((this.alpha * 0.25) * Math.random()))); + graphics.moveTo(p.x, p.y); + var i:int; + while (i < this.points.length) { + p = this.points[i]; + graphics.lineTo(p.x, p.y); + i++; + }; + graphics.endFill(); + } + public function selectSpots():void{ + var s:IntroSpot; + for each (s in this.spots) { + s.select(); + }; + } + public function unSelectSpots():void{ + var s:IntroSpot; + for each (s in this.spots) { + s.unselect(); + }; + } + + } +}//package wd.intro diff --git a/flash_decompiled/watchdog/wd/intro/Intro.as b/flash_decompiled/watchdog/wd/intro/Intro.as new file mode 100644 index 0000000..697b4d5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/intro/Intro.as @@ -0,0 +1,361 @@ +package wd.intro { + import flash.display.*; + import wd.hud.items.*; + import wd.http.*; + import wd.hud.panels.*; + import wd.hud.common.text.*; + import wd.providers.texts.*; + import flash.events.*; + import wd.sound.*; + import flash.geom.*; + import wd.core.*; + import wd.utils.*; + import flash.ui.*; + import flash.net.*; + import aze.motion.*; + import wd.events.*; + import aze.motion.easing.*; + import __AS3__.vec.*; + import wd.hud.*; + import biga.utils.*; + import wd.d3.control.*; + import flash.text.*; + + public class Intro extends Sprite { + + private static var instance:Intro; + + private var title_src:Class; + private var title:Bitmap; + private var label:TrackerLabel; + private var main:Main; + private var container:Sprite; + private var picture:Bitmap; + private var rect:Rectangle; + private var service:PlacesService; + private var holder:Sprite; + private var debug:Sprite; + private var tracker:Tracker; + private var points:Vector.; + private var indices:Vector.; + private var containerZoom:Sprite; + private var _zoomValue:Number = 0; + private var lastLocation:Point; + private var lastSpot:IntroSpot; + private var instructions:TextField; + private var bg:Shape; + private var loader:Loader; + private var districts:IntroDistricts; + public var spots:Vector.; + + public function Intro(main:Main){ + this.title_src = Intro_title_src; + this.title = new this.title_src(); + super(); + instance = this; + this.main = main; + alpha = 0; + this.bg = new Shape(); + addChild(this.bg); + this.holder = new Sprite(); + addChild(this.holder); + this.containerZoom = new Sprite(); + this.holder.addChild(this.containerZoom); + this.container = new Sprite(); + this.containerZoom.addChild(this.container); + this.tracker = new Tracker(new TrackerData(DataType.PLACES, 0, 0, 0, ""), null); + this.label = new TrackerLabel(); + this.debug = new Sprite(); + this.container.addChild(this.debug); + this.holder.addChild(this.title); + this.instructions = new CustomTextField(CommonsText.mapInstructions.toUpperCase(), "introInstructions"); + this.instructions.wordWrap = false; + this.instructions.background = true; + this.instructions.backgroundColor = 0; + this.addChild(this.instructions); + addEventListener(Event.ADDED_TO_STAGE, this.onAdded); + } + public static function get visible():Boolean{ + return ((instance.alpha < 0.5)); + } + + private function traceDown(e:MouseEvent):void{ + if (e.type == MouseEvent.MOUSE_DOWN){ + this.districts.startDrag(); + } else { + this.districts.stopDrag(); + }; + } + private function onAdded(e:Event):void{ + removeEventListener(Event.ADDED_TO_STAGE, this.onAdded); + this.init(); + } + private function init():void{ + var s:Number; + SoundManager.playVibe("AmbianceCarteVille", 1); + var offset:Point = new Point(); + switch (Config.CITY){ + case Locator.BERLIN: + s = 0.68; + this.rect = new Rectangle(((-1551 * s) + 189), ((-1477 * s) + 272), (4627 * s), (3814 * s)); + break; + case Locator.LONDON: + s = 1.42; + this.rect = new Rectangle(((-985 * s) - 356), ((-665 * s) - 298), (3278 * s), (2643 * s)); + break; + case Locator.PARIS: + this.rect = new Rectangle(289, 80, 705, 595); + break; + }; + this.districts = new IntroDistricts(this.rect); + this.container.addChild(this.districts); + this.pictureLoad(); + } + private function onKeyDown(e:KeyboardEvent):void{ + if (e.keyCode == Keyboard.UP){ + this.districts.scaleX = (this.districts.scaleY = (this.districts.scaleY + 0.01)); + }; + if (e.keyCode == Keyboard.DOWN){ + this.districts.scaleX = (this.districts.scaleY = (this.districts.scaleY - 0.01)); + }; + this.resize(); + trace(this.districts.scaleX, this.districts.x, this.districts.y); + } + private function pictureLoad():void{ + this.loader = new Loader(); + this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onPictureLoaded); + var req:URLRequest = new URLRequest((("assets/img/intro_" + Config.CITY.toLowerCase()) + ".jpg")); + this.loader.load(req); + } + private function onPictureLoaded(e:Event):void{ + this.loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, this.onPictureLoaded); + this.picture = (this.loader.content as Bitmap); + this.picture.smoothing = true; + this.container.addChildAt(this.picture, 0); + this.container.x = (-(this.picture.width) / 2); + this.container.y = (-(this.picture.height) / 2); + this.picture.alpha = 0; + eaze(this.picture).to(2, {alpha:1}); + this.service = new PlacesService(); + this.service.addEventListener(ServiceEvent.PLACES_COMPLETE, this.onPlacesComplete); + this.service.addEventListener(ServiceEvent.PLACES_CANCEL, this.onPlacesCancel); + this.resize(); + eaze(this).to(2, {alpha:1}).easing(Expo.easeOut); + } + private function onPlacesComplete(e:ServiceEvent):void{ + var p:Place; + this.service.removeEventListener(ServiceEvent.PLACES_COMPLETE, this.onPlacesComplete); + this.service.removeEventListener(ServiceEvent.PLACES_CANCEL, this.onPlacesCancel); + var labels:Vector. = new Vector.(); + if (Locator.STARTING_PLACE != null){ + labels.push(Locator.STARTING_PLACE.name); + }; + for each (p in Places[Locator.CITY.toUpperCase()]) { + if (p.name.toUpperCase().lastIndexOf("BETC") == -1){ + labels.push(p.name.toUpperCase()); + }; + }; + SpriteSheetFactory2.addTexts(labels); + Hud.getInstance().majTexture(); + this.initLocations(); + } + private function onPlacesCancel(e:ServiceEvent):void{ + this.service.removeEventListener(ServiceEvent.PLACES_COMPLETE, this.onPlacesComplete); + this.service.removeEventListener(ServiceEvent.PLACES_CANCEL, this.onPlacesCancel); + } + private function initLocations():void{ + var p:Place; + var spot:IntroSpot; + this.points = new Vector.(); + this.spots = new Vector.(); + var d:Number = 0; + for each (p in Places[Locator.CITY.toUpperCase()]) { + if (p.name.lastIndexOf("BETC") != -1){ + } else { + spot = new IntroSpot(p, this.rect); + this.container.addChild(spot); + this.spots.push(spot); + this.points.push(new Point(spot.x, spot.y)); + spot.addEventListener(MouseEvent.ROLL_OVER, this.onRoll); + spot.addEventListener(MouseEvent.ROLL_OUT, this.onRoll); + spot.addEventListener(MouseEvent.MOUSE_OUT, this.onRoll); + spot.addEventListener(NavigatorEvent.SET_START_LOCATION, this.onDown); + }; + }; + this.districts.spots = this.spots; + this.indices = new Delaunay().compute(this.points); + this.container.addChild(this.label); + for each (p in Places[Locator.CITY.toUpperCase()]) { + if (p.name.lastIndexOf("BETC") != -1){ + }; + }; + GoogleAnalytics.callPageView(GoogleAnalytics.APP_TOPVIEW); + AppState.activate(DataType.PLACES); + addEventListener(MouseEvent.MOUSE_DOWN, this.onDown); + this.showLocations(); + } + private function showLocations():void{ + var d:Number; + var spot:IntroSpot; + if (Locator.STARTING_PLACE != null){ + Hud.addItem(new TrackerData(DataType.PLACES, 0, Locator.STARTING_PLACE.lon, Locator.STARTING_PLACE.lat, Locator.STARTING_PLACE.name)); + this.start(new Point(Locator.STARTING_PLACE.lon, Locator.STARTING_PLACE.lat)); + Locator.STARTING_PLACE = null; + } else { + if (this.lastSpot != null){ + this.lastSpot.alpha = 1; + }; + d = 0; + for each (spot in this.spots) { + spot.alpha = 0; + d = (d + 0.05); + eaze(spot).delay(d).to(0.35, {alpha:1}).onStart(this.spotApear); + }; + }; + } + private function spotApear():void{ + SoundManager.playFX("ApparitionLieuxVille", (0.8 + (Math.random() * 0.2))); + } + private function hideLocations():void{ + var spot:IntroSpot; + var d:Number = 0.1; + for each (spot in this.spots) { + d = (d + 0.02); + eaze(spot).delay(d).to(0.1, {alpha:0}); + }; + d = (d + 0.01); + eaze(spot).delay(d).to(0.1, {alpha:0}, false); + } + private function onRoll(e:MouseEvent):void{ + var mc:IntroSpot = (e.target as IntroSpot); + this.tracker.screenPosition = ((this.tracker.screenPosition) || (new Point())); + this.tracker.screenPosition.x = mc.x; + this.tracker.screenPosition.y = mc.y; + switch (e.type){ + case MouseEvent.ROLL_OVER: + this.label.rolloverHandler(this.tracker, mc.place.name); + break; + case MouseEvent.ROLL_OUT: + this.label.rolloutHandler(this.tracker); + break; + }; + } + private function onDown(e:Event):void{ + var p:Point; + if (e.type == NavigatorEvent.SET_START_LOCATION){ + this.start(((e as NavigatorEvent).data as Point)); + } else { + p = new Point(this.debug.mouseX, this.debug.mouseY); + p.x = GeomUtils.clamp(p.x, this.rect.left, this.rect.right); + p.y = GeomUtils.clamp(p.y, this.rect.top, this.rect.bottom); + p = Locator.INTRO_LOCATE(p.x, (this.rect.bottom - (p.y - this.rect.top)), this.rect); + this.start(p); + }; + SoundManager.playFX("ChargementCarte", 1); + } + private function start(point:Point):void{ + Locator.LONGITUDE = point.x; + Locator.LATITUDE = point.y; + stage.removeEventListener(MouseEvent.MOUSE_WHEEL, this.onWheel); + dispatchEvent(new NavigatorEvent(NavigatorEvent.INTRO_HIDE)); + } + public function hide():void{ + mouseEnabled = false; + mouseChildren = false; + CameraController.VIEW = CameraController.TOP_VIEW; + CameraController.applyView(); + CameraController.VIEW = CameraController.STREET_VIEW; + this.hideLocations(); + this.zoomValue = 0; + this.districts.stop(); + eaze(this).to(3, {zoomValue:1}).onUpdate(this.updateZoomIn).onComplete(this.onHidden); + } + private function updateZoomIn():void{ + var n:Number = this._zoomValue; + var inv:Number = (1 - n); + var min:Number = (CameraController.MAX_HEIGHT * 0.5); + var max:Number = CameraController.MAX_HEIGHT; + CameraController.instance.camera.y = (min + (Cubic.easeOut(inv) * (max - min))); + this.main.simulation.alpha = n; + this.bg.alpha = (this.picture.alpha = (this.districts.alpha = (1 - (n * 2)))); + this.title.alpha = (this.instructions.alpha = (1 - n)); + } + private function onHidden():void{ + visible = false; + Mouse.cursor = MouseCursor.ARROW; + dispatchEvent(new NavigatorEvent(NavigatorEvent.INTRO_HIDDEN)); + this.debug.graphics.clear(); + GoogleAnalytics.callPageView(GoogleAnalytics.APP_MAP); + SoundManager.playVibe(("BoucleAmbiance_" + Locator.CITY), 1); + } + public function show():void{ + SoundManager.playVibe("AmbianceCarteVille", 1); + visible = true; + this._zoomValue = 1; + this.districts.start(); + eaze(this).to(2, {zoomValue:0}).easing(Expo.easeInOut).onUpdate(this.updateZoomOut).onComplete(this.onVisible); + this.showLocations(); + } + private function updateZoomOut():void{ + var n:Number = this._zoomValue; + var inv:Number = (1 - n); + var min:Number = (CameraController.MAX_HEIGHT * 0.5); + var max:Number = CameraController.MAX_HEIGHT; + CameraController.instance.camera.y = (min + (inv * (max - min))); + var p:Point = Locator.INTRO_REMAP(Locator.LONGITUDE, Locator.LATITUDE, this.rect); + this.main.simulation.alpha = n; + this.bg.alpha = (this.picture.alpha = (this.districts.alpha = inv)); + this.title.alpha = (this.instructions.alpha = inv); + } + private function onVisible():void{ + mouseEnabled = true; + mouseChildren = true; + Mouse.cursor = MouseCursor.BUTTON; + GoogleAnalytics.callPageView(GoogleAnalytics.APP_TOPVIEW); + dispatchEvent(new NavigatorEvent(NavigatorEvent.INTRO_VISIBLE)); + } + public function get zoomValue():Number{ + return (this._zoomValue); + } + public function set zoomValue(n:Number):void{ + this._zoomValue = n; + } + public function resize():void{ + if (stage == null){ + return; + }; + var w:Number = stage.stageWidth; + var h:Number = stage.stageHeight; + this.bg.graphics.clear(); + this.bg.graphics.beginFill(0, 0x606060); + this.bg.graphics.drawRect(0, 0, w, h); + this.containerZoom.x = (w * 0.5); + this.containerZoom.y = (h * 0.5); + this.title.x = ((w * 0.5) - (this.title.width * 0.5)); + this.title.y = 50; + this.instructions.x = ((w * 0.5) - (this.instructions.width * 0.5)); + this.instructions.y = ((this.title.y + this.title.height) + 10); + } + public function storeLocation():void{ + this.lastLocation = new Point(Locator.LONGITUDE, Locator.LATITUDE); + if (this.lastSpot == null){ + this.lastSpot = ((this.lastSpot) || (new IntroSpot(new Place("last position", Locator.LONGITUDE, Locator.LATITUDE), this.rect, 1))); + this.lastSpot.addEventListener(MouseEvent.ROLL_OVER, this.onRoll); + this.lastSpot.addEventListener(MouseEvent.ROLL_OUT, this.onRoll); + this.lastSpot.addEventListener(MouseEvent.MOUSE_OUT, this.onRoll); + this.lastSpot.addEventListener(NavigatorEvent.SET_START_LOCATION, this.onDown); + this.container.addChild(this.lastSpot); + this.spots.push(this.lastSpot); + }; + this.lastSpot.reset(Locator.LONGITUDE, Locator.LATITUDE); + this.lastSpot.alpha = 1; + stage.addEventListener(MouseEvent.MOUSE_WHEEL, this.onWheel); + } + private function onWheel(e:MouseEvent):void{ + if (e.delta > 0){ + this.start(this.lastLocation); + }; + } + + } +}//package wd.intro diff --git a/flash_decompiled/watchdog/wd/intro/IntroDistricts.as b/flash_decompiled/watchdog/wd/intro/IntroDistricts.as new file mode 100644 index 0000000..e5ccd25 --- /dev/null +++ b/flash_decompiled/watchdog/wd/intro/IntroDistricts.as @@ -0,0 +1,100 @@ +package wd.intro { + import wd.http.*; + import wd.events.*; + import flash.geom.*; + import wd.hud.panels.district.*; + import flash.utils.*; + import biga.utils.*; + import __AS3__.vec.*; + import flash.display.*; + + public class IntroDistricts extends Sprite { + + private var service:DistrictService; + private var districts:Dictionary; + private var current:DistrictClip; + private var checkInterval:uint; + private var rect:Rectangle; + private var _spots:Vector.; + private var spot:IntroSpot; + + public function IntroDistricts(rect:Rectangle){ + super(); + this.rect = rect; + this.service = new DistrictService(); + this.service.addEventListener(ServiceEvent.DISTRICT_COMPLETE, this.onServiceComplete); + this.service.call(); + mouseChildren = false; + buttonMode = true; + } + private function onServiceComplete(e:ServiceEvent):void{ + var info:Object; + var k:*; + var district:District; + var dc:DistrictClip; + trace("complete"); + this.districts = new Dictionary(true); + var result:Object = e.data; + for (k in result) { + info = result[k]; + district = new District(info[ServiceConstants.KEY_ID], info[ServiceConstants.KEY_NAME], info[ServiceConstants.KEY_VERTICES]); + dc = new DistrictClip(district, this.rect); + dc.render(graphics); + this.districts[info[ServiceConstants.KEY_ID]] = dc; + dc.alpha = 0; + }; + this.start(); + } + private function update():void{ + var dc:DistrictClip; + graphics.clear(); + for each (dc in this.districts) { + dc.render(graphics); + }; + } + public function start():void{ + this.current = null; + this.checkLocation(); + clearInterval(this.checkInterval); + this.checkInterval = setInterval(this.checkLocation, (1000 / 40)); + } + public function stop():void{ + clearInterval(this.checkInterval); + } + public function checkLocation():void{ + var dc:DistrictClip; + graphics.clear(); + for each (dc in this.districts) { + if (PolygonUtils.contains(mouseX, mouseY, dc.points)){ + if (dc.alpha < 0.15){ + dc.alpha = (dc.alpha + 0.05); + }; + dc.selectSpots(); + } else { + if (dc.alpha >= 0){ + dc.alpha = (dc.alpha - 0.02); + }; + dc.unSelectSpots(); + }; + dc.render(graphics); + }; + } + public function get spots():Vector.{ + return (this._spots); + } + public function set spots(value:Vector.):void{ + var dc:DistrictClip; + var s:IntroSpot; + this._spots = value; + for each (dc in this.districts) { + dc.spots = new Vector.(); + for each (s in this.spots) { + if (PolygonUtils.contains(s.x, s.y, dc.points)){ + dc.spots.push(s); + }; + }; + }; + } + + } +}//package wd.intro diff --git a/flash_decompiled/watchdog/wd/intro/IntroSpot.as b/flash_decompiled/watchdog/wd/intro/IntroSpot.as new file mode 100644 index 0000000..df74eb5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/intro/IntroSpot.as @@ -0,0 +1,92 @@ +package wd.intro { + import wd.core.*; + import wd.http.*; + import flash.events.*; + import wd.utils.*; + import flash.geom.*; + import wd.sound.*; + import wd.events.*; + import aze.motion.*; + import flash.filters.*; + import flash.display.*; + + public class IntroSpot extends Sprite { + + public var place:Place; + private var rect:Rectangle; + private var dir:int; + private var color:int; + private var _inDistrict:Boolean; + + public function IntroSpot(place:Place, rect:Rectangle, dir:int=-1){ + super(); + this.dir = dir; + this.rect = rect; + this.place = place; + this.color = (((dir == -1)) ? Colors.getColorByType(DataType.TWITTERS) : 0xFF0000); + graphics.beginFill(this.color); + if (dir == -1){ + graphics.moveTo(0, -9); + graphics.lineTo(6, 0); + graphics.lineTo(-6, 0); + } else { + graphics.moveTo(0, 0); + graphics.lineTo(6, -9); + graphics.lineTo(-6, -9); + }; + buttonMode = true; + addEventListener(MouseEvent.ROLL_OVER, this.onRoll); + addEventListener(MouseEvent.ROLL_OUT, this.onRoll); + addEventListener(MouseEvent.CLICK, this.onClick); + var p:Point = Locator.INTRO_REMAP(place.lon, place.lat, rect); + this.x = p.x; + this.y = (rect.bottom - (p.y - rect.top)); + alpha = 0; + } + protected function onRoll(event:MouseEvent):void{ + switch (event.type){ + case MouseEvent.ROLL_OVER: + SoundManager.playFX("RollOverLieuxVille", (0.5 + (Math.random() * 0.5))); + break; + case MouseEvent.ROLL_OUT: + break; + }; + } + private function onClick(e:MouseEvent):void{ + var p:Point = new Point(this.place.lon, this.place.lat); + dispatchEvent(new NavigatorEvent(NavigatorEvent.SET_START_LOCATION, p)); + e.stopImmediatePropagation(); + SoundManager.playFX("ClicLieuxVille", 1); + } + public function select():void{ + eaze(this).to(0.5, {alpha:1}).filter(GlowFilter, { + color:this.color, + blurX:20, + blurY:20, + strength:2, + alpha:0.85 + }); + } + public function unselect():void{ + eaze(this).to(0.5, {alpha:0.25}).filter(GlowFilter, { + blurX:0, + blurY:0, + alpha:0 + }, true); + } + public function reset(lon:Number, lat:Number):void{ + var p:Point = Locator.INTRO_REMAP(lon, lat, this.rect); + this.place.lon = lon; + this.place.lat = lat; + this.x = p.x; + this.y = (this.rect.bottom - (p.y - this.rect.top)); + } + public function get inDistrict():Boolean{ + return (this._inDistrict); + } + public function set inDistrict(value:Boolean):void{ + this._inDistrict = value; + } + + } +}//package wd.intro diff --git a/flash_decompiled/watchdog/wd/intro/Intro_title_src.as b/flash_decompiled/watchdog/wd/intro/Intro_title_src.as new file mode 100644 index 0000000..1c838f5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/intro/Intro_title_src.as @@ -0,0 +1,7 @@ +package wd.intro { + import mx.core.*; + + public class Intro_title_src extends BitmapAsset { + + } +}//package wd.intro diff --git a/flash_decompiled/watchdog/wd/landing/effect/CopyToBmp.as b/flash_decompiled/watchdog/wd/landing/effect/CopyToBmp.as new file mode 100644 index 0000000..7d4623e --- /dev/null +++ b/flash_decompiled/watchdog/wd/landing/effect/CopyToBmp.as @@ -0,0 +1,30 @@ +package wd.landing.effect { + import flash.display.*; + import flash.geom.*; + + public class CopyToBmp { + + public static function mcToBmp(mc:DisplayObject, _w:Number=NaN, _h:Number=NaN):Bitmap{ + if (!(_w)){ + _w = mc.width; + }; + if (!(_h)){ + _h = mc.height; + }; + var BmpDt:BitmapData = new BitmapData(_w, _h, true, 0); + BmpDt.draw(mc, null, null, null, null, true); + var Bmp:Bitmap = new Bitmap(BmpDt, "auto", true); + Bmp.smoothing = true; + return (Bmp); + } + public static function partOfmcToBmp(mc:DisplayObject, rectPart:Rectangle):Bitmap{ + var spriteContainer:Sprite = new Sprite(); + var copyBmp:Bitmap = mcToBmp(mc); + copyBmp.x = -(rectPart.x); + copyBmp.y = -(rectPart.y); + spriteContainer.addChild(copyBmp); + return (mcToBmp(spriteContainer, rectPart.width, rectPart.height)); + } + + } +}//package wd.landing.effect diff --git a/flash_decompiled/watchdog/wd/landing/effect/DistortImg_sglT.as b/flash_decompiled/watchdog/wd/landing/effect/DistortImg_sglT.as new file mode 100644 index 0000000..f6753b9 --- /dev/null +++ b/flash_decompiled/watchdog/wd/landing/effect/DistortImg_sglT.as @@ -0,0 +1,183 @@ +package wd.landing.effect { + import flash.utils.*; + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.filters.*; + + public class DistortImg_sglT extends EventDispatcher { + + public static const LOW:int = 0; + public static const MED:int = 1; + public static const HIGH:int = 2; + public static const NORMAL:int = 3; + public static const RGB:int = 4; + + private static var _instance:DistortImg_sglT; + + private var _timerEffect:Timer; + private var mcMapFilter:mcBmp2; + private var _dmFilter:DisplacementMapFilter; + private var _mcItemToDistort:DisplayObjectContainer; + private var staticTimes:int = 50; + private var XfuzzMin:int = 0; + private var XfuzzMax:int = 0; + private var YfuzzMin:int = 0; + private var YfuzzMax:int = 0; + private var MaxPoint:int = 0; + private var MinPoint:int = 0; + private var level:int = 0; + private var _distortRGB:Boolean = false; + private var nextLevel:int; + private var incrNormal:int = 0; + + public function DistortImg_sglT(requires:SingletonEnforcer){ + super(); + if (!(requires)){ + throw (new Error("AssetsManager is a singleton, use static instance.")); + }; + this.init(); + } + public static function get instance():DistortImg_sglT{ + if (!(_instance)){ + _instance = new DistortImg_sglT(new SingletonEnforcer()); + }; + return (_instance); + } + + private function init():void{ + this.mcMapFilter = new mcBmp2(); + this._dmFilter = getDisplacementMap.getInstance().GetDisplacementMap(CopyToBmp.mcToBmp(this.mcMapFilter, this.mcMapFilter.width, this.mcMapFilter.height).bitmapData); + this._timerEffect = new Timer(1000, 0); + this._timerEffect.addEventListener(TimerEvent.TIMER, this.displayStatic); + this._timerEffect.addEventListener(TimerEvent.TIMER_COMPLETE, this.onComplete); + } + private function onComplete(e:TimerEvent):void{ + this.level = NORMAL; + this.displayStatic(); + } + public function startEffect(mc:DisplayObjectContainer, durationFrame:Number=0):void{ + this._mcItemToDistort = mc; + this.incrNormal = 0; + this.level = LOW; + this.setStaticLow(); + this.staticTimes = 60; + this._timerEffect.reset(); + this._timerEffect.repeatCount = durationFrame; + this._timerEffect.start(); + } + public function stopEffect():void{ + this._timerEffect.stop(); + } + private function displayStatic(e:TimerEvent=null):void{ + this.staticTimes--; + if (this.level != NORMAL){ + this._dmFilter.scaleX = getDisplacementMap.getInstance().randRange(this.XfuzzMin, this.XfuzzMax); + this._dmFilter.scaleY = getDisplacementMap.getInstance().randRange(this.YfuzzMin, this.YfuzzMax); + this._dmFilter.mapPoint = new Point(getDisplacementMap.getInstance().randRange(this.MinPoint, this.MaxPoint), getDisplacementMap.getInstance().randRange(this.MinPoint, this.MaxPoint)); + this._mcItemToDistort.filters = new Array(this._dmFilter); + } else { + this._mcItemToDistort.filters = null; + }; + if (this.staticTimes <= 0){ + this.level = (Math.random() * 4); + if (this.level != NORMAL){ + this.incrNormal++; + if (this.incrNormal > 4){ + this.level = NORMAL; + this.incrNormal = 0; + }; + }; + if (this.level == NORMAL){ + this.incrNormal = 0; + }; + switch (this.level){ + case LOW: + this.setStaticLow(); + break; + case MED: + this.setStaticMedium(); + break; + case HIGH: + this.setStaticHigh(); + break; + case NORMAL: + this.setStaticNormal(); + break; + default: + this.setStaticHigh(); + }; + }; + } + private function showLevel():void{ + switch (this.level){ + case HIGH: + trace("HIGH -->"); + break; + case MED: + trace("MED"); + break; + case LOW: + trace("LOW"); + break; + case RGB: + trace("RGB <--"); + break; + case NORMAL: + trace("--NORMAL--"); + break; + }; + } + private function setStaticMedium():void{ + this.level = MED; + this.XfuzzMin = -100; + this.XfuzzMax = 5; + this.YfuzzMin = -10; + this.YfuzzMax = 5; + this.MinPoint = 0; + this.MaxPoint = 500; + this.staticTimes = (10 + (Math.random() * 15)); + this._timerEffect.delay = 50; + } + private function setStaticHigh():void{ + this.level = HIGH; + this.XfuzzMin = -200; + this.XfuzzMax = 700; + this.YfuzzMin = -10; + this.YfuzzMax = 10; + this.MinPoint = 0; + this.MaxPoint = 500; + this.staticTimes = (Math.random() * 10); + this._timerEffect.delay = 50; + } + private function setStaticLow():void{ + this.level = LOW; + this.XfuzzMin = -300; + this.XfuzzMax = 700; + this.YfuzzMin = -20; + this.YfuzzMax = 20; + this.MinPoint = -200; + this.MaxPoint = 300; + this.staticTimes = (5 + (Math.random() * 15)); + this._timerEffect.delay = 20; + } + private function setStaticNormal():void{ + this.level = NORMAL; + this.XfuzzMin = 0; + this.XfuzzMax = 0; + this.YfuzzMin = 0; + this.YfuzzMax = 0; + this.MinPoint = 0; + this.MaxPoint = 0; + this.staticTimes = (50 + (Math.random() * 30)); + this._timerEffect.delay = 100; + } + + } +}//package wd.landing.effect + +class SingletonEnforcer { + + public function SingletonEnforcer(){ + } +} diff --git a/flash_decompiled/watchdog/wd/landing/effect/getDisplacementMap.as b/flash_decompiled/watchdog/wd/landing/effect/getDisplacementMap.as new file mode 100644 index 0000000..62918b3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/landing/effect/getDisplacementMap.as @@ -0,0 +1,67 @@ +package wd.landing.effect { + import flash.geom.*; + import flash.display.*; + import flash.filters.*; + import flash.events.*; + + public class getDisplacementMap extends EventDispatcher { + + private static var _oI:getDisplacementMap; + + private var _bmd:BitmapData; + private var _point:Point; + private var _r:BitmapData; + private var _g:BitmapData; + private var _b:BitmapData; + + public function getDisplacementMap(access:PrivateConstructorAccess){ + this._point = new Point(); + super(); + } + public static function getInstance():getDisplacementMap{ + if (!(_oI)){ + _oI = new getDisplacementMap(new PrivateConstructorAccess()); + }; + return (_oI); + } + + public function GetDisplacementMap(bmpDt:BitmapData):DisplacementMapFilter{ + var mapBitmap:BitmapData = bmpDt; + var mapPoint:Point = new Point(0, 0); + var channels:uint = BitmapDataChannel.RED; + var componentX:uint = channels; + var componentY:uint = channels; + var scaleX:Number = 5; + var scaleY:Number = 1; + var mode:String = DisplacementMapFilterMode.COLOR; + var color:uint; + var alpha:Number = 0; + return (new DisplacementMapFilter(mapBitmap, mapPoint, componentX, componentY, scaleX, scaleY, mode, color, alpha)); + } + public function randRange(min:int, max:int):int{ + var randomNum:int = (Math.floor((Math.random() * ((max - min) + 1))) + min); + return (randomNum); + } + public function createRGB(dObj:DisplayObject):Array{ + this._bmd = new BitmapData(dObj.width, dObj.height, true, 0); + this._bmd.draw(dObj); + this._r = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._g = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._b = new BitmapData(this._bmd.width, this._bmd.height, true, 0xFF000000); + this._r.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.RED, BitmapDataChannel.RED); + this._r.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + this._g.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.GREEN, BitmapDataChannel.GREEN); + this._g.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + this._b.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.BLUE, BitmapDataChannel.BLUE); + this._b.copyChannel(this._bmd, this._bmd.rect, this._point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); + return ([this._r, this._g, this._b]); + } + + } +}//package wd.landing.effect + +class PrivateConstructorAccess { + + public function PrivateConstructorAccess(){ + } +} diff --git a/flash_decompiled/watchdog/wd/loaderAnim/McWADline.as b/flash_decompiled/watchdog/wd/loaderAnim/McWADline.as new file mode 100644 index 0000000..b10c052 --- /dev/null +++ b/flash_decompiled/watchdog/wd/loaderAnim/McWADline.as @@ -0,0 +1,59 @@ +package wd.loaderAnim { + import flash.display.*; + import flash.events.*; + import flash.utils.*; + + public class McWADline { + + private var _mcWad:mcLineWAD; + private var _tabColorMc:Array; + private var _mcColor:MovieClip; + private var _timeDistort:Timer; + private var _i:int; + + public function McWADline(mcWad:mcLineWAD):void{ + this._tabColorMc = []; + super(); + this._mcWad = mcWad; + this._tabColorMc = [this._mcWad.mcRed, this._mcWad.mcGreen, this._mcWad.mcBlue]; + } + private function distortIt(e:Event):void{ + this._mcWad.mcWhite.alpha = 0.3; + this._i = 0; + while (this._i < this._tabColorMc.length) { + this._mcColor = MovieClip(this._tabColorMc[this._i]); + this._mcColor.y = this.randRange(-2, 2); + this._mcColor.x = this.randRange(-2, 2); + this._mcColor.alpha = (this.randRange(2, 4) / 10); + this._i++; + }; + } + private function resetDistort(e:Event):void{ + this._mcWad.mcWhite.alpha = 1; + this._i = 0; + while (this._i < this._tabColorMc.length) { + this._mcColor = MovieClip(this._tabColorMc[this._i]); + this._mcColor.y = 0; + this._mcColor.x = 0; + this._mcColor.alpha = 0; + this._i++; + }; + } + private function randRange(min:int, max:int):int{ + var randomNum:int = (Math.floor((Math.random() * ((max - min) + 1))) + min); + return (randomNum); + } + public function startDistortEffect():void{ + if (this._timeDistort){ + this._timeDistort.removeEventListener(TimerEvent.TIMER, this.distortIt); + this._timeDistort.removeEventListener(TimerEvent.TIMER_COMPLETE, this.resetDistort); + this._timeDistort = null; + }; + this._timeDistort = new Timer(100, 5); + this._timeDistort.addEventListener(TimerEvent.TIMER, this.distortIt); + this._timeDistort.addEventListener(TimerEvent.TIMER_COMPLETE, this.resetDistort); + this._timeDistort.start(); + } + + } +}//package wd.loaderAnim diff --git a/flash_decompiled/watchdog/wd/loaderAnim/PreloaderWD.as b/flash_decompiled/watchdog/wd/loaderAnim/PreloaderWD.as new file mode 100644 index 0000000..990c665 --- /dev/null +++ b/flash_decompiled/watchdog/wd/loaderAnim/PreloaderWD.as @@ -0,0 +1,60 @@ +package wd.loaderAnim { + import flash.events.*; + import flash.utils.*; + import wd.landing.effect.*; + + public class PreloaderWD extends PreloaderClip { + + public static const ON_END_ANIMATION:String = "onEndAnimation"; + + private var _gotoFrame:int; + private var _currentValue:int; + private var _mcWadline:McWADline; + private var _timeStartDistort:Timer; + private var _posXinit:Number; + + public function PreloaderWD():void{ + super(); + this.stop(); + this.addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); + this.mcWAD.mask = this.mcMask; + this.mcLines.stop(); + this._posXinit = -(this.mcProgress.mcBarre.width); + this.mcProgress.mcBarre.x = this._posXinit; + } + private function onAddedToStage(e:Event):void{ + removeEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); + this._mcWadline = new McWADline(this.mcWAD); + this._timeStartDistort = new Timer(2000, 0); + this._timeStartDistort.addEventListener(TimerEvent.TIMER, this.startDistortEffect); + this._timeStartDistort.start(); + } + private function startDistortEffect(e:TimerEvent):void{ + DistortImg_sglT.instance.startEffect(this.mcWAD, 10); + this._mcWadline.startDistortEffect(); + } + public function onProgress(value:Number):void{ + if (value > this._currentValue){ + this._currentValue++; + this.mcProgress.mcBarre.x = (this._posXinit + (this.mcProgress.mcBarre.width * (this._currentValue / 100))); + trace(this.mcProgress.mcBarre.x); + this.mcProgress.txt_prct.text = (this._currentValue + "%"); + this._gotoFrame = ((this.totalFrames / 100) * this._currentValue); + this.gotoAndStop(this._gotoFrame); + this.mcMask.gotoAndStop(this._gotoFrame); + this.mcLines.gotoAndStop(this._gotoFrame); + } else { + DistortImg_sglT.instance.startEffect(this.mcWAD, 30); + }; + if (value >= 100){ + dispatchEvent(new Event(ON_END_ANIMATION)); + DistortImg_sglT.instance.startEffect(this.mcWAD, 30); + this._timeStartDistort.stop(); + this._timeStartDistort.removeEventListener(TimerEvent.TIMER, this.startDistortEffect); + this._timeStartDistort = null; + this.mcWAD.mcWhite.gotoAndStop(1); + }; + } + + } +}//package wd.loaderAnim diff --git a/flash_decompiled/watchdog/wd/providers/MetroLineColors.as b/flash_decompiled/watchdog/wd/providers/MetroLineColors.as new file mode 100644 index 0000000..f5c254b --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/MetroLineColors.as @@ -0,0 +1,36 @@ +package wd.providers { + + public class MetroLineColors { + + private static var xml:XMLList; + + public function MetroLineColors(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function getColorByName(name:String):int{ + var i:int; + while (i < xml.length()) { + if (xml[i].@name == name){ + return (parseInt(xml[i].@color)); + }; + i++; + }; + return (-1); + } + public static function getIDByName(name:String):int{ + var i:int; + while (i < xml.length()) { + if (xml[i].@name == name){ + return (i); + }; + i++; + }; + return (-1); + } + + } +}//package wd.providers diff --git a/flash_decompiled/watchdog/wd/providers/texts/AboutText.as b/flash_decompiled/watchdog/wd/providers/texts/AboutText.as new file mode 100644 index 0000000..de4a9ef --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/AboutText.as @@ -0,0 +1,22 @@ +package wd.providers.texts { + + public class AboutText { + + private static var xml:XMLList; + + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get title():String{ + return (xml.title); + } + public static function get text():String{ + return (xml.text1); + } + + public function StatsText(xml:XMLList):void{ + reset(xml); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/AidenTexts.as b/flash_decompiled/watchdog/wd/providers/texts/AidenTexts.as new file mode 100644 index 0000000..8908333 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/AidenTexts.as @@ -0,0 +1,16 @@ +package wd.providers.texts { + + public class AidenTexts { + + public static var xml:XMLList; + + public function AidenTexts(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/CityTexts.as b/flash_decompiled/watchdog/wd/providers/texts/CityTexts.as new file mode 100644 index 0000000..b4d791c --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/CityTexts.as @@ -0,0 +1,81 @@ +package wd.providers.texts { + + public class CityTexts { + + private static var xml:XMLList; + private static var xmlUnits:XML; + + public function CityTexts(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function resetUnits(value:XML):void{ + xmlUnits = value; + } + public static function get electricityConsumptionUnit():String{ + return (getUnit("electricityConsumption")); + } + public static function get metroTrainFrequencyUnit():String{ + return (getUnit("metroTrainFrequency")); + } + public static function get metroCommutersFrequencyUnit():String{ + return (getUnit("metroCommutersFrequency")); + } + public static function get electroMagneticFieldsLevelUnit():String{ + return (getUnit("electroMagneticFieldsLevel")); + } + public static function get adConsumerExposedUnit():String{ + return (getUnit("adConsumerExposed")); + } + public static function get electricityConsumptionLabel():String{ + return (getLabel("electricityConsumption")); + } + public static function get metroTrainFrequencyLabel():String{ + return (getLabel("metroTrainFrequency")); + } + public static function get metroCommutersFrequencyLabel():String{ + return (getLabel("metroCommutersFrequency")); + } + public static function get electroMagneticFieldsLevelLabel():String{ + return (getLabel("electroMagneticFieldsLevel")); + } + public static function get adConsumerExposedLabel():String{ + return (getLabel("adConsumerExposed")); + } + public static function get perMonth():String{ + return (xml.perMonth); + } + public static function get perYear():String{ + return (xml.perYear); + } + public static function get perCent():String{ + return (xml.perCent); + } + public static function get perThousand():String{ + return (xml.perThousand); + } + public static function get perDay():String{ + return (xml.perDay); + } + public static function getUnit(nodeName:String):String{ + var r:String = ""; + if (((((xmlUnits[nodeName]) && (!((xmlUnits[nodeName].@unit == ""))))) && (xml[xmlUnits[nodeName].@unit]))){ + r = xml[xmlUnits[nodeName].@unit]; + }; + return (r); + } + public static function getLabel(nodeName:String):String{ + var r:String = ""; + trace(((((((("getLabel(" + nodeName) + "):") + xmlUnits[nodeName]) + "@label:") + xmlUnits[nodeName].@label) + " : ") + xml[xmlUnits[nodeName].@label])); + if (((((xmlUnits[nodeName]) && (!((xmlUnits[nodeName].@label == ""))))) && (xml[xmlUnits[nodeName].@label]))){ + r = xml[xmlUnits[nodeName].@label]; + }; + trace(("r:" + r)); + return (r); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/CommonsText.as b/flash_decompiled/watchdog/wd/providers/texts/CommonsText.as new file mode 100644 index 0000000..4b47795 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/CommonsText.as @@ -0,0 +1,40 @@ +package wd.providers.texts { + + public class CommonsText { + + private static var xml:XMLList; + + public function CommonsText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get longitude():String{ + return (xml.longitude); + } + public static function get latitude():String{ + return (xml.latitude); + } + public static function get paris():String{ + return (xml.paris); + } + public static function get berlin():String{ + return (xml.berlin); + } + public static function get london():String{ + return (xml.london); + } + public static function get loading():String{ + return (xml.loading); + } + public static function get mapInstructions():String{ + return (xml.mapInstructions); + } + public static function get selectLocation():String{ + return (xml.selectLocation); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/DataDetailText.as b/flash_decompiled/watchdog/wd/providers/texts/DataDetailText.as new file mode 100644 index 0000000..b25ae90 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/DataDetailText.as @@ -0,0 +1,178 @@ +package wd.providers.texts { + + public class DataDetailText { + + private static var xml:XMLList; + + public function DataDetailText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get metro():String{ + return (xml.metro); + } + public static function get metroTrainPerHour():String{ + return (xml.metroTrainPerHour); + } + public static function get metroNextTrainsTerminus1():String{ + return (xml.metroNextTrainsTerminus1); + } + public static function get metroNextTrainsTerminus2():String{ + return (xml.metroNextTrainsTerminus2); + } + public static function get metroCommutersPerDay():String{ + return (xml.metroCommutersPerDay); + } + public static function get metroNextTrains():String{ + return (xml.metroNextTrains); + } + public static function get metroDisclaimer():String{ + return (xml.metroDisclaimer); + } + public static function get bicycle():String{ + return (xml.bicycle); + } + public static function get bicycleAvailable():String{ + return (xml.bicycleAvailable); + } + public static function get bicycleAvailableSlots():String{ + return (xml.bicycleAvailableSlots); + } + public static function get bicycleUpdatedAt():String{ + return (xml.bicycleUpdatedAt); + } + public static function get networks():String{ + return (xml.networks); + } + public static function get internetRelays():String{ + return (xml.internetRelays); + } + public static function get internetSubscribers():String{ + return (xml.internetSubscribers); + } + public static function get wifiHotSpots():String{ + return (xml.wifiHotSpots); + } + public static function get mobile():String{ + return (xml.mobile); + } + public static function get mobileAntenna():String{ + return (xml.mobileAntenna); + } + public static function get mobileNetworks2G3G():String{ + return (xml.mobileNetworks2G3G); + } + public static function get mobileProvider():String{ + return (xml.mobileProvider); + } + public static function get mobileMultipleProviders():String{ + return (xml.mobileMultipleProviders); + } + public static function get electroMagneticFields():String{ + return (xml.electroMagneticFields); + } + public static function get electroMagneticFieldsOverAllLevelOfExposure():String{ + return (xml.electroMagneticFieldsOverAllLevelOfExposure); + } + public static function get electroMagneticFieldsMeasurementDate():String{ + return (xml.electroMagneticFieldsMeasurementDate); + } + public static function get electroMagneticFieldsGpsCoordinates():String{ + return (xml.electroMagneticFieldsGpsCoordinates); + } + public static function get electroMagneticFieldsLevelUnit():String{ + return (xml.electroMagneticFieldsLevelUnit); + } + public static function get streetFurniture():String{ + return (xml.streetFurniture); + } + public static function get atm():String{ + return (xml.atm); + } + public static function get adBillboards():String{ + return (xml.adBillboards); + } + public static function get adBillboard():String{ + return (xml.adBillboard); + } + public static function get adDigitalBillboard():String{ + return (xml.adDigitalBillboard); + } + public static function get adConsumerExposedPerDay():String{ + return (xml.adConsumerExposedPerDay); + } + public static function get trafficLights():String{ + return (xml.trafficLights); + } + public static function get publicToilets():String{ + return (xml.publicToilets); + } + public static function get cctv():String{ + return (xml.cctv); + } + public static function get cctvPolice():String{ + return (xml.cctvPolice); + } + public static function get cctvTraffic():String{ + return (xml.cctvTraffic); + } + public static function get social():String{ + return (xml.social); + } + public static function get instargram():String{ + return (xml.instargram); + } + public static function get instagramNewInstagramPicture():String{ + return (xml.instagramNewInstagramPicture); + } + public static function get instagramHasPostedAnewPic():String{ + return (xml.instagramHasPostedAnewPic); + } + public static function get instragramDisclaimer():String{ + return (xml.instragramDisclaimer); + } + public static function get fourSquare():String{ + return (xml.fourSquare); + } + public static function get fourSquareNewCheckIn():String{ + return (xml.fourSquareNewCheckIn); + } + public static function get fourSquareIsTheNewMayorOf():String{ + return (xml.fourSquareIsTheNewMayorOf); + } + public static function get fourSquarePowered():String{ + return (xml.fourSquarePowered); + } + public static function get fourSquareDisclaimer():String{ + return (xml.fourSquareDisclaimer); + } + public static function get twitter():String{ + return (xml.twitter); + } + public static function get twitterReply():String{ + return (xml.twitterReply); + } + public static function get twitterRetweet():String{ + return (xml.twitterRetweet); + } + public static function get twitterFavorites():String{ + return (xml.twitterFavorites); + } + public static function get twitterFollow():String{ + return (xml.twitterFollow); + } + public static function get twitterSeeConversation():String{ + return (xml.twitterSeeConversation); + } + public static function get flickrDisclaimer():String{ + return (xml.flickrDisclaimer); + } + public static function get twitterDisclaimer():String{ + return (xml.twitterDisclaimer); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/DataFilterText.as b/flash_decompiled/watchdog/wd/providers/texts/DataFilterText.as new file mode 100644 index 0000000..1327a5b --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/DataFilterText.as @@ -0,0 +1,79 @@ +package wd.providers.texts { + + public class DataFilterText { + + private static var xml:XMLList; + + public function DataFilterText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get transports():String{ + return (xml.transports); + } + public static function get metro():String{ + return (xml.metro); + } + public static function get bicycle():String{ + return (xml.bicycle); + } + public static function get auto():String{ + return (xml.auto); + } + public static function get networks():String{ + return (xml.networks); + } + public static function get electromagnetics():String{ + return (xml.electromagnetic); + } + public static function get internetRelays():String{ + return (xml.internetRelays); + } + public static function get wifiHotSpots():String{ + return (xml.wifiHotSpots); + } + public static function get mobile():String{ + return (xml.mobile); + } + public static function get streetFurniture():String{ + return (xml.streetFurniture); + } + public static function get atm():String{ + return (xml.atm); + } + public static function get ad():String{ + return (xml.ad); + } + public static function get traffic():String{ + return (xml.traffic); + } + public static function get radars():String{ + return (xml.radars); + } + public static function get toilets():String{ + return (xml.toilets); + } + public static function get cameras():String{ + return (xml.cameras); + } + public static function get social():String{ + return (xml.social); + } + public static function get twitter():String{ + return (xml.twitter); + } + public static function get instagram():String{ + return (xml.instagram); + } + public static function get fourSquare():String{ + return (xml.fourSquare); + } + public static function get flickr():String{ + return (xml.flickr); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/DataLabel.as b/flash_decompiled/watchdog/wd/providers/texts/DataLabel.as new file mode 100644 index 0000000..5ad2935 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/DataLabel.as @@ -0,0 +1,100 @@ +package wd.providers.texts { + + public class DataLabel { + + private static var xml:XMLList; + + public function DataLabel(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get transports():String{ + return (xml.transports); + } + public static function get metro():String{ + return (xml.metro); + } + public static function get bicycle():String{ + return (xml.bicycle); + } + public static function get auto():String{ + return (xml.auto); + } + public static function get networks():String{ + return (xml.networks); + } + public static function get electromagnetics():String{ + return (xml.electromagnetic); + } + public static function get internetRelays():String{ + return (xml.internetRelays); + } + public static function get wifiHotSpots():String{ + return (xml.wifiHotSpots); + } + public static function get mobile():String{ + return (xml.mobile); + } + public static function get streetFurniture():String{ + return (xml.streetFurniture); + } + public static function get atm():String{ + return (xml.atm); + } + public static function get ad():String{ + return (xml.ad); + } + public static function get traffic():String{ + return (xml.traffic); + } + public static function get radars():String{ + return (xml.radars); + } + public static function get toilets():String{ + return (xml.toilets); + } + public static function get cameras():String{ + return (xml.cameras); + } + public static function get social():String{ + return (xml.social); + } + public static function get twitter():String{ + return (xml.twitter); + } + public static function get instagram():String{ + return (xml.instagram); + } + public static function get fourSquare():String{ + return (xml.fourSquare); + } + public static function get flickr():String{ + return (xml.flickr); + } + public static function get train_line():String{ + return (xml.train_line); + } + public static function get train_frequency():String{ + return (xml.train_frequency); + } + public static function get train_frequency_unit():String{ + return (xml.train_frequency_unit); + } + public static function get train_from():String{ + return (xml.train_from); + } + public static function get train_to():String{ + return (xml.train_to); + } + public static function get train_arrival_time():String{ + return (xml.train_arrival_time); + } + public static function get train_arrival_time_unit():String{ + return (xml.train_arrival_time_unit); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/FooterText.as b/flash_decompiled/watchdog/wd/providers/texts/FooterText.as new file mode 100644 index 0000000..9e451f4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/FooterText.as @@ -0,0 +1,82 @@ +package wd.providers.texts { + + public class FooterText { + + private static var xml:XMLList; + + public function FooterText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get cities():String{ + return (xml.cities); + } + public static function get paris():String{ + return (xml.paris); + } + public static function get berlin():String{ + return (xml.berlin); + } + public static function get london():String{ + return (xml.london); + } + public static function get share():String{ + return (xml.share); + } + public static function get about():String{ + return (xml.about); + } + public static function get legals():String{ + return (xml.legals); + } + public static function get help():String{ + return (xml.help); + } + public static function get languages():String{ + return (xml.languages); + } + public static function get sound():String{ + return (xml.sound); + } + public static function get onOff():String{ + return (xml.onOff); + } + public static function get fullscreen():String{ + return (xml.fullscreen); + } + public static function get ubisoft():String{ + return (xml.ubisoft); + } + public static function get watchdogs():String{ + return (xml.watchdogs); + } + public static function get ubisoft_link():String{ + return (xml.ubisoft_link); + } + public static function get watchdogs_link():String{ + return (xml.watchdogs_link); + } + public static function get helpNavigationText():String{ + return (xml.helpNavigationText); + } + public static function get search():String{ + if (xml == null){ + return ("recherche"); + }; + return (xml.search); + } + public static function get searchFieldContent():String{ + return (xml.searchFieldContent); + } + public static function get hq():String{ + return (xml.HQ); + } + public static function get lq():String{ + return (xml.LQ); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/LegalsText.as b/flash_decompiled/watchdog/wd/providers/texts/LegalsText.as new file mode 100644 index 0000000..00eb9ca --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/LegalsText.as @@ -0,0 +1,31 @@ +package wd.providers.texts { + + public class LegalsText { + + private static var xml:XMLList; + + public function LegalsText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get title():String{ + return (xml.title); + } + public static function get text():String{ + return (xml.text1); + } + public static function get text2():String{ + return (xml.text2); + } + public static function get btnTerms():String{ + return (xml.btnTerms); + } + public static function get btnCredits():String{ + return (xml.btnCredits); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/LiveActivitiesText.as b/flash_decompiled/watchdog/wd/providers/texts/LiveActivitiesText.as new file mode 100644 index 0000000..5c796e8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/LiveActivitiesText.as @@ -0,0 +1,58 @@ +package wd.providers.texts { + + public class LiveActivitiesText { + + private static var xml:XMLList; + + public function LiveActivitiesText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get title0():String{ + return (xml.title0); + } + public static function get text01():String{ + return (xml.text01); + } + public static function get text02():String{ + return (xml.text02); + } + public static function get faceBookConnectButton():String{ + return (xml.faceBookConnectButton); + } + public static function get feed0():String{ + return (xml.feed0); + } + public static function get title1():String{ + return (xml.title1); + } + public static function get text11():String{ + return (xml.text11); + } + public static function get title2():String{ + return (xml.title2); + } + public static function get feed1():String{ + return (xml.feed1); + } + public static function get popinTitle():String{ + return (xml.popinTitle); + } + public static function get disclaimerText():String{ + return (xml.disclaimerText); + } + public static function get okButton():String{ + return (xml.okButton); + } + public static function get cancelButton():String{ + return (xml.cancelButton); + } + public static function get fakeActivities():XML{ + return (xml.fakeActivities[0]); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/ShareText.as b/flash_decompiled/watchdog/wd/providers/texts/ShareText.as new file mode 100644 index 0000000..ce9f317 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/ShareText.as @@ -0,0 +1,34 @@ +package wd.providers.texts { + + public class ShareText { + + private static var xml:XMLList; + + public function ShareText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get FBGtitle():String{ + return (xml.FBGtitle); + } + public static function get FBGtext():String{ + return (xml.FBGtext); + } + public static function get FBGimage():String{ + return (xml.FBGimage); + } + public static function get TwitterTitle():String{ + return (xml.TwitterTitle); + } + public static function get TwitterText():String{ + return (xml.TwitterText); + } + public static function get CopyButton():String{ + return (xml.copyToClipBoard); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/StatsText.as b/flash_decompiled/watchdog/wd/providers/texts/StatsText.as new file mode 100644 index 0000000..fe165f3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/StatsText.as @@ -0,0 +1,49 @@ +package wd.providers.texts { + + public class StatsText { + + private static var xml:XMLList; + + public function StatsText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get title():String{ + return (xml.title); + } + public static function get incomeText():String{ + return (xml.incomeText); + } + public static function get unemploymentText():String{ + return (xml.unemploymentText); + } + public static function get sourceQuotation():String{ + return (xml.sourceQuotation); + } + public static function get crimeInfractionText():String{ + return (xml.crimeInfractionText); + } + public static function get electricityConsumption():String{ + return (xml.electricityConsumption); + } + public static function get infoPopinBtn():String{ + return (xml.infoPopinBtn); + } + public static function get infoPopinTxtIncome():String{ + return (xml.infoPopinTxtIncome); + } + public static function get infoPopinTxtUnemployment():String{ + return (xml.infoPopinTxtUnemployment); + } + public static function get infoPopinTxtCrime():String{ + return (xml.infoPopinTxtCrime); + } + public static function get infoPopinTxtElectricity():String{ + return (xml.infoPopinTxtElectricity); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/TextProvider.as b/flash_decompiled/watchdog/wd/providers/texts/TextProvider.as new file mode 100644 index 0000000..48253ec --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/TextProvider.as @@ -0,0 +1,38 @@ +package wd.providers.texts { + import wd.utils.*; + import flash.events.*; + import wd.core.*; + + public class TextProvider extends EventDispatcher { + + private var lo:XMLLoader; + + public function TextProvider(){ + super(); + this.lo = new XMLLoader("texts"); + } + public function resetLanguage():void{ + this.lo.addEventListener(Event.COMPLETE, this.onComplete); + this.lo.load(Config.CONTENT_FILE); + } + private function onComplete(e:Event):void{ + this.lo.removeEventListener(Event.COMPLETE, this.onComplete); + var xml:XML = this.lo.xml; + CommonsText.reset(xml.commons); + DataDetailText.reset(xml.dataDetail); + DataFilterText.reset(xml.dataFilter); + FooterText.reset(xml.footer); + LiveActivitiesText.reset(xml.liveActivities); + ShareText.reset(xml.share); + StatsText.reset(xml.areaStats); + TutorialText.reset(xml.tutorial); + DataLabel.reset(xml.dataLabel); + LegalsText.reset(xml.legals); + AboutText.reset(xml.about); + CityTexts.reset(xml.units); + AidenTexts.reset(xml.aidenMessages); + dispatchEvent(new Event(Event.COMPLETE)); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/providers/texts/TutorialText.as b/flash_decompiled/watchdog/wd/providers/texts/TutorialText.as new file mode 100644 index 0000000..d61d688 --- /dev/null +++ b/flash_decompiled/watchdog/wd/providers/texts/TutorialText.as @@ -0,0 +1,25 @@ +package wd.providers.texts { + + public class TutorialText { + + public static var xml:XMLList; + + public function TutorialText(xml:XMLList){ + super(); + reset(xml); + } + public static function reset(value:XMLList):void{ + xml = value; + } + public static function get btnOk():String{ + return (xml.btnOk); + } + public static function get btnNext():String{ + return (xml.btnNext); + } + public static function get btnNok():String{ + return (xml.btnNok); + } + + } +}//package wd.providers.texts diff --git a/flash_decompiled/watchdog/wd/sound/SoundFX.as b/flash_decompiled/watchdog/wd/sound/SoundFX.as new file mode 100644 index 0000000..75266ce --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundFX.as @@ -0,0 +1,68 @@ +package wd.sound { + import flash.media.*; + import flash.events.*; + import aze.motion.*; + import aze.motion.easing.*; + + public class SoundFX extends EventDispatcher { + + public static var COMPLETE:String = "COMPLETE"; + + private var snd:Sound; + private var channel:SoundChannel; + private var trans:SoundTransform; + private var _vol:Number; + public var label:String; + private var isVibe:Boolean; + + public function SoundFX(s:String, vol:Number, isVibe:Boolean=false){ + super(); + this.isVibe = isVibe; + this.label = s; + this.snd = SoundLibrary.getSound(s); + this.trans = new SoundTransform(); + this.volume = vol; + this.play(); + } + private function play():void{ + this.channel = this.snd.play(0, ((this.isVibe) ? 999 : 0), this.trans); + if (this.isVibe){ + } else { + if (this.channel){ + this.snd.addEventListener(Event.SOUND_COMPLETE, this.destroy); + }; + }; + } + public function get volume():Number{ + return (this._vol); + } + public function set volume(v:Number):void{ + this._vol = v; + this.trans.volume = (v * SoundManager.MASTER_VOLUME); + if (this.channel){ + this.channel.soundTransform = this.trans; + }; + } + private function destroy(event:Event):void{ + this.dispose(); + } + public function dispose():void{ + this.snd = null; + if (this.channel){ + if (this.isVibe){ + } else { + this.channel.removeEventListener(Event.SOUND_COMPLETE, this.destroy); + }; + this.channel.stop(); + }; + this.trans = null; + } + public function fadeOut():void{ + eaze(this).to(3, {volume:0}).easing(Expo.easeInOut).onComplete(this.dispose); + } + public function fadeIn():void{ + eaze(this).to(3, {volume:1}).easing(Expo.easeInOut); + } + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary.as new file mode 100644 index 0000000..c6b36d6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary.as @@ -0,0 +1,69 @@ +package wd.sound { + import flash.utils.*; + import flash.media.*; + import wd.utils.*; + + public class SoundLibrary { + + private static const SNDAmbianceCarteVille:Class = SoundLibrary_SNDAmbianceCarteVille; + private static const SNDApparitionLieux:Class = SoundLibrary_SNDApparitionLieux; + private static const SNDChargement:Class = SoundLibrary_SNDChargement; + private static const SNDClickLieuxVille:Class = SoundLibrary_SNDClickLieuxVille; + private static const SNDRollOverLieuxVille:Class = SoundLibrary_SNDRollOverLieuxVille; + private static const SNDBoucleAmbianceBerlin:Class = SoundLibrary_SNDBoucleAmbianceBerlin; + private static const SNDBoucleAmbianceLondon:Class = SoundLibrary_SNDBoucleAmbianceLondon; + private static const SNDBoucleAmbianceParis:Class = SoundLibrary_SNDBoucleAmbianceParis; + private static const SNDApparitionSignalisation:Class = SoundLibrary_SNDApparitionSignalisation; + private static const SNDClickPanneauFiltre:Class = SoundLibrary_SNDClickPanneauFiltre; + private static const SNDVilleRollOverV5:Class = SoundLibrary_SNDVilleRollOverV5; + private static const SNDDeplacementCamera:Class = SoundLibrary_SNDDeplacementCamera; + private static const SNDZoomApproche:Class = SoundLibrary_SNDZoomApproche; + private static const SNDMultiConnecteV17:Class = SoundLibrary_SNDMultiConnecteV17; + private static const SNDMultiConnecteV14:Class = SoundLibrary_SNDMultiConnecteV14; + private static const SNDClickV4:Class = SoundLibrary_SNDClickV4; + private static const SNDClickV7:Class = SoundLibrary_SNDClickV7; + private static const SNDClickV9:Class = SoundLibrary_SNDClickV9; + private static const SNDPopIn:Class = SoundLibrary_SNDPopIn; + private static const SNDRollOverV5:Class = SoundLibrary_SNDRollOverV5; + private static const SNDRollOverV2:Class = SoundLibrary_SNDRollOverV2; + + private static var lib:Dictionary = new Dictionary(); + + public static function exist(arg0:String):Boolean{ + if (lib[arg0] != null){ + return (true); + }; + return (false); + } + public static function getSound(arg0:String):Sound{ + return (lib[arg0]); + } + public static function setSound(arg0:String, arg1:Sound):void{ + lib[arg0] = arg1; + } + public static function init():void{ + setSound("AmbianceCarteVille", new SNDAmbianceCarteVille()); + setSound("RollOverLieuxVille", new SNDRollOverLieuxVille()); + setSound("ClicLieuxVille", new SNDClickLieuxVille()); + setSound("ApparitionLieuxVille", new SNDApparitionLieux()); + setSound("ChargementCarte", new SNDChargement()); + setSound(("BoucleAmbiance_" + Locator.PARIS), new SNDBoucleAmbianceParis()); + setSound(("BoucleAmbiance_" + Locator.LONDON), new SNDBoucleAmbianceLondon()); + setSound(("BoucleAmbiance_" + Locator.BERLIN), new SNDBoucleAmbianceBerlin()); + setSound("ApparitionSignalisation", new SNDApparitionSignalisation()); + setSound("ClickPanneauFiltre", new SNDClickPanneauFiltre()); + setSound("VilleRollOver", new SNDVilleRollOverV5()); + setSound("DeplacementCamera", new SNDDeplacementCamera()); + setSound("ZoomApproche", new SNDZoomApproche()); + setSound("MultiConnecteV17", new SNDMultiConnecteV17()); + setSound("MultiConnecteV14", new SNDMultiConnecteV14()); + setSound("ClickV4", new SNDClickV4()); + setSound("ClickV7", new SNDClickV7()); + setSound("ClickV9", new SNDClickV9()); + setSound("RolloverV5", new SNDRollOverV5()); + setSound("RolloverV2", new SNDRollOverV2()); + setSound("PopIn", new SNDPopIn()); + } + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDAmbianceCarteVille.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDAmbianceCarteVille.as new file mode 100644 index 0000000..aaf18a1 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDAmbianceCarteVille.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDAmbianceCarteVille extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionLieux.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionLieux.as new file mode 100644 index 0000000..b2e36a3 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionLieux.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDApparitionLieux extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionSignalisation.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionSignalisation.as new file mode 100644 index 0000000..c07ca68 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDApparitionSignalisation.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDApparitionSignalisation extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceBerlin.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceBerlin.as new file mode 100644 index 0000000..4c4ec50 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceBerlin.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDBoucleAmbianceBerlin extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceLondon.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceLondon.as new file mode 100644 index 0000000..9434a2b --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceLondon.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDBoucleAmbianceLondon extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceParis.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceParis.as new file mode 100644 index 0000000..b77d383 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDBoucleAmbianceParis.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDBoucleAmbianceParis extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDChargement.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDChargement.as new file mode 100644 index 0000000..992adb7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDChargement.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDChargement extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickLieuxVille.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickLieuxVille.as new file mode 100644 index 0000000..3c7f7c5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickLieuxVille.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDClickLieuxVille extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickPanneauFiltre.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickPanneauFiltre.as new file mode 100644 index 0000000..e780ea5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickPanneauFiltre.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDClickPanneauFiltre extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV4.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV4.as new file mode 100644 index 0000000..1dc9de8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV4.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDClickV4 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV7.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV7.as new file mode 100644 index 0000000..1cdd15e --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV7.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDClickV7 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV9.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV9.as new file mode 100644 index 0000000..06891d4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDClickV9.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDClickV9 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDDeplacementCamera.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDDeplacementCamera.as new file mode 100644 index 0000000..7a744f5 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDDeplacementCamera.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDDeplacementCamera extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV14.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV14.as new file mode 100644 index 0000000..45db675 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV14.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDMultiConnecteV14 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV17.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV17.as new file mode 100644 index 0000000..3bde2f8 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDMultiConnecteV17.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDMultiConnecteV17 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDPopIn.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDPopIn.as new file mode 100644 index 0000000..a01dae1 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDPopIn.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDPopIn extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverLieuxVille.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverLieuxVille.as new file mode 100644 index 0000000..1d1ecae --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverLieuxVille.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDRollOverLieuxVille extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV2.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV2.as new file mode 100644 index 0000000..be3b599 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV2.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDRollOverV2 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV5.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV5.as new file mode 100644 index 0000000..cad3280 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDRollOverV5.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDRollOverV5 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDVilleRollOverV5.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDVilleRollOverV5.as new file mode 100644 index 0000000..2b90be7 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDVilleRollOverV5.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDVilleRollOverV5 extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDZoomApproche.as b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDZoomApproche.as new file mode 100644 index 0000000..fb3c1ed --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundLibrary_SNDZoomApproche.as @@ -0,0 +1,7 @@ +package wd.sound { + import mx.core.*; + + public class SoundLibrary_SNDZoomApproche extends SoundAsset { + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/sound/SoundManager.as b/flash_decompiled/watchdog/wd/sound/SoundManager.as new file mode 100644 index 0000000..1ece244 --- /dev/null +++ b/flash_decompiled/watchdog/wd/sound/SoundManager.as @@ -0,0 +1,59 @@ +package wd.sound { + import flash.events.*; + import wd.utils.*; + + public class SoundManager { + + public static var MASTER_VOLUME:Number = 0; + private static var currentSoundPlayed:SoundFX; + private static var currentVibe:SoundFX; + private static var locked:Boolean; + + public static function playVibe(s:String, vol:int):void{ + if (currentVibe != null){ + currentVibe.fadeOut(); + }; + currentVibe = new SoundFX(s, 0, true); + currentVibe.fadeIn(); + } + public static function playFX(s:String, vol:Number=1, checkIsPlayed:Boolean=false):void{ + if (MASTER_VOLUME == 0){ + return; + }; + if (((checkIsPlayed) && (locked))){ + trace("playing"); + }; + var sound:SoundFX = new SoundFX(s, vol); + sound.addEventListener(SoundFX.COMPLETE, unLockFXSound); + locked = true; + } + protected static function unLockFXSound(event:Event):void{ + var sound:SoundFX = (event.target as SoundFX); + sound.removeEventListener(SoundFX.COMPLETE, unLockFXSound); + sound = null; + trace("stopped playing"); + locked = false; + } + public static function swapMute(e:Event):void{ + setMasterVolume((((MASTER_VOLUME == 1)) ? 0 : 1)); + } + public static function setMasterVolume(v:Number, updateSol:Boolean=true):void{ + MASTER_VOLUME = v; + if (currentVibe != null){ + currentVibe.volume = currentVibe.volume; + }; + if (updateSol){ + SharedData.soundVolume = MASTER_VOLUME; + }; + } + public static function init():void{ + if (SharedData.firstTime){ + setMasterVolume(1); + } else { + setMasterVolume(SharedData.soundVolume, false); + }; + SoundLibrary.init(); + } + + } +}//package wd.sound diff --git a/flash_decompiled/watchdog/wd/utils/CSVLoader.as b/flash_decompiled/watchdog/wd/utils/CSVLoader.as new file mode 100644 index 0000000..8b46f8f --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/CSVLoader.as @@ -0,0 +1,52 @@ +package wd.utils { + import flash.net.*; + import flash.events.*; + import __AS3__.vec.*; + import wd.hud.*; + import wd.hud.items.*; + import wd.http.*; + + public class CSVLoader { + + private var uload:URLLoader; + + public function CSVLoader(url:String){ + super(); + var req:URLRequest = new URLRequest(encodeURI(url)); + this.uload = new URLLoader(); + this.uload.addEventListener(Event.COMPLETE, this.onComplete); + this.uload.load(req); + } + private function onComplete(e:Event):void{ + var _s:String; + var labels:Vector.; + var i:int; + var s:String = this.uload.data; + s = s.replace(/\n/gi, ";"); + s = s.replace(/\r/gi, ";"); + s = s.replace(";;", ";"); + var tmp:Array = s.split(";"); + var places:Array = []; + for each (_s in tmp) { + if (_s == ""){ + } else { + places.push(_s); + }; + }; + labels = Vector.([]); + i = 0; + while (i < places.length) { + labels.push(places[i]); + i = (i + 3); + }; + SpriteSheetFactory2.addTexts(labels); + Hud.getInstance().majTexture(); + i = 0; + while (i < places.length) { + Hud.addItem(new TrackerData(DataType.PLACES, 0, places[(i + 2)], places[(i + 1)], places[i])); + i = (i + 3); + }; + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/JsPopup.as b/flash_decompiled/watchdog/wd/utils/JsPopup.as new file mode 100644 index 0000000..e23cdce --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/JsPopup.as @@ -0,0 +1,40 @@ +package wd.utils { + import flash.system.*; + import flash.external.*; + import flash.net.*; + + public class JsPopup { + + public static function open(url:String, name:String=null, width:int=600, height:int=600, sizeable:Boolean=true, scrollbars:Boolean=true):void{ + var top:int = ((Capabilities.screenResolutionY - height) / 2); + var left:int = ((Capabilities.screenResolutionX - width) / 2); + var params:String = ((((((("top=" + top) + ",left=") + left) + ",width=") + width) + ",height=") + height); + if (sizeable){ + params = (params + ",resizable=yes"); + }; + if (scrollbars){ + params = (params + ",scrollbars=yes"); + }; + if (name == null){ + name = ("pop" + int((Math.random() * 65536))); + }; + var script:XML = + ; + if (ExternalInterface.available){ + if (!(ExternalInterface.call(script, url, name, params))){ + navigateToURL(new URLRequest(url)); + }; + } else { + navigateToURL(new URLRequest(url)); + }; + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/Locator.as b/flash_decompiled/watchdog/wd/utils/Locator.as new file mode 100644 index 0000000..e9bb080 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/Locator.as @@ -0,0 +1,118 @@ +package wd.utils { + import flash.geom.*; + import __AS3__.vec.*; + import wd.core.*; + import biga.utils.*; + + public class Locator { + + public static const DEG_TO_RAD:Number = 0.0174532925199433; + public static const PARIS:String = "paris"; + public static const LONDON:String = "london"; + public static const BERLIN:String = "berlin"; + + private static var instance:Locator; + public static var CITY:String = "paris"; + public static var rect:Rectangle = new Rectangle(); + public static var world_rect:Rectangle; + public static var world_rect_camera:Rectangle; + private static var world_position:Point = new Point(); + public static var WORLD_SCALE:Number = 1000000; + public static var LONGITUDE:Number; + public static var LATITUDE:Number; + public static var STARTING_PLACE:Place; + + public function Locator(city:String, _rect:Rectangle, scale:Number=10000000){ + super(); + instance = this; + CITY = city; + WORLD_SCALE = Config.WORLD_SCALE; + rect = Config.WORLD_RECT; + WORLD_RECT; + setRandomLocation(); + } + public static function setRandomLocation(fromList:Boolean=true):void{ + var list:Vector.; + var id:int; + if (Config.DEBUG_LOCATOR){ + trace("starting place", STARTING_PLACE); + }; + if (STARTING_PLACE != null){ + LONGITUDE = STARTING_PLACE.lon; + LATITUDE = STARTING_PLACE.lat; + } else { + if (fromList){ + list = Places[CITY.toUpperCase()]; + id = int((Math.random() * list.length)); + LONGITUDE = list[id].lon; + LATITUDE = list[id].lat; + } else { + LONGITUDE = (rect.x + (Math.random() * Math.abs((rect.width - rect.x)))); + LATITUDE = (rect.y + (Math.random() * Math.abs((rect.height - rect.y)))); + }; + }; + } + public static function project(longitude:Number, latitude:Number, p:Point=null):Point{ + p = ((p) || (new Point())); + p.x = ((longitude / 180) % 3); + p.y = (180 - (0.5 - (Math.log(Math.tan(((Math.PI / 4) + ((latitude * Math.PI) / 360)))) / Math.PI))); + return (p); + } + public static function get WORLD_RECT():Rectangle{ + if (world_rect != null){ + return (world_rect); + }; + world_rect = rect.clone(); + var tl:Point = project(world_rect.x, world_rect.y); + var br:Point = project(world_rect.width, world_rect.height); + world_rect.x = tl.x; + world_rect.y = tl.y; + world_rect.width = (Math.abs((br.x - tl.x)) * WORLD_SCALE); + world_rect.height = (Math.abs((br.y - tl.y)) * WORLD_SCALE); + world_rect.x = (-(world_rect.width) * 0.5); + world_rect.y = (-(world_rect.height) * 0.5); + world_rect_camera = world_rect.clone(); + world_rect_camera.x = (world_rect_camera.x + Constants.GRID_CASE_SIZE); + world_rect_camera.y = (world_rect_camera.y + Constants.GRID_CASE_SIZE); + world_rect_camera.width = (world_rect_camera.width - (Constants.GRID_CASE_SIZE * 2)); + world_rect_camera.height = (world_rect_camera.height - (Constants.GRID_CASE_SIZE * 2)); + return (world_rect); + } + public static function REMAP(lon:Number, lat:Number, p:Point=null):Point{ + p = ((p) || (world_position)); + p.x = (world_rect.x + GeomUtils.map(lon, rect.x, rect.width, 0, world_rect.width)); + p.y = (world_rect.y + GeomUtils.map(lat, rect.y, rect.height, 0, world_rect.height)); + return (p); + } + public static function DISTANCE(longitude1:Number, latitude1:Number, longitude2:Number, latitude2:Number):Number{ + var R:Number = 6371; + var dLat:Number = (((latitude2 - latitude1) * DEG_TO_RAD) * 0.5); + var dLon:Number = (((longitude2 - longitude1) * DEG_TO_RAD) * 0.5); + var lat1:Number = (latitude1 * DEG_TO_RAD); + var lat2:Number = (latitude2 * DEG_TO_RAD); + var a:Number = ((Math.sin(dLat) * Math.sin(dLat)) + (((Math.sin(dLon) * Math.sin(dLon)) * Math.cos(lat1)) * Math.cos(lat2))); + var c:Number = (2 * Math.atan2(Math.sqrt(a), Math.sqrt((1 - a)))); + var d:Number = (R * c); + return (d); + } + public static function LOCATE(x:Number, y:Number, p:Point=null):Point{ + p = ((p) || (world_position)); + p.x = GeomUtils.map(x, world_rect.left, world_rect.right, rect.x, rect.width); + p.y = GeomUtils.map(y, world_rect.top, world_rect.bottom, rect.y, rect.height); + return (p); + } + public static function INTRO_REMAP(lon:Number, lat:Number, local_rect:Rectangle, p:Point=null):Point{ + p = ((p) || (world_position)); + p.x = (local_rect.x + GeomUtils.map(lon, rect.x, rect.width, 0, local_rect.width)); + p.y = (local_rect.y + GeomUtils.map(lat, rect.y, rect.height, 0, local_rect.height)); + return (p); + } + public static function INTRO_LOCATE(x:Number, y:Number, local_rect:Rectangle, p:Point=null):Point{ + p = ((p) || (world_position)); + p.x = GeomUtils.map(x, local_rect.left, local_rect.right, rect.x, rect.width); + p.y = GeomUtils.map(y, local_rect.top, local_rect.bottom, rect.y, rect.height); + return (p); + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/Place.as b/flash_decompiled/watchdog/wd/utils/Place.as new file mode 100644 index 0000000..143437a --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/Place.as @@ -0,0 +1,22 @@ +package wd.utils { + import flash.geom.*; + + public class Place extends Point { + + private static var _id:int = 0; + + public var id:int; + public var lat:Number; + public var lon:Number; + public var name:String; + + public function Place(name:String, lon:Number, lat:Number){ + super(); + this.name = name; + this.lon = lon; + this.lat = lat; + this.id = _id; + _id++; + } + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/Places.as b/flash_decompiled/watchdog/wd/utils/Places.as new file mode 100644 index 0000000..0995aea --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/Places.as @@ -0,0 +1,12 @@ +package wd.utils { + import __AS3__.vec.*; + + public class Places { + + public static var PARIS:Vector. = Vector.([new Place("Tour Eiffel", 2.294254, 48.858278)]); + public static var LONDON:Vector. = Vector.([new Place("Buckingham Palace", -0.14189, 51.501364), new Place("London Eye", -0.119543, 51.503324), new Place("King's Cross Saint Pancras", -0.768836, 50.838659), new Place("The Angelic", -0.106384, 51.532224), new Place("Trafalgar's Square", -0.127962, 51.507723), new Place("Oxford Circus", -0.14188, 51.51522), new Place("Holborn", -89.418771, 40.715567), new Place("Tower Bridge", -0.075271, 51.505703), new Place("Hyde Park", -0.165708, 51.507431), new Place("Greenwich Park", 0.001464, 51.47691), new Place("Saint Paul's Cathedral", -0.09956, 51.513679), new Place("BETC London", -0.133725, 51.517466), new Place("Piccadilly Circus", -0.13377, 51.51005), new Place("Arsenal Stadium", -0.108439, 51.554886)]); + public static var BERLIN:Vector. = Vector.([new Place("center", 13.40933, 52.52219)]); + public static var LIST:Vector. = Vector.([new Place("aberdeen", -2.9, 57.9), new Place("Adelaide,Australia", 138.36, -34.55), new Place("Algiers,Algeria", 3, 36.5), new Place("Amsterdam,Netherlands", 4.53, 52.22), new Place("Ankara,Turkey", 32.55, 39.55), new Place("Asunción,Paraguay", -57.4, -25.15), new Place("Athens,Greece", 23.43, 37.58), new Place("Auckland,NewZealand", 174.45, -36.52), new Place("Bangkok,Thailand", 100.3, 13.45), new Place("Barcelona,Spain", 2.9, 41.23), new Place("Beijing,China", 116.25, 39.55), new Place("Belém,Brazil", -48.29, -1.28), new Place("Belfast,NorthernIreland", -5.56, 54.37), new Place("Belgrade,Serbia", 20.32, 44.52), new Place("Berlin,Germany", 13.25, 52.3), new Place("Birmingham,England", -1.55, 52.25), new Place("Bogotá,Colombia", -74.15, 4.32), new Place("Bombay,India", 72.48, 19), new Place("Bordeaux,France", -0.31, 44.5), new Place("Bremen,Germany", 8.49, 53.5), new Place("Brisbane,Australia", 153.8, -27.29), new Place("Bristol,England", -2.35, 51.28), new Place("Brussels,Belgium", 4.22, 50.52), new Place("Bucharest,Romania", 26.7, 44.25), new Place("Budapest,Hungary", 19.5, 47.3), new Place("BuenosAires,Argentina", -58.22, -34.35), new Place("Cairo,Egypt", 31.21, 30.2), new Place("Calcutta,India", 88.24, 22.34), new Place("Canton,China", 113.15, 23.7), new Place("CapeTown,SouthAfrica", 18.22, -33.55), new Place("Caracas,Venezuela", -67.2, 10.28), new Place("Cayenne,FrenchGuiana", -52.18, 4.49), new Place("Chihuahua,Mexico", -106.5, 28.37), new Place("Chongqing,China", 106.34, 29.46), new Place("Copenhagen,Denmark", 12.34, 55.4), new Place("Córdoba,Argentina", -64.1, -31.28), new Place("Dakar,Senegal", -17.28, 14.4), new Place("Darwin,Australia", 130.51, -12.28), new Place("Djibouti,Djibouti", 43.3, 11.3), new Place("Dublin,Ireland", -6.15, 53.2), new Place("Durban,SouthAfrica", 30.53, -29.53), new Place("Edinburgh,Scotland", -3.1, 55.55), new Place("Frankfurt,Germany", 8.41, 50.7), new Place("Georgetown,Guyana", -58.15, 6.45), new Place("Glasgow,Scotland", -4.15, 55.5), new Place("GuatemalaCity,Guatemala", -90.31, 14.37), new Place("Guayaquil,Ecuador", -79.56, -2.1), new Place("Hamburg,Germany", 10.2, 53.33), new Place("Hammerfest,Norway", 23.38, 70.38), new Place("Havana,Cuba", -82.23, 23.8), new Place("Helsinki,Finland", 25, 60.1), new Place("Hobart,Tasmania", 147.19, -42.52), new Place("HongKong,China", 114.11, 22.2), new Place("Iquique,Chile", -70.7, -20.1), new Place("Irkutsk,Russia", 104.2, 52.3), new Place("Jakarta,Indonesia", 106.48, -6.16), new Place("Johannesburg,SouthAfrica", 28.4, -26.12), new Place("Kingston,Jamaica", -76.49, 17.59), new Place("Kinshasa,Congo", 15.17, -4.18), new Place("KualaLumpur,Malaysia", 101.42, 3.8), new Place("LaPaz,Bolivia", -68.22, -16.27), new Place("Leeds,England", -1.3, 53.45), new Place("Lima,Peru", -77.2, -12), new Place("Lisbon,Portugal", -9.9, 38.44), new Place("Liverpool,England", -3, 53.25), new Place("London,England", -0.5, 51.32), new Place("Lyons,France", 4.5, 45.45), new Place("Madrid,Spain", -3.42, 40.26), new Place("Manchester,England", -2.15, 53.3), new Place("Manila,Philippines", 120.57, 14.35), new Place("Marseilles,France", 5.2, 43.2), new Place("Mazatlán,Mexico", 106.25, 23.12), new Place("Mecca,SaudiArabia", 39.45, 21.29), new Place("Melbourne,Australia", 144.58, -37.47), new Place("MexicoCity,Mexico", -99.7, 19.26), new Place("Milan,Italy", 9.1, 45.27), new Place("Montevideo,Uruguay", -56.1, -34.53), new Place("Moscow,Russia", 37.36, 55.45), new Place("Munich,Germany", 11.35, 48.8), new Place("Nagasaki,Japan", 129.57, 32.48), new Place("Nagoya,Japan", 136.56, 35.7), new Place("Nairobi,Kenya", 36.55, -1.25), new Place("Nanjing(Nanking),China", 118.53, 32.3), new Place("Naples,Italy", 14.15, 40.5), new Place("NewDelhi,India", 77.12, 28.35), new Place("Newcastle-on-Tyne,England", -1.37, 54.58), new Place("Odessa,Ukraine", 30.48, 46.27), new Place("Osaka,Japan", 135.3, 34.32), new Place("Oslo,Norway", 10.42, 59.57), new Place("PanamaCity,Panama", -79.32, 8.58), new Place("Paramaribo,Suriname", -55.15, 5.45), new Place("Paris,France", 2.2, 48.48), new Place("Perth,Australia", 115.52, -31.57), new Place("Plymouth,England", -4.5, 50.25), new Place("PortMoresby,PapuaNewGuinea", 147.8, -9.25), new Place("Prague,CzechRepublic", 14.26, 50.5), new Place("Rangoon,Myanmar", 96, 16.5), new Place("Reykjavík,Iceland", -21.58, 64.4), new Place("RiodeJaneiro,Brazil", -43.12, -22.57), new Place("Rome,Italy", 12.27, 41.54), new Place("Salvador,Brazil", -38.27, -12.56), new Place("Santiago,Chile", -70.45, 33.28), new Place("St.Petersburg,Russia", 30.18, 59.56), new Place("SãoPaulo,Brazil", -46.31, -23.31), new Place("Shanghai,China", 121.28, 31.1), new Place("Singapore,Singapore", 103.55, 1.14), new Place("Sofia,Bulgaria", 23.2, 42.4), new Place("Stockholm,Sweden", 18.3, 59.17), new Place("Sydney,Australia", 151, -34), new Place("Tananarive,Madagascar", 47.33, -18.5), new Place("Teheran,Iran", 51.45, 35.45), new Place("Tokyo,Japan", 139.45, 35.4), new Place("Tripoli,Libya", 13.12, 32.57), new Place("Venice,Italy", 12.2, 45.26), new Place("Veracruz,Mexico", -96.1, 19.1), new Place("Vienna,Austria", 16.2, 48.14), new Place("Vladivostok,Russia", 132, 43.1), new Place("Warsaw,Poland", 21, 52.14), new Place("Wellington,NewZealand", 174.47, -41.17), new Place("Zürich,Switzerland", 8.31, 47.21)]); + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/SharedData.as b/flash_decompiled/watchdog/wd/utils/SharedData.as new file mode 100644 index 0000000..f02d3fe --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/SharedData.as @@ -0,0 +1,58 @@ +package wd.utils { + import flash.net.*; + + public class SharedData { + + private static var _instance:SharedData; + + private var mySO:SharedObject; + private var _firstTime:Boolean; + + public function SharedData(){ + super(); + if (_instance == null){ + _instance = this; + this.mySO = SharedObject.getLocal("watchdogs"); + if (this.mySO.data.firstTime == null){ + this.mySO.data.firstTime = "1"; + this._firstTime = true; + this.mySO.flush(); + } else { + this._firstTime = false; + }; + }; + } + private static function get instance():SharedData{ + if (_instance == null){ + new (SharedData)(); + }; + return (_instance); + } + public static function get firstTime():Boolean{ + return (instance._firstTime); + } + public static function set soundVolume(n:Number):void{ + _instance.mySO.data.soundVolume = n; + _instance.mySO.flush(); + } + public static function get soundVolume():Number{ + if (_instance.mySO.data.soundVolume == null){ + _instance.mySO.data.soundVolume = "1"; + _instance.mySO.flush(); + }; + return (_instance.mySO.data.soundVolume); + } + public static function set isHq(v:Boolean):void{ + _instance.mySO.data.isHq = v; + _instance.mySO.flush(); + } + public static function get isHq():Boolean{ + if (_instance.mySO.data.isHq == null){ + _instance.mySO.data.isHq = true; + _instance.mySO.flush(); + }; + return (_instance.mySO.data.isHq); + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2.as b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2.as new file mode 100644 index 0000000..458dff6 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2.as @@ -0,0 +1,302 @@ +package wd.utils { + import flash.display.*; + import flash.geom.*; + import wd.hud.items.pictos.*; + import wd.wq.datas.*; + import wd.hud.common.text.*; + import __AS3__.vec.*; + import wd.d3.geom.metro.*; + + public class SpriteSheetFactory2 { + + private static var icons_src:Class = SpriteSheetFactory2_icons_src; + public static var icons:BitmapData = new icons_src().bitmapData; + private static var metros_src:Class = SpriteSheetFactory2_metros_src; + public static var metros:BitmapData = new metros_src().bitmapData; + private static var stations_src:Class = SpriteSheetFactory2_stations_src; + public static var stations:BitmapData = new stations_src().bitmapData; + public static var spriteSheet:BitmapData; + private static var textBitmapInfo:Vector.; + private static var textfield:CustomTextField; + private static var clearBitmapdata:Boolean; + private static var disposeBitmapdata:Boolean = false; + private static var lastBI:BitmapInfo; + private static var rec0:FastRectangle; + private static var rec1:FastRectangle; + private static var lastIndex:int; + private static var b:BitmapInfo; + private static var _h:int = 0x0400; + private static var width:int; + + public static function makeAtlas(w:int):void{ + width = w; + b = textBitmapInfo[0]; + b.x = 0; + b.y = 0; + _h = b.bitmapData.height; + b = textBitmapInfo[1]; + b.x = textBitmapInfo[0].bitmapData.width; + b.y = 0; + b = textBitmapInfo[2]; + b.x = textBitmapInfo[0].bitmapData.width; + b.y = textBitmapInfo[1].bitmapData.height; + rec0 = new FastRectangle(0, 0, (textBitmapInfo[1].x + textBitmapInfo[1].bitmapData.width), (textBitmapInfo[2].y + textBitmapInfo[2].bitmapData.height)); + rec1 = new FastRectangle(0, 0, textBitmapInfo[0].bitmapData.width, textBitmapInfo[0].bitmapData.height); + lastBI = textBitmapInfo[3]; + lastBI.x = rec0.width; + lastIndex = 4; + placeBitmapData(lastIndex); + draw(); + } + private static function draw():void{ + _h = getNextPowerOfTwo(_h); + if (spriteSheet != null){ + spriteSheet.dispose(); + spriteSheet = null; + }; + spriteSheet = new BitmapData(width, _h, true, 0); + spriteSheet.lock(); + var l:int = textBitmapInfo.length; + var i:int; + while (i < l) { + b = textBitmapInfo[i]; + spriteSheet.copyPixels(b.bitmapData, b.bitmapData.rect, new Point(b.x, b.y)); + UVPicto.textUVs[b.id] = new UVCoord((b.x / width), (b.y / _h), (b.bitmapData.width / width), (b.bitmapData.height / _h), b.bitmapData.width, b.bitmapData.height); + i++; + }; + spriteSheet.unlock(); + } + private static function placeBitmapData(li:int):void{ + var l:int = textBitmapInfo.length; + var i:int = li; + while (i < l) { + b = textBitmapInfo[i]; + if (((lastBI.x + lastBI.bitmapData.width) + b.bitmapData.width) > width){ + if ((lastBI.y + lastBI.bitmapData.height) > rec0.height){ + if ((lastBI.y + lastBI.bitmapData.height) > rec1.height){ + b.x = 0; + } else { + b.x = rec1.width; + }; + b.y = (lastBI.y + lastBI.bitmapData.height); + } else { + b.x = rec0.width; + }; + b.y = (lastBI.y + lastBI.bitmapData.height); + } else { + b.x = (lastBI.x + lastBI.bitmapData.width); + b.y = lastBI.y; + }; + lastBI = b; + if (_h < (b.y + b.bitmapData.height)){ + _h = (b.y + b.bitmapData.height); + }; + i++; + }; + lastIndex = l; + } + public static function getNextPowerOfTwo(n:int):int{ + var result:int = 1; + while (result < n) { + result = (result * 2); + }; + return (result); + } + public static function get texture():BitmapData{ + var bi:BitmapInfo; + if (spriteSheet != null){ + return (spriteSheet); + }; + textfield = new CustomTextField("", "rolloverTrackerLabel"); + textfield.mouseEnabled = false; + textfield.wordWrap = false; + textBitmapInfo = new Vector.(); + bi = new BitmapInfo("icons"); + bi.bitmapData = icons; + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + var berlinXML:XML = + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + var sprite:Sprite = new Sprite(); + var l:int = berlinXML.line.length(); + var i:int; + while (i < l) { + sprite.graphics.beginFill(int(berlinXML.line[i].@color)); + sprite.graphics.drawCircle(((i * 32) + 16), 82, 7); + sprite.graphics.endFill(); + i++; + }; + metros.fillRect(new Rectangle(0, 64, stations.width, 32), 0); + metros.draw(sprite); + sprite.graphics.clear(); + bi = new BitmapInfo("metros"); + bi.bitmapData = metros; + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + l = berlinXML.line.length(); + i = 0; + while (i < l) { + sprite.graphics.beginFill(int(berlinXML.line[i].@color)); + sprite.graphics.drawCircle(((i * 32) + 16), 82, 7); + sprite.graphics.endFill(); + sprite.graphics.beginFill(0); + sprite.graphics.drawCircle(((i * 32) + 16), 82, 4); + sprite.graphics.endFill(); + i++; + }; + sprite.graphics.beginFill(0); + sprite.graphics.drawCircle(((i * 32) + 16), 82, 8); + sprite.graphics.endFill(); + sprite.graphics.beginFill(0xFFFFFF); + sprite.graphics.drawCircle(((i * 32) + 16), 82, 5); + sprite.graphics.endFill(); + stations.fillRect(new Rectangle(0, 64, stations.width, 32), 0); + stations.draw(sprite); + sprite.graphics.clear(); + sprite = null; + bi = new BitmapInfo("stations"); + bi.bitmapData = stations; + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + rasterizeTexts(Places.PARIS); + rasterizeTexts(Places.LONDON); + rasterizeTexts(Places.BERLIN); + makeAtlas(0x0800); + return (spriteSheet); + } + public static function addStations(vec:Vector.):void{ + var bi:BitmapInfo; + var station:MetroStation; + for each (station in vec) { + bi = new BitmapInfo(station.name.toUpperCase()); + textfield.htmlText = bi.id; + bi.bitmapData = new BitmapData(textfield.width, textfield.height, true, 0); + bi.bitmapData.draw(textfield); + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + }; + placeBitmapData(lastIndex); + draw(); + } + private static function rasterizeTexts(v:Vector.):void{ + var bi:BitmapInfo; + var l:int = v.length; + while (l--) { + bi = new BitmapInfo(String(v[l].name).toUpperCase()); + textfield.htmlText = bi.id; + bi.bitmapData = new BitmapData(textfield.width, textfield.height, true, 0); + bi.bitmapData.draw(textfield); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + textBitmapInfo.push(bi); + }; + } + public static function addText(s:String):void{ + var bi:BitmapInfo = new BitmapInfo(s.toUpperCase()); + textfield.text = bi.id; + bi.bitmapData = new BitmapData(textfield.width, textfield.height, true, 0); + bi.bitmapData.draw(textfield); + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + placeBitmapData(lastIndex); + draw(); + } + public static function addTexts(labels:Vector.):void{ + var bi:BitmapInfo; + var l:int = labels.length; + while (l--) { + bi = new BitmapInfo(labels[l]); + textfield.text = bi.id; + bi.bitmapData = new BitmapData(textfield.width, textfield.height, true, 0); + bi.bitmapData.draw(textfield); + textBitmapInfo.push(bi); + bi.bitmapDataRect = new FastRectangle(0, 0, bi.bitmapData.width, bi.bitmapData.height); + }; + placeBitmapData(lastIndex); + draw(); + } + + } +}//package wd.utils + +import flash.display.*; +import flash.geom.*; + +class BitmapInfo { + + public var bitmapData:BitmapData; + public var bitmapDataRect:FastRectangle; + public var id:String; + public var x:uint; + public var y:uint; + public var uvs:Rectangle; + public var rightOccuped:Boolean = false; + public var topOccuped:Boolean = false; + + public function BitmapInfo(_id:String){ + super(); + this.id = _id; + } +} +class FastRectangle { + + public var x:uint; + public var y:uint; + public var width:uint; + public var height:uint; + private var centerX:Number; + private var centerY:Number; + + public function FastRectangle(_x:uint, _y:uint, _w:uint, _h:uint){ + super(); + this.x = _x; + this.y = _y; + this.width = _w; + this.height = _h; + this.centerX = (this.x + (this.width / 2)); + this.centerY = (this.y + (this.height / 2)); + } + public function setWidth(_w:uint):void{ + this.width = _w; + this.centerX = (this.x + (_w / 2)); + } + public function setHeight(_h:uint):void{ + this.height = _h; + this.centerY = (this.y + (_h / 2)); + } + private function abs(n:Number):Number{ + return ((((n < 0)) ? (n * -1) : n)); + } + public function intersects(slotToCheck:FastRectangle):Boolean{ + if ((((this.abs((this.centerX - slotToCheck.centerX)) < (this.abs((this.width + slotToCheck.width)) / 2))) && ((this.abs((this.centerY - slotToCheck.centerY)) < (this.abs((this.height + slotToCheck.height)) / 2))))){ + return (true); + }; + return (false); + } + +} diff --git a/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_icons_src.as b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_icons_src.as new file mode 100644 index 0000000..78f9ab2 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_icons_src.as @@ -0,0 +1,7 @@ +package wd.utils { + import mx.core.*; + + public class SpriteSheetFactory2_icons_src extends BitmapAsset { + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_metros_src.as b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_metros_src.as new file mode 100644 index 0000000..70cc007 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_metros_src.as @@ -0,0 +1,7 @@ +package wd.utils { + import mx.core.*; + + public class SpriteSheetFactory2_metros_src extends BitmapAsset { + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_stations_src.as b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_stations_src.as new file mode 100644 index 0000000..8e41d33 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/SpriteSheetFactory2_stations_src.as @@ -0,0 +1,7 @@ +package wd.utils { + import mx.core.*; + + public class SpriteSheetFactory2_stations_src extends BitmapAsset { + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/Stats.as b/flash_decompiled/watchdog/wd/utils/Stats.as new file mode 100644 index 0000000..ec35018 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/Stats.as @@ -0,0 +1,11 @@ +package wd.utils { + + public class Stats { + + public static var totalPolygoneCount:uint = 0; + + public function Stats(){ + super(); + } + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/StringUtils.as b/flash_decompiled/watchdog/wd/utils/StringUtils.as new file mode 100644 index 0000000..baf1e0b --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/StringUtils.as @@ -0,0 +1,802 @@ +package wd.utils { + + public class StringUtils { + + public function StringUtils(){ + super(); + } + public static function htmlDecode(s:String):String{ + var replacement:Object; + var ch:String; + var semicolonIndex:Number; + var entity:String; + var out:String = ""; + if (s == null){ + return (""); + }; + var matches:Array = s.match(/&#\d+;?/g); + var i:Number = 0; + while (i < matches.length) { + replacement = String.fromCharCode(matches[i].replace(/\D/g, "")); + s = s.replace(/&#\d+;?/, replacement); + i++; + }; + var l:Number = s.length; + i = 0; + while (i < l) { + ch = s.charAt(i); + if (ch == "&"){ + semicolonIndex = s.indexOf(";", (i + 1)); + if (semicolonIndex > 0){ + entity = s.substring((i + 1), semicolonIndex); + switch (entity){ + case "quot": + ch = String.fromCharCode(34); + break; + case "amp": + ch = String.fromCharCode(38); + break; + case "lt": + ch = String.fromCharCode(60); + break; + case "gt": + ch = String.fromCharCode(62); + break; + case "nbsp": + ch = String.fromCharCode(160); + break; + case "iexcl": + ch = String.fromCharCode(161); + break; + case "cent": + ch = String.fromCharCode(162); + break; + case "pound": + ch = String.fromCharCode(163); + break; + case "curren": + ch = String.fromCharCode(164); + break; + case "yen": + ch = String.fromCharCode(165); + break; + case "brvbar": + ch = String.fromCharCode(166); + break; + case "sect": + ch = String.fromCharCode(167); + break; + case "uml": + ch = String.fromCharCode(168); + break; + case "copy": + ch = String.fromCharCode(169); + break; + case "ordf": + ch = String.fromCharCode(170); + break; + case "laquo": + ch = String.fromCharCode(171); + break; + case "not": + ch = String.fromCharCode(172); + break; + case "shy": + ch = String.fromCharCode(173); + break; + case "reg": + ch = String.fromCharCode(174); + break; + case "macr": + ch = String.fromCharCode(175); + break; + case "deg": + ch = String.fromCharCode(176); + break; + case "plusmn": + ch = String.fromCharCode(177); + break; + case "sup2": + ch = String.fromCharCode(178); + break; + case "sup3": + ch = String.fromCharCode(179); + break; + case "acute": + ch = String.fromCharCode(180); + break; + case "micro": + ch = String.fromCharCode(181); + break; + case "para": + ch = String.fromCharCode(182); + break; + case "middot": + ch = String.fromCharCode(183); + break; + case "cedil": + ch = String.fromCharCode(184); + break; + case "sup1": + ch = String.fromCharCode(185); + break; + case "ordm": + ch = String.fromCharCode(186); + break; + case "raquo": + ch = String.fromCharCode(187); + break; + case "frac14": + ch = String.fromCharCode(188); + break; + case "frac12": + ch = String.fromCharCode(189); + break; + case "frac34": + ch = String.fromCharCode(190); + break; + case "iquest": + ch = String.fromCharCode(191); + break; + case "Agrave": + ch = String.fromCharCode(192); + break; + case "Aacute": + ch = String.fromCharCode(193); + break; + case "Acirc": + ch = String.fromCharCode(194); + break; + case "Atilde": + ch = String.fromCharCode(195); + break; + case "Auml": + ch = String.fromCharCode(196); + break; + case "Aring": + ch = String.fromCharCode(197); + break; + case "AElig": + ch = String.fromCharCode(198); + break; + case "Ccedil": + ch = String.fromCharCode(199); + break; + case "Egrave": + ch = String.fromCharCode(200); + break; + case "Eacute": + ch = String.fromCharCode(201); + break; + case "Ecirc": + ch = String.fromCharCode(202); + break; + case "Euml": + ch = String.fromCharCode(203); + break; + case "Igrave": + ch = String.fromCharCode(204); + break; + case "Iacute": + ch = String.fromCharCode(205); + break; + case "Icirc": + ch = String.fromCharCode(206); + break; + case "Iuml": + ch = String.fromCharCode(207); + break; + case "ETH": + ch = String.fromCharCode(208); + break; + case "Ntilde": + ch = String.fromCharCode(209); + break; + case "Ograve": + ch = String.fromCharCode(210); + break; + case "Oacute": + ch = String.fromCharCode(211); + break; + case "Ocirc": + ch = String.fromCharCode(212); + break; + case "Otilde": + ch = String.fromCharCode(213); + break; + case "Ouml": + ch = String.fromCharCode(214); + break; + case "times": + ch = String.fromCharCode(215); + break; + case "Oslash": + ch = String.fromCharCode(216); + break; + case "Ugrave": + ch = String.fromCharCode(217); + break; + case "Uacute": + ch = String.fromCharCode(218); + break; + case "Ucirc": + ch = String.fromCharCode(219); + break; + case "Uuml": + ch = String.fromCharCode(220); + break; + case "Yacute": + ch = String.fromCharCode(221); + break; + case "THORN": + ch = String.fromCharCode(222); + break; + case "szlig": + ch = String.fromCharCode(223); + break; + case "agrave": + ch = String.fromCharCode(224); + break; + case "aacute": + ch = String.fromCharCode(225); + break; + case "acirc": + ch = String.fromCharCode(226); + break; + case "atilde": + ch = String.fromCharCode(227); + break; + case "auml": + ch = String.fromCharCode(228); + break; + case "aring": + ch = String.fromCharCode(229); + break; + case "aelig": + ch = String.fromCharCode(230); + break; + case "ccedil": + ch = String.fromCharCode(231); + break; + case "egrave": + ch = String.fromCharCode(232); + break; + case "eacute": + ch = String.fromCharCode(233); + break; + case "ecirc": + ch = String.fromCharCode(234); + break; + case "euml": + ch = String.fromCharCode(235); + break; + case "igrave": + ch = String.fromCharCode(236); + break; + case "iacute": + ch = String.fromCharCode(237); + break; + case "icirc": + ch = String.fromCharCode(238); + break; + case "iuml": + ch = String.fromCharCode(239); + break; + case "eth": + ch = String.fromCharCode(240); + break; + case "ntilde": + ch = String.fromCharCode(241); + break; + case "ograve": + ch = String.fromCharCode(242); + break; + case "oacute": + ch = String.fromCharCode(243); + break; + case "ocirc": + ch = String.fromCharCode(244); + break; + case "otilde": + ch = String.fromCharCode(245); + break; + case "ouml": + ch = String.fromCharCode(246); + break; + case "divide": + ch = String.fromCharCode(247); + break; + case "oslash": + ch = String.fromCharCode(248); + break; + case "ugrave": + ch = String.fromCharCode(249); + break; + case "uacute": + ch = String.fromCharCode(250); + break; + case "ucirc": + ch = String.fromCharCode(251); + break; + case "uuml": + ch = String.fromCharCode(252); + break; + case "yacute": + ch = String.fromCharCode(253); + break; + case "thorn": + ch = String.fromCharCode(254); + break; + case "yuml": + ch = String.fromCharCode(0xFF); + break; + case "OElig": + ch = String.fromCharCode(338); + break; + case "oelig": + ch = String.fromCharCode(339); + break; + case "Scaron": + ch = String.fromCharCode(352); + break; + case "scaron": + ch = String.fromCharCode(353); + break; + case "Yuml": + ch = String.fromCharCode(376); + break; + case "fnof": + ch = String.fromCharCode(402); + break; + case "circ": + ch = String.fromCharCode(710); + break; + case "tilde": + ch = String.fromCharCode(732); + break; + case "Alpha": + ch = String.fromCharCode(913); + break; + case "Beta": + ch = String.fromCharCode(914); + break; + case "Gamma": + ch = String.fromCharCode(915); + break; + case "Delta": + ch = String.fromCharCode(916); + break; + case "Epsilon": + ch = String.fromCharCode(917); + break; + case "Zeta": + ch = String.fromCharCode(918); + break; + case "Eta": + ch = String.fromCharCode(919); + break; + case "Theta": + ch = String.fromCharCode(920); + break; + case "Iota": + ch = String.fromCharCode(921); + break; + case "Kappa": + ch = String.fromCharCode(922); + break; + case "Lambda": + ch = String.fromCharCode(923); + break; + case "Mu": + ch = String.fromCharCode(924); + break; + case "Nu": + ch = String.fromCharCode(925); + break; + case "Xi": + ch = String.fromCharCode(926); + break; + case "Omicron": + ch = String.fromCharCode(927); + break; + case "Pi": + ch = String.fromCharCode(928); + break; + case " Rho ": + ch = String.fromCharCode(929); + break; + case "Sigma": + ch = String.fromCharCode(931); + break; + case "Tau": + ch = String.fromCharCode(932); + break; + case "Upsilon": + ch = String.fromCharCode(933); + break; + case "Phi": + ch = String.fromCharCode(934); + break; + case "Chi": + ch = String.fromCharCode(935); + break; + case "Psi": + ch = String.fromCharCode(936); + break; + case "Omega": + ch = String.fromCharCode(937); + break; + case "alpha": + ch = String.fromCharCode(945); + break; + case "beta": + ch = String.fromCharCode(946); + break; + case "gamma": + ch = String.fromCharCode(947); + break; + case "delta": + ch = String.fromCharCode(948); + break; + case "epsilon": + ch = String.fromCharCode(949); + break; + case "zeta": + ch = String.fromCharCode(950); + break; + case "eta": + ch = String.fromCharCode(951); + break; + case "theta": + ch = String.fromCharCode(952); + break; + case "iota": + ch = String.fromCharCode(953); + break; + case "kappa": + ch = String.fromCharCode(954); + break; + case "lambda": + ch = String.fromCharCode(955); + break; + case "mu": + ch = String.fromCharCode(956); + break; + case "nu": + ch = String.fromCharCode(957); + break; + case "xi": + ch = String.fromCharCode(958); + break; + case "omicron": + ch = String.fromCharCode(959); + break; + case "pi": + ch = String.fromCharCode(960); + break; + case "rho": + ch = String.fromCharCode(961); + break; + case "sigmaf": + ch = String.fromCharCode(962); + break; + case "sigma": + ch = String.fromCharCode(963); + break; + case "tau": + ch = String.fromCharCode(964); + break; + case "upsilon": + ch = String.fromCharCode(965); + break; + case "phi": + ch = String.fromCharCode(966); + break; + case "chi": + ch = String.fromCharCode(967); + break; + case "psi": + ch = String.fromCharCode(968); + break; + case "omega": + ch = String.fromCharCode(969); + break; + case "thetasym": + ch = String.fromCharCode(977); + break; + case "upsih": + ch = String.fromCharCode(978); + break; + case "piv": + ch = String.fromCharCode(982); + break; + case "ensp": + ch = String.fromCharCode(8194); + break; + case "emsp": + ch = String.fromCharCode(8195); + break; + case "thinsp": + ch = String.fromCharCode(8201); + break; + case "zwnj": + ch = String.fromCharCode(8204); + break; + case "zwj": + ch = String.fromCharCode(8205); + break; + case "lrm": + ch = String.fromCharCode(8206); + break; + case "rlm": + ch = String.fromCharCode(8207); + break; + case "ndash": + ch = String.fromCharCode(8211); + break; + case "mdash": + ch = String.fromCharCode(8212); + break; + case "lsquo": + ch = String.fromCharCode(8216); + break; + case "rsquo": + ch = String.fromCharCode(8217); + break; + case "sbquo": + ch = String.fromCharCode(8218); + break; + case "ldquo": + ch = String.fromCharCode(8220); + break; + case "rdquo": + ch = String.fromCharCode(8221); + break; + case "bdquo": + ch = String.fromCharCode(8222); + break; + case "dagger": + ch = String.fromCharCode(0x2020); + break; + case "Dagger": + ch = String.fromCharCode(8225); + break; + case "bull": + ch = String.fromCharCode(8226); + break; + case "hellip": + ch = String.fromCharCode(8230); + break; + case "permil": + ch = String.fromCharCode(8240); + break; + case "prime": + ch = String.fromCharCode(8242); + break; + case "Prime": + ch = String.fromCharCode(8243); + break; + case "lsaquo": + ch = String.fromCharCode(8249); + break; + case "rsaquo": + ch = String.fromCharCode(8250); + break; + case "oline": + ch = String.fromCharCode(8254); + break; + case "frasl": + ch = String.fromCharCode(8260); + break; + case "euro": + ch = String.fromCharCode(8364); + break; + case "image": + ch = String.fromCharCode(8465); + break; + case "weierp": + ch = String.fromCharCode(8472); + break; + case "real": + ch = String.fromCharCode(8476); + break; + case "trade": + ch = String.fromCharCode(8482); + break; + case "alefsym": + ch = String.fromCharCode(8501); + break; + case "larr": + ch = String.fromCharCode(8592); + break; + case "uarr": + ch = String.fromCharCode(8593); + break; + case "rarr": + ch = String.fromCharCode(8594); + break; + case "darr": + ch = String.fromCharCode(8595); + break; + case "harr": + ch = String.fromCharCode(8596); + break; + case "crarr": + ch = String.fromCharCode(8629); + break; + case "lArr": + ch = String.fromCharCode(8656); + break; + case "uArr": + ch = String.fromCharCode(8657); + break; + case "rArr": + ch = String.fromCharCode(8658); + break; + case "dArr": + ch = String.fromCharCode(8659); + break; + case "hArr": + ch = String.fromCharCode(8660); + break; + case "forall": + ch = String.fromCharCode(0x2200); + break; + case "part": + ch = String.fromCharCode(8706); + break; + case "exist": + ch = String.fromCharCode(8707); + break; + case "empty": + ch = String.fromCharCode(8709); + break; + case "nabla": + ch = String.fromCharCode(8711); + break; + case "isin": + ch = String.fromCharCode(8712); + break; + case "notin": + ch = String.fromCharCode(8713); + break; + case "ni": + ch = String.fromCharCode(8715); + break; + case "prod": + ch = String.fromCharCode(8719); + break; + case "sum": + ch = String.fromCharCode(8721); + break; + case "minus": + ch = String.fromCharCode(8722); + break; + case "lowast": + ch = String.fromCharCode(8727); + break; + case "radic": + ch = String.fromCharCode(8730); + break; + case "prop": + ch = String.fromCharCode(8733); + break; + case "infin": + ch = String.fromCharCode(8734); + break; + case "ang": + ch = String.fromCharCode(8736); + break; + case "and": + ch = String.fromCharCode(8743); + break; + case "or": + ch = String.fromCharCode(8744); + break; + case "cap": + ch = String.fromCharCode(8745); + break; + case "cup": + ch = String.fromCharCode(8746); + break; + case "int": + ch = String.fromCharCode(8747); + break; + case "there4": + ch = String.fromCharCode(8756); + break; + case "sim": + ch = String.fromCharCode(8764); + break; + case "cong": + ch = String.fromCharCode(8773); + break; + case "asymp": + ch = String.fromCharCode(8776); + break; + case "ne": + ch = String.fromCharCode(8800); + break; + case "equiv": + ch = String.fromCharCode(8801); + break; + case "le": + ch = String.fromCharCode(8804); + break; + case "ge": + ch = String.fromCharCode(8805); + break; + case "sub": + ch = String.fromCharCode(8834); + break; + case "sup": + ch = String.fromCharCode(8835); + break; + case "nsub": + ch = String.fromCharCode(8836); + break; + case "sube": + ch = String.fromCharCode(8838); + break; + case "supe": + ch = String.fromCharCode(8839); + break; + case "oplus": + ch = String.fromCharCode(8853); + break; + case "otimes": + ch = String.fromCharCode(8855); + break; + case "perp": + ch = String.fromCharCode(8869); + break; + case "sdot": + ch = String.fromCharCode(8901); + break; + case "lceil": + ch = String.fromCharCode(8968); + break; + case "rceil": + ch = String.fromCharCode(8969); + break; + case "lfloor": + ch = String.fromCharCode(8970); + break; + case "rfloor": + ch = String.fromCharCode(8971); + break; + case "lang": + ch = String.fromCharCode(9001); + break; + case "rang": + ch = String.fromCharCode(9002); + break; + case "loz": + ch = String.fromCharCode(9674); + break; + case "spades": + ch = String.fromCharCode(9824); + break; + case "clubs": + ch = String.fromCharCode(9827); + break; + case "hearts": + ch = String.fromCharCode(9829); + break; + case "diams": + ch = String.fromCharCode(9830); + break; + default: + ch = ""; + }; + i = semicolonIndex; + }; + }; + out = (out + ch); + i++; + }; + return (out); + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/URLFormater.as b/flash_decompiled/watchdog/wd/utils/URLFormater.as new file mode 100644 index 0000000..0ce0e67 --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/URLFormater.as @@ -0,0 +1,152 @@ +package wd.utils { + import wd.core.*; + import wd.http.*; + import flash.net.*; + import flash.events.*; + + public class URLFormater extends EventDispatcher { + + public static const SHARE_TO_TWITTER:String = "SHARE_TO_TWITTER"; + public static const SHARE_TO_FACEBOOK:String = "SHARE_TO_FACEBOOK"; + public static const SHARE_TO_GPLUS:String = "SHARE_TO_L'EXCLU_DE_TOUS"; + + private static var _city:String; + private static var _locale:String; + private static var _appState:String; + private static var _lat:Number; + private static var _long:Number; + private static var _place:String; + private static var _district:String; + private static var _activityType:int; + private static var connection:NetConnection; + private static var responder:Responder; + private static var callback:Function; + + public function URLFormater(){ + super(); + } + public static function get url():String{ + var r:String = (Config.ROOT_URL + "start.php?"); + r = (r + ("locale=" + Config.LOCALE)); + r = (r + ("&app_state=" + AppState.state)); + if (activityType != -1){ + r = (r + ("&place_lon=" + Locator.LONGITUDE)); + r = (r + ("&place_lat=" + Locator.LATITUDE)); + r = (r + ("&place_name=" + DataType.toString(activityType))); + }; + r = (r + ("#/map/" + Config.CITY)); + return (r); + } + public static function changeLanguageUrl(locale:String):String{ + return (((((((Config.ROOT_URL + "start.php?locale=") + locale) + "&city=") + Config.CITY) + "#/map/") + Config.CITY)); + } + public static function changeCityUrl(city:String):String{ + return (((((Config.ROOT_URL + "start.php?locale=") + Config.LOCALE) + "&city=") + city)); + } + public static function shorten(callback:Function, shareTo:String=""):void{ + var u:String = url; + if (shareTo == SHARE_TO_TWITTER){ + u = (u + "&utm_source=share&utm_campaign=wearedata&utm_medium=twitter"); + } else { + if (shareTo == SHARE_TO_FACEBOOK){ + u = (u + "&utm_source=share&utm_campaign=wearedata&utm_medium=facebook"); + } else { + if (shareTo == SHARE_TO_GPLUS){ + u = (u + "&utm_source=share&utm_campaign=wearedata&utm_medium=gplus"); + }; + }; + }; + if (connection == null){ + connection = new NetConnection(); + connection.connect(Config.GATEWAY); + responder = new Responder(onSuccess, onFail); + }; + URLFormater.callback = callback; + connection.call(Service.METHOD_TINYURL, responder, url); + } + public static function shortenURL(specificUrl:String, callback:Function):void{ + if (connection == null){ + connection = new NetConnection(); + connection.connect(Config.GATEWAY); + responder = new Responder(onSuccess, onFail); + }; + URLFormater.callback = callback; + connection.call(Service.METHOD_TINYURL, responder, specificUrl); + } + private static function onSuccess(result):void{ + callback((result as String)); + } + private static function onFail(error):void{ + callback(Config.ROOT_URL); + } + public static function set city(value:String):void{ + _city = value; + } + public static function set locale(value:String):void{ + _locale = value; + } + public static function set appState(value:String):void{ + _appState = value; + } + public static function set lat(value:Number):void{ + _lat = value; + } + public static function set long(value:Number):void{ + _long = value; + } + public static function set place(value:String):void{ + _place = value; + } + public static function get city():String{ + return (_city); + } + public static function get locale():String{ + return (_locale); + } + public static function get place():String{ + return (_place); + } + public static function get district():String{ + return (_district); + } + public static function set district(value:String):void{ + _district = value; + } + public static function get activityType():int{ + return (_activityType); + } + public static function set activityType(value:int):void{ + _activityType = value; + } + public static function setData(data:Object):void{ + var i:String; + for (i in data) { + if (data[i]){ + URLFormater[i] = data[i]; + }; + }; + } + public static function addAnchors(text:String):String{ + var result:String = ""; + var pattern:RegExp = /(?$&"); + }; + if (result == ""){ + result = (result + text); + }; + return (result); + } + public static function replaceTags(input:String):String{ + var r:String = input; + if (place == null){ + place = ""; + }; + r = r.replace("#type#", place); + r = r.replace("#district#", district); + r = r.replace("#city#", city); + return (r); + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/utils/XMLLoader.as b/flash_decompiled/watchdog/wd/utils/XMLLoader.as new file mode 100644 index 0000000..361320e --- /dev/null +++ b/flash_decompiled/watchdog/wd/utils/XMLLoader.as @@ -0,0 +1,46 @@ +package wd.utils { + import flash.net.*; + import flash.events.*; + + public class XMLLoader extends EventDispatcher { + + protected var urlLoader:URLLoader; + protected var _xml:XML; + private var _name:String; + + public function XMLLoader(name:String){ + super(); + this.name = name; + this.urlLoader = new URLLoader(); + this.urlLoader.dataFormat = URLLoaderDataFormat.TEXT; + this.urlLoader.addEventListener(Event.COMPLETE, this.onComplete); + this.urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onError); + } + public function load(url:String):void{ + this.urlLoader.load(new URLRequest(url)); + } + protected function onComplete(event:Event):void{ + this.xml = new XML(event.target.data); + dispatchEvent(new Event(Event.COMPLETE)); + } + protected function onError(event:IOErrorEvent):void{ + dispatchEvent(event); + this.urlLoader.removeEventListener(Event.COMPLETE, this.onComplete); + this.urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, this.onError); + this.urlLoader = null; + } + public function get xml():XML{ + return (this._xml); + } + public function set xml(value:XML):void{ + this._xml = value; + } + public function get name():String{ + return (this._name); + } + public function set name(value:String):void{ + this._name = value; + } + + } +}//package wd.utils diff --git a/flash_decompiled/watchdog/wd/wq/core/WQRenderSupport.as b/flash_decompiled/watchdog/wd/wq/core/WQRenderSupport.as new file mode 100644 index 0000000..18559e4 --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/core/WQRenderSupport.as @@ -0,0 +1,64 @@ +package wd.wq.core { + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.*; + + public class WQRenderSupport { + + private var mProjectionMatrix:Matrix3D; + private var mModelViewMatrix:Matrix3D; + private var mMatrixStack:Vector.; + + public function WQRenderSupport(){ + super(); + this.mMatrixStack = new []; + this.mProjectionMatrix = new Matrix3D(); + this.mModelViewMatrix = new Matrix3D(); + this.loadIdentity(); + this.setOrthographicProjection(400, 300); + } + public function setOrthographicProjection(width:Number, height:Number, near:Number=-1, far:Number=1):void{ + var coords:Vector. = new [(2 / width), 0, 0, 0, 0, (-2 / height), 0, 0, 0, 0, (-2 / (far - near)), 0, -1, 1, (-((far + near)) / (far - near)), 1]; + this.mProjectionMatrix.copyRawDataFrom(coords); + } + public function loadIdentity():void{ + this.mModelViewMatrix.identity(); + } + public function translateMatrix(dx:Number, dy:Number, dz:Number=0):void{ + this.mModelViewMatrix.prependTranslation(dx, dy, dz); + } + public function rotateMatrix(angle:Number, axis:Vector3D=null):void{ + this.mModelViewMatrix.prependRotation(((angle / Math.PI) * 180), (((axis == null)) ? Vector3D.Z_AXIS : axis)); + } + public function scaleMatrix(sx:Number, sy:Number, sz:Number=1):void{ + this.mModelViewMatrix.prependScale(sx, sy, sz); + } + public function pushMatrix():void{ + this.mMatrixStack.push(this.mModelViewMatrix.clone()); + } + public function popMatrix():void{ + this.mModelViewMatrix = this.mMatrixStack.pop(); + } + public function resetMatrix():void{ + if (this.mMatrixStack.length != 0){ + this.mMatrixStack = new []; + }; + this.loadIdentity(); + } + public function get mvpMatrix():Matrix3D{ + var mvpMatrix:Matrix3D = new Matrix3D(); + mvpMatrix.append(this.mModelViewMatrix); + mvpMatrix.append(this.mProjectionMatrix); + return (mvpMatrix); + } + public function setDefaultBlendFactors(premultipliedAlpha:Boolean):void{ + var destFactor:String = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA; + var sourceFactor:String = ((premultipliedAlpha) ? Context3DBlendFactor.ONE : Context3DBlendFactor.SOURCE_ALPHA); + WatchQuads.context.setBlendFactors(sourceFactor, destFactor); + } + public function clear(rgb:uint=0, alpha:Number=0):void{ + WatchQuads.context.clear((((rgb >> 16) & 0xFF) / 0xFF), (((rgb >> 8) & 0xFF) / 0xFF), ((rgb & 0xFF) / 0xFF), alpha); + } + + } +}//package wd.wq.core diff --git a/flash_decompiled/watchdog/wd/wq/core/WatchQuads.as b/flash_decompiled/watchdog/wd/wq/core/WatchQuads.as new file mode 100644 index 0000000..3614c37 --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/core/WatchQuads.as @@ -0,0 +1,178 @@ +package wd.wq.core { + import flash.display3D.*; + import wd.wq.display.*; + import flash.utils.*; + import __AS3__.vec.*; + import flash.events.*; + import flash.display.*; + import flash.geom.*; + import flash.text.*; + + public class WatchQuads extends EventDispatcher { + + public static const READY:String = "READY"; + public static const ON_ERROR:String = "ON_ERROR"; + + private static var _current:WatchQuads; + + private var stage:Stage; + private var _viewPort:Rectangle; + private var stage3D:Stage3D; + private var antiAliasing:int = 0; + private var renderMode:String = "auto"; + private var context:Context3D; + private var enableErrorChecking:Boolean = false; + private var programs:Dictionary; + private var mSupport:WQRenderSupport; + private var shareContext:Boolean = false; + private var quads:Vector.; + + public function WatchQuads(stage:Stage, viewPort:Rectangle, _stage3D:Stage3D=null, stage3DIndex:int=0){ + var stage:* = stage; + var viewPort:* = viewPort; + var _stage3D = _stage3D; + var stage3DIndex:int = stage3DIndex; + super(); + this._viewPort = viewPort; + this.stage = stage; + if (_stage3D == null){ + this.shareContext = false; + this.stage3D = stage.stage3Ds[stage3DIndex]; + } else { + this.shareContext = true; + this.stage3D = _stage3D; + }; + trace("stage3D", this.stage3D); + if (_current == null){ + this.makeCurrent(); + }; + this.programs = new Dictionary(); + this.mSupport = new WQRenderSupport(); + this.quads = new Vector.(); + if (this.shareContext){ + this.context = this.stage3D.context3D; + this.initializePrograms(); + } else { + this.stage3D.addEventListener(Event.CONTEXT3D_CREATE, this.onContextCreated, false, 0, true); + this.stage3D.addEventListener(ErrorEvent.ERROR, this.onStage3DError, false, 0, true); + try { + this.stage3D.requestContext3D(this.renderMode); + } catch(e:Error) { + showFatalError(("Context3D error: " + e.message)); + }; + }; + } + public static function get current():WatchQuads{ + return (_current); + } + public static function get context():Context3D{ + return (current.context); + } + + public function addQuad(q:WQuad):void{ + this.quads.push(q); + } + public function removeQuad(id:int):Boolean{ + var l:int = this.quads.length; + while (l--) { + if (this.quads[l].id == id){ + this.quads.splice(l, 1); + return (true); + }; + }; + return (false); + } + public function render():void{ + this.startRender(); + var l:int = this.quads.length; + while (l--) { + this.quads[l].render(this.mSupport); + }; + this.finishRender(); + } + public function startRender():void{ + if (this.context == null){ + return; + }; + this.mSupport.setOrthographicProjection(this._viewPort.width, this._viewPort.height); + this.mSupport.setDefaultBlendFactors(true); + if (!(this.shareContext)){ + this.mSupport.clear(0xCCCCCC, 0); + }; + } + public function finishRender():void{ + if (!(this.shareContext)){ + this.context.present(); + }; + this.mSupport.resetMatrix(); + } + public function makeCurrent():void{ + _current = this; + } + public function getProgram(name:String):Program3D{ + return ((this.programs[name] as Program3D)); + } + public function registerProgram(name:String, vertexProgram:ByteArray, fragmentProgram:ByteArray):void{ + if (this.programs.hasOwnProperty(name)){ + throw (new Error("Another program with this name is already registered")); + }; + var program:Program3D = this.context.createProgram(); + program.upload(vertexProgram, fragmentProgram); + this.programs[name] = program; + } + private function initializePrograms():void{ + Image3D.registerPrograms(this); + WQuad.registerPrograms(this); + } + private function initializeGraphicsAPI():void{ + if (this.context){ + return; + }; + trace("stage3D", this.stage3D); + trace("stage3D.context3D", this.stage3D.context3D); + this.context = this.stage3D.context3D; + this.showFatalError(this.context.driverInfo); + this.context.enableErrorChecking = this.enableErrorChecking; + this.updateViewPort(); + } + private function onContextCreated(event:Event):void{ + this.initializeGraphicsAPI(); + this.initializePrograms(); + dispatchEvent(new Event(READY)); + } + private function onStage3DError(event:ErrorEvent):void{ + this.showFatalError("This application is not correctly embedded (wrong wmode value) please change the wmode to \"direct\""); + dispatchEvent(new Event(ON_ERROR)); + } + public function get viewPort():Rectangle{ + return (this._viewPort); + } + public function set viewPort(value:Rectangle):void{ + this._viewPort = value; + this.updateViewPort(); + } + private function updateViewPort():void{ + if (this.context){ + this.context.configureBackBuffer(this.viewPort.width, this.viewPort.height, this.antiAliasing, false); + }; + this.stage3D.x = this.viewPort.x; + this.stage3D.y = this.viewPort.y; + } + private function showFatalError(message:String):void{ + var textField:TextField = new TextField(); + var textFormat:TextFormat = new TextFormat("Verdana", 12, 0xFFFFFF); + textFormat.align = TextFormatAlign.CENTER; + textField.defaultTextFormat = textFormat; + textField.wordWrap = true; + textField.width = (this.stage.stageWidth * 0.75); + textField.autoSize = TextFieldAutoSize.CENTER; + textField.text = message; + textField.x = ((this.stage.stageWidth - textField.width) / 2); + textField.y = ((this.stage.stageHeight - textField.height) / 2); + textField.background = true; + textField.backgroundColor = 0x440000; + this.stage.addChild(textField); + } + + } +}//package wd.wq.core diff --git a/flash_decompiled/watchdog/wd/wq/datas/UVCoord.as b/flash_decompiled/watchdog/wd/wq/datas/UVCoord.as new file mode 100644 index 0000000..3d50a1f --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/datas/UVCoord.as @@ -0,0 +1,26 @@ +package wd.wq.datas { + + public class UVCoord { + + public var x:Number; + public var y:Number; + public var xC:Number; + public var yC:Number; + public var realW:Number; + public var realH:Number; + + public function UVCoord(_x:Number, _y:Number, _w:Number, _h:Number, _rw:Number=0, _rh:Number=0){ + super(); + this.x = _x; + this.y = _y; + this.xC = (_x + _w); + this.yC = (_y + _h); + this.realW = _rw; + this.realH = _rh; + } + public function toString():String{ + return (((((((("UVCoord x:" + this.x) + " y:") + this.y) + " xCorner:") + this.xC) + " yCorner:") + this.yC)); + } + + } +}//package wd.wq.datas diff --git a/flash_decompiled/watchdog/wd/wq/display/Image3D.as b/flash_decompiled/watchdog/wd/wq/display/Image3D.as new file mode 100644 index 0000000..db22a06 --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/display/Image3D.as @@ -0,0 +1,168 @@ +package wd.wq.display { + import com.adobe.utils.*; + import flash.display3D.*; + import wd.wq.textures.*; + import wd.wq.core.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.textures.*; + + public class Image3D { + + private var mTexture:WQConcreteTexture; + private var mSmoothing:String; + private var vertices:Vector.; + private var vertexbuffer:VertexBuffer3D; + private var indexbuffer:IndexBuffer3D; + public var x:Number = 0; + public var y:Number = 0; + public var width:Number = 0; + public var height:Number = 0; + public var rotation:Number = 0; + public var scaleX:Number = 1; + public var scaleY:Number = 1; + private var _matrix:Matrix3D; + private var deltay:Number; + private var deltax:Number; + private var verticesInit:Vector.; + private var lastIsUVA:Boolean = false; + + public function Image3D(texture:WQConcreteTexture){ + this.verticesInit = Vector.([0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0]); + super(); + this._matrix = new Matrix3D(); + this.vertices = Vector.([0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0]); + this.mTexture = texture; + this.width = texture.width; + this.height = texture.height; + this.mSmoothing = WQTextureSmoothing.NONE; + } + public static function registerPrograms(target:WatchQuads):void{ + var repeat:Boolean; + var mipmap:Boolean; + var smoothing:String; + var options:Array; + var vertexProgramCode:String = ("m44 op, va0, vc0 \n" + "mov v0, va1"); + var fragmentProgramCode:String = "tex oc, v0, fs0 \n"; + var vertexProgramAssembler:AGALMiniAssembler = new AGALMiniAssembler(); + vertexProgramAssembler.assemble(Context3DProgramType.VERTEX, vertexProgramCode); + var fragmentProgramAssembler:AGALMiniAssembler = new AGALMiniAssembler(); + var smoothingTypes:Array = [WQTextureSmoothing.NONE, WQTextureSmoothing.BILINEAR, WQTextureSmoothing.TRILINEAR]; + for each (repeat in [true, false]) { + for each (mipmap in [true, false]) { + for each (smoothing in smoothingTypes) { + options = ["2d", ((repeat) ? "repeat" : "clamp")]; + if (smoothing == WQTextureSmoothing.NONE){ + options.push("nearest", ((mipmap) ? "mipnearest" : "mipnone")); + } else { + if (smoothing == WQTextureSmoothing.BILINEAR){ + options.push("linear", ((mipmap) ? "mipnearest" : "mipnone")); + } else { + options.push("linear", ((mipmap) ? "miplinear" : "mipnone")); + }; + }; + fragmentProgramAssembler.assemble(Context3DProgramType.FRAGMENT, fragmentProgramCode.replace("???", options.join())); + target.registerProgram(getProgramName(mipmap, repeat, smoothing), vertexProgramAssembler.agalcode, fragmentProgramAssembler.agalcode); + }; + }; + }; + } + public static function getProgramName(mipMap:Boolean=false, repeat:Boolean=false, smoothing:String="bilinear"):String{ + var name:String = "image|"; + if (!(mipMap)){ + name = (name + "N"); + }; + if (repeat){ + name = (name + "R"); + }; + if (smoothing != WQTextureSmoothing.BILINEAR){ + name = (name + smoothing.charAt(0)); + }; + return (name); + } + + public function setUVA(uvArea:Rectangle, bound:Rectangle):void{ + this.width = 1; + this.height = 1; + this.vertices = Vector.([0, 0, 0, uvArea.x, uvArea.y, 0, bound.height, 0, uvArea.x, (uvArea.y + uvArea.height), bound.width, bound.height, 0, (uvArea.x + uvArea.width), (uvArea.y + uvArea.height), bound.width, 0, 0, (uvArea.x + uvArea.width), uvArea.y]); + if (this.vertexbuffer != null){ + this.vertexbuffer.dispose(); + this.vertexbuffer = null; + }; + this.lastIsUVA = true; + } + public function getWorldTransform():Matrix3D{ + this._matrix.identity(); + this._matrix.appendScale((this.width * this.scaleX), (this.height * this.scaleY), 1); + if (this.rotation != 0){ + this._matrix.appendTranslation(this.deltax, this.deltay, 0); + this._matrix.appendRotation(((this.rotation * 180) / Math.PI), Vector3D.Z_AXIS); + this._matrix.appendTranslation(-(this.deltax), -(this.deltay), 0); + }; + this._matrix.appendTranslation(this.x, this.y, 0); + return (this._matrix); + } + public function setTexture(texture:WQConcreteTexture):void{ + this.mTexture = texture; + this.width = texture.width; + this.height = texture.height; + } + public function setPos(_x:Number, _y:Number):void{ + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.vertices = this.verticesInit; + if (((!((this.vertexbuffer == null))) && (this.lastIsUVA))){ + this.lastIsUVA = false; + this.vertexbuffer.dispose(); + this.vertexbuffer = null; + }; + this.x = _x; + this.y = _y; + } + public function setRotation(_x:Number, _y:Number, _r:Number=0):void{ + this.rotation = _r; + this.deltax = _x; + this.deltay = _y; + } + public function setUV(w:Number, h:Number):void{ + this.width = (this.width * (1 / w)); + this.height = (this.height * (1 / h)); + } + public function setScale(sx:Number, sy:Number):void{ + this.scaleX = sx; + this.scaleY = sy; + } + private function createVertexBuffer(context:Context3D):void{ + this.vertexbuffer = context.createVertexBuffer(4, 5); + this.vertexbuffer.uploadFromVector(this.vertices, 0, 4); + } + private function createIndexBuffer(context:Context3D):void{ + this.indexbuffer = context.createIndexBuffer(6); + this.indexbuffer.uploadFromVector(Vector.([0, 1, 2, 2, 3, 0]), 0, 6); + } + public function render(support:WQRenderSupport, nativeTexture:Texture=null):void{ + var programName:String = getProgramName(false, false, "none"); + var context:Context3D = WatchQuads.context; + if (this.vertexbuffer == null){ + this.createVertexBuffer(context); + }; + if (this.indexbuffer == null){ + this.createIndexBuffer(context); + }; + this._matrix = this.getWorldTransform(); + this._matrix.append(support.mvpMatrix); + support.setDefaultBlendFactors(true); + context.setProgram(WatchQuads.current.getProgram(programName)); + context.setTextureAt(0, this.mTexture.base); + context.setVertexBufferAt(0, this.vertexbuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, this.vertexbuffer, 3, Context3DVertexBufferFormat.FLOAT_2); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, this._matrix, true); + context.drawTriangles(this.indexbuffer, 0, 2); + context.setTextureAt(0, null); + context.setVertexBufferAt(0, null); + context.setVertexBufferAt(1, null); + } + + } +}//package wd.wq.display diff --git a/flash_decompiled/watchdog/wd/wq/display/WQuad.as b/flash_decompiled/watchdog/wd/wq/display/WQuad.as new file mode 100644 index 0000000..2af4352 --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/display/WQuad.as @@ -0,0 +1,195 @@ +package wd.wq.display { + import com.adobe.utils.*; + import flash.display3D.*; + import wd.wq.textures.*; + import wd.wq.core.*; + import __AS3__.vec.*; + import flash.geom.*; + import flash.display3D.textures.*; + + public class WQuad { + + private static var ID:int = 0; + + private var _id:int; + private var mTexture:WQConcreteTexture; + private var mSmoothing:String; + private var vertices:Vector.; + private var indices:Vector.; + private var vertexbuffer:VertexBuffer3D; + private var indexbuffer:IndexBuffer3D; + private var vindex:int = 0; + private var iindex:int = 0; + private var _matrix:Matrix3D; + private var programName:String; + private var context:Context3D; + private var clearEachFrame:Boolean; + + public function WQuad(texture:WQConcreteTexture, clearEachFrame:Boolean=false){ + this.vertices = new Vector.(); + this.indices = new Vector.(); + this._matrix = new Matrix3D(); + super(); + this.clearEachFrame = clearEachFrame; + this.mTexture = texture; + this.mSmoothing = WQTextureSmoothing.NONE; + this.programName = getProgramName(); + this.context = WatchQuads.context; + this._id = ID++; + } + public static function registerPrograms(target:WatchQuads):void{ + var repeat:Boolean; + var mipmap:Boolean; + var smoothing:String; + var options:Array; + var vertexProgramCode:String = ("m44 op, va0, vc0 \n" + "mov v0, va1"); + var fragmentProgramCode:String = "tex oc, v0, fs0 \n"; + var vertexProgramAssembler:AGALMiniAssembler = new AGALMiniAssembler(); + vertexProgramAssembler.assemble(Context3DProgramType.VERTEX, vertexProgramCode); + var fragmentProgramAssembler:AGALMiniAssembler = new AGALMiniAssembler(); + var smoothingTypes:Array = [WQTextureSmoothing.NONE, WQTextureSmoothing.BILINEAR, WQTextureSmoothing.TRILINEAR]; + for each (repeat in [true, false]) { + for each (mipmap in [true, false]) { + for each (smoothing in smoothingTypes) { + options = ["2d", ((repeat) ? "repeat" : "clamp")]; + if (smoothing == WQTextureSmoothing.NONE){ + options.push("nearest", ((mipmap) ? "mipnearest" : "mipnone")); + } else { + if (smoothing == WQTextureSmoothing.BILINEAR){ + options.push("linear", ((mipmap) ? "mipnearest" : "mipnone")); + } else { + options.push("linear", ((mipmap) ? "miplinear" : "mipnone")); + }; + }; + fragmentProgramAssembler.assemble(Context3DProgramType.FRAGMENT, fragmentProgramCode.replace("???", options.join())); + target.registerProgram(getProgramName(mipmap, repeat, smoothing), vertexProgramAssembler.agalcode, fragmentProgramAssembler.agalcode); + }; + }; + }; + } + public static function getProgramName(mipMap:Boolean=false, repeat:Boolean=false, smoothing:String="none"):String{ + var name:String = "quad|"; + if (!(mipMap)){ + name = (name + "N"); + }; + if (repeat){ + name = (name + "R"); + }; + if (smoothing != WQTextureSmoothing.BILINEAR){ + name = (name + smoothing.charAt(0)); + }; + return (name); + } + + public function set texture(texture:WQConcreteTexture):void{ + if (this.mTexture != null){ + this.mTexture.dispose(); + this.mTexture = null; + }; + this.mTexture = texture; + } + public function get id():int{ + return (this._id); + } + public function add(x:Number, y:Number, w:Number, h:Number, uvxStart:Number=0, uvyStart:Number=0, uvxEnd:Number=1, uvyEnd:Number=1):void{ + this.vindex = this.vertices.length; + var _local9 = this.vindex++; + this.vertices[_local9] = x; + var _local10 = this.vindex++; + this.vertices[_local10] = y; + var _local11 = this.vindex++; + this.vertices[_local11] = 0; + var _local12 = this.vindex++; + this.vertices[_local12] = uvxStart; + var _local13 = this.vindex++; + this.vertices[_local13] = uvyStart; + var _local14 = this.vindex++; + this.vertices[_local14] = x; + var _local15 = this.vindex++; + this.vertices[_local15] = (y + h); + var _local16 = this.vindex++; + this.vertices[_local16] = 0; + var _local17 = this.vindex++; + this.vertices[_local17] = uvxStart; + var _local18 = this.vindex++; + this.vertices[_local18] = uvyEnd; + var _local19 = this.vindex++; + this.vertices[_local19] = (x + w); + var _local20 = this.vindex++; + this.vertices[_local20] = (y + h); + var _local21 = this.vindex++; + this.vertices[_local21] = 0; + var _local22 = this.vindex++; + this.vertices[_local22] = uvxEnd; + var _local23 = this.vindex++; + this.vertices[_local23] = uvyEnd; + var _local24 = this.vindex++; + this.vertices[_local24] = (x + w); + var _local25 = this.vindex++; + this.vertices[_local25] = y; + var _local26 = this.vindex++; + this.vertices[_local26] = 0; + var _local27 = this.vindex++; + this.vertices[_local27] = uvxEnd; + var _local28 = this.vindex++; + this.vertices[_local28] = uvyStart; + this.vindex = ((this.vertices.length / 5) - 4); + this.indices.push(this.vindex, (this.vindex + 1), (this.vindex + 2), (this.vindex + 2), (this.vindex + 3), this.vindex); + this.iindex = this.indices.length; + this.vindex = (this.vertices.length / 5); + } + public function clear():void{ + this.vertices.length = 0; + this.vindex = 0; + this.indices.length = 0; + this.iindex = 0; + this.vertices = new Vector.(); + this.indices = new Vector.(); + } + private function createVertexBuffer(context:Context3D):void{ + if (this.vertexbuffer != null){ + this.vertexbuffer.dispose(); + this.vertexbuffer = null; + }; + this.vertexbuffer = context.createVertexBuffer(this.vindex, 5); + this.vertexbuffer.uploadFromVector(this.vertices, 0, this.vindex); + } + private function createIndexBuffer(context:Context3D):void{ + if (this.indexbuffer != null){ + this.indexbuffer.dispose(); + this.indexbuffer = null; + }; + this.indexbuffer = context.createIndexBuffer(this.iindex); + this.indexbuffer.uploadFromVector(this.indices, 0, this.iindex); + } + public function getWorldTransform():Matrix3D{ + this._matrix.identity(); + return (this._matrix); + } + public function render(support:WQRenderSupport, nativeTexture:Texture=null):void{ + if (this.vertices.length == 0){ + return; + }; + var context:Context3D = WatchQuads.context; + this.createVertexBuffer(context); + this.createIndexBuffer(context); + support.setDefaultBlendFactors(true); + context.setProgram(WatchQuads.current.getProgram(this.programName)); + context.setDepthTest(false, Context3DCompareMode.ALWAYS); + context.setCulling(Context3DTriangleFace.NONE); + context.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); + context.setTextureAt(0, this.mTexture.base); + context.setVertexBufferAt(0, this.vertexbuffer, 0, Context3DVertexBufferFormat.FLOAT_3); + context.setVertexBufferAt(1, this.vertexbuffer, 3, Context3DVertexBufferFormat.FLOAT_2); + context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, support.mvpMatrix, true); + context.drawTriangles(this.indexbuffer, 0, (this.indices.length / 3)); + context.setTextureAt(0, null); + context.setVertexBufferAt(0, null); + context.setVertexBufferAt(1, null); + if (this.clearEachFrame){ + this.clear(); + }; + } + + } +}//package wd.wq.display diff --git a/flash_decompiled/watchdog/wd/wq/textures/WQConcreteTexture.as b/flash_decompiled/watchdog/wd/wq/textures/WQConcreteTexture.as new file mode 100644 index 0000000..0b4f3df --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/textures/WQConcreteTexture.as @@ -0,0 +1,51 @@ +package wd.wq.textures { + import flash.display3D.textures.*; + + public class WQConcreteTexture { + + private var mBase:Texture; + private var mWidth:int; + private var mHeight:int; + private var mLegalWidth:int; + private var mLegalHeight:int; + private var mScaleWidth:Number; + private var mScaleHeight:Number; + + public function WQConcreteTexture(base:Texture, width:int, height:int, legalWidth:int=2, legalHeight:int=2){ + super(); + this.mLegalHeight = legalHeight; + this.mLegalWidth = legalWidth; + this.mBase = base; + this.mWidth = width; + this.mHeight = height; + this.mScaleWidth = (this.mWidth / this.mLegalWidth); + this.mScaleHeight = (this.mHeight / this.mLegalHeight); + } + public function get base():Texture{ + return (this.mBase); + } + public function get width():Number{ + return (this.mWidth); + } + public function get height():Number{ + return (this.mHeight); + } + public function get legalWidth():Number{ + return (this.mLegalWidth); + } + public function get legalHeight():Number{ + return (this.mLegalHeight); + } + public function get scaleWidth():Number{ + return (this.mScaleWidth); + } + public function get scaleHeight():Number{ + return (this.mScaleHeight); + } + public function dispose():void{ + this.mBase.dispose(); + this.mBase = null; + } + + } +}//package wd.wq.textures diff --git a/flash_decompiled/watchdog/wd/wq/textures/WQTexture.as b/flash_decompiled/watchdog/wd/wq/textures/WQTexture.as new file mode 100644 index 0000000..bcedd7b --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/textures/WQTexture.as @@ -0,0 +1,82 @@ +package wd.wq.textures { + import flash.display3D.textures.*; + import flash.display.*; + import wd.wq.core.*; + import flash.display3D.*; + + public class WQTexture { + + private var mRepeat:Boolean; + + public function WQTexture(){ + super(); + this.mRepeat = false; + } + static function uploadBitmapData(nativeTexture:Texture, data:BitmapData, generateMipmaps:Boolean):void{ + nativeTexture.uploadFromBitmapData(data); + } + public static function fromColor(width:int, height:int, color:uint=0xFFFFFFFF, optimizeForRenderToTexture:Boolean=false):WQConcreteTexture{ + var bitmapData:BitmapData = new BitmapData(width, height, true, color); + var texture:WQConcreteTexture = fromBitmapData(bitmapData, false, optimizeForRenderToTexture); + bitmapData.dispose(); + return (texture); + } + public static function getNextPowerOfTwo(number:int):int{ + var result:int; + if ((((number > 0)) && (((number & (number - 1)) == 0)))){ + return (number); + }; + result = 1; + while (result < number) { + result = (result << 1); + }; + return (result); + } + public static function fromBitmapData(data:BitmapData, generateMipMaps:Boolean=false, optimizeForRenderToTexture:Boolean=false, scale:Number=1):WQConcreteTexture{ + var origWidth:int = data.width; + var origHeight:int = data.height; + var legalWidth:int = getNextPowerOfTwo(origWidth); + var legalHeight:int = getNextPowerOfTwo(origHeight); + var context:Context3D = WatchQuads.context; + var nativeTexture:Texture = context.createTexture(legalWidth, legalHeight, Context3DTextureFormat.BGRA, optimizeForRenderToTexture); + uploadBitmapData(nativeTexture, data, generateMipMaps); + var concreteTexture:WQConcreteTexture = new WQConcreteTexture(nativeTexture, origWidth, origHeight, legalWidth, legalHeight); + return (concreteTexture); + } + + public function get repeat():Boolean{ + return (this.mRepeat); + } + public function set repeat(value:Boolean):void{ + this.mRepeat = value; + } + public function get width():Number{ + return (0); + } + public function get height():Number{ + return (0); + } + public function get nativeWidth():Number{ + return (0); + } + public function get nativeHeight():Number{ + return (0); + } + public function get scale():Number{ + return (1); + } + public function get base():TextureBase{ + return (null); + } + public function get format():String{ + return (Context3DTextureFormat.BGRA); + } + public function get mipMapping():Boolean{ + return (false); + } + public function get premultipliedAlpha():Boolean{ + return (false); + } + + } +}//package wd.wq.textures diff --git a/flash_decompiled/watchdog/wd/wq/textures/WQTextureSmoothing.as b/flash_decompiled/watchdog/wd/wq/textures/WQTextureSmoothing.as new file mode 100644 index 0000000..6860618 --- /dev/null +++ b/flash_decompiled/watchdog/wd/wq/textures/WQTextureSmoothing.as @@ -0,0 +1,17 @@ +package wd.wq.textures { + + public class WQTextureSmoothing { + + public static const NONE:String = "none"; + public static const BILINEAR:String = "bilinear"; + public static const TRILINEAR:String = "trilinear"; + + public function WQTextureSmoothing(){ + super(); + } + public static function isValid(smoothing:String):Boolean{ + return ((((((smoothing == NONE)) || ((smoothing == BILINEAR)))) || ((smoothing == TRILINEAR)))); + } + + } +}//package wd.wq.textures diff --git a/img/share/ubisoft-watchdogs-wearedata-logo.jpg b/img/share/ubisoft-watchdogs-wearedata-logo.jpg new file mode 100644 index 0000000..aef3972 Binary files /dev/null and b/img/share/ubisoft-watchdogs-wearedata-logo.jpg differ diff --git a/index.htm b/index.htm new file mode 100644 index 0000000..b49051e --- /dev/null +++ b/index.htm @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + Watch_Dogs WeAreData + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+
+

ABOUT WATCH_DOGS WeareData

+
+
+

In the video game Watch_Dogs, the city of Chicago is run by a Central Operating System (CTOS). This system use data to manage the entire city and to solve complex problems. Traffic jams, war against crime, power management...

+

This is not fiction anymore. Smart cities are + real, it’s happening now. A huge amount of data is collected and +managed every day in our modern cities, and those data are available for + everybody.

+

Watch_Dogs WeareData is the first website to gather publicly available data about Paris, London and Berlin, + in one location. Each of the three towns is recreated on a 3D map, +allowing the user to discover the data that organizes and runs modern +cities today, in real time. It also displays information about the +inhabitants of these cities, via their social media activity.

+
+
+

What you will discover here are only facts and reality.

+

Watch_Dogs WeareData gathers available geolocated data + in a non-exhaustive way: we only display the information for which we +have been given the authorization by the sources. Yet, it is already a +huge amount of data. You may even watch what other users are looking at +on the website through Facebook connect.

+
+
+
+

If you are interested in this subject, we’d love to get your feedback about the website and about our connected world.

+

Everyone has their part to play and their word to say.

+

Stay connected and join the conversation on social media through the Watch_Dogs Facebook page or through Twitter using the hashtag #watchdogs.

+
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/index_files/FlashObject.js b/index_files/FlashObject.js new file mode 100644 index 0000000..9c0dbfe --- /dev/null +++ b/index_files/FlashObject.js @@ -0,0 +1,4 @@ +/** + * + */ +FlashObject=function(){function e(e,t){return Array.prototype.slice.call(e,t||0)}function t(t){this.cfg=e(arguments)}var n=t.prototype;return n.init=function(){swfobject.embedSWF.apply(swfobject,this.cfg)},n.onReady=function(){this.isReady=!0},n.onProgress=function(e){},n.onLoaded=function(){this.isLoaded=!0},t}() \ No newline at end of file diff --git a/index_files/TweenMax.js b/index_files/TweenMax.js new file mode 100644 index 0000000..3b87a41 --- /dev/null +++ b/index_files/TweenMax.js @@ -0,0 +1,16 @@ +/*! + * VERSION: beta 1.9.7 + * DATE: 2013-05-16 + * UPDATES AND DOCS AT: http://www.greensock.com + * + * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin + * + * @license Copyright (c) 2008-2013, GreenSock. All rights reserved. + * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +(window._gsQueue||(window._gsQueue=[])).push(function(){"use strict";window._gsDefine("TweenMax",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=[].slice,r=function(t,e,s){i.call(this,t,e,s),this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._dirty=!0},n=function(t){return t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style},a=r.prototype=i.to({},.1,{}),o=[];r.version="1.9.7",a.constructor=r,a.kill()._gc=!1,r.killTweensOf=r.killDelayedCallsTo=i.killTweensOf,r.getTweensOf=i.getTweensOf,r.ticker=i.ticker,a.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),i.prototype.invalidate.call(this)},a.updateTo=function(t,e){var s,r=this.ratio;e&&this.timeline&&this._startTime.998){var n=this._time;this.render(0,!0,!1),this._initted=!1,this.render(n,!0,!1)}else if(this._time>0){this._initted=!1,this._init();for(var a,o=1/(1-r),h=this._firstPT;h;)a=h.s+h.c,h.c*=o,h.s=a-h.c,h=h._next}return this},a.render=function(t,e,i){var s,r,n,a,h,l,_,u=this._dirty?this.totalDuration():this._totalDuration,p=this._time,f=this._totalTime,c=this._cycle;if(t>=u?(this._totalTime=u,this._cycle=this._repeat,this._yoyo&&0!==(1&this._cycle)?(this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0):(this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1),this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t)):1e-7>t?(this._totalTime=this._time=this._cycle=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==f||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0)):(this._totalTime=this._time=t,0!==this._repeat&&(a=this._duration+this._repeatDelay,this._cycle=this._totalTime/a>>0,0!==this._cycle&&this._cycle===this._totalTime/a&&this._cycle--,this._time=this._totalTime-this._cycle*a,this._yoyo&&0!==(1&this._cycle)&&(this._time=this._duration-this._time),this._time>this._duration?this._time=this._duration:0>this._time&&(this._time=0)),this._easeType?(h=this._time/this._duration,l=this._easeType,_=this._easePower,(1===l||3===l&&h>=.5)&&(h=1-h),3===l&&(h*=2),1===_?h*=h:2===_?h*=h*h:3===_?h*=h*h*h:4===_&&(h*=h*h*h*h),this.ratio=1===l?1-h:2===l?h:.5>this._time/this._duration?h/2:1-h/2):this.ratio=this._ease.getRatio(this._time/this._duration)),p===this._time&&!i)return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),void 0;if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===f&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._totalTime||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||o))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),this._cycle!==c&&(e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||o)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||o)))},r.to=function(t,e,i){return new r(t,e,i)},r.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new r(t,e,i)},r.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new r(t,e,s)},r.staggerTo=r.allTo=function(t,e,a,h,l,_,u){h=h||0;var p,f,c,m,d=a.delay||0,g=[],v=function(){a.onComplete&&a.onComplete.apply(a.onCompleteScope||this,a.onCompleteParams||o),l.apply(u||this,_||o)};for(t instanceof Array||("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s.call(t,0))),p=t.length,c=0;p>c;c++){f={};for(m in a)f[m]=a[m];f.delay=d,c===p-1&&l&&(f.onComplete=v),g[c]=new r(t[c],e,f),d+=h}return g},r.staggerFrom=r.allFrom=function(t,e,i,s,n,a,o){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,r.staggerTo(t,e,i,s,n,a,o)},r.staggerFromTo=r.allFromTo=function(t,e,i,s,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,r.staggerTo(t,e,s,n,a,o,h)},r.delayedCall=function(t,e,i,s,n){return new r(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:n,overwrite:0})},r.set=function(t,e){return new r(t,0,e)},r.isTweening=function(t){for(var e,s=i.getTweensOf(t),r=s.length;--r>-1;)if(e=s[r],e._active||e._startTime===e._timeline._time&&e._timeline._active)return!0;return!1};var h=function(t,e){for(var s=[],r=0,n=t._first;n;)n instanceof i?s[r++]=n:(e&&(s[r++]=n),s=s.concat(h(n,e)),r=s.length),n=n._next;return s},l=r.getAllTweens=function(e){return h(t._rootTimeline,e).concat(h(t._rootFramesTimeline,e))};r.killAll=function(t,i,s,r){null==i&&(i=!0),null==s&&(s=!0);var n,a,o,h=l(0!=r),_=h.length,u=i&&s&&r;for(o=0;_>o;o++)a=h[o],(u||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&(t?a.totalTime(a.totalDuration()):a._enabled(!1,!1))},r.killChildTweensOf=function(t,e){if(null!=t){var a,o,h,l,_,u=i._tweenLookup;if("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s(t,0)),t instanceof Array)for(l=t.length;--l>-1;)r.killChildTweensOf(t[l],e);else{a=[];for(h in u)for(o=u[h].target.parentNode;o;)o===t&&(a=a.concat(u[h].tweens)),o=o.parentNode;for(_=a.length,l=0;_>l;l++)e&&a[l].totalTime(a[l].totalDuration()),a[l]._enabled(!1,!1)}}};var _=function(t,i,s,r){void 0===i&&(i=!0),void 0===s&&(s=!0);for(var n,a,o=l(r),h=i&&s&&r,_=o.length;--_>-1;)a=o[_],(h||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&a.paused(t)};return r.pauseAll=function(t,e,i){_(!0,t,e,i)},r.resumeAll=function(t,e,i){_(!1,t,e,i)},a.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},a.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},a.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},a.duration=function(e){return arguments.length?t.prototype.duration.call(this,e):this._duration},a.totalDuration=function(t){return arguments.length?-1===this._repeat?this:this.duration((t-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat,this._dirty=!1),this._totalDuration)},a.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},a.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},a.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},r},!0),window._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=function(t){e.call(this,t),this._labels={},this.autoRemoveChildren=this.vars.autoRemoveChildren===!0,this.smoothChildTiming=this.vars.smoothChildTiming===!0,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;for(var i,s,n=this.vars,a=r.length;--a>-1;)if(s=n[r[a]])for(i=s.length;--i>-1;)"{self}"===s[i]&&(s=n[r[a]]=s.concat(),s[i]=this);n.tweens instanceof Array&&this.add(n.tweens,0,n.align,n.stagger)},r=["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],n=[],a=function(t){var e,i={};for(e in t)i[e]=t[e];return i},o=n.slice,h=s.prototype=new e;return s.version="1.9.7",h.constructor=s,h.kill()._gc=!1,h.to=function(t,e,s,r){return e?this.add(new i(t,e,s),r):this.set(t,s,r)},h.from=function(t,e,s,r){return this.add(i.from(t,e,s),r)},h.fromTo=function(t,e,s,r,n){return e?this.add(i.fromTo(t,e,s,r),n):this.set(t,r,n)},h.staggerTo=function(t,e,r,n,h,l,_,u){var p,f=new s({onComplete:l,onCompleteParams:_,onCompleteScope:u});for("string"==typeof t&&(t=i.selector(t)||t),!(t instanceof Array)&&t.length&&t[0]&&t[0].nodeType&&t[0].style&&(t=o.call(t,0)),n=n||0,p=0;t.length>p;p++)r.startAt&&(r.startAt=a(r.startAt)),f.to(t[p],e,a(r),p*n);return this.add(f,h)},h.staggerFrom=function(t,e,i,s,r,n,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,r,n,a,o)},h.staggerFromTo=function(t,e,i,s,r,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,r,n,a,o,h)},h.call=function(t,e,s,r){return this.add(i.delayedCall(0,t,e,s),r)},h.set=function(t,e,s){return s=this._parseTimeOrLabel(s,0,!0),null==e.immediateRender&&(e.immediateRender=s===this._time&&!this._paused),this.add(new i(t,0,e),s)},s.exportRoot=function(t,e){t=t||{},null==t.smoothChildTiming&&(t.smoothChildTiming=!0);var r,n,a=new s(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,r=o._first;r;)n=r._next,e&&r instanceof i&&r.target===r.vars.onComplete||a.add(r,r._startTime-r._delay),r=n;return o.add(a,0),a},h.add=function(r,n,a,o){var h,l,_,u,p;if("number"!=typeof n&&(n=this._parseTimeOrLabel(n,0,!0,r)),!(r instanceof t)){if(r instanceof Array){for(a=a||"normal",o=o||0,h=n,l=r.length,_=0;l>_;_++)(u=r[_])instanceof Array&&(u=new s({tweens:u})),this.add(u,h),"string"!=typeof u&&"function"!=typeof u&&("sequence"===a?h=u._startTime+u.totalDuration()/u._timeScale:"start"===a&&(u._startTime-=u.delay())),h+=o;return this._uncache(!0)}if("string"==typeof r)return this.addLabel(r,n);if("function"!=typeof r)throw"Cannot add "+r+" into the timeline; it is neither a tween, timeline, function, nor a string.";r=i.delayedCall(0,r)}if(e.prototype.add.call(this,r,n),this._gc&&!this._paused&&this._time===this._duration&&this._time-1;)this.remove(e[i]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},h.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},h.insert=h.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},h.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},h.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},h.removeLabel=function(t){return delete this._labels[t],this},h.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},h._parseTimeOrLabel=function(e,i,s,r){var n;if(r instanceof t&&r.timeline===this)this.remove(r);else if(r instanceof Array)for(n=r.length;--n>-1;)r[n]instanceof t&&r[n].timeline===this&&this.remove(r[n]);if("string"==typeof i)return this._parseTimeOrLabel(i,s&&"number"==typeof e&&null==this._labels[i]?e-this.duration():0,s);if(i=i||0,"string"!=typeof e||!isNaN(e)&&null==this._labels[e])null==e&&(e=this.duration());else{if(n=e.indexOf("="),-1===n)return null==this._labels[e]?s?this._labels[e]=this.duration()+i:i:this._labels[e]+i;i=parseInt(e.charAt(n-1)+"1",10)*Number(e.substr(n+1)),e=n>1?this._parseTimeOrLabel(e.substr(0,n-1),0,s):this.duration()}return Number(e)+i},h.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),e!==!1)},h.stop=function(){return this.paused(!0)},h.gotoAndPlay=function(t,e){return this.play(t,e)},h.gotoAndStop=function(t,e){return this.pause(t,e)},h.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,r,a,o,h,l=this._dirty?this.totalDuration():this._totalDuration,_=this._time,u=this._startTime,p=this._timeScale,f=this._paused;if(t>=l?(this._totalTime=this._time=l,this._reversed||this._hasPausedChild()||(r=!0,o="onComplete",0===this._duration&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,t=l+1e-6):1e-7>t?(this._totalTime=this._time=0,(0!==_||0===this._duration&&this._rawPrevTime>0)&&(o="onReverseComplete",r=this._reversed),0>t?(this._active=!1,0===this._duration&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):this._totalTime=this._time=this._rawPrevTime=t,this._time!==_&&this._first||i||h){if(this._initted||(this._initted=!0),0===_&&this.vars.onStart&&0!==this._time&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||n)),this._time>=_)for(s=this._first;s&&(a=s._next,!this._paused||f);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||f);)(s._active||_>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||n)),o&&(this._gc||(u===this._startTime||p!==this._timeScale)&&(0===this._time||l>=this.totalDuration())&&(r&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||n)))}},h._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof s&&t._hasPausedChild())return!0;t=t._next}return!1},h.getChildren=function(t,e,s,r){r=r||-9999999999;for(var n=[],a=this._first,o=0;a;)r>a._startTime||(a instanceof i?e!==!1&&(n[o++]=a):(s!==!1&&(n[o++]=a),t!==!1&&(n=n.concat(a.getChildren(!0,e,s)),o=n.length))),a=a._next;return n},h.getTweensOf=function(t,e){for(var s=i.getTweensOf(t),r=s.length,n=[],a=0;--r>-1;)(s[r].timeline===this||e&&this._contains(s[r]))&&(n[a++]=s[r]);return n},h._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},h.shiftChildren=function(t,e,i){i=i||0;for(var s,r=this._first,n=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(s in n)n[s]>=i&&(n[s]+=t);return this._uncache(!0)},h._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,r=!1;--s>-1;)i[s]._kill(t,e)&&(r=!0);return r},h.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;--i>-1;)e[i]._enabled(!1,!1);return t!==!1&&(this._labels={}),this._uncache(!0)},h.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},h._enabled=function(t,i){if(t===this._gc)for(var s=this._first;s;)s._enabled(t,!0),s=s._next;return e.prototype._enabled.call(this,t,i)},h.progress=function(t){return arguments.length?this.totalTime(this.duration()*t,!1):this._time/this.duration()},h.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},h.totalDuration=function(t){if(!arguments.length){if(this._dirty){for(var e,i,s=0,r=this._last,n=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>n&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):n=r._startTime,0>r._startTime&&!r._paused&&(s-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),n=0),i=r._startTime+r._totalDuration/r._timeScale,i>s&&(s=i),r=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration}return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this},h.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===t._rootFramesTimeline},h.rawTime=function(){return this._paused||0!==this._totalTime&&this._totalTime!==this._totalDuration?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},s},!0),window._gsDefine("TimelineMax",["TimelineLite","TweenLite","easing.Ease"],function(t,e,i){var s=function(e){t.call(this,e),this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._dirty=!0},r=[],n=new i(null,null,1,0),a=function(t){for(;t;){if(t._paused)return!0;t=t._timeline}return!1},o=s.prototype=new t;return o.constructor=s,o.kill()._gc=!1,s.version="1.9.7",o.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),t.prototype.invalidate.call(this)},o.addCallback=function(t,i,s,r){return this.add(e.delayedCall(0,t,s,r),i)},o.removeCallback=function(t,e){if(null==e)this._kill(null,t);else for(var i=this.getTweensOf(t,!1),s=i.length,r=this._parseTimeOrLabel(e);--s>-1;)i[s]._startTime===r&&i[s]._enabled(!1,!1);return this},o.tweenTo=function(t,i){i=i||{};var s,a,o={ease:n,overwrite:2,useFrames:this.usesFrames(),immediateRender:!1};for(s in i)o[s]=i[s];return o.time=this._parseTimeOrLabel(t),a=new e(this,Math.abs(Number(o.time)-this._time)/this._timeScale||.001,o),o.onStart=function(){a.target.paused(!0),a.vars.time!==a.target.time()&&a.duration(Math.abs(a.vars.time-a.target.time())/a.target._timeScale),i.onStart&&i.onStart.apply(i.onStartScope||a,i.onStartParams||r)},a},o.tweenFromTo=function(t,e,i){i=i||{},t=this._parseTimeOrLabel(t),i.startAt={onComplete:this.seek,onCompleteParams:[t],onCompleteScope:this},i.immediateRender=i.immediateRender!==!1;var s=this.tweenTo(e,i);return s.duration(Math.abs(s.vars.time-t)/this._timeScale||.001)},o.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,n,a,o,h,l,_=this._dirty?this.totalDuration():this._totalDuration,u=this._duration,p=this._time,f=this._totalTime,c=this._startTime,m=this._timeScale,d=this._rawPrevTime,g=this._paused,v=this._cycle;if(t>=_?(this._locked||(this._totalTime=_,this._cycle=this._repeat),this._reversed||this._hasPausedChild()||(n=!0,o="onComplete",0===u&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,this._yoyo&&0!==(1&this._cycle)?this._time=t=0:(this._time=u,t=u+1e-6)):1e-7>t?(this._locked||(this._totalTime=this._cycle=0),this._time=0,(0!==p||0===u&&this._rawPrevTime>0&&!this._locked)&&(o="onReverseComplete",n=this._reversed),0>t?(this._active=!1,0===u&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):(this._time=this._rawPrevTime=t,this._locked||(this._totalTime=t,0!==this._repeat&&(l=u+this._repeatDelay,this._cycle=this._totalTime/l>>0,0!==this._cycle&&this._cycle===this._totalTime/l&&this._cycle--,this._time=this._totalTime-this._cycle*l,this._yoyo&&0!==(1&this._cycle)&&(this._time=u-this._time),this._time>u?(this._time=u,t=u+1e-6):0>this._time?this._time=t=0:t=this._time))),this._cycle!==v&&!this._locked){var y=this._yoyo&&0!==(1&v),T=y===(this._yoyo&&0!==(1&this._cycle)),w=this._totalTime,x=this._cycle,b=this._rawPrevTime,P=this._time;this._totalTime=v*u,v>this._cycle?y=!y:this._totalTime+=u,this._time=p,this._rawPrevTime=0===u?d-1e-5:d,this._cycle=v,this._locked=!0,p=y?0:u,this.render(p,e,0===u),e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||r),T&&(p=y?u+1e-6:-1e-6,this.render(p,!0,!1)),this._time=P,this._totalTime=w,this._cycle=x,this._rawPrevTime=b,this._locked=!1}if(!(this._time!==p&&this._first||i||h))return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),void 0;if(this._initted||(this._initted=!0),0===f&&this.vars.onStart&&0!==this._totalTime&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||r)),this._time>=p)for(s=this._first;s&&(a=s._next,!this._paused||g);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||g);)(s._active||p>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),o&&(this._locked||this._gc||(c===this._startTime||m!==this._timeScale)&&(0===this._time||_>=this.totalDuration())&&(n&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||r)))},o.getActive=function(t,e,i){null==t&&(t=!0),null==e&&(e=!0),null==i&&(i=!1);var s,r,n=[],o=this.getChildren(t,e,i),h=0,l=o.length;for(s=0;l>s;s++)r=o[s],r._paused||r._timeline._time>=r._startTime&&r._timeline._timee;e++)if(i[e].time>t)return i[e].name;return null},o.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),i=e.length;--i>-1;)if(t>e[i].time)return e[i].name;return null},o.getLabelsArray=function(){var t,e=[],i=0;for(t in this._labels)e[i++]={time:this._labels[t],name:t};return e.sort(function(t,e){return t.time-e.time}),e},o.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},o.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},o.totalDuration=function(e){return arguments.length?-1===this._repeat?this:this.duration((e-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(t.prototype.totalDuration.call(this),this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat),this._totalDuration)},o.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},o.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},o.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},o.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},o.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.getLabelBefore(this._time+1e-8)},s},!0),function(){var t=180/Math.PI,e=Math.PI/180,i=[],s=[],r=[],n={},a=function(t,e,i,s){this.a=t,this.b=e,this.c=i,this.d=s,this.da=s-t,this.ca=i-t,this.ba=e-t},o=",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",h=function(t,e,i,s){var r={a:t},n={},a={},o={c:s},h=(t+e)/2,l=(e+i)/2,_=(i+s)/2,u=(h+l)/2,p=(l+_)/2,f=(p-u)/8;return r.b=h+(t-h)/4,n.b=u+f,r.c=n.a=(r.b+n.b)/2,n.c=a.a=(u+p)/2,a.b=p-f,o.b=_+(s-_)/4,a.c=o.a=(a.b+o.b)/2,[r,n,a,o]},l=function(t,e,n,a,o){var l,_,u,p,f,c,m,d,g,v,y,T,w,x=t.length-1,b=0,P=t[0].a;for(l=0;x>l;l++)f=t[b],_=f.a,u=f.d,p=t[b+1].d,o?(y=i[l],T=s[l],w=.25*(T+y)*e/(a?.5:r[l]||.5),c=u-(u-_)*(a?.5*e:0!==y?w/y:0),m=u+(p-u)*(a?.5*e:0!==T?w/T:0),d=u-(c+((m-c)*(3*y/(y+T)+.5)/4||0))):(c=u-.5*(u-_)*e,m=u+.5*(p-u)*e,d=u-(c+m)/2),c+=d,m+=d,f.c=g=c,f.b=0!==l?P:P=f.a+.6*(f.c-f.a),f.da=u-_,f.ca=g-_,f.ba=P-_,n?(v=h(_,P,g,u),t.splice(b,1,v[0],v[1],v[2],v[3]),b+=4):b++,P=m;f=t[b],f.b=P,f.c=P+.4*(f.d-P),f.da=f.d-f.a,f.ca=f.c-f.a,f.ba=P-f.a,n&&(v=h(f.a,P,f.c,f.d),t.splice(b,1,v[0],v[1],v[2],v[3]))},_=function(t,e,r,n){var o,h,l,_,u,p,f=[];if(n)for(t=[n].concat(t),h=t.length;--h>-1;)"string"==typeof(p=t[h][e])&&"="===p.charAt(1)&&(t[h][e]=n[e]+Number(p.charAt(0)+p.substr(2)));if(o=t.length-2,0>o)return f[0]=new a(t[0][e],0,0,t[-1>o?0:1][e]),f;for(h=0;o>h;h++)l=t[h][e],_=t[h+1][e],f[h]=new a(l,0,0,_),r&&(u=t[h+2][e],i[h]=(i[h]||0)+(_-l)*(_-l),s[h]=(s[h]||0)+(u-_)*(u-_));return f[h]=new a(t[h][e],0,0,t[h+1][e]),f},u=function(t,e,a,h,u,p){var f,c,m,d,g,v,y,T,w={},x=[],b=p||t[0];u="string"==typeof u?","+u+",":o,null==e&&(e=1);for(c in t[0])x.push(c);if(t.length>1){for(T=t[t.length-1],y=!0,f=x.length;--f>-1;)if(c=x[f],Math.abs(b[c]-T[c])>.05){y=!1;break}y&&(t=t.concat(),p&&t.unshift(p),t.push(t[1]),p=t[t.length-3])}for(i.length=s.length=r.length=0,f=x.length;--f>-1;)c=x[f],n[c]=-1!==u.indexOf(","+c+","),w[c]=_(t,c,n[c],p);for(f=i.length;--f>-1;)i[f]=Math.sqrt(i[f]),s[f]=Math.sqrt(s[f]);if(!h){for(f=x.length;--f>-1;)if(n[c])for(m=w[x[f]],v=m.length-1,d=0;v>d;d++)g=m[d+1].da/s[d]+m[d].da/i[d],r[d]=(r[d]||0)+g*g;for(f=r.length;--f>-1;)r[f]=Math.sqrt(r[f])}for(f=x.length,d=a?4:1;--f>-1;)c=x[f],m=w[c],l(m,e,a,h,n[c]),y&&(m.splice(0,d),m.splice(m.length-d,d));return w},p=function(t,e,i){e=e||"soft";var s,r,n,o,h,l,_,u,p,f,c,m={},d="cubic"===e?3:2,g="soft"===e,v=[];if(g&&i&&(t=[i].concat(t)),null==t||d+1>t.length)throw"invalid Bezier data";for(p in t[0])v.push(p);for(l=v.length;--l>-1;){for(p=v[l],m[p]=h=[],f=0,u=t.length,_=0;u>_;_++)s=null==i?t[_][p]:"string"==typeof(c=t[_][p])&&"="===c.charAt(1)?i[p]+Number(c.charAt(0)+c.substr(2)):Number(c),g&&_>1&&u-1>_&&(h[f++]=(s+h[f-2])/2),h[f++]=s;for(u=f-d+1,f=0,_=0;u>_;_+=d)s=h[_],r=h[_+1],n=h[_+2],o=2===d?0:h[_+3],h[f++]=c=3===d?new a(s,r,n,o):new a(s,(2*r+s)/3,(2*r+n)/3,n);h.length=f}return m},f=function(t,e,i){for(var s,r,n,a,o,h,l,_,u,p,f,c=1/i,m=t.length;--m>-1;)for(p=t[m],n=p.a,a=p.d-n,o=p.c-n,h=p.b-n,s=r=0,_=1;i>=_;_++)l=c*_,u=1-l,s=r-(r=(l*l*a+3*u*(l*o+u*h))*l),f=m*i+_-1,e[f]=(e[f]||0)+s*s},c=function(t,e){e=e>>0||6;var i,s,r,n,a=[],o=[],h=0,l=0,_=e-1,u=[],p=[];for(i in t)f(t[i],a,e);for(r=a.length,s=0;r>s;s++)h+=Math.sqrt(a[s]),n=s%e,p[n]=h,n===_&&(l+=h,n=s/e>>0,u[n]=p,o[n]=l,h=0,p=[]);return{length:l,lengths:o,segments:u}},m=window._gsDefine.plugin({propName:"bezier",priority:-1,API:2,global:!0,init:function(t,e,i){this._target=t,e instanceof Array&&(e={values:e}),this._func={},this._round={},this._props=[],this._timeRes=null==e.timeResolution?6:parseInt(e.timeResolution,10);var s,r,n,a,o,h=e.values||[],l={},_=h[0],f=e.autoRotate||i.vars.orientToBezier;this._autoRotate=f?f instanceof Array?f:[["x","y","rotation",f===!0?0:Number(f)||0]]:null;for(s in _)this._props.push(s);for(n=this._props.length;--n>-1;)s=this._props[n],this._overwriteProps.push(s),r=this._func[s]="function"==typeof t[s],l[s]=r?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]():parseFloat(t[s]),o||l[s]!==h[0][s]&&(o=l);if(this._beziers="cubic"!==e.type&&"quadratic"!==e.type&&"soft"!==e.type?u(h,isNaN(e.curviness)?1:e.curviness,!1,"thruBasic"===e.type,e.correlate,o):p(h,e.type,l),this._segCount=this._beziers[s].length,this._timeRes){var m=c(this._beziers,this._timeRes);this._length=m.length,this._lengths=m.lengths,this._segments=m.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(f=this._autoRotate)for(f[0]instanceof Array||(this._autoRotate=f=[f]),n=f.length;--n>-1;)for(a=0;3>a;a++)s=f[n][a],this._func[s]="function"==typeof t[s]?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]:!1;return!0},set:function(e){var i,s,r,n,a,o,h,l,_,u,p=this._segCount,f=this._func,c=this._target;if(this._timeRes){if(_=this._lengths,u=this._curSeg,e*=this._length,r=this._li,e>this._l2&&p-1>r){for(l=p-1;l>r&&e>=(this._l2=_[++r]););this._l1=_[r-1],this._li=r,this._curSeg=u=this._segments[r],this._s2=u[this._s1=this._si=0]}else if(this._l1>e&&r>0){for(;r>0&&(this._l1=_[--r])>=e;);0===r&&this._l1>e?this._l1=0:r++,this._l2=_[r],this._li=r,this._curSeg=u=this._segments[r],this._s1=u[(this._si=u.length-1)-1]||0,this._s2=u[this._si]}if(i=r,e-=this._l1,r=this._si,e>this._s2&&u.length-1>r){for(l=u.length-1;l>r&&e>=(this._s2=u[++r]););this._s1=u[r-1],this._si=r}else if(this._s1>e&&r>0){for(;r>0&&(this._s1=u[--r])>=e;);0===r&&this._s1>e?this._s1=0:r++,this._s2=u[r],this._si=r}o=(r+(e-this._s1)/(this._s2-this._s1))*this._prec}else i=0>e?0:e>=1?p-1:p*e>>0,o=(e-i*(1/p))*p;for(s=1-o,r=this._props.length;--r>-1;)n=this._props[r],a=this._beziers[n][i],h=(o*o*a.da+3*s*(o*a.ca+s*a.ba))*o+a.a,this._round[n]&&(h=h+(h>0?.5:-.5)>>0),f[n]?c[n](h):c[n]=h;if(this._autoRotate){var m,d,g,v,y,T,w,x=this._autoRotate;for(r=x.length;--r>-1;)n=x[r][2],T=x[r][3]||0,w=x[r][4]===!0?1:t,a=this._beziers[x[r][0]],m=this._beziers[x[r][1]],a&&m&&(a=a[i],m=m[i],d=a.a+(a.b-a.a)*o,v=a.b+(a.c-a.b)*o,d+=(v-d)*o,v+=(a.c+(a.d-a.c)*o-v)*o,g=m.a+(m.b-m.a)*o,y=m.b+(m.c-m.b)*o,g+=(y-g)*o,y+=(m.c+(m.d-m.c)*o-y)*o,h=Math.atan2(y-g,v-d)*w+T,f[n]?c[n](h):c[n]=h)}}}),d=m.prototype;m.bezierThrough=u,m.cubicToQuadratic=h,m._autoCSS=!0,m.quadraticToCubic=function(t,e,i){return new a(t,(2*e+t)/3,(2*e+i)/3,i)},m._cssRegister=function(){var t=window._gsDefine.globals.CSSPlugin;if(t){var i=t._internals,s=i._parseToProxy,r=i._setPluginRatio,n=i.CSSPropTween;i._registerComplexSpecialProp("bezier",{parser:function(t,i,a,o,h,l){i instanceof Array&&(i={values:i}),l=new m;var _,u,p,f=i.values,c=f.length-1,d=[],g={};if(0>c)return h;for(_=0;c>=_;_++)p=s(t,f[_],o,h,l,c!==_),d[_]=p.end;for(u in i)g[u]=i[u];return g.values=d,h=new n(t,"bezier",0,0,p.pt,2),h.data=p,h.plugin=l,h.setRatio=r,0===g.autoRotate&&(g.autoRotate=!0),!g.autoRotate||g.autoRotate instanceof Array||(_=g.autoRotate===!0?0:Number(g.autoRotate)*e,g.autoRotate=null!=p.end.left?[["left","top","rotation",_,!0]]:null!=p.end.x?[["x","y","rotation",_,!0]]:!1),g.autoRotate&&(o._transform||o._enableTransforms(!1),p.autoRotate=o._target._gsTransform),l._onInitTween(p.proxy,g,o._tween),h}})}},d._roundProps=function(t,e){for(var i=this._overwriteProps,s=i.length;--s>-1;)(t[i[s]]||t.bezier||t.bezierThrough)&&(this._round[i[s]]=e)},d._kill=function(t){var e,i,s=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],i=s.length;--i>-1;)s[i]===e&&s.splice(i,1);return this._super._kill.call(this,t)}}(),window._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(t,e){var i,s,r,n,a=function(){t.call(this,"css"),this._overwriteProps.length=0},o={},h=a.prototype=new t("css");h.constructor=a,a.version="1.9.7",a.API=2,a.defaultTransformPerspective=0,h="px",a.suffixMap={top:h,right:h,bottom:h,left:h,width:h,height:h,fontSize:h,padding:h,margin:h,perspective:h}; +var l,_,u,p,f,c,m=/(?:\d|\-\d|\.\d|\-\.\d)+/g,d=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,g=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,v=/[^\d\-\.]/g,y=/(?:\d|\-|\+|=|#|\.)*/g,T=/opacity *= *([^)]*)/,w=/opacity:([^;]*)/,x=/alpha\(opacity *=.+?\)/i,b=/^(rgb|hsl)/,P=/([A-Z])/g,k=/-([a-z])/gi,R=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,S=function(t,e){return e.toUpperCase()},A=/(?:Left|Right|Width)/i,C=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,O=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,D=/,(?=[^\)]*(?:\(|$))/gi,M=Math.PI/180,I=180/Math.PI,F={},E=document,N=E.createElement("div"),L=E.createElement("img"),X=a._internals={_specialProps:o},U=navigator.userAgent,z=function(){var t,e=U.indexOf("Android"),i=E.createElement("div");return u=-1!==U.indexOf("Safari")&&-1===U.indexOf("Chrome")&&(-1===e||Number(U.substr(e+8,1))>3),f=u&&6>Number(U.substr(U.indexOf("Version/")+8,1)),p=-1!==U.indexOf("Firefox"),/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U),c=parseFloat(RegExp.$1),i.innerHTML="a",t=i.getElementsByTagName("a")[0],t?/^0.55/.test(t.style.opacity):!1}(),Y=function(t){return T.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1},B=function(t){window.console&&console.log(t)},j="",q="",V=function(t,e){e=e||N;var i,s,r=e.style;if(void 0!==r[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],s=5;--s>-1&&void 0===r[i[s]+t];);return s>=0?(q=3===s?"ms":i[s],j="-"+q.toLowerCase()+"-",q+t):null},Z=E.defaultView?E.defaultView.getComputedStyle:function(){},G=a.getStyle=function(t,e,i,s,r){var n;return z||"opacity"!==e?(!s&&t.style[e]?n=t.style[e]:(i=i||Z(t,null))?(t=i.getPropertyValue(e.replace(P,"-$1").toLowerCase()),n=t||i.length?t:i[e]):t.currentStyle&&(i=t.currentStyle,n=i[e]),null==r||n&&"none"!==n&&"auto"!==n&&"auto auto"!==n?n:r):Y(t)},$=function(t,e,i,s,r){if("px"===s||!s)return i;if("auto"===s||!i)return 0;var n,a=A.test(e),o=t,h=N.style,l=0>i;return l&&(i=-i),"%"===s&&-1!==e.indexOf("border")?n=i/100*(a?t.clientWidth:t.clientHeight):(h.cssText="border-style:solid; border-width:0; position:absolute; line-height:0;","%"!==s&&o.appendChild?h[a?"borderLeftWidth":"borderTopWidth"]=i+s:(o=t.parentNode||E.body,h[a?"width":"height"]=i+s),o.appendChild(N),n=parseFloat(N[a?"offsetWidth":"offsetHeight"]),o.removeChild(N),0!==n||r||(n=$(t,e,i,s,!0))),l?-n:n},Q=function(t,e,i){if("absolute"!==G(t,"position",i))return 0;var s="left"===e?"Left":"Top",r=G(t,"margin"+s,i);return t["offset"+s]-($(t,e,parseFloat(r),r.replace(y,""))||0)},W=function(t,e){var i,s,r={};if(e=e||Z(t,null))if(i=e.length)for(;--i>-1;)r[e[i].replace(k,S)]=e.getPropertyValue(e[i]);else for(i in e)r[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)r[i.replace(k,S)]=e[i];return z||(r.opacity=Y(t)),s=be(t,e,!1),r.rotation=s.rotation*I,r.skewX=s.skewX*I,r.scaleX=s.scaleX,r.scaleY=s.scaleY,r.x=s.x,r.y=s.y,xe&&(r.z=s.z,r.rotationX=s.rotationX*I,r.rotationY=s.rotationY*I,r.scaleZ=s.scaleZ),r.filters&&delete r.filters,r},H=function(t,e,i,s,r){var n,a,o,h={},l=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(n=i[a])||r&&r[a])&&-1===a.indexOf("Origin")&&("number"==typeof n||"string"==typeof n)&&(h[a]="auto"!==n||"left"!==a&&"top"!==a?""!==n&&"auto"!==n&&"none"!==n||"string"!=typeof e[a]||""===e[a].replace(v,"")?n:0:Q(t,a),void 0!==l[a]&&(o=new ue(l,a,l[a],o)));if(s)for(a in s)"className"!==a&&(h[a]=s[a]);return{difs:h,firstMPT:o}},K={width:["Left","Right"],height:["Top","Bottom"]},J=["marginLeft","marginRight","marginTop","marginBottom"],te=function(t,e,i){var s=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),r=K[e],n=r.length;for(i=i||Z(t,null);--n>-1;)s-=parseFloat(G(t,"padding"+r[n],i,!0))||0,s-=parseFloat(G(t,"border"+r[n]+"Width",i,!0))||0;return s},ee=function(t,e){(null==t||""===t||"auto"===t||"auto auto"===t)&&(t="0 0");var i=t.split(" "),s=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":i[0],r=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":i[1];return null==r?r="0":"center"===r&&(r="50%"),("center"===s||isNaN(parseFloat(s)))&&(s="50%"),e&&(e.oxp=-1!==s.indexOf("%"),e.oyp=-1!==r.indexOf("%"),e.oxr="="===s.charAt(1),e.oyr="="===r.charAt(1),e.ox=parseFloat(s.replace(v,"")),e.oy=parseFloat(r.replace(v,""))),s+" "+r+(i.length>2?" "+i[2]:"")},ie=function(t,e){return"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2)):parseFloat(t)-parseFloat(e)},se=function(t,e){return null==t?e:"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*Number(t.substr(2))+e:parseFloat(t)},re=function(t,e,i,s){var r,n,a,o,h=1e-6;return null==t?o=e:"number"==typeof t?o=t*M:(r=2*Math.PI,n=t.split("_"),a=Number(n[0].replace(v,""))*(-1===t.indexOf("rad")?M:1)-("="===t.charAt(1)?0:e),n.length&&(s&&(s[i]=e+a),-1!==t.indexOf("short")&&(a%=r,a!==a%(r/2)&&(a=0>a?a+r:a-r)),-1!==t.indexOf("_cw")&&0>a?a=(a+9999999999*r)%r-(0|a/r)*r:-1!==t.indexOf("ccw")&&a>0&&(a=(a-9999999999*r)%r-(0|a/r)*r)),o=e+a),h>o&&o>-h&&(o=0),o},ne={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ae=function(t,e,i){return t=0>t?t+1:t>1?t-1:t,0|255*(1>6*t?e+6*(i-e)*t:.5>t?i:2>3*t?e+6*(i-e)*(2/3-t):e)+.5},oe=function(t){var e,i,s,r,n,a;return t&&""!==t?"number"==typeof t?[t>>16,255&t>>8,255&t]:(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),ne[t]?ne[t]:"#"===t.charAt(0)?(4===t.length&&(e=t.charAt(1),i=t.charAt(2),s=t.charAt(3),t="#"+e+e+i+i+s+s),t=parseInt(t.substr(1),16),[t>>16,255&t>>8,255&t]):"hsl"===t.substr(0,3)?(t=t.match(m),r=Number(t[0])%360/360,n=Number(t[1])/100,a=Number(t[2])/100,i=.5>=a?a*(n+1):a+n-a*n,e=2*a-i,t.length>3&&(t[3]=Number(t[3])),t[0]=ae(r+1/3,e,i),t[1]=ae(r,e,i),t[2]=ae(r-1/3,e,i),t):(t=t.match(m)||ne.transparent,t[0]=Number(t[0]),t[1]=Number(t[1]),t[2]=Number(t[2]),t.length>3&&(t[3]=Number(t[3])),t)):ne.black},he="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";for(h in ne)he+="|"+h+"\\b";he=RegExp(he+")","gi");var le=function(t,e,i,s){if(null==t)return function(t){return t};var r,n=e?(t.match(he)||[""])[0]:"",a=t.split(n).join("").match(g)||[],o=t.substr(0,t.indexOf(a[0])),h=")"===t.charAt(t.length-1)?")":"",l=-1!==t.indexOf(" ")?" ":",",_=a.length,u=_>0?a[0].replace(m,""):"";return _?r=e?function(t){var e,p,f,c;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(c=t.replace(D,"|").split("|"),f=0;c.length>f;f++)c[f]=r(c[f]);return c.join(",")}if(e=(t.match(he)||[n])[0],p=t.split(e).join("").match(g)||[],f=p.length,_>f--)for(;_>++f;)p[f]=i?p[0|(f-1)/2]:a[f];return o+p.join(l)+l+e+h+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,n,p;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(n=t.replace(D,"|").split("|"),p=0;n.length>p;p++)n[p]=r(n[p]);return n.join(",")}if(e=t.match(g)||[],p=e.length,_>p--)for(;_>++p;)e[p]=i?e[0|(p-1)/2]:a[p];return o+e.join(l)+h}:function(t){return t}},_e=function(t){return t=t.split(","),function(e,i,s,r,n,a,o){var h,l=(i+"").split(" ");for(o={},h=0;4>h;h++)o[t[h]]=l[h]=l[h]||l[(h-1)/2>>0];return r.parse(e,o,n,a)}},ue=(X._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,s,r,n=this.data,a=n.proxy,o=n.firstMPT,h=1e-6;o;)e=a[o.v],o.r?e=e>0?0|e+.5:0|e-.5:h>e&&e>-h&&(e=0),o.t[o.p]=e,o=o._next;if(n.autoRotate&&(n.autoRotate.rotation=a.rotation),1===t)for(o=n.firstMPT;o;){if(i=o.t,i.type){if(1===i.type){for(r=i.xs0+i.s+i.xs1,s=1;i.l>s;s++)r+=i["xn"+s]+i["xs"+(s+1)];i.e=r}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,s,r){this.t=t,this.p=e,this.v=i,this.r=r,s&&(s._prev=this,this._next=s)}),pe=(X._parseToProxy=function(t,e,i,s,r,n){var a,o,h,l,_,u=s,p={},f={},c=i._transform,m=F;for(i._transform=null,F=e,s=_=i.parse(t,e,s,r),F=m,n&&(i._transform=c,u&&(u._prev=null,u._prev&&(u._prev._next=null)));s&&s!==u;){if(1>=s.type&&(o=s.p,f[o]=s.s+s.c,p[o]=s.s,n||(l=new ue(s,"s",o,l,s.r),s.c=0),1===s.type))for(a=s.l;--a>0;)h="xn"+a,o=s.p+"_"+h,f[o]=s.data[h],p[o]=s[h],n||(l=new ue(s,h,o,l,s.rxp[h]));s=s._next}return{proxy:p,end:f,firstMPT:l,pt:_}},X.CSSPropTween=function(t,e,s,r,a,o,h,l,_,u,p){this.t=t,this.p=e,this.s=s,this.c=r,this.n=h||"css_"+e,t instanceof pe||n.push(this.n),this.r=l,this.type=o||0,_&&(this.pr=_,i=!0),this.b=void 0===u?s:u,this.e=void 0===p?s+r:p,a&&(this._next=a,a._prev=this)}),fe=a.parseComplex=function(t,e,i,s,r,n,a,o,h,_){i=i||n||"",a=new pe(t,e,0,0,a,_?2:1,null,!1,o,i,s),s+="";var u,p,f,c,g,v,y,T,w,x,P,k,R=i.split(", ").join(",").split(" "),S=s.split(", ").join(",").split(" "),A=R.length,C=l!==!1;for((-1!==s.indexOf(",")||-1!==i.indexOf(","))&&(R=R.join(" ").replace(D,", ").split(" "),S=S.join(" ").replace(D,", ").split(" "),A=R.length),A!==S.length&&(R=(n||"").split(" "),A=R.length),a.plugin=h,a.setRatio=_,u=0;A>u;u++)if(c=R[u],g=S[u],T=parseFloat(c),T||0===T)a.appendXtra("",T,ie(g,T),g.replace(d,""),C&&-1!==g.indexOf("px"),!0);else if(r&&("#"===c.charAt(0)||ne[c]||b.test(c)))k=","===g.charAt(g.length-1)?"),":")",c=oe(c),g=oe(g),w=c.length+g.length>6,w&&!z&&0===g[3]?(a["xs"+a.l]+=a.l?" transparent":"transparent",a.e=a.e.split(S[u]).join("transparent")):(z||(w=!1),a.appendXtra(w?"rgba(":"rgb(",c[0],g[0]-c[0],",",!0,!0).appendXtra("",c[1],g[1]-c[1],",",!0).appendXtra("",c[2],g[2]-c[2],w?",":k,!0),w&&(c=4>c.length?1:c[3],a.appendXtra("",c,(4>g.length?1:g[3])-c,k,!1)));else if(v=c.match(m)){if(y=g.match(d),!y||y.length!==v.length)return a;for(f=0,p=0;v.length>p;p++)P=v[p],x=c.indexOf(P,f),a.appendXtra(c.substr(f,x-f),Number(P),ie(y[p],P),"",C&&"px"===c.substr(x+P.length,2),0===p),f=x+P.length;a["xs"+a.l]+=c.substr(f)}else a["xs"+a.l]+=a.l?" "+c:c;if(-1!==s.indexOf("=")&&a.data){for(k=a.xs0+a.data.s,u=1;a.l>u;u++)k+=a["xs"+u]+a.data["xn"+u];a.e=k+a["xs"+u]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},ce=9;for(h=pe.prototype,h.l=h.pr=0;--ce>0;)h["xn"+ce]=0,h["xs"+ce]="";h.xs0="",h._next=h._prev=h.xfirst=h.data=h.plugin=h.setRatio=h.rxp=null,h.appendXtra=function(t,e,i,s,r,n){var a=this,o=a.l;return a["xs"+o]+=n&&o?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=s||"",o>0?(a.data["xn"+o]=e+i,a.rxp["xn"+o]=r,a["xn"+o]=e,a.plugin||(a.xfirst=new pe(a,"xn"+o,e,i,a.xfirst||a,0,a.n,r,a.pr),a.xfirst.xs0=0),a):(a.data={s:e+i},a.rxp={},a.s=e,a.c=i,a.r=r,a)):(a["xs"+o]+=e+(s||""),a)};var me=function(t,e){e=e||{},this.p=e.prefix?V(t)||t:t,o[t]=o[this.p]=this,this.format=e.formatter||le(e.defaultValue,e.color,e.collapsible,e.multi),e.parser&&(this.parse=e.parser),this.clrs=e.color,this.multi=e.multi,this.keyword=e.keyword,this.dflt=e.defaultValue,this.pr=e.priority||0},de=X._registerComplexSpecialProp=function(t,e,i){"object"!=typeof e&&(e={parser:i});var s,r,n=t.split(","),a=e.defaultValue;for(i=i||[a],s=0;n.length>s;s++)e.prefix=0===s&&e.prefix,e.defaultValue=i[s]||a,r=new me(n[s],e)},ge=function(t){if(!o[t]){var e=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin";de(t,{parser:function(t,i,s,r,n,a,h){var l=(window.GreenSockGlobals||window).com.greensock.plugins[e];return l?(l._cssRegister(),o[s].parse(t,i,s,r,n,a,h)):(B("Error: "+e+" js file not loaded."),n)}})}};h=me.prototype,h.parseComplex=function(t,e,i,s,r,n){var a,o,h,l,_,u,p=this.keyword;if(this.multi&&(D.test(i)||D.test(e)?(o=e.replace(D,"|").split("|"),h=i.replace(D,"|").split("|")):p&&(o=[e],h=[i])),h){for(l=h.length>o.length?h.length:o.length,a=0;l>a;a++)e=o[a]=o[a]||this.dflt,i=h[a]=h[a]||this.dflt,p&&(_=e.indexOf(p),u=i.indexOf(p),_!==u&&(i=-1===u?h:o,i[a]+=" "+p));e=o.join(", "),i=h.join(", ")}return fe(t,this.p,e,i,this.clrs,this.dflt,s,this.pr,r,n)},h.parse=function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,this.p,r,!1,this.dflt)),this.format(e),n,a)},a.registerSpecialProp=function(t,e,i){de(t,{parser:function(t,s,r,n,a,o){var h=new pe(t,r,0,0,a,2,r,!1,i);return h.plugin=o,h.setRatio=e(t,s,n._tween,r),h},priority:i})};var ve="scaleX,scaleY,scaleZ,x,y,z,skewX,rotation,rotationX,rotationY,perspective".split(","),ye=V("transform"),Te=j+"transform",we=V("transformOrigin"),xe=null!==V("perspective"),be=function(t,e,i){var s,r,n,o,h,l,_,u,p,f,c,m,d,g=i?t._gsTransform||{skewY:0}:{skewY:0},v=0>g.scaleX,y=2e-5,T=1e5,w=-Math.PI+1e-4,x=Math.PI-1e-4,b=xe?parseFloat(G(t,we,e,!1,"0 0 0").split(" ")[2])||g.zOrigin||0:0;if(ye)s=G(t,Te,e,!0);else if(t.currentStyle)if(s=t.currentStyle.filter.match(C),s&&4===s.length)s=[s[0].substr(4),Number(s[2].substr(4)),Number(s[1].substr(4)),s[3].substr(4),g.x||0,g.y||0].join(",");else{if(null!=g.x)return g;s=""}for(r=(s||"").match(/(?:\-|\b)[\d\-\.e]+\b/gi)||[],n=r.length;--n>-1;)o=Number(r[n]),r[n]=(h=o-(o|=0))?(0|h*T+(0>h?-.5:.5))/T+o:o;if(16===r.length){var P=r[8],k=r[9],R=r[10],S=r[12],A=r[13],O=r[14];if(g.zOrigin&&(O=-g.zOrigin,S=P*O-r[12],A=k*O-r[13],O=R*O+g.zOrigin-r[14]),!i||null==g.rotationX){var D,M,I,F,E,N,L,X=r[0],U=r[1],z=r[2],Y=r[3],B=r[4],j=r[5],q=r[6],V=r[7],Z=r[11],$=g.rotationX=Math.atan2(q,R),Q=w>$||$>x;$&&(F=Math.cos(-$),E=Math.sin(-$),D=B*F+P*E,M=j*F+k*E,I=q*F+R*E,P=B*-E+P*F,k=j*-E+k*F,R=q*-E+R*F,Z=V*-E+Z*F,B=D,j=M,q=I),$=g.rotationY=Math.atan2(P,X),$&&(N=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),D=X*F-P*E,M=U*F-k*E,I=z*F-R*E,k=U*E+k*F,R=z*E+R*F,Z=Y*E+Z*F,X=D,U=M,z=I),$=g.rotation=Math.atan2(U,j),$&&(L=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),X=X*F+B*E,M=U*F+j*E,j=U*-E+j*F,q=z*-E+q*F,U=M),L&&Q?g.rotation=g.rotationX=0:L&&N?g.rotation=g.rotationY=0:N&&Q&&(g.rotationY=g.rotationX=0),g.scaleX=(0|Math.sqrt(X*X+U*U)*T+.5)/T,g.scaleY=(0|Math.sqrt(j*j+k*k)*T+.5)/T,g.scaleZ=(0|Math.sqrt(q*q+R*R)*T+.5)/T,g.skewX=0,g.perspective=Z?1/(0>Z?-Z:Z):0,g.x=S,g.y=A,g.z=O}}else if(!(xe&&0!==r.length&&g.x===r[4]&&g.y===r[5]&&(g.rotationX||g.rotationY)||void 0!==g.x&&"none"===G(t,"display",e))){var W=r.length>=6,H=W?r[0]:1,K=r[1]||0,J=r[2]||0,te=W?r[3]:1;g.x=r[4]||0,g.y=r[5]||0,l=Math.sqrt(H*H+K*K),_=Math.sqrt(te*te+J*J),u=H||K?Math.atan2(K,H):g.rotation||0,p=J||te?Math.atan2(J,te)+u:g.skewX||0,f=l-Math.abs(g.scaleX||0),c=_-Math.abs(g.scaleY||0),Math.abs(p)>Math.PI/2&&Math.abs(p)<1.5*Math.PI&&(v?(l*=-1,p+=0>=u?Math.PI:-Math.PI,u+=0>=u?Math.PI:-Math.PI):(_*=-1,p+=0>=p?Math.PI:-Math.PI)),m=(u-g.rotation)%Math.PI,d=(p-g.skewX)%Math.PI,(void 0===g.skewX||f>y||-y>f||c>y||-y>c||m>w&&x>m&&false|m*T||d>w&&x>d&&false|d*T)&&(g.scaleX=l,g.scaleY=_,g.rotation=u,g.skewX=p),xe&&(g.rotationX=g.rotationY=g.z=0,g.perspective=parseFloat(a.defaultTransformPerspective)||0,g.scaleZ=1)}g.zOrigin=b;for(n in g)y>g[n]&&g[n]>-y&&(g[n]=0);return i&&(t._gsTransform=g),g},Pe=function(t){var e,i,s=this.data,r=-s.rotation,n=r+s.skewX,a=1e5,o=(0|Math.cos(r)*s.scaleX*a)/a,h=(0|Math.sin(r)*s.scaleX*a)/a,l=(0|Math.sin(n)*-s.scaleY*a)/a,_=(0|Math.cos(n)*s.scaleY*a)/a,u=this.t.style,p=this.t.currentStyle;if(p){i=h,h=-l,l=-i,e=p.filter,u.filter="";var f,m,d=this.t.offsetWidth,g=this.t.offsetHeight,v="absolute"!==p.position,w="progid:DXImageTransform.Microsoft.Matrix(M11="+o+", M12="+h+", M21="+l+", M22="+_,x=s.x,b=s.y;if(null!=s.ox&&(f=(s.oxp?.01*d*s.ox:s.ox)-d/2,m=(s.oyp?.01*g*s.oy:s.oy)-g/2,x+=f-(f*o+m*h),b+=m-(f*l+m*_)),v)f=d/2,m=g/2,w+=", Dx="+(f-(f*o+m*h)+x)+", Dy="+(m-(f*l+m*_)+b)+")";else{var P,k,R,S=8>c?1:-1;for(f=s.ieOffsetX||0,m=s.ieOffsetY||0,s.ieOffsetX=Math.round((d-((0>o?-o:o)*d+(0>h?-h:h)*g))/2+x),s.ieOffsetY=Math.round((g-((0>_?-_:_)*g+(0>l?-l:l)*d))/2+b),ce=0;4>ce;ce++)k=J[ce],P=p[k],i=-1!==P.indexOf("px")?parseFloat(P):$(this.t,k,parseFloat(P),P.replace(y,""))||0,R=i!==s[k]?2>ce?-s.ieOffsetX:-s.ieOffsetY:2>ce?f-s.ieOffsetX:m-s.ieOffsetY,u[k]=(s[k]=Math.round(i-R*(0===ce||2===ce?1:S)))+"px";w+=", sizingMethod='auto expand')"}u.filter=-1!==e.indexOf("DXImageTransform.Microsoft.Matrix(")?e.replace(O,w):w+" "+e,(0===t||1===t)&&1===o&&0===h&&0===l&&1===_&&(v&&-1===w.indexOf("Dx=0, Dy=0")||T.test(e)&&100!==parseFloat(RegExp.$1)||-1===e.indexOf("gradient(")&&u.removeAttribute("filter"))}},ke=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t.style,u=l.perspective,f=l.scaleX,c=0,m=0,d=0,g=0,v=l.scaleY,y=0,T=0,w=0,x=0,b=l.scaleZ,P=0,k=0,R=0,S=u?-1/u:0,A=l.rotation,C=l.zOrigin,O=1e5;p&&(a=_.top?"top":_.bottom?"bottom":parseFloat(G(this.t,"top",null,!1))?"bottom":"top",i=G(this.t,a,null,!1),o=parseFloat(i)||0,h=i.substr((o+"").length)||"px",l._ffFix=!l._ffFix,_[a]=(l._ffFix?o+.05:o-.05)+h),(A||l.skewX)&&(i=f*Math.cos(A),s=v*Math.sin(A),A-=l.skewX,c=f*-Math.sin(A),v*=Math.cos(A),f=i,g=s),A=l.rotationY,A&&(t=Math.cos(A),e=Math.sin(A),i=f*t,s=g*t,r=b*-e,n=S*-e,m=f*e,y=g*e,b*=t,S*=t,f=i,g=s,w=r,k=n),A=l.rotationX,A&&(t=Math.cos(A),e=Math.sin(A),i=c*t+m*e,s=v*t+y*e,r=x*t+b*e,n=R*t+S*e,m=c*-e+m*t,y=v*-e+y*t,b=x*-e+b*t,S=R*-e+S*t,c=i,v=s,x=r,R=n),C&&(P-=C,d=m*P,T=y*P,P=b*P+C),d=(i=(d+=l.x)-(d|=0))?(0|i*O+(0>i?-.5:.5))/O+d:d,T=(i=(T+=l.y)-(T|=0))?(0|i*O+(0>i?-.5:.5))/O+T:T,P=(i=(P+=l.z)-(P|=0))?(0|i*O+(0>i?-.5:.5))/O+P:P,_[ye]="matrix3d("+[(0|f*O)/O,(0|g*O)/O,(0|w*O)/O,(0|k*O)/O,(0|c*O)/O,(0|v*O)/O,(0|x*O)/O,(0|R*O)/O,(0|m*O)/O,(0|y*O)/O,(0|b*O)/O,(0|S*O)/O,d,T,P,u?1+-P/u:1].join(",")+")"},Re=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t,u=_.style;p&&(t=u.top?"top":u.bottom?"bottom":parseFloat(G(_,"top",null,!1))?"bottom":"top",e=G(_,t,null,!1),i=parseFloat(e)||0,s=e.substr((i+"").length)||"px",l._ffFix=!l._ffFix,u[t]=(l._ffFix?i+.05:i-.05)+s),l.rotation||l.skewX?(r=l.rotation,n=r-l.skewX,a=1e5,o=l.scaleX*a,h=l.scaleY*a,u[ye]="matrix("+(0|Math.cos(r)*o)/a+","+(0|Math.sin(r)*o)/a+","+(0|Math.sin(n)*-h)/a+","+(0|Math.cos(n)*h)/a+","+l.x+","+l.y+")"):u[ye]="matrix("+l.scaleX+",0,0,"+l.scaleY+","+l.x+","+l.y+")"};de("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation",{parser:function(t,e,i,s,n,a,o){if(s._transform)return n;var h,l,_,u,p,f,c,m=s._transform=be(t,r,!0),d=t.style,g=1e-6,v=ve.length,y=o,T={};if("string"==typeof y.transform&&ye)_=d.cssText,d[ye]=y.transform,d.display="block",h=be(t,null,!1),d.cssText=_;else if("object"==typeof y){if(h={scaleX:se(null!=y.scaleX?y.scaleX:y.scale,m.scaleX),scaleY:se(null!=y.scaleY?y.scaleY:y.scale,m.scaleY),scaleZ:se(null!=y.scaleZ?y.scaleZ:y.scale,m.scaleZ),x:se(y.x,m.x),y:se(y.y,m.y),z:se(y.z,m.z),perspective:se(y.transformPerspective,m.perspective)},c=y.directionalRotation,null!=c)if("object"==typeof c)for(_ in c)y[_]=c[_];else y.rotation=c;h.rotation=re("rotation"in y?y.rotation:"shortRotation"in y?y.shortRotation+"_short":"rotationZ"in y?y.rotationZ:m.rotation*I,m.rotation,"rotation",T),xe&&(h.rotationX=re("rotationX"in y?y.rotationX:"shortRotationX"in y?y.shortRotationX+"_short":m.rotationX*I||0,m.rotationX,"rotationX",T),h.rotationY=re("rotationY"in y?y.rotationY:"shortRotationY"in y?y.shortRotationY+"_short":m.rotationY*I||0,m.rotationY,"rotationY",T)),h.skewX=null==y.skewX?m.skewX:re(y.skewX,m.skewX),h.skewY=null==y.skewY?m.skewY:re(y.skewY,m.skewY),(l=h.skewY-m.skewY)&&(h.skewX+=l,h.rotation+=l)}for(p=m.z||m.rotationX||m.rotationY||h.z||h.rotationX||h.rotationY||h.perspective,p||null==y.scale||(h.scaleZ=1);--v>-1;)i=ve[v],u=h[i]-m[i],(u>g||-g>u||null!=F[i])&&(f=!0,n=new pe(m,i,m[i],u,n),i in T&&(n.e=T[i]),n.xs0=0,n.plugin=a,s._overwriteProps.push(n.n));return u=y.transformOrigin,(u||xe&&p&&m.zOrigin)&&(ye?(f=!0,u=(u||G(t,i,r,!1,"50% 50%"))+"",i=we,n=new pe(d,i,0,0,n,-1,"css_transformOrigin"),n.b=d[i],n.plugin=a,xe?(_=m.zOrigin,u=u.split(" "),m.zOrigin=(u.length>2?parseFloat(u[2]):_)||0,n.xs0=n.e=d[i]=u[0]+" "+(u[1]||"50%")+" 0px",n=new pe(m,"zOrigin",0,0,n,-1,n.n),n.b=_,n.xs0=n.e=m.zOrigin):n.xs0=n.e=d[i]=u):ee(u+"",m)),f&&(s._transformType=p||3===this._transformType?3:2),n},prefix:!0}),de("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),de("borderRadius",{defaultValue:"0px",parser:function(t,e,i,n,a){e=this.format(e);var o,h,l,_,u,p,f,c,m,d,g,v,y,T,w,x,b=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],P=t.style;for(m=parseFloat(t.offsetWidth),d=parseFloat(t.offsetHeight),o=e.split(" "),h=0;b.length>h;h++)this.p.indexOf("border")&&(b[h]=V(b[h])),u=_=G(t,b[h],r,!1,"0px"),-1!==u.indexOf(" ")&&(_=u.split(" "),u=_[0],_=_[1]),p=l=o[h],f=parseFloat(u),v=u.substr((f+"").length),y="="===p.charAt(1),y?(c=parseInt(p.charAt(0)+"1",10),p=p.substr(2),c*=parseFloat(p),g=p.substr((c+"").length-(0>c?1:0))||""):(c=parseFloat(p),g=p.substr((c+"").length)),""===g&&(g=s[i]||v),g!==v&&(T=$(t,"borderLeft",f,v),w=$(t,"borderTop",f,v),"%"===g?(u=100*(T/m)+"%",_=100*(w/d)+"%"):"em"===g?(x=$(t,"borderLeft",1,"em"),u=T/x+"em",_=w/x+"em"):(u=T+"px",_=w+"px"),y&&(p=parseFloat(u)+c+g,l=parseFloat(_)+c+g)),a=fe(P,b[h],u+" "+_,p+" "+l,!1,"0px",a);return a},prefix:!0,formatter:le("0px 0px 0px 0px",!1,!0)}),de("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,s,n,a){var o,h,l,_,u,p,f="background-position",m=r||Z(t,null),d=this.format((m?c?m.getPropertyValue(f+"-x")+" "+m.getPropertyValue(f+"-y"):m.getPropertyValue(f):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),g=this.format(e);if(-1!==d.indexOf("%")!=(-1!==g.indexOf("%"))&&(p=G(t,"backgroundImage").replace(R,""),p&&"none"!==p)){for(o=d.split(" "),h=g.split(" "),L.setAttribute("src",p),l=2;--l>-1;)d=o[l],_=-1!==d.indexOf("%"),_!==(-1!==h[l].indexOf("%"))&&(u=0===l?t.offsetWidth-L.width:t.offsetHeight-L.height,o[l]=_?parseFloat(d)/100*u+"px":100*(parseFloat(d)/u)+"%");d=o.join(" ")}return this.parseComplex(t.style,d,g,n,a)},formatter:ee}),de("backgroundSize",{defaultValue:"0 0",formatter:ee}),de("perspective",{defaultValue:"0px",prefix:!0}),de("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),de("transformStyle",{prefix:!0}),de("backfaceVisibility",{prefix:!0}),de("margin",{parser:_e("marginTop,marginRight,marginBottom,marginLeft")}),de("padding",{parser:_e("paddingTop,paddingRight,paddingBottom,paddingLeft")}),de("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,s,n,a){var o,h,l;return 9>c?(h=t.currentStyle,l=8>c?" ":",",o="rect("+h.clipTop+l+h.clipRight+l+h.clipBottom+l+h.clipLeft+")",e=this.format(e).split(",").join(l)):(o=this.format(G(t,this.p,r,!1,this.dflt)),e=this.format(e)),this.parseComplex(t.style,o,e,n,a)}}),de("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),de("autoRound,strictUnits",{parser:function(t,e,i,s,r){return r}}),de("border",{defaultValue:"0px solid #000",parser:function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,"borderTopWidth",r,!1,"0px")+" "+G(t,"borderTopStyle",r,!1,"solid")+" "+G(t,"borderTopColor",r,!1,"#000")),this.format(e),n,a)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(he)||["#000"])[0]}}),de("float,cssFloat,styleFloat",{parser:function(t,e,i,s,r){var n=t.style,a="cssFloat"in n?"cssFloat":"styleFloat";return new pe(n,a,0,0,r,-1,i,!1,0,n[a],e)}});var Se=function(t){var e,i=this.t,s=i.filter,r=0|this.s+this.c*t;100===r&&(-1===s.indexOf("atrix(")&&-1===s.indexOf("radient(")?(i.removeAttribute("filter"),e=!G(this.data,"filter")):(i.filter=s.replace(x,""),e=!0)),e||(this.xn1&&(i.filter=s=s||"alpha(opacity=100)"),-1===s.indexOf("opacity")?i.filter+=" alpha(opacity="+r+")":i.filter=s.replace(T,"opacity="+r))};de("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,s,n,a){var o,h=parseFloat(G(t,"opacity",r,!1,"1")),l=t.style;return e=parseFloat(e),"autoAlpha"===i&&(o=G(t,"visibility",r),1===h&&"hidden"===o&&0!==e&&(h=0),n=new pe(l,"visibility",0,0,n,-1,null,!1,0,0!==h?"visible":"hidden",0===e?"hidden":"visible"),n.xs0="visible",s._overwriteProps.push(n.n)),z?n=new pe(l,"opacity",h,e-h,n):(n=new pe(l,"opacity",100*h,100*(e-h),n),n.xn1="autoAlpha"===i?1:0,l.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=a,n.setRatio=Se),n}});var Ae=function(t,e){e&&(t.removeProperty?t.removeProperty(e.replace(P,"-$1").toLowerCase()):t.removeAttribute(e))},Ce=function(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.className=0===t?this.b:this.e;for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Ae(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.className!==this.e&&(this.t.className=this.e)};de("className",{parser:function(t,e,s,n,a,o,h){var l,_,u,p,f,c=t.className,m=t.style.cssText;if(a=n._classNamePT=new pe(t,s,0,0,a,2),a.setRatio=Ce,a.pr=-11,i=!0,a.b=c,_=W(t,r),u=t._gsClassPT){for(p={},f=u.data;f;)p[f.p]=1,f=f._next;u.setRatio(1)}return t._gsClassPT=a,a.e="="!==e.charAt(1)?e:c.replace(RegExp("\\s*\\b"+e.substr(2)+"\\b"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),n._tween._duration&&(t.className=a.e,l=H(t,_,W(t),h,p),t.className=c,a.data=l.firstMPT,t.style.cssText=m,a=a.xfirst=n.parse(t,l.difs,a,o)),a}});var Oe=function(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration)for(var e,i="all"===this.e,s=this.t.style,r=i?s.cssText.split(";"):this.e.split(","),n=r.length,a=o.transform.parse;--n>-1;)e=r[n],i&&(e=e.substr(0,e.indexOf(":")).split(" ").join("")),o[e]&&(e=o[e].parse===a?ye:o[e].p),Ae(s,e)};for(de("clearProps",{parser:function(t,e,s,r,n){return n=new pe(t,s,0,0,n,2),n.setRatio=Oe,n.e=e,n.pr=-10,n.data=r._tween,i=!0,n}}),h="bezier,throwProps,physicsProps,physics2D".split(","),ce=h.length;ce--;)ge(h[ce]);h=a.prototype,h._firstPT=null,h._onInitTween=function(t,e,o){if(!t.nodeType)return!1;this._target=t,this._tween=o,this._vars=e,l=e.autoRound,i=!1,s=e.suffixMap||a.suffixMap,r=Z(t,""),n=this._overwriteProps;var h,p,c,m,d,g,v,y,T,x=t.style;if(_&&""===x.zIndex&&(h=G(t,"zIndex",r),("auto"===h||""===h)&&(x.zIndex=0)),"string"==typeof e&&(m=x.cssText,h=W(t,r),x.cssText=m+";"+e,h=H(t,h,W(t)).difs,!z&&w.test(e)&&(h.opacity=parseFloat(RegExp.$1)),e=h,x.cssText=m),this._firstPT=p=this.parse(t,e,null),this._transformType){for(T=3===this._transformType,ye?u&&(_=!0,""===x.zIndex&&(v=G(t,"zIndex",r),("auto"===v||""===v)&&(x.zIndex=0)),f&&(x.WebkitBackfaceVisibility=this._vars.WebkitBackfaceVisibility||(T?"visible":"hidden"))):x.zoom=1,c=p;c&&c._next;)c=c._next;y=new pe(t,"transform",0,0,null,2),this._linkCSSP(y,null,c),y.setRatio=T&&xe?ke:ye?Re:Pe,y.data=this._transform||be(t,r,!0),n.pop()}if(i){for(;p;){for(g=p._next,c=m;c&&c.pr>p.pr;)c=c._next;(p._prev=c?c._prev:d)?p._prev._next=p:m=p,(p._next=c)?c._prev=p:d=p,p=g}this._firstPT=m}return!0},h.parse=function(t,e,i,n){var a,h,_,u,p,f,c,m,d,g,v=t.style;for(a in e)f=e[a],h=o[a],h?i=h.parse(t,f,a,this,i,n,e):(p=G(t,a,r)+"",d="string"==typeof f,"color"===a||"fill"===a||"stroke"===a||-1!==a.indexOf("Color")||d&&b.test(f)?(d||(f=oe(f),f=(f.length>3?"rgba(":"rgb(")+f.join(",")+")"),i=fe(v,a,p,f,!0,"transparent",i,0,n)):!d||-1===f.indexOf(" ")&&-1===f.indexOf(",")?(_=parseFloat(p),c=_||0===_?p.substr((_+"").length):"",(""===p||"auto"===p)&&("width"===a||"height"===a?(_=te(t,a,r),c="px"):"left"===a||"top"===a?(_=Q(t,a,r),c="px"):(_="opacity"!==a?0:1,c="")),g=d&&"="===f.charAt(1),g?(u=parseInt(f.charAt(0)+"1",10),f=f.substr(2),u*=parseFloat(f),m=f.replace(y,"")):(u=parseFloat(f),m=d?f.substr((u+"").length)||"":""),""===m&&(m=s[a]||c),f=u||0===u?(g?u+_:u)+m:e[a],c!==m&&""!==m&&(u||0===u)&&(_||0===_)&&(_=$(t,a,_,c),"%"===m?(_/=$(t,a,100,"%")/100,_>100&&(_=100),e.strictUnits!==!0&&(p=_+"%")):"em"===m?_/=$(t,a,1,"em"):(u=$(t,a,u,m),m="px"),g&&(u||0===u)&&(f=u+_+m)),g&&(u+=_),!_&&0!==_||!u&&0!==u?void 0!==v[a]&&(f||"NaN"!=f+""&&null!=f)?(i=new pe(v,a,u||_||0,0,i,-1,"css_"+a,!1,0,p,f),i.xs0="none"!==f||"display"!==a&&-1===a.indexOf("Style")?f:p):B("invalid "+a+" tween value: "+e[a]):(i=new pe(v,a,_,u-_,i,0,"css_"+a,l!==!1&&("px"===m||"zIndex"===a),0,p,f),i.xs0=m)):i=fe(v,a,p,f,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},h.setRatio=function(t){var e,i,s,r=this._firstPT,n=1e-6;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;r;){if(e=r.c*t+r.s,r.r?e=e>0?0|e+.5:0|e-.5:n>e&&e>-n&&(e=0),r.type)if(1===r.type)if(s=r.l,2===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2;else if(3===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3;else if(4===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4;else if(5===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4+r.xn4+r.xs5;else{for(i=r.xs0+e+r.xs1,s=1;r.l>s;s++)i+=r["xn"+s]+r["xs"+(s+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},h._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2},h._linkCSSP=function(t,e,i,s){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),i?i._next=t:s||null!==this._firstPT||(this._firstPT=t),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next),t._next=e,t._prev=i),t},h._kill=function(e){var i,s,r,n=e;if(e.css_autoAlpha||e.css_alpha){n={};for(s in e)n[s]=e[s];n.css_opacity=1,n.css_autoAlpha&&(n.css_visibility=1)}return e.css_className&&(i=this._classNamePT)&&(r=i.xfirst,r&&r._prev?this._linkCSSP(r._prev,i._next,r._prev._prev):r===this._firstPT&&(this._firstPT=i._next),i._next&&this._linkCSSP(i._next,i._next._next,r._prev),this._classNamePT=null),t.prototype._kill.call(this,n)};var De=function(t,e,i){var s,r,n,a;if(t.slice)for(r=t.length;--r>-1;)De(t[r],e,i);else for(s=t.childNodes,r=s.length;--r>-1;)n=s[r],a=n.type,n.style&&(e.push(W(n)),i&&i.push(n)),1!==a&&9!==a&&11!==a||!n.childNodes.length||De(n,e,i)};return a.cascadeTo=function(t,i,s){var r,n,a,o=e.to(t,i,s),h=[o],l=[],_=[],u=[],p=e._internals.reservedProps;for(t=o._targets||o.target,De(t,l,u),o.render(i,!0),De(t,_),o.render(0,!0),o._enabled(!0),r=u.length;--r>-1;)if(n=H(u[r],l[r],_[r]),n.firstMPT){n=n.difs;for(a in s)p[a]&&(n[a]=s[a]);h.push(e.to(u[r],i,n))}return h},t.activate([a]),a},!0),function(){var t=window._gsDefine.plugin({propName:"roundProps",priority:-1,API:2,init:function(t,e,i){return this._tween=i,!0}}),e=t.prototype;e._onInitAllProps=function(){for(var t,e,i,s=this._tween,r=s.vars.roundProps instanceof Array?s.vars.roundProps:s.vars.roundProps.split(","),n=r.length,a={},o=s._propLookup.roundProps;--n>-1;)a[r[n]]=1;for(n=r.length;--n>-1;)for(t=r[n],e=s._firstPT;e;)i=e._next,e.pg?e.t._roundProps(a,!0):e.n===t&&(this._add(e.t,t,e.s,e.c),i&&(i._prev=e._prev),e._prev?e._prev._next=i:s._firstPT===e&&(s._firstPT=i),e._next=e._prev=null,s._propLookup[t]=o),e=i;return!1},e._add=function(t,e,i,s){this._addTween(t,e,i,i+s,e,!0),this._overwriteProps.push(e)}}(),window._gsDefine.plugin({propName:"attr",API:2,init:function(t,e){var i;if("function"!=typeof t.setAttribute)return!1;this._target=t,this._proxy={};for(i in e)this._addTween(this._proxy,i,parseFloat(t.getAttribute(i)),e[i],i),this._overwriteProps.push(i);return!0},set:function(t){this._super.setRatio.call(this,t);for(var e,i=this._overwriteProps,s=i.length;--s>-1;)e=i[s],this._target.setAttribute(e,this._proxy[e]+"")}}),window._gsDefine.plugin({propName:"directionalRotation",API:2,init:function(t,e){"object"!=typeof e&&(e={rotation:e}),this.finals={};var i,s,r,n,a,o,h=e.useRadians===!0?2*Math.PI:360,l=1e-6;for(i in e)"useRadians"!==i&&(o=(e[i]+"").split("_"),s=o[0],r=parseFloat("function"!=typeof t[i]?t[i]:t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)]()),n=this.finals[i]="string"==typeof s&&"="===s.charAt(1)?r+parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)):Number(s)||0,a=n-r,o.length&&(s=o.join("_"),-1!==s.indexOf("short")&&(a%=h,a!==a%(h/2)&&(a=0>a?a+h:a-h)),-1!==s.indexOf("_cw")&&0>a?a=(a+9999999999*h)%h-(0|a/h)*h:-1!==s.indexOf("ccw")&&a>0&&(a=(a-9999999999*h)%h-(0|a/h)*h)),(a>l||-l>a)&&(this._addTween(t,i,r,r+a,i),this._overwriteProps.push(i)));return!0},set:function(t){var e;if(1!==t)this._super.setRatio.call(this,t);else for(e=this._firstPT;e;)e.f?e.t[e.p](this.finals[e.p]):e.t[e.p]=this.finals[e.p],e=e._next +}})._autoCSS=!0,window._gsDefine("easing.Back",["easing.Ease"],function(t){var e,i,s,r=window.GreenSockGlobals||window,n=r.com.greensock,a=2*Math.PI,o=Math.PI/2,h=n._class,l=function(e,i){var s=h("easing."+e,function(){},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,s},_=t.register||function(){},u=function(t,e,i,s){var r=h("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return _(r,t),r},p=function(t,e,i){this.t=t,this.v=e,i&&(this.next=i,i.prev=this,this.c=i.v-e,this.gap=i.t-t)},f=function(e,i){var s=h("easing."+e,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,r.config=function(t){return new s(t)},s},c=u("Back",f("BackOut",function(t){return(t-=1)*t*((this._p1+1)*t+this._p1)+1}),f("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),f("BackInOut",function(t){return 1>(t*=2)?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),m=h("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:t>1&&(t=1),this._p=1!==t?e:0,this._p1=(1-t)/2,this._p2=t,this._p3=this._p1+this._p2,this._calcEnd=i===!0},!0),d=m.prototype=new t;return d.constructor=m,d.getRatio=function(t){var e=t+(.5-t)*this._p;return this._p1>t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},m.ease=new m(.7,.7),d.config=m.config=function(t,e,i){return new m(t,e,i)},e=h("easing.SteppedEase",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0),d=e.prototype=new t,d.constructor=e,d.getRatio=function(t){return 0>t?t=0:t>=1&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=e.config=function(t){return new e(t)},i=h("easing.RoughEase",function(e){e=e||{};for(var i,s,r,n,a,o,h=e.taper||"none",l=[],_=0,u=0|(e.points||20),f=u,c=e.randomize!==!1,m=e.clamp===!0,d=e.template instanceof t?e.template:null,g="number"==typeof e.strength?.4*e.strength:.4;--f>-1;)i=c?Math.random():1/u*f,s=d?d.getRatio(i):i,"none"===h?r=g:"out"===h?(n=1-i,r=n*n*g):"in"===h?r=i*i*g:.5>i?(n=2*i,r=.5*n*n*g):(n=2*(1-i),r=.5*n*n*g),c?s+=Math.random()*r-.5*r:f%2?s+=.5*r:s-=.5*r,m&&(s>1?s=1:0>s&&(s=0)),l[_++]={x:i,y:s};for(l.sort(function(t,e){return t.x-e.x}),o=new p(1,1,null),f=u;--f>-1;)a=l[f],o=new p(a.x,a.y,o);this._prev=new p(0,0,0!==o.t?o:o.next)},!0),d=i.prototype=new t,d.constructor=i,d.getRatio=function(t){var e=this._prev;if(t>e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return this._prev=e,e.v+(t-e.t)/e.gap*e.c},d.config=function(t){return new i(t)},i.ease=new i,u("Bounce",l("BounceOut",function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),l("BounceIn",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:2/2.75>t?1-(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),l("BounceInOut",function(t){var e=.5>t;return t=e?1-2*t:2*t-1,t=1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),u("Circ",l("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),l("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),l("CircInOut",function(t){return 1>(t*=2)?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),s=function(e,i,s){var r=h("easing."+e,function(t,e){this._p1=t||1,this._p2=e||s,this._p3=this._p2/a*(Math.asin(1/this._p1)||0)},!0),n=r.prototype=new t;return n.constructor=r,n.getRatio=i,n.config=function(t,e){return new r(t,e)},r},u("Elastic",s("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*a/this._p2)+1},.3),s("ElasticIn",function(t){return-(this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2))},.3),s("ElasticInOut",function(t){return 1>(t*=2)?-.5*this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2):.5*this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*a/this._p2)+1},.45)),u("Expo",l("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),l("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),l("ExpoInOut",function(t){return 1>(t*=2)?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),u("Sine",l("SineOut",function(t){return Math.sin(t*o)}),l("SineIn",function(t){return-Math.cos(t*o)+1}),l("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),h("easing.EaseLookup",{find:function(e){return t.map[e]}},!0),_(r.SlowMo,"SlowMo","ease,"),_(i,"RoughEase","ease,"),_(e,"SteppedEase","ease,"),c},!0)}),function(t){"use strict";var e,i,s,r,n,a=t.GreenSockGlobals||t,o=function(t){var e,i=t.split("."),s=a;for(e=0;i.length>e;e++)s[i[e]]=s=s[i[e]]||{};return s},h=o("com.greensock"),l=[].slice,_=function(){},u={},p=function(e,i,s,r){this.sc=u[e]?u[e].sc:[],u[e]=this,this.gsClass=null,this.func=s;var n=[];this.check=function(h){for(var l,_,f,c,m=i.length,d=m;--m>-1;)(l=u[i[m]]||new p(i[m],[])).gsClass?(n[m]=l.gsClass,d--):h&&l.sc.push(this);if(0===d&&s)for(_=("com.greensock."+e).split("."),f=_.pop(),c=o(_.join("."))[f]=this.gsClass=s.apply(s,n),r&&(a[f]=c,"function"==typeof define&&define.amd?define((t.GreenSockAMDPath?t.GreenSockAMDPath+"/":"")+e.split(".").join("/"),[],function(){return c}):"undefined"!=typeof module&&module.exports&&(module.exports=c)),m=0;this.sc.length>m;m++)this.sc[m].check()},this.check(!0)},f=t._gsDefine=function(t,e,i,s){return new p(t,e,i,s)},c=h._class=function(t,e,i){return e=e||function(){},f(t,[],function(){return e},i),e};f.globals=a;var m=[0,0,1,1],d=[],g=c("easing.Ease",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?m.concat(e):m},!0),v=g.map={},y=g.register=function(t,e,i,s){for(var r,n,a,o,l=e.split(","),_=l.length,u=(i||"easeIn,easeOut,easeInOut").split(",");--_>-1;)for(n=l[_],r=s?c("easing."+n,null,!0):h.easing[n]||{},a=u.length;--a>-1;)o=u[a],v[n+"."+o]=v[o+n]=r[o]=t.getRatio?t:t[o]||new t};for(s=g.prototype,s._calcEnd=!1,s.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:.5>t?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:.5>t?s/2:1-s/2},e=["Linear","Quad","Cubic","Quart","Quint,Strong"],i=e.length;--i>-1;)s=e[i]+",Power"+i,y(new g(null,null,1,i),s,"easeOut",!0),y(new g(null,null,2,i),s,"easeIn"+(0===i?",easeNone":"")),y(new g(null,null,3,i),s,"easeInOut");v.linear=h.easing.Linear.easeIn,v.swing=h.easing.Quad.easeInOut;var T=c("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});s=T.prototype,s.addEventListener=function(t,e,i,s,a){a=a||0;var o,h,l=this._listeners[t],_=0;for(null==l&&(this._listeners[t]=l=[]),h=l.length;--h>-1;)o=l[h],o.c===e&&o.s===i?l.splice(h,1):0===_&&a>o.pr&&(_=h+1);l.splice(_,0,{c:e,s:i,up:s,pr:a}),this!==r||n||r.wake()},s.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;--i>-1;)if(s[i].c===e)return s.splice(i,1),void 0},s.dispatchEvent=function(t){var e,i,s,r=this._listeners[t];if(r)for(e=r.length,i=this._eventTarget;--e>-1;)s=r[e],s.up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i)};var w=t.requestAnimationFrame,x=t.cancelAnimationFrame,b=Date.now||function(){return(new Date).getTime()};for(e=["ms","moz","webkit","o"],i=e.length;--i>-1&&!w;)w=t[e[i]+"RequestAnimationFrame"],x=t[e[i]+"CancelAnimationFrame"]||t[e[i]+"CancelRequestAnimationFrame"];c("Ticker",function(t,e){var i,s,a,o,h,l=this,u=b(),p=e!==!1&&w,f=function(t){l.time=(b()-u)/1e3;var e=a,r=l.time-h;(!i||r>0||t===!0)&&(l.frame++,h+=r+(r>=o?.004:o-r),l.dispatchEvent("tick")),t!==!0&&e===a&&(a=s(f))};T.call(l),this.time=this.frame=0,this.tick=function(){f(!0)},this.sleep=function(){null!=a&&(p&&x?x(a):clearTimeout(a),s=_,a=null,l===r&&(n=!1))},this.wake=function(){null!==a&&l.sleep(),s=0===i?_:p&&w?w:function(t){return setTimeout(t,0|1e3*(h-l.time)+1)},l===r&&(n=!0),f(2)},this.fps=function(t){return arguments.length?(i=t,o=1/(i||60),h=this.time+o,l.wake(),void 0):i},this.useRAF=function(t){return arguments.length?(l.sleep(),p=t,l.fps(i),void 0):p},l.fps(t),setTimeout(function(){p&&(!a||5>l.frame)&&l.useRAF(!1)},1500)}),s=h.Ticker.prototype=new h.events.EventDispatcher,s.constructor=h.Ticker;var P=c("core.Animation",function(t,e){if(this.vars=e||{},this._duration=this._totalDuration=t||0,this._delay=Number(this.vars.delay)||0,this._timeScale=1,this._active=this.vars.immediateRender===!0,this.data=this.vars.data,this._reversed=this.vars.reversed===!0,N){n||r.wake();var i=this.vars.useFrames?E:N;i.add(this,i._time),this.vars.paused&&this.paused(!0)}});r=P.ticker=new h.Ticker,s=P.prototype,s._dirty=s._gc=s._initted=s._paused=!1,s._totalTime=s._time=0,s._rawPrevTime=-1,s._next=s._last=s._onUpdate=s._timeline=s.timeline=null,s._paused=!1,s.play=function(t,e){return arguments.length&&this.seek(t,e),this.reversed(!1).paused(!1)},s.pause=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!0)},s.resume=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!1)},s.seek=function(t,e){return this.totalTime(Number(t),e!==!1)},s.restart=function(t,e){return this.reversed(!1).paused(!1).totalTime(t?-this._delay:0,e!==!1,!0)},s.reverse=function(t,e){return arguments.length&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},s.render=function(){},s.invalidate=function(){return this},s._enabled=function(t,e){return n||r.wake(),this._gc=!t,this._active=t&&!this._paused&&this._totalTime>0&&this._totalTime-1;)"{self}"===i[r]&&(i=n[t+"Params"]=i.concat(),i[r]=this);"onUpdate"===t&&(this._onUpdate=e)}return this},s.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},s.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:t,e)):this._time},s.totalTime=function(t,e,i){if(n||r.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>t&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,a=this._timeline;if(t>s&&!i&&(t=s),this._startTime=(this._paused?this._pauseTime:a._time)-(this._reversed?s-t:t)/this._timeScale,a._dirty||this._uncache(!1),!a._active)for(;a._timeline;)a.totalTime(a._totalTime,!0),a=a._timeline}this._gc&&this._enabled(!0,!1),this._totalTime!==t&&this.render(t,e,!1)}return this},s.startTime=function(t){return arguments.length?(t!==this._startTime&&(this._startTime=t,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,t-this._delay)),this):this._startTime},s.timeScale=function(t){if(!arguments.length)return this._timeScale;if(t=t||1e-6,this._timeline&&this._timeline.smoothChildTiming){var e=this._pauseTime,i=e||0===e?e:this._timeline.totalTime();this._startTime=i-(i-this._startTime)*this._timeScale/t}return this._timeScale=t,this._uncache(!1)},s.reversed=function(t){return arguments.length?(t!=this._reversed&&(this._reversed=t,this.totalTime(this._totalTime,!0)),this):this._reversed},s.paused=function(t){if(!arguments.length)return this._paused;if(t!=this._paused&&this._timeline){n||t||r.wake();var e=this._timeline.rawTime(),i=e-this._pauseTime;!t&&this._timeline.smoothChildTiming&&(this._startTime+=i,this._uncache(!1)),this._pauseTime=t?e:null,this._paused=t,this._active=!t&&this._totalTime>0&&this._totalTimes;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},s._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline&&this._uncache(!0)),this},s.render=function(t,e,i){var s,r=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;r;)s=r._next,(r._active||t>=r._startTime&&!r._paused)&&(r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=s},s.rawTime=function(){return n||r.wake(),this._totalTime};var R=c("TweenLite",function(t,e,i){if(P.call(this,e,i),null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:R.selector(t)||t;var s,r,n,a=t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style,o=this.vars.overwrite;if(this._overwrite=o=null==o?F[R.defaultOverwrite]:"number"==typeof o?o>>0:F[o],(a||t instanceof Array)&&"number"!=typeof t[0])for(this._targets=n=l.call(t,0),this._propLookup=[],this._siblings=[],s=0;n.length>s;s++)r=n[s],r?"string"!=typeof r?r.length&&r[0]&&r[0].nodeType&&r[0].style?(n.splice(s--,1),this._targets=n=n.concat(l.call(r,0))):(this._siblings[s]=L(r,this,!1),1===o&&this._siblings[s].length>1&&X(r,this,null,1,this._siblings[s])):(r=n[s--]=R.selector(r),"string"==typeof r&&n.splice(s+1,1)):n.splice(s--,1);else this._propLookup={},this._siblings=L(t,this,!1),1===o&&this._siblings.length>1&&X(t,this,null,1,this._siblings);(this.vars.immediateRender||0===e&&0===this._delay&&this.vars.immediateRender!==!1)&&this.render(-this._delay,!1,!0)},!0),S=function(t){return t.length&&t[0]&&t[0].nodeType&&t[0].style},A=function(t,e){var i,s={};for(i in t)I[i]||i in e&&"x"!==i&&"y"!==i&&"width"!==i&&"height"!==i&&"className"!==i||!(!O[i]||O[i]&&O[i]._autoCSS)||(s[i]=t[i],delete t[i]);t.css=s};s=R.prototype=new P,s.constructor=R,s.kill()._gc=!1,s.ratio=0,s._firstPT=s._targets=s._overwrittenProps=s._startAt=null,s._notifyPluginsOfEnabled=!1,R.version="1.9.7",R.defaultEase=s._ease=new g(null,null,1,1),R.defaultOverwrite="auto",R.ticker=r,R.autoSleep=!0,R.selector=t.$||t.jQuery||function(e){return t.$?(R.selector=t.$,t.$(e)):t.document?t.document.getElementById("#"===e.charAt(0)?e.substr(1):e):e};var C=R._internals={},O=R._plugins={},D=R._tweenLookup={},M=0,I=C.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1},F={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},E=P._rootFramesTimeline=new k,N=P._rootTimeline=new k;N._startTime=r.time,E._startTime=r.frame,N._active=E._active=!0,P._updateRoot=function(){if(N.render((r.time-N._startTime)*N._timeScale,!1,!1),E.render((r.frame-E._startTime)*E._timeScale,!1,!1),!(r.frame%120)){var t,e,i;for(i in D){for(e=D[i].tweens,t=e.length;--t>-1;)e[t]._gc&&e.splice(t,1);0===e.length&&delete D[i]}if(i=N._first,(!i||i._paused)&&R.autoSleep&&!E._first&&1===r._listeners.tick.length){for(;i&&i._paused;)i=i._next;i||r.sleep()}}},r.addEventListener("tick",P._updateRoot);var L=function(t,e,i){var s,r,n=t._gsTweenID;if(D[n||(t._gsTweenID=n="t"+M++)]||(D[n]={target:t,tweens:[]}),e&&(s=D[n].tweens,s[r=s.length]=e,i))for(;--r>-1;)s[r]===e&&s.splice(r,1);return D[n].tweens},X=function(t,e,i,s,r){var n,a,o,h;if(1===s||s>=4){for(h=r.length,n=0;h>n;n++)if((o=r[n])!==e)o._gc||o._enabled(!1,!1)&&(a=!0);else if(5===s)break;return a}var l,_=e._startTime+1e-10,u=[],p=0,f=0===e._duration;for(n=r.length;--n>-1;)(o=r[n])===e||o._gc||o._paused||(o._timeline!==e._timeline?(l=l||U(e,0,f),0===U(o,l,f)&&(u[p++]=o)):_>=o._startTime&&o._startTime+o.totalDuration()/o._timeScale+1e-10>_&&((f||!o._initted)&&2e-10>=_-o._startTime||(u[p++]=o)));for(n=p;--n>-1;)o=u[n],2===s&&o._kill(i,t)&&(a=!0),(2!==s||!o._firstPT&&o._initted)&&o._enabled(!1,!1)&&(a=!0);return a},U=function(t,e,i){for(var s=t._timeline,r=s._timeScale,n=t._startTime,a=1e-10;s._timeline;){if(n+=s._startTime,r*=s._timeScale,s._paused)return-100;s=s._timeline}return n/=r,n>e?n-e:i&&n===e||!t._initted&&2*a>n-e?a:(n+=t.totalDuration()/t._timeScale/r)>e+a?0:n-e-a};s._init=function(){var t,e,i,s,r=this.vars,n=this._overwrittenProps,a=this._duration,o=r.ease;if(r.startAt){if(r.startAt.overwrite=0,r.startAt.immediateRender=!0,this._startAt=R.to(this.target,0,r.startAt),r.immediateRender&&(this._startAt=null,0===this._time&&0!==a))return}else if(r.runBackwards&&r.immediateRender&&0!==a)if(this._startAt)this._startAt.render(-1,!0),this._startAt=null;else if(0===this._time){i={};for(s in r)I[s]&&"autoCSS"!==s||(i[s]=r[s]);return i.overwrite=0,this._startAt=R.to(this.target,0,i),void 0}if(this._ease=o?o instanceof g?r.easeParams instanceof Array?o.config.apply(o,r.easeParams):o:"function"==typeof o?new g(o,r.easeParams):v[o]||R.defaultEase:R.defaultEase,this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(t=this._targets.length;--t>-1;)this._initProps(this._targets[t],this._propLookup[t]={},this._siblings[t],n?n[t]:null)&&(e=!0);else e=this._initProps(this.target,this._propLookup,this._siblings,n);if(e&&R._onPluginEvent("_onInitAllProps",this),n&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),r.runBackwards)for(i=this._firstPT;i;)i.s+=i.c,i.c=-i.c,i=i._next;this._onUpdate=r.onUpdate,this._initted=!0},s._initProps=function(t,e,i,s){var r,n,a,o,h,l,_;if(null==t)return!1;this.vars.css||t.style&&t.nodeType&&O.css&&this.vars.autoCSS!==!1&&A(this.vars,t);for(r in this.vars){if(I[r]){if(("onStartParams"===r||"onUpdateParams"===r||"onCompleteParams"===r||"onReverseCompleteParams"===r||"onRepeatParams"===r)&&(h=this.vars[r]))for(n=h.length;--n>-1;)"{self}"===h[n]&&(h=this.vars[r]=h.concat(),h[n]=this)}else if(O[r]&&(o=new O[r])._onInitTween(t,this.vars[r],this)){for(this._firstPT=l={_next:this._firstPT,t:o,p:"setRatio",s:0,c:1,f:!0,n:r,pg:!0,pr:o._priority},n=o._overwriteProps.length;--n>-1;)e[o._overwriteProps[n]]=this._firstPT;(o._priority||o._onInitAllProps)&&(a=!0),(o._onDisable||o._onEnable)&&(this._notifyPluginsOfEnabled=!0)}else this._firstPT=e[r]=l={_next:this._firstPT,t:t,p:r,f:"function"==typeof t[r],n:r,pg:!1,pr:0},l.s=l.f?t[r.indexOf("set")||"function"!=typeof t["get"+r.substr(3)]?r:"get"+r.substr(3)]():parseFloat(t[r]),_=this.vars[r],l.c="string"==typeof _&&"="===_.charAt(1)?parseInt(_.charAt(0)+"1",10)*Number(_.substr(2)):Number(_)-l.s||0;l&&l._next&&(l._next._prev=l)}return s&&this._kill(s,t)?this._initProps(t,e,i,s):this._overwrite>1&&this._firstPT&&i.length>1&&X(t,this,e,this._overwrite,i)?(this._kill(e,t),this._initProps(t,e,i,s)):a},s.render=function(t,e,i){var s,r,n,a=this._time;if(t>=this._duration)this._totalTime=this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t);else if(1e-7>t)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==a||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0);else if(this._totalTime=this._time=t,this._easeType){var o=t/this._duration,h=this._easeType,l=this._easePower;(1===h||3===h&&o>=.5)&&(o=1-o),3===h&&(o*=2),1===l?o*=o:2===l?o*=o*o:3===l?o*=o*o*o:4===l&&(o*=o*o*o*o),this.ratio=1===h?1-o:2===h?o:.5>t/this._duration?o/2:1-o/2}else this.ratio=this._ease.getRatio(t/this._duration);if(this._time!==a||i){if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===a&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._time||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||d))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||d)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||d)))}},s._kill=function(t,e){if("all"===t&&(t=null),null==t&&(null==e||e===this.target))return this._enabled(!1,!1);e="string"!=typeof e?e||this._targets||this.target:R.selector(e)||e;var i,s,r,n,a,o,h,l;if((e instanceof Array||S(e))&&"number"!=typeof e[0])for(i=e.length;--i>-1;)this._kill(t,e[i])&&(o=!0);else{if(this._targets){for(i=this._targets.length;--i>-1;)if(e===this._targets[i]){a=this._propLookup[i]||{},this._overwrittenProps=this._overwrittenProps||[],s=this._overwrittenProps[i]=t?this._overwrittenProps[i]||{}:"all";break}}else{if(e!==this.target)return!1;a=this._propLookup,s=this._overwrittenProps=t?this._overwrittenProps||{}:"all"}if(a){h=t||a,l=t!==s&&"all"!==s&&t!==a&&(null==t||t._tempKill!==!0);for(r in h)(n=a[r])&&(n.pg&&n.t._kill(h)&&(o=!0),n.pg&&0!==n.t._overwriteProps.length||(n._prev?n._prev._next=n._next:n===this._firstPT&&(this._firstPT=n._next),n._next&&(n._next._prev=n._prev),n._next=n._prev=null),delete a[r]),l&&(s[r]=1);!this._firstPT&&this._initted&&this._enabled(!1,!1)}}return o},s.invalidate=function(){return this._notifyPluginsOfEnabled&&R._onPluginEvent("_onDisable",this),this._firstPT=null,this._overwrittenProps=null,this._onUpdate=null,this._startAt=null,this._initted=this._active=this._notifyPluginsOfEnabled=!1,this._propLookup=this._targets?{}:[],this},s._enabled=function(t,e){if(n||r.wake(),t&&this._gc){var i,s=this._targets;if(s)for(i=s.length;--i>-1;)this._siblings[i]=L(s[i],this,!0);else this._siblings=L(this.target,this,!0)}return P.prototype._enabled.call(this,t,e),this._notifyPluginsOfEnabled&&this._firstPT?R._onPluginEvent(t?"_onEnable":"_onDisable",this):!1},R.to=function(t,e,i){return new R(t,e,i)},R.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new R(t,e,i)},R.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new R(t,e,s)},R.delayedCall=function(t,e,i,s,r){return new R(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:r,overwrite:0})},R.set=function(t,e){return new R(t,0,e)},R.killTweensOf=R.killDelayedCallsTo=function(t,e){for(var i=R.getTweensOf(t),s=i.length;--s>-1;)i[s]._kill(e,t)},R.getTweensOf=function(t){if(null==t)return[];t="string"!=typeof t?t:R.selector(t)||t;var e,i,s,r;if((t instanceof Array||S(t))&&"number"!=typeof t[0]){for(e=t.length,i=[];--e>-1;)i=i.concat(R.getTweensOf(t[e]));for(e=i.length;--e>-1;)for(r=i[e],s=e;--s>-1;)r===i[s]&&i.splice(e,1)}else for(i=L(t).concat(),e=i.length;--e>-1;)i[e]._gc&&i.splice(e,1);return i};var z=c("plugins.TweenPlugin",function(t,e){this._overwriteProps=(t||"").split(","),this._propName=this._overwriteProps[0],this._priority=e||0,this._super=z.prototype},!0);if(s=z.prototype,z.version="1.9.1",z.API=2,s._firstPT=null,s._addTween=function(t,e,i,s,r,n){var a,o;null!=s&&(a="number"==typeof s||"="!==s.charAt(1)?Number(s)-i:parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)))&&(this._firstPT=o={_next:this._firstPT,t:t,p:e,s:i,c:a,f:"function"==typeof t[e],n:r||e,r:n},o._next&&(o._next._prev=o))},s.setRatio=function(t){for(var e,i=this._firstPT,s=1e-6;i;)e=i.c*t+i.s,i.r?e=e+(e>0?.5:-.5)>>0:s>e&&e>-s&&(e=0),i.f?i.t[i.p](e):i.t[i.p]=e,i=i._next},s._kill=function(t){var e,i=this._overwriteProps,s=this._firstPT;if(null!=t[this._propName])this._overwriteProps=[];else for(e=i.length;--e>-1;)null!=t[i[e]]&&i.splice(e,1);for(;s;)null!=t[s.n]&&(s._next&&(s._next._prev=s._prev),s._prev?(s._prev._next=s._next,s._prev=null):this._firstPT===s&&(this._firstPT=s._next)),s=s._next;return!1},s._roundProps=function(t,e){for(var i=this._firstPT;i;)(t[this._propName]||null!=i.n&&t[i.n.split(this._propName+"_").join("")])&&(i.r=e),i=i._next},R._onPluginEvent=function(t,e){var i,s,r,n,a,o=e._firstPT;if("_onInitAllProps"===t){for(;o;){for(a=o._next,s=r;s&&s.pr>o.pr;)s=s._next;(o._prev=s?s._prev:n)?o._prev._next=o:r=o,(o._next=s)?s._prev=o:n=o,o=a}o=e._firstPT=r}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},z.activate=function(t){for(var e=t.length;--e>-1;)t[e].API===z.API&&(O[(new t[e])._propName]=t[e]);return!0},f.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,s=t.priority||0,r=t.overwriteProps,n={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_roundProps",initAll:"_onInitAllProps"},a=c("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){z.call(this,i,s),this._overwriteProps=r||[]},t.global===!0),o=a.prototype=new z(i);o.constructor=a,a.API=t.API;for(e in n)"function"==typeof t[e]&&(o[n[e]]=t[e]);return a.version=t.version,z.activate([a]),a},e=t._gsQueue){for(i=0;e.length>i;i++)e[i]();for(s in u)u[s].func||t.console.log("GSAP encountered missing dependency: com.greensock."+s)}n=!1}(window); \ No newline at end of file diff --git a/index_files/all.js b/index_files/all.js new file mode 100644 index 0000000..69e7d03 --- /dev/null +++ b/index_files/all.js @@ -0,0 +1,149 @@ +/*1372499959,168575001,JIT Construction: v861506,en_US*/ + +/** + * Copyright Facebook Inc. + * + * Licensed under the Apache License, Version 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + */ +try {window.FB || (function(window) { +var self = window, document = window.document; +var setTimeout = window.setTimeout, setInterval = window.setInterval;var __DEV__ = 0; +function emptyFunction() {}; + +var require,__d;(function(a){var b={},c={},d=['global','require','requireDynamic','requireLazy','module','exports'];require=function(e,f){if(c.hasOwnProperty(e))return c[e];if(!b.hasOwnProperty(e)){if(f)return null;throw new Error('Module '+e+' has not been defined');}var g=b[e],h=g.deps,i=h.length,j,k=[];for(var l=0;l1)))/4)-ca((ga-1901+ha)/100)+ca((ga-1601+ha)/400);};}if(typeof JSON=="object"&&JSON){k.stringify=JSON.stringify;k.parse=JSON.parse;}if((m=typeof k.stringify=="function"&&!ea)){(ba=function(){return 1;}).toJSON=ba;try{m=k.stringify(0)==="0"&&k.stringify(new Number())==="0"&&k.stringify(new String())=='""'&&k.stringify(g)===j&&k.stringify(j)===j&&k.stringify()===j&&k.stringify(ba)==="1"&&k.stringify([ba])=="[1]"&&k.stringify([j])=="[null]"&&k.stringify(null)=="null"&&k.stringify([j,g,null])=="[null,null,null]"&&k.stringify({result:[ba,true,false,null,"\0\b\n\f\r\t"]})==l&&k.stringify(null,ba)==="1"&&k.stringify([1,2],null,1)=="[\n 1,\n 2\n]"&&k.stringify(new Date(-8.64e+15))=='"-271821-04-20T00:00:00.000Z"'&&k.stringify(new Date(8.64e+15))=='"+275760-09-13T00:00:00.000Z"'&&k.stringify(new Date(-62198755200000))=='"-000001-01-01T00:00:00.000Z"'&&k.stringify(new Date(-1))=='"1969-12-31T23:59:59.999Z"';}catch(fa){m=false;}}if(typeof k.parse=="function")try{if(k.parse("0")===0&&!k.parse(false)){ba=k.parse(l);if((r=ba.A.length==5&&ba.A[0]==1)){try{r=!k.parse('"\t"');}catch(fa){}if(r)try{r=k.parse("01")!=1;}catch(fa){}}}}catch(fa){r=false;}ba=l=null;if(!m||!r){if(!(h={}.hasOwnProperty))h=function(ga){var ha={},ia;if((ha.__proto__=null,ha.__proto__={toString:1},ha).toString!=g){h=function(ja){var ka=this.__proto__,la=ja in (this.__proto__=null,this);this.__proto__=ka;return la;};}else{ia=ha.constructor;h=function(ja){var ka=(this.constructor||ia).prototype;return ja in this&&!(ja in ka&&this[ja]===ka[ja]);};}ha=null;return h.call(this,ga);};i=function(ga,ha){var ia=0,ja,ka,la,ma;(ja=function(){this.valueOf=0;}).prototype.valueOf=0;ka=new ja();for(la in ka)if(h.call(ka,la))ia++;ja=ka=null;if(!ia){ka=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"];ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa))oa(qa);for(ra=ka.length;qa=ka[--ra];h.call(na,qa)&&oa(qa));};}else if(ia==2){ma=function(na,oa){var pa={},qa=g.call(na)=="[object Function]",ra;for(ra in na)if(!(qa&&ra=="prototype")&&!h.call(pa,ra)&&(pa[ra]=1)&&h.call(na,ra))oa(ra);};}else ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa)&&!(ra=qa==="constructor"))oa(qa);if(ra||h.call(na,(qa="constructor")))oa(qa);};return ma(ga,ha);};if(!m){n={"\\":"\\\\",'"':'\\"',"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};o=function(ga,ha){return ("000000"+(ha||0)).slice(-ga);};p=function(ga){var ha='"',ia=0,ja;for(;ja=ga.charAt(ia);ia++)ha+='\\"\b\f\n\r\t'.indexOf(ja)>-1?n[ja]:ja<" "?"\\u00"+o(2,ja.charCodeAt(0).toString(16)):ja;return ha+'"';};q=function(ga,ha,ia,ja,ka,la,ma){var na=ha[ga],oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,ab,bb,cb;if(typeof na=="object"&&na){oa=g.call(na);if(oa=="[object Date]"&&!h.call(na,"toJSON")){if(na>-1/0&&na<1/0){if(ea){ra=ca(na/86400000);for(pa=ca(ra/365.2425)+1970-1;ea(pa+1,0)<=ra;pa++);for(qa=ca((ra-ea(pa,0))/30.42);ea(pa,qa+1)<=ra;qa++);ra=1+ra-ea(pa,qa);sa=(na%86400000+86400000)%86400000;ta=ca(sa/3600000)%24;ua=ca(sa/60000)%60;va=ca(sa/1000)%60;wa=sa%1000;}else{pa=na.getUTCFullYear();qa=na.getUTCMonth();ra=na.getUTCDate();ta=na.getUTCHours();ua=na.getUTCMinutes();va=na.getUTCSeconds();wa=na.getUTCMilliseconds();}na=(pa<=0||pa>=10000?(pa<0?"-":"+")+o(6,pa<0?-pa:pa):o(4,pa))+"-"+o(2,qa+1)+"-"+o(2,ra)+"T"+o(2,ta)+":"+o(2,ua)+":"+o(2,va)+"."+o(3,wa)+"Z";}else na=null;}else if(typeof na.toJSON=="function"&&((oa!="[object Number]"&&oa!="[object String]"&&oa!="[object Array]")||h.call(na,"toJSON")))na=na.toJSON(ga);}if(ia)na=ia.call(ha,ga,na);if(na===null)return "null";oa=g.call(na);if(oa=="[object Boolean]"){return ""+na;}else if(oa=="[object Number]"){return na>-1/0&&na<1/0?""+na:"null";}else if(oa=="[object String]")return p(na);if(typeof na=="object"){for(ab=ma.length;ab--;)if(ma[ab]===na)throw TypeError();ma.push(na);xa=[];bb=la;la+=ka;if(oa=="[object Array]"){for(za=0,ab=na.length;za0)for(ja="",ia>10&&(ia=10);ja.length-1){z++;}else if("{}[]:,".indexOf(ia)>-1){z++;return ia;}else if(ia=='"'){for(ja="@",z++;z-1){ja+=t[ia];z++;}else if(ia=="u"){ka=++z;for(la=z+4;z="0"&&ia<="9"||ia>="a"&&ia<="f"||ia>="A"&&ia<="F"))u();}ja+=s("0x"+ga.slice(ka,z));}else u();}else{if(ia=='"')break;ja+=ia;z++;}}if(ga.charAt(z)=='"'){z++;return ja;}u();}else{ka=z;if(ia=="-"){ma=true;ia=ga.charAt(++z);}if(ia>="0"&&ia<="9"){if(ia=="0"&&(ia=ga.charAt(z+1),ia>="0"&&ia<="9"))u();ma=false;for(;z="0"&&ia<="9");z++);if(ga.charAt(z)=="."){la=++z;for(;la="0"&&ia<="9");la++);if(la==z)u();z=la;}ia=ga.charAt(z);if(ia=="e"||ia=="E"){ia=ga.charAt(++z);if(ia=="+"||ia=="-")z++;for(la=z;la="0"&&ia<="9");la++);if(la==z)u();z=la;}return +ga.slice(ka,z);}if(ma)u();if(ga.slice(z,z+4)=="true"){z+=4;return true;}else if(ga.slice(z,z+5)=="false"){z+=5;return false;}else if(ga.slice(z,z+4)=="null"){z+=4;return null;}u();}}return "$";};w=function(ga){var ha,ia,ja;if(ga=="$")u();if(typeof ga=="string"){if(ga.charAt(0)=="@")return ga.slice(1);if(ga=="["){ha=[];for(;;ia||(ia=true)){ga=v();if(ga=="]")break;if(ia)if(ga==","){ga=v();if(ga=="]")u();}else u();if(ga==",")u();ha.push(w(ga));}return ha;}else if(ga=="{"){ha={};for(;;ia||(ia=true)){ga=v();if(ga=="}")break;if(ia)if(ga==","){ga=v();if(ga=="}")u();}else u();if(ga==","||typeof ga!="string"||ga.charAt(0)!="@"||v()!=":")u();ha[ga.slice(1)]=w(v());}return ha;}u();}return ga;};y=function(ga,ha,ia){var ja=x(ga,ha,ia);if(ja===j){delete ga[ha];}else ga[ha]=ja;};x=function(ga,ha,ia){var ja=ga[ha],ka;if(typeof ja=="object"&&ja)if(g.call(ja)=="[object Array]"){for(ka=ja.length;ka--;)y(ja,ka,ia);}else i(ja,function(la){y(ja,la,ia);});return ia.call(ga,ha,ja);};k.parse=function(ga,ha){z=0;aa=ga;var ia=w(v());if(v()!="$")u();z=aa=null;return ha&&g.call(ha)=="[object Function]"?x((ba={},ba[""]=ia,ba),"",ha):ia;};}}}).call(this);}); +__d("ES5",["ES5ArrayPrototype","ES5FunctionPrototype","ES5StringPrototype","ES5Array","ES5Object","ES5Date","JSON3"],function(a,b,c,d,e,f){var g=b('ES5ArrayPrototype'),h=b('ES5FunctionPrototype'),i=b('ES5StringPrototype'),j=b('ES5Array'),k=b('ES5Object'),l=b('ES5Date'),m=b('JSON3'),n=Array.prototype.slice,o=Object.prototype.toString,p={'JSON.stringify':m.stringify,'JSON.parse':m.parse},q={array:g,'function':h,string:i,Object:k,Array:j,Date:l};for(var r in q){if(!q.hasOwnProperty(r))continue;var s=q[r],t=r===r.toLowerCase()?window[r.replace(/^\w/,function(x){return x.toUpperCase();})].prototype:window[r];for(var u in s){if(!s.hasOwnProperty(u))continue;var v=t[u];p[r+'.'+u]=v&&/\{\s+\[native code\]\s\}/.test(v)?v:s[u];}}function w(x,y,z){var aa=n.call(arguments,3),ba=z?/\s(.*)\]/.exec(o.call(x).toLowerCase())[1]:x,ca=p[ba+'.'+y]||x[y];if(typeof ca==='function')return ca.apply(x,aa);}e.exports=w;});ES5 = require('ES5'); +return ES5.apply(null, arguments); +}; + +__d("sdk.RuntimeConfig",[],{"locale":"en_US","rtl":false});__d("XDConfig",[],{"XdUrl":"connect\/xd_arbiter.php?version=25","Flash":{"path":"https:\/\/connect.facebook.net\/rsrc.php\/v1\/yY\/r\/tkKkN2MZL-q.swf"},"useCdn":true});__d("UrlMapConfig",[],{"www":"www.facebook.com","m":"m.facebook.com","connect":"connect.facebook.net","api_https":"api.facebook.com","api_read_https":"api-read.facebook.com","graph_https":"graph.facebook.com","fbcdn_http":"static.ak.fbcdn.net","fbcdn_https":"fbstatic-a.akamaihd.net","cdn_http":"static.ak.facebook.com","cdn_https":"s-static.ak.facebook.com"});__d("PluginPipeConfig",[],{"threshold":0,"enabledApps":{"209753825810663":1,"187288694643718":1}});__d("CssConfig",[],{"rules":".fb_hidden{position:absolute;top:-10000px;z-index:10001}\n.fb_invisible{display:none}\n.fb_reset{background:none;border:0;border-spacing:0;color:#000;cursor:auto;direction:ltr;font-family:\"lucida grande\", tahoma, verdana, arial, sans-serif;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal}\n.fb_reset > div{overflow:hidden}\n.fb_link img{border:none}\n.fb_dialog{background:rgba(82, 82, 82, .7);position:absolute;top:-10000px;z-index:10001}\n.fb_dialog_advanced{padding:10px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}\n.fb_dialog_content{background:#fff;color:#333}\n.fb_dialog_close_icon{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 0 transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif);cursor:pointer;display:block;height:15px;position:absolute;right:18px;top:17px;width:15px;top:8px\\9;right:7px\\9}\n.fb_dialog_mobile .fb_dialog_close_icon{top:5px;left:5px;right:auto}\n.fb_dialog_padding{background-color:transparent;position:absolute;width:1px;z-index:-1}\n.fb_dialog_close_icon:hover{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 -15px transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif)}\n.fb_dialog_close_icon:active{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 -30px transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif)}\n.fb_dialog_loader{background-color:#f2f2f2;border:1px solid #606060;font-size:24px;padding:20px}\n.fb_dialog_top_left,\n.fb_dialog_top_right,\n.fb_dialog_bottom_left,\n.fb_dialog_bottom_right{height:10px;width:10px;overflow:hidden;position:absolute}\n\/* \u0040noflip *\/\n.fb_dialog_top_left{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 0;left:-10px;top:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_top_right{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -10px;right:-10px;top:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_bottom_left{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -20px;bottom:-10px;left:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_bottom_right{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -30px;right:-10px;bottom:-10px}\n.fb_dialog_vert_left,\n.fb_dialog_vert_right,\n.fb_dialog_horiz_top,\n.fb_dialog_horiz_bottom{position:absolute;background:#525252;filter:alpha(opacity=70);opacity:.7}\n.fb_dialog_vert_left,\n.fb_dialog_vert_right{width:10px;height:100\u0025}\n.fb_dialog_vert_left{margin-left:-10px}\n.fb_dialog_vert_right{right:0;margin-right:-10px}\n.fb_dialog_horiz_top,\n.fb_dialog_horiz_bottom{width:100\u0025;height:10px}\n.fb_dialog_horiz_top{margin-top:-10px}\n.fb_dialog_horiz_bottom{bottom:0;margin-bottom:-10px}\n.fb_dialog_iframe{line-height:0}\n.fb_dialog_content .dialog_title{background:#6d84b4;border:1px solid #3b5998;color:#fff;font-size:14px;font-weight:bold;margin:0}\n.fb_dialog_content .dialog_title > span{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yd\/r\/Cou7n-nqK52.gif)\nno-repeat 5px 50\u0025;float:left;padding:5px 0 7px 26px}\nbody.fb_hidden{-webkit-transform:none;height:100\u0025;margin:0;left:-10000px;overflow:visible;position:absolute;top:-10000px;width:100\u0025\n}\n.fb_dialog.fb_dialog_mobile.loading{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ya\/r\/3rhSv5V8j3o.gif)\nwhite no-repeat 50\u0025 50\u0025;min-height:100\u0025;min-width:100\u0025;overflow:hidden;position:absolute;top:0;z-index:10001}\n.fb_dialog.fb_dialog_mobile.loading.centered{max-height:590px;min-height:590px;max-width:500px;min-width:500px}\n#fb-root #fb_dialog_ipad_overlay{background:rgba(0, 0, 0, .45);position:absolute;left:0;top:0;width:100\u0025;min-height:100\u0025;z-index:10000}\n#fb-root #fb_dialog_ipad_overlay.hidden{display:none}\n.fb_dialog.fb_dialog_mobile.loading iframe{visibility:hidden}\n.fb_dialog_content .dialog_header{-webkit-box-shadow:white 0 1px 1px -1px inset;background:-webkit-gradient(linear, 0 0, 0 100\u0025, from(#738ABA), to(#2C4987));border-bottom:1px solid;border-color:#1d4088;color:#fff;font:14px Helvetica, sans-serif;font-weight:bold;text-overflow:ellipsis;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0;vertical-align:middle;white-space:nowrap}\n.fb_dialog_content .dialog_header table{-webkit-font-smoothing:subpixel-antialiased;height:43px;width:100\u0025\n}\n.fb_dialog_content .dialog_header td.header_left{font-size:12px;padding-left:5px;vertical-align:middle;width:60px\n}\n.fb_dialog_content .dialog_header td.header_right{font-size:12px;padding-right:5px;vertical-align:middle;width:60px\n}\n.fb_dialog_content .touchable_button{background:-webkit-gradient(linear, 0 0, 0 100\u0025, from(#4966A6),\ncolor-stop(0.5, #355492), to(#2A4887));border:1px solid #29447e;-webkit-background-clip:padding-box;-webkit-border-radius:3px;-webkit-box-shadow:rgba(0, 0, 0, .117188) 0 1px 1px inset,\nrgba(255, 255, 255, .167969) 0 1px 0;display:inline-block;margin-top:3px;max-width:85px;line-height:18px;padding:4px 12px;position:relative}\n.fb_dialog_content .dialog_header .touchable_button input{border:none;background:none;color:#fff;font:12px Helvetica, sans-serif;font-weight:bold;margin:2px -12px;padding:2px 6px 3px 6px;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}\n.fb_dialog_content .dialog_header .header_center{color:#fff;font-size:16px;font-weight:bold;line-height:18px;text-align:center;vertical-align:middle}\n.fb_dialog_content .dialog_content{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y9\/r\/jKEcVPZFk-2.gif) no-repeat 50\u0025 50\u0025;border:1px solid #555;border-bottom:0;border-top:0;height:150px}\n.fb_dialog_content .dialog_footer{background:#f2f2f2;border:1px solid #555;border-top-color:#ccc;height:40px}\n#fb_dialog_loader_close{float:left}\n.fb_dialog.fb_dialog_mobile .fb_dialog_close_button{text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}\n.fb_dialog.fb_dialog_mobile .fb_dialog_close_icon{visibility:hidden}\n.fb_iframe_widget{display:inline-block;position:relative}\n.fb_iframe_widget span{display:inline-block;position:relative;text-align:justify}\n.fb_iframe_widget iframe{position:absolute}\n.fb_iframe_widget_lift{z-index:1}\n.fb_hide_iframes iframe{position:relative;left:-10000px}\n.fb_iframe_widget_loader{position:relative;display:inline-block}\n.fb_iframe_widget_fluid{display:inline}\n.fb_iframe_widget_fluid span{width:100\u0025}\n.fb_iframe_widget_loader iframe{min-height:32px;z-index:2;zoom:1}\n.fb_iframe_widget_loader .FB_Loader{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y9\/r\/jKEcVPZFk-2.gif) no-repeat;height:32px;width:32px;margin-left:-16px;position:absolute;left:50\u0025;z-index:4}\n.fb_connect_bar_container div,\n.fb_connect_bar_container span,\n.fb_connect_bar_container a,\n.fb_connect_bar_container img,\n.fb_connect_bar_container strong{background:none;border-spacing:0;border:0;direction:ltr;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal;vertical-align:baseline}\n.fb_connect_bar_container{position:fixed;left:0 !important;right:0 !important;height:42px !important;padding:0 25px !important;margin:0 !important;vertical-align:middle !important;border-bottom:1px solid #333 !important;background:#3b5998 !important;z-index:99999999 !important;overflow:hidden !important}\n.fb_connect_bar_container_ie6{position:absolute;top:expression(document.compatMode==\"CSS1Compat\"? document.documentElement.scrollTop+\"px\":body.scrollTop+\"px\")}\n.fb_connect_bar{position:relative;margin:auto;height:100\u0025;width:100\u0025;padding:6px 0 0 0 !important;background:none;color:#fff !important;font-family:\"lucida grande\", tahoma, verdana, arial, sans-serif !important;font-size:13px !important;font-style:normal !important;font-variant:normal !important;font-weight:normal !important;letter-spacing:normal !important;line-height:1 !important;text-decoration:none !important;text-indent:0 !important;text-shadow:none !important;text-transform:none !important;white-space:normal !important;word-spacing:normal !important}\n.fb_connect_bar a:hover{color:#fff}\n.fb_connect_bar .fb_profile img{height:30px;width:30px;vertical-align:middle;margin:0 6px 5px 0}\n.fb_connect_bar div a,\n.fb_connect_bar span,\n.fb_connect_bar span a{color:#bac6da;font-size:11px;text-decoration:none}\n.fb_connect_bar .fb_buttons{float:right;margin-top:7px}\n.fb_edge_widget_with_comment{position:relative;*z-index:1000}\n.fb_edge_widget_with_comment span.fb_edge_comment_widget{position:absolute}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget{z-index:1}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget .FB_Loader{left:0;top:1px;margin-top:6px;margin-left:0;background-position:50\u0025 50\u0025;background-color:#fff;height:150px;width:394px;border:1px #666 solid;border-bottom:2px solid #283e6c;z-index:1}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget.dark .FB_Loader{background-color:#000;border-bottom:2px solid #ccc}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget.siderender\n.FB_Loader{margin-top:0}\n.fbpluginrecommendationsbarleft,\n.fbpluginrecommendationsbarright{position:fixed !important;bottom:0;z-index:999}\n\/* \u0040noflip *\/\n.fbpluginrecommendationsbarleft{left:10px}\n\/* \u0040noflip *\/\n.fbpluginrecommendationsbarright{right:10px}","components":["fb.css.base","fb.css.dialog","fb.css.iframewidget","fb.css.connectbarwidget","fb.css.edgecommentwidget","fb.css.sendbuttonformwidget","fb.css.plugin.recommendationsbar"]});__d("CanvasPrefetcherConfig",[],{"blacklist":[144959615576466],"sampleRate":500});__d("ConnectBarConfig",[],{"imgs":{"buttonUrl":"rsrc.php\/v2\/yY\/r\/h_Y6u1wrZPW.png","missingProfileUrl":"rsrc.php\/v2\/yo\/r\/UlIqmHJn-SK.gif"}});__d("SDKConfig",[],{"bustCache":true,"tagCountLogRate":0.01,"errorHandling":{"rate":4},"usePluginPipe":true,"features":{"xfbml_profile_pic_server":true,"error_handling":{"rate":4},"e2e_ping_tracking":{"rate":1.0e-6}},"api":{"mode":"warn","whitelist":["Canvas","Canvas.Prefetcher","Canvas.Prefetcher.addStaticResource","Canvas.Prefetcher.setCollectionMode","Canvas.getPageInfo","Canvas.hideFlashElement","Canvas.scrollTo","Canvas.setAutoGrow","Canvas.setDoneLoading","Canvas.setSize","Canvas.setUrlHandler","Canvas.showFlashElement","Canvas.startTimer","Canvas.stopTimer","Data","Data.process","Data.query","Data.query:wait","Data.waitOn","Data.waitOn:wait","Event","Event.subscribe","Event.unsubscribe","Music.flashCallback","Music.init","Music.send","Payment","Payment.cancelFlow","Payment.continueFlow","Payment.init","Payment.parse","Payment.setSize","ThirdPartyProvider","ThirdPartyProvider.init","ThirdPartyProvider.sendData","UA","UA.nativeApp","XFBML","XFBML.RecommendationsBar","XFBML.RecommendationsBar.markRead","XFBML.parse","addFriend","api","getAccessToken","getAuthResponse","getLoginStatus","getUserID","init","login","logout","publish","share","ui","ui:subscribe"]},"initSitevars":{"enableMobileComments":1,"iframePermissions":{"read_stream":false,"manage_mailbox":false,"manage_friendlists":false,"read_mailbox":false,"publish_checkins":true,"status_update":true,"photo_upload":true,"video_upload":true,"sms":false,"create_event":true,"rsvp_event":true,"offline_access":true,"email":true,"xmpp_login":false,"create_note":true,"share_item":true,"export_stream":false,"publish_stream":true,"publish_likes":true,"ads_management":false,"contact_email":true,"access_private_data":false,"read_insights":false,"read_requests":false,"read_friendlists":true,"manage_pages":false,"physical_login":false,"manage_groups":false,"read_deals":false}}});__d("ApiClientConfig",[],{"FlashRequest":{"swfUrl":"https:\/\/connect.facebook.net\/rsrc.php\/v1\/yB\/r\/YV5wijq5fkW.swf"}}); +__d("QueryString",[],function(a,b,c,d,e,f){function g(k){var l=[];ES5(ES5('Object','keys',false,k),'forEach',true,function(m){var n=k[m];if(typeof n==='undefined')return;if(n===null){l.push(m);return;}l.push(encodeURIComponent(m)+'='+encodeURIComponent(n));});return l.join('&');}function h(k,l){var m={};if(k==='')return m;var n=k.split('&');for(var o=0;o');}else{m=document.createElement("iframe");m.name=n;}delete l.style;delete l.name;delete l.url;delete l.root;delete l.onload;var s=g({frameBorder:0,allowTransparency:true,scrolling:'no'},l);if(s.width)m.width=s.width+'px';if(s.height)m.height=s.height+'px';delete s.height;delete s.width;for(var t in s)if(s.hasOwnProperty(t))m.setAttribute(t,s[t]);g(m.style,p);m.src="javascript:false";o.appendChild(m);if(r)var u=j.add(m,'load',function(){u.remove();r();});m.src=q;return m;}e.exports=k;}); +__d("DOMWrapper",[],function(a,b,c,d,e,f){var g,h,i={setRoot:function(j){g=j;},getRoot:function(){return g||document.body;},setWindow:function(j){h=j;},getWindow:function(){return h||self;}};e.exports=i;}); +__d("sdk.feature",["SDKConfig"],function(a,b,c,d,e,f){var g=c('SDKConfig');function h(i,j){if(g.features&&i in g.features){var k=g.features[i];if(typeof k==='object'&&typeof k.rate==='number'){if(k.rate&&Math.random()*100<=k.rate){return k.value||true;}else return k.value?null:false;}else return k;}return typeof j!=='undefined'?j:null;}e.exports=h;}); +__d("UserAgent",[],function(a,b,c,d,e,f){var g=false,h,i,j,k,l,m,n,o,p,q,r,s,t,u;function v(){if(g)return;g=true;var x=navigator.userAgent,y=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(x),z=/(Mac OS X)|(Windows)|(Linux)/.exec(x);r=/\b(iPhone|iP[ao]d)/.exec(x);s=/\b(iP[ao]d)/.exec(x);p=/Android/i.exec(x);t=/FBAN\/\w+;/i.exec(x);u=/Mobile/i.exec(x);q=!!(/Win64/.exec(x));if(y){h=y[1]?parseFloat(y[1]):NaN;if(h&&document.documentMode)h=document.documentMode;i=y[2]?parseFloat(y[2]):NaN;j=y[3]?parseFloat(y[3]):NaN;k=y[4]?parseFloat(y[4]):NaN;if(k){y=/(?:Chrome\/(\d+\.\d+))/.exec(x);l=y&&y[1]?parseFloat(y[1]):NaN;}else l=NaN;}else h=i=j=l=k=NaN;if(z){if(z[1]){var aa=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(x);m=aa?parseFloat(aa[1].replace('_','.')):true;}else m=false;n=!!z[2];o=!!z[3];}else m=n=o=false;}var w={ie:function(){return v()||h;},ie64:function(){return w.ie()&&q;},firefox:function(){return v()||i;},opera:function(){return v()||j;},webkit:function(){return v()||k;},safari:function(){return w.webkit();},chrome:function(){return v()||l;},windows:function(){return v()||n;},osx:function(){return v()||m;},linux:function(){return v()||o;},iphone:function(){return v()||r;},mobile:function(){return v()||(r||s||p||u);},nativeApp:function(){return v()||t;},android:function(){return v()||p;},ipad:function(){return v()||s;}};e.exports=w;}); +__d("sdk.getContextType",["UserAgent","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('UserAgent'),h=b('sdk.Runtime');function i(){if(g.nativeApp())return 3;if(g.mobile())return 2;if(h.isEnvironment(h.ENVIRONMENTS.CANVAS))return 5;return 1;}e.exports=i;}); +__d("UrlMap",["UrlMapConfig"],function(a,b,c,d,e,f){var g=b('UrlMapConfig'),h={resolve:function(i,j){var k=typeof j=='undefined'?location.protocol.replace(':',''):j?'https':'http';if(i in g)return k+'://'+g[i];if(typeof j=='undefined'&&i+'_'+k in g)return k+'://'+g[i+'_'+k];if(j!==true&&i+'_http' in g)return 'http://'+g[i+'_http'];if(j!==false&&i+'_https' in g)return 'https://'+g[i+'_https'];}};e.exports=h;}); +__d("sdk.Impressions",["guid","QueryString","sdk.Runtime","UrlMap"],function(a,b,c,d,e,f){var g=b('guid'),h=b('QueryString'),i=b('sdk.Runtime'),j=b('UrlMap');function k(m){var n=i.getClientID();if(!m.api_key&&n)m.api_key=n;m.kid_directed_site=i.getKidDirectedSite();var o=new Image();o.src=h.appendToUrl(j.resolve('www',true)+'/impression.php/'+g()+'/',m);}var l={log:function(m,n){if(!n.source)n.source='jssdk';k({lid:m,payload:ES5('JSON','stringify',false,n)});},impression:k};e.exports=l;}); +__d("Log",["sprintf"],function(a,b,c,d,e,f){var g=b('sprintf'),h={DEBUG:3,INFO:2,WARNING:1,ERROR:0};function i(k,l){var m=Array.prototype.slice.call(arguments,2),n=g.apply(null,m),o=window.console;if(o&&j.level>=l)o[k in o?k:'log'](n);}var j={level:-1,Level:h,debug:ES5(i,'bind',true,null,'debug',h.DEBUG),info:ES5(i,'bind',true,null,'info',h.INFO),warn:ES5(i,'bind',true,null,'warn',h.WARNING),error:ES5(i,'bind',true,null,'error',h.ERROR)};e.exports=j;}); +__d("Base64",[],function(a,b,c,d,e,f){var g='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';function h(l){l=(l.charCodeAt(0)<<16)|(l.charCodeAt(1)<<8)|l.charCodeAt(2);return String.fromCharCode(g.charCodeAt(l>>>18),g.charCodeAt((l>>>12)&63),g.charCodeAt((l>>>6)&63),g.charCodeAt(l&63));}var i='>___?456789:;<=_______'+'\0\1\2\3\4\5\6\7\b\t\n\13\f\r\16\17\20\21\22\23\24\25\26\27\30\31'+'______\32\33\34\35\36\37 !"#$%&\'()*+,-./0123';function j(l){l=(i.charCodeAt(l.charCodeAt(0)-43)<<18)|(i.charCodeAt(l.charCodeAt(1)-43)<<12)|(i.charCodeAt(l.charCodeAt(2)-43)<<6)|i.charCodeAt(l.charCodeAt(3)-43);return String.fromCharCode(l>>>16,(l>>>8)&255,l&255);}var k={encode:function(l){l=unescape(encodeURI(l));var m=(l.length+2)%3;l=(l+'\0\0'.slice(m)).replace(/[\s\S]{3}/g,h);return l.slice(0,l.length+m-2)+'=='.slice(m);},decode:function(l){l=l.replace(/[^A-Za-z0-9+\/]/g,'');var m=(l.length+3)&3;l=(l+'AAA'.slice(m)).replace(/..../g,j);l=l.slice(0,l.length+m-3);try{return decodeURIComponent(escape(l));}catch(n){throw new Error('Not valid UTF-8');}},encodeObject:function(l){return k.encode(ES5('JSON','stringify',false,l));},decodeObject:function(l){return ES5('JSON','parse',false,k.decode(l));},encodeNums:function(l){return String.fromCharCode.apply(String,ES5(l,'map',true,function(m){return g.charCodeAt((m|-(m>63))&-(m>0)&63);}));}};e.exports=k;}); +__d("sdk.SignedRequest",["Base64"],function(a,b,c,d,e,f){var g=b('Base64');function h(j){if(!j)return null;var k=j.split('.',2)[1].replace(/\-/g,'+').replace(/\_/g,'/');return g.decodeObject(k);}var i={parse:h};e.exports=i;}); +__d("URL",["Assert","copyProperties","QueryString","Log"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('copyProperties'),i=b('QueryString'),j=b('Log'),k=new RegExp('('+'(((\\w+):)?//)'+'(.*?@)?'+'([^~/?#:]+)'+'(:(\\d+))?'+')?'+'([^\\?$#]+)?'+'(\\?([^$#]+))?'+'(#([^$]+))?'),l=/[\0\\]/,m=/[^\w\-\.,;\/?:@=&%#$~+!*'\[\]()]+/g,n=/^[a-z0-9.][a-z0-9\-\.]+[a-z0-9.]$/,o=/\.facebook\.com$/;function p(q){g.isString(q,'The passed argument was of invalid type.');if(l.test(q))throw new URIError('The passed argument could not be parsed as a url.');if(this instanceof p===false)return new p(q);var r=q.replace(m,function(t){j.warn('Escaping unescaped character \\x%s from "%s"',t.charCodeAt(0).toString(16),q);return encodeURIComponent(t);}).match(k);if(!q||!r)throw new URIError('The passed argument could not be parsed as a url.');var s=!!location.hostname;this.setProtocol(r[4]||(s?location.protocol.replace(/:/,''):''));this.setDomain(r[6]||location.hostname);this.setPort(r[8]||(s&&!r[6]?location.port:''));this.setPath(r[9]||'');this.setSearch(r[11]||'');this.setFragment(r[13]||'');if(this._path.substring(0,1)!='/')this._path='/'+this._path;if(this._domain&&!n.test(decodeURIComponent(this._domain.toLowerCase()))){j.error('Invalid characters found in domain name: %s',this._domain);throw new URIError('Domain contained invalid characters.');}}h(p.prototype,{constructor:p,getProtocol:function(){return this._protocol;},setProtocol:function(q){this._protocol=q;return this;},getDomain:function(){return this._domain;},setDomain:function(q){this._domain=q;return this;},getPort:function(){return this._port;},setPort:function(q){this._port=q;return this;},getPath:function(){return this._path;},setPath:function(q){this._path=q;return this;},getSearch:function(){return this._search;},setSearch:function(q){this._search=q;return this;},getFragment:function(){return this._fragment;},setFragment:function(q){this._fragment=q;return this;},getParsedSearch:function(){return i.decode(this._search);},getParsedFragment:function(){return i.decode(this._fragment);},isFacebookURL:function(){return o.test(this._domain);},toString:function(){return (this._protocol?this._protocol+':':'')+(this._domain?'//'+this._domain:'')+(this._port?':'+this._port:'')+this._path+(this._search?'?'+this._search:'')+(this._fragment?'#'+this._fragment:'');},valueOf:function(){return this.toString();}});h(p,{getCurrent:function(){return new p(location.href);},getReferrer:function(){return document.referrer?new p(document.referrer):null;}});e.exports=p;}); +__d("sdk.domReady",[],function(a,b,c,d,e,f){var g,h="readyState" in document?/loaded|complete/.test(document.readyState):!!document.body;function i(){if(!g)return;var l;while(l=g.shift())l();g=null;}function j(l){if(g){g.push(l);return;}else l();}if(!h){g=[];if(document.addEventListener){document.addEventListener('DOMContentLoaded',i,false);window.addEventListener('load',i,false);}else if(document.attachEvent){document.attachEvent('onreadystatechange',i);window.attachEvent('onload',i);}if(document.documentElement.doScroll&&window==window.top){var k=function(){try{document.documentElement.doScroll('left');}catch(l){setTimeout(k,0);return;}i();};k();}}e.exports=j;},3); +__d("sdk.Content",["sdk.domReady","Log","UserAgent"],function(a,b,c,d,e,f){var g=b('sdk.domReady'),h=b('Log'),i=b('UserAgent'),j,k,l={append:function(m,n){if(!n)if(!j){j=n=document.getElementById('fb-root');if(!n){h.warn('The "fb-root" div has not been created, auto-creating');j=n=document.createElement('div');n.id='fb-root';if(i.ie()||!document.body){g(function(){document.body.appendChild(n);});}else document.body.appendChild(n);}n.className+=' fb_reset';}else n=j;if(typeof m=='string'){var o=document.createElement('div');n.appendChild(o).innerHTML=m;return o;}else return n.appendChild(m);},appendHidden:function(m){if(!n){var n=document.createElement('div'),o=n.style;o.position='absolute';o.top='-10000px';o.width=o.height=0;n=l.append(n);}return l.append(m,n);},submitToTarget:function(m,n){var o=document.createElement('form');o.action=m.url;o.target=m.target;o.method=(n)?'GET':'POST';l.appendHidden(o);for(var p in m.params)if(m.params.hasOwnProperty(p)){var q=m.params[p];if(q!==null&&q!==undefined){var r=document.createElement('input');r.name=p;r.value=q;o.appendChild(r);}}o.submit();o.parentNode.removeChild(o);}};e.exports=l;}); +__d("sdk.Event",[],function(a,b,c,d,e,f){var g={subscribers:function(){if(!this._subscribersMap)this._subscribersMap={};return this._subscribersMap;},subscribe:function(h,i){var j=this.subscribers();if(!j[h]){j[h]=[i];}else j[h].push(i);},unsubscribe:function(h,i){var j=this.subscribers()[h];if(j)ES5(j,'forEach',true,function(k,l){if(k==i)j[l]=null;});},monitor:function(h,i){if(!i()){var j=this,k=function(){if(i.apply(i,arguments))j.unsubscribe(h,k);};this.subscribe(h,k);}},clear:function(h){delete this.subscribers()[h];},fire:function(h){var i=Array.prototype.slice.call(arguments,1),j=this.subscribers()[h];if(j)ES5(j,'forEach',true,function(k){if(k)k.apply(this,i);});}};e.exports=g;}); +__d("Queue",["copyProperties"],function(a,b,c,d,e,f){var g=b('copyProperties'),h={};function i(j){this._opts=g({interval:0,processor:null},j);this._queue=[];this._stopped=true;}g(i.prototype,{_dispatch:function(j){if(this._stopped||this._queue.length===0)return;if(!this._opts.processor){this._stopped=true;throw new Error('No processor available');}if(this._opts.interval){this._opts.processor.call(this,this._queue.shift());this._timeout=setTimeout(ES5(this._dispatch,'bind',true,this),this._opts.interval);}else while(this._queue.length)this._opts.processor.call(this,this._queue.shift());},enqueue:function(j){if(this._opts.processor&&!this._stopped){this._opts.processor.call(this,j);}else this._queue.push(j);return this;},start:function(j){if(j)this._opts.processor=j;this._stopped=false;this._dispatch();return this;},dispatch:function(){this._dispatch(true);},stop:function(j){this._stopped=true;if(j)clearTimeout(this._timeout);return this;},merge:function(j,k){this._queue[k?'unshift':'push'].apply(this._queue,j._queue);j._queue=[];this._dispatch();return this;},getLength:function(){return this._queue.length;}});g(i,{get:function(j,k){var l;if(j in h){l=h[j];}else l=h[j]=new i(k);return l;},exists:function(j){return j in h;},remove:function(j){return delete h[j];}});e.exports=i;}); +__d("resolveURI",[],function(a,b,c,d,e,f){function g(h){if(!h)return window.location.href;h=h.replace(/&/g,'&').replace(/"/g,'"');var i=document.createElement('div');i.innerHTML='';return i.firstChild.href;}e.exports=g;}); +__d("resolveWindow",[],function(a,b,c,d,e,f){function g(h){var i=window,j=h.split('.');try{for(var l=0;l=9)window.attachEvent('onunload',p);m=true;}l[t]=t;}var s={embed:function(t,u,v,w){var x=k();t=encodeURI(t);v=j({allowscriptaccess:'always',flashvars:w,movie:t},v||{});if(typeof v.flashvars=='object')v.flashvars=h.encode(v.flashvars);var y=[];for(var z in v)if(v.hasOwnProperty(z)&&v[z])y.push('');var aa=n.createElement('div'),ba=''+y.join('')+'';aa.innerHTML=ba;var ca=u.appendChild(aa.firstChild);r(x);return ca;},remove:o,getVersion:function(){var t='Shockwave Flash',u='application/x-shockwave-flash',v='ShockwaveFlash.ShockwaveFlash',w;if(navigator.plugins&&typeof navigator.plugins[t]=='object'){var x=navigator.plugins[t].description;if(x&&navigator.mimeTypes&&navigator.mimeTypes[u]&&navigator.mimeTypes[u].enabledPlugin)w=x.match(/\d+/g);}if(!w)try{w=(new ActiveXObject(v)).GetVariable('$version').match(/(\d+),(\d+),(\d+),(\d+)/);w=Array.prototype.slice.call(w,1);}catch(y){}return w;},checkMinVersion:function(t){var u=s.getVersion();if(!u)return false;return q(u.join('.'))>=q(t);},isAvailable:function(){return !!s.getVersion();}};e.exports=s;}); +__d("dotAccess",[],function(a,b,c,d,e,f){function g(h,i,j){var k=i.split('.');do{var l=k.shift();h=h[l]||j&&(h[l]={});}while(k.length&&h);return h;}e.exports=g;}); +__d("GlobalCallback",["DOMWrapper","dotAccess","guid","wrapFunction"],function(a,b,c,d,e,f){var g=b('DOMWrapper'),h=b('dotAccess'),i=b('guid'),j=b('wrapFunction'),k,l,m={setPrefix:function(n){k=h(g.getWindow(),n,true);l=n;},create:function(n,o){if(!k)this.setPrefix('__globalCallbacks');var p=i();k[p]=j(n,'entry',o||'GlobalCallback');return l+'.'+p;},remove:function(n){var o=n.substring(l.length+1);delete k[o];}};e.exports=m;}); +__d("XDM",["DOMEventListener","DOMWrapper","emptyFunction","Flash","GlobalCallback","guid","Log","UserAgent","wrapFunction"],function(a,b,c,d,e,f){var g=b('DOMEventListener'),h=b('DOMWrapper'),i=b('emptyFunction'),j=b('Flash'),k=b('GlobalCallback'),l=b('guid'),m=b('Log'),n=b('UserAgent'),o=b('wrapFunction'),p={},q={transports:[]},r=h.getWindow();function s(u){var v={},w=u.length,x=q.transports;while(w--)v[u[w]]=1;w=x.length;while(w--){var y=x[w],z=p[y];if(!v[y]&&z.isAvailable())return y;}}var t={register:function(u,v){m.debug('Registering %s as XDM provider',u);q.transports.push(u);p[u]=v;},create:function(u){if(!u.whenReady&&!u.onMessage){m.error('An instance without whenReady or onMessage makes no sense');throw new Error('An instance without whenReady or '+'onMessage makes no sense');}if(!u.channel){m.warn('Missing channel name, selecting at random');u.channel=l();}if(!u.whenReady)u.whenReady=i;if(!u.onMessage)u.onMessage=i;var v=u.transport||s(u.blacklist||[]),w=p[v];if(w&&w.isAvailable()){m.debug('%s is available',v);w.init(u);return v;}}};t.register('fragment',(function(){var u=false,v,w=location.protocol+'//'+location.host;function x(y){var z=document.createElement('iframe');z.src='javascript:false';var aa=g.add(z,'load',function(){aa.remove();setTimeout(function(){z.parentNode.removeChild(z);},5000);});v.appendChild(z);z.src=y;}return {isAvailable:function(){return true;},init:function(y){m.debug('init fragment');var z={send:function(aa,ba,ca,da){m.debug('sending to: %s (%s)',ba+y.channelPath,da);x(ba+y.channelPath+aa+'&xd_rel=parent.parent&relation=parent.parent&xd_origin='+encodeURIComponent(w));}};if(u){setTimeout(function(){y.whenReady(z);},0);return;}v=y.root;u=true;setTimeout(function(){y.whenReady(z);},0);}};})());t.register('flash',(function(){var u=false,v,w=false,x=15000,y;return {isAvailable:function(){return j.checkMinVersion('8.0.24');},init:function(z){m.debug('init flash: '+z.channel);var aa={send:function(da,ea,fa,ga){m.debug('sending to: %s (%s)',ea,ga);v.postMessage(da,ea,ga);}};if(u){z.whenReady(aa);return;}var ba=z.root.appendChild(r.document.createElement('div')),ca=k.create(function(){k.remove(ca);clearTimeout(y);m.info('xdm.swf called the callback');var da=k.create(function(ea,fa){ea=decodeURIComponent(ea);fa=decodeURIComponent(fa);m.debug('received message %s from %s',ea,fa);z.onMessage(ea,fa);},'xdm.swf:onMessage');v.init(z.channel,da);z.whenReady(aa);},'xdm.swf:load');v=j.embed(z.flashUrl,ba,null,{protocol:location.protocol.replace(':',''),host:location.host,callback:ca,log:w});y=setTimeout(function(){m.warn('The Flash component did not load within %s ms - '+'verify that the container is not set to hidden or invisible '+'using CSS as this will cause some browsers to not load '+'the components',x);},x);u=true;}};})());t.register('postmessage',(function(){var u=false;return {isAvailable:function(){return !!r.postMessage;},init:function(v){m.debug('init postMessage: '+v.channel);var w='_FB_'+v.channel,x={send:function(y,z,aa,ba){if(r===aa){m.error('Invalid windowref, equal to window (self)');throw new Error();}m.debug('sending to: %s (%s)',z,ba);var ca=function(){aa.postMessage('_FB_'+ba+y,z);};if(n.ie()==8){setTimeout(ca,0);}else ca();}};if(u){v.whenReady(x);return;}g.add(r,'message',o(function(event){var y=event.data,z=event.origin||'native';if(typeof y!='string'){m.warn('Received message of type %s from %s, expected a string',typeof y,z);return;}m.debug('received message %s from %s',y,z);if(y.substring(0,w.length)==w)y=y.substring(w.length);v.onMessage(y,z);},'entry','onMessage'));v.whenReady(x);u=true;}};})());e.exports=t;}); +__d("sdk.XD",["sdk.Content","sdk.createIframe","sdk.Event","guid","Log","QueryString","Queue","resolveURI","resolveWindow","sdk.RPC","sdk.Runtime","UrlMap","URL","wrapFunction","XDM","XDConfig"],function(a,b,c,d,e,f){var g=b('sdk.Content'),h=b('sdk.createIframe'),i=b('sdk.Event'),j=b('guid'),k=b('Log'),l=b('QueryString'),m=b('Queue'),n=b('resolveURI'),o=b('resolveWindow'),p=b('sdk.RPC'),q=b('sdk.Runtime'),r=b('UrlMap'),s=b('URL'),t=b('wrapFunction'),u=c('XDConfig'),v=b('XDM'),w=new m(),x=new m(),y=new m(),z,aa,ba=j(),ca=j(),da=location.protocol+'//'+location.host,ea,fa=false,ga='Facebook Cross Domain Communication Frame',ha={},ia=new m();p.setInQueue(ia);function ja(pa){k.info('Remote XD can talk to facebook.com (%s)',pa);q.setEnvironment(pa==='canvas'?q.ENVIRONMENTS.CANVAS:q.ENVIRONMENTS.PAGETAB);}function ka(pa,qa){if(!qa){k.error('No senderOrigin');throw new Error();}var ra=/^https?/.exec(qa)[0];switch(pa.xd_action){case 'proxy_ready':var sa,ta;if(ra=='https'){sa=y;ta=aa;}else{sa=x;ta=z;}if(pa.registered){ja(pa.registered);w=sa.merge(w);}k.info('Proxy ready, starting queue %s containing %s messages',ra+'ProxyQueue',sa.getLength());sa.start(function(va){ea.send(typeof va==='string'?va:l.encode(va),qa,ta.contentWindow,ca+'_'+ra);});break;case 'plugin_ready':k.info('Plugin %s ready, protocol: %s',pa.name,ra);ha[pa.name]={protocol:ra};if(m.exists(pa.name)){var ua=m.get(pa.name);k.debug('Enqueuing %s messages for %s in %s',ua.getLength(),pa.name,ra+'ProxyQueue');(ra=='https'?y:x).merge(ua);}break;}if(pa.data)la(pa.data,qa);}function la(pa,qa){if(qa&&qa!=='native'&&!s(qa).isFacebookURL())return;if(typeof pa=='string'){if(/^FB_RPC:/.test(pa)){ia.enqueue(pa.substring(7));return;}if(pa.substring(0,1)=='{'){try{pa=ES5('JSON','parse',false,pa);}catch(ra){k.warn('Failed to decode %s as JSON',pa);return;}}else pa=l.decode(pa);}if(!qa)if(pa.xd_sig==ba)qa=pa.xd_origin;if(pa.xd_action){ka(pa,qa);return;}if(pa.access_token)q.setSecure(/^https/.test(da));if(pa.cb){var sa=oa._callbacks[pa.cb];if(!oa._forever[pa.cb])delete oa._callbacks[pa.cb];if(sa)sa(pa);}}function ma(pa,qa){if(pa=='facebook'){qa.relation='parent.parent';w.enqueue(qa);}else{qa.relation='parent.frames["'+pa+'"]';var ra=ha[pa];if(ra){k.debug('Enqueuing message for plugin %s in %s',pa,ra.protocol+'ProxyQueue');(ra.protocol=='https'?y:x).enqueue(qa);}else{k.debug('Buffering message for plugin %s',pa);m.get(pa).enqueue(qa);}}}p.getOutQueue().start(function(pa){ma('facebook','FB_RPC:'+pa);});function na(pa,qa){if(fa)return;var ra=pa?/\/\/.*?(\/[^#]*)/.exec(pa)[1]:location.pathname+location.search;ra+=(~ES5(ra,'indexOf',true,'?')?'&':'?')+'fb_xd_fragment#xd_sig='+ba+'&';var sa=g.appendHidden(document.createElement('div')),ta=v.create({root:sa,channel:ca,channelPath:'/'+u.XdUrl+'#',flashUrl:u.Flash.path,whenReady:function(ua){ea=ua;var va={channel:ca,origin:location.protocol+'//'+location.host,channel_path:ra,transport:ta,xd_name:qa},wa='/'+u.XdUrl+'#'+l.encode(va),xa=u.useCdn?r.resolve('cdn',false):'http://www.facebook.com',ya=u.useCdn?r.resolve('cdn',true):'https://www.facebook.com';if(q.getSecure()!==true)z=h({url:xa+wa,name:'fb_xdm_frame_http',id:'fb_xdm_frame_http',root:sa,'aria-hidden':true,title:ga,'tab-index':-1});aa=h({url:ya+wa,name:'fb_xdm_frame_https',id:'fb_xdm_frame_https',root:sa,'aria-hidden':true,title:ga,'tab-index':-1});},onMessage:la});if(ta==='fragment')window.FB_XD_onMessage=t(la,'entry','XD:fragment');fa=true;}var oa={rpc:p,_callbacks:{},_forever:{},_channel:ca,_origin:da,onMessage:la,recv:la,init:na,sendToFacebook:ma,inform:function(pa,qa,ra,sa){ma('facebook',{method:pa,params:ES5('JSON','stringify',false,qa||{}),behavior:sa||'p',relation:ra});},handler:function(pa,qa,ra,sa){var ta=u.useCdn?r.resolve('cdn',location.protocol=='https:'):location.protocol+'//www.facebook.com';return ta+'/'+u.XdUrl+'#'+l.encode({cb:this.registerCallback(pa,ra,sa),origin:da+'/'+ca,domain:location.hostname,relation:qa||'opener'});},registerCallback:function(pa,qa,ra){ra=ra||j();if(qa)oa._forever[ra]=true;oa._callbacks[ra]=pa;return ra;}};(function(){var pa=location.href.match(/[?&]fb_xd_fragment#(.*)$/);if(pa){document.documentElement.style.display='none';var qa=l.decode(pa[1]),ra=o(qa.xd_rel);k.debug('Passing fragment based message: %s',pa[1]);ra.FB_XD_onMessage(qa);document.open();document.close();}})();i.subscribe('init:post',function(pa){na(pa.channelUrl?n(pa.channelUrl):null,pa.xdProxyName);});e.exports=oa;}); +__d("sdk.Auth",["sdk.Cookie","copyProperties","sdk.createIframe","DOMWrapper","sdk.feature","sdk.getContextType","guid","sdk.Impressions","Log","ObservableMixin","QueryString","sdk.Runtime","sdk.SignedRequest","UrlMap","URL","sdk.XD"],function(a,b,c,d,e,f){var g=b('sdk.Cookie'),h=b('copyProperties'),i=b('sdk.createIframe'),j=b('DOMWrapper'),k=b('sdk.feature'),l=b('sdk.getContextType'),m=b('guid'),n=b('sdk.Impressions'),o=b('Log'),p=b('ObservableMixin'),q=b('QueryString'),r=b('sdk.Runtime'),s=b('sdk.SignedRequest'),t=b('UrlMap'),u=b('URL'),v=b('sdk.XD'),w,x,y=new p();function z(fa,ga){var ha=r.getUserID(),ia='';if(fa)if(fa.userID){ia=fa.userID;}else if(fa.signedRequest){var ja=s.parse(fa.signedRequest);if(ja&&ja.user_id)ia=ja.user_id;}var ka=r.getLoginStatus(),la=(ka==='unknown'&&fa)||(r.getUseCookie()&&r.getCookieUserID()!==ia),ma=ha&&!fa,na=fa&&ha&&ha!=ia,oa=fa!=w,pa=ga!=(ka||'unknown');r.setLoginStatus(ga);r.setAccessToken(fa&&fa.accessToken||null);r.setUserID(ia);w=fa;var qa={authResponse:fa,status:ga};if(ma||na)y.inform('logout',qa);if(la||na)y.inform('login',qa);if(oa)y.inform('authresponse.change',qa);if(pa)y.inform('status.change',qa);return qa;}function aa(){return w;}function ba(fa,ga,ha){return function(ia){var ja;if(ia&&ia.access_token){var ka=s.parse(ia.signed_request);ga={accessToken:ia.access_token,userID:ka.user_id,expiresIn:parseInt(ia.expires_in,10),signedRequest:ia.signed_request};if(r.getUseCookie()){var la=ga.expiresIn===0?0:ES5('Date','now',false)+ga.expiresIn*1000,ma=g.getDomain();if(!ma&&ia.base_domain)g.setDomain('.'+ia.base_domain);g.setSignedRequestCookie(ia.signed_request,la);}ja='connected';z(ga,ja);}else if(ha==='logout'||ha==='login_status'){if(ia.error&&ia.error==='not_authorized'){ja='not_authorized';}else ja='unknown';z(null,ja);if(r.getUseCookie())g.clearSignedRequestCookie();}if(ia&&ia.https==1)r.setSecure(true);if(fa)fa({authResponse:ga,status:r.getLoginStatus()});return ga;};}function ca(fa){var ga,ha=ES5('Date','now',false);if(x){clearTimeout(x);x=null;}var ia=ba(fa,w,'login_status'),ja=u(t.resolve('www',true)+'/connect/ping').setSearch(q.encode({client_id:r.getClientID(),response_type:'token,signed_request,code',domain:location.hostname,origin:l(),redirect_uri:v.handler(function(ka){if(k('e2e_ping_tracking',true)){var la={init:ha,close:ES5('Date','now',false),method:'ping'};o.debug('e2e: %s',ES5('JSON','stringify',false,la));n.log(114,{payload:la});}ga.parentNode.removeChild(ga);if(ia(ka))x=setTimeout(function(){ca(function(){});},1200000);},'parent'),sdk:'joey',kid_directed_site:r.getKidDirectedSite()}));ga=i({root:j.getRoot(),name:m(),url:ja.toString(),style:{display:'none'}});}var da;function ea(fa,ga){if(!r.getClientID()){o.warn('FB.getLoginStatus() called before calling FB.init().');return;}if(fa)if(!ga&&da=='loaded'){fa({status:r.getLoginStatus(),authResponse:aa()});return;}else y.subscribe('FB.loginStatus',fa);if(!ga&&da=='loading')return;da='loading';var ha=function(ia){da='loaded';y.inform('FB.loginStatus',ia);y.clearSubscribers('FB.loginStatus');};ca(ha);}h(y,{getLoginStatus:ea,fetchLoginStatus:ca,setAuthResponse:z,getAuthResponse:aa,parseSignedRequest:s.parse,xdResponseWrapper:ba});e.exports=y;}); +__d("hasArrayNature",[],function(a,b,c,d,e,f){function g(h){return (!!h&&(typeof h=='object'||typeof h=='function')&&('length' in h)&&!('setInterval' in h)&&(Object.prototype.toString.call(h)==="[object Array]"||('callee' in h)||('item' in h)));}e.exports=g;}); +__d("createArrayFrom",["hasArrayNature"],function(a,b,c,d,e,f){var g=b('hasArrayNature');function h(i){if(!g(i))return [i];if(i.item){var j=i.length,k=new Array(j);while(j--)k[j]=i[j];return k;}return Array.prototype.slice.call(i);}e.exports=h;}); +__d("sdk.DOM",["Assert","createArrayFrom","sdk.domReady","UserAgent"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('createArrayFrom'),i=b('sdk.domReady'),j=b('UserAgent'),k={};function l(z,aa){var ba=(z.getAttribute(aa)||z.getAttribute(aa.replace(/_/g,'-'))||z.getAttribute(aa.replace(/-/g,'_'))||z.getAttribute(aa.replace(/-/g,''))||z.getAttribute(aa.replace(/_/g,''))||z.getAttribute('data-'+aa)||z.getAttribute('data-'+aa.replace(/_/g,'-'))||z.getAttribute('data-'+aa.replace(/-/g,'_'))||z.getAttribute('data-'+aa.replace(/-/g,''))||z.getAttribute('data-'+aa.replace(/_/g,'')));return ba?String(ba):null;}function m(z,aa){var ba=l(z,aa);return ba?/^(true|1|yes|on)$/.test(ba):null;}function n(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);try{return String(z[aa]);}catch(ba){throw new Error('Could not read property '+aa+' : '+ba.message);}}function o(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);try{z.innerHTML=aa;}catch(ba){throw new Error('Could not set innerHTML : '+ba.message);}}function p(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);var ba=' '+n(z,'className')+' ';return ES5(ba,'indexOf',true,' '+aa+' ')>=0;}function q(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);if(!p(z,aa))z.className=n(z,'className')+' '+aa;}function r(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);var ba=new RegExp('\\s*'+aa,'g');z.className=ES5(n(z,'className').replace(ba,''),'trim',true);}function s(z,aa,ba){g.isString(z);aa=aa||document.body;ba=ba||'*';if(aa.querySelectorAll)return h(aa.querySelectorAll(ba+'.'+z));var ca=aa.getElementsByTagName(ba),da=[];for(var ea=0,fa=ca.length;ea2000){h.remove(n.callback);return false;}p.onerror=function(){q({error:{type:'http',message:'unknown error'}});};var r=function(){setTimeout(function(){q({error:{type:'http',message:'unknown error'}});},0);};if(p.addEventListener){p.addEventListener('load',r,false);}else p.onreadystatechange=function(){if(/loaded|complete/.test(this.readyState))r();};p.src=l;g.getRoot().appendChild(p);return true;}var k={execute:j};e.exports=k;}); +__d("ApiClient",["ArgumentError","Assert","copyProperties","CORSRequest","FlashRequest","flattenObject","JSONPRequest","Log","ObservableMixin","sprintf","UrlMap","URL","ApiClientConfig"],function(a,b,c,d,e,f){var g=b('ArgumentError'),h=b('Assert'),i=b('copyProperties'),j=b('CORSRequest'),k=b('FlashRequest'),l=b('flattenObject'),m=b('JSONPRequest'),n=b('Log'),o=b('ObservableMixin'),p=b('sprintf'),q=b('UrlMap'),r=b('URL'),s=b('ApiClientConfig'),t,u,v,w={get:true,post:true,'delete':true,put:true},x={fql_query:true,fql_multiquery:true,friends_get:true,notifications_get:true,stream_get:true,users_getinfo:true};function y(da,ea,fa,ga){if(!fa.access_token)fa.access_token=t;fa.pretty=0;if(v)i(fa,v);fa=l(fa);var ha={jsonp:m,cors:j,flash:k},ia;if(fa.transport){ia=[fa.transport];delete fa.transport;}else ia=['jsonp','cors','flash'];for(var ja=0;ja'+' '+'
'+'
'+' Facebook'+'
'+''+'
'+''),width:r});},_createMobileLoader:function(){var r=o.nativeApp()?'':(''+' '+' '+' '+' '+' '+' '+' '+'
'+' '+' '+'
'+k.tx._("Loading...")+'
'+'
'+'
');return q.create({classes:'loading'+(o.ipad()?' centered':''),content:('
'+r+'
')});},_restoreBodyPosition:function(){if(!o.ipad()){var r=document.getElementsByTagName('body')[0];i.removeCss(r,'fb_hidden');}},_showIPadOverlay:function(){if(!o.ipad())return;if(!q._overlayEl){q._overlayEl=document.createElement('div');q._overlayEl.setAttribute('id','fb_dialog_ipad_overlay');h.append(q._overlayEl,null);}q._overlayEl.className='';},_hideIPadOverlay:function(){if(o.ipad())q._overlayEl.className='hidden';},showLoader:function(r,s){q._showIPadOverlay();if(!q._loaderEl)q._loaderEl=q._findRoot(o.mobile()?q._createMobileLoader():q._createWWWLoader(s));if(!r)r=function(){};var t=document.getElementById('fb_dialog_loader_close');i.removeCss(t,'fb_hidden');t.onclick=function(){q._hideLoader();q._restoreBodyPosition();q._hideIPadOverlay();r();};var u=document.getElementById('fb_dialog_ipad_overlay');if(u)u.ontouchstart=t.onclick;q._makeActive(q._loaderEl);},_hideLoader:function(){if(q._loaderEl&&q._loaderEl==q._active)q._loaderEl.style.top='-10000px';},_makeActive:function(r){q._setDialogSizes();q._lowerActive();q._active=r;if(m.isEnvironment(m.ENVIRONMENTS.CANVAS))g.getPageInfo(function(s){q._centerActive(s);});q._centerActive();},_lowerActive:function(){if(!q._active)return;q._active.style.top='-10000px';q._active=null;},_removeStacked:function(r){q._stack=ES5(q._stack,'filter',true,function(s){return s!=r;});},_centerActive:function(r){var s=q._active;if(!s)return;var t=i.getViewportInfo(),u=parseInt(s.offsetWidth,10),v=parseInt(s.offsetHeight,10),w=t.scrollLeft+(t.width-u)/2,x=(t.height-v)/2.5;if(wy)z=y;z+=t.scrollTop;if(o.mobile()){var aa=100;if(o.ipad()){aa+=(t.height-v)/2;}else{var ba=document.getElementsByTagName('body')[0];i.addCss(ba,'fb_hidden');w=10000;z=10000;}var ca=i.getByClass('fb_dialog_padding',s);if(ca.length)ca[0].style.height=aa+'px';}s.style.left=(w>0?w:0)+'px';s.style.top=(z>0?z:0)+'px';},_setDialogSizes:function(){if(!o.mobile()||o.ipad())return;for(var r in q._dialogs)if(q._dialogs.hasOwnProperty(r)){var s=document.getElementById(r);if(s){s.style.width=q.getDefaultSize().width+'px';s.style.height=q.getDefaultSize().height+'px';}}},getDefaultSize:function(){if(o.mobile())if(o.ipad()){return {width:500,height:590};}else if(o.android()){return {width:screen.availWidth,height:screen.availHeight};}else{var r=window.innerWidth,s=window.innerHeight,t=r/s>1.2;return {width:r,height:Math.max(s,(t?screen.width:screen.height))};}return {width:575,height:240};},_handleOrientationChange:function(r){if(o.android()&&screen.availWidth==q._availScreenWidth){setTimeout(q._handleOrientationChange,50);return;}q._availScreenWidth=screen.availWidth;if(o.ipad()){q._centerActive();}else{var s=q.getDefaultSize().width;for(var t in q._dialogs)if(q._dialogs.hasOwnProperty(t)){var u=document.getElementById(t);if(u)u.style.width=s+'px';}}},_addOrientationHandler:function(){if(!o.mobile())return;var r="onorientationchange" in window?'orientationchange':'resize';q._availScreenWidth=screen.availWidth;j.add(window,r,q._handleOrientationChange);},create:function(r){r=r||{};var s=document.createElement('div'),t=document.createElement('div'),u='fb_dialog';if(r.closeIcon&&r.onClose){var v=document.createElement('a');v.className='fb_dialog_close_icon';v.onclick=r.onClose;s.appendChild(v);}u+=' '+(r.classes||'');if(o.ie()){u+=' fb_dialog_legacy';ES5(['vert_left','vert_right','horiz_top','horiz_bottom','top_left','top_right','bottom_left','bottom_right'],'forEach',true,function(y){var z=document.createElement('span');z.className='fb_dialog_'+y;s.appendChild(z);});}else u+=o.mobile()?' fb_dialog_mobile':' fb_dialog_advanced';if(r.content)h.append(r.content,t);s.className=u;var w=parseInt(r.width,10);if(!isNaN(w))s.style.width=w+'px';t.className='fb_dialog_content';s.appendChild(t);if(o.mobile()){var x=document.createElement('div');x.className='fb_dialog_padding';s.appendChild(x);}h.append(s);if(r.visible)q.show(s);return t;},show:function(r){var s=q._findRoot(r);if(s){q._removeStacked(s);q._hideLoader();q._makeActive(s);q._stack.push(s);if('fbCallID' in r)q.get(r.fbCallID).inform('iframe_show').trackEvent('show');}},hide:function(r){var s=q._findRoot(r);q._hideLoader();if(s==q._active){q._lowerActive();q._restoreBodyPosition();q._hideIPadOverlay();if('fbCallID' in r)q.get(r.fbCallID).inform('iframe_hide').trackEvent('hide');}},remove:function(r){r=q._findRoot(r);if(r){var s=q._active==r;q._removeStacked(r);if(s){q._hideLoader();if(q._stack.length>0){q.show(q._stack.pop());}else{q._lowerActive();q._restoreBodyPosition();q._hideIPadOverlay();}}else if(q._active===null&&q._stack.length>0)q.show(q._stack.pop());setTimeout(function(){r.parentNode.removeChild(r);},3000);}},isActive:function(r){var s=q._findRoot(r);return s&&s===q._active;}};e.exports=q;}); +__d("sdk.Frictionless",["sdk.Auth","sdk.api","sdk.Event","sdk.Dialog"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.api'),i=b('sdk.Event'),j=b('sdk.Dialog'),k={_allowedRecipients:{},_useFrictionless:false,_updateRecipients:function(){k._allowedRecipients={};h('/me/apprequestformerrecipients',function(l){if(!l||l.error)return;ES5(l.data,'forEach',true,function(m){k._allowedRecipients[m.recipient_id]=true;});});},init:function(){k._useFrictionless=true;g.getLoginStatus(function(l){if(l.status=='connected')k._updateRecipients();});i.subscribe('auth.login',function(l){if(l.authResponse)k._updateRecipients();});},_processRequestResponse:function(l,m){return function(n){var o=n&&n.updated_frictionless;if(k._useFrictionless&&o)k._updateRecipients();if(n){if(!m&&n.frictionless){j._hideLoader();j._restoreBodyPosition();j._hideIPadOverlay();}delete n.frictionless;delete n.updated_frictionless;}l&&l(n);};},isAllowed:function(l){if(!l)return false;if(typeof l==='number')return l in k._allowedRecipients;if(typeof l==='string')l=l.split(',');l=ES5(l,'map',true,function(o){return ES5(String(o),'trim',true);});var m=true,n=false;ES5(l,'forEach',true,function(o){m=m&&o in k._allowedRecipients;n=true;});return m&&n;}};i.subscribe('init:post',function(l){if(l.frictionlessRequests)k.init();});e.exports=k;}); +__d("insertIframe",["guid","GlobalCallback"],function(a,b,c,d,e,f){var g=b('guid'),h=b('GlobalCallback');function i(j){j.id=j.id||g();j.name=j.name||g();var k=false,l=false,m=function(){if(k&&!l){l=true;j.onload&&j.onload(j.root.firstChild);}},n=h.create(m);if(document.attachEvent){var o=('');j.root.innerHTML=('');k=true;setTimeout(function(){j.root.innerHTML=o;j.root.firstChild.src=j.url;j.onInsert&&j.onInsert(j.root.firstChild);},0);}else{var p=document.createElement('iframe');p.id=j.id;p.name=j.name;p.onload=m;p.scrolling='no';p.style.border='none';p.style.overflow='hidden';if(j.title)p.title=j.title;if(j.className)p.className=j.className;if(j.height!==undefined)p.style.height=j.height+'px';if(j.width!==undefined)if(j.width=='100%'){p.style.width=j.width;}else p.style.width=j.width+'px';j.root.appendChild(p);k=true;p.src=j.url;j.onInsert&&j.onInsert(p);}}e.exports=i;}); +__d("sdk.Native",["copyProperties","Log","UserAgent"],function(a,b,c,d,e,f){var g=b('copyProperties'),h=b('Log'),i=b('UserAgent'),j='fbNativeReady',k={onready:function(l){if(!i.nativeApp()){h.error('FB.Native.onready only works when the page is rendered '+'in a WebView of the native Facebook app. Test if this is the '+'case calling FB.UA.nativeApp()');return;}if(window.__fbNative&&!this.nativeReady)g(this,window.__fbNative);if(this.nativeReady){l();}else{var m=function(n){window.removeEventListener(j,m);this.onready(l);};window.addEventListener(j,m,false);}}};e.exports=k;}); +__d("sdk.UIServer",["sdk.Auth","sdk.Content","copyProperties","sdk.Dialog","sdk.DOM","sdk.Event","flattenObject","sdk.Frictionless","sdk.getContextType","guid","insertIframe","Log","sdk.Native","QueryString","resolveURI","sdk.RPC","sdk.Runtime","UrlMap","UserAgent","sdk.XD","SDKConfig"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.Content'),i=b('copyProperties'),j=b('sdk.Dialog'),k=b('sdk.DOM'),l=b('sdk.Event'),m=b('flattenObject'),n=b('sdk.Frictionless'),o=b('sdk.getContextType'),p=b('guid'),q=b('insertIframe'),r=b('Log'),s=b('sdk.Native'),t=b('QueryString'),u=b('resolveURI'),v=b('sdk.RPC'),w=b('sdk.Runtime'),x=c('SDKConfig'),y=b('UrlMap'),z=b('UserAgent'),aa=b('sdk.XD'),ba={transform:function(ea){if(ea.params.display==='touch'&&ea.params.access_token&&window.postMessage){ea.params.channel=da._xdChannelHandler(ea.id,'parent');if(!z.nativeApp())ea.params.in_iframe=1;return ea;}else return da.genericTransform(ea);},getXdRelation:function(ea){var fa=ea.display;if(fa==='touch'&&window.postMessage&&ea.in_iframe)return 'parent';return da.getXdRelation(ea);}},ca={'stream.share':{size:{width:670,height:340},url:'sharer.php',transform:function(ea){if(!ea.params.u)ea.params.u=window.location.toString();ea.params.display='popup';return ea;}},apprequests:{transform:function(ea){ea=ba.transform(ea);ea.params.frictionless=n&&n._useFrictionless;if(ea.params.frictionless){if(n.isAllowed(ea.params.to)){ea.params.display='iframe';ea.params.in_iframe=true;ea.hideLoader=true;}ea.cb=n._processRequestResponse(ea.cb,ea.hideLoader);}ea.closeIcon=false;return ea;},getXdRelation:ba.getXdRelation},feed:ba,'permissions.oauth':{url:'dialog/oauth',size:{width:(z.mobile()?null:440),height:(z.mobile()?null:183)},transform:function(ea){if(!w.getClientID()){r.error('FB.login() called before FB.init().');return;}if(g.getAuthResponse()&&!ea.params.scope){r.error('FB.login() called when user is already connected.');ea.cb&&ea.cb({status:w.getLoginStatus(),authResponse:g.getAuthResponse()});return;}var fa=ea.cb,ga=ea.id;delete ea.cb;if(ea.params.display==='async'){i(ea.params,{client_id:w.getClientID(),origin:o(),response_type:'token,signed_request',domain:location.hostname});ea.cb=g.xdResponseWrapper(fa,g.getAuthResponse(),'permissions.oauth');}else i(ea.params,{client_id:w.getClientID(),redirect_uri:u(da.xdHandler(fa,ga,'opener',g.getAuthResponse(),'permissions.oauth')),origin:o(),response_type:'token,signed_request',domain:location.hostname});return ea;}},'auth.logout':{url:'logout.php',transform:function(ea){if(!w.getClientID()){r.error('FB.logout() called before calling FB.init().');}else if(!g.getAuthResponse()){r.error('FB.logout() called without an access token.');}else{ea.params.next=da.xdHandler(ea.cb,ea.id,'parent',g.getAuthResponse(),'logout');return ea;}}},'login.status':{url:'dialog/oauth',transform:function(ea){var fa=ea.cb,ga=ea.id;delete ea.cb;i(ea.params,{client_id:w.getClientID(),redirect_uri:da.xdHandler(fa,ga,'parent',g.getAuthResponse(),'login_status'),origin:o(),response_type:'token,signed_request,code',domain:location.hostname});return ea;}}},da={Methods:ca,_loadedNodes:{},_defaultCb:{},_resultToken:'"xxRESULTTOKENxx"',genericTransform:function(ea){if(ea.params.display=='dialog'||ea.params.display=='iframe')i(ea.params,{display:'iframe',channel:da._xdChannelHandler(ea.id,'parent.parent')},true);return ea;},checkOauthDisplay:function(ea){var fa=ea.scope||ea.perms||w.getScope();if(!fa)return ea.display;var ga=fa.split(/\s|,/g);for(var ha=0;ha2000;},getDisplayMode:function(ea,fa){if(fa.display==='hidden'||fa.display==='none')return fa.display;var ga=w.isEnvironment(w.ENVIRONMENTS.CANVAS)||w.isEnvironment(w.ENVIRONMENTS.PAGETAB);if(ga&&!fa.display)return 'async';if(z.mobile()||fa.display==='touch')return 'touch';if(!w.getAccessToken()&&fa.display=='dialog'&&!ea.loggedOutIframe){r.error('"dialog" mode can only be used when the user is connected.');return 'popup';}if(ea.connectDisplay&&!ga)return ea.connectDisplay;return fa.display||(w.getAccessToken()?'dialog':'popup');},getXdRelation:function(ea){var fa=ea.display;if(fa==='popup'||fa==='touch')return 'opener';if(fa==='dialog'||fa==='iframe'||fa==='hidden'||fa==='none')return 'parent';if(fa==='async')return 'parent.frames['+window.name+']';},popup:function(ea){var fa=typeof window.screenX!='undefined'?window.screenX:window.screenLeft,ga=typeof window.screenY!='undefined'?window.screenY:window.screenTop,ha=typeof window.outerWidth!='undefined'?window.outerWidth:document.documentElement.clientWidth,ia=typeof window.outerHeight!='undefined'?window.outerHeight:(document.documentElement.clientHeight-22),ja=z.mobile()?null:ea.size.width,ka=z.mobile()?null:ea.size.height,la=(fa<0)?window.screen.width+fa:fa,ma=parseInt(la+((ha-ja)/2),10),na=parseInt(ga+((ia-ka)/2.5),10),oa=[];if(ja!==null)oa.push('width='+ja);if(ka!==null)oa.push('height='+ka);oa.push('left='+ma);oa.push('top='+na);oa.push('scrollbars=1');if(ea.name=='permissions.request'||ea.name=='permissions.oauth')oa.push('location=1,toolbar=0');oa=oa.join(',');var pa;if(ea.post){pa=window.open('about:blank',ea.id,oa);if(pa){da.setLoadedNode(ea,pa,'popup');h.submitToTarget({url:ea.url,target:ea.id,params:ea.params});}}else{pa=window.open(ea.url,ea.id,oa);if(pa)da.setLoadedNode(ea,pa,'popup');}if(!pa)return;if(ea.id in da._defaultCb)da._popupMonitor();},setLoadedNode:function(ea,fa,ga){if(ea.params&&ea.params.display!='popup')fa.fbCallID=ea.id;fa={node:fa,type:ga,fbCallID:ea.id};da._loadedNodes[ea.id]=fa;},getLoadedNode:function(ea){var fa=typeof ea=='object'?ea.id:ea,ga=da._loadedNodes[fa];return ga?ga.node:null;},hidden:function(ea){ea.className='FB_UI_Hidden';ea.root=h.appendHidden('');da._insertIframe(ea);},iframe:function(ea){ea.className='FB_UI_Dialog';var fa=function(){da._triggerDefault(ea.id);};ea.root=j.create({onClose:fa,closeIcon:ea.closeIcon===undefined?true:ea.closeIcon,classes:(z.ipad()?'centered':'')});if(!ea.hideLoader)j.showLoader(fa,ea.size.width);k.addCss(ea.root,'fb_dialog_iframe');da._insertIframe(ea);},touch:function(ea){if(ea.params&&ea.params.in_iframe){if(ea.ui_created){j.showLoader(function(){da._triggerDefault(ea.id);},0);}else da.iframe(ea);}else if(z.nativeApp()&&!ea.ui_created){ea.frame=ea.id;s.onready(function(){da.setLoadedNode(ea,s.open(ea.url+'#cb='+ea.frameName),'native');});da._popupMonitor();}else if(!ea.ui_created)da.popup(ea);},async:function(ea){ea.params.redirect_uri=location.protocol+'//'+location.host+location.pathname;delete ea.params.access_token;v.remote.showDialog(ea.params,function(fa){var ga=j.get(ea.id);if(fa.result)ga.trackEvents(fa.result.e2e);ga.trackEvent('close');ea.cb(fa.result);});},getDefaultSize:function(){return j.getDefaultSize();},_insertIframe:function(ea){da._loadedNodes[ea.id]=false;var fa=function(ga){if(ea.id in da._loadedNodes)da.setLoadedNode(ea,ga,'iframe');};if(ea.post){q({url:'about:blank',root:ea.root,className:ea.className,width:ea.size.width,height:ea.size.height,id:ea.id,onInsert:fa,onload:function(ga){h.submitToTarget({url:ea.url,target:ga.name,params:ea.params});}});}else q({url:ea.url,root:ea.root,className:ea.className,width:ea.size.width,height:ea.size.height,id:ea.id,name:ea.frameName,onInsert:fa});},_handleResizeMessage:function(ea,fa){var ga=da.getLoadedNode(ea);if(!ga)return;if(fa.height)ga.style.height=fa.height+'px';if(fa.width)ga.style.width=fa.width+'px';aa.inform('resize.ack',fa||{},'parent.frames['+ga.name+']');if(!j.isActive(ga))j.show(ga);},_triggerDefault:function(ea){da._xdRecv({frame:ea},da._defaultCb[ea]||function(){});},_popupMonitor:function(){var ea;for(var fa in da._loadedNodes)if(da._loadedNodes.hasOwnProperty(fa)&&fa in da._defaultCb){var ga=da._loadedNodes[fa];if(ga.type!='popup'&&ga.type!='native')continue;var ha=ga.node;try{if(ha.closed){da._triggerDefault(fa);}else ea=true;}catch(ia){}}if(ea&&!da._popupInterval){da._popupInterval=setInterval(da._popupMonitor,100);}else if(!ea&&da._popupInterval){clearInterval(da._popupInterval);da._popupInterval=null;}},_xdChannelHandler:function(ea,fa){return aa.handler(function(ga){var ha=da.getLoadedNode(ea);if(!ha)return;if(ga.type=='resize'){da._handleResizeMessage(ea,ga);}else if(ga.type=='hide'){j.hide(ha);}else if(ga.type=='rendered'){var ia=j._findRoot(ha);j.show(ia);}else if(ga.type=='fireevent')l.fire(ga.event);},fa,true,null);},_xdNextHandler:function(ea,fa,ga,ha){if(ha)da._defaultCb[fa]=ea;return aa.handler(function(ia){da._xdRecv(ia,ea);},ga)+'&frame='+fa;},_xdRecv:function(ea,fa){var ga=da.getLoadedNode(ea.frame);if(ga){try{if(k.containsCss(ga,'FB_UI_Hidden')){setTimeout(function(){ga.parentNode.parentNode.removeChild(ga.parentNode);},3000);}else if(k.containsCss(ga,'FB_UI_Dialog'))j.remove(ga);}catch(ha){}try{if(ga.close){ga.close();if(/iPhone.*Version\/(5|6)/.test(navigator.userAgent)&&RegExp.$1!=='5')window.focus();da._popupCount--;}}catch(ia){}}delete da._loadedNodes[ea.frame];delete da._defaultCb[ea.frame];var ja=j.get(ea.frame);ja.trackEvents(ea.e2e);ja.trackEvent('close');fa(ea);},_xdResult:function(ea,fa,ga,ha){return (da._xdNextHandler(function(ia){ea&&ea(ia.result&&ia.result!=da._resultToken&&ES5('JSON','parse',false,ia.result));},fa,ga,ha)+'&result='+encodeURIComponent(da._resultToken));},xdHandler:function(ea,fa,ga,ha,ia){return da._xdNextHandler(g.xdResponseWrapper(ea,ha,ia),fa,ga,true);}};v.stub('showDialog');e.exports=da;}); +__d("sdk.ui",["Assert","copyProperties","sdk.feature","sdk.Impressions","Log","sdk.UIServer"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('copyProperties'),i=b('sdk.feature'),j=b('sdk.Impressions'),k=b('Log'),l=b('sdk.UIServer');function m(n,o){g.isObject(n);g.maybeFunction(o);n=h({},n);if(!n.method){k.error('"method" is a required parameter for FB.ui().');return null;}var p=n.method;if(n.redirect_uri){k.warn('When using FB.ui, you should not specify a redirect_uri.');delete n.redirect_uri;}if((p=='permissions.request'||p=='permissions.oauth')&&(n.display=='iframe'||n.display=='dialog'))n.display=l.checkOauthDisplay(n);var q=i('e2e_tracking',true);if(q)n.e2e={};var r=l.prepareCall(n,o||function(){});if(!r)return null;var s=r.params.display;if(s==='dialog'){s='iframe';}else if(s==='none')s='hidden';var t=l[s];if(!t){k.error('"display" must be one of "popup", '+'"dialog", "iframe", "touch", "async", "hidden", or "none"');return null;}if(q)r.dialog.subscribe('e2e:end',function(u){u.method=p;u.display=s;k.debug('e2e: %s',ES5('JSON','stringify',false,u));j.log(114,{payload:u});});t(r);return r.dialog;}e.exports=m;}); +__d("legacy:fb.auth",["sdk.Auth","sdk.Cookie","copyProperties","sdk.Event","FB","Log","sdk.Runtime","sdk.SignedRequest","sdk.ui"],function(a,b,c,d){var e=b('sdk.Auth'),f=b('sdk.Cookie'),g=b('copyProperties'),h=b('sdk.Event'),i=b('FB'),j=b('Log'),k=b('sdk.Runtime'),l=b('sdk.SignedRequest'),m=b('sdk.ui');i.provide('',{getLoginStatus:function(){return e.getLoginStatus.apply(e,arguments);},getAuthResponse:function(){return e.getAuthResponse();},getAccessToken:function(){return k.getAccessToken()||null;},getUserID:function(){return k.getUserID()||k.getCookieUserID();},login:function(n,o){if(o&&o.perms&&!o.scope){o.scope=o.perms;delete o.perms;j.warn('OAuth2 specification states that \'perms\' '+'should now be called \'scope\'. Please update.');}var p=k.isEnvironment(k.ENVIRONMENTS.CANVAS)||k.isEnvironment(k.ENVIRONMENTS.PAGETAB);m(g({method:'permissions.oauth',display:p?'async':'popup',domain:location.hostname},o||{}),n);},logout:function(n){m({method:'auth.logout',display:'hidden'},n);}});e.subscribe('logout',ES5(h.fire,'bind',true,h,'auth.logout'));e.subscribe('login',ES5(h.fire,'bind',true,h,'auth.login'));e.subscribe('authresponse.change',ES5(h.fire,'bind',true,h,'auth.authResponseChange'));e.subscribe('status.change',ES5(h.fire,'bind',true,h,'auth.statusChange'));h.subscribe('init:post',function(n){if(n.status)e.getLoginStatus();if(k.getClientID())if(n.authResponse){e.setAuthResponse(n.authResponse,'connected');}else if(k.getUseCookie()){var o=f.loadSignedRequest(),p;if(o){try{p=l.parse(o);}catch(q){f.clearSignedRequestCookie();}if(p&&p.user_id)k.setCookieUserID(p.user_id);}f.loadMeta();}});},3); +__d("sdk.Canvas.Plugin",["sdk.api","sdk.RPC","Log","sdk.Runtime","createArrayFrom"],function(a,b,c,d,e,f){var g=b('sdk.api'),h=b('sdk.RPC'),i=b('Log'),j=b('sdk.Runtime'),k=b('createArrayFrom'),l='CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000',m='CLSID:444785F1-DE89-4295-863A-D46C3A781394',n=null;function o(y){y._hideunity_savedstyle={};y._hideunity_savedstyle.left=y.style.left;y._hideunity_savedstyle.position=y.style.position;y._hideunity_savedstyle.width=y.style.width;y._hideunity_savedstyle.height=y.style.height;y.style.left='-10000px';y.style.position='absolute';y.style.width='1px';y.style.height='1px';}function p(y){if(y._hideunity_savedstyle){y.style.left=y._hideunity_savedstyle.left;y.style.position=y._hideunity_savedstyle.position;y.style.width=y._hideunity_savedstyle.width;y.style.height=y._hideunity_savedstyle.height;}}function q(y){y._old_visibility=y.style.visibility;y.style.visibility='hidden';}function r(y){y.style.visibility=y._old_visibility||'';delete y._old_visibility;}function s(y){var z=y.type.toLowerCase()==='application/x-shockwave-flash'||(y.classid&&y.classid.toUpperCase()==l);if(!z)return false;var aa=/opaque|transparent/i;if(aa.test(y.getAttribute('wmode')))return false;for(var ba=0;ba=-p)return false;}j=o;h.remote.setSize(o);return true;}function m(o,p){if(p===undefined&&typeof o==='number'){p=o;o=true;}if(o||o===undefined){if(i===null)i=setInterval(function(){l();},p||100);l();}else if(i!==null){clearInterval(i);i=null;}}h.stub('setSize');var n={setSize:l,setAutoGrow:m};e.exports=n;}); +__d("sdk.Canvas.Navigation",["sdk.RPC"],function(a,b,c,d,e,f){var g=b('sdk.RPC');function h(j){g.local.navigate=function(k){j({path:k});};g.remote.setNavigationEnabled(true);}g.stub('setNavigationEnabled');var i={setUrlHandler:h};e.exports=i;}); +__d("sdk.Canvas.Tti",["sdk.RPC","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.RPC'),h=b('sdk.Runtime');function i(n,o){var p={appId:h.getClientID(),time:ES5('Date','now',false),name:o},q=[p];if(n)q.push(function(r){n(r.result);});g.remote.logTtiMessage.apply(null,q);}function j(){i(null,'StartIframeAppTtiTimer');}function k(n){i(n,'StopIframeAppTtiTimer');}function l(n){i(n,'RecordIframeAppTti');}g.stub('logTtiMessage');var m={setDoneLoading:l,startTimer:j,stopTimer:k};e.exports=m;}); +__d("legacy:fb.canvas",["Assert","sdk.Canvas.Environment","sdk.Event","FB","sdk.Canvas.Plugin","sdk.Canvas.IframeHandling","Log","sdk.Canvas.Navigation","sdk.Runtime","sdk.Canvas.Tti"],function(a,b,c,d){var e=b('Assert'),f=b('sdk.Canvas.Environment'),g=b('sdk.Event'),h=b('FB'),i=b('sdk.Canvas.Plugin'),j=b('sdk.Canvas.IframeHandling'),k=b('Log'),l=b('sdk.Canvas.Navigation'),m=b('sdk.Runtime'),n=b('sdk.Canvas.Tti');h.provide('Canvas',{setSize:function(o){e.maybeObject(o,'Invalid argument');return j.setSize.apply(null,arguments);},setAutoGrow:function(){return j.setAutoGrow.apply(null,arguments);},getPageInfo:function(o){e.isFunction(o,'Invalid argument');return f.getPageInfo.apply(null,arguments);},scrollTo:function(o,p){e.maybeNumber(o,'Invalid argument');e.maybeNumber(p,'Invalid argument');return f.scrollTo.apply(null,arguments);},setDoneLoading:function(o){e.maybeFunction(o,'Invalid argument');return n.setDoneLoading.apply(null,arguments);},startTimer:function(){return n.startTimer.apply(null,arguments);},stopTimer:function(o){e.maybeFunction(o,'Invalid argument');return n.stopTimer.apply(null,arguments);},getHash:function(o){e.isFunction(o,'Invalid argument');return l.getHash.apply(null,arguments);},setHash:function(o){e.isString(o,'Invalid argument');return l.setHash.apply(null,arguments);},setUrlHandler:function(o){e.isFunction(o,'Invalid argument');return l.setUrlHandler.apply(null,arguments);}});h.provide('CanvasInsights',{setDoneLoading:function(o){k.warn('Deprecated: use FB.Canvas.setDoneLoading');e.maybeFunction(o,'Invalid argument');return n.setDoneLoading.apply(null,arguments);}});g.subscribe('init:post',function(o){if(m.isEnvironment(m.ENVIRONMENTS.CANVAS)){e.isTrue(!o.hideFlashCallback||!o.hidePluginCallback,'cannot specify deprecated hideFlashCallback and new hidePluginCallback');i._setHidePluginCallback(o.hidePluginCallback||o.hideFlashCallback);}});},3); +__d("sdk.Canvas.Prefetcher",["sdk.api","createArrayFrom","sdk.Runtime","CanvasPrefetcherConfig"],function(a,b,c,d,e,f){var g=b('sdk.api'),h=b('createArrayFrom'),i=c('CanvasPrefetcherConfig'),j=b('sdk.Runtime'),k={AUTOMATIC:0,MANUAL:1},l=i.sampleRate,m=i.blacklist,n=k.AUTOMATIC,o=[];function p(){var u={object:'data',link:'href',script:'src'};if(n==k.AUTOMATIC)ES5(ES5('Object','keys',false,u),'forEach',true,function(v){var w=u[v];ES5(h(document.getElementsByTagName(v)),'forEach',true,function(x){if(x[w])o.push(x[w]);});});if(o.length===0)return;g(j.getClientID()+'/staticresources','post',{urls:ES5('JSON','stringify',false,o),is_https:location.protocol==='https:'});o=[];}function q(){if(!j.isEnvironment(j.ENVIRONMENTS.CANVAS)||!j.getClientID()||!l)return;if(Math.random()>1/l||m=='*'||~ES5(m,'indexOf',true,j.getClientID()))return;setTimeout(p,30000);}function r(u){n=u;}function s(u){o.push(u);}var t={COLLECT_AUTOMATIC:k.AUTOMATIC,COLLECT_MANUAL:k.MANUAL,addStaticResource:s,setCollectionMode:r,_maybeSample:q};e.exports=t;}); +__d("legacy:fb.canvas.prefetcher",["FB","sdk.Canvas.Prefetcher","sdk.Event","sdk.Runtime"],function(a,b,c,d){var e=b('FB'),f=b('sdk.Canvas.Prefetcher'),g=b('sdk.Event'),h=b('sdk.Runtime');e.provide('Canvas.Prefetcher',f);g.subscribe('init:post',function(i){if(h.isEnvironment(h.ENVIRONMENTS.CANVAS))f._maybeSample();});},3); +__d("legacy:fb.compat.ui",["copyProperties","FB","Log","sdk.ui","sdk.UIServer"],function(a,b,c,d){var e=b('copyProperties'),f=b('FB'),g=b('Log'),h=b('sdk.ui'),i=b('sdk.UIServer');f.provide('',{share:function(j){g.error('share() has been deprecated. Please use FB.ui() instead.');h({display:'popup',method:'stream.share',u:j});},publish:function(j,k){g.error('publish() has been deprecated. Please use FB.ui() instead.');j=j||{};h(e({display:'popup',method:'stream.publish',preview:1},j||{}),k);},addFriend:function(j,k){g.error('addFriend() has been deprecated. Please use FB.ui() instead.');h({display:'popup',id:j,method:'friend.add'},k);}});i.Methods['auth.login']=i.Methods['permissions.request'];},3); +__d("mergeArrays",[],function(a,b,c,d,e,f){function g(h,i){for(var j=0;j=0,'onrender() has been called too many times');};ES5(i(ba.getElementsByTagName('*')),'forEach',true,function(ja){if(!da&&ja.getAttribute('fb-xfbml-state'))return;if(ja.nodeType!==1)return;var ka=x(ja),la=y(ja);if(!ka){ka=w(ja);if(!ka)return;if(p.ie()<9){var ma=ja;ja=document.createElement('div');j.addCss(ja,ka.xmlns+'-'+ka.localName);ES5(i(ma.childNodes),'forEach',true,function(qa){ja.appendChild(qa);});for(var na in la)if(la.hasOwnProperty(na))ja.setAttribute(na,la[na]);ma.parentNode.replaceChild(ja,ma);}}fa++;ga++;var oa=new ka.ctor(ja,ka.xmlns,ka.localName,la);oa.subscribe('render',o(function(){ja.setAttribute('fb-xfbml-state','rendered');ha();}));var pa=function(){if(ja.getAttribute('fb-xfbml-state')=='parsed'){t.subscribe('render.queue',pa);}else{ja.setAttribute('fb-xfbml-state','parsed');oa.process();}};pa();});t.inform('parse',ea,ga);var ia=30000;setTimeout(function(){if(fa>0)m.warn('%s tags failed to render in %s ms',fa,ia);},ia);ha();}t.subscribe('render',function(){var ba=t.getSubscribers('render.queue');t.clearSubscribers('render.queue');ES5(ba,'forEach',true,function(ca){ca();});});h(t,{registerTag:function(ba){var ca=ba.xmlns+':'+ba.localName;g.isUndefined(q[ca],ca+' already registered');q[ca]=ba;r[ba.xmlns+'-'+ba.localName]=ba;},parse:function(ba,ca){z(ba||document.body,ca||function(){},true);},parseNew:function(){z(document.body,function(){},false);}});if(k('log_tag_count')){var aa=function(ba,ca){t.unsubscribe('parse',aa);setTimeout(ES5(l.log,'bind',true,null,102,{tag_count:ca}),5000);};t.subscribe('parse',aa);}e.exports=t;}); +__d("PluginPipe",["sdk.Content","copyProperties","sdk.feature","guid","insertIframe","Miny","ObservableMixin","sdk.Runtime","UrlMap","UserAgent","XFBML","PluginPipeConfig"],function(a,b,c,d,e,f){var g=b('sdk.Content'),h=b('copyProperties'),i=b('sdk.feature'),j=b('guid'),k=b('insertIframe'),l=b('Miny'),m=b('ObservableMixin'),n=c('PluginPipeConfig'),o=b('sdk.Runtime'),p=b('UrlMap'),q=b('UserAgent'),r=b('XFBML'),s=new m(),t=n.threshold,u=[];function v(){return !!(i('plugin_pipe')&&o.getSecure()!==undefined&&(q.chrome()||q.firefox())&&n.enabledApps[o.getClientID()]);}function w(){var y=u;u=[];if(y.length<=t){ES5(y,'forEach',true,function(ba){k(ba.config);});return;}var z=y.length+1;function aa(){z--;if(z===0)x(y);}ES5(y,'forEach',true,function(ba){var ca={};for(var da in ba.config)ca[da]=ba.config[da];ca.url=p.resolve('www',o.getSecure())+'/plugins/plugin_pipe_shell.php';ca.onload=aa;k(ca);});aa();}r.subscribe('parse',w);function x(y){var z=document.createElement('span');g.appendHidden(z);var aa={};ES5(y,'forEach',true,function(fa){aa[fa.config.name]={plugin:fa.tag,params:fa.params};});var ba=ES5('JSON','stringify',false,aa),ca=l.encode(ba);ES5(y,'forEach',true,function(fa){var ga=document.getElementsByName(fa.config.name)[0];ga.onload=fa.config.onload;});var da=p.resolve('www',o.getSecure())+'/plugins/pipe.php',ea=j();k({url:'about:blank',root:z,name:ea,className:'fb_hidden fb_invisible',onload:function(){g.submitToTarget({url:da,target:ea,params:{plugins:ca.length-1)?n:l;});},isValid:function(){for(var k=this.dom;k;k=k.parentNode)if(k==document.body)return true;},clear:function(){g.html(this.dom,'');}},i);e.exports=j;}); +__d("sdk.XFBML.IframeWidget",["sdk.Arbiter","sdk.Auth","sdk.Content","copyProperties","sdk.DOM","sdk.Event","sdk.XFBML.Element","guid","insertIframe","QueryString","sdk.Runtime","sdk.ui","UrlMap","sdk.XD"],function(a,b,c,d,e,f){var g=b('sdk.Arbiter'),h=b('sdk.Auth'),i=b('sdk.Content'),j=b('copyProperties'),k=b('sdk.DOM'),l=b('sdk.Event'),m=b('sdk.XFBML.Element'),n=b('guid'),o=b('insertIframe'),p=b('QueryString'),q=b('sdk.Runtime'),r=b('sdk.ui'),s=b('UrlMap'),t=b('sdk.XD'),u=m.extend({_iframeName:null,_showLoader:true,_refreshOnAuthChange:false,_allowReProcess:false,_fetchPreCachedLoader:false,_visibleAfter:'load',_widgetPipeEnabled:false,_borderReset:false,_repositioned:false,getUrlBits:function(){throw new Error('Inheriting class needs to implement getUrlBits().');},setupAndValidate:function(){return true;},oneTimeSetup:function(){},getSize:function(){},getIframeName:function(){return this._iframeName;},getIframeTitle:function(){return 'Facebook Social Plugin';},getChannelUrl:function(){if(!this._channelUrl){var y=this;this._channelUrl=t.handler(function(z){y.fire('xd.'+z.type,z);},'parent.parent',true);}return this._channelUrl;},getIframeNode:function(){return this.dom.getElementsByTagName('iframe')[0];},arbiterInform:function(event,y,z){t.sendToFacebook(this.getIframeName(),{method:event,params:ES5('JSON','stringify',false,y||{}),behavior:z||g.BEHAVIOR_PERSISTENT});},_arbiterInform:function(event,y,z){var aa='parent.frames["'+this.getIframeNode().name+'"]';t.inform(event,y,aa,z);},getDefaultWebDomain:function(){return s.resolve('www');},process:function(y){if(this._done){if(!this._allowReProcess&&!y)return;this.clear();}else this._oneTimeSetup();this._done=true;this._iframeName=this.getIframeName()||this._iframeName||n();if(!this.setupAndValidate()){this.fire('render');return;}if(this._showLoader)this._addLoader();k.addCss(this.dom,'fb_iframe_widget');if(this._visibleAfter!='immediate'){k.addCss(this.dom,'fb_hide_iframes');}else this.subscribe('iframe.onload',ES5(this.fire,'bind',true,this,'render'));var z=this.getSize()||{},aa=this.getFullyQualifiedURL();if(z.width=='100%')k.addCss(this.dom,'fb_iframe_widget_fluid');this.clear();o({url:aa,root:this.dom.appendChild(document.createElement('span')),name:this._iframeName,title:this.getIframeTitle(),className:q.getRtl()?'fb_rtl':'fb_ltr',height:z.height,width:z.width,onload:ES5(this.fire,'bind',true,this,'iframe.onload')});this._resizeFlow(z);this.loaded=false;this.subscribe('iframe.onload',ES5(function(){this.loaded=true;},'bind',true,this));},generateWidgetPipeIframeName:function(){v++;return 'fb_iframe_'+v;},getFullyQualifiedURL:function(){var y=this._getURL();y+='?'+p.encode(this._getQS());if(y.length>2000){y='about:blank';var z=ES5(function(){this._postRequest();this.unsubscribe('iframe.onload',z);},'bind',true,this);this.subscribe('iframe.onload',z);}return y;},_getWidgetPipeShell:function(){return s.resolve('www')+'/common/widget_pipe_shell.php';},_oneTimeSetup:function(){this.subscribe('xd.resize',ES5(this._handleResizeMsg,'bind',true,this));this.subscribe('xd.resize',ES5(this._bubbleResizeEvent,'bind',true,this));this.subscribe('xd.resize.iframe',ES5(this._resizeIframe,'bind',true,this));this.subscribe('xd.resize.flow',ES5(this._resizeFlow,'bind',true,this));this.subscribe('xd.resize.flow',ES5(this._bubbleResizeEvent,'bind',true,this));this.subscribe('xd.refreshLoginStatus',function(){h.getLoginStatus(function(){},true);});this.subscribe('xd.logout',function(){r({method:'auth.logout',display:'hidden'},function(){});});if(this._refreshOnAuthChange)this._setupAuthRefresh();if(this._visibleAfter=='load')this.subscribe('iframe.onload',ES5(this._makeVisible,'bind',true,this));this.subscribe('xd.verify',ES5(function(y){this.arbiterInform('xd/verify',y.token);},'bind',true,this));this.oneTimeSetup();},_makeVisible:function(){this._removeLoader();k.removeCss(this.dom,'fb_hide_iframes');this.fire('render');},_setupAuthRefresh:function(){h.getLoginStatus(ES5(function(y){var z=y.status;l.subscribe('auth.statusChange',ES5(function(aa){if(!this.isValid())return;if(z=='unknown'||aa.status=='unknown')this.process(true);z=aa.status;},'bind',true,this));},'bind',true,this));},_handleResizeMsg:function(y){if(!this.isValid())return;this._resizeIframe(y);this._resizeFlow(y);if(!this._borderReset){this.getIframeNode().style.border='none';this._borderReset=true;}this._makeVisible();},_bubbleResizeEvent:function(y){var z={height:y.height,width:y.width,pluginID:this.getAttribute('plugin-id')};l.fire('xfbml.resize',z);},_resizeIframe:function(y){var z=this.getIframeNode();if(y.reposition==="true")this._repositionIframe(y);y.height&&(z.style.height=y.height+'px');y.width&&(z.style.width=y.width+'px');this._updateIframeZIndex();},_resizeFlow:function(y){var z=this.dom.getElementsByTagName('span')[0];y.height&&(z.style.height=y.height+'px');y.width&&(z.style.width=y.width+'px');this._updateIframeZIndex();},_updateIframeZIndex:function(){var y=this.dom.getElementsByTagName('span')[0],z=this.getIframeNode(),aa=z.style.height===y.style.height&&z.style.width===y.style.width,ba=aa?'removeCss':'addCss';k[ba](z,'fb_iframe_widget_lift');},_repositionIframe:function(y){var z=this.getIframeNode(),aa=parseInt(k.getStyle(z,'width'),10),ba=k.getPosition(z).x,ca=k.getViewportInfo().width,da=parseInt(y.width,10);if(ba+da>ca&&ba>da){z.style.left=aa-da+'px';this.arbiterInform('xd/reposition',{type:'horizontal'});this._repositioned=true;}else if(this._repositioned){z.style.left='0px';this.arbiterInform('xd/reposition',{type:'restore'});this._repositioned=false;}},_addLoader:function(){if(!this._loaderDiv){k.addCss(this.dom,'fb_iframe_widget_loader');this._loaderDiv=document.createElement('div');this._loaderDiv.className='FB_Loader';this.dom.appendChild(this._loaderDiv);}},_removeLoader:function(){if(this._loaderDiv){k.removeCss(this.dom,'fb_iframe_widget_loader');if(this._loaderDiv.parentNode)this._loaderDiv.parentNode.removeChild(this._loaderDiv);this._loaderDiv=null;}},_getQS:function(){return j({api_key:q.getClientID(),locale:q.getLocale(),sdk:'joey',kid_directed_site:q.getKidDirectedSite(),ref:this.getAttribute('ref')},this.getUrlBits().params);},_getURL:function(){var y=this.getDefaultWebDomain(),z='';return y+'/plugins/'+z+this.getUrlBits().name+'.php';},_postRequest:function(){i.submitToTarget({url:this._getURL(),target:this.getIframeNode().name,params:this._getQS()});}}),v=0,w={};function x(){var y={};for(var z in w){var aa=w[z];y[z]={widget:aa.getUrlBits().name,params:aa._getQS()};}return y;}e.exports=u;}); +__d("sdk.XFBML.Comments",["sdk.Event","sdk.XFBML.IframeWidget","QueryString","sdk.Runtime","UrlMap","UserAgent","SDKConfig"],function(a,b,c,d,e,f){var g=b('sdk.Event'),h=b('sdk.XFBML.IframeWidget'),i=b('QueryString'),j=b('sdk.Runtime'),k=c('SDKConfig'),l=b('UrlMap'),m=b('UserAgent'),n=h.extend({_visibleAfter:'immediate',_refreshOnAuthChange:true,setupAndValidate:function(){var o={channel_url:this.getChannelUrl(),colorscheme:this.getAttribute('colorscheme'),numposts:this.getAttribute('num-posts',10),width:this._getPxAttribute('width',550),href:this.getAttribute('href'),permalink:this.getAttribute('permalink'),publish_feed:this.getAttribute('publish_feed'),order_by:this.getAttribute('order_by'),mobile:this._getBoolAttribute('mobile')};if(k.initSitevars.enableMobileComments&&m.mobile()&&o.mobile!==false){o.mobile=true;delete o.width;}if(!o.href){o.migrated=this.getAttribute('migrated');o.xid=this.getAttribute('xid');o.title=this.getAttribute('title',document.title);o.url=this.getAttribute('url',document.URL);o.quiet=this.getAttribute('quiet');o.reverse=this.getAttribute('reverse');o.simple=this.getAttribute('simple');o.css=this.getAttribute('css');o.notify=this.getAttribute('notify');if(!o.xid){var p=ES5(document.URL,'indexOf',true,'#');if(p>0){o.xid=encodeURIComponent(document.URL.substring(0,p));}else o.xid=encodeURIComponent(document.URL);}if(o.migrated)o.href=l.resolve('www')+'/plugins/comments_v1.php?'+'app_id='+j.getClientID()+'&xid='+encodeURIComponent(o.xid)+'&url='+encodeURIComponent(o.url);}else{var q=this.getAttribute('fb_comment_id');if(!q){q=i.decode(document.URL.substring(ES5(document.URL,'indexOf',true,'?')+1)).fb_comment_id;if(q&&ES5(q,'indexOf',true,'#')>0)q=q.substring(0,ES5(q,'indexOf',true,'#'));}if(q){o.fb_comment_id=q;this.subscribe('render',ES5(function(){if(!window.location.hash)window.location.hash=this.getIframeNode().id;},'bind',true,this));}}this._attr=o;return true;},oneTimeSetup:function(){this.subscribe('xd.addComment',ES5(this._handleCommentMsg,'bind',true,this));this.subscribe('xd.commentCreated',ES5(this._handleCommentCreatedMsg,'bind',true,this));this.subscribe('xd.commentRemoved',ES5(this._handleCommentRemovedMsg,'bind',true,this));},getSize:function(){if(this._attr.mobile)return {width:'100%',height:160};return {width:this._attr.width,height:160};},getUrlBits:function(){return {name:'comments',params:this._attr};},getDefaultWebDomain:function(){return l.resolve(this._attr.mobile?'m':'www',true);},_handleCommentMsg:function(o){if(!this.isValid())return;g.fire('comments.add',{post:o.post,user:o.user,widget:this});},_handleCommentCreatedMsg:function(o){if(!this.isValid())return;var p={href:o.href,commentID:o.commentID,parentCommentID:o.parentCommentID};g.fire('comment.create',p);},_handleCommentRemovedMsg:function(o){if(!this.isValid())return;var p={href:o.href,commentID:o.commentID};g.fire('comment.remove',p);}});e.exports=n;}); +__d("sdk.XFBML.CommentsCount",["sdk.Data","sdk.DOM","sdk.XFBML.Element","sprintf"],function(a,b,c,d,e,f){var g=b('sdk.Data'),h=b('sdk.DOM'),i=b('sdk.XFBML.Element'),j=b('sprintf'),k=i.extend({process:function(){h.addCss(this.dom,'fb_comments_count_zero');var l=this.getAttribute('href',window.location.href);g._selectByIndex(['commentsbox_count'],'link_stat','url',l).wait(ES5(function(m){var n=m[0].commentsbox_count;h.html(this.dom,j('%s',n));if(n>0)h.removeCss(this.dom,'fb_comments_count_zero');this.fire('render');},'bind',true,this));}});e.exports=k;}); +__d("sdk.Anim",["sdk.DOM"],function(a,b,c,d,e,f){var g=b('sdk.DOM'),h={ate:function(i,j,k,l){k=!isNaN(parseFloat(k))&&k>=0?k:750;var m=40,n={},o={},p=null,q=setInterval(ES5(function(){if(!p)p=ES5('Date','now',false);var r=1;if(k!=0)r=Math.min((ES5('Date','now',false)-p)/k,1);for(var s in j)if(j.hasOwnProperty(s)){var t=j[s];if(!n[s]){var u=g.getStyle(i,s);if(u===false)return;n[s]=this._parseCSS(u+'');}if(!o[s])o[s]=this._parseCSS(t.toString());var v='';ES5(n[s],'forEach',true,function(w,x){if(isNaN(o[s][x].numPart)&&o[s][x].textPart=='?'){v=w.numPart+w.textPart;}else if(isNaN(w.numPart)){v=w.textPart;}else v+=(w.numPart+Math.ceil((o[s][x].numPart-w.numPart)*Math.sin(Math.PI/2*r)))+o[s][x].textPart+' ';});g.setStyle(i,s,v);}if(r==1){clearInterval(q);if(l)l(i);}},'bind',true,this),m);},_parseCSS:function(i){var j=[];ES5(i.split(' '),'forEach',true,function(k){var l=parseInt(k,10);j.push({numPart:l,textPart:k.replace(l,'')});});return j;}};e.exports=h;}); +__d("escapeHTML",[],function(a,b,c,d,e,f){var g=/[&<>"'\/]/g,h={'&':'&','<':'<','>':'>','"':'"',"'":''','/':'/'};function i(j){return j.replace(g,function(k){return h[k];});}e.exports=i;}); +__d("sdk.Helper",["sdk.ErrorHandling","sdk.Event","safeEval","UrlMap"],function(a,b,c,d,e,f){var g=b('sdk.ErrorHandling'),h=b('sdk.Event'),i=b('safeEval'),j=b('UrlMap'),k={isUser:function(l){return l<2.2e+09||(l>=1e+14&&l<=100099999989999)||(l>=8.9e+13&&l<=89999999999999);},upperCaseFirstChar:function(l){if(l.length>0){return l.substr(0,1).toUpperCase()+l.substr(1);}else return l;},getProfileLink:function(l,m,n){n=n||(l?j.resolve('www')+'/profile.php?id='+l.uid:null);if(n)m=''+m+'';return m;},invokeHandler:function(l,m,n){if(l)if(typeof l==='string'){g.unguard(i)(l,n);}else if(l.apply)g.unguard(l).apply(m,n||[]);},fireEvent:function(l,m){var n=m._attr.href;m.fire(l,n);h.fire(l,n,m);},executeFunctionByName:function(l){var m=Array.prototype.slice.call(arguments,1),n=l.split("."),o=n.pop(),p=window;for(var q=0;q'+''+'{2}'+''+''+''+'{4}'+''+'{5}'+' '+'{6} – '+'{0}'+'',t.tx._("No Thanks"),v.resolve('fbcdn')+'/'+k.imgs.buttonUrl,t.tx._("Close"),y[this._picFieldName]||v.resolve('fbcdn')+'/'+k.imgs.missingProfileUrl,o(y.first_name),t.tx._("Hi {firstName}. \u003Cstrong>{siteName}\u003C\/strong> is using Facebook to personalize your experience.",{firstName:o(y.first_name),siteName:o(y.site_name)}),t.tx._("Learn More"),y.profile_url,v.resolve('www')+'/sitetour/connect.php'));ES5(j(z.getElementsByTagName('a')),'forEach',true,function(da){da.onclick=ES5(this._clickHandler,'bind',true,this);},this);this._page=document.body;var ba=0;if(this._page.parentNode){ba=Math.round((parseFloat(m.getStyle(this._page.parentNode,'height'))-parseFloat(m.getStyle(this._page,'height')))/2);}else ba=parseInt(m.getStyle(this._page,'marginTop'),10);ba=isNaN(ba)?0:ba;this._initTopMargin=ba;if(!window.XMLHttpRequest){aa.className+=" fb_connect_bar_container_ie6";}else{aa.style.top=(-1*this._initialHeight)+'px';g.ate(aa,{top:'0px'},this._animationSpeed);}var ca={marginTop:this._initTopMargin+this._initialHeight+'px'};if(w.ie()){ca.backgroundPositionY=this._initialHeight+'px';}else ca.backgroundPosition='? '+this._initialHeight+'px';g.ate(this._page,ca,this._animationSpeed);},_clickHandler:function(y){y=y||window.event;var z=y.target||y.srcElement;while(z.nodeName!='A')z=z.parentNode;switch(z.className){case 'fb_bar_close':h({method:'Connect.connectBarMarkAcknowledged'});s.impression({lid:104,name:'widget_user_closed'});this._closeConnectBar();break;case 'fb_learn_more':case 'fb_profile':window.open(z.href);break;case 'fb_no_thanks':this._closeConnectBar();h({method:'Connect.connectBarMarkAcknowledged'});s.impression({lid:104,name:'widget_user_no_thanks'});h({method:'auth.revokeAuthorization',block:true},ES5(function(){this.fire('connectbar.ondeauth');p.fire('connectbar.ondeauth',this);r.invokeHandler(this.getAttribute('on-deauth'),this);if(this._getBoolAttribute('auto-refresh',true))window.location.reload();},'bind',true,this));break;}return false;},_closeConnectBar:function(){this._notDisplayed=true;var y={marginTop:this._initTopMargin+'px'};if(w.ie()){y.backgroundPositionY='0px';}else y.backgroundPosition='? 0px';var z=(this._animationSpeed==0)?0:300;g.ate(this._page,y,z);g.ate(this._container,{top:(-1*this._initialHeight)+'px'},z,function(aa){aa.parentNode.removeChild(aa);});this.fire('connectbar.onclose');p.fire('connectbar.onclose',this);r.invokeHandler(this.getAttribute('on-close'),this);}});e.exports=x;}); +__d("sdk.XFBML.EdgeCommentWidget",["sdk.XFBML.IframeWidget","sdk.DOM"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=b('sdk.DOM'),i=10000,j=g.extend({constructor:function(k){this.parent(k.commentNode);this._iframeWidth=k.width+1;this._iframeHeight=k.height;this._attr={master_frame_name:k.masterFrameName,offsetX:k.relativeWidthOffset-k.paddingLeft};this.dom=k.commentNode;this.dom.style.top=k.relativeHeightOffset+'px';this.dom.style.left=k.relativeWidthOffset+'px';this.dom.style.zIndex=i++;h.addCss(this.dom,'fb_edge_comment_widget');},_visibleAfter:'load',_showLoader:false,getSize:function(){return {width:this._iframeWidth,height:this._iframeHeight};},getUrlBits:function(){return {name:'comment_widget_shell',params:this._attr};}});e.exports=j;}); +__d("sdk.XFBML.EdgeWidget",["sdk.XFBML.IframeWidget","sdk.XFBML.EdgeCommentWidget","sdk.DOM","sdk.Helper","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=b('sdk.XFBML.EdgeCommentWidget'),i=b('sdk.DOM'),j=b('sdk.Helper'),k=b('sdk.Runtime'),l=g.extend({_visibleAfter:'immediate',_showLoader:false,_rootPadding:null,setupAndValidate:function(){i.addCss(this.dom,'fb_edge_widget_with_comment');this._attr={channel_url:this.getChannelUrl(),debug:this._getBoolAttribute('debug'),href:this.getAttribute('href',window.location.href),is_permalink:this._getBoolAttribute('is-permalink'),node_type:this.getAttribute('node-type','link'),width:this._getWidgetWidth(),font:this.getAttribute('font'),layout:this._getLayout(),colorscheme:this.getAttribute('color-scheme','light'),action:this.getAttribute('action'),ref:this.getAttribute('ref'),show_faces:this._shouldShowFaces(),no_resize:this._getBoolAttribute('no_resize'),send:this._getBoolAttribute('send'),url_map:this.getAttribute('url_map'),extended_social_context:this._getBoolAttribute('extended_social_context',false)};this._rootPadding={left:parseFloat(i.getStyle(this.dom,'paddingLeft')),top:parseFloat(i.getStyle(this.dom,'paddingTop'))};return true;},oneTimeSetup:function(){this.subscribe('xd.authPrompted',ES5(this._onAuthPrompt,'bind',true,this));this.subscribe('xd.edgeCreated',ES5(this._onEdgeCreate,'bind',true,this));this.subscribe('xd.edgeRemoved',ES5(this._onEdgeRemove,'bind',true,this));this.subscribe('xd.presentEdgeCommentDialog',ES5(this._handleEdgeCommentDialogPresentation,'bind',true,this));this.subscribe('xd.dismissEdgeCommentDialog',ES5(this._handleEdgeCommentDialogDismissal,'bind',true,this));this.subscribe('xd.hideEdgeCommentDialog',ES5(this._handleEdgeCommentDialogHide,'bind',true,this));this.subscribe('xd.showEdgeCommentDialog',ES5(this._handleEdgeCommentDialogShow,'bind',true,this));},getSize:function(){return {width:this._getWidgetWidth(),height:this._getWidgetHeight()};},_getWidgetHeight:function(){var m=this._getLayout(),n=this._shouldShowFaces()?'show':'hide',o=this._getBoolAttribute('send'),p=65+(o?25:0),q={standard:{show:80,hide:35},box_count:{show:p,hide:p},button_count:{show:21,hide:21},simple:{show:20,hide:20}};return q[m][n];},_getWidgetWidth:function(){var m=this._getLayout(),n=this._getBoolAttribute('send'),o=this._shouldShowFaces()?'show':'hide',p=(this.getAttribute('action')==='recommend'),q=(p?265:225)+(n?60:0),r=(p?130:90)+(n?60:0),s=this.getAttribute('action')==='recommend'?100:55,t=this.getAttribute('action')==='recommend'?90:50,u={standard:{show:450,hide:450},box_count:{show:s,hide:s},button_count:{show:r,hide:r},simple:{show:t,hide:t}},v=u[m][o],w=this._getPxAttribute('width',v),x={standard:{min:q,max:900},box_count:{min:s,max:900},button_count:{min:r,max:900},simple:{min:49,max:900}};if(wx[m].max)w=x[m].max;return w;},_getLayout:function(){return this._getAttributeFromList('layout','standard',['standard','button_count','box_count','simple']);},_shouldShowFaces:function(){return this._getLayout()==='standard'&&this._getBoolAttribute('show-faces',true);},_handleEdgeCommentDialogPresentation:function(m){if(!this.isValid())return;var n=document.createElement('span');this._commentSlave=this._createEdgeCommentWidget(m,n);this.dom.appendChild(n);this._commentSlave.process();this._commentWidgetNode=n;},_createEdgeCommentWidget:function(m,n){var o={commentNode:n,externalUrl:m.externalURL,masterFrameName:m.masterFrameName,layout:this._getLayout(),relativeHeightOffset:this._getHeightOffset(m),relativeWidthOffset:this._getWidthOffset(m),anchorTargetX:parseFloat(m['query[anchorTargetX]'])+this._rootPadding.left,anchorTargetY:parseFloat(m['query[anchorTargetY]'])+this._rootPadding.top,width:parseFloat(m.width),height:parseFloat(m.height),paddingLeft:this._rootPadding.left};return new h(o);},_getHeightOffset:function(m){return parseFloat(m['anchorGeometry[y]'])+parseFloat(m['anchorPosition[y]'])+this._rootPadding.top;},_getWidthOffset:function(m){var n=parseFloat(m['anchorPosition[x]'])+this._rootPadding.left,o=i.getPosition(this.dom).x,p=this.dom.offsetWidth,q=i.getViewportInfo().width,r=parseFloat(m.width),s=false;if(k.getRtl()){s=rq)s=true;if(s)n+=parseFloat(m['anchorGeometry[x]'])-r;return n;},_getCommonEdgeCommentWidgetOpts:function(m,n){return {colorscheme:this._attr.colorscheme,commentNode:n,controllerID:m.controllerID,nodeImageURL:m.nodeImageURL,nodeRef:this._attr.ref,nodeTitle:m.nodeTitle,nodeURL:m.nodeURL,nodeSummary:m.nodeSummary,width:parseFloat(m.width),height:parseFloat(m.height),relativeHeightOffset:this._getHeightOffset(m),relativeWidthOffset:this._getWidthOffset(m),error:m.error,siderender:m.siderender,extended_social_context:m.extended_social_context,anchorTargetX:parseFloat(m['query[anchorTargetX]'])+this._rootPadding.left,anchorTargetY:parseFloat(m['query[anchorTargetY]'])+this._rootPadding.top};},_handleEdgeCommentDialogDismissal:function(m){if(this._commentWidgetNode){this.dom.removeChild(this._commentWidgetNode);delete this._commentWidgetNode;}},_handleEdgeCommentDialogHide:function(){if(this._commentWidgetNode)this._commentWidgetNode.style.display="none";},_handleEdgeCommentDialogShow:function(){if(this._commentWidgetNode)this._commentWidgetNode.style.display="block";},_fireEventAndInvokeHandler:function(m,n){j.fireEvent(m,this);j.invokeHandler(this.getAttribute(n),this,[this._attr.href]);},_onEdgeCreate:function(){this._fireEventAndInvokeHandler('edge.create','on-create');},_onEdgeRemove:function(){this._fireEventAndInvokeHandler('edge.remove','on-remove');},_onAuthPrompt:function(){this._fireEventAndInvokeHandler('auth.prompt','on-prompt');}});e.exports=l;}); +__d("sdk.XFBML.SendButtonFormWidget",["sdk.XFBML.EdgeCommentWidget","sdk.DOM","sdk.Event"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.EdgeCommentWidget'),h=b('sdk.DOM'),i=b('sdk.Event'),j=g.extend({constructor:function(k){this.parent(k);h.addCss(this.dom,'fb_send_button_form_widget');h.addCss(this.dom,k.colorscheme);h.addCss(this.dom,(typeof k.siderender!='undefined'&&k.siderender)?'siderender':'');this._attr.nodeImageURL=k.nodeImageURL;this._attr.nodeRef=k.nodeRef;this._attr.nodeTitle=k.nodeTitle;this._attr.nodeURL=k.nodeURL;this._attr.nodeSummary=k.nodeSummary;this._attr.offsetX=k.relativeWidthOffset;this._attr.offsetY=k.relativeHeightOffset;this._attr.anchorTargetX=k.anchorTargetX;this._attr.anchorTargetY=k.anchorTargetY;this._attr.channel=this.getChannelUrl();this._attr.controllerID=k.controllerID;this._attr.colorscheme=k.colorscheme;this._attr.error=k.error;this._attr.siderender=k.siderender;this._attr.extended_social_context=k.extended_social_context;},_showLoader:true,getUrlBits:function(){return {name:'send_button_form_shell',params:this._attr};},oneTimeSetup:function(){this.subscribe('xd.messageSent',ES5(this._onMessageSent,'bind',true,this));},_onMessageSent:function(){i.fire('message.send',this._attr.nodeURL,this);}});e.exports=j;}); +__d("sdk.XFBML.Like",["sdk.XFBML.EdgeWidget","sdk.XFBML.SendButtonFormWidget"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.EdgeWidget'),h=b('sdk.XFBML.SendButtonFormWidget'),i=g.extend({getUrlBits:function(){return {name:'like',params:this._attr};},_createEdgeCommentWidget:function(j,k){if('send' in this._attr&&'widget_type' in j&&j.widget_type=='send'){var l=this._getCommonEdgeCommentWidgetOpts(j,k);return new h(l);}else return this.parentCall("_createEdgeCommentWidget",j,k);},getIframeTitle:function(){return 'Like this content on Facebook.';}});e.exports=i;}); +__d("sdk.XFBML.LiveStream",["sdk.XFBML.IframeWidget"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=g.extend({_visibleAfter:'load',setupAndValidate:function(){this._attr={app_id:this.getAttribute('event-app-id'),href:this.getAttribute('href',window.location.href),height:this._getPxAttribute('height',500),hideFriendsTab:this.getAttribute('hide-friends-tab'),redesigned:this._getBoolAttribute('redesigned-stream'),width:this._getPxAttribute('width',400),xid:this.getAttribute('xid','default'),always_post_to_friends:this._getBoolAttribute('always-post-to-friends'),via_url:this.getAttribute('via_url')};return true;},getSize:function(){return {width:this._attr.width,height:this._attr.height};},getUrlBits:function(){var i=this._attr.redesigned?'live_stream_box':'livefeed';if(this._getBoolAttribute('modern',false))i='live_stream';return {name:i,params:this._attr};}});e.exports=h;}); +__d("sdk.XFBML.LoginButton",["sdk.Helper","IframePlugin"],function(a,b,c,d,e,f){var g=b('sdk.Helper'),h=b('IframePlugin'),i=h.extend({constructor:function(j,k,l,m){this.parent(j,k,l,m);var n=h.getVal(m,'on_login');if(n)this.subscribe('login.status',function(o){g.invokeHandler(n,null,[o]);});},getParams:function(){return {scope:'string',perms:'string',size:'string',login_text:'text',show_faces:'bool',max_rows:'string',show_login_face:'bool',registration_url:'url_maybe',auto_logout_link:'bool',one_click:'bool'};}});e.exports=i;}); +__d("sdk.XFBML.Name",["copyProperties","sdk.Data","escapeHTML","sdk.Event","sdk.XFBML.Element","sdk.Helper","Log","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('copyProperties'),h=b('sdk.Data'),i=b('escapeHTML'),j=b('sdk.Event'),k=b('sdk.XFBML.Element'),l=b('sdk.Helper'),m=b('Log'),n=b('sdk.Runtime'),o=k.extend({process:function(){g(this,{_uid:this.getAttribute('uid'),_firstnameonly:this._getBoolAttribute('first-name-only'),_lastnameonly:this._getBoolAttribute('last-name-only'),_possessive:this._getBoolAttribute('possessive'),_reflexive:this._getBoolAttribute('reflexive'),_objective:this._getBoolAttribute('objective'),_linked:this._getBoolAttribute('linked',true),_subjectId:this.getAttribute('subject-id')});if(!this._uid){m.error('"uid" is a required attribute for ');this.fire('render');return;}var p=[];if(this._firstnameonly){p.push('first_name');}else if(this._lastnameonly){p.push('last_name');}else p.push('name');if(this._subjectId){p.push('sex');if(this._subjectId==n.getUserID())this._reflexive=true;}var q;j.monitor('auth.statusChange',ES5(function(){if(!this.isValid()){this.fire('render');return true;}if(!this._uid||this._uid=='loggedinuser')this._uid=n.getUserID();if(!this._uid)return;if(l.isUser(this._uid)){q=h._selectByIndex(p,'user','uid',this._uid);}else q=h._selectByIndex(['name','id'],'profile','id',this._uid);q.wait(ES5(function(r){if(this._subjectId==this._uid){this._renderPronoun(r[0]);}else this._renderOther(r[0]);this.fire('render');},'bind',true,this));},'bind',true,this));},_renderPronoun:function(p){var q='',r=this._objective;if(this._subjectId){r=true;if(this._subjectId===this._uid)this._reflexive=true;}if(this._uid==n.getUserID()&&this._getBoolAttribute('use-you',true)){if(this._possessive){if(this._reflexive){q='your own';}else q='your';}else if(this._reflexive){q='yourself';}else q='you';}else switch(p.sex){case 'male':if(this._possessive){q=this._reflexive?'his own':'his';}else if(this._reflexive){q='himself';}else if(r){q='him';}else q='he';break;case 'female':if(this._possessive){q=this._reflexive?'her own':'her';}else if(this._reflexive){q='herself';}else if(r){q='her';}else q='she';break;default:if(this._getBoolAttribute('use-they',true)){if(this._possessive){if(this._reflexive){q='their own';}else q='their';}else if(this._reflexive){q='themselves';}else if(r){q='them';}else q='they';}else if(this._possessive){if(this._reflexive){q='his/her own';}else q='his/her';}else if(this._reflexive){q='himself/herself';}else if(r){q='him/her';}else q='he/she';break;}if(this._getBoolAttribute('capitalize',false))q=l.upperCaseFirstChar(q);this.dom.innerHTML=q;},_renderOther:function(p){var q='',r='';if(this._uid==n.getUserID()&&this._getBoolAttribute('use-you',true)){if(this._reflexive){if(this._possessive){q='your own';}else q='yourself';}else if(this._possessive){q='your';}else q='you';}else if(p){if(null===p.first_name)p.first_name='';if(null===p.last_name)p.last_name='';if(this._firstnameonly&&p.first_name!==undefined){q=i(p.first_name);}else if(this._lastnameonly&&p.last_name!==undefined)q=i(p.last_name);if(!q)q=i(p.name);if(q!==''&&this._possessive)q+='\'s';}if(!q)q=i(this.getAttribute('if-cant-see','Facebook User'));if(q){if(this._getBoolAttribute('capitalize',false))q=l.upperCaseFirstChar(q);if(p&&this._linked){r=l.getProfileLink(p,q,this.getAttribute('href',null));}else r=q;}this.dom.innerHTML=r;}});e.exports=o;}); +__d("sdk.XFBML.RecommendationsBar",["sdk.Arbiter","DOMEventListener","sdk.Event","sdk.XFBML.IframeWidget","resolveURI","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.Arbiter'),h=b('DOMEventListener'),i=b('sdk.Event'),j=b('sdk.XFBML.IframeWidget'),k=b('resolveURI'),l=b('sdk.Runtime'),m=j.extend({getUrlBits:function(){return {name:'recommendations_bar',params:this._attr};},setupAndValidate:function(){function n(w,x){var y=0,z=null;function aa(){x();z=null;y=ES5('Date','now',false);}return function(){if(!z){var ba=ES5('Date','now',false);if(ba-y=this._attr.trigger;}}});e.exports=m;}); +__d("sdk.XFBML.Registration",["sdk.Auth","sdk.Helper","sdk.XFBML.IframeWidget","sdk.Runtime","UrlMap"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.Helper'),i=b('sdk.XFBML.IframeWidget'),j=b('sdk.Runtime'),k=b('UrlMap'),l=i.extend({_visibleAfter:'immediate',_baseHeight:167,_fieldHeight:28,_skinnyWidth:520,_skinnyBaseHeight:173,_skinnyFieldHeight:52,setupAndValidate:function(){this._attr={action:this.getAttribute('action'),border_color:this.getAttribute('border-color'),channel_url:this.getChannelUrl(),client_id:j.getClientID(),fb_only:this._getBoolAttribute('fb-only',false),fb_register:this._getBoolAttribute('fb-register',false),fields:this.getAttribute('fields'),height:this._getPxAttribute('height'),redirect_uri:this.getAttribute('redirect-uri',window.location.href),no_footer:this._getBoolAttribute('no-footer'),no_header:this._getBoolAttribute('no-header'),onvalidate:this.getAttribute('onvalidate'),width:this._getPxAttribute('width',600),target:this.getAttribute('target')};if(this._attr.onvalidate)this.subscribe('xd.validate',ES5(function(m){var n=ES5('JSON','parse',false,m.value),o=ES5(function(q){this.arbiterInform('Registration.Validation',{errors:q,id:m.id});},'bind',true,this),p=h.executeFunctionByName(this._attr.onvalidate,n,o);if(p)o(p);},'bind',true,this));this.subscribe('xd.authLogin',ES5(this._onAuthLogin,'bind',true,this));this.subscribe('xd.authLogout',ES5(this._onAuthLogout,'bind',true,this));return true;},getSize:function(){return {width:this._attr.width,height:this._getHeight()};},_getHeight:function(){if(this._attr.height)return this._attr.height;var m;if(!this._attr.fields){m=['name'];}else try{m=ES5('JSON','parse',false,this._attr.fields);}catch(n){m=this._attr.fields.split(/,/);}if(this._attr.widtha[y]("/")[0][q](":")&&(a=k+f[2][B](0,f[2].lastIndexOf("/"))+"/"+a):a=k+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d[A]||"")[D](),host:e[0], +port:e[1],path:e[2],Oa:d[va]||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[n](c)}for(var d=Da(b)[y]("&"),e=0;ef?c(d[e],"1"):c(d[e][B](0,f),d[e][B](f+1))}}function Pa(a,b){if(F(a)||"["==a[ma](0)&&"]"==a[ma](a[w]-1))return"-";var c=J.domain;return a[q](c+(b&&"/"!=b?b:""))==(0==a[q]("http://")?7:0==a[q]("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*m.random()||(a=["utmt=error","utmerr="+a,"utmwv=5.4.3","utmn="+Ea(),"utmsp=1"],b&&a[n]("api="+b),c&&a[n]("msg="+G(c[B](0,100))),M.w&&a[n]("aip=1"),Sa(a[C]("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} +var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0), +ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),Oc=N(),Oe=Va("uaName"),Pe=Va("uaDomain"),Qe=Va("uaPath");var Re=function(){function a(a,c,d){T($[x],a,c,d)}a("_createTracker",$[x].r,55);a("_getTracker",$[x].oa,0);a("_getTrackerByName",$[x].u,51);a("_getTrackers",$[x].pa,130);a("_anonymizeIp",$[x].aa,16);a("_forceSSL",$[x].la,125);a("_getPlugin",Pc,120)},Se=function(){function a(a,c,d){T(U[x],a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash",jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode", +xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey",tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey", +rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U[x].Fa,1);a("_trackEvent",U[x].F,4);a("_trackPageLoadTime",U[x].Ea,100);a("_trackSocial",U[x].Ga,104);a("_trackTrans",U[x].Ia, +18);a("_sendXEvent",U[x].t,78);a("_createEventTracker",U[x].ia,74);a("_getVersion",U[x].qa,60);a("_setDomainName",U[x].B,6);a("_setAllowHash",U[x].va,8);a("_getLinkerUrl",U[x].na,52);a("_link",U[x].link,101);a("_linkByPost",U[x].ua,102);a("_setTrans",U[x].za,20);a("_addTrans",U[x].$,21);a("_addItem",U[x].Y,19);a("_clearTrans",U[x].ea,105);a("_setTransactionDelim",U[x].Aa,82);a("_setCustomVar",U[x].wa,10);a("_deleteCustomVar",U[x].ka,35);a("_getVisitorCustomVar",U[x].ra,50);a("_setXKey",U[x].Ca,83); +a("_setXValue",U[x].Da,84);a("_getXKey",U[x].sa,76);a("_getXValue",U[x].ta,77);a("_clearXKey",U[x].fa,72);a("_clearXValue",U[x].ga,73);a("_createXObj",U[x].ja,75);a("_addIgnoredOrganic",U[x].W,15);a("_clearIgnoredOrganic",U[x].ba,97);a("_addIgnoredRef",U[x].X,31);a("_clearIgnoredRef",U[x].ca,32);a("_addOrganic",U[x].Z,14);a("_clearOrganic",U[x].da,70);a("_cookiePathCopy",U[x].ha,30);a("_get",U[x].ma,106);a("_set",U[x].xa,107);a("_addEventListener",U[x].addEventListener,108);a("_removeEventListener", +U[x].removeEventListener,109);a("_addDevId",U[x].V);a("_getPlugin",Pc,122);a("_setPageGroup",U[x].ya,126);a("_trackTiming",U[x].Ha,124);a("_initData",U[x].v,2);a("_setVar",U[x].Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)} +var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c[ya](this,arguments)}catch(a){throw Ra("exc",b,a&&a[r]),a;}}},Qc=function(a,b,c,d){U[x][a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[r]),e;}}},V=function(a,b,c,d,e){U[x][a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be[r]),Be;}}},Te=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc[ia](J[z].hostname)?!0:"/"!==b?!1:0!=a[q]("www.google.")&&0!=a[q](".google.")&&0!=a[q]("google.")||-1b[w]||ad(b[0],c))return!1;b=b[ja](1)[C](".")[y]("|");0=b[w])return!0; +b=b[1][y](-1==b[1][q](",")?"^":",");for(c=0;cb[w]||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]);Ve(a,b[ja](4)[C]("."));return!0},Ve=function(a,b){function c(a){return(a=b[oa](a+"=(.*?)(?:\\|utm|$)"))&& +2==a[w]?a[1]:void 0}function d(b,c){c?(c=e?I(c):c[y]("%20")[C](" "),a.set(b,c)):a.set(b,void 0)}-1==b[q]("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/[ia](a)};var Uc=function(){this.filters=[]};Uc[x].add=function(a,b){this.filters[n]({name:a,s:b})};Uc[x].execute=function(a){try{for(var b=0;b=100*a.get(vb)&&a[ta]()}function kd(a){ld(a.get(Wa))&&a[ta]()}function md(a){"file:"==J[z][A]&&a[ta]()}function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J[z].pathname+J[z][va],!0)};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.Xa=function(){for(var b=[],c=0;c=c[0]||0>=c[1]?"":c[C]("x");a.Wa=d}catch(k){H(135)}"preview"==b.loadPurpose&& +H(138);qd=a}},td=function(){sd();for(var a=qd,b=W[za],a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[w],c=W.history[w];0d?(this.i=b[B](0,d),this.l=b[B](d+1,c),this.h=b[B](c+1)):(this.i=b[B](0,d),this.h=b[B](d+1));this.k=a[ja](1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y[x],"push",Y[x][n],5);T(Y[x],"_getPlugin",Pc,121);T(Y[x], +"_createAsyncTracker",Y[x].Sa,33);T(Y[x],"_getAsyncTracker",Y[x].Ta,34);this.I=new Ja;this.p=[]};E=Y[x];E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va[ya](this,arguments),b=Z.p.concat(b);for(Z.p=[];0e?b+"#"+d:b+"&"+d;c="";f=b[q]("?");0f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c]; +var Be=b[p](/ /g,"%20"),k=c[p](/ /g,"%20");if(d==Yc(a+Be+k))return H(128),[Be,k];Be=Be[p](/\+/g,"%20");k=k[p](/\+/g,"%20");if(d==Yc(a+Be+k))return H(129),[Be,k];try{var s=b[oa]("utmctr=(.*?)(?:\\|utm|$)");if(s&&2==s[w]&&(Be=b[p](s[1],G(I(s[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,k,s){var t=ee(a,b);t||(t={},a.get(Cb)[n](t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=k;t.country_=s;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var k;t:{if(a&&a.items_){k=a.items_;for(var s=0;sb[w]||!/^\d+$/[ia](b[0])||(b[0]=""+c,Fd(a,"__utmx",b[C]("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Ye=function(a){try{var b=La(J[z][xa],!1),c=ea(L(b.d.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=ea(K(b.d.get("utm_expid")))||"";d&&(d=d[y](".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc,""+b)};var ke=function(a,b){var c=m.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ze()||$e();if(void 0==c)return!1;var d=c[0];if(void 0==d||d==ba||da(d))return!1;0a[b])return!1;return!0},le=function(a){return da(a)|| +0>a?0:5E3>a?10*m[la](a/10):5E4>a?100*m[la](a/100):41E5>a?1E3*m[la](a/1E3):41E5},je=function(a){for(var b=new yd,c=0;cc[w])){for(var d=[],e=0;e=f)return!1;c=1*(""+c);if(""==a||(!wd(a)||""==b||!wd(b)||!xd(c)||da(c)||0>c||0>f||100=a||a>e.get(yb))a=!1;else if(!b||!c||128=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a[oa](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b[n](a);this.set(Ic,b)}};E.v=function(){this.a[ka]()};E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a[ta]();if("event"===a.get(sc)){var b=(new Date)[g](),c=a.b(dc,0),d=a.b(Zb,0),c=m[la](1*((b-(c!=d?c:1E3*c))/1E3));0=a.b(R,0)&&a[ta]()}},pe=function(a){"event"===a.get(sc)&&a.set(R,m.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[n](b+"="+c)};this.toString=function(){return a[C]("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.4.3");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J[z].hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date)[g]());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni",1);var c=a.get(Ic); +c&&0=a[w])gf(a,b,c);else if(8192>=a[w]){if(0<=W[za].userAgent[q]("Firefox")&&![].reduce)throw new De(a[w]);hf(a,b)||Ee(a,b)}else throw new Ce(a[w]);},gf=function(a,b,c){c=c||("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/__utm.gif?";var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror= +null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},hf=function(a,b){var c,d=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,!0),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=null)},c.send(a),!0},Ee=function(a,b){if(J.body){a=aa(a); +try{var c=J[qa]('')}catch(d){c=J[qa]("iframe"),ha(c,a)}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=J[z],e=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/u/post_iframe.html#"+aa(e[A]+"//"+e[u]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Ga(W,"beforeunload",f);var Be=!1,k=0,s=function(){if(!Be){try{if(9>21:b;return b};})(); diff --git a/index_files/gplus_pic.png b/index_files/gplus_pic.png new file mode 100644 index 0000000..db40320 Binary files /dev/null and b/index_files/gplus_pic.png differ diff --git a/index_files/jquery.js b/index_files/jquery.js new file mode 100644 index 0000000..40b0cd1 --- /dev/null +++ b/index_files/jquery.js @@ -0,0 +1,4 @@ +/** + * + */ +(function(e,t){function P(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function B(e){var t=H[e]={};return b.each(e.match(E)||[],function(e,n){t[n]=!0}),t}function I(e,n,r,i){if(b.acceptData(e)){var s,o,u=b.expando,a="string"==typeof n,f=e.nodeType,c=f?b.cache:e,h=f?e[u]:e[u]&&u;if(h&&c[h]&&(i||c[h].data)||!a||r!==t)return h||(f?e[u]=h=l.pop()||b.guid++:h=u),c[h]||(c[h]={},f||(c[h].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[h]=b.extend(c[h],n):c[h].data=b.extend(c[h].data,n)),s=c[h],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[b.camelCase(n)]=r),a?(o=s[n],null==o&&(o=s[b.camelCase(n)])):o=s,o}}function q(e,t,n){if(b.acceptData(e)){var r,i,s,o=e.nodeType,u=o?b.cache:e,a=o?e[b.expando]:b.expando;if(u[a]){if(t&&(s=n?u[a]:u[a].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in s?t=[t]:(t=b.camelCase(t),t=t in s?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete s[t[r]];if(!(n?U:b.isEmptyObject)(s))return}(n||(delete u[a].data,U(u[a])))&&(o?b.cleanData([e],!0):b.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null)}}}function R(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(F,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:j.test(r)?b.parseJSON(r):r}catch(s){}b.data(e,n,r)}else r=t}return r}function U(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function st(){return!1}function ct(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ht(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(at.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function pt(e){var t=dt.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Mt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function _t(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function Dt(e){var t=Ct.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Pt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function Ht(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,s=b._data(e),o=b._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;i>r;r++)b.event.add(t,n,u[n][r])}o.data&&(o.data=b.extend({},o.data))}}function Bt(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(_t(t).text=e.text,Dt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&xt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function jt(e,n){var r,s,o=0,u=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!u)for(u=[],r=e.childNodes||e;null!=(s=r[o]);o++)!n||b.nodeName(s,n)?u.push(s):b.merge(u,jt(s,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],u):u}function Ft(e){xt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,s=[],o=0,u=e.length;for(;u>o;o++)r=e[o],r.style&&(s[o]=b._data(r,"olddisplay"),n=r.style.display,t?(s[o]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(s[o]=b._data(r,"olddisplay",an(r.nodeName)))):s[o]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(o=0;u>o;o++)r=e[o],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?s[o]||"":"none"));return e}function sn(e,t,n){var r=$t.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function on(e,t,n,r,i){var s=n===(r?"border":"content")?4:"width"===t?1:0,o=0;for(;4>s;s+=2)"margin"===n&&(o+=b.css(e,n+Zt[s],!0,i)),r?("content"===n&&(o-=b.css(e,"padding"+Zt[s],!0,i)),"margin"!==n&&(o-=b.css(e,"border"+Zt[s]+"Width",!0,i))):(o+=b.css(e,"padding"+Zt[s],!0,i),"padding"!==n&&(o+=b.css(e,"border"+Zt[s]+"Width",!0,i)));return o}function un(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,s=qt(e),o=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,s);if(0>=i||null==i){if(i=Rt(e,t,s),(0>i||null==i)&&(i=e.style[t]),Jt.test(i))return i;r=o&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+on(e,t,n||(o?"border":"content"),r,s)+"px"}function an(e){var t=s,n=Qt[e];return n||(n=fn(e,t),"none"!==n&&n||(It=(It||b(" +
+ + + + +
+
+
+

ABOUT WATCH_DOGS WeareData

+
+
+

In the video game Watch_Dogs, the city of Chicago is run by a Central Operating System (CTOS). This system use data to manage the entire city and to solve complex problems. Traffic jams, war against crime, power management...

+

This is not fiction anymore. Smart cities are + real, it’s happening now. A huge amount of data is collected and +managed every day in our modern cities, and those data are available for + everybody.

+

Watch_Dogs WeareData is the first website to gather publicly available data about Paris, London and Berlin, + in one location. Each of the three towns is recreated on a 3D map, +allowing the user to discover the data that organizes and runs modern +cities today, in real time. It also displays information about the +inhabitants of these cities, via their social media activity.

+
+
+

What you will discover here are only facts and reality.

+

Watch_Dogs WeareData gathers available geolocated data + in a non-exhaustive way: we only display the information for which we +have been given the authorization by the sources. Yet, it is already a +huge amount of data. You may even watch what other users are looking at +on the website through Facebook connect.

+
+
+
+

If you are interested in this subject, we’d love to get your feedback about the website and about our connected world.

+

Everyone has their part to play and their word to say.

+

Stay connected and join the conversation on social media through the Watch_Dogs Facebook page or through Twitter using the hashtag #watchdogs.

+
+
+
+ + + + \ No newline at end of file diff --git a/js/landing/greensock/TweenMax.min.js b/js/landing/greensock/TweenMax.min.js new file mode 100644 index 0000000..3b87a41 --- /dev/null +++ b/js/landing/greensock/TweenMax.min.js @@ -0,0 +1,16 @@ +/*! + * VERSION: beta 1.9.7 + * DATE: 2013-05-16 + * UPDATES AND DOCS AT: http://www.greensock.com + * + * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin + * + * @license Copyright (c) 2008-2013, GreenSock. All rights reserved. + * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +(window._gsQueue||(window._gsQueue=[])).push(function(){"use strict";window._gsDefine("TweenMax",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=[].slice,r=function(t,e,s){i.call(this,t,e,s),this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._dirty=!0},n=function(t){return t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style},a=r.prototype=i.to({},.1,{}),o=[];r.version="1.9.7",a.constructor=r,a.kill()._gc=!1,r.killTweensOf=r.killDelayedCallsTo=i.killTweensOf,r.getTweensOf=i.getTweensOf,r.ticker=i.ticker,a.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),i.prototype.invalidate.call(this)},a.updateTo=function(t,e){var s,r=this.ratio;e&&this.timeline&&this._startTime.998){var n=this._time;this.render(0,!0,!1),this._initted=!1,this.render(n,!0,!1)}else if(this._time>0){this._initted=!1,this._init();for(var a,o=1/(1-r),h=this._firstPT;h;)a=h.s+h.c,h.c*=o,h.s=a-h.c,h=h._next}return this},a.render=function(t,e,i){var s,r,n,a,h,l,_,u=this._dirty?this.totalDuration():this._totalDuration,p=this._time,f=this._totalTime,c=this._cycle;if(t>=u?(this._totalTime=u,this._cycle=this._repeat,this._yoyo&&0!==(1&this._cycle)?(this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0):(this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1),this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t)):1e-7>t?(this._totalTime=this._time=this._cycle=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==f||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0)):(this._totalTime=this._time=t,0!==this._repeat&&(a=this._duration+this._repeatDelay,this._cycle=this._totalTime/a>>0,0!==this._cycle&&this._cycle===this._totalTime/a&&this._cycle--,this._time=this._totalTime-this._cycle*a,this._yoyo&&0!==(1&this._cycle)&&(this._time=this._duration-this._time),this._time>this._duration?this._time=this._duration:0>this._time&&(this._time=0)),this._easeType?(h=this._time/this._duration,l=this._easeType,_=this._easePower,(1===l||3===l&&h>=.5)&&(h=1-h),3===l&&(h*=2),1===_?h*=h:2===_?h*=h*h:3===_?h*=h*h*h:4===_&&(h*=h*h*h*h),this.ratio=1===l?1-h:2===l?h:.5>this._time/this._duration?h/2:1-h/2):this.ratio=this._ease.getRatio(this._time/this._duration)),p===this._time&&!i)return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),void 0;if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===f&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._totalTime||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||o))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),this._cycle!==c&&(e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||o)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||o)))},r.to=function(t,e,i){return new r(t,e,i)},r.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new r(t,e,i)},r.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new r(t,e,s)},r.staggerTo=r.allTo=function(t,e,a,h,l,_,u){h=h||0;var p,f,c,m,d=a.delay||0,g=[],v=function(){a.onComplete&&a.onComplete.apply(a.onCompleteScope||this,a.onCompleteParams||o),l.apply(u||this,_||o)};for(t instanceof Array||("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s.call(t,0))),p=t.length,c=0;p>c;c++){f={};for(m in a)f[m]=a[m];f.delay=d,c===p-1&&l&&(f.onComplete=v),g[c]=new r(t[c],e,f),d+=h}return g},r.staggerFrom=r.allFrom=function(t,e,i,s,n,a,o){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,r.staggerTo(t,e,i,s,n,a,o)},r.staggerFromTo=r.allFromTo=function(t,e,i,s,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,r.staggerTo(t,e,s,n,a,o,h)},r.delayedCall=function(t,e,i,s,n){return new r(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:n,overwrite:0})},r.set=function(t,e){return new r(t,0,e)},r.isTweening=function(t){for(var e,s=i.getTweensOf(t),r=s.length;--r>-1;)if(e=s[r],e._active||e._startTime===e._timeline._time&&e._timeline._active)return!0;return!1};var h=function(t,e){for(var s=[],r=0,n=t._first;n;)n instanceof i?s[r++]=n:(e&&(s[r++]=n),s=s.concat(h(n,e)),r=s.length),n=n._next;return s},l=r.getAllTweens=function(e){return h(t._rootTimeline,e).concat(h(t._rootFramesTimeline,e))};r.killAll=function(t,i,s,r){null==i&&(i=!0),null==s&&(s=!0);var n,a,o,h=l(0!=r),_=h.length,u=i&&s&&r;for(o=0;_>o;o++)a=h[o],(u||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&(t?a.totalTime(a.totalDuration()):a._enabled(!1,!1))},r.killChildTweensOf=function(t,e){if(null!=t){var a,o,h,l,_,u=i._tweenLookup;if("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s(t,0)),t instanceof Array)for(l=t.length;--l>-1;)r.killChildTweensOf(t[l],e);else{a=[];for(h in u)for(o=u[h].target.parentNode;o;)o===t&&(a=a.concat(u[h].tweens)),o=o.parentNode;for(_=a.length,l=0;_>l;l++)e&&a[l].totalTime(a[l].totalDuration()),a[l]._enabled(!1,!1)}}};var _=function(t,i,s,r){void 0===i&&(i=!0),void 0===s&&(s=!0);for(var n,a,o=l(r),h=i&&s&&r,_=o.length;--_>-1;)a=o[_],(h||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&a.paused(t)};return r.pauseAll=function(t,e,i){_(!0,t,e,i)},r.resumeAll=function(t,e,i){_(!1,t,e,i)},a.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},a.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},a.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},a.duration=function(e){return arguments.length?t.prototype.duration.call(this,e):this._duration},a.totalDuration=function(t){return arguments.length?-1===this._repeat?this:this.duration((t-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat,this._dirty=!1),this._totalDuration)},a.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},a.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},a.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},r},!0),window._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=function(t){e.call(this,t),this._labels={},this.autoRemoveChildren=this.vars.autoRemoveChildren===!0,this.smoothChildTiming=this.vars.smoothChildTiming===!0,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;for(var i,s,n=this.vars,a=r.length;--a>-1;)if(s=n[r[a]])for(i=s.length;--i>-1;)"{self}"===s[i]&&(s=n[r[a]]=s.concat(),s[i]=this);n.tweens instanceof Array&&this.add(n.tweens,0,n.align,n.stagger)},r=["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],n=[],a=function(t){var e,i={};for(e in t)i[e]=t[e];return i},o=n.slice,h=s.prototype=new e;return s.version="1.9.7",h.constructor=s,h.kill()._gc=!1,h.to=function(t,e,s,r){return e?this.add(new i(t,e,s),r):this.set(t,s,r)},h.from=function(t,e,s,r){return this.add(i.from(t,e,s),r)},h.fromTo=function(t,e,s,r,n){return e?this.add(i.fromTo(t,e,s,r),n):this.set(t,r,n)},h.staggerTo=function(t,e,r,n,h,l,_,u){var p,f=new s({onComplete:l,onCompleteParams:_,onCompleteScope:u});for("string"==typeof t&&(t=i.selector(t)||t),!(t instanceof Array)&&t.length&&t[0]&&t[0].nodeType&&t[0].style&&(t=o.call(t,0)),n=n||0,p=0;t.length>p;p++)r.startAt&&(r.startAt=a(r.startAt)),f.to(t[p],e,a(r),p*n);return this.add(f,h)},h.staggerFrom=function(t,e,i,s,r,n,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,r,n,a,o)},h.staggerFromTo=function(t,e,i,s,r,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,r,n,a,o,h)},h.call=function(t,e,s,r){return this.add(i.delayedCall(0,t,e,s),r)},h.set=function(t,e,s){return s=this._parseTimeOrLabel(s,0,!0),null==e.immediateRender&&(e.immediateRender=s===this._time&&!this._paused),this.add(new i(t,0,e),s)},s.exportRoot=function(t,e){t=t||{},null==t.smoothChildTiming&&(t.smoothChildTiming=!0);var r,n,a=new s(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,r=o._first;r;)n=r._next,e&&r instanceof i&&r.target===r.vars.onComplete||a.add(r,r._startTime-r._delay),r=n;return o.add(a,0),a},h.add=function(r,n,a,o){var h,l,_,u,p;if("number"!=typeof n&&(n=this._parseTimeOrLabel(n,0,!0,r)),!(r instanceof t)){if(r instanceof Array){for(a=a||"normal",o=o||0,h=n,l=r.length,_=0;l>_;_++)(u=r[_])instanceof Array&&(u=new s({tweens:u})),this.add(u,h),"string"!=typeof u&&"function"!=typeof u&&("sequence"===a?h=u._startTime+u.totalDuration()/u._timeScale:"start"===a&&(u._startTime-=u.delay())),h+=o;return this._uncache(!0)}if("string"==typeof r)return this.addLabel(r,n);if("function"!=typeof r)throw"Cannot add "+r+" into the timeline; it is neither a tween, timeline, function, nor a string.";r=i.delayedCall(0,r)}if(e.prototype.add.call(this,r,n),this._gc&&!this._paused&&this._time===this._duration&&this._time-1;)this.remove(e[i]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},h.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},h.insert=h.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},h.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},h.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},h.removeLabel=function(t){return delete this._labels[t],this},h.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},h._parseTimeOrLabel=function(e,i,s,r){var n;if(r instanceof t&&r.timeline===this)this.remove(r);else if(r instanceof Array)for(n=r.length;--n>-1;)r[n]instanceof t&&r[n].timeline===this&&this.remove(r[n]);if("string"==typeof i)return this._parseTimeOrLabel(i,s&&"number"==typeof e&&null==this._labels[i]?e-this.duration():0,s);if(i=i||0,"string"!=typeof e||!isNaN(e)&&null==this._labels[e])null==e&&(e=this.duration());else{if(n=e.indexOf("="),-1===n)return null==this._labels[e]?s?this._labels[e]=this.duration()+i:i:this._labels[e]+i;i=parseInt(e.charAt(n-1)+"1",10)*Number(e.substr(n+1)),e=n>1?this._parseTimeOrLabel(e.substr(0,n-1),0,s):this.duration()}return Number(e)+i},h.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),e!==!1)},h.stop=function(){return this.paused(!0)},h.gotoAndPlay=function(t,e){return this.play(t,e)},h.gotoAndStop=function(t,e){return this.pause(t,e)},h.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,r,a,o,h,l=this._dirty?this.totalDuration():this._totalDuration,_=this._time,u=this._startTime,p=this._timeScale,f=this._paused;if(t>=l?(this._totalTime=this._time=l,this._reversed||this._hasPausedChild()||(r=!0,o="onComplete",0===this._duration&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,t=l+1e-6):1e-7>t?(this._totalTime=this._time=0,(0!==_||0===this._duration&&this._rawPrevTime>0)&&(o="onReverseComplete",r=this._reversed),0>t?(this._active=!1,0===this._duration&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):this._totalTime=this._time=this._rawPrevTime=t,this._time!==_&&this._first||i||h){if(this._initted||(this._initted=!0),0===_&&this.vars.onStart&&0!==this._time&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||n)),this._time>=_)for(s=this._first;s&&(a=s._next,!this._paused||f);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||f);)(s._active||_>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||n)),o&&(this._gc||(u===this._startTime||p!==this._timeScale)&&(0===this._time||l>=this.totalDuration())&&(r&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||n)))}},h._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof s&&t._hasPausedChild())return!0;t=t._next}return!1},h.getChildren=function(t,e,s,r){r=r||-9999999999;for(var n=[],a=this._first,o=0;a;)r>a._startTime||(a instanceof i?e!==!1&&(n[o++]=a):(s!==!1&&(n[o++]=a),t!==!1&&(n=n.concat(a.getChildren(!0,e,s)),o=n.length))),a=a._next;return n},h.getTweensOf=function(t,e){for(var s=i.getTweensOf(t),r=s.length,n=[],a=0;--r>-1;)(s[r].timeline===this||e&&this._contains(s[r]))&&(n[a++]=s[r]);return n},h._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},h.shiftChildren=function(t,e,i){i=i||0;for(var s,r=this._first,n=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(s in n)n[s]>=i&&(n[s]+=t);return this._uncache(!0)},h._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,r=!1;--s>-1;)i[s]._kill(t,e)&&(r=!0);return r},h.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;--i>-1;)e[i]._enabled(!1,!1);return t!==!1&&(this._labels={}),this._uncache(!0)},h.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},h._enabled=function(t,i){if(t===this._gc)for(var s=this._first;s;)s._enabled(t,!0),s=s._next;return e.prototype._enabled.call(this,t,i)},h.progress=function(t){return arguments.length?this.totalTime(this.duration()*t,!1):this._time/this.duration()},h.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},h.totalDuration=function(t){if(!arguments.length){if(this._dirty){for(var e,i,s=0,r=this._last,n=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>n&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):n=r._startTime,0>r._startTime&&!r._paused&&(s-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),n=0),i=r._startTime+r._totalDuration/r._timeScale,i>s&&(s=i),r=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration}return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this},h.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===t._rootFramesTimeline},h.rawTime=function(){return this._paused||0!==this._totalTime&&this._totalTime!==this._totalDuration?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},s},!0),window._gsDefine("TimelineMax",["TimelineLite","TweenLite","easing.Ease"],function(t,e,i){var s=function(e){t.call(this,e),this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._dirty=!0},r=[],n=new i(null,null,1,0),a=function(t){for(;t;){if(t._paused)return!0;t=t._timeline}return!1},o=s.prototype=new t;return o.constructor=s,o.kill()._gc=!1,s.version="1.9.7",o.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),t.prototype.invalidate.call(this)},o.addCallback=function(t,i,s,r){return this.add(e.delayedCall(0,t,s,r),i)},o.removeCallback=function(t,e){if(null==e)this._kill(null,t);else for(var i=this.getTweensOf(t,!1),s=i.length,r=this._parseTimeOrLabel(e);--s>-1;)i[s]._startTime===r&&i[s]._enabled(!1,!1);return this},o.tweenTo=function(t,i){i=i||{};var s,a,o={ease:n,overwrite:2,useFrames:this.usesFrames(),immediateRender:!1};for(s in i)o[s]=i[s];return o.time=this._parseTimeOrLabel(t),a=new e(this,Math.abs(Number(o.time)-this._time)/this._timeScale||.001,o),o.onStart=function(){a.target.paused(!0),a.vars.time!==a.target.time()&&a.duration(Math.abs(a.vars.time-a.target.time())/a.target._timeScale),i.onStart&&i.onStart.apply(i.onStartScope||a,i.onStartParams||r)},a},o.tweenFromTo=function(t,e,i){i=i||{},t=this._parseTimeOrLabel(t),i.startAt={onComplete:this.seek,onCompleteParams:[t],onCompleteScope:this},i.immediateRender=i.immediateRender!==!1;var s=this.tweenTo(e,i);return s.duration(Math.abs(s.vars.time-t)/this._timeScale||.001)},o.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,n,a,o,h,l,_=this._dirty?this.totalDuration():this._totalDuration,u=this._duration,p=this._time,f=this._totalTime,c=this._startTime,m=this._timeScale,d=this._rawPrevTime,g=this._paused,v=this._cycle;if(t>=_?(this._locked||(this._totalTime=_,this._cycle=this._repeat),this._reversed||this._hasPausedChild()||(n=!0,o="onComplete",0===u&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,this._yoyo&&0!==(1&this._cycle)?this._time=t=0:(this._time=u,t=u+1e-6)):1e-7>t?(this._locked||(this._totalTime=this._cycle=0),this._time=0,(0!==p||0===u&&this._rawPrevTime>0&&!this._locked)&&(o="onReverseComplete",n=this._reversed),0>t?(this._active=!1,0===u&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):(this._time=this._rawPrevTime=t,this._locked||(this._totalTime=t,0!==this._repeat&&(l=u+this._repeatDelay,this._cycle=this._totalTime/l>>0,0!==this._cycle&&this._cycle===this._totalTime/l&&this._cycle--,this._time=this._totalTime-this._cycle*l,this._yoyo&&0!==(1&this._cycle)&&(this._time=u-this._time),this._time>u?(this._time=u,t=u+1e-6):0>this._time?this._time=t=0:t=this._time))),this._cycle!==v&&!this._locked){var y=this._yoyo&&0!==(1&v),T=y===(this._yoyo&&0!==(1&this._cycle)),w=this._totalTime,x=this._cycle,b=this._rawPrevTime,P=this._time;this._totalTime=v*u,v>this._cycle?y=!y:this._totalTime+=u,this._time=p,this._rawPrevTime=0===u?d-1e-5:d,this._cycle=v,this._locked=!0,p=y?0:u,this.render(p,e,0===u),e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||r),T&&(p=y?u+1e-6:-1e-6,this.render(p,!0,!1)),this._time=P,this._totalTime=w,this._cycle=x,this._rawPrevTime=b,this._locked=!1}if(!(this._time!==p&&this._first||i||h))return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),void 0;if(this._initted||(this._initted=!0),0===f&&this.vars.onStart&&0!==this._totalTime&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||r)),this._time>=p)for(s=this._first;s&&(a=s._next,!this._paused||g);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||g);)(s._active||p>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),o&&(this._locked||this._gc||(c===this._startTime||m!==this._timeScale)&&(0===this._time||_>=this.totalDuration())&&(n&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||r)))},o.getActive=function(t,e,i){null==t&&(t=!0),null==e&&(e=!0),null==i&&(i=!1);var s,r,n=[],o=this.getChildren(t,e,i),h=0,l=o.length;for(s=0;l>s;s++)r=o[s],r._paused||r._timeline._time>=r._startTime&&r._timeline._timee;e++)if(i[e].time>t)return i[e].name;return null},o.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),i=e.length;--i>-1;)if(t>e[i].time)return e[i].name;return null},o.getLabelsArray=function(){var t,e=[],i=0;for(t in this._labels)e[i++]={time:this._labels[t],name:t};return e.sort(function(t,e){return t.time-e.time}),e},o.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},o.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},o.totalDuration=function(e){return arguments.length?-1===this._repeat?this:this.duration((e-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(t.prototype.totalDuration.call(this),this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat),this._totalDuration)},o.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},o.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},o.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},o.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},o.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.getLabelBefore(this._time+1e-8)},s},!0),function(){var t=180/Math.PI,e=Math.PI/180,i=[],s=[],r=[],n={},a=function(t,e,i,s){this.a=t,this.b=e,this.c=i,this.d=s,this.da=s-t,this.ca=i-t,this.ba=e-t},o=",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",h=function(t,e,i,s){var r={a:t},n={},a={},o={c:s},h=(t+e)/2,l=(e+i)/2,_=(i+s)/2,u=(h+l)/2,p=(l+_)/2,f=(p-u)/8;return r.b=h+(t-h)/4,n.b=u+f,r.c=n.a=(r.b+n.b)/2,n.c=a.a=(u+p)/2,a.b=p-f,o.b=_+(s-_)/4,a.c=o.a=(a.b+o.b)/2,[r,n,a,o]},l=function(t,e,n,a,o){var l,_,u,p,f,c,m,d,g,v,y,T,w,x=t.length-1,b=0,P=t[0].a;for(l=0;x>l;l++)f=t[b],_=f.a,u=f.d,p=t[b+1].d,o?(y=i[l],T=s[l],w=.25*(T+y)*e/(a?.5:r[l]||.5),c=u-(u-_)*(a?.5*e:0!==y?w/y:0),m=u+(p-u)*(a?.5*e:0!==T?w/T:0),d=u-(c+((m-c)*(3*y/(y+T)+.5)/4||0))):(c=u-.5*(u-_)*e,m=u+.5*(p-u)*e,d=u-(c+m)/2),c+=d,m+=d,f.c=g=c,f.b=0!==l?P:P=f.a+.6*(f.c-f.a),f.da=u-_,f.ca=g-_,f.ba=P-_,n?(v=h(_,P,g,u),t.splice(b,1,v[0],v[1],v[2],v[3]),b+=4):b++,P=m;f=t[b],f.b=P,f.c=P+.4*(f.d-P),f.da=f.d-f.a,f.ca=f.c-f.a,f.ba=P-f.a,n&&(v=h(f.a,P,f.c,f.d),t.splice(b,1,v[0],v[1],v[2],v[3]))},_=function(t,e,r,n){var o,h,l,_,u,p,f=[];if(n)for(t=[n].concat(t),h=t.length;--h>-1;)"string"==typeof(p=t[h][e])&&"="===p.charAt(1)&&(t[h][e]=n[e]+Number(p.charAt(0)+p.substr(2)));if(o=t.length-2,0>o)return f[0]=new a(t[0][e],0,0,t[-1>o?0:1][e]),f;for(h=0;o>h;h++)l=t[h][e],_=t[h+1][e],f[h]=new a(l,0,0,_),r&&(u=t[h+2][e],i[h]=(i[h]||0)+(_-l)*(_-l),s[h]=(s[h]||0)+(u-_)*(u-_));return f[h]=new a(t[h][e],0,0,t[h+1][e]),f},u=function(t,e,a,h,u,p){var f,c,m,d,g,v,y,T,w={},x=[],b=p||t[0];u="string"==typeof u?","+u+",":o,null==e&&(e=1);for(c in t[0])x.push(c);if(t.length>1){for(T=t[t.length-1],y=!0,f=x.length;--f>-1;)if(c=x[f],Math.abs(b[c]-T[c])>.05){y=!1;break}y&&(t=t.concat(),p&&t.unshift(p),t.push(t[1]),p=t[t.length-3])}for(i.length=s.length=r.length=0,f=x.length;--f>-1;)c=x[f],n[c]=-1!==u.indexOf(","+c+","),w[c]=_(t,c,n[c],p);for(f=i.length;--f>-1;)i[f]=Math.sqrt(i[f]),s[f]=Math.sqrt(s[f]);if(!h){for(f=x.length;--f>-1;)if(n[c])for(m=w[x[f]],v=m.length-1,d=0;v>d;d++)g=m[d+1].da/s[d]+m[d].da/i[d],r[d]=(r[d]||0)+g*g;for(f=r.length;--f>-1;)r[f]=Math.sqrt(r[f])}for(f=x.length,d=a?4:1;--f>-1;)c=x[f],m=w[c],l(m,e,a,h,n[c]),y&&(m.splice(0,d),m.splice(m.length-d,d));return w},p=function(t,e,i){e=e||"soft";var s,r,n,o,h,l,_,u,p,f,c,m={},d="cubic"===e?3:2,g="soft"===e,v=[];if(g&&i&&(t=[i].concat(t)),null==t||d+1>t.length)throw"invalid Bezier data";for(p in t[0])v.push(p);for(l=v.length;--l>-1;){for(p=v[l],m[p]=h=[],f=0,u=t.length,_=0;u>_;_++)s=null==i?t[_][p]:"string"==typeof(c=t[_][p])&&"="===c.charAt(1)?i[p]+Number(c.charAt(0)+c.substr(2)):Number(c),g&&_>1&&u-1>_&&(h[f++]=(s+h[f-2])/2),h[f++]=s;for(u=f-d+1,f=0,_=0;u>_;_+=d)s=h[_],r=h[_+1],n=h[_+2],o=2===d?0:h[_+3],h[f++]=c=3===d?new a(s,r,n,o):new a(s,(2*r+s)/3,(2*r+n)/3,n);h.length=f}return m},f=function(t,e,i){for(var s,r,n,a,o,h,l,_,u,p,f,c=1/i,m=t.length;--m>-1;)for(p=t[m],n=p.a,a=p.d-n,o=p.c-n,h=p.b-n,s=r=0,_=1;i>=_;_++)l=c*_,u=1-l,s=r-(r=(l*l*a+3*u*(l*o+u*h))*l),f=m*i+_-1,e[f]=(e[f]||0)+s*s},c=function(t,e){e=e>>0||6;var i,s,r,n,a=[],o=[],h=0,l=0,_=e-1,u=[],p=[];for(i in t)f(t[i],a,e);for(r=a.length,s=0;r>s;s++)h+=Math.sqrt(a[s]),n=s%e,p[n]=h,n===_&&(l+=h,n=s/e>>0,u[n]=p,o[n]=l,h=0,p=[]);return{length:l,lengths:o,segments:u}},m=window._gsDefine.plugin({propName:"bezier",priority:-1,API:2,global:!0,init:function(t,e,i){this._target=t,e instanceof Array&&(e={values:e}),this._func={},this._round={},this._props=[],this._timeRes=null==e.timeResolution?6:parseInt(e.timeResolution,10);var s,r,n,a,o,h=e.values||[],l={},_=h[0],f=e.autoRotate||i.vars.orientToBezier;this._autoRotate=f?f instanceof Array?f:[["x","y","rotation",f===!0?0:Number(f)||0]]:null;for(s in _)this._props.push(s);for(n=this._props.length;--n>-1;)s=this._props[n],this._overwriteProps.push(s),r=this._func[s]="function"==typeof t[s],l[s]=r?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]():parseFloat(t[s]),o||l[s]!==h[0][s]&&(o=l);if(this._beziers="cubic"!==e.type&&"quadratic"!==e.type&&"soft"!==e.type?u(h,isNaN(e.curviness)?1:e.curviness,!1,"thruBasic"===e.type,e.correlate,o):p(h,e.type,l),this._segCount=this._beziers[s].length,this._timeRes){var m=c(this._beziers,this._timeRes);this._length=m.length,this._lengths=m.lengths,this._segments=m.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(f=this._autoRotate)for(f[0]instanceof Array||(this._autoRotate=f=[f]),n=f.length;--n>-1;)for(a=0;3>a;a++)s=f[n][a],this._func[s]="function"==typeof t[s]?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]:!1;return!0},set:function(e){var i,s,r,n,a,o,h,l,_,u,p=this._segCount,f=this._func,c=this._target;if(this._timeRes){if(_=this._lengths,u=this._curSeg,e*=this._length,r=this._li,e>this._l2&&p-1>r){for(l=p-1;l>r&&e>=(this._l2=_[++r]););this._l1=_[r-1],this._li=r,this._curSeg=u=this._segments[r],this._s2=u[this._s1=this._si=0]}else if(this._l1>e&&r>0){for(;r>0&&(this._l1=_[--r])>=e;);0===r&&this._l1>e?this._l1=0:r++,this._l2=_[r],this._li=r,this._curSeg=u=this._segments[r],this._s1=u[(this._si=u.length-1)-1]||0,this._s2=u[this._si]}if(i=r,e-=this._l1,r=this._si,e>this._s2&&u.length-1>r){for(l=u.length-1;l>r&&e>=(this._s2=u[++r]););this._s1=u[r-1],this._si=r}else if(this._s1>e&&r>0){for(;r>0&&(this._s1=u[--r])>=e;);0===r&&this._s1>e?this._s1=0:r++,this._s2=u[r],this._si=r}o=(r+(e-this._s1)/(this._s2-this._s1))*this._prec}else i=0>e?0:e>=1?p-1:p*e>>0,o=(e-i*(1/p))*p;for(s=1-o,r=this._props.length;--r>-1;)n=this._props[r],a=this._beziers[n][i],h=(o*o*a.da+3*s*(o*a.ca+s*a.ba))*o+a.a,this._round[n]&&(h=h+(h>0?.5:-.5)>>0),f[n]?c[n](h):c[n]=h;if(this._autoRotate){var m,d,g,v,y,T,w,x=this._autoRotate;for(r=x.length;--r>-1;)n=x[r][2],T=x[r][3]||0,w=x[r][4]===!0?1:t,a=this._beziers[x[r][0]],m=this._beziers[x[r][1]],a&&m&&(a=a[i],m=m[i],d=a.a+(a.b-a.a)*o,v=a.b+(a.c-a.b)*o,d+=(v-d)*o,v+=(a.c+(a.d-a.c)*o-v)*o,g=m.a+(m.b-m.a)*o,y=m.b+(m.c-m.b)*o,g+=(y-g)*o,y+=(m.c+(m.d-m.c)*o-y)*o,h=Math.atan2(y-g,v-d)*w+T,f[n]?c[n](h):c[n]=h)}}}),d=m.prototype;m.bezierThrough=u,m.cubicToQuadratic=h,m._autoCSS=!0,m.quadraticToCubic=function(t,e,i){return new a(t,(2*e+t)/3,(2*e+i)/3,i)},m._cssRegister=function(){var t=window._gsDefine.globals.CSSPlugin;if(t){var i=t._internals,s=i._parseToProxy,r=i._setPluginRatio,n=i.CSSPropTween;i._registerComplexSpecialProp("bezier",{parser:function(t,i,a,o,h,l){i instanceof Array&&(i={values:i}),l=new m;var _,u,p,f=i.values,c=f.length-1,d=[],g={};if(0>c)return h;for(_=0;c>=_;_++)p=s(t,f[_],o,h,l,c!==_),d[_]=p.end;for(u in i)g[u]=i[u];return g.values=d,h=new n(t,"bezier",0,0,p.pt,2),h.data=p,h.plugin=l,h.setRatio=r,0===g.autoRotate&&(g.autoRotate=!0),!g.autoRotate||g.autoRotate instanceof Array||(_=g.autoRotate===!0?0:Number(g.autoRotate)*e,g.autoRotate=null!=p.end.left?[["left","top","rotation",_,!0]]:null!=p.end.x?[["x","y","rotation",_,!0]]:!1),g.autoRotate&&(o._transform||o._enableTransforms(!1),p.autoRotate=o._target._gsTransform),l._onInitTween(p.proxy,g,o._tween),h}})}},d._roundProps=function(t,e){for(var i=this._overwriteProps,s=i.length;--s>-1;)(t[i[s]]||t.bezier||t.bezierThrough)&&(this._round[i[s]]=e)},d._kill=function(t){var e,i,s=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],i=s.length;--i>-1;)s[i]===e&&s.splice(i,1);return this._super._kill.call(this,t)}}(),window._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(t,e){var i,s,r,n,a=function(){t.call(this,"css"),this._overwriteProps.length=0},o={},h=a.prototype=new t("css");h.constructor=a,a.version="1.9.7",a.API=2,a.defaultTransformPerspective=0,h="px",a.suffixMap={top:h,right:h,bottom:h,left:h,width:h,height:h,fontSize:h,padding:h,margin:h,perspective:h}; +var l,_,u,p,f,c,m=/(?:\d|\-\d|\.\d|\-\.\d)+/g,d=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,g=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,v=/[^\d\-\.]/g,y=/(?:\d|\-|\+|=|#|\.)*/g,T=/opacity *= *([^)]*)/,w=/opacity:([^;]*)/,x=/alpha\(opacity *=.+?\)/i,b=/^(rgb|hsl)/,P=/([A-Z])/g,k=/-([a-z])/gi,R=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,S=function(t,e){return e.toUpperCase()},A=/(?:Left|Right|Width)/i,C=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,O=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,D=/,(?=[^\)]*(?:\(|$))/gi,M=Math.PI/180,I=180/Math.PI,F={},E=document,N=E.createElement("div"),L=E.createElement("img"),X=a._internals={_specialProps:o},U=navigator.userAgent,z=function(){var t,e=U.indexOf("Android"),i=E.createElement("div");return u=-1!==U.indexOf("Safari")&&-1===U.indexOf("Chrome")&&(-1===e||Number(U.substr(e+8,1))>3),f=u&&6>Number(U.substr(U.indexOf("Version/")+8,1)),p=-1!==U.indexOf("Firefox"),/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U),c=parseFloat(RegExp.$1),i.innerHTML="a",t=i.getElementsByTagName("a")[0],t?/^0.55/.test(t.style.opacity):!1}(),Y=function(t){return T.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1},B=function(t){window.console&&console.log(t)},j="",q="",V=function(t,e){e=e||N;var i,s,r=e.style;if(void 0!==r[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],s=5;--s>-1&&void 0===r[i[s]+t];);return s>=0?(q=3===s?"ms":i[s],j="-"+q.toLowerCase()+"-",q+t):null},Z=E.defaultView?E.defaultView.getComputedStyle:function(){},G=a.getStyle=function(t,e,i,s,r){var n;return z||"opacity"!==e?(!s&&t.style[e]?n=t.style[e]:(i=i||Z(t,null))?(t=i.getPropertyValue(e.replace(P,"-$1").toLowerCase()),n=t||i.length?t:i[e]):t.currentStyle&&(i=t.currentStyle,n=i[e]),null==r||n&&"none"!==n&&"auto"!==n&&"auto auto"!==n?n:r):Y(t)},$=function(t,e,i,s,r){if("px"===s||!s)return i;if("auto"===s||!i)return 0;var n,a=A.test(e),o=t,h=N.style,l=0>i;return l&&(i=-i),"%"===s&&-1!==e.indexOf("border")?n=i/100*(a?t.clientWidth:t.clientHeight):(h.cssText="border-style:solid; border-width:0; position:absolute; line-height:0;","%"!==s&&o.appendChild?h[a?"borderLeftWidth":"borderTopWidth"]=i+s:(o=t.parentNode||E.body,h[a?"width":"height"]=i+s),o.appendChild(N),n=parseFloat(N[a?"offsetWidth":"offsetHeight"]),o.removeChild(N),0!==n||r||(n=$(t,e,i,s,!0))),l?-n:n},Q=function(t,e,i){if("absolute"!==G(t,"position",i))return 0;var s="left"===e?"Left":"Top",r=G(t,"margin"+s,i);return t["offset"+s]-($(t,e,parseFloat(r),r.replace(y,""))||0)},W=function(t,e){var i,s,r={};if(e=e||Z(t,null))if(i=e.length)for(;--i>-1;)r[e[i].replace(k,S)]=e.getPropertyValue(e[i]);else for(i in e)r[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)r[i.replace(k,S)]=e[i];return z||(r.opacity=Y(t)),s=be(t,e,!1),r.rotation=s.rotation*I,r.skewX=s.skewX*I,r.scaleX=s.scaleX,r.scaleY=s.scaleY,r.x=s.x,r.y=s.y,xe&&(r.z=s.z,r.rotationX=s.rotationX*I,r.rotationY=s.rotationY*I,r.scaleZ=s.scaleZ),r.filters&&delete r.filters,r},H=function(t,e,i,s,r){var n,a,o,h={},l=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(n=i[a])||r&&r[a])&&-1===a.indexOf("Origin")&&("number"==typeof n||"string"==typeof n)&&(h[a]="auto"!==n||"left"!==a&&"top"!==a?""!==n&&"auto"!==n&&"none"!==n||"string"!=typeof e[a]||""===e[a].replace(v,"")?n:0:Q(t,a),void 0!==l[a]&&(o=new ue(l,a,l[a],o)));if(s)for(a in s)"className"!==a&&(h[a]=s[a]);return{difs:h,firstMPT:o}},K={width:["Left","Right"],height:["Top","Bottom"]},J=["marginLeft","marginRight","marginTop","marginBottom"],te=function(t,e,i){var s=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),r=K[e],n=r.length;for(i=i||Z(t,null);--n>-1;)s-=parseFloat(G(t,"padding"+r[n],i,!0))||0,s-=parseFloat(G(t,"border"+r[n]+"Width",i,!0))||0;return s},ee=function(t,e){(null==t||""===t||"auto"===t||"auto auto"===t)&&(t="0 0");var i=t.split(" "),s=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":i[0],r=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":i[1];return null==r?r="0":"center"===r&&(r="50%"),("center"===s||isNaN(parseFloat(s)))&&(s="50%"),e&&(e.oxp=-1!==s.indexOf("%"),e.oyp=-1!==r.indexOf("%"),e.oxr="="===s.charAt(1),e.oyr="="===r.charAt(1),e.ox=parseFloat(s.replace(v,"")),e.oy=parseFloat(r.replace(v,""))),s+" "+r+(i.length>2?" "+i[2]:"")},ie=function(t,e){return"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2)):parseFloat(t)-parseFloat(e)},se=function(t,e){return null==t?e:"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*Number(t.substr(2))+e:parseFloat(t)},re=function(t,e,i,s){var r,n,a,o,h=1e-6;return null==t?o=e:"number"==typeof t?o=t*M:(r=2*Math.PI,n=t.split("_"),a=Number(n[0].replace(v,""))*(-1===t.indexOf("rad")?M:1)-("="===t.charAt(1)?0:e),n.length&&(s&&(s[i]=e+a),-1!==t.indexOf("short")&&(a%=r,a!==a%(r/2)&&(a=0>a?a+r:a-r)),-1!==t.indexOf("_cw")&&0>a?a=(a+9999999999*r)%r-(0|a/r)*r:-1!==t.indexOf("ccw")&&a>0&&(a=(a-9999999999*r)%r-(0|a/r)*r)),o=e+a),h>o&&o>-h&&(o=0),o},ne={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ae=function(t,e,i){return t=0>t?t+1:t>1?t-1:t,0|255*(1>6*t?e+6*(i-e)*t:.5>t?i:2>3*t?e+6*(i-e)*(2/3-t):e)+.5},oe=function(t){var e,i,s,r,n,a;return t&&""!==t?"number"==typeof t?[t>>16,255&t>>8,255&t]:(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),ne[t]?ne[t]:"#"===t.charAt(0)?(4===t.length&&(e=t.charAt(1),i=t.charAt(2),s=t.charAt(3),t="#"+e+e+i+i+s+s),t=parseInt(t.substr(1),16),[t>>16,255&t>>8,255&t]):"hsl"===t.substr(0,3)?(t=t.match(m),r=Number(t[0])%360/360,n=Number(t[1])/100,a=Number(t[2])/100,i=.5>=a?a*(n+1):a+n-a*n,e=2*a-i,t.length>3&&(t[3]=Number(t[3])),t[0]=ae(r+1/3,e,i),t[1]=ae(r,e,i),t[2]=ae(r-1/3,e,i),t):(t=t.match(m)||ne.transparent,t[0]=Number(t[0]),t[1]=Number(t[1]),t[2]=Number(t[2]),t.length>3&&(t[3]=Number(t[3])),t)):ne.black},he="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";for(h in ne)he+="|"+h+"\\b";he=RegExp(he+")","gi");var le=function(t,e,i,s){if(null==t)return function(t){return t};var r,n=e?(t.match(he)||[""])[0]:"",a=t.split(n).join("").match(g)||[],o=t.substr(0,t.indexOf(a[0])),h=")"===t.charAt(t.length-1)?")":"",l=-1!==t.indexOf(" ")?" ":",",_=a.length,u=_>0?a[0].replace(m,""):"";return _?r=e?function(t){var e,p,f,c;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(c=t.replace(D,"|").split("|"),f=0;c.length>f;f++)c[f]=r(c[f]);return c.join(",")}if(e=(t.match(he)||[n])[0],p=t.split(e).join("").match(g)||[],f=p.length,_>f--)for(;_>++f;)p[f]=i?p[0|(f-1)/2]:a[f];return o+p.join(l)+l+e+h+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,n,p;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(n=t.replace(D,"|").split("|"),p=0;n.length>p;p++)n[p]=r(n[p]);return n.join(",")}if(e=t.match(g)||[],p=e.length,_>p--)for(;_>++p;)e[p]=i?e[0|(p-1)/2]:a[p];return o+e.join(l)+h}:function(t){return t}},_e=function(t){return t=t.split(","),function(e,i,s,r,n,a,o){var h,l=(i+"").split(" ");for(o={},h=0;4>h;h++)o[t[h]]=l[h]=l[h]||l[(h-1)/2>>0];return r.parse(e,o,n,a)}},ue=(X._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,s,r,n=this.data,a=n.proxy,o=n.firstMPT,h=1e-6;o;)e=a[o.v],o.r?e=e>0?0|e+.5:0|e-.5:h>e&&e>-h&&(e=0),o.t[o.p]=e,o=o._next;if(n.autoRotate&&(n.autoRotate.rotation=a.rotation),1===t)for(o=n.firstMPT;o;){if(i=o.t,i.type){if(1===i.type){for(r=i.xs0+i.s+i.xs1,s=1;i.l>s;s++)r+=i["xn"+s]+i["xs"+(s+1)];i.e=r}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,s,r){this.t=t,this.p=e,this.v=i,this.r=r,s&&(s._prev=this,this._next=s)}),pe=(X._parseToProxy=function(t,e,i,s,r,n){var a,o,h,l,_,u=s,p={},f={},c=i._transform,m=F;for(i._transform=null,F=e,s=_=i.parse(t,e,s,r),F=m,n&&(i._transform=c,u&&(u._prev=null,u._prev&&(u._prev._next=null)));s&&s!==u;){if(1>=s.type&&(o=s.p,f[o]=s.s+s.c,p[o]=s.s,n||(l=new ue(s,"s",o,l,s.r),s.c=0),1===s.type))for(a=s.l;--a>0;)h="xn"+a,o=s.p+"_"+h,f[o]=s.data[h],p[o]=s[h],n||(l=new ue(s,h,o,l,s.rxp[h]));s=s._next}return{proxy:p,end:f,firstMPT:l,pt:_}},X.CSSPropTween=function(t,e,s,r,a,o,h,l,_,u,p){this.t=t,this.p=e,this.s=s,this.c=r,this.n=h||"css_"+e,t instanceof pe||n.push(this.n),this.r=l,this.type=o||0,_&&(this.pr=_,i=!0),this.b=void 0===u?s:u,this.e=void 0===p?s+r:p,a&&(this._next=a,a._prev=this)}),fe=a.parseComplex=function(t,e,i,s,r,n,a,o,h,_){i=i||n||"",a=new pe(t,e,0,0,a,_?2:1,null,!1,o,i,s),s+="";var u,p,f,c,g,v,y,T,w,x,P,k,R=i.split(", ").join(",").split(" "),S=s.split(", ").join(",").split(" "),A=R.length,C=l!==!1;for((-1!==s.indexOf(",")||-1!==i.indexOf(","))&&(R=R.join(" ").replace(D,", ").split(" "),S=S.join(" ").replace(D,", ").split(" "),A=R.length),A!==S.length&&(R=(n||"").split(" "),A=R.length),a.plugin=h,a.setRatio=_,u=0;A>u;u++)if(c=R[u],g=S[u],T=parseFloat(c),T||0===T)a.appendXtra("",T,ie(g,T),g.replace(d,""),C&&-1!==g.indexOf("px"),!0);else if(r&&("#"===c.charAt(0)||ne[c]||b.test(c)))k=","===g.charAt(g.length-1)?"),":")",c=oe(c),g=oe(g),w=c.length+g.length>6,w&&!z&&0===g[3]?(a["xs"+a.l]+=a.l?" transparent":"transparent",a.e=a.e.split(S[u]).join("transparent")):(z||(w=!1),a.appendXtra(w?"rgba(":"rgb(",c[0],g[0]-c[0],",",!0,!0).appendXtra("",c[1],g[1]-c[1],",",!0).appendXtra("",c[2],g[2]-c[2],w?",":k,!0),w&&(c=4>c.length?1:c[3],a.appendXtra("",c,(4>g.length?1:g[3])-c,k,!1)));else if(v=c.match(m)){if(y=g.match(d),!y||y.length!==v.length)return a;for(f=0,p=0;v.length>p;p++)P=v[p],x=c.indexOf(P,f),a.appendXtra(c.substr(f,x-f),Number(P),ie(y[p],P),"",C&&"px"===c.substr(x+P.length,2),0===p),f=x+P.length;a["xs"+a.l]+=c.substr(f)}else a["xs"+a.l]+=a.l?" "+c:c;if(-1!==s.indexOf("=")&&a.data){for(k=a.xs0+a.data.s,u=1;a.l>u;u++)k+=a["xs"+u]+a.data["xn"+u];a.e=k+a["xs"+u]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},ce=9;for(h=pe.prototype,h.l=h.pr=0;--ce>0;)h["xn"+ce]=0,h["xs"+ce]="";h.xs0="",h._next=h._prev=h.xfirst=h.data=h.plugin=h.setRatio=h.rxp=null,h.appendXtra=function(t,e,i,s,r,n){var a=this,o=a.l;return a["xs"+o]+=n&&o?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=s||"",o>0?(a.data["xn"+o]=e+i,a.rxp["xn"+o]=r,a["xn"+o]=e,a.plugin||(a.xfirst=new pe(a,"xn"+o,e,i,a.xfirst||a,0,a.n,r,a.pr),a.xfirst.xs0=0),a):(a.data={s:e+i},a.rxp={},a.s=e,a.c=i,a.r=r,a)):(a["xs"+o]+=e+(s||""),a)};var me=function(t,e){e=e||{},this.p=e.prefix?V(t)||t:t,o[t]=o[this.p]=this,this.format=e.formatter||le(e.defaultValue,e.color,e.collapsible,e.multi),e.parser&&(this.parse=e.parser),this.clrs=e.color,this.multi=e.multi,this.keyword=e.keyword,this.dflt=e.defaultValue,this.pr=e.priority||0},de=X._registerComplexSpecialProp=function(t,e,i){"object"!=typeof e&&(e={parser:i});var s,r,n=t.split(","),a=e.defaultValue;for(i=i||[a],s=0;n.length>s;s++)e.prefix=0===s&&e.prefix,e.defaultValue=i[s]||a,r=new me(n[s],e)},ge=function(t){if(!o[t]){var e=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin";de(t,{parser:function(t,i,s,r,n,a,h){var l=(window.GreenSockGlobals||window).com.greensock.plugins[e];return l?(l._cssRegister(),o[s].parse(t,i,s,r,n,a,h)):(B("Error: "+e+" js file not loaded."),n)}})}};h=me.prototype,h.parseComplex=function(t,e,i,s,r,n){var a,o,h,l,_,u,p=this.keyword;if(this.multi&&(D.test(i)||D.test(e)?(o=e.replace(D,"|").split("|"),h=i.replace(D,"|").split("|")):p&&(o=[e],h=[i])),h){for(l=h.length>o.length?h.length:o.length,a=0;l>a;a++)e=o[a]=o[a]||this.dflt,i=h[a]=h[a]||this.dflt,p&&(_=e.indexOf(p),u=i.indexOf(p),_!==u&&(i=-1===u?h:o,i[a]+=" "+p));e=o.join(", "),i=h.join(", ")}return fe(t,this.p,e,i,this.clrs,this.dflt,s,this.pr,r,n)},h.parse=function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,this.p,r,!1,this.dflt)),this.format(e),n,a)},a.registerSpecialProp=function(t,e,i){de(t,{parser:function(t,s,r,n,a,o){var h=new pe(t,r,0,0,a,2,r,!1,i);return h.plugin=o,h.setRatio=e(t,s,n._tween,r),h},priority:i})};var ve="scaleX,scaleY,scaleZ,x,y,z,skewX,rotation,rotationX,rotationY,perspective".split(","),ye=V("transform"),Te=j+"transform",we=V("transformOrigin"),xe=null!==V("perspective"),be=function(t,e,i){var s,r,n,o,h,l,_,u,p,f,c,m,d,g=i?t._gsTransform||{skewY:0}:{skewY:0},v=0>g.scaleX,y=2e-5,T=1e5,w=-Math.PI+1e-4,x=Math.PI-1e-4,b=xe?parseFloat(G(t,we,e,!1,"0 0 0").split(" ")[2])||g.zOrigin||0:0;if(ye)s=G(t,Te,e,!0);else if(t.currentStyle)if(s=t.currentStyle.filter.match(C),s&&4===s.length)s=[s[0].substr(4),Number(s[2].substr(4)),Number(s[1].substr(4)),s[3].substr(4),g.x||0,g.y||0].join(",");else{if(null!=g.x)return g;s=""}for(r=(s||"").match(/(?:\-|\b)[\d\-\.e]+\b/gi)||[],n=r.length;--n>-1;)o=Number(r[n]),r[n]=(h=o-(o|=0))?(0|h*T+(0>h?-.5:.5))/T+o:o;if(16===r.length){var P=r[8],k=r[9],R=r[10],S=r[12],A=r[13],O=r[14];if(g.zOrigin&&(O=-g.zOrigin,S=P*O-r[12],A=k*O-r[13],O=R*O+g.zOrigin-r[14]),!i||null==g.rotationX){var D,M,I,F,E,N,L,X=r[0],U=r[1],z=r[2],Y=r[3],B=r[4],j=r[5],q=r[6],V=r[7],Z=r[11],$=g.rotationX=Math.atan2(q,R),Q=w>$||$>x;$&&(F=Math.cos(-$),E=Math.sin(-$),D=B*F+P*E,M=j*F+k*E,I=q*F+R*E,P=B*-E+P*F,k=j*-E+k*F,R=q*-E+R*F,Z=V*-E+Z*F,B=D,j=M,q=I),$=g.rotationY=Math.atan2(P,X),$&&(N=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),D=X*F-P*E,M=U*F-k*E,I=z*F-R*E,k=U*E+k*F,R=z*E+R*F,Z=Y*E+Z*F,X=D,U=M,z=I),$=g.rotation=Math.atan2(U,j),$&&(L=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),X=X*F+B*E,M=U*F+j*E,j=U*-E+j*F,q=z*-E+q*F,U=M),L&&Q?g.rotation=g.rotationX=0:L&&N?g.rotation=g.rotationY=0:N&&Q&&(g.rotationY=g.rotationX=0),g.scaleX=(0|Math.sqrt(X*X+U*U)*T+.5)/T,g.scaleY=(0|Math.sqrt(j*j+k*k)*T+.5)/T,g.scaleZ=(0|Math.sqrt(q*q+R*R)*T+.5)/T,g.skewX=0,g.perspective=Z?1/(0>Z?-Z:Z):0,g.x=S,g.y=A,g.z=O}}else if(!(xe&&0!==r.length&&g.x===r[4]&&g.y===r[5]&&(g.rotationX||g.rotationY)||void 0!==g.x&&"none"===G(t,"display",e))){var W=r.length>=6,H=W?r[0]:1,K=r[1]||0,J=r[2]||0,te=W?r[3]:1;g.x=r[4]||0,g.y=r[5]||0,l=Math.sqrt(H*H+K*K),_=Math.sqrt(te*te+J*J),u=H||K?Math.atan2(K,H):g.rotation||0,p=J||te?Math.atan2(J,te)+u:g.skewX||0,f=l-Math.abs(g.scaleX||0),c=_-Math.abs(g.scaleY||0),Math.abs(p)>Math.PI/2&&Math.abs(p)<1.5*Math.PI&&(v?(l*=-1,p+=0>=u?Math.PI:-Math.PI,u+=0>=u?Math.PI:-Math.PI):(_*=-1,p+=0>=p?Math.PI:-Math.PI)),m=(u-g.rotation)%Math.PI,d=(p-g.skewX)%Math.PI,(void 0===g.skewX||f>y||-y>f||c>y||-y>c||m>w&&x>m&&false|m*T||d>w&&x>d&&false|d*T)&&(g.scaleX=l,g.scaleY=_,g.rotation=u,g.skewX=p),xe&&(g.rotationX=g.rotationY=g.z=0,g.perspective=parseFloat(a.defaultTransformPerspective)||0,g.scaleZ=1)}g.zOrigin=b;for(n in g)y>g[n]&&g[n]>-y&&(g[n]=0);return i&&(t._gsTransform=g),g},Pe=function(t){var e,i,s=this.data,r=-s.rotation,n=r+s.skewX,a=1e5,o=(0|Math.cos(r)*s.scaleX*a)/a,h=(0|Math.sin(r)*s.scaleX*a)/a,l=(0|Math.sin(n)*-s.scaleY*a)/a,_=(0|Math.cos(n)*s.scaleY*a)/a,u=this.t.style,p=this.t.currentStyle;if(p){i=h,h=-l,l=-i,e=p.filter,u.filter="";var f,m,d=this.t.offsetWidth,g=this.t.offsetHeight,v="absolute"!==p.position,w="progid:DXImageTransform.Microsoft.Matrix(M11="+o+", M12="+h+", M21="+l+", M22="+_,x=s.x,b=s.y;if(null!=s.ox&&(f=(s.oxp?.01*d*s.ox:s.ox)-d/2,m=(s.oyp?.01*g*s.oy:s.oy)-g/2,x+=f-(f*o+m*h),b+=m-(f*l+m*_)),v)f=d/2,m=g/2,w+=", Dx="+(f-(f*o+m*h)+x)+", Dy="+(m-(f*l+m*_)+b)+")";else{var P,k,R,S=8>c?1:-1;for(f=s.ieOffsetX||0,m=s.ieOffsetY||0,s.ieOffsetX=Math.round((d-((0>o?-o:o)*d+(0>h?-h:h)*g))/2+x),s.ieOffsetY=Math.round((g-((0>_?-_:_)*g+(0>l?-l:l)*d))/2+b),ce=0;4>ce;ce++)k=J[ce],P=p[k],i=-1!==P.indexOf("px")?parseFloat(P):$(this.t,k,parseFloat(P),P.replace(y,""))||0,R=i!==s[k]?2>ce?-s.ieOffsetX:-s.ieOffsetY:2>ce?f-s.ieOffsetX:m-s.ieOffsetY,u[k]=(s[k]=Math.round(i-R*(0===ce||2===ce?1:S)))+"px";w+=", sizingMethod='auto expand')"}u.filter=-1!==e.indexOf("DXImageTransform.Microsoft.Matrix(")?e.replace(O,w):w+" "+e,(0===t||1===t)&&1===o&&0===h&&0===l&&1===_&&(v&&-1===w.indexOf("Dx=0, Dy=0")||T.test(e)&&100!==parseFloat(RegExp.$1)||-1===e.indexOf("gradient(")&&u.removeAttribute("filter"))}},ke=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t.style,u=l.perspective,f=l.scaleX,c=0,m=0,d=0,g=0,v=l.scaleY,y=0,T=0,w=0,x=0,b=l.scaleZ,P=0,k=0,R=0,S=u?-1/u:0,A=l.rotation,C=l.zOrigin,O=1e5;p&&(a=_.top?"top":_.bottom?"bottom":parseFloat(G(this.t,"top",null,!1))?"bottom":"top",i=G(this.t,a,null,!1),o=parseFloat(i)||0,h=i.substr((o+"").length)||"px",l._ffFix=!l._ffFix,_[a]=(l._ffFix?o+.05:o-.05)+h),(A||l.skewX)&&(i=f*Math.cos(A),s=v*Math.sin(A),A-=l.skewX,c=f*-Math.sin(A),v*=Math.cos(A),f=i,g=s),A=l.rotationY,A&&(t=Math.cos(A),e=Math.sin(A),i=f*t,s=g*t,r=b*-e,n=S*-e,m=f*e,y=g*e,b*=t,S*=t,f=i,g=s,w=r,k=n),A=l.rotationX,A&&(t=Math.cos(A),e=Math.sin(A),i=c*t+m*e,s=v*t+y*e,r=x*t+b*e,n=R*t+S*e,m=c*-e+m*t,y=v*-e+y*t,b=x*-e+b*t,S=R*-e+S*t,c=i,v=s,x=r,R=n),C&&(P-=C,d=m*P,T=y*P,P=b*P+C),d=(i=(d+=l.x)-(d|=0))?(0|i*O+(0>i?-.5:.5))/O+d:d,T=(i=(T+=l.y)-(T|=0))?(0|i*O+(0>i?-.5:.5))/O+T:T,P=(i=(P+=l.z)-(P|=0))?(0|i*O+(0>i?-.5:.5))/O+P:P,_[ye]="matrix3d("+[(0|f*O)/O,(0|g*O)/O,(0|w*O)/O,(0|k*O)/O,(0|c*O)/O,(0|v*O)/O,(0|x*O)/O,(0|R*O)/O,(0|m*O)/O,(0|y*O)/O,(0|b*O)/O,(0|S*O)/O,d,T,P,u?1+-P/u:1].join(",")+")"},Re=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t,u=_.style;p&&(t=u.top?"top":u.bottom?"bottom":parseFloat(G(_,"top",null,!1))?"bottom":"top",e=G(_,t,null,!1),i=parseFloat(e)||0,s=e.substr((i+"").length)||"px",l._ffFix=!l._ffFix,u[t]=(l._ffFix?i+.05:i-.05)+s),l.rotation||l.skewX?(r=l.rotation,n=r-l.skewX,a=1e5,o=l.scaleX*a,h=l.scaleY*a,u[ye]="matrix("+(0|Math.cos(r)*o)/a+","+(0|Math.sin(r)*o)/a+","+(0|Math.sin(n)*-h)/a+","+(0|Math.cos(n)*h)/a+","+l.x+","+l.y+")"):u[ye]="matrix("+l.scaleX+",0,0,"+l.scaleY+","+l.x+","+l.y+")"};de("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation",{parser:function(t,e,i,s,n,a,o){if(s._transform)return n;var h,l,_,u,p,f,c,m=s._transform=be(t,r,!0),d=t.style,g=1e-6,v=ve.length,y=o,T={};if("string"==typeof y.transform&&ye)_=d.cssText,d[ye]=y.transform,d.display="block",h=be(t,null,!1),d.cssText=_;else if("object"==typeof y){if(h={scaleX:se(null!=y.scaleX?y.scaleX:y.scale,m.scaleX),scaleY:se(null!=y.scaleY?y.scaleY:y.scale,m.scaleY),scaleZ:se(null!=y.scaleZ?y.scaleZ:y.scale,m.scaleZ),x:se(y.x,m.x),y:se(y.y,m.y),z:se(y.z,m.z),perspective:se(y.transformPerspective,m.perspective)},c=y.directionalRotation,null!=c)if("object"==typeof c)for(_ in c)y[_]=c[_];else y.rotation=c;h.rotation=re("rotation"in y?y.rotation:"shortRotation"in y?y.shortRotation+"_short":"rotationZ"in y?y.rotationZ:m.rotation*I,m.rotation,"rotation",T),xe&&(h.rotationX=re("rotationX"in y?y.rotationX:"shortRotationX"in y?y.shortRotationX+"_short":m.rotationX*I||0,m.rotationX,"rotationX",T),h.rotationY=re("rotationY"in y?y.rotationY:"shortRotationY"in y?y.shortRotationY+"_short":m.rotationY*I||0,m.rotationY,"rotationY",T)),h.skewX=null==y.skewX?m.skewX:re(y.skewX,m.skewX),h.skewY=null==y.skewY?m.skewY:re(y.skewY,m.skewY),(l=h.skewY-m.skewY)&&(h.skewX+=l,h.rotation+=l)}for(p=m.z||m.rotationX||m.rotationY||h.z||h.rotationX||h.rotationY||h.perspective,p||null==y.scale||(h.scaleZ=1);--v>-1;)i=ve[v],u=h[i]-m[i],(u>g||-g>u||null!=F[i])&&(f=!0,n=new pe(m,i,m[i],u,n),i in T&&(n.e=T[i]),n.xs0=0,n.plugin=a,s._overwriteProps.push(n.n));return u=y.transformOrigin,(u||xe&&p&&m.zOrigin)&&(ye?(f=!0,u=(u||G(t,i,r,!1,"50% 50%"))+"",i=we,n=new pe(d,i,0,0,n,-1,"css_transformOrigin"),n.b=d[i],n.plugin=a,xe?(_=m.zOrigin,u=u.split(" "),m.zOrigin=(u.length>2?parseFloat(u[2]):_)||0,n.xs0=n.e=d[i]=u[0]+" "+(u[1]||"50%")+" 0px",n=new pe(m,"zOrigin",0,0,n,-1,n.n),n.b=_,n.xs0=n.e=m.zOrigin):n.xs0=n.e=d[i]=u):ee(u+"",m)),f&&(s._transformType=p||3===this._transformType?3:2),n},prefix:!0}),de("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),de("borderRadius",{defaultValue:"0px",parser:function(t,e,i,n,a){e=this.format(e);var o,h,l,_,u,p,f,c,m,d,g,v,y,T,w,x,b=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],P=t.style;for(m=parseFloat(t.offsetWidth),d=parseFloat(t.offsetHeight),o=e.split(" "),h=0;b.length>h;h++)this.p.indexOf("border")&&(b[h]=V(b[h])),u=_=G(t,b[h],r,!1,"0px"),-1!==u.indexOf(" ")&&(_=u.split(" "),u=_[0],_=_[1]),p=l=o[h],f=parseFloat(u),v=u.substr((f+"").length),y="="===p.charAt(1),y?(c=parseInt(p.charAt(0)+"1",10),p=p.substr(2),c*=parseFloat(p),g=p.substr((c+"").length-(0>c?1:0))||""):(c=parseFloat(p),g=p.substr((c+"").length)),""===g&&(g=s[i]||v),g!==v&&(T=$(t,"borderLeft",f,v),w=$(t,"borderTop",f,v),"%"===g?(u=100*(T/m)+"%",_=100*(w/d)+"%"):"em"===g?(x=$(t,"borderLeft",1,"em"),u=T/x+"em",_=w/x+"em"):(u=T+"px",_=w+"px"),y&&(p=parseFloat(u)+c+g,l=parseFloat(_)+c+g)),a=fe(P,b[h],u+" "+_,p+" "+l,!1,"0px",a);return a},prefix:!0,formatter:le("0px 0px 0px 0px",!1,!0)}),de("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,s,n,a){var o,h,l,_,u,p,f="background-position",m=r||Z(t,null),d=this.format((m?c?m.getPropertyValue(f+"-x")+" "+m.getPropertyValue(f+"-y"):m.getPropertyValue(f):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),g=this.format(e);if(-1!==d.indexOf("%")!=(-1!==g.indexOf("%"))&&(p=G(t,"backgroundImage").replace(R,""),p&&"none"!==p)){for(o=d.split(" "),h=g.split(" "),L.setAttribute("src",p),l=2;--l>-1;)d=o[l],_=-1!==d.indexOf("%"),_!==(-1!==h[l].indexOf("%"))&&(u=0===l?t.offsetWidth-L.width:t.offsetHeight-L.height,o[l]=_?parseFloat(d)/100*u+"px":100*(parseFloat(d)/u)+"%");d=o.join(" ")}return this.parseComplex(t.style,d,g,n,a)},formatter:ee}),de("backgroundSize",{defaultValue:"0 0",formatter:ee}),de("perspective",{defaultValue:"0px",prefix:!0}),de("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),de("transformStyle",{prefix:!0}),de("backfaceVisibility",{prefix:!0}),de("margin",{parser:_e("marginTop,marginRight,marginBottom,marginLeft")}),de("padding",{parser:_e("paddingTop,paddingRight,paddingBottom,paddingLeft")}),de("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,s,n,a){var o,h,l;return 9>c?(h=t.currentStyle,l=8>c?" ":",",o="rect("+h.clipTop+l+h.clipRight+l+h.clipBottom+l+h.clipLeft+")",e=this.format(e).split(",").join(l)):(o=this.format(G(t,this.p,r,!1,this.dflt)),e=this.format(e)),this.parseComplex(t.style,o,e,n,a)}}),de("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),de("autoRound,strictUnits",{parser:function(t,e,i,s,r){return r}}),de("border",{defaultValue:"0px solid #000",parser:function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,"borderTopWidth",r,!1,"0px")+" "+G(t,"borderTopStyle",r,!1,"solid")+" "+G(t,"borderTopColor",r,!1,"#000")),this.format(e),n,a)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(he)||["#000"])[0]}}),de("float,cssFloat,styleFloat",{parser:function(t,e,i,s,r){var n=t.style,a="cssFloat"in n?"cssFloat":"styleFloat";return new pe(n,a,0,0,r,-1,i,!1,0,n[a],e)}});var Se=function(t){var e,i=this.t,s=i.filter,r=0|this.s+this.c*t;100===r&&(-1===s.indexOf("atrix(")&&-1===s.indexOf("radient(")?(i.removeAttribute("filter"),e=!G(this.data,"filter")):(i.filter=s.replace(x,""),e=!0)),e||(this.xn1&&(i.filter=s=s||"alpha(opacity=100)"),-1===s.indexOf("opacity")?i.filter+=" alpha(opacity="+r+")":i.filter=s.replace(T,"opacity="+r))};de("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,s,n,a){var o,h=parseFloat(G(t,"opacity",r,!1,"1")),l=t.style;return e=parseFloat(e),"autoAlpha"===i&&(o=G(t,"visibility",r),1===h&&"hidden"===o&&0!==e&&(h=0),n=new pe(l,"visibility",0,0,n,-1,null,!1,0,0!==h?"visible":"hidden",0===e?"hidden":"visible"),n.xs0="visible",s._overwriteProps.push(n.n)),z?n=new pe(l,"opacity",h,e-h,n):(n=new pe(l,"opacity",100*h,100*(e-h),n),n.xn1="autoAlpha"===i?1:0,l.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=a,n.setRatio=Se),n}});var Ae=function(t,e){e&&(t.removeProperty?t.removeProperty(e.replace(P,"-$1").toLowerCase()):t.removeAttribute(e))},Ce=function(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.className=0===t?this.b:this.e;for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Ae(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.className!==this.e&&(this.t.className=this.e)};de("className",{parser:function(t,e,s,n,a,o,h){var l,_,u,p,f,c=t.className,m=t.style.cssText;if(a=n._classNamePT=new pe(t,s,0,0,a,2),a.setRatio=Ce,a.pr=-11,i=!0,a.b=c,_=W(t,r),u=t._gsClassPT){for(p={},f=u.data;f;)p[f.p]=1,f=f._next;u.setRatio(1)}return t._gsClassPT=a,a.e="="!==e.charAt(1)?e:c.replace(RegExp("\\s*\\b"+e.substr(2)+"\\b"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),n._tween._duration&&(t.className=a.e,l=H(t,_,W(t),h,p),t.className=c,a.data=l.firstMPT,t.style.cssText=m,a=a.xfirst=n.parse(t,l.difs,a,o)),a}});var Oe=function(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration)for(var e,i="all"===this.e,s=this.t.style,r=i?s.cssText.split(";"):this.e.split(","),n=r.length,a=o.transform.parse;--n>-1;)e=r[n],i&&(e=e.substr(0,e.indexOf(":")).split(" ").join("")),o[e]&&(e=o[e].parse===a?ye:o[e].p),Ae(s,e)};for(de("clearProps",{parser:function(t,e,s,r,n){return n=new pe(t,s,0,0,n,2),n.setRatio=Oe,n.e=e,n.pr=-10,n.data=r._tween,i=!0,n}}),h="bezier,throwProps,physicsProps,physics2D".split(","),ce=h.length;ce--;)ge(h[ce]);h=a.prototype,h._firstPT=null,h._onInitTween=function(t,e,o){if(!t.nodeType)return!1;this._target=t,this._tween=o,this._vars=e,l=e.autoRound,i=!1,s=e.suffixMap||a.suffixMap,r=Z(t,""),n=this._overwriteProps;var h,p,c,m,d,g,v,y,T,x=t.style;if(_&&""===x.zIndex&&(h=G(t,"zIndex",r),("auto"===h||""===h)&&(x.zIndex=0)),"string"==typeof e&&(m=x.cssText,h=W(t,r),x.cssText=m+";"+e,h=H(t,h,W(t)).difs,!z&&w.test(e)&&(h.opacity=parseFloat(RegExp.$1)),e=h,x.cssText=m),this._firstPT=p=this.parse(t,e,null),this._transformType){for(T=3===this._transformType,ye?u&&(_=!0,""===x.zIndex&&(v=G(t,"zIndex",r),("auto"===v||""===v)&&(x.zIndex=0)),f&&(x.WebkitBackfaceVisibility=this._vars.WebkitBackfaceVisibility||(T?"visible":"hidden"))):x.zoom=1,c=p;c&&c._next;)c=c._next;y=new pe(t,"transform",0,0,null,2),this._linkCSSP(y,null,c),y.setRatio=T&&xe?ke:ye?Re:Pe,y.data=this._transform||be(t,r,!0),n.pop()}if(i){for(;p;){for(g=p._next,c=m;c&&c.pr>p.pr;)c=c._next;(p._prev=c?c._prev:d)?p._prev._next=p:m=p,(p._next=c)?c._prev=p:d=p,p=g}this._firstPT=m}return!0},h.parse=function(t,e,i,n){var a,h,_,u,p,f,c,m,d,g,v=t.style;for(a in e)f=e[a],h=o[a],h?i=h.parse(t,f,a,this,i,n,e):(p=G(t,a,r)+"",d="string"==typeof f,"color"===a||"fill"===a||"stroke"===a||-1!==a.indexOf("Color")||d&&b.test(f)?(d||(f=oe(f),f=(f.length>3?"rgba(":"rgb(")+f.join(",")+")"),i=fe(v,a,p,f,!0,"transparent",i,0,n)):!d||-1===f.indexOf(" ")&&-1===f.indexOf(",")?(_=parseFloat(p),c=_||0===_?p.substr((_+"").length):"",(""===p||"auto"===p)&&("width"===a||"height"===a?(_=te(t,a,r),c="px"):"left"===a||"top"===a?(_=Q(t,a,r),c="px"):(_="opacity"!==a?0:1,c="")),g=d&&"="===f.charAt(1),g?(u=parseInt(f.charAt(0)+"1",10),f=f.substr(2),u*=parseFloat(f),m=f.replace(y,"")):(u=parseFloat(f),m=d?f.substr((u+"").length)||"":""),""===m&&(m=s[a]||c),f=u||0===u?(g?u+_:u)+m:e[a],c!==m&&""!==m&&(u||0===u)&&(_||0===_)&&(_=$(t,a,_,c),"%"===m?(_/=$(t,a,100,"%")/100,_>100&&(_=100),e.strictUnits!==!0&&(p=_+"%")):"em"===m?_/=$(t,a,1,"em"):(u=$(t,a,u,m),m="px"),g&&(u||0===u)&&(f=u+_+m)),g&&(u+=_),!_&&0!==_||!u&&0!==u?void 0!==v[a]&&(f||"NaN"!=f+""&&null!=f)?(i=new pe(v,a,u||_||0,0,i,-1,"css_"+a,!1,0,p,f),i.xs0="none"!==f||"display"!==a&&-1===a.indexOf("Style")?f:p):B("invalid "+a+" tween value: "+e[a]):(i=new pe(v,a,_,u-_,i,0,"css_"+a,l!==!1&&("px"===m||"zIndex"===a),0,p,f),i.xs0=m)):i=fe(v,a,p,f,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},h.setRatio=function(t){var e,i,s,r=this._firstPT,n=1e-6;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;r;){if(e=r.c*t+r.s,r.r?e=e>0?0|e+.5:0|e-.5:n>e&&e>-n&&(e=0),r.type)if(1===r.type)if(s=r.l,2===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2;else if(3===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3;else if(4===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4;else if(5===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4+r.xn4+r.xs5;else{for(i=r.xs0+e+r.xs1,s=1;r.l>s;s++)i+=r["xn"+s]+r["xs"+(s+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},h._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2},h._linkCSSP=function(t,e,i,s){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),i?i._next=t:s||null!==this._firstPT||(this._firstPT=t),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next),t._next=e,t._prev=i),t},h._kill=function(e){var i,s,r,n=e;if(e.css_autoAlpha||e.css_alpha){n={};for(s in e)n[s]=e[s];n.css_opacity=1,n.css_autoAlpha&&(n.css_visibility=1)}return e.css_className&&(i=this._classNamePT)&&(r=i.xfirst,r&&r._prev?this._linkCSSP(r._prev,i._next,r._prev._prev):r===this._firstPT&&(this._firstPT=i._next),i._next&&this._linkCSSP(i._next,i._next._next,r._prev),this._classNamePT=null),t.prototype._kill.call(this,n)};var De=function(t,e,i){var s,r,n,a;if(t.slice)for(r=t.length;--r>-1;)De(t[r],e,i);else for(s=t.childNodes,r=s.length;--r>-1;)n=s[r],a=n.type,n.style&&(e.push(W(n)),i&&i.push(n)),1!==a&&9!==a&&11!==a||!n.childNodes.length||De(n,e,i)};return a.cascadeTo=function(t,i,s){var r,n,a,o=e.to(t,i,s),h=[o],l=[],_=[],u=[],p=e._internals.reservedProps;for(t=o._targets||o.target,De(t,l,u),o.render(i,!0),De(t,_),o.render(0,!0),o._enabled(!0),r=u.length;--r>-1;)if(n=H(u[r],l[r],_[r]),n.firstMPT){n=n.difs;for(a in s)p[a]&&(n[a]=s[a]);h.push(e.to(u[r],i,n))}return h},t.activate([a]),a},!0),function(){var t=window._gsDefine.plugin({propName:"roundProps",priority:-1,API:2,init:function(t,e,i){return this._tween=i,!0}}),e=t.prototype;e._onInitAllProps=function(){for(var t,e,i,s=this._tween,r=s.vars.roundProps instanceof Array?s.vars.roundProps:s.vars.roundProps.split(","),n=r.length,a={},o=s._propLookup.roundProps;--n>-1;)a[r[n]]=1;for(n=r.length;--n>-1;)for(t=r[n],e=s._firstPT;e;)i=e._next,e.pg?e.t._roundProps(a,!0):e.n===t&&(this._add(e.t,t,e.s,e.c),i&&(i._prev=e._prev),e._prev?e._prev._next=i:s._firstPT===e&&(s._firstPT=i),e._next=e._prev=null,s._propLookup[t]=o),e=i;return!1},e._add=function(t,e,i,s){this._addTween(t,e,i,i+s,e,!0),this._overwriteProps.push(e)}}(),window._gsDefine.plugin({propName:"attr",API:2,init:function(t,e){var i;if("function"!=typeof t.setAttribute)return!1;this._target=t,this._proxy={};for(i in e)this._addTween(this._proxy,i,parseFloat(t.getAttribute(i)),e[i],i),this._overwriteProps.push(i);return!0},set:function(t){this._super.setRatio.call(this,t);for(var e,i=this._overwriteProps,s=i.length;--s>-1;)e=i[s],this._target.setAttribute(e,this._proxy[e]+"")}}),window._gsDefine.plugin({propName:"directionalRotation",API:2,init:function(t,e){"object"!=typeof e&&(e={rotation:e}),this.finals={};var i,s,r,n,a,o,h=e.useRadians===!0?2*Math.PI:360,l=1e-6;for(i in e)"useRadians"!==i&&(o=(e[i]+"").split("_"),s=o[0],r=parseFloat("function"!=typeof t[i]?t[i]:t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)]()),n=this.finals[i]="string"==typeof s&&"="===s.charAt(1)?r+parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)):Number(s)||0,a=n-r,o.length&&(s=o.join("_"),-1!==s.indexOf("short")&&(a%=h,a!==a%(h/2)&&(a=0>a?a+h:a-h)),-1!==s.indexOf("_cw")&&0>a?a=(a+9999999999*h)%h-(0|a/h)*h:-1!==s.indexOf("ccw")&&a>0&&(a=(a-9999999999*h)%h-(0|a/h)*h)),(a>l||-l>a)&&(this._addTween(t,i,r,r+a,i),this._overwriteProps.push(i)));return!0},set:function(t){var e;if(1!==t)this._super.setRatio.call(this,t);else for(e=this._firstPT;e;)e.f?e.t[e.p](this.finals[e.p]):e.t[e.p]=this.finals[e.p],e=e._next +}})._autoCSS=!0,window._gsDefine("easing.Back",["easing.Ease"],function(t){var e,i,s,r=window.GreenSockGlobals||window,n=r.com.greensock,a=2*Math.PI,o=Math.PI/2,h=n._class,l=function(e,i){var s=h("easing."+e,function(){},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,s},_=t.register||function(){},u=function(t,e,i,s){var r=h("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return _(r,t),r},p=function(t,e,i){this.t=t,this.v=e,i&&(this.next=i,i.prev=this,this.c=i.v-e,this.gap=i.t-t)},f=function(e,i){var s=h("easing."+e,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,r.config=function(t){return new s(t)},s},c=u("Back",f("BackOut",function(t){return(t-=1)*t*((this._p1+1)*t+this._p1)+1}),f("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),f("BackInOut",function(t){return 1>(t*=2)?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),m=h("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:t>1&&(t=1),this._p=1!==t?e:0,this._p1=(1-t)/2,this._p2=t,this._p3=this._p1+this._p2,this._calcEnd=i===!0},!0),d=m.prototype=new t;return d.constructor=m,d.getRatio=function(t){var e=t+(.5-t)*this._p;return this._p1>t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},m.ease=new m(.7,.7),d.config=m.config=function(t,e,i){return new m(t,e,i)},e=h("easing.SteppedEase",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0),d=e.prototype=new t,d.constructor=e,d.getRatio=function(t){return 0>t?t=0:t>=1&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=e.config=function(t){return new e(t)},i=h("easing.RoughEase",function(e){e=e||{};for(var i,s,r,n,a,o,h=e.taper||"none",l=[],_=0,u=0|(e.points||20),f=u,c=e.randomize!==!1,m=e.clamp===!0,d=e.template instanceof t?e.template:null,g="number"==typeof e.strength?.4*e.strength:.4;--f>-1;)i=c?Math.random():1/u*f,s=d?d.getRatio(i):i,"none"===h?r=g:"out"===h?(n=1-i,r=n*n*g):"in"===h?r=i*i*g:.5>i?(n=2*i,r=.5*n*n*g):(n=2*(1-i),r=.5*n*n*g),c?s+=Math.random()*r-.5*r:f%2?s+=.5*r:s-=.5*r,m&&(s>1?s=1:0>s&&(s=0)),l[_++]={x:i,y:s};for(l.sort(function(t,e){return t.x-e.x}),o=new p(1,1,null),f=u;--f>-1;)a=l[f],o=new p(a.x,a.y,o);this._prev=new p(0,0,0!==o.t?o:o.next)},!0),d=i.prototype=new t,d.constructor=i,d.getRatio=function(t){var e=this._prev;if(t>e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return this._prev=e,e.v+(t-e.t)/e.gap*e.c},d.config=function(t){return new i(t)},i.ease=new i,u("Bounce",l("BounceOut",function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),l("BounceIn",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:2/2.75>t?1-(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),l("BounceInOut",function(t){var e=.5>t;return t=e?1-2*t:2*t-1,t=1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),u("Circ",l("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),l("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),l("CircInOut",function(t){return 1>(t*=2)?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),s=function(e,i,s){var r=h("easing."+e,function(t,e){this._p1=t||1,this._p2=e||s,this._p3=this._p2/a*(Math.asin(1/this._p1)||0)},!0),n=r.prototype=new t;return n.constructor=r,n.getRatio=i,n.config=function(t,e){return new r(t,e)},r},u("Elastic",s("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*a/this._p2)+1},.3),s("ElasticIn",function(t){return-(this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2))},.3),s("ElasticInOut",function(t){return 1>(t*=2)?-.5*this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2):.5*this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*a/this._p2)+1},.45)),u("Expo",l("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),l("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),l("ExpoInOut",function(t){return 1>(t*=2)?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),u("Sine",l("SineOut",function(t){return Math.sin(t*o)}),l("SineIn",function(t){return-Math.cos(t*o)+1}),l("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),h("easing.EaseLookup",{find:function(e){return t.map[e]}},!0),_(r.SlowMo,"SlowMo","ease,"),_(i,"RoughEase","ease,"),_(e,"SteppedEase","ease,"),c},!0)}),function(t){"use strict";var e,i,s,r,n,a=t.GreenSockGlobals||t,o=function(t){var e,i=t.split("."),s=a;for(e=0;i.length>e;e++)s[i[e]]=s=s[i[e]]||{};return s},h=o("com.greensock"),l=[].slice,_=function(){},u={},p=function(e,i,s,r){this.sc=u[e]?u[e].sc:[],u[e]=this,this.gsClass=null,this.func=s;var n=[];this.check=function(h){for(var l,_,f,c,m=i.length,d=m;--m>-1;)(l=u[i[m]]||new p(i[m],[])).gsClass?(n[m]=l.gsClass,d--):h&&l.sc.push(this);if(0===d&&s)for(_=("com.greensock."+e).split("."),f=_.pop(),c=o(_.join("."))[f]=this.gsClass=s.apply(s,n),r&&(a[f]=c,"function"==typeof define&&define.amd?define((t.GreenSockAMDPath?t.GreenSockAMDPath+"/":"")+e.split(".").join("/"),[],function(){return c}):"undefined"!=typeof module&&module.exports&&(module.exports=c)),m=0;this.sc.length>m;m++)this.sc[m].check()},this.check(!0)},f=t._gsDefine=function(t,e,i,s){return new p(t,e,i,s)},c=h._class=function(t,e,i){return e=e||function(){},f(t,[],function(){return e},i),e};f.globals=a;var m=[0,0,1,1],d=[],g=c("easing.Ease",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?m.concat(e):m},!0),v=g.map={},y=g.register=function(t,e,i,s){for(var r,n,a,o,l=e.split(","),_=l.length,u=(i||"easeIn,easeOut,easeInOut").split(",");--_>-1;)for(n=l[_],r=s?c("easing."+n,null,!0):h.easing[n]||{},a=u.length;--a>-1;)o=u[a],v[n+"."+o]=v[o+n]=r[o]=t.getRatio?t:t[o]||new t};for(s=g.prototype,s._calcEnd=!1,s.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:.5>t?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:.5>t?s/2:1-s/2},e=["Linear","Quad","Cubic","Quart","Quint,Strong"],i=e.length;--i>-1;)s=e[i]+",Power"+i,y(new g(null,null,1,i),s,"easeOut",!0),y(new g(null,null,2,i),s,"easeIn"+(0===i?",easeNone":"")),y(new g(null,null,3,i),s,"easeInOut");v.linear=h.easing.Linear.easeIn,v.swing=h.easing.Quad.easeInOut;var T=c("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});s=T.prototype,s.addEventListener=function(t,e,i,s,a){a=a||0;var o,h,l=this._listeners[t],_=0;for(null==l&&(this._listeners[t]=l=[]),h=l.length;--h>-1;)o=l[h],o.c===e&&o.s===i?l.splice(h,1):0===_&&a>o.pr&&(_=h+1);l.splice(_,0,{c:e,s:i,up:s,pr:a}),this!==r||n||r.wake()},s.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;--i>-1;)if(s[i].c===e)return s.splice(i,1),void 0},s.dispatchEvent=function(t){var e,i,s,r=this._listeners[t];if(r)for(e=r.length,i=this._eventTarget;--e>-1;)s=r[e],s.up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i)};var w=t.requestAnimationFrame,x=t.cancelAnimationFrame,b=Date.now||function(){return(new Date).getTime()};for(e=["ms","moz","webkit","o"],i=e.length;--i>-1&&!w;)w=t[e[i]+"RequestAnimationFrame"],x=t[e[i]+"CancelAnimationFrame"]||t[e[i]+"CancelRequestAnimationFrame"];c("Ticker",function(t,e){var i,s,a,o,h,l=this,u=b(),p=e!==!1&&w,f=function(t){l.time=(b()-u)/1e3;var e=a,r=l.time-h;(!i||r>0||t===!0)&&(l.frame++,h+=r+(r>=o?.004:o-r),l.dispatchEvent("tick")),t!==!0&&e===a&&(a=s(f))};T.call(l),this.time=this.frame=0,this.tick=function(){f(!0)},this.sleep=function(){null!=a&&(p&&x?x(a):clearTimeout(a),s=_,a=null,l===r&&(n=!1))},this.wake=function(){null!==a&&l.sleep(),s=0===i?_:p&&w?w:function(t){return setTimeout(t,0|1e3*(h-l.time)+1)},l===r&&(n=!0),f(2)},this.fps=function(t){return arguments.length?(i=t,o=1/(i||60),h=this.time+o,l.wake(),void 0):i},this.useRAF=function(t){return arguments.length?(l.sleep(),p=t,l.fps(i),void 0):p},l.fps(t),setTimeout(function(){p&&(!a||5>l.frame)&&l.useRAF(!1)},1500)}),s=h.Ticker.prototype=new h.events.EventDispatcher,s.constructor=h.Ticker;var P=c("core.Animation",function(t,e){if(this.vars=e||{},this._duration=this._totalDuration=t||0,this._delay=Number(this.vars.delay)||0,this._timeScale=1,this._active=this.vars.immediateRender===!0,this.data=this.vars.data,this._reversed=this.vars.reversed===!0,N){n||r.wake();var i=this.vars.useFrames?E:N;i.add(this,i._time),this.vars.paused&&this.paused(!0)}});r=P.ticker=new h.Ticker,s=P.prototype,s._dirty=s._gc=s._initted=s._paused=!1,s._totalTime=s._time=0,s._rawPrevTime=-1,s._next=s._last=s._onUpdate=s._timeline=s.timeline=null,s._paused=!1,s.play=function(t,e){return arguments.length&&this.seek(t,e),this.reversed(!1).paused(!1)},s.pause=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!0)},s.resume=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!1)},s.seek=function(t,e){return this.totalTime(Number(t),e!==!1)},s.restart=function(t,e){return this.reversed(!1).paused(!1).totalTime(t?-this._delay:0,e!==!1,!0)},s.reverse=function(t,e){return arguments.length&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},s.render=function(){},s.invalidate=function(){return this},s._enabled=function(t,e){return n||r.wake(),this._gc=!t,this._active=t&&!this._paused&&this._totalTime>0&&this._totalTime-1;)"{self}"===i[r]&&(i=n[t+"Params"]=i.concat(),i[r]=this);"onUpdate"===t&&(this._onUpdate=e)}return this},s.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},s.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:t,e)):this._time},s.totalTime=function(t,e,i){if(n||r.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>t&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,a=this._timeline;if(t>s&&!i&&(t=s),this._startTime=(this._paused?this._pauseTime:a._time)-(this._reversed?s-t:t)/this._timeScale,a._dirty||this._uncache(!1),!a._active)for(;a._timeline;)a.totalTime(a._totalTime,!0),a=a._timeline}this._gc&&this._enabled(!0,!1),this._totalTime!==t&&this.render(t,e,!1)}return this},s.startTime=function(t){return arguments.length?(t!==this._startTime&&(this._startTime=t,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,t-this._delay)),this):this._startTime},s.timeScale=function(t){if(!arguments.length)return this._timeScale;if(t=t||1e-6,this._timeline&&this._timeline.smoothChildTiming){var e=this._pauseTime,i=e||0===e?e:this._timeline.totalTime();this._startTime=i-(i-this._startTime)*this._timeScale/t}return this._timeScale=t,this._uncache(!1)},s.reversed=function(t){return arguments.length?(t!=this._reversed&&(this._reversed=t,this.totalTime(this._totalTime,!0)),this):this._reversed},s.paused=function(t){if(!arguments.length)return this._paused;if(t!=this._paused&&this._timeline){n||t||r.wake();var e=this._timeline.rawTime(),i=e-this._pauseTime;!t&&this._timeline.smoothChildTiming&&(this._startTime+=i,this._uncache(!1)),this._pauseTime=t?e:null,this._paused=t,this._active=!t&&this._totalTime>0&&this._totalTimes;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},s._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline&&this._uncache(!0)),this},s.render=function(t,e,i){var s,r=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;r;)s=r._next,(r._active||t>=r._startTime&&!r._paused)&&(r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=s},s.rawTime=function(){return n||r.wake(),this._totalTime};var R=c("TweenLite",function(t,e,i){if(P.call(this,e,i),null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:R.selector(t)||t;var s,r,n,a=t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style,o=this.vars.overwrite;if(this._overwrite=o=null==o?F[R.defaultOverwrite]:"number"==typeof o?o>>0:F[o],(a||t instanceof Array)&&"number"!=typeof t[0])for(this._targets=n=l.call(t,0),this._propLookup=[],this._siblings=[],s=0;n.length>s;s++)r=n[s],r?"string"!=typeof r?r.length&&r[0]&&r[0].nodeType&&r[0].style?(n.splice(s--,1),this._targets=n=n.concat(l.call(r,0))):(this._siblings[s]=L(r,this,!1),1===o&&this._siblings[s].length>1&&X(r,this,null,1,this._siblings[s])):(r=n[s--]=R.selector(r),"string"==typeof r&&n.splice(s+1,1)):n.splice(s--,1);else this._propLookup={},this._siblings=L(t,this,!1),1===o&&this._siblings.length>1&&X(t,this,null,1,this._siblings);(this.vars.immediateRender||0===e&&0===this._delay&&this.vars.immediateRender!==!1)&&this.render(-this._delay,!1,!0)},!0),S=function(t){return t.length&&t[0]&&t[0].nodeType&&t[0].style},A=function(t,e){var i,s={};for(i in t)I[i]||i in e&&"x"!==i&&"y"!==i&&"width"!==i&&"height"!==i&&"className"!==i||!(!O[i]||O[i]&&O[i]._autoCSS)||(s[i]=t[i],delete t[i]);t.css=s};s=R.prototype=new P,s.constructor=R,s.kill()._gc=!1,s.ratio=0,s._firstPT=s._targets=s._overwrittenProps=s._startAt=null,s._notifyPluginsOfEnabled=!1,R.version="1.9.7",R.defaultEase=s._ease=new g(null,null,1,1),R.defaultOverwrite="auto",R.ticker=r,R.autoSleep=!0,R.selector=t.$||t.jQuery||function(e){return t.$?(R.selector=t.$,t.$(e)):t.document?t.document.getElementById("#"===e.charAt(0)?e.substr(1):e):e};var C=R._internals={},O=R._plugins={},D=R._tweenLookup={},M=0,I=C.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1},F={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},E=P._rootFramesTimeline=new k,N=P._rootTimeline=new k;N._startTime=r.time,E._startTime=r.frame,N._active=E._active=!0,P._updateRoot=function(){if(N.render((r.time-N._startTime)*N._timeScale,!1,!1),E.render((r.frame-E._startTime)*E._timeScale,!1,!1),!(r.frame%120)){var t,e,i;for(i in D){for(e=D[i].tweens,t=e.length;--t>-1;)e[t]._gc&&e.splice(t,1);0===e.length&&delete D[i]}if(i=N._first,(!i||i._paused)&&R.autoSleep&&!E._first&&1===r._listeners.tick.length){for(;i&&i._paused;)i=i._next;i||r.sleep()}}},r.addEventListener("tick",P._updateRoot);var L=function(t,e,i){var s,r,n=t._gsTweenID;if(D[n||(t._gsTweenID=n="t"+M++)]||(D[n]={target:t,tweens:[]}),e&&(s=D[n].tweens,s[r=s.length]=e,i))for(;--r>-1;)s[r]===e&&s.splice(r,1);return D[n].tweens},X=function(t,e,i,s,r){var n,a,o,h;if(1===s||s>=4){for(h=r.length,n=0;h>n;n++)if((o=r[n])!==e)o._gc||o._enabled(!1,!1)&&(a=!0);else if(5===s)break;return a}var l,_=e._startTime+1e-10,u=[],p=0,f=0===e._duration;for(n=r.length;--n>-1;)(o=r[n])===e||o._gc||o._paused||(o._timeline!==e._timeline?(l=l||U(e,0,f),0===U(o,l,f)&&(u[p++]=o)):_>=o._startTime&&o._startTime+o.totalDuration()/o._timeScale+1e-10>_&&((f||!o._initted)&&2e-10>=_-o._startTime||(u[p++]=o)));for(n=p;--n>-1;)o=u[n],2===s&&o._kill(i,t)&&(a=!0),(2!==s||!o._firstPT&&o._initted)&&o._enabled(!1,!1)&&(a=!0);return a},U=function(t,e,i){for(var s=t._timeline,r=s._timeScale,n=t._startTime,a=1e-10;s._timeline;){if(n+=s._startTime,r*=s._timeScale,s._paused)return-100;s=s._timeline}return n/=r,n>e?n-e:i&&n===e||!t._initted&&2*a>n-e?a:(n+=t.totalDuration()/t._timeScale/r)>e+a?0:n-e-a};s._init=function(){var t,e,i,s,r=this.vars,n=this._overwrittenProps,a=this._duration,o=r.ease;if(r.startAt){if(r.startAt.overwrite=0,r.startAt.immediateRender=!0,this._startAt=R.to(this.target,0,r.startAt),r.immediateRender&&(this._startAt=null,0===this._time&&0!==a))return}else if(r.runBackwards&&r.immediateRender&&0!==a)if(this._startAt)this._startAt.render(-1,!0),this._startAt=null;else if(0===this._time){i={};for(s in r)I[s]&&"autoCSS"!==s||(i[s]=r[s]);return i.overwrite=0,this._startAt=R.to(this.target,0,i),void 0}if(this._ease=o?o instanceof g?r.easeParams instanceof Array?o.config.apply(o,r.easeParams):o:"function"==typeof o?new g(o,r.easeParams):v[o]||R.defaultEase:R.defaultEase,this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(t=this._targets.length;--t>-1;)this._initProps(this._targets[t],this._propLookup[t]={},this._siblings[t],n?n[t]:null)&&(e=!0);else e=this._initProps(this.target,this._propLookup,this._siblings,n);if(e&&R._onPluginEvent("_onInitAllProps",this),n&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),r.runBackwards)for(i=this._firstPT;i;)i.s+=i.c,i.c=-i.c,i=i._next;this._onUpdate=r.onUpdate,this._initted=!0},s._initProps=function(t,e,i,s){var r,n,a,o,h,l,_;if(null==t)return!1;this.vars.css||t.style&&t.nodeType&&O.css&&this.vars.autoCSS!==!1&&A(this.vars,t);for(r in this.vars){if(I[r]){if(("onStartParams"===r||"onUpdateParams"===r||"onCompleteParams"===r||"onReverseCompleteParams"===r||"onRepeatParams"===r)&&(h=this.vars[r]))for(n=h.length;--n>-1;)"{self}"===h[n]&&(h=this.vars[r]=h.concat(),h[n]=this)}else if(O[r]&&(o=new O[r])._onInitTween(t,this.vars[r],this)){for(this._firstPT=l={_next:this._firstPT,t:o,p:"setRatio",s:0,c:1,f:!0,n:r,pg:!0,pr:o._priority},n=o._overwriteProps.length;--n>-1;)e[o._overwriteProps[n]]=this._firstPT;(o._priority||o._onInitAllProps)&&(a=!0),(o._onDisable||o._onEnable)&&(this._notifyPluginsOfEnabled=!0)}else this._firstPT=e[r]=l={_next:this._firstPT,t:t,p:r,f:"function"==typeof t[r],n:r,pg:!1,pr:0},l.s=l.f?t[r.indexOf("set")||"function"!=typeof t["get"+r.substr(3)]?r:"get"+r.substr(3)]():parseFloat(t[r]),_=this.vars[r],l.c="string"==typeof _&&"="===_.charAt(1)?parseInt(_.charAt(0)+"1",10)*Number(_.substr(2)):Number(_)-l.s||0;l&&l._next&&(l._next._prev=l)}return s&&this._kill(s,t)?this._initProps(t,e,i,s):this._overwrite>1&&this._firstPT&&i.length>1&&X(t,this,e,this._overwrite,i)?(this._kill(e,t),this._initProps(t,e,i,s)):a},s.render=function(t,e,i){var s,r,n,a=this._time;if(t>=this._duration)this._totalTime=this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t);else if(1e-7>t)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==a||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0);else if(this._totalTime=this._time=t,this._easeType){var o=t/this._duration,h=this._easeType,l=this._easePower;(1===h||3===h&&o>=.5)&&(o=1-o),3===h&&(o*=2),1===l?o*=o:2===l?o*=o*o:3===l?o*=o*o*o:4===l&&(o*=o*o*o*o),this.ratio=1===h?1-o:2===h?o:.5>t/this._duration?o/2:1-o/2}else this.ratio=this._ease.getRatio(t/this._duration);if(this._time!==a||i){if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===a&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._time||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||d))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||d)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||d)))}},s._kill=function(t,e){if("all"===t&&(t=null),null==t&&(null==e||e===this.target))return this._enabled(!1,!1);e="string"!=typeof e?e||this._targets||this.target:R.selector(e)||e;var i,s,r,n,a,o,h,l;if((e instanceof Array||S(e))&&"number"!=typeof e[0])for(i=e.length;--i>-1;)this._kill(t,e[i])&&(o=!0);else{if(this._targets){for(i=this._targets.length;--i>-1;)if(e===this._targets[i]){a=this._propLookup[i]||{},this._overwrittenProps=this._overwrittenProps||[],s=this._overwrittenProps[i]=t?this._overwrittenProps[i]||{}:"all";break}}else{if(e!==this.target)return!1;a=this._propLookup,s=this._overwrittenProps=t?this._overwrittenProps||{}:"all"}if(a){h=t||a,l=t!==s&&"all"!==s&&t!==a&&(null==t||t._tempKill!==!0);for(r in h)(n=a[r])&&(n.pg&&n.t._kill(h)&&(o=!0),n.pg&&0!==n.t._overwriteProps.length||(n._prev?n._prev._next=n._next:n===this._firstPT&&(this._firstPT=n._next),n._next&&(n._next._prev=n._prev),n._next=n._prev=null),delete a[r]),l&&(s[r]=1);!this._firstPT&&this._initted&&this._enabled(!1,!1)}}return o},s.invalidate=function(){return this._notifyPluginsOfEnabled&&R._onPluginEvent("_onDisable",this),this._firstPT=null,this._overwrittenProps=null,this._onUpdate=null,this._startAt=null,this._initted=this._active=this._notifyPluginsOfEnabled=!1,this._propLookup=this._targets?{}:[],this},s._enabled=function(t,e){if(n||r.wake(),t&&this._gc){var i,s=this._targets;if(s)for(i=s.length;--i>-1;)this._siblings[i]=L(s[i],this,!0);else this._siblings=L(this.target,this,!0)}return P.prototype._enabled.call(this,t,e),this._notifyPluginsOfEnabled&&this._firstPT?R._onPluginEvent(t?"_onEnable":"_onDisable",this):!1},R.to=function(t,e,i){return new R(t,e,i)},R.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new R(t,e,i)},R.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new R(t,e,s)},R.delayedCall=function(t,e,i,s,r){return new R(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:r,overwrite:0})},R.set=function(t,e){return new R(t,0,e)},R.killTweensOf=R.killDelayedCallsTo=function(t,e){for(var i=R.getTweensOf(t),s=i.length;--s>-1;)i[s]._kill(e,t)},R.getTweensOf=function(t){if(null==t)return[];t="string"!=typeof t?t:R.selector(t)||t;var e,i,s,r;if((t instanceof Array||S(t))&&"number"!=typeof t[0]){for(e=t.length,i=[];--e>-1;)i=i.concat(R.getTweensOf(t[e]));for(e=i.length;--e>-1;)for(r=i[e],s=e;--s>-1;)r===i[s]&&i.splice(e,1)}else for(i=L(t).concat(),e=i.length;--e>-1;)i[e]._gc&&i.splice(e,1);return i};var z=c("plugins.TweenPlugin",function(t,e){this._overwriteProps=(t||"").split(","),this._propName=this._overwriteProps[0],this._priority=e||0,this._super=z.prototype},!0);if(s=z.prototype,z.version="1.9.1",z.API=2,s._firstPT=null,s._addTween=function(t,e,i,s,r,n){var a,o;null!=s&&(a="number"==typeof s||"="!==s.charAt(1)?Number(s)-i:parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)))&&(this._firstPT=o={_next:this._firstPT,t:t,p:e,s:i,c:a,f:"function"==typeof t[e],n:r||e,r:n},o._next&&(o._next._prev=o))},s.setRatio=function(t){for(var e,i=this._firstPT,s=1e-6;i;)e=i.c*t+i.s,i.r?e=e+(e>0?.5:-.5)>>0:s>e&&e>-s&&(e=0),i.f?i.t[i.p](e):i.t[i.p]=e,i=i._next},s._kill=function(t){var e,i=this._overwriteProps,s=this._firstPT;if(null!=t[this._propName])this._overwriteProps=[];else for(e=i.length;--e>-1;)null!=t[i[e]]&&i.splice(e,1);for(;s;)null!=t[s.n]&&(s._next&&(s._next._prev=s._prev),s._prev?(s._prev._next=s._next,s._prev=null):this._firstPT===s&&(this._firstPT=s._next)),s=s._next;return!1},s._roundProps=function(t,e){for(var i=this._firstPT;i;)(t[this._propName]||null!=i.n&&t[i.n.split(this._propName+"_").join("")])&&(i.r=e),i=i._next},R._onPluginEvent=function(t,e){var i,s,r,n,a,o=e._firstPT;if("_onInitAllProps"===t){for(;o;){for(a=o._next,s=r;s&&s.pr>o.pr;)s=s._next;(o._prev=s?s._prev:n)?o._prev._next=o:r=o,(o._next=s)?s._prev=o:n=o,o=a}o=e._firstPT=r}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},z.activate=function(t){for(var e=t.length;--e>-1;)t[e].API===z.API&&(O[(new t[e])._propName]=t[e]);return!0},f.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,s=t.priority||0,r=t.overwriteProps,n={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_roundProps",initAll:"_onInitAllProps"},a=c("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){z.call(this,i,s),this._overwriteProps=r||[]},t.global===!0),o=a.prototype=new z(i);o.constructor=a,a.API=t.API;for(e in n)"function"==typeof t[e]&&(o[n[e]]=t[e]);return a.version=t.version,z.activate([a]),a},e=t._gsQueue){for(i=0;e.length>i;i++)e[i]();for(s in u)u[s].func||t.console.log("GSAP encountered missing dependency: com.greensock."+s)}n=!1}(window); \ No newline at end of file diff --git a/js/landing/main.js b/js/landing/main.js new file mode 100644 index 0000000..8f8ad36 --- /dev/null +++ b/js/landing/main.js @@ -0,0 +1,132 @@ +(function(){ + + var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds + var deadline = new Date(2013,05,25); + var today = new Date(); + var diffDays = Math.round(Math.abs((deadline.getTime() - today.getTime())/(oneDay))); + + function selectText(element) { + var doc = document; + var text = doc.getElementById(element); + + if (doc.body.createTextRange) { // ms + var range = doc.body.createTextRange(); + range.moveToElementText(text); + range.select(); + } else if (window.getSelection) { // moz, opera, webkit + var selection = window.getSelection(); + var range = doc.createRange(); + range.selectNodeContents(text); + selection.removeAllRanges(); + selection.addRange(range); + } + } + + $(window).ready(function(){ + diffDays += 1; + $('h3').text("J-"+diffDays); + var posit = -150/(6/diffDays)-120; + posit =Math.max(-350, Math.min(posit, -150)); + TweenLite.to($('.jauge-barre'), 1, {marginLeft:posit, delay:1}); + var shareOpened = false; + var pictsContainer = $('.share-pictos-container'); + var picts = $('.share-pictos'); + var arrow = $('.share-pics img'); + var url = "http://wearedata.watchdogs.com/"; + TweenLite.to(picts, 0, {autoAlpha:1, marginTop:150}); + + $('.share-inline').bind('click', function(event) {event.preventDefault();}); + $('.share-inline').on("mouseover touchstart", openShare); + $('.share-pictos a').on("mouseover", onOverPicto); + $('.share-pictos a').on("mouseout", onOutPicto); + $('.share-pictos a').on("click touchstart", onClickPicto); + $('.share-link-close').on("click touchstart", onCloseLinkPopin); + $('.link-copy-field').on("click touchstart", onCopyLink); + $('.link-copy-btn').on("click touchstart", onCopyLink); + $('.footer-left a').on("mouseover", onOverFooterBtn); + $('.footer-right a').on("mouseover", onOverFooterBtn); + $('.footer-right a').on("mouseout", onOutFooterBtn); + $('.footer-left a').on("mouseout", onOutFooterBtn); + + pictsContainer.on("mouseenter", openShare); + $('.share-inline').add(pictsContainer).on("mouseleave", closeShare); + + function onOverFooterBtn(e){ + TweenLite.to($(this), 0.2, {color:"#cccccc"}); + } + + function onOutFooterBtn(e){ + TweenLite.to($(this), 0.2, {color:"#505050"}); + } + + function onCopyLink(e){ + e.preventDefault(); + selectText('copy-field'); + } + + function onCloseLinkPopin(e){ + e.preventDefault(); + TweenLite.to($('#share-link'), 0.2, {autoAlpha:0}); + } + + function onClickPicto(e){ + e.preventDefault(); + var service = $(this).attr('data-link'); + var urlShare = ""; + var description = "Have you ever experienced the power of data ? Be prepared for Watch_Dogs WeareData."; + + if(service == "gplus"){ + urlShare = "https://plus.google.com/share?url="+encodeURIComponent(url); + window.open(urlShare,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600'); + }else if(service == "fb"){ + urlShare = "https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(url); + window.open(urlShare,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600'); + }else if(service =="twitter"){ + urlShare = "https://twitter.com/intent/tweet?text="; + urlShare+= encodeURIComponent(description)+" "+url; + window.open(urlShare,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=290,width=600'); + }else if(service == "link"){ + TweenLite.to($('#share-link'), 0.3, {autoAlpha:1}); + } + + } + + function onOverPicto(e){ + TweenLite.to($(this), 0.2, {alpha:0.5}); + } + + function onOutPicto(e){ + TweenLite.to($(this), 0.35, {alpha:1}); + } + + function closeShare(){ + if(!shareOpened) return; + $('body').off("mousedown touchstart", closeShare); + TweenLite.to(picts, 0.2, {marginTop:150, ease:Circ.easeInOut, onComplete: function(){ + pictsContainer.hide(); + }}); + TweenLite.to(arrow, 0.4, {rotation:0, ease:Circ.easeOut}); + shareOpened = false; + } + + function openShare(e){ + if(shareOpened) return; + shareOpened = true; + TweenLite.killTweensOf(picts); + pictsContainer.show(); + $('body').on("mousedown touchstart", closeShare); + TweenLite.to(picts, 0.2, {marginTop:0, ease:Circ.easeOut}); + TweenLite.to(arrow, 0.6, {rotation:180, ease:Circ.easeOut}); + } + }); + + window.__landing = { + show: function(){ + $('html').addClass('is-landing'); + }, + hide: function(){ + $('html').removeClass('is-landing'); + } + }; + +}()); diff --git a/js/tracking.js b/js/tracking.js new file mode 100644 index 0000000..c66ac46 --- /dev/null +++ b/js/tracking.js @@ -0,0 +1,29 @@ +/** + +pushPageview('page'); + +*/ + +function pushPageview(pageGA){ + //_gaq.push(['_trackPageview',pageGA]); + tc_events_2(this,'page',{'URL':pageGA}); +} + + +/** + +pushEvent( "'london', 'networks', 'mobile', 0" ); + +*/ + +function pushEvent(param) +{ + + var array = param.split( ',' ); + //_gaq.push(['_trackEvent', array[ 0 ], array[ 1 ], array[ 2 ], parseInt( array[ 3 ] ) ] ); + tc_events_2(this,'event',{'city':array[ 0 ],'category': array[ 1 ],'data_type':array[ 2 ],'entier':parseInt( array[ 3 ] )}); + +} + + + diff --git a/landing.swf b/landing.swf new file mode 100644 index 0000000..ee43c7a Binary files /dev/null and b/landing.swf differ diff --git a/mobile/cdn_assets/audios/BOUCLE_AMBIANCE_HOME.mp3 b/mobile/cdn_assets/audios/BOUCLE_AMBIANCE_HOME.mp3 new file mode 100644 index 0000000..72bd3e6 Binary files /dev/null and b/mobile/cdn_assets/audios/BOUCLE_AMBIANCE_HOME.mp3 differ diff --git a/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_APPARITION_V1.mp3 b/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_APPARITION_V1.mp3 new file mode 100644 index 0000000..54b1837 Binary files /dev/null and b/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_APPARITION_V1.mp3 differ diff --git a/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_DISPARITION_V2.mp3 b/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_DISPARITION_V2.mp3 new file mode 100644 index 0000000..26f84cf Binary files /dev/null and b/mobile/cdn_assets/audios/PAGE_HOME_ROLLOVER_VILLE_DISPARITION_V2.mp3 differ diff --git a/mobile/css/master.css b/mobile/css/master.css new file mode 100644 index 0000000..32eeeab --- /dev/null +++ b/mobile/css/master.css @@ -0,0 +1 @@ +html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed,figure, figcaption, footer, header, hgroup,menu, nav, output, ruby, section, summary,time, mark, audio, video {margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline;}article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;}body {line-height: 1;}ol, ul {list-style: none;}blockquote, q {quotes: none;}blockquote:before, blockquote:after,q:before, q:after {content: ''; content: none;}table {border-collapse: collapse; border-spacing: 0;}@font-face {}.bss-vcenter {overflow: hidden; *position: relative; display: table; *display: block;}.bss-vcenter .bss-outer {display: table-cell; vertical-align: middle; width: 100%; *position: absolute; *top: 50%;}.bss-vcenter .bss-inner {*position: relative; *top: -50%;}.bss-hcenter {margin-left: auto !important; margin-right: auto !important;}.bss-absmid {position: absolute !important; top: 50% !important; left: 50% !important;}html,button,input,select,textarea {font-family: "Helvertica Neue", Helvetica, Arial, sans-serif; color: #222;}html, body {width: 100%; height: 100%;}body {width: 100%; height: 100%; padding-bottom: 200px; background-color: #000; color: #fff;}html.is-landing body {padding-bottom: 0;}a::selection, p::selection, div::selection, h1::selection, h2::selection, h3::selection, h4::selection, img::selection {background-color: transparent;}a::-moz-selection, p::-moz-selection, div::-moz-selection, h1::-moz-selection, h2::-moz-selection, h3::-moz-selection, h4::-moz-selection, img::-moz-selection {background-color: transparent;}#app {position: relative; width: 100%; height: 100%; overflow: hidden;}#wrapper {position: absolute; width: 100%; height: 100%; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); -webkit-transition: -webkit-transform 0.4s ease-in-out ; -moz-transition: -moz-transform 0.4s ease-in-out ; -ms-transition: -ms-transform 0.4s ease-in-out ; -o-transition: -o-transform 0.4s ease-in-out ; transition: transform 0.4s ease-in-out ;}html.no-csstransforms #app.show-menu #wrapper {margin-left: 255px; margin-top: 0;}html.csstransforms #app.show-menu #wrapper {-webkit-transform: translate(255px, 0); -moz-transform: translate(255px, 0); -ms-transform: translate(255px, 0); -o-transform: translate(255px, 0); transform: translate(255px, 0);}html.csstransforms3d #app.show-menu #wrapper {-webkit-transform: translate3d(255px, 0, 0); -moz-transform: translate3d(255px, 0, 0); -ms-transform: translate3d(255px, 0, 0); -o-transform: translate3d(255px, 0, 0); transform: translate3d(255px, 0, 0);}.simple-hover {cursor: pointer;}.simple-hover.selected {cursor: default;}#preloader {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1000; opacity: 0; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); background-color: #000;}#preloader .logo {position: absolute; left: 50%; top: 50%; width: 282px; height: 79px; margin-left: -141px; margin-top: -85px; background-image: url(../images/common/sections/home/logo_mobile_x2.png); background-size: 282px 79px; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}#preloader .bar-container {position: absolute; left: 50%; top: 50%; width: 195px; height: 10px; border: 1px solid #404040; margin-left: -96px; margin-top: 30px;}#preloader .bar-wrapper {position: absolute; width: 193px; height: 8px; border: 1px solid black; background-image: url(../images/common/preloader.gif); background-size: 8px 16px; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}#preloader .bar {position: absolute; width: 0%; height: 8px; background-image: url(../images/common/preloader.gif); background-size: 8px 16px; background-position: 0 -8px; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}#header {display: none; position: absolute; width: 100%; height: 40px; z-index: 500; top: -40px; -webkit-transition: top 0.3s ease-in-out; -moz-transition: top 0.3s ease-in-out; -ms-transition: top 0.3s ease-in-out; -o-transition: top 0.3s ease-in-out; transition: top 0.3s ease-in-out; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); background-image: url(../images/common/w1.png); background-position: 0 -30px; background-repeat: repeat-x;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#header {background-image: url(../images/common/w1_x2.png); background-size: 1px 800px;}}#header.show {top: 0;}#header .menu-btn {position: absolute; left: 11px; top: 8px; width: 44px; height: 24px; background-image: url(../images/common/ui.png); background-position: -0px -0px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#header .menu-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#app.show-menu #header .menu-btn {background-position: 0 -40px;}#header .logo {position: absolute; left: 50%; top: 50%; width: 66px; height: 19px; margin-left: -33px; margin-top: -8px; background-image: url(../images/common/ui.png); background-position: -275px -60px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#header .logo {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#header .signal-btn {position: absolute; right: 11px; top: 8px; width: 44px; height: 24px; background-image: url(../images/common/ui.png); background-position: -60px -0px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#header .signal-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#app.new-action #header .signal-btn {background-position: -60px -40px;}#data-menu {position: absolute; left: -255px; top: 0; width: 255px; height: 100%; -webkit-transform-origin: 100% 50%; -moz-transform-origin: 100% 50%; -ms-transform-origin: 100% 50%; -o-transform-origin: 100% 50%; transform-origin: 100% 50%; -webkit-transform: perspective(800px) rotateY(-90deg); -moz-transform: perspective(800px) rotateY(-90deg); -ms-transform: perspective(800px) rotateY(-90deg); -o-transform: perspective(800px) rotateY(-90deg); transform: perspective(800px) rotateY(-90deg); -webkit-transition: -webkit-transform 0.4s ease-in-out ; -moz-transition: -moz-transform 0.4s ease-in-out ; -ms-transition: -ms-transform 0.4s ease-in-out ; -o-transition: -o-transform 0.4s ease-in-out ; transition: transform 0.4s ease-in-out ;}#app.show-menu #data-menu {-webkit-transform: perspective(800px) rotateY(0deg); -moz-transform: perspective(800px) rotateY(0deg); -ms-transform: perspective(800px) rotateY(0deg); -o-transform: perspective(800px) rotateY(0deg); transform: perspective(800px) rotateY(0deg);}#app.show-menu #data-menu .scroll-wrapper .shade {opacity: 0;}#data-menu .title {width: 100%; height: 40px; padding-left: 9px; box-sizing: border-box; z-index: 999; background-image: url(../images/common/w1.png); background-position: 0 -70px; background-repeat: repeat-x; font-size: 24px; line-height: 42px; color: #fff; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .title {background-image: url(../images/common/w1_x2.png); background-size: 1px 800px;}}#data-menu .scroll-wrapper {position: absolute; width: 100%; top: 40px; bottom: 0; overflow: hidden; background-color: #171919;}#data-menu .scroll-wrapper .scroll-indicator {display: none;}#data-menu .scroll-wrapper .shadow {display: none; position: absolute; right: 0; top: 0; width: 14px; height: 100%; pointer-events: none; background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0.4))); background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.4) 100%); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.4) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.4) 100%); background-image: linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.4) 100%);}html.pointerevents #data-menu .scroll-wrapper .shadow {display: block;}#data-menu .scroll-wrapper .shade {display: none; position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0.4)), color-stop(100%, #000000)); background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.4) 0%, #000000 100%); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.4) 0%, #000000 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.4) 0%, #000000 100%); background-image: linear-gradient(left, rgba(0, 0, 0, 0.4) 0%, #000000 100%); -webkit-transition: opacity 0.4s linear; -moz-transition: opacity 0.4s linear; -ms-transition: opacity 0.4s linear; -o-transition: opacity 0.4s linear; transition: opacity 0.4s linear;}html.pointerevents #data-menu .scroll-wrapper .shade {display: block;}#data-menu .scroll-move-container {position: absolute; width: 100%;}#data-menu .group {position: relative; width: 100%;}#data-menu .group-title {width: 100%; height: 25px; padding-left: 9px; box-sizing: border-box; background-image: url(../images/common/w1.png); background-position: 0 -110px; background-repeat: repeat-x; font-size: 15px; line-height: 25px; color: #c6cfd2;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .group-title {background-image: url(../images/common/w1_x2.png); background-size: 1px 800px;}}#data-menu .larger-group-title {width: 100%; height: 35px; padding-left: 9px; box-sizing: border-box; background-image: url(../images/common/w1.png); background-position: 0 -135px; background-repeat: repeat-x; font-size: 18px; line-height: 35px; color: #c6cfd2;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .larger-group-title {background-image: url(../images/common/w1_x2.png); background-size: 1px 800px;}}#data-menu .larger-group-title .group-arrow {float: right; display: inline-block; width: 24px; height: 24px; margin-right: 2px; margin-top: 4px; background-image: url(../images/common/ui.png); background-position: -50px -74px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .larger-group-title .group-arrow {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#data-menu .group.expand .group-arrow {background-position: -24px -71px;}#data-menu .item {width: 100%; height: 26px; border-top: 1px solid #2c2e2f; border-bottom: 1px solid black; padding-left: 5px; box-sizing: border-box; cursor: pointer; background-color: #1b1d1e;}#data-menu .item .item-arrow {position: relative; float: right; width: 22px; height: 22px; margin-right: 1px; margin-top: 1px; background-color: #2f3538;}#data-menu .item .item-arrow .highlight {width: 22px; height: 22px; opacity: 1; width: 0; width: 0; background-color: #fff; -webkit-transition: width 0.3s linear; -moz-transition: width 0.3s linear; -ms-transition: width 0.3s linear; -o-transition: width 0.3s linear; transition: width 0.3s linear;}#data-menu .item .item-arrow .arrow {position: absolute; left: -1px; top: -1px; width: 24px; height: 24px; background-image: url(../images/common/ui.png); background-position: -0px -80px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .item .item-arrow .arrow {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#data-menu .item .item-text {float: left; height: 24px; margin-left: 5px; font-size: 15px; line-height: 25px; color: #3f4345;}#data-menu .item .item-icon {float: left; width: 20px; height: 20px; margin-left: 1px; margin-top: 2px; background-image: url(../images/common/ui.png); background-position: -2px -122px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#data-menu .item .item-icon {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#data-menu .item.type-metros .item-icon {background-position: -2px -122px;}#data-menu .item.type-metros.selected .item-icon {background-position: -22px -122px;}#data-menu .item.type-bicycles .item-icon {background-position: -2px -177px;}#data-menu .item.type-bicycles.selected .item-icon {background-position: -22px -177px;}#data-menu .item.type-signals .item-icon {background-position: -2px -550px;}#data-menu .item.type-signals.selected .item-icon {background-position: -22px -550px;}#data-menu .item.type-electromagnicals .item-icon {background-position: -1px -231px;}#data-menu .item.type-electromagnicals.selected .item-icon {background-position: -21px -231px;}#data-menu .item.type-internets .item-icon {background-position: -2px -285px;}#data-menu .item.type-internets.selected .item-icon {background-position: -22px -285px;}#data-menu .item.type-wifis .item-icon {background-position: -2px -393px;}#data-menu .item.type-wifis.selected .item-icon {background-position: -22px -393px;}#data-menu .item.type-mobiles .item-icon {background-position: -2px -447px;}#data-menu .item.type-mobiles.selected .item-icon {background-position: -22px -447px;}#data-menu .item.type-atms .item-icon {background-position: -134px -554px;}#data-menu .item.type-atms.selected .item-icon {background-position: -154px -554px;}#data-menu .item.type-advertisements .item-icon {background-position: -134px -122px;}#data-menu .item.type-advertisements.selected .item-icon {background-position: -154px -122px;}#data-menu .item.type-toilets .item-icon {background-position: -2px -339px;}#data-menu .item.type-toilets.selected .item-icon {background-position: -22px -339px;}#data-menu .item.type-cctvs .item-icon {background-position: -134px -284px;}#data-menu .item.type-cctvs.selected .item-icon {background-position: -154px -284px;}#data-menu .item.type-twitter .item-icon {background-position: -134px -339px;}#data-menu .item.type-twitter.selected .item-icon {background-position: -154px -339px;}#data-menu .item.type-instagram .item-icon {background-position: -134px -391px;}#data-menu .item.type-instagram.selected .item-icon {background-position: -154px -391px;}#data-menu .item.type-foursquare .item-icon {background-position: -134px -497px;}#data-menu .item.type-foursquare.selected .item-icon {background-position: -154px -497px;}#data-menu .item.type-flickr .item-icon {background-position: -134px -445px;}#data-menu .item.type-flickr.selected .item-icon {background-position: -154px -445px;}#data-menu .item.selected .item-text {color: #fff;}#data-menu .item.selected .item-arrow .highlight {width: 100%;}#status-container {visibility: hidden; margin-left: 50%; width: 30%; height: 100%; font-size: 14px; line-height: 24px; color: #666;}#status-container span {font-family: "Swatch CT Web Bold", Sans-Serif; color: #e2001a;}.status-logo {position: absolute; left: 50%; top: 50%; width: 101px; height: 31px; margin-left: -130px; margin-top: -15px; background-image: url(../images/common/ui.png); background-position: -128px -0px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {.status-logo {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}.section {position: absolute; width: 100%; top: 40px; bottom: 0; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}#home-section {display: none; top: 0; background-color: #000; background-image: url(../images/common/sections/home/bg_pattern.png); z-index: 600; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}html.is-landing #home-section {height: 90%;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#home-section {background-image: url(../images/common/sections/home/bg_pattern_x2.png); background-size: 12px 12px;}}#home-section .bg-shading {position: absolute; width: 100%; height: 100%; background-image: url("../images/common/sections/home/bg_shading.png"); background-position: center center; background-size: cover;}#home-section canvas {position: absolute; width: 800px; height: 600px; left: 50%; top: 50%; margin-left: -400px; margin-top: -300px;}html.phone #home-section canvas {width: 600px; height: 450px; margin-left: -300px; margin-top: -225px;}#home-section .noise {position: absolute; background-image: url(../images/common/sections/home/bg_noise.png);}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#home-section .noise {background-image: url(../images/common/sections/home/bg_noise_x2.png); background-size: 64px 64px;}}#home-section .stars-container {position: absolute; width: 100%; height: 100%;}#home-section .star {position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; margin-left: -3px; margin-top: -3px; background-color: #fff; border-left: 0 solid #32c8ff; border-right: 0 solid #cc3801;}#home-section .content {position: absolute; left: 50%; width: 720px; margin-left: -360px; height: 100%; text-align: center; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}html.phone #home-section .content {width: 282px; margin-left: -141px;}#home-section .content .logo {display: inline-block; width: 322px; height: 81px; background-image: url(../images/common/sections/home/logo.png);}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#home-section .content .logo {background-image: url(../images/common/sections/home/logo_x2.png); background-size: 322px 81px;}}html.phone #home-section .content .logo {width: 282px; height: 79px; background-image: url(../images/common/sections/home/logo_mobile.png);}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {html.phone #home-section .content .logo {background-image: url(../images/common/sections/home/logo_mobile_x2.png); background-size: 282px 79px;}}#home-section .content br {height: 0; line-height: 0;}#home-section .content .copy {display: inline-block; margin-top: 10px; margin-bottom: 30px; font-size: 12px; line-height: 16px; text-align: center; text-transform: uppercase; color: #e1e1e1;}#home-section .content .copy span {background-color: #000;}#home-section .content .copy strong {color: #e1e1e1;}#home-section .content .copy br {display: none; line-height: 0;}#home-section .content .copy hr {width: 0; border: 0; outline: 0; margin: 0 0;}html.phone #home-section .content .copy {width: 275px; margin-bottom: 10px; font-size: 15px; font-style: italic; line-height: 19px; text-align: left; text-transform: none; color: #939393;}html.phone #home-section .content .copy span {padding: 2px; padding-left: 6px; padding-right: 6px;}html.phone #home-section .content .copy br {display: inline;}html.phone #home-section .content .copy hr {margin: 5px 0;}#home-section .content .select-city {position: relative; display: inline; margin-top: 10px; padding: 2px 2px; left: 160px; font-size: 18px; font-weight: bold; text-transform: uppercase; background-color: #5bc9df; color: #000;}html.phone #home-section .content .select-city {display: none;}html.notphone #home-section .content .btn {position: absolute; display: inline-block; left: 50%; top: 50%; margin-left: -50px; margin-top: -20px; cursor: pointer; text-transform: uppercase; font-size: 14px; font-weight: bold; color: #000; background-image: url("../images/common/sections/home/city_hover.png"); border: 10px solid transparent; background-position: 0 -10px;}html.notphone #home-section .content .btn span {padding: 2px 4px; background-color: #fff;}html.notphone #home-section .content .btn.hover, html.notphone #home-section .content .btn.selected {font-size: 18px; background-position: 0 -70px; margin-left: -54px; margin-top: -22px;}html.phone #home-section .content .btn {width: 255px; height: 29px; margin-left: 14px; margin-top: 6px; border-top: 1px solid #2e2f30; border-bottom: 1px solid #212121; box-shadow: 0 0 12px #323232; cursor: pointer; background-image: url(../images/common/w1.png); background-position: 0 -0px; background-repeat: repeat-x; font-size: 15px; line-height: 30px; color: #c6cfd2;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {html.phone #home-section .content .btn {background-image: url(../images/common/w1_x2.png); background-size: 1px 800px;}}html.phone #home-section .content .btn.hover {opacity: .8; color: #00ffff;}#map-section {background-color: #000; z-index: 100; overflow: hidden;}#map-section .stage-3d {position: absolute; width: 100%; height: 100%; -webkit-perspective: 800px; -moz-perspective: 800px; -ms-perspective: 800px; perspective: 800px;}#map-section .stage-3d .camera, #map-section .stage-3d .world {position: absolute; left: 50%; top: 50%; width: 0; height: 0;}#map-section .stage-3d, #map-section .stage-3d .container-3d {-webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; transform-style: preserve-3d;}#map-section .stage-3d canvas {position: absolute; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; transform-origin: 0 0;}#map-section .stage-3d .metro-stop {position: absolute; width: 14px; height: 14px; margin-left: -7px; margin-top: -7px; border-radius: 7px 7px; z-index: 100; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; transform-style: preserve-3d;}#map-section .stage-3d .metro-stop .text {position: absolute; left: -100px; top: 20px; width: 200px; font-size: 12px; text-align: center; pointer-events: none; -webkit-transform: translateY(-30px) translateZ(40px) rotateX(-30deg) scale(0.8, 0.8); -moz-transform: translateY(-30px) translateZ(40px) rotateX(-30deg) scale(0.8, 0.8); -ms-transform: translateY(-30px) translateZ(40px) rotateX(-30deg) scale(0.8, 0.8); -o-transform: translateY(-30px) translateZ(40px) rotateX(-30deg) scale(0.8, 0.8); transform: translateY(-30px) translateZ(40px) rotateX(-30deg) scale(0.8, 0.8);}#map-section .stage-3d .data-icon {position: absolute; width: 30px; height: 30px; margin-left: -15px; margin-top: -15px; background-image: url(../images/common/ui.png); background-position: -0px -0px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .stage-3d .data-icon {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .stage-3d .data-icon .count {position: absolute; left: 18px; top: -10px; width: 19px; height: 22px; padding-right: 3px; background-image: url(../images/common/ui.png); background-position: -275px -155px; background-repeat: no-repeat; font-size: 10px; font-weight: bold; line-height: 18px; text-align: center; color: 000;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .stage-3d .data-icon .count {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .stage-3d .data-icon-bicycles {background-position: -44px -172px;}#map-section .stage-3d .data-icon-bicycles:hover {background-position: -81px -172px;}#map-section .stage-3d .data-icon-signals {background-position: -17px -546px;}#map-section .stage-3d .data-icon-electromagnicals {background-position: -44px -492px;}#map-section .stage-3d .data-icon-electromagnicals:hover {background-position: -80px -492px;}#map-section .stage-3d .data-icon-internets {background-position: -44px -281px;}#map-section .stage-3d .data-icon-internets:hover {background-position: -80px -281px;}#map-section .stage-3d .data-icon-wifis {background-position: -44px -389px;}#map-section .stage-3d .data-icon-wifis:hover {background-position: -80px -389px;}#map-section .stage-3d .data-icon-mobiles {background-position: -44px -442px;}#map-section .stage-3d .data-icon-mobiles:hover {background-position: -81px -442px;}#map-section .stage-3d .data-icon-atms {background-position: -179px -548px;}#map-section .stage-3d .data-icon-atms:hover {background-position: -214px -548px;}#map-section .stage-3d .data-icon-advertisements {background-position: -179px -117px;}#map-section .stage-3d .data-icon-advertisements:hover {background-position: -214px -117px;}#map-section .stage-3d .data-icon-toilets {background-position: -44px -334px;}#map-section .stage-3d .data-icon-toilets:hover {background-position: -80px -334px;}#map-section .stage-3d .data-icon-cctvs {background-position: -179px -279px;}#map-section .stage-3d .data-icon-cctvs:hover {background-position: -214px -279px;}#map-section .stage-3d .data-icon-twitter {height: 34px; margin-top: -17px; background-position: -179px -334px;}#map-section .stage-3d .data-icon-twitter:hover {background-position: -214px -334px;}#map-section .stage-3d .data-icon-instagram {background-position: -179px -386px;}#map-section .stage-3d .data-icon-instagram:hover {background-position: -214px -386px;}#map-section .stage-3d .data-icon-foursquare {background-position: -179px -489px;}#map-section .stage-3d .data-icon-foursquare:hover {width: 36px; height: 36px; margin-left: -18px; margin-top: -18px; background-position: -208px -489px;}#map-section .stage-3d .data-icon-flickr {background-position: -179px -440px;}#map-section .stage-3d .data-icon-flickr:hover {background-position: -214px -440px;}#map-section .spotlight {position: absolute; background-image: -webkit-gradient(radial, 50%, 0, 50%, 100, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(24%, rgba(0, 0, 0, 0)), color-stop(100%, #000000)); background-image: -webkit-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 24%, #000000 100%); background-image: -moz-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 24%, #000000 100%); background-image: -o-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 24%, #000000 100%); background-image: radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 24%, #000000 100%); pointer-events: none;}#map-section .infos {position: absolute; width: 100%; height: 100%; left: 0; top: 0;}#map-section .infos {display: none; position: absolute; width: 100%; height: 100%; left: 0; top: 0; background-color: #000; background-color: rgba(0, 0, 0, 0.5); -webkit-transform: translateZ(4000px); -moz-transform: translateZ(4000px); -ms-transform: translateZ(4000px); -o-transform: translateZ(4000px); transform: translateZ(4000px);}#map-section .info, #map-section .map-info-container {display: none; position: absolute; left: 50%; top: 50%; width: 280px; height: 220px; margin-left: -140px; margin-top: -110px; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}#map-section .info .scroll-wrapper, #map-section .map-info-container .scroll-wrapper {position: absolute; top: 40px; bottom: 0; width: 100%; overflow: hidden;}#map-section .info .scroll-move-container, #map-section .map-info-container .scroll-move-container {position: absolute; width: 100%;}#map-section .info .item, #map-section .map-info-container .item {position: relative; width: 100%; height: 35px; overflow: hidden; border-top: 1px solid #838383;}#map-section .info .item .index, #map-section .map-info-container .item .index {font-size: 20px; line-height: 35px; color: #c6c6c6;}#map-section .info .item > .arrow, #map-section .map-info-container .item > .arrow {position: absolute; right: 0; top: 0; width: 35px; height: 35px; background-image: url(../images/common/ui.png); background-position: -260px -203px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .info .item > .arrow, #map-section .map-info-container .item > .arrow {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .info .item.expanded, #map-section .map-info-container .item.expanded {height: auto; border-top: none;}#map-section .info .item.expanded > .arrow, #map-section .map-info-container .item.expanded > .arrow {background-position: -263px -178px;}#map-section .info .item.expanded > .line, #map-section .map-info-container .item.expanded > .line {position: absolute; top: 0px; margin-top: 0; padding-top: 0;}#map-section .info .scroll-indicator, #map-section .map-info-container .scroll-indicator {display: none;}#map-section .info .name-wrapper, #map-section .map-info-container .name-wrapper {position: absolute; left: 0; right: 30px; height: 24px; overflow: hidden;}#map-section .info .name, #map-section .map-info-container .name {position: absolute; font-size: 24px; line-height: 24px; height: 24px; width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}#map-section .info .line, #map-section .map-info-container .line {width: 100%; margin-top: 32px; height: 1px; background-color: #818181;}#map-section .info .close-btn, #map-section .map-info-container .close-btn {position: absolute; right: 0; width: 26px; height: 26px; cursor: pointer; z-index: 100; background-image: url(../images/common/ui.png); background-position: -429px -13px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .info .close-btn, #map-section .map-info-container .close-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .info-bicycles .total {margin-top: 8px; font-size: 24px;}#map-section .info-bicycles .open {font-size: 24px;}#map-section .info-bicycles .time {margin-top: 13px; font-size: 11px; text-transform: uppercase; color: #868686;}#map-section .info-bicycles .address {margin-top: 5px; font-size: 12px;}#map-section .info-advertisements .weekviews {margin-top: 15px; font-size: 14px;}#map-section .info-advertisements .weekviews strong {font-size: 24px;}#map-section .info-instagram {height: 280px; margin-top: -180px;}#map-section .info-instagram .name {font-size: 11px;}#map-section .info-instagram .name strong {font-size: 24px;}#map-section .info-instagram .name italic {font-style: italic; color: #aeaeae;}#map-section .info-instagram .img-wrapper {margin-top: 5px; width: 280px; height: 280px; overflow: hidden;}#map-section .info-instagram img {width: 280px; height: 280px;}#map-section .info-instagram .additional-disclaimer {margin-top: 5px; font-size: 10px; font-style: italic; color: #aaa;}#map-section .info-flickr {height: 280px; margin-top: -180px;}#map-section .info-flickr .img {margin-top: 5px; width: 280px; height: 240px; background-size: contain; background-repeat: no-repeat; background-position: center center; overflow: hidden; text-align: center;}#map-section .info-flickr .title {margin-top: 5px; font-size: 24px;}#map-section .info-flickr .date {margin-top: 13px; font-size: 11px; text-transform: uppercase; color: #868686;}#map-section .info-flickr .additional-disclaimer {margin-top: 5px; font-size: 10px; font-style: italic; color: #aaa;}#map-section .info-foursquare .top {width: 100%; height: 30px;}#map-section .info-foursquare .date {float: left; margin-top: 5px; font-size: 11px; text-transform: uppercase; color: #868686;}#map-section .info-foursquare .disclaimer {float: right; margin-top: 5px; color: #b2b2b2; font-size: 10px;}#map-section .info-foursquare .disclaimer span {color: #fff;}#map-section .info-foursquare .disclaimer span:before {content: ''; display: inline-block; width: 17px; height: 16px; padding: 0 0; margin: 0 0; margin-right: 4px; border: 0; vertical-align: top; margin-top: -4px; background-image: url(../images/common/ui.png); background-position: -433px -62px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .info-foursquare .disclaimer span:before {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .info-foursquare .icon {float: left; width: 32px; height: 32px; margin-right: 4px; background-image: url(../images/common/ui.png); background-position: -276px -112px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .info-foursquare .icon {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .info-foursquare .text {float: left; margin-left: 8px; width: 240px; font-size: 16px;}#map-section .info-foursquare .additional-disclaimer {margin-top: 30px; font-size: 10px; font-style: italic; color: #aaa;}#map-section .info-twitter .top {width: 100%; height: 30px;}#map-section .info-twitter .user, #map-section .info-twitter .date {float: left; margin-top: 5px; font-size: 11px; text-transform: uppercase; color: #868686;}#map-section .info-twitter .user.date, #map-section .info-twitter .date.date {margin-left: 10px;}#map-section .info-twitter .tweet-wrapper {width: 280px; overflow: hidden;}#map-section .info-twitter .tweet {width: 280px; font-size: 16px; font-style: italic;}#map-section .info-twitter .tweet a, #map-section .info-twitter .tweet a:hover, #map-section .info-twitter .tweet a:active, #map-section .info-twitter .tweet a:visited {color: #fff;}#map-section .info-twitter .bottom {width: 100%; height: 30px; margin-top: 8px;}#map-section .info-twitter .bottom a, #map-section .info-twitter .bottom a:hover, #map-section .info-twitter .bottom a:active, #map-section .info-twitter .bottom a:visited {color: #fff; text-decoration: none;}#map-section .info-twitter .follow-btn {float: left; width: 80px;}#map-section .info-twitter .favorite, #map-section .info-twitter .retweet, #map-section .info-twitter .reply {float: right; margin-left: 4px; font-size: 10px; line-height: 25px;}#map-section .info-twitter .favorite .icon, #map-section .info-twitter .retweet .icon, #map-section .info-twitter .reply .icon {display: inline-block; width: 14px; height: 10px; vertical-align: top; margin-top: 8px; background-image: url(../images/common/ui.png); background-position: -495px -6px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .info-twitter .favorite .icon, #map-section .info-twitter .retweet .icon, #map-section .info-twitter .reply .icon {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .info-twitter .favorite.retweet .icon, #map-section .info-twitter .retweet.retweet .icon, #map-section .info-twitter .reply.retweet .icon {margin-top: 9px; background-position: -495px -28px;}#map-section .info-twitter .favorite.reply .icon, #map-section .info-twitter .retweet.reply .icon, #map-section .info-twitter .reply.reply .icon {margin-top: 9px; background-position: -495px -50px;}#map-section .info-cctvs .copy {margin-top: 15px; font-size: 18px; margin-bottom: 5px;}#map-section .info-cctvs .item .copy {margin-top: 0;}#map-section .info-wifis .note {margin-top: 15px; font-size: 18px;}#map-section .info-metros .trains-per-hour {margin-top: 15px;}#map-section .info-metros .passengers {margin-top: 5px;}#map-section .info-metros .trains, #map-section .info-metros .passengers .num {font-size: 24px;}#map-section .info-metros .per-hour, #map-section .info-metros .passengers .text {font-size: 12px;}#map-section .info-atms .line {margin-bottom: 12px;}#map-section .info-atms .tag-name {margin-bottom: 5px; font-size: 18px;}#map-section .info-atms .note {margin-bottom: 5px; font-size: 14px;}#map-section .info-mobiles .line {margin-bottom: 12px;}#map-section .info-mobiles .operator {font-size: 14px; line-height: 18px;}#map-section .info-electromagnicals .line {margin-bottom: 12px;}#map-section .info-electromagnicals .level {font-size: 28px;}#map-section .info-electromagnicals .unit-1 {font-size: 24px;}#map-section .info-electromagnicals .unit-2 {font-size: 16px;}#map-section .info-electromagnicals .overall-text {font-size: 12px;}#map-section .info-electromagnicals .line-2 {margin-top: 10px;}#map-section .info-electromagnicals .date {font-size: 24px;}#map-section .info-electromagnicals .measurement-date {font-size: 12px;}#map-section .info-electromagnicals .note {margin-top: 10px; font-size: 14px;}#map-section .stats-btn {display: none; position: absolute; padding: 8px; box-sizing: border-box; right: 0; top: 0; font-size: 21px; cursor: pointer; -webkit-transform: translateZ(3000px); -moz-transform: translateZ(3000px); -ms-transform: translateZ(3000px); -o-transform: translateZ(3000px); transform: translateZ(3000px);}#map-section .stats-btn .icon {display: inline-block; width: 12px; height: 11px; margin-left: 8px; background-image: url(../images/common/ui.png); background-position: -369px -64px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .stats-btn .icon {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .stats {position: absolute; display: none; padding: 5px; box-sizing: border-box; left: 0; top: 0; width: 100%; height: 100%; background-color: #000; background-color: rgba(0, 0, 0, 0.8); -webkit-transform: translateZ(3000px); -moz-transform: translateZ(3000px); -ms-transform: translateZ(3000px); -o-transform: translateZ(3000px); transform: translateZ(3000px); font-size: 11px;}#map-section .stats .wrapper {position: absolute; left: 50%; top: 50%; width: 228px; height: 300px; margin-left: -114px; margin-top: -150px;}#map-section .stats .title {padding-top: 8px; border-top: 1px solid white; font-size: 27px;}#map-section .stats .location {border-bottom: 1px solid white; padding-bottom: 4px; margin-bottom: 4px; font-size: 54px; text-transform: uppercase;}#map-section .stats .net-income {margin-top: 30px; font-size: 14px; margin-bottom: 2px;}#map-section .stats .net-income-value-wrapper {margin-bottom: 20px; font-size: 40px;}#map-section .stats .net-income-value-wrapper .base {font-size: 18px;}#map-section .stats .close-btn {position: absolute; right: 0; top: 8px; width: 25px; height: 25px; cursor: pointer; background-image: url(../images/common/ui.png); background-position: -429px -13px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .stats .close-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .stats .bar-container {width: 100%; height: 13px; margin-top: 5px; margin-bottom: 15px; background-color: rgba(255, 255, 255, 0.1); border-right: 1px solid white;}#map-section .stats .bar-container .bar {position: relative; height: 100%; background-color: #fff;}#map-section .stats .bar-container .value {position: absolute; left: 100%; margin-left: 5px; line-height: 13px;}#map-section .stats .unemployment-rate {font-size: 14px; margin-bottom: 2px;}#map-section .stats .unemployment-rate-value {margin-bottom: 5px;}#map-section .stats .crime-rate {font-size: 14px; margin-bottom: 2px;}#map-section .stats .crime-rate-value {margin-bottom: 5px; font-style: italic;}#map-section .stats .eletricity-consumption {font-size: 14px; margin-bottom: 2px;}#map-section .stats .eletricity-consumption-value {font-style: italic; margin-bottom: 4px;}#map-section .live-container {display: none; position: absolute; width: 100%; height: 100%; left: 0; top: 0; background-color: #000; background-color: rgba(0, 0, 0, 0.8); -webkit-transform: translateZ(3500px); -moz-transform: translateZ(3500px); -ms-transform: translateZ(3500px); -o-transform: translateZ(3500px); transform: translateZ(3500px);}#map-section .live-container .fb-container {display: none; position: absolute; left: 50%; top: 50%; width: 240px; height: 265px; margin-left: -120px; margin-top: -132px; border-top: 1px solid white;}#map-section .live-container .fb-container .title {font-size: 27px; line-height: 40px;}#map-section .live-container .fb-container .copy {margin-top: 20px; font-size: 16px;}#map-section .live-container .fb-container .connect-btn {width: 197px; height: 40px; margin-top: 15px; background-image: url(../images/en/fb_connect.png); background-size: 197px 40px;}#map-section .live-container .fb-container .close-btn {position: absolute; right: 0; top: 8px; width: 25px; height: 25px; cursor: pointer; background-image: url(../images/common/ui.png); background-position: -433px -140px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .live-container .fb-container .close-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .live-container .messages-container {display: none; width: 100%; height: 100%;}#map-section .live-container .messages-container .item {position: relative; width: 100%; height: 70px; padding: 10px 10px; box-sizing: border-box; border-bottom: 1px solid #535353;}#map-section .live-container .messages-container .item.new {background-image: url(../images/common/sections/map/live_pattern.png);}#map-section .live-container .messages-container .msg {height: 36px; margin: 0 40px 0 0; overflow: hidden; text-overflow: ellipsis; font-size: 13px; line-height: 18px;}#map-section .live-container .messages-container .first-name, #map-section .live-container .messages-container .last-name {font-weight: bold;}#map-section .live-container .messages-container .ago {margin-top: 5px; font-size: 8px; font-style: italic; color: #a5a5a5;}#map-section .live-container .messages-container .arrow {position: absolute; right: 15px; top: 25px; width: 9px; height: 17px; cursor: pointer; background-image: url(../images/common/ui.png); background-position: -437px -104px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .live-container .messages-container .arrow {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .live-container .connecting {display: none; position: absolute; top: 50%; width: 100%; margin-top: -14px; text-align: center; font-size: 12px;}#map-section .extra-pages {display: none; position: absolute; width: 100%; height: 100%; -webkit-transform: translateZ(7000px); -moz-transform: translateZ(7000px); -ms-transform: translateZ(7000px); -o-transform: translateZ(7000px); transform: translateZ(7000px); z-index: 7000; background-color: rgba(0, 0, 0, 0.6);}#map-section .extra-pages .extra-page {display: none; position: absolute; left: 50px; right: 50px; top: 50px; bottom: 50px;}#map-section .extra-pages .generic {border-top: 1px solid white;}#map-section .extra-pages .generic .scroll-wrapper {position: absolute; top: 40px; bottom: 0; width: 100%; overflow: hidden;}#map-section .extra-pages .generic .scroll-move-container {position: absolute; left: 0; right: 30px;}#map-section .extra-pages .generic .scroll-indicator-container {position: absolute; right: 8; top: 0; width: 8px; height: 100%; background-image: url(../images/common/scroll_indicator.png); background-size: 16px 8px;}#map-section .extra-pages .generic .scroll-indicator {width: 100%; background-image: url(../images/common/scroll_indicator.png); background-position: -8px 0; background-size: 16px 8px;}#map-section .extra-pages .generic .title {font-size: 27px; line-height: 40px;}#map-section .extra-pages .generic .content {margin-top: 10px; font-size: 16px; line-height: 20px;}#map-section .extra-pages .generic p {margin-bottom: 10px;}#map-section .extra-pages .generic .close-btn {position: absolute; right: 0; top: 8px; width: 25px; height: 25px; cursor: pointer; background-image: url(../images/common/ui.png); background-position: -433px -140px; background-repeat: no-repeat;}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {#map-section .extra-pages .generic .close-btn {background-image: url(../images/common/ui_x2.png); background-size: 800px 800px;}}#map-section .extra-pages .extra-page.language {left: 20px; right: 20px;}#map-section .extra-pages .extra-page.language li {float: left; width: 50%; margin-top: 8px; list-style-type: none;}#map-section .extra-pages .extra-page.language img {width: 24px; height: 17px; vertical-align: top; margin-top: 2px; margin-right: 5px;}#map-section .extra-pages .extra-page.language a, #map-section .extra-pages .extra-page.language a:hover, #map-section .extra-pages .extra-page.language a:visited, #map-section .extra-pages .extra-page.language a:active {font-size: 14px; line-height: 17px; color: #fff; text-decoration: none;}#map-section .extra-pages .extra-page.terms .content,#map-section .extra-pages .extra-page.credits .content,#map-section .extra-pages .extra-page.about .content {font-size: 12px; line-height: 14px;}#map-section .extra-pages .extra-page.terms a, #map-section .extra-pages .extra-page.terms a:hover, #map-section .extra-pages .extra-page.terms a:visited, #map-section .extra-pages .extra-page.terms a:active,#map-section .extra-pages .extra-page.credits a,#map-section .extra-pages .extra-page.credits a:hover,#map-section .extra-pages .extra-page.credits a:visited,#map-section .extra-pages .extra-page.credits a:active,#map-section .extra-pages .extra-page.about a,#map-section .extra-pages .extra-page.about a:hover,#map-section .extra-pages .extra-page.about a:visited,#map-section .extra-pages .extra-page.about a:active {line-height: 17px; color: #ccc;}#landingAltContent {width: 100%; height: 667px; background-image: url(../images/landing/flash.jpg); background-repeat: no-repeat; background-position: center 0;}html.notflash #landingAltContent {display: none;}#about {display: none; width: 100%; height: 696px; background-image: url(../images/landing/bg_content.jpg); background-repeat: no-repeat; background-position: center 0;}html.is-landing #about {display: block;}html.notflash #about {background-size: cover; height: auto;}html.notflash.is-landing #about {position: relative; top: -10%;}#about a {text-decoration: none; text-transform: uppercase;}#about h2 {display: inline-block; width: 830px; padding-left: 15px; margin-top: 53px; margin-bottom: 11px; color: #53c5dd; font-size: 20px;}html.notflash #about h2 {width: auto; margin-top: 30px; padding-left: 5px; font-size: 16px; font-weight: bold;}#about p {display: block; font-size: 14px; color: #696969; line-height: 18px;}html.notflash #about p {font-size: 9px; line-height: 14px;}#about p a {font-weight: bold; color: #696969;}#about strong {font-weight: bold;}#about .blue_big {font-size: 18px; color: #5db5c7;}html.notflash #about .blue_big {font-size: 14px;}#about .text-content {width: 860px; margin-left: auto; margin-right: auto;}html.notflash #about .text-content {width: 300px;}html.notflash #about .text-content:after {content: ""; display: table; clear: both;}#about .text-cols {width: 858px; background-color: #000000; background-color: rgba(0, 0, 0, 0.6); border: 1px solid #1c1c1c; padding-top: 10px; float: left;}#about .text-cols .whitecopy {color: #ffffff;}html.notflash #about .text-cols {width: 298px;}#about .text-col p {padding-bottom: 16px;}#about .text-col {width: 398px; padding-left: 15px; padding-right: 15px; float: left;}html.notflash #about .text-col {width: 288px; padding-left: 5px; padding-right: 5px;}#about .text-bot {width: 830px; float: left; margin-top: 53px; padding-top: 53px; padding-left: 15px; padding-right: 15px; background-image: url(../images/landing/zebra.png); background-repeat: repeat-x;}#about .text-bot .blue_big a {font-weight: bold; color: #5db5c7; background-color: #000000; text-transform: lowercase;}html.notflash #about .text-bot {width: 100%; margin-top: 20px; padding-top: 25px; padding-left: 0; padding-right: 0;}#about .text-bot a {color: #000000; background-color: #53c3da; font-size: 15px; padding-right: 3px; padding-left: 3px;}html.notflash #about .text-bot a {font-size: 12px;}#about .text-bot p {font-size: 18px; padding-bottom: 16px;}html.notflash #about .text-bot p {font-size: 12px; padding-bottom: 8px;}#about .grey_upp {text-transform: uppercase;}#about .white_upp {text-transform: uppercase; font-size: 18px; color: #fff;}html.notflash #about .white_upp {font-size: 14px;}#footer {display: none; position: relative; margin-left: 30px; margin-right: 30px; height: 38px; border-top: 1px solid #505151;}html.is-landing #footer {display: block;}html.notflash #footer {margin-left: 0; margin-right: 0; height: 70px;}html.notflash.is-landing #footer {position: relative; top: -10%;}#footer a {text-decoration: none; text-transform: uppercase;}#footer .footer-link {color: #505050; margin-right: 19px; font-size: 10px;}html.notflash #footer .footer-link {margin-left: 0; margin-right: 0;}#footer .footer-left {background-repeat: no-repeat; background-image: url(../images/landing/pict.gif); padding-left: 98px; margin-top: 8px; padding-top: 2px; height: 18px;}html.notflash #footer .footer-left {padding-left: 105px; height: 70px; background-position: 7px 22px;}html.notflash #footer .footer-link-watchdogs {display: block; margin-top: 33px;}html.notflash #footer .footer-link-ubisoft {margin-top: 6px; display: block;}#footer .footer-right {position: absolute; right: 0; top: 10px;}html.notflash #footer .footer-right {right: 7px; height: 70px;}html.notflash #footer .footer-right a {display: block; margin-bottom: 6px;}#footer #share {position: absolute; left: 50%; font-size: 12px; z-index: 21; margin-left: -50px; top: 13px;}html.notflash #footer #share {left: 105px; margin-left: 0;}#footer .share-button {color: #fff; padding-right: 4px; height: 7px; font-family: "Helvetica", "Arial", "HelveticaNeueMedium", sans-serif;}#footer .share-pics {width: 15px; background-color: #333333; border-radius: 3px; padding-left: 10px; height: 17px;}#footer .share-pictos-container {display: none; position: absolute; width: 25px; left: 50%; bottom: 20px; height: 120px; z-index: 19; margin-left: -2px; overflow: hidden;}html.notflash #footer .share-pictos-container {left: 153px; margin-left: 0; bottom: 50px;}#footer .share-pictos {background-color: #333333; border-radius: 3px; width: 25px; font-size: 12px; padding-bottom: 12px; padding-top: 1px; margin-top: 150px;}#footer .share-pictos a {display: block; width: 21px; margin-top: 12px; padding-left: 4px;}#footer .share-inline {display: inline-block;}html.notflash #footer a.sound-btn {display: none;}html.notflash #footer a.fullscreen-btn {display: none;}#share-link {display: none; position: fixed; width: 100%; height: 100%; min-height: 100%; min-width: 100%; background-color: #000000; background-color: rgba(0, 0, 0, 0.6); z-index: 200; visibility: hidden; color: #fff; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0);}html.is-landing #share-link {display: block;}html.notflash #share-link {font-size: 12px;}#share-link .share-link-header {height: 52px; width: 440px; border-bottom: 1px solid gray;}#share-link .share-link-title {float: left; display: block; font-size: 36px; margin-bottom: 26px; width: 405px; font-family: "HelveticaNeueLight", "Helvetica", "Arial", sans-serif;}#share-link .share-link-close {display: block; width: 27px; height: 27px; float: left; background-image: url(../images/landing/close_popin.png); background-repeat: no-repeat;}#share-link .link-copy-btn {display: block; float: left; height: 13px; color: #fff; background-color: #000000; font-size: 12px; font-weight: bold; padding: 10px; border-top: 1px solid #3b3b3b; border-bottom: 1px solid #3b3b3b; border-right: 1px solid #3b3b3b;}#share-link .link-copy-field {display: block; float: left; width: 316px; padding-left: 34px; height: 26px; padding-top: 7px; font-size: 18px; background-color: #fff; color: #000000; background-image: url(../images/landing/link.gif); font-family: "HelveticaNeueLightItalic", "Helvetica", "Arial", sans-serif; background-repeat: no-repeat;}#share-link .share-link-popin {position: absolute; top: 50%; left: 50%; margin-left: -220px; margin-top: -70px; width: 440px; height: 140px;} \ No newline at end of file diff --git a/mobile/images/arrow.gif b/mobile/images/arrow.gif new file mode 100644 index 0000000..30cf97c Binary files /dev/null and b/mobile/images/arrow.gif differ diff --git a/mobile/images/facebook_pic.png b/mobile/images/facebook_pic.png new file mode 100644 index 0000000..f2458ec Binary files /dev/null and b/mobile/images/facebook_pic.png differ diff --git a/mobile/images/flash.jpg b/mobile/images/flash.jpg new file mode 100644 index 0000000..78724f5 Binary files /dev/null and b/mobile/images/flash.jpg differ diff --git a/mobile/images/gplus_pic.png b/mobile/images/gplus_pic.png new file mode 100644 index 0000000..db40320 Binary files /dev/null and b/mobile/images/gplus_pic.png differ diff --git a/mobile/images/landing/close_popin.png b/mobile/images/landing/close_popin.png new file mode 100644 index 0000000..b03ca37 Binary files /dev/null and b/mobile/images/landing/close_popin.png differ diff --git a/mobile/images/landing/link.gif b/mobile/images/landing/link.gif new file mode 100644 index 0000000..bff77a4 Binary files /dev/null and b/mobile/images/landing/link.gif differ diff --git a/mobile/images/landing/pict.gif b/mobile/images/landing/pict.gif new file mode 100644 index 0000000..6866b51 Binary files /dev/null and b/mobile/images/landing/pict.gif differ diff --git a/mobile/images/landing/zebra.png b/mobile/images/landing/zebra.png new file mode 100644 index 0000000..4d335a5 Binary files /dev/null and b/mobile/images/landing/zebra.png differ diff --git a/mobile/images/link_pic.png b/mobile/images/link_pic.png new file mode 100644 index 0000000..a38af7f Binary files /dev/null and b/mobile/images/link_pic.png differ diff --git a/mobile/images/twitter_pic.png b/mobile/images/twitter_pic.png new file mode 100644 index 0000000..b57442d Binary files /dev/null and b/mobile/images/twitter_pic.png differ diff --git a/mobile/js/static/FlashObject.js b/mobile/js/static/FlashObject.js new file mode 100644 index 0000000..9c0dbfe --- /dev/null +++ b/mobile/js/static/FlashObject.js @@ -0,0 +1,4 @@ +/** + * + */ +FlashObject=function(){function e(e,t){return Array.prototype.slice.call(e,t||0)}function t(t){this.cfg=e(arguments)}var n=t.prototype;return n.init=function(){swfobject.embedSWF.apply(swfobject,this.cfg)},n.onReady=function(){this.isReady=!0},n.onProgress=function(e){},n.onLoaded=function(){this.isLoaded=!0},t}() \ No newline at end of file diff --git a/mobile/js/static/jquery.js b/mobile/js/static/jquery.js new file mode 100644 index 0000000..40b0cd1 --- /dev/null +++ b/mobile/js/static/jquery.js @@ -0,0 +1,4 @@ +/** + * + */ +(function(e,t){function P(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function B(e){var t=H[e]={};return b.each(e.match(E)||[],function(e,n){t[n]=!0}),t}function I(e,n,r,i){if(b.acceptData(e)){var s,o,u=b.expando,a="string"==typeof n,f=e.nodeType,c=f?b.cache:e,h=f?e[u]:e[u]&&u;if(h&&c[h]&&(i||c[h].data)||!a||r!==t)return h||(f?e[u]=h=l.pop()||b.guid++:h=u),c[h]||(c[h]={},f||(c[h].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[h]=b.extend(c[h],n):c[h].data=b.extend(c[h].data,n)),s=c[h],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[b.camelCase(n)]=r),a?(o=s[n],null==o&&(o=s[b.camelCase(n)])):o=s,o}}function q(e,t,n){if(b.acceptData(e)){var r,i,s,o=e.nodeType,u=o?b.cache:e,a=o?e[b.expando]:b.expando;if(u[a]){if(t&&(s=n?u[a]:u[a].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in s?t=[t]:(t=b.camelCase(t),t=t in s?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete s[t[r]];if(!(n?U:b.isEmptyObject)(s))return}(n||(delete u[a].data,U(u[a])))&&(o?b.cleanData([e],!0):b.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null)}}}function R(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(F,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:j.test(r)?b.parseJSON(r):r}catch(s){}b.data(e,n,r)}else r=t}return r}function U(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function st(){return!1}function ct(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ht(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(at.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function pt(e){var t=dt.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Mt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function _t(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function Dt(e){var t=Ct.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Pt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function Ht(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,s=b._data(e),o=b._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;i>r;r++)b.event.add(t,n,u[n][r])}o.data&&(o.data=b.extend({},o.data))}}function Bt(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(_t(t).text=e.text,Dt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&xt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function jt(e,n){var r,s,o=0,u=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!u)for(u=[],r=e.childNodes||e;null!=(s=r[o]);o++)!n||b.nodeName(s,n)?u.push(s):b.merge(u,jt(s,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],u):u}function Ft(e){xt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,s=[],o=0,u=e.length;for(;u>o;o++)r=e[o],r.style&&(s[o]=b._data(r,"olddisplay"),n=r.style.display,t?(s[o]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(s[o]=b._data(r,"olddisplay",an(r.nodeName)))):s[o]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(o=0;u>o;o++)r=e[o],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?s[o]||"":"none"));return e}function sn(e,t,n){var r=$t.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function on(e,t,n,r,i){var s=n===(r?"border":"content")?4:"width"===t?1:0,o=0;for(;4>s;s+=2)"margin"===n&&(o+=b.css(e,n+Zt[s],!0,i)),r?("content"===n&&(o-=b.css(e,"padding"+Zt[s],!0,i)),"margin"!==n&&(o-=b.css(e,"border"+Zt[s]+"Width",!0,i))):(o+=b.css(e,"padding"+Zt[s],!0,i),"padding"!==n&&(o+=b.css(e,"border"+Zt[s]+"Width",!0,i)));return o}function un(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,s=qt(e),o=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,s);if(0>=i||null==i){if(i=Rt(e,t,s),(0>i||null==i)&&(i=e.style[t]),Jt.test(i))return i;r=o&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+on(e,t,n||(o?"border":"content"),r,s)+"px"}function an(e){var t=s,n=Qt[e];return n||(n=fn(e,t),"none"!==n&&n||(It=(It||b(" +
+ + + + +
+
+
+

ABOUT WATCH_DOGS WeareData

+
+
+

In the video game Watch_Dogs, the city of Chicago is run by a Central Operating System (CTOS). This system use data to manage the entire city and to solve complex problems. Traffic jams, war against crime, power management...

+

This is not fiction anymore. Smart cities are real, it’s happening now. A huge amount of data is collected and managed every day in our modern cities, and those data are available for everybody.

+

Watch_Dogs WeareData is the first website to gather publicly available data about Paris, London and Berlin, in one location. Each of the three towns is recreated on a 3D map, allowing the user to discover the data that organizes and runs modern cities today, in real time. It also displays information about the inhabitants of these cities, via their social media activity.

+
+
+

What you will discover here are only facts and reality.

+

Watch_Dogs WeareData gathers available geolocated data in a non-exhaustive way: we only display the information for which we have been given the authorization by the sources. Yet, it is already a huge amount of data. You may even watch what other users are looking at on the website through Facebook connect.

+
+
+
+

If you are interested in this subject, we’d love to get your feedback about the website and about our connected world.

+

Everyone has their part to play and their word to say.

+

Stay connected and join the conversation on social media through the Watch_Dogs Facebook page or through Twitter using the hashtag #watchdogs.

+
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/startIndex_files/FlashObject.js b/startIndex_files/FlashObject.js new file mode 100644 index 0000000..9c0dbfe --- /dev/null +++ b/startIndex_files/FlashObject.js @@ -0,0 +1,4 @@ +/** + * + */ +FlashObject=function(){function e(e,t){return Array.prototype.slice.call(e,t||0)}function t(t){this.cfg=e(arguments)}var n=t.prototype;return n.init=function(){swfobject.embedSWF.apply(swfobject,this.cfg)},n.onReady=function(){this.isReady=!0},n.onProgress=function(e){},n.onLoaded=function(){this.isLoaded=!0},t}() \ No newline at end of file diff --git a/startIndex_files/TweenMax.min.js b/startIndex_files/TweenMax.min.js new file mode 100644 index 0000000..3b87a41 --- /dev/null +++ b/startIndex_files/TweenMax.min.js @@ -0,0 +1,16 @@ +/*! + * VERSION: beta 1.9.7 + * DATE: 2013-05-16 + * UPDATES AND DOCS AT: http://www.greensock.com + * + * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin + * + * @license Copyright (c) 2008-2013, GreenSock. All rights reserved. + * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +(window._gsQueue||(window._gsQueue=[])).push(function(){"use strict";window._gsDefine("TweenMax",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=[].slice,r=function(t,e,s){i.call(this,t,e,s),this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._dirty=!0},n=function(t){return t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style},a=r.prototype=i.to({},.1,{}),o=[];r.version="1.9.7",a.constructor=r,a.kill()._gc=!1,r.killTweensOf=r.killDelayedCallsTo=i.killTweensOf,r.getTweensOf=i.getTweensOf,r.ticker=i.ticker,a.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),i.prototype.invalidate.call(this)},a.updateTo=function(t,e){var s,r=this.ratio;e&&this.timeline&&this._startTime.998){var n=this._time;this.render(0,!0,!1),this._initted=!1,this.render(n,!0,!1)}else if(this._time>0){this._initted=!1,this._init();for(var a,o=1/(1-r),h=this._firstPT;h;)a=h.s+h.c,h.c*=o,h.s=a-h.c,h=h._next}return this},a.render=function(t,e,i){var s,r,n,a,h,l,_,u=this._dirty?this.totalDuration():this._totalDuration,p=this._time,f=this._totalTime,c=this._cycle;if(t>=u?(this._totalTime=u,this._cycle=this._repeat,this._yoyo&&0!==(1&this._cycle)?(this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0):(this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1),this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t)):1e-7>t?(this._totalTime=this._time=this._cycle=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==f||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0)):(this._totalTime=this._time=t,0!==this._repeat&&(a=this._duration+this._repeatDelay,this._cycle=this._totalTime/a>>0,0!==this._cycle&&this._cycle===this._totalTime/a&&this._cycle--,this._time=this._totalTime-this._cycle*a,this._yoyo&&0!==(1&this._cycle)&&(this._time=this._duration-this._time),this._time>this._duration?this._time=this._duration:0>this._time&&(this._time=0)),this._easeType?(h=this._time/this._duration,l=this._easeType,_=this._easePower,(1===l||3===l&&h>=.5)&&(h=1-h),3===l&&(h*=2),1===_?h*=h:2===_?h*=h*h:3===_?h*=h*h*h:4===_&&(h*=h*h*h*h),this.ratio=1===l?1-h:2===l?h:.5>this._time/this._duration?h/2:1-h/2):this.ratio=this._ease.getRatio(this._time/this._duration)),p===this._time&&!i)return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),void 0;if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===f&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._totalTime||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||o))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||o)),this._cycle!==c&&(e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||o)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||o)))},r.to=function(t,e,i){return new r(t,e,i)},r.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new r(t,e,i)},r.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new r(t,e,s)},r.staggerTo=r.allTo=function(t,e,a,h,l,_,u){h=h||0;var p,f,c,m,d=a.delay||0,g=[],v=function(){a.onComplete&&a.onComplete.apply(a.onCompleteScope||this,a.onCompleteParams||o),l.apply(u||this,_||o)};for(t instanceof Array||("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s.call(t,0))),p=t.length,c=0;p>c;c++){f={};for(m in a)f[m]=a[m];f.delay=d,c===p-1&&l&&(f.onComplete=v),g[c]=new r(t[c],e,f),d+=h}return g},r.staggerFrom=r.allFrom=function(t,e,i,s,n,a,o){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,r.staggerTo(t,e,i,s,n,a,o)},r.staggerFromTo=r.allFromTo=function(t,e,i,s,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,r.staggerTo(t,e,s,n,a,o,h)},r.delayedCall=function(t,e,i,s,n){return new r(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:n,overwrite:0})},r.set=function(t,e){return new r(t,0,e)},r.isTweening=function(t){for(var e,s=i.getTweensOf(t),r=s.length;--r>-1;)if(e=s[r],e._active||e._startTime===e._timeline._time&&e._timeline._active)return!0;return!1};var h=function(t,e){for(var s=[],r=0,n=t._first;n;)n instanceof i?s[r++]=n:(e&&(s[r++]=n),s=s.concat(h(n,e)),r=s.length),n=n._next;return s},l=r.getAllTweens=function(e){return h(t._rootTimeline,e).concat(h(t._rootFramesTimeline,e))};r.killAll=function(t,i,s,r){null==i&&(i=!0),null==s&&(s=!0);var n,a,o,h=l(0!=r),_=h.length,u=i&&s&&r;for(o=0;_>o;o++)a=h[o],(u||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&(t?a.totalTime(a.totalDuration()):a._enabled(!1,!1))},r.killChildTweensOf=function(t,e){if(null!=t){var a,o,h,l,_,u=i._tweenLookup;if("string"==typeof t&&(t=i.selector(t)||t),n(t)&&(t=s(t,0)),t instanceof Array)for(l=t.length;--l>-1;)r.killChildTweensOf(t[l],e);else{a=[];for(h in u)for(o=u[h].target.parentNode;o;)o===t&&(a=a.concat(u[h].tweens)),o=o.parentNode;for(_=a.length,l=0;_>l;l++)e&&a[l].totalTime(a[l].totalDuration()),a[l]._enabled(!1,!1)}}};var _=function(t,i,s,r){void 0===i&&(i=!0),void 0===s&&(s=!0);for(var n,a,o=l(r),h=i&&s&&r,_=o.length;--_>-1;)a=o[_],(h||a instanceof e||(n=a.target===a.vars.onComplete)&&s||i&&!n)&&a.paused(t)};return r.pauseAll=function(t,e,i){_(!0,t,e,i)},r.resumeAll=function(t,e,i){_(!1,t,e,i)},a.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},a.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},a.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},a.duration=function(e){return arguments.length?t.prototype.duration.call(this,e):this._duration},a.totalDuration=function(t){return arguments.length?-1===this._repeat?this:this.duration((t-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat,this._dirty=!1),this._totalDuration)},a.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},a.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},a.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},r},!0),window._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=function(t){e.call(this,t),this._labels={},this.autoRemoveChildren=this.vars.autoRemoveChildren===!0,this.smoothChildTiming=this.vars.smoothChildTiming===!0,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;for(var i,s,n=this.vars,a=r.length;--a>-1;)if(s=n[r[a]])for(i=s.length;--i>-1;)"{self}"===s[i]&&(s=n[r[a]]=s.concat(),s[i]=this);n.tweens instanceof Array&&this.add(n.tweens,0,n.align,n.stagger)},r=["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],n=[],a=function(t){var e,i={};for(e in t)i[e]=t[e];return i},o=n.slice,h=s.prototype=new e;return s.version="1.9.7",h.constructor=s,h.kill()._gc=!1,h.to=function(t,e,s,r){return e?this.add(new i(t,e,s),r):this.set(t,s,r)},h.from=function(t,e,s,r){return this.add(i.from(t,e,s),r)},h.fromTo=function(t,e,s,r,n){return e?this.add(i.fromTo(t,e,s,r),n):this.set(t,r,n)},h.staggerTo=function(t,e,r,n,h,l,_,u){var p,f=new s({onComplete:l,onCompleteParams:_,onCompleteScope:u});for("string"==typeof t&&(t=i.selector(t)||t),!(t instanceof Array)&&t.length&&t[0]&&t[0].nodeType&&t[0].style&&(t=o.call(t,0)),n=n||0,p=0;t.length>p;p++)r.startAt&&(r.startAt=a(r.startAt)),f.to(t[p],e,a(r),p*n);return this.add(f,h)},h.staggerFrom=function(t,e,i,s,r,n,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,r,n,a,o)},h.staggerFromTo=function(t,e,i,s,r,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,r,n,a,o,h)},h.call=function(t,e,s,r){return this.add(i.delayedCall(0,t,e,s),r)},h.set=function(t,e,s){return s=this._parseTimeOrLabel(s,0,!0),null==e.immediateRender&&(e.immediateRender=s===this._time&&!this._paused),this.add(new i(t,0,e),s)},s.exportRoot=function(t,e){t=t||{},null==t.smoothChildTiming&&(t.smoothChildTiming=!0);var r,n,a=new s(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,r=o._first;r;)n=r._next,e&&r instanceof i&&r.target===r.vars.onComplete||a.add(r,r._startTime-r._delay),r=n;return o.add(a,0),a},h.add=function(r,n,a,o){var h,l,_,u,p;if("number"!=typeof n&&(n=this._parseTimeOrLabel(n,0,!0,r)),!(r instanceof t)){if(r instanceof Array){for(a=a||"normal",o=o||0,h=n,l=r.length,_=0;l>_;_++)(u=r[_])instanceof Array&&(u=new s({tweens:u})),this.add(u,h),"string"!=typeof u&&"function"!=typeof u&&("sequence"===a?h=u._startTime+u.totalDuration()/u._timeScale:"start"===a&&(u._startTime-=u.delay())),h+=o;return this._uncache(!0)}if("string"==typeof r)return this.addLabel(r,n);if("function"!=typeof r)throw"Cannot add "+r+" into the timeline; it is neither a tween, timeline, function, nor a string.";r=i.delayedCall(0,r)}if(e.prototype.add.call(this,r,n),this._gc&&!this._paused&&this._time===this._duration&&this._time-1;)this.remove(e[i]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},h.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},h.insert=h.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},h.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},h.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},h.removeLabel=function(t){return delete this._labels[t],this},h.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},h._parseTimeOrLabel=function(e,i,s,r){var n;if(r instanceof t&&r.timeline===this)this.remove(r);else if(r instanceof Array)for(n=r.length;--n>-1;)r[n]instanceof t&&r[n].timeline===this&&this.remove(r[n]);if("string"==typeof i)return this._parseTimeOrLabel(i,s&&"number"==typeof e&&null==this._labels[i]?e-this.duration():0,s);if(i=i||0,"string"!=typeof e||!isNaN(e)&&null==this._labels[e])null==e&&(e=this.duration());else{if(n=e.indexOf("="),-1===n)return null==this._labels[e]?s?this._labels[e]=this.duration()+i:i:this._labels[e]+i;i=parseInt(e.charAt(n-1)+"1",10)*Number(e.substr(n+1)),e=n>1?this._parseTimeOrLabel(e.substr(0,n-1),0,s):this.duration()}return Number(e)+i},h.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),e!==!1)},h.stop=function(){return this.paused(!0)},h.gotoAndPlay=function(t,e){return this.play(t,e)},h.gotoAndStop=function(t,e){return this.pause(t,e)},h.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,r,a,o,h,l=this._dirty?this.totalDuration():this._totalDuration,_=this._time,u=this._startTime,p=this._timeScale,f=this._paused;if(t>=l?(this._totalTime=this._time=l,this._reversed||this._hasPausedChild()||(r=!0,o="onComplete",0===this._duration&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,t=l+1e-6):1e-7>t?(this._totalTime=this._time=0,(0!==_||0===this._duration&&this._rawPrevTime>0)&&(o="onReverseComplete",r=this._reversed),0>t?(this._active=!1,0===this._duration&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):this._totalTime=this._time=this._rawPrevTime=t,this._time!==_&&this._first||i||h){if(this._initted||(this._initted=!0),0===_&&this.vars.onStart&&0!==this._time&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||n)),this._time>=_)for(s=this._first;s&&(a=s._next,!this._paused||f);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||f);)(s._active||_>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||n)),o&&(this._gc||(u===this._startTime||p!==this._timeScale)&&(0===this._time||l>=this.totalDuration())&&(r&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||n)))}},h._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof s&&t._hasPausedChild())return!0;t=t._next}return!1},h.getChildren=function(t,e,s,r){r=r||-9999999999;for(var n=[],a=this._first,o=0;a;)r>a._startTime||(a instanceof i?e!==!1&&(n[o++]=a):(s!==!1&&(n[o++]=a),t!==!1&&(n=n.concat(a.getChildren(!0,e,s)),o=n.length))),a=a._next;return n},h.getTweensOf=function(t,e){for(var s=i.getTweensOf(t),r=s.length,n=[],a=0;--r>-1;)(s[r].timeline===this||e&&this._contains(s[r]))&&(n[a++]=s[r]);return n},h._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},h.shiftChildren=function(t,e,i){i=i||0;for(var s,r=this._first,n=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(s in n)n[s]>=i&&(n[s]+=t);return this._uncache(!0)},h._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,r=!1;--s>-1;)i[s]._kill(t,e)&&(r=!0);return r},h.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;--i>-1;)e[i]._enabled(!1,!1);return t!==!1&&(this._labels={}),this._uncache(!0)},h.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},h._enabled=function(t,i){if(t===this._gc)for(var s=this._first;s;)s._enabled(t,!0),s=s._next;return e.prototype._enabled.call(this,t,i)},h.progress=function(t){return arguments.length?this.totalTime(this.duration()*t,!1):this._time/this.duration()},h.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},h.totalDuration=function(t){if(!arguments.length){if(this._dirty){for(var e,i,s=0,r=this._last,n=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>n&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):n=r._startTime,0>r._startTime&&!r._paused&&(s-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),n=0),i=r._startTime+r._totalDuration/r._timeScale,i>s&&(s=i),r=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration}return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this},h.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===t._rootFramesTimeline},h.rawTime=function(){return this._paused||0!==this._totalTime&&this._totalTime!==this._totalDuration?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},s},!0),window._gsDefine("TimelineMax",["TimelineLite","TweenLite","easing.Ease"],function(t,e,i){var s=function(e){t.call(this,e),this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._dirty=!0},r=[],n=new i(null,null,1,0),a=function(t){for(;t;){if(t._paused)return!0;t=t._timeline}return!1},o=s.prototype=new t;return o.constructor=s,o.kill()._gc=!1,s.version="1.9.7",o.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),t.prototype.invalidate.call(this)},o.addCallback=function(t,i,s,r){return this.add(e.delayedCall(0,t,s,r),i)},o.removeCallback=function(t,e){if(null==e)this._kill(null,t);else for(var i=this.getTweensOf(t,!1),s=i.length,r=this._parseTimeOrLabel(e);--s>-1;)i[s]._startTime===r&&i[s]._enabled(!1,!1);return this},o.tweenTo=function(t,i){i=i||{};var s,a,o={ease:n,overwrite:2,useFrames:this.usesFrames(),immediateRender:!1};for(s in i)o[s]=i[s];return o.time=this._parseTimeOrLabel(t),a=new e(this,Math.abs(Number(o.time)-this._time)/this._timeScale||.001,o),o.onStart=function(){a.target.paused(!0),a.vars.time!==a.target.time()&&a.duration(Math.abs(a.vars.time-a.target.time())/a.target._timeScale),i.onStart&&i.onStart.apply(i.onStartScope||a,i.onStartParams||r)},a},o.tweenFromTo=function(t,e,i){i=i||{},t=this._parseTimeOrLabel(t),i.startAt={onComplete:this.seek,onCompleteParams:[t],onCompleteScope:this},i.immediateRender=i.immediateRender!==!1;var s=this.tweenTo(e,i);return s.duration(Math.abs(s.vars.time-t)/this._timeScale||.001)},o.render=function(t,e,i){this._gc&&this._enabled(!0,!1),this._active=!this._paused;var s,n,a,o,h,l,_=this._dirty?this.totalDuration():this._totalDuration,u=this._duration,p=this._time,f=this._totalTime,c=this._startTime,m=this._timeScale,d=this._rawPrevTime,g=this._paused,v=this._cycle;if(t>=_?(this._locked||(this._totalTime=_,this._cycle=this._repeat),this._reversed||this._hasPausedChild()||(n=!0,o="onComplete",0===u&&(0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>0&&(o="onReverseComplete"))),this._rawPrevTime=t,this._yoyo&&0!==(1&this._cycle)?this._time=t=0:(this._time=u,t=u+1e-6)):1e-7>t?(this._locked||(this._totalTime=this._cycle=0),this._time=0,(0!==p||0===u&&this._rawPrevTime>0&&!this._locked)&&(o="onReverseComplete",n=this._reversed),0>t?(this._active=!1,0===u&&this._rawPrevTime>=0&&this._first&&(h=!0)):this._initted||(h=!0),this._rawPrevTime=t,t=0):(this._time=this._rawPrevTime=t,this._locked||(this._totalTime=t,0!==this._repeat&&(l=u+this._repeatDelay,this._cycle=this._totalTime/l>>0,0!==this._cycle&&this._cycle===this._totalTime/l&&this._cycle--,this._time=this._totalTime-this._cycle*l,this._yoyo&&0!==(1&this._cycle)&&(this._time=u-this._time),this._time>u?(this._time=u,t=u+1e-6):0>this._time?this._time=t=0:t=this._time))),this._cycle!==v&&!this._locked){var y=this._yoyo&&0!==(1&v),T=y===(this._yoyo&&0!==(1&this._cycle)),w=this._totalTime,x=this._cycle,b=this._rawPrevTime,P=this._time;this._totalTime=v*u,v>this._cycle?y=!y:this._totalTime+=u,this._time=p,this._rawPrevTime=0===u?d-1e-5:d,this._cycle=v,this._locked=!0,p=y?0:u,this.render(p,e,0===u),e||this._gc||this.vars.onRepeat&&this.vars.onRepeat.apply(this.vars.onRepeatScope||this,this.vars.onRepeatParams||r),T&&(p=y?u+1e-6:-1e-6,this.render(p,!0,!1)),this._time=P,this._totalTime=w,this._cycle=x,this._rawPrevTime=b,this._locked=!1}if(!(this._time!==p&&this._first||i||h))return f!==this._totalTime&&this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),void 0;if(this._initted||(this._initted=!0),0===f&&this.vars.onStart&&0!==this._totalTime&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||r)),this._time>=p)for(s=this._first;s&&(a=s._next,!this._paused||g);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||g);)(s._active||p>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||r)),o&&(this._locked||this._gc||(c===this._startTime||m!==this._timeScale)&&(0===this._time||_>=this.totalDuration())&&(n&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this.vars[o].apply(this.vars[o+"Scope"]||this,this.vars[o+"Params"]||r)))},o.getActive=function(t,e,i){null==t&&(t=!0),null==e&&(e=!0),null==i&&(i=!1);var s,r,n=[],o=this.getChildren(t,e,i),h=0,l=o.length;for(s=0;l>s;s++)r=o[s],r._paused||r._timeline._time>=r._startTime&&r._timeline._timee;e++)if(i[e].time>t)return i[e].name;return null},o.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),i=e.length;--i>-1;)if(t>e[i].time)return e[i].name;return null},o.getLabelsArray=function(){var t,e=[],i=0;for(t in this._labels)e[i++]={time:this._labels[t],name:t};return e.sort(function(t,e){return t.time-e.time}),e},o.progress=function(t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),!1):this._time/this.duration()},o.totalProgress=function(t){return arguments.length?this.totalTime(this.totalDuration()*t,!1):this._totalTime/this.totalDuration()},o.totalDuration=function(e){return arguments.length?-1===this._repeat?this:this.duration((e-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(t.prototype.totalDuration.call(this),this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat),this._totalDuration)},o.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),t>this._duration&&(t=this._duration),this._yoyo&&0!==(1&this._cycle)?t=this._duration-t+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(t+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(t,e)):this._time},o.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},o.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},o.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},o.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.getLabelBefore(this._time+1e-8)},s},!0),function(){var t=180/Math.PI,e=Math.PI/180,i=[],s=[],r=[],n={},a=function(t,e,i,s){this.a=t,this.b=e,this.c=i,this.d=s,this.da=s-t,this.ca=i-t,this.ba=e-t},o=",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",h=function(t,e,i,s){var r={a:t},n={},a={},o={c:s},h=(t+e)/2,l=(e+i)/2,_=(i+s)/2,u=(h+l)/2,p=(l+_)/2,f=(p-u)/8;return r.b=h+(t-h)/4,n.b=u+f,r.c=n.a=(r.b+n.b)/2,n.c=a.a=(u+p)/2,a.b=p-f,o.b=_+(s-_)/4,a.c=o.a=(a.b+o.b)/2,[r,n,a,o]},l=function(t,e,n,a,o){var l,_,u,p,f,c,m,d,g,v,y,T,w,x=t.length-1,b=0,P=t[0].a;for(l=0;x>l;l++)f=t[b],_=f.a,u=f.d,p=t[b+1].d,o?(y=i[l],T=s[l],w=.25*(T+y)*e/(a?.5:r[l]||.5),c=u-(u-_)*(a?.5*e:0!==y?w/y:0),m=u+(p-u)*(a?.5*e:0!==T?w/T:0),d=u-(c+((m-c)*(3*y/(y+T)+.5)/4||0))):(c=u-.5*(u-_)*e,m=u+.5*(p-u)*e,d=u-(c+m)/2),c+=d,m+=d,f.c=g=c,f.b=0!==l?P:P=f.a+.6*(f.c-f.a),f.da=u-_,f.ca=g-_,f.ba=P-_,n?(v=h(_,P,g,u),t.splice(b,1,v[0],v[1],v[2],v[3]),b+=4):b++,P=m;f=t[b],f.b=P,f.c=P+.4*(f.d-P),f.da=f.d-f.a,f.ca=f.c-f.a,f.ba=P-f.a,n&&(v=h(f.a,P,f.c,f.d),t.splice(b,1,v[0],v[1],v[2],v[3]))},_=function(t,e,r,n){var o,h,l,_,u,p,f=[];if(n)for(t=[n].concat(t),h=t.length;--h>-1;)"string"==typeof(p=t[h][e])&&"="===p.charAt(1)&&(t[h][e]=n[e]+Number(p.charAt(0)+p.substr(2)));if(o=t.length-2,0>o)return f[0]=new a(t[0][e],0,0,t[-1>o?0:1][e]),f;for(h=0;o>h;h++)l=t[h][e],_=t[h+1][e],f[h]=new a(l,0,0,_),r&&(u=t[h+2][e],i[h]=(i[h]||0)+(_-l)*(_-l),s[h]=(s[h]||0)+(u-_)*(u-_));return f[h]=new a(t[h][e],0,0,t[h+1][e]),f},u=function(t,e,a,h,u,p){var f,c,m,d,g,v,y,T,w={},x=[],b=p||t[0];u="string"==typeof u?","+u+",":o,null==e&&(e=1);for(c in t[0])x.push(c);if(t.length>1){for(T=t[t.length-1],y=!0,f=x.length;--f>-1;)if(c=x[f],Math.abs(b[c]-T[c])>.05){y=!1;break}y&&(t=t.concat(),p&&t.unshift(p),t.push(t[1]),p=t[t.length-3])}for(i.length=s.length=r.length=0,f=x.length;--f>-1;)c=x[f],n[c]=-1!==u.indexOf(","+c+","),w[c]=_(t,c,n[c],p);for(f=i.length;--f>-1;)i[f]=Math.sqrt(i[f]),s[f]=Math.sqrt(s[f]);if(!h){for(f=x.length;--f>-1;)if(n[c])for(m=w[x[f]],v=m.length-1,d=0;v>d;d++)g=m[d+1].da/s[d]+m[d].da/i[d],r[d]=(r[d]||0)+g*g;for(f=r.length;--f>-1;)r[f]=Math.sqrt(r[f])}for(f=x.length,d=a?4:1;--f>-1;)c=x[f],m=w[c],l(m,e,a,h,n[c]),y&&(m.splice(0,d),m.splice(m.length-d,d));return w},p=function(t,e,i){e=e||"soft";var s,r,n,o,h,l,_,u,p,f,c,m={},d="cubic"===e?3:2,g="soft"===e,v=[];if(g&&i&&(t=[i].concat(t)),null==t||d+1>t.length)throw"invalid Bezier data";for(p in t[0])v.push(p);for(l=v.length;--l>-1;){for(p=v[l],m[p]=h=[],f=0,u=t.length,_=0;u>_;_++)s=null==i?t[_][p]:"string"==typeof(c=t[_][p])&&"="===c.charAt(1)?i[p]+Number(c.charAt(0)+c.substr(2)):Number(c),g&&_>1&&u-1>_&&(h[f++]=(s+h[f-2])/2),h[f++]=s;for(u=f-d+1,f=0,_=0;u>_;_+=d)s=h[_],r=h[_+1],n=h[_+2],o=2===d?0:h[_+3],h[f++]=c=3===d?new a(s,r,n,o):new a(s,(2*r+s)/3,(2*r+n)/3,n);h.length=f}return m},f=function(t,e,i){for(var s,r,n,a,o,h,l,_,u,p,f,c=1/i,m=t.length;--m>-1;)for(p=t[m],n=p.a,a=p.d-n,o=p.c-n,h=p.b-n,s=r=0,_=1;i>=_;_++)l=c*_,u=1-l,s=r-(r=(l*l*a+3*u*(l*o+u*h))*l),f=m*i+_-1,e[f]=(e[f]||0)+s*s},c=function(t,e){e=e>>0||6;var i,s,r,n,a=[],o=[],h=0,l=0,_=e-1,u=[],p=[];for(i in t)f(t[i],a,e);for(r=a.length,s=0;r>s;s++)h+=Math.sqrt(a[s]),n=s%e,p[n]=h,n===_&&(l+=h,n=s/e>>0,u[n]=p,o[n]=l,h=0,p=[]);return{length:l,lengths:o,segments:u}},m=window._gsDefine.plugin({propName:"bezier",priority:-1,API:2,global:!0,init:function(t,e,i){this._target=t,e instanceof Array&&(e={values:e}),this._func={},this._round={},this._props=[],this._timeRes=null==e.timeResolution?6:parseInt(e.timeResolution,10);var s,r,n,a,o,h=e.values||[],l={},_=h[0],f=e.autoRotate||i.vars.orientToBezier;this._autoRotate=f?f instanceof Array?f:[["x","y","rotation",f===!0?0:Number(f)||0]]:null;for(s in _)this._props.push(s);for(n=this._props.length;--n>-1;)s=this._props[n],this._overwriteProps.push(s),r=this._func[s]="function"==typeof t[s],l[s]=r?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]():parseFloat(t[s]),o||l[s]!==h[0][s]&&(o=l);if(this._beziers="cubic"!==e.type&&"quadratic"!==e.type&&"soft"!==e.type?u(h,isNaN(e.curviness)?1:e.curviness,!1,"thruBasic"===e.type,e.correlate,o):p(h,e.type,l),this._segCount=this._beziers[s].length,this._timeRes){var m=c(this._beziers,this._timeRes);this._length=m.length,this._lengths=m.lengths,this._segments=m.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(f=this._autoRotate)for(f[0]instanceof Array||(this._autoRotate=f=[f]),n=f.length;--n>-1;)for(a=0;3>a;a++)s=f[n][a],this._func[s]="function"==typeof t[s]?t[s.indexOf("set")||"function"!=typeof t["get"+s.substr(3)]?s:"get"+s.substr(3)]:!1;return!0},set:function(e){var i,s,r,n,a,o,h,l,_,u,p=this._segCount,f=this._func,c=this._target;if(this._timeRes){if(_=this._lengths,u=this._curSeg,e*=this._length,r=this._li,e>this._l2&&p-1>r){for(l=p-1;l>r&&e>=(this._l2=_[++r]););this._l1=_[r-1],this._li=r,this._curSeg=u=this._segments[r],this._s2=u[this._s1=this._si=0]}else if(this._l1>e&&r>0){for(;r>0&&(this._l1=_[--r])>=e;);0===r&&this._l1>e?this._l1=0:r++,this._l2=_[r],this._li=r,this._curSeg=u=this._segments[r],this._s1=u[(this._si=u.length-1)-1]||0,this._s2=u[this._si]}if(i=r,e-=this._l1,r=this._si,e>this._s2&&u.length-1>r){for(l=u.length-1;l>r&&e>=(this._s2=u[++r]););this._s1=u[r-1],this._si=r}else if(this._s1>e&&r>0){for(;r>0&&(this._s1=u[--r])>=e;);0===r&&this._s1>e?this._s1=0:r++,this._s2=u[r],this._si=r}o=(r+(e-this._s1)/(this._s2-this._s1))*this._prec}else i=0>e?0:e>=1?p-1:p*e>>0,o=(e-i*(1/p))*p;for(s=1-o,r=this._props.length;--r>-1;)n=this._props[r],a=this._beziers[n][i],h=(o*o*a.da+3*s*(o*a.ca+s*a.ba))*o+a.a,this._round[n]&&(h=h+(h>0?.5:-.5)>>0),f[n]?c[n](h):c[n]=h;if(this._autoRotate){var m,d,g,v,y,T,w,x=this._autoRotate;for(r=x.length;--r>-1;)n=x[r][2],T=x[r][3]||0,w=x[r][4]===!0?1:t,a=this._beziers[x[r][0]],m=this._beziers[x[r][1]],a&&m&&(a=a[i],m=m[i],d=a.a+(a.b-a.a)*o,v=a.b+(a.c-a.b)*o,d+=(v-d)*o,v+=(a.c+(a.d-a.c)*o-v)*o,g=m.a+(m.b-m.a)*o,y=m.b+(m.c-m.b)*o,g+=(y-g)*o,y+=(m.c+(m.d-m.c)*o-y)*o,h=Math.atan2(y-g,v-d)*w+T,f[n]?c[n](h):c[n]=h)}}}),d=m.prototype;m.bezierThrough=u,m.cubicToQuadratic=h,m._autoCSS=!0,m.quadraticToCubic=function(t,e,i){return new a(t,(2*e+t)/3,(2*e+i)/3,i)},m._cssRegister=function(){var t=window._gsDefine.globals.CSSPlugin;if(t){var i=t._internals,s=i._parseToProxy,r=i._setPluginRatio,n=i.CSSPropTween;i._registerComplexSpecialProp("bezier",{parser:function(t,i,a,o,h,l){i instanceof Array&&(i={values:i}),l=new m;var _,u,p,f=i.values,c=f.length-1,d=[],g={};if(0>c)return h;for(_=0;c>=_;_++)p=s(t,f[_],o,h,l,c!==_),d[_]=p.end;for(u in i)g[u]=i[u];return g.values=d,h=new n(t,"bezier",0,0,p.pt,2),h.data=p,h.plugin=l,h.setRatio=r,0===g.autoRotate&&(g.autoRotate=!0),!g.autoRotate||g.autoRotate instanceof Array||(_=g.autoRotate===!0?0:Number(g.autoRotate)*e,g.autoRotate=null!=p.end.left?[["left","top","rotation",_,!0]]:null!=p.end.x?[["x","y","rotation",_,!0]]:!1),g.autoRotate&&(o._transform||o._enableTransforms(!1),p.autoRotate=o._target._gsTransform),l._onInitTween(p.proxy,g,o._tween),h}})}},d._roundProps=function(t,e){for(var i=this._overwriteProps,s=i.length;--s>-1;)(t[i[s]]||t.bezier||t.bezierThrough)&&(this._round[i[s]]=e)},d._kill=function(t){var e,i,s=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],i=s.length;--i>-1;)s[i]===e&&s.splice(i,1);return this._super._kill.call(this,t)}}(),window._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(t,e){var i,s,r,n,a=function(){t.call(this,"css"),this._overwriteProps.length=0},o={},h=a.prototype=new t("css");h.constructor=a,a.version="1.9.7",a.API=2,a.defaultTransformPerspective=0,h="px",a.suffixMap={top:h,right:h,bottom:h,left:h,width:h,height:h,fontSize:h,padding:h,margin:h,perspective:h}; +var l,_,u,p,f,c,m=/(?:\d|\-\d|\.\d|\-\.\d)+/g,d=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,g=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,v=/[^\d\-\.]/g,y=/(?:\d|\-|\+|=|#|\.)*/g,T=/opacity *= *([^)]*)/,w=/opacity:([^;]*)/,x=/alpha\(opacity *=.+?\)/i,b=/^(rgb|hsl)/,P=/([A-Z])/g,k=/-([a-z])/gi,R=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,S=function(t,e){return e.toUpperCase()},A=/(?:Left|Right|Width)/i,C=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,O=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,D=/,(?=[^\)]*(?:\(|$))/gi,M=Math.PI/180,I=180/Math.PI,F={},E=document,N=E.createElement("div"),L=E.createElement("img"),X=a._internals={_specialProps:o},U=navigator.userAgent,z=function(){var t,e=U.indexOf("Android"),i=E.createElement("div");return u=-1!==U.indexOf("Safari")&&-1===U.indexOf("Chrome")&&(-1===e||Number(U.substr(e+8,1))>3),f=u&&6>Number(U.substr(U.indexOf("Version/")+8,1)),p=-1!==U.indexOf("Firefox"),/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U),c=parseFloat(RegExp.$1),i.innerHTML="a",t=i.getElementsByTagName("a")[0],t?/^0.55/.test(t.style.opacity):!1}(),Y=function(t){return T.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1},B=function(t){window.console&&console.log(t)},j="",q="",V=function(t,e){e=e||N;var i,s,r=e.style;if(void 0!==r[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],s=5;--s>-1&&void 0===r[i[s]+t];);return s>=0?(q=3===s?"ms":i[s],j="-"+q.toLowerCase()+"-",q+t):null},Z=E.defaultView?E.defaultView.getComputedStyle:function(){},G=a.getStyle=function(t,e,i,s,r){var n;return z||"opacity"!==e?(!s&&t.style[e]?n=t.style[e]:(i=i||Z(t,null))?(t=i.getPropertyValue(e.replace(P,"-$1").toLowerCase()),n=t||i.length?t:i[e]):t.currentStyle&&(i=t.currentStyle,n=i[e]),null==r||n&&"none"!==n&&"auto"!==n&&"auto auto"!==n?n:r):Y(t)},$=function(t,e,i,s,r){if("px"===s||!s)return i;if("auto"===s||!i)return 0;var n,a=A.test(e),o=t,h=N.style,l=0>i;return l&&(i=-i),"%"===s&&-1!==e.indexOf("border")?n=i/100*(a?t.clientWidth:t.clientHeight):(h.cssText="border-style:solid; border-width:0; position:absolute; line-height:0;","%"!==s&&o.appendChild?h[a?"borderLeftWidth":"borderTopWidth"]=i+s:(o=t.parentNode||E.body,h[a?"width":"height"]=i+s),o.appendChild(N),n=parseFloat(N[a?"offsetWidth":"offsetHeight"]),o.removeChild(N),0!==n||r||(n=$(t,e,i,s,!0))),l?-n:n},Q=function(t,e,i){if("absolute"!==G(t,"position",i))return 0;var s="left"===e?"Left":"Top",r=G(t,"margin"+s,i);return t["offset"+s]-($(t,e,parseFloat(r),r.replace(y,""))||0)},W=function(t,e){var i,s,r={};if(e=e||Z(t,null))if(i=e.length)for(;--i>-1;)r[e[i].replace(k,S)]=e.getPropertyValue(e[i]);else for(i in e)r[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)r[i.replace(k,S)]=e[i];return z||(r.opacity=Y(t)),s=be(t,e,!1),r.rotation=s.rotation*I,r.skewX=s.skewX*I,r.scaleX=s.scaleX,r.scaleY=s.scaleY,r.x=s.x,r.y=s.y,xe&&(r.z=s.z,r.rotationX=s.rotationX*I,r.rotationY=s.rotationY*I,r.scaleZ=s.scaleZ),r.filters&&delete r.filters,r},H=function(t,e,i,s,r){var n,a,o,h={},l=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(n=i[a])||r&&r[a])&&-1===a.indexOf("Origin")&&("number"==typeof n||"string"==typeof n)&&(h[a]="auto"!==n||"left"!==a&&"top"!==a?""!==n&&"auto"!==n&&"none"!==n||"string"!=typeof e[a]||""===e[a].replace(v,"")?n:0:Q(t,a),void 0!==l[a]&&(o=new ue(l,a,l[a],o)));if(s)for(a in s)"className"!==a&&(h[a]=s[a]);return{difs:h,firstMPT:o}},K={width:["Left","Right"],height:["Top","Bottom"]},J=["marginLeft","marginRight","marginTop","marginBottom"],te=function(t,e,i){var s=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),r=K[e],n=r.length;for(i=i||Z(t,null);--n>-1;)s-=parseFloat(G(t,"padding"+r[n],i,!0))||0,s-=parseFloat(G(t,"border"+r[n]+"Width",i,!0))||0;return s},ee=function(t,e){(null==t||""===t||"auto"===t||"auto auto"===t)&&(t="0 0");var i=t.split(" "),s=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":i[0],r=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":i[1];return null==r?r="0":"center"===r&&(r="50%"),("center"===s||isNaN(parseFloat(s)))&&(s="50%"),e&&(e.oxp=-1!==s.indexOf("%"),e.oyp=-1!==r.indexOf("%"),e.oxr="="===s.charAt(1),e.oyr="="===r.charAt(1),e.ox=parseFloat(s.replace(v,"")),e.oy=parseFloat(r.replace(v,""))),s+" "+r+(i.length>2?" "+i[2]:"")},ie=function(t,e){return"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2)):parseFloat(t)-parseFloat(e)},se=function(t,e){return null==t?e:"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*Number(t.substr(2))+e:parseFloat(t)},re=function(t,e,i,s){var r,n,a,o,h=1e-6;return null==t?o=e:"number"==typeof t?o=t*M:(r=2*Math.PI,n=t.split("_"),a=Number(n[0].replace(v,""))*(-1===t.indexOf("rad")?M:1)-("="===t.charAt(1)?0:e),n.length&&(s&&(s[i]=e+a),-1!==t.indexOf("short")&&(a%=r,a!==a%(r/2)&&(a=0>a?a+r:a-r)),-1!==t.indexOf("_cw")&&0>a?a=(a+9999999999*r)%r-(0|a/r)*r:-1!==t.indexOf("ccw")&&a>0&&(a=(a-9999999999*r)%r-(0|a/r)*r)),o=e+a),h>o&&o>-h&&(o=0),o},ne={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ae=function(t,e,i){return t=0>t?t+1:t>1?t-1:t,0|255*(1>6*t?e+6*(i-e)*t:.5>t?i:2>3*t?e+6*(i-e)*(2/3-t):e)+.5},oe=function(t){var e,i,s,r,n,a;return t&&""!==t?"number"==typeof t?[t>>16,255&t>>8,255&t]:(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),ne[t]?ne[t]:"#"===t.charAt(0)?(4===t.length&&(e=t.charAt(1),i=t.charAt(2),s=t.charAt(3),t="#"+e+e+i+i+s+s),t=parseInt(t.substr(1),16),[t>>16,255&t>>8,255&t]):"hsl"===t.substr(0,3)?(t=t.match(m),r=Number(t[0])%360/360,n=Number(t[1])/100,a=Number(t[2])/100,i=.5>=a?a*(n+1):a+n-a*n,e=2*a-i,t.length>3&&(t[3]=Number(t[3])),t[0]=ae(r+1/3,e,i),t[1]=ae(r,e,i),t[2]=ae(r-1/3,e,i),t):(t=t.match(m)||ne.transparent,t[0]=Number(t[0]),t[1]=Number(t[1]),t[2]=Number(t[2]),t.length>3&&(t[3]=Number(t[3])),t)):ne.black},he="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";for(h in ne)he+="|"+h+"\\b";he=RegExp(he+")","gi");var le=function(t,e,i,s){if(null==t)return function(t){return t};var r,n=e?(t.match(he)||[""])[0]:"",a=t.split(n).join("").match(g)||[],o=t.substr(0,t.indexOf(a[0])),h=")"===t.charAt(t.length-1)?")":"",l=-1!==t.indexOf(" ")?" ":",",_=a.length,u=_>0?a[0].replace(m,""):"";return _?r=e?function(t){var e,p,f,c;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(c=t.replace(D,"|").split("|"),f=0;c.length>f;f++)c[f]=r(c[f]);return c.join(",")}if(e=(t.match(he)||[n])[0],p=t.split(e).join("").match(g)||[],f=p.length,_>f--)for(;_>++f;)p[f]=i?p[0|(f-1)/2]:a[f];return o+p.join(l)+l+e+h+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,n,p;if("number"==typeof t)t+=u;else if(s&&D.test(t)){for(n=t.replace(D,"|").split("|"),p=0;n.length>p;p++)n[p]=r(n[p]);return n.join(",")}if(e=t.match(g)||[],p=e.length,_>p--)for(;_>++p;)e[p]=i?e[0|(p-1)/2]:a[p];return o+e.join(l)+h}:function(t){return t}},_e=function(t){return t=t.split(","),function(e,i,s,r,n,a,o){var h,l=(i+"").split(" ");for(o={},h=0;4>h;h++)o[t[h]]=l[h]=l[h]||l[(h-1)/2>>0];return r.parse(e,o,n,a)}},ue=(X._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,s,r,n=this.data,a=n.proxy,o=n.firstMPT,h=1e-6;o;)e=a[o.v],o.r?e=e>0?0|e+.5:0|e-.5:h>e&&e>-h&&(e=0),o.t[o.p]=e,o=o._next;if(n.autoRotate&&(n.autoRotate.rotation=a.rotation),1===t)for(o=n.firstMPT;o;){if(i=o.t,i.type){if(1===i.type){for(r=i.xs0+i.s+i.xs1,s=1;i.l>s;s++)r+=i["xn"+s]+i["xs"+(s+1)];i.e=r}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,s,r){this.t=t,this.p=e,this.v=i,this.r=r,s&&(s._prev=this,this._next=s)}),pe=(X._parseToProxy=function(t,e,i,s,r,n){var a,o,h,l,_,u=s,p={},f={},c=i._transform,m=F;for(i._transform=null,F=e,s=_=i.parse(t,e,s,r),F=m,n&&(i._transform=c,u&&(u._prev=null,u._prev&&(u._prev._next=null)));s&&s!==u;){if(1>=s.type&&(o=s.p,f[o]=s.s+s.c,p[o]=s.s,n||(l=new ue(s,"s",o,l,s.r),s.c=0),1===s.type))for(a=s.l;--a>0;)h="xn"+a,o=s.p+"_"+h,f[o]=s.data[h],p[o]=s[h],n||(l=new ue(s,h,o,l,s.rxp[h]));s=s._next}return{proxy:p,end:f,firstMPT:l,pt:_}},X.CSSPropTween=function(t,e,s,r,a,o,h,l,_,u,p){this.t=t,this.p=e,this.s=s,this.c=r,this.n=h||"css_"+e,t instanceof pe||n.push(this.n),this.r=l,this.type=o||0,_&&(this.pr=_,i=!0),this.b=void 0===u?s:u,this.e=void 0===p?s+r:p,a&&(this._next=a,a._prev=this)}),fe=a.parseComplex=function(t,e,i,s,r,n,a,o,h,_){i=i||n||"",a=new pe(t,e,0,0,a,_?2:1,null,!1,o,i,s),s+="";var u,p,f,c,g,v,y,T,w,x,P,k,R=i.split(", ").join(",").split(" "),S=s.split(", ").join(",").split(" "),A=R.length,C=l!==!1;for((-1!==s.indexOf(",")||-1!==i.indexOf(","))&&(R=R.join(" ").replace(D,", ").split(" "),S=S.join(" ").replace(D,", ").split(" "),A=R.length),A!==S.length&&(R=(n||"").split(" "),A=R.length),a.plugin=h,a.setRatio=_,u=0;A>u;u++)if(c=R[u],g=S[u],T=parseFloat(c),T||0===T)a.appendXtra("",T,ie(g,T),g.replace(d,""),C&&-1!==g.indexOf("px"),!0);else if(r&&("#"===c.charAt(0)||ne[c]||b.test(c)))k=","===g.charAt(g.length-1)?"),":")",c=oe(c),g=oe(g),w=c.length+g.length>6,w&&!z&&0===g[3]?(a["xs"+a.l]+=a.l?" transparent":"transparent",a.e=a.e.split(S[u]).join("transparent")):(z||(w=!1),a.appendXtra(w?"rgba(":"rgb(",c[0],g[0]-c[0],",",!0,!0).appendXtra("",c[1],g[1]-c[1],",",!0).appendXtra("",c[2],g[2]-c[2],w?",":k,!0),w&&(c=4>c.length?1:c[3],a.appendXtra("",c,(4>g.length?1:g[3])-c,k,!1)));else if(v=c.match(m)){if(y=g.match(d),!y||y.length!==v.length)return a;for(f=0,p=0;v.length>p;p++)P=v[p],x=c.indexOf(P,f),a.appendXtra(c.substr(f,x-f),Number(P),ie(y[p],P),"",C&&"px"===c.substr(x+P.length,2),0===p),f=x+P.length;a["xs"+a.l]+=c.substr(f)}else a["xs"+a.l]+=a.l?" "+c:c;if(-1!==s.indexOf("=")&&a.data){for(k=a.xs0+a.data.s,u=1;a.l>u;u++)k+=a["xs"+u]+a.data["xn"+u];a.e=k+a["xs"+u]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},ce=9;for(h=pe.prototype,h.l=h.pr=0;--ce>0;)h["xn"+ce]=0,h["xs"+ce]="";h.xs0="",h._next=h._prev=h.xfirst=h.data=h.plugin=h.setRatio=h.rxp=null,h.appendXtra=function(t,e,i,s,r,n){var a=this,o=a.l;return a["xs"+o]+=n&&o?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=s||"",o>0?(a.data["xn"+o]=e+i,a.rxp["xn"+o]=r,a["xn"+o]=e,a.plugin||(a.xfirst=new pe(a,"xn"+o,e,i,a.xfirst||a,0,a.n,r,a.pr),a.xfirst.xs0=0),a):(a.data={s:e+i},a.rxp={},a.s=e,a.c=i,a.r=r,a)):(a["xs"+o]+=e+(s||""),a)};var me=function(t,e){e=e||{},this.p=e.prefix?V(t)||t:t,o[t]=o[this.p]=this,this.format=e.formatter||le(e.defaultValue,e.color,e.collapsible,e.multi),e.parser&&(this.parse=e.parser),this.clrs=e.color,this.multi=e.multi,this.keyword=e.keyword,this.dflt=e.defaultValue,this.pr=e.priority||0},de=X._registerComplexSpecialProp=function(t,e,i){"object"!=typeof e&&(e={parser:i});var s,r,n=t.split(","),a=e.defaultValue;for(i=i||[a],s=0;n.length>s;s++)e.prefix=0===s&&e.prefix,e.defaultValue=i[s]||a,r=new me(n[s],e)},ge=function(t){if(!o[t]){var e=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin";de(t,{parser:function(t,i,s,r,n,a,h){var l=(window.GreenSockGlobals||window).com.greensock.plugins[e];return l?(l._cssRegister(),o[s].parse(t,i,s,r,n,a,h)):(B("Error: "+e+" js file not loaded."),n)}})}};h=me.prototype,h.parseComplex=function(t,e,i,s,r,n){var a,o,h,l,_,u,p=this.keyword;if(this.multi&&(D.test(i)||D.test(e)?(o=e.replace(D,"|").split("|"),h=i.replace(D,"|").split("|")):p&&(o=[e],h=[i])),h){for(l=h.length>o.length?h.length:o.length,a=0;l>a;a++)e=o[a]=o[a]||this.dflt,i=h[a]=h[a]||this.dflt,p&&(_=e.indexOf(p),u=i.indexOf(p),_!==u&&(i=-1===u?h:o,i[a]+=" "+p));e=o.join(", "),i=h.join(", ")}return fe(t,this.p,e,i,this.clrs,this.dflt,s,this.pr,r,n)},h.parse=function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,this.p,r,!1,this.dflt)),this.format(e),n,a)},a.registerSpecialProp=function(t,e,i){de(t,{parser:function(t,s,r,n,a,o){var h=new pe(t,r,0,0,a,2,r,!1,i);return h.plugin=o,h.setRatio=e(t,s,n._tween,r),h},priority:i})};var ve="scaleX,scaleY,scaleZ,x,y,z,skewX,rotation,rotationX,rotationY,perspective".split(","),ye=V("transform"),Te=j+"transform",we=V("transformOrigin"),xe=null!==V("perspective"),be=function(t,e,i){var s,r,n,o,h,l,_,u,p,f,c,m,d,g=i?t._gsTransform||{skewY:0}:{skewY:0},v=0>g.scaleX,y=2e-5,T=1e5,w=-Math.PI+1e-4,x=Math.PI-1e-4,b=xe?parseFloat(G(t,we,e,!1,"0 0 0").split(" ")[2])||g.zOrigin||0:0;if(ye)s=G(t,Te,e,!0);else if(t.currentStyle)if(s=t.currentStyle.filter.match(C),s&&4===s.length)s=[s[0].substr(4),Number(s[2].substr(4)),Number(s[1].substr(4)),s[3].substr(4),g.x||0,g.y||0].join(",");else{if(null!=g.x)return g;s=""}for(r=(s||"").match(/(?:\-|\b)[\d\-\.e]+\b/gi)||[],n=r.length;--n>-1;)o=Number(r[n]),r[n]=(h=o-(o|=0))?(0|h*T+(0>h?-.5:.5))/T+o:o;if(16===r.length){var P=r[8],k=r[9],R=r[10],S=r[12],A=r[13],O=r[14];if(g.zOrigin&&(O=-g.zOrigin,S=P*O-r[12],A=k*O-r[13],O=R*O+g.zOrigin-r[14]),!i||null==g.rotationX){var D,M,I,F,E,N,L,X=r[0],U=r[1],z=r[2],Y=r[3],B=r[4],j=r[5],q=r[6],V=r[7],Z=r[11],$=g.rotationX=Math.atan2(q,R),Q=w>$||$>x;$&&(F=Math.cos(-$),E=Math.sin(-$),D=B*F+P*E,M=j*F+k*E,I=q*F+R*E,P=B*-E+P*F,k=j*-E+k*F,R=q*-E+R*F,Z=V*-E+Z*F,B=D,j=M,q=I),$=g.rotationY=Math.atan2(P,X),$&&(N=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),D=X*F-P*E,M=U*F-k*E,I=z*F-R*E,k=U*E+k*F,R=z*E+R*F,Z=Y*E+Z*F,X=D,U=M,z=I),$=g.rotation=Math.atan2(U,j),$&&(L=w>$||$>x,F=Math.cos(-$),E=Math.sin(-$),X=X*F+B*E,M=U*F+j*E,j=U*-E+j*F,q=z*-E+q*F,U=M),L&&Q?g.rotation=g.rotationX=0:L&&N?g.rotation=g.rotationY=0:N&&Q&&(g.rotationY=g.rotationX=0),g.scaleX=(0|Math.sqrt(X*X+U*U)*T+.5)/T,g.scaleY=(0|Math.sqrt(j*j+k*k)*T+.5)/T,g.scaleZ=(0|Math.sqrt(q*q+R*R)*T+.5)/T,g.skewX=0,g.perspective=Z?1/(0>Z?-Z:Z):0,g.x=S,g.y=A,g.z=O}}else if(!(xe&&0!==r.length&&g.x===r[4]&&g.y===r[5]&&(g.rotationX||g.rotationY)||void 0!==g.x&&"none"===G(t,"display",e))){var W=r.length>=6,H=W?r[0]:1,K=r[1]||0,J=r[2]||0,te=W?r[3]:1;g.x=r[4]||0,g.y=r[5]||0,l=Math.sqrt(H*H+K*K),_=Math.sqrt(te*te+J*J),u=H||K?Math.atan2(K,H):g.rotation||0,p=J||te?Math.atan2(J,te)+u:g.skewX||0,f=l-Math.abs(g.scaleX||0),c=_-Math.abs(g.scaleY||0),Math.abs(p)>Math.PI/2&&Math.abs(p)<1.5*Math.PI&&(v?(l*=-1,p+=0>=u?Math.PI:-Math.PI,u+=0>=u?Math.PI:-Math.PI):(_*=-1,p+=0>=p?Math.PI:-Math.PI)),m=(u-g.rotation)%Math.PI,d=(p-g.skewX)%Math.PI,(void 0===g.skewX||f>y||-y>f||c>y||-y>c||m>w&&x>m&&false|m*T||d>w&&x>d&&false|d*T)&&(g.scaleX=l,g.scaleY=_,g.rotation=u,g.skewX=p),xe&&(g.rotationX=g.rotationY=g.z=0,g.perspective=parseFloat(a.defaultTransformPerspective)||0,g.scaleZ=1)}g.zOrigin=b;for(n in g)y>g[n]&&g[n]>-y&&(g[n]=0);return i&&(t._gsTransform=g),g},Pe=function(t){var e,i,s=this.data,r=-s.rotation,n=r+s.skewX,a=1e5,o=(0|Math.cos(r)*s.scaleX*a)/a,h=(0|Math.sin(r)*s.scaleX*a)/a,l=(0|Math.sin(n)*-s.scaleY*a)/a,_=(0|Math.cos(n)*s.scaleY*a)/a,u=this.t.style,p=this.t.currentStyle;if(p){i=h,h=-l,l=-i,e=p.filter,u.filter="";var f,m,d=this.t.offsetWidth,g=this.t.offsetHeight,v="absolute"!==p.position,w="progid:DXImageTransform.Microsoft.Matrix(M11="+o+", M12="+h+", M21="+l+", M22="+_,x=s.x,b=s.y;if(null!=s.ox&&(f=(s.oxp?.01*d*s.ox:s.ox)-d/2,m=(s.oyp?.01*g*s.oy:s.oy)-g/2,x+=f-(f*o+m*h),b+=m-(f*l+m*_)),v)f=d/2,m=g/2,w+=", Dx="+(f-(f*o+m*h)+x)+", Dy="+(m-(f*l+m*_)+b)+")";else{var P,k,R,S=8>c?1:-1;for(f=s.ieOffsetX||0,m=s.ieOffsetY||0,s.ieOffsetX=Math.round((d-((0>o?-o:o)*d+(0>h?-h:h)*g))/2+x),s.ieOffsetY=Math.round((g-((0>_?-_:_)*g+(0>l?-l:l)*d))/2+b),ce=0;4>ce;ce++)k=J[ce],P=p[k],i=-1!==P.indexOf("px")?parseFloat(P):$(this.t,k,parseFloat(P),P.replace(y,""))||0,R=i!==s[k]?2>ce?-s.ieOffsetX:-s.ieOffsetY:2>ce?f-s.ieOffsetX:m-s.ieOffsetY,u[k]=(s[k]=Math.round(i-R*(0===ce||2===ce?1:S)))+"px";w+=", sizingMethod='auto expand')"}u.filter=-1!==e.indexOf("DXImageTransform.Microsoft.Matrix(")?e.replace(O,w):w+" "+e,(0===t||1===t)&&1===o&&0===h&&0===l&&1===_&&(v&&-1===w.indexOf("Dx=0, Dy=0")||T.test(e)&&100!==parseFloat(RegExp.$1)||-1===e.indexOf("gradient(")&&u.removeAttribute("filter"))}},ke=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t.style,u=l.perspective,f=l.scaleX,c=0,m=0,d=0,g=0,v=l.scaleY,y=0,T=0,w=0,x=0,b=l.scaleZ,P=0,k=0,R=0,S=u?-1/u:0,A=l.rotation,C=l.zOrigin,O=1e5;p&&(a=_.top?"top":_.bottom?"bottom":parseFloat(G(this.t,"top",null,!1))?"bottom":"top",i=G(this.t,a,null,!1),o=parseFloat(i)||0,h=i.substr((o+"").length)||"px",l._ffFix=!l._ffFix,_[a]=(l._ffFix?o+.05:o-.05)+h),(A||l.skewX)&&(i=f*Math.cos(A),s=v*Math.sin(A),A-=l.skewX,c=f*-Math.sin(A),v*=Math.cos(A),f=i,g=s),A=l.rotationY,A&&(t=Math.cos(A),e=Math.sin(A),i=f*t,s=g*t,r=b*-e,n=S*-e,m=f*e,y=g*e,b*=t,S*=t,f=i,g=s,w=r,k=n),A=l.rotationX,A&&(t=Math.cos(A),e=Math.sin(A),i=c*t+m*e,s=v*t+y*e,r=x*t+b*e,n=R*t+S*e,m=c*-e+m*t,y=v*-e+y*t,b=x*-e+b*t,S=R*-e+S*t,c=i,v=s,x=r,R=n),C&&(P-=C,d=m*P,T=y*P,P=b*P+C),d=(i=(d+=l.x)-(d|=0))?(0|i*O+(0>i?-.5:.5))/O+d:d,T=(i=(T+=l.y)-(T|=0))?(0|i*O+(0>i?-.5:.5))/O+T:T,P=(i=(P+=l.z)-(P|=0))?(0|i*O+(0>i?-.5:.5))/O+P:P,_[ye]="matrix3d("+[(0|f*O)/O,(0|g*O)/O,(0|w*O)/O,(0|k*O)/O,(0|c*O)/O,(0|v*O)/O,(0|x*O)/O,(0|R*O)/O,(0|m*O)/O,(0|y*O)/O,(0|b*O)/O,(0|S*O)/O,d,T,P,u?1+-P/u:1].join(",")+")"},Re=function(){var t,e,i,s,r,n,a,o,h,l=this.data,_=this.t,u=_.style;p&&(t=u.top?"top":u.bottom?"bottom":parseFloat(G(_,"top",null,!1))?"bottom":"top",e=G(_,t,null,!1),i=parseFloat(e)||0,s=e.substr((i+"").length)||"px",l._ffFix=!l._ffFix,u[t]=(l._ffFix?i+.05:i-.05)+s),l.rotation||l.skewX?(r=l.rotation,n=r-l.skewX,a=1e5,o=l.scaleX*a,h=l.scaleY*a,u[ye]="matrix("+(0|Math.cos(r)*o)/a+","+(0|Math.sin(r)*o)/a+","+(0|Math.sin(n)*-h)/a+","+(0|Math.cos(n)*h)/a+","+l.x+","+l.y+")"):u[ye]="matrix("+l.scaleX+",0,0,"+l.scaleY+","+l.x+","+l.y+")"};de("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation",{parser:function(t,e,i,s,n,a,o){if(s._transform)return n;var h,l,_,u,p,f,c,m=s._transform=be(t,r,!0),d=t.style,g=1e-6,v=ve.length,y=o,T={};if("string"==typeof y.transform&&ye)_=d.cssText,d[ye]=y.transform,d.display="block",h=be(t,null,!1),d.cssText=_;else if("object"==typeof y){if(h={scaleX:se(null!=y.scaleX?y.scaleX:y.scale,m.scaleX),scaleY:se(null!=y.scaleY?y.scaleY:y.scale,m.scaleY),scaleZ:se(null!=y.scaleZ?y.scaleZ:y.scale,m.scaleZ),x:se(y.x,m.x),y:se(y.y,m.y),z:se(y.z,m.z),perspective:se(y.transformPerspective,m.perspective)},c=y.directionalRotation,null!=c)if("object"==typeof c)for(_ in c)y[_]=c[_];else y.rotation=c;h.rotation=re("rotation"in y?y.rotation:"shortRotation"in y?y.shortRotation+"_short":"rotationZ"in y?y.rotationZ:m.rotation*I,m.rotation,"rotation",T),xe&&(h.rotationX=re("rotationX"in y?y.rotationX:"shortRotationX"in y?y.shortRotationX+"_short":m.rotationX*I||0,m.rotationX,"rotationX",T),h.rotationY=re("rotationY"in y?y.rotationY:"shortRotationY"in y?y.shortRotationY+"_short":m.rotationY*I||0,m.rotationY,"rotationY",T)),h.skewX=null==y.skewX?m.skewX:re(y.skewX,m.skewX),h.skewY=null==y.skewY?m.skewY:re(y.skewY,m.skewY),(l=h.skewY-m.skewY)&&(h.skewX+=l,h.rotation+=l)}for(p=m.z||m.rotationX||m.rotationY||h.z||h.rotationX||h.rotationY||h.perspective,p||null==y.scale||(h.scaleZ=1);--v>-1;)i=ve[v],u=h[i]-m[i],(u>g||-g>u||null!=F[i])&&(f=!0,n=new pe(m,i,m[i],u,n),i in T&&(n.e=T[i]),n.xs0=0,n.plugin=a,s._overwriteProps.push(n.n));return u=y.transformOrigin,(u||xe&&p&&m.zOrigin)&&(ye?(f=!0,u=(u||G(t,i,r,!1,"50% 50%"))+"",i=we,n=new pe(d,i,0,0,n,-1,"css_transformOrigin"),n.b=d[i],n.plugin=a,xe?(_=m.zOrigin,u=u.split(" "),m.zOrigin=(u.length>2?parseFloat(u[2]):_)||0,n.xs0=n.e=d[i]=u[0]+" "+(u[1]||"50%")+" 0px",n=new pe(m,"zOrigin",0,0,n,-1,n.n),n.b=_,n.xs0=n.e=m.zOrigin):n.xs0=n.e=d[i]=u):ee(u+"",m)),f&&(s._transformType=p||3===this._transformType?3:2),n},prefix:!0}),de("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),de("borderRadius",{defaultValue:"0px",parser:function(t,e,i,n,a){e=this.format(e);var o,h,l,_,u,p,f,c,m,d,g,v,y,T,w,x,b=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],P=t.style;for(m=parseFloat(t.offsetWidth),d=parseFloat(t.offsetHeight),o=e.split(" "),h=0;b.length>h;h++)this.p.indexOf("border")&&(b[h]=V(b[h])),u=_=G(t,b[h],r,!1,"0px"),-1!==u.indexOf(" ")&&(_=u.split(" "),u=_[0],_=_[1]),p=l=o[h],f=parseFloat(u),v=u.substr((f+"").length),y="="===p.charAt(1),y?(c=parseInt(p.charAt(0)+"1",10),p=p.substr(2),c*=parseFloat(p),g=p.substr((c+"").length-(0>c?1:0))||""):(c=parseFloat(p),g=p.substr((c+"").length)),""===g&&(g=s[i]||v),g!==v&&(T=$(t,"borderLeft",f,v),w=$(t,"borderTop",f,v),"%"===g?(u=100*(T/m)+"%",_=100*(w/d)+"%"):"em"===g?(x=$(t,"borderLeft",1,"em"),u=T/x+"em",_=w/x+"em"):(u=T+"px",_=w+"px"),y&&(p=parseFloat(u)+c+g,l=parseFloat(_)+c+g)),a=fe(P,b[h],u+" "+_,p+" "+l,!1,"0px",a);return a},prefix:!0,formatter:le("0px 0px 0px 0px",!1,!0)}),de("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,s,n,a){var o,h,l,_,u,p,f="background-position",m=r||Z(t,null),d=this.format((m?c?m.getPropertyValue(f+"-x")+" "+m.getPropertyValue(f+"-y"):m.getPropertyValue(f):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),g=this.format(e);if(-1!==d.indexOf("%")!=(-1!==g.indexOf("%"))&&(p=G(t,"backgroundImage").replace(R,""),p&&"none"!==p)){for(o=d.split(" "),h=g.split(" "),L.setAttribute("src",p),l=2;--l>-1;)d=o[l],_=-1!==d.indexOf("%"),_!==(-1!==h[l].indexOf("%"))&&(u=0===l?t.offsetWidth-L.width:t.offsetHeight-L.height,o[l]=_?parseFloat(d)/100*u+"px":100*(parseFloat(d)/u)+"%");d=o.join(" ")}return this.parseComplex(t.style,d,g,n,a)},formatter:ee}),de("backgroundSize",{defaultValue:"0 0",formatter:ee}),de("perspective",{defaultValue:"0px",prefix:!0}),de("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),de("transformStyle",{prefix:!0}),de("backfaceVisibility",{prefix:!0}),de("margin",{parser:_e("marginTop,marginRight,marginBottom,marginLeft")}),de("padding",{parser:_e("paddingTop,paddingRight,paddingBottom,paddingLeft")}),de("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,s,n,a){var o,h,l;return 9>c?(h=t.currentStyle,l=8>c?" ":",",o="rect("+h.clipTop+l+h.clipRight+l+h.clipBottom+l+h.clipLeft+")",e=this.format(e).split(",").join(l)):(o=this.format(G(t,this.p,r,!1,this.dflt)),e=this.format(e)),this.parseComplex(t.style,o,e,n,a)}}),de("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),de("autoRound,strictUnits",{parser:function(t,e,i,s,r){return r}}),de("border",{defaultValue:"0px solid #000",parser:function(t,e,i,s,n,a){return this.parseComplex(t.style,this.format(G(t,"borderTopWidth",r,!1,"0px")+" "+G(t,"borderTopStyle",r,!1,"solid")+" "+G(t,"borderTopColor",r,!1,"#000")),this.format(e),n,a)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(he)||["#000"])[0]}}),de("float,cssFloat,styleFloat",{parser:function(t,e,i,s,r){var n=t.style,a="cssFloat"in n?"cssFloat":"styleFloat";return new pe(n,a,0,0,r,-1,i,!1,0,n[a],e)}});var Se=function(t){var e,i=this.t,s=i.filter,r=0|this.s+this.c*t;100===r&&(-1===s.indexOf("atrix(")&&-1===s.indexOf("radient(")?(i.removeAttribute("filter"),e=!G(this.data,"filter")):(i.filter=s.replace(x,""),e=!0)),e||(this.xn1&&(i.filter=s=s||"alpha(opacity=100)"),-1===s.indexOf("opacity")?i.filter+=" alpha(opacity="+r+")":i.filter=s.replace(T,"opacity="+r))};de("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,s,n,a){var o,h=parseFloat(G(t,"opacity",r,!1,"1")),l=t.style;return e=parseFloat(e),"autoAlpha"===i&&(o=G(t,"visibility",r),1===h&&"hidden"===o&&0!==e&&(h=0),n=new pe(l,"visibility",0,0,n,-1,null,!1,0,0!==h?"visible":"hidden",0===e?"hidden":"visible"),n.xs0="visible",s._overwriteProps.push(n.n)),z?n=new pe(l,"opacity",h,e-h,n):(n=new pe(l,"opacity",100*h,100*(e-h),n),n.xn1="autoAlpha"===i?1:0,l.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=a,n.setRatio=Se),n}});var Ae=function(t,e){e&&(t.removeProperty?t.removeProperty(e.replace(P,"-$1").toLowerCase()):t.removeAttribute(e))},Ce=function(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.className=0===t?this.b:this.e;for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Ae(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.className!==this.e&&(this.t.className=this.e)};de("className",{parser:function(t,e,s,n,a,o,h){var l,_,u,p,f,c=t.className,m=t.style.cssText;if(a=n._classNamePT=new pe(t,s,0,0,a,2),a.setRatio=Ce,a.pr=-11,i=!0,a.b=c,_=W(t,r),u=t._gsClassPT){for(p={},f=u.data;f;)p[f.p]=1,f=f._next;u.setRatio(1)}return t._gsClassPT=a,a.e="="!==e.charAt(1)?e:c.replace(RegExp("\\s*\\b"+e.substr(2)+"\\b"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),n._tween._duration&&(t.className=a.e,l=H(t,_,W(t),h,p),t.className=c,a.data=l.firstMPT,t.style.cssText=m,a=a.xfirst=n.parse(t,l.difs,a,o)),a}});var Oe=function(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration)for(var e,i="all"===this.e,s=this.t.style,r=i?s.cssText.split(";"):this.e.split(","),n=r.length,a=o.transform.parse;--n>-1;)e=r[n],i&&(e=e.substr(0,e.indexOf(":")).split(" ").join("")),o[e]&&(e=o[e].parse===a?ye:o[e].p),Ae(s,e)};for(de("clearProps",{parser:function(t,e,s,r,n){return n=new pe(t,s,0,0,n,2),n.setRatio=Oe,n.e=e,n.pr=-10,n.data=r._tween,i=!0,n}}),h="bezier,throwProps,physicsProps,physics2D".split(","),ce=h.length;ce--;)ge(h[ce]);h=a.prototype,h._firstPT=null,h._onInitTween=function(t,e,o){if(!t.nodeType)return!1;this._target=t,this._tween=o,this._vars=e,l=e.autoRound,i=!1,s=e.suffixMap||a.suffixMap,r=Z(t,""),n=this._overwriteProps;var h,p,c,m,d,g,v,y,T,x=t.style;if(_&&""===x.zIndex&&(h=G(t,"zIndex",r),("auto"===h||""===h)&&(x.zIndex=0)),"string"==typeof e&&(m=x.cssText,h=W(t,r),x.cssText=m+";"+e,h=H(t,h,W(t)).difs,!z&&w.test(e)&&(h.opacity=parseFloat(RegExp.$1)),e=h,x.cssText=m),this._firstPT=p=this.parse(t,e,null),this._transformType){for(T=3===this._transformType,ye?u&&(_=!0,""===x.zIndex&&(v=G(t,"zIndex",r),("auto"===v||""===v)&&(x.zIndex=0)),f&&(x.WebkitBackfaceVisibility=this._vars.WebkitBackfaceVisibility||(T?"visible":"hidden"))):x.zoom=1,c=p;c&&c._next;)c=c._next;y=new pe(t,"transform",0,0,null,2),this._linkCSSP(y,null,c),y.setRatio=T&&xe?ke:ye?Re:Pe,y.data=this._transform||be(t,r,!0),n.pop()}if(i){for(;p;){for(g=p._next,c=m;c&&c.pr>p.pr;)c=c._next;(p._prev=c?c._prev:d)?p._prev._next=p:m=p,(p._next=c)?c._prev=p:d=p,p=g}this._firstPT=m}return!0},h.parse=function(t,e,i,n){var a,h,_,u,p,f,c,m,d,g,v=t.style;for(a in e)f=e[a],h=o[a],h?i=h.parse(t,f,a,this,i,n,e):(p=G(t,a,r)+"",d="string"==typeof f,"color"===a||"fill"===a||"stroke"===a||-1!==a.indexOf("Color")||d&&b.test(f)?(d||(f=oe(f),f=(f.length>3?"rgba(":"rgb(")+f.join(",")+")"),i=fe(v,a,p,f,!0,"transparent",i,0,n)):!d||-1===f.indexOf(" ")&&-1===f.indexOf(",")?(_=parseFloat(p),c=_||0===_?p.substr((_+"").length):"",(""===p||"auto"===p)&&("width"===a||"height"===a?(_=te(t,a,r),c="px"):"left"===a||"top"===a?(_=Q(t,a,r),c="px"):(_="opacity"!==a?0:1,c="")),g=d&&"="===f.charAt(1),g?(u=parseInt(f.charAt(0)+"1",10),f=f.substr(2),u*=parseFloat(f),m=f.replace(y,"")):(u=parseFloat(f),m=d?f.substr((u+"").length)||"":""),""===m&&(m=s[a]||c),f=u||0===u?(g?u+_:u)+m:e[a],c!==m&&""!==m&&(u||0===u)&&(_||0===_)&&(_=$(t,a,_,c),"%"===m?(_/=$(t,a,100,"%")/100,_>100&&(_=100),e.strictUnits!==!0&&(p=_+"%")):"em"===m?_/=$(t,a,1,"em"):(u=$(t,a,u,m),m="px"),g&&(u||0===u)&&(f=u+_+m)),g&&(u+=_),!_&&0!==_||!u&&0!==u?void 0!==v[a]&&(f||"NaN"!=f+""&&null!=f)?(i=new pe(v,a,u||_||0,0,i,-1,"css_"+a,!1,0,p,f),i.xs0="none"!==f||"display"!==a&&-1===a.indexOf("Style")?f:p):B("invalid "+a+" tween value: "+e[a]):(i=new pe(v,a,_,u-_,i,0,"css_"+a,l!==!1&&("px"===m||"zIndex"===a),0,p,f),i.xs0=m)):i=fe(v,a,p,f,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},h.setRatio=function(t){var e,i,s,r=this._firstPT,n=1e-6;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;r;){if(e=r.c*t+r.s,r.r?e=e>0?0|e+.5:0|e-.5:n>e&&e>-n&&(e=0),r.type)if(1===r.type)if(s=r.l,2===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2;else if(3===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3;else if(4===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4;else if(5===s)r.t[r.p]=r.xs0+e+r.xs1+r.xn1+r.xs2+r.xn2+r.xs3+r.xn3+r.xs4+r.xn4+r.xs5;else{for(i=r.xs0+e+r.xs1,s=1;r.l>s;s++)i+=r["xn"+s]+r["xs"+(s+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},h._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2},h._linkCSSP=function(t,e,i,s){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),i?i._next=t:s||null!==this._firstPT||(this._firstPT=t),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next),t._next=e,t._prev=i),t},h._kill=function(e){var i,s,r,n=e;if(e.css_autoAlpha||e.css_alpha){n={};for(s in e)n[s]=e[s];n.css_opacity=1,n.css_autoAlpha&&(n.css_visibility=1)}return e.css_className&&(i=this._classNamePT)&&(r=i.xfirst,r&&r._prev?this._linkCSSP(r._prev,i._next,r._prev._prev):r===this._firstPT&&(this._firstPT=i._next),i._next&&this._linkCSSP(i._next,i._next._next,r._prev),this._classNamePT=null),t.prototype._kill.call(this,n)};var De=function(t,e,i){var s,r,n,a;if(t.slice)for(r=t.length;--r>-1;)De(t[r],e,i);else for(s=t.childNodes,r=s.length;--r>-1;)n=s[r],a=n.type,n.style&&(e.push(W(n)),i&&i.push(n)),1!==a&&9!==a&&11!==a||!n.childNodes.length||De(n,e,i)};return a.cascadeTo=function(t,i,s){var r,n,a,o=e.to(t,i,s),h=[o],l=[],_=[],u=[],p=e._internals.reservedProps;for(t=o._targets||o.target,De(t,l,u),o.render(i,!0),De(t,_),o.render(0,!0),o._enabled(!0),r=u.length;--r>-1;)if(n=H(u[r],l[r],_[r]),n.firstMPT){n=n.difs;for(a in s)p[a]&&(n[a]=s[a]);h.push(e.to(u[r],i,n))}return h},t.activate([a]),a},!0),function(){var t=window._gsDefine.plugin({propName:"roundProps",priority:-1,API:2,init:function(t,e,i){return this._tween=i,!0}}),e=t.prototype;e._onInitAllProps=function(){for(var t,e,i,s=this._tween,r=s.vars.roundProps instanceof Array?s.vars.roundProps:s.vars.roundProps.split(","),n=r.length,a={},o=s._propLookup.roundProps;--n>-1;)a[r[n]]=1;for(n=r.length;--n>-1;)for(t=r[n],e=s._firstPT;e;)i=e._next,e.pg?e.t._roundProps(a,!0):e.n===t&&(this._add(e.t,t,e.s,e.c),i&&(i._prev=e._prev),e._prev?e._prev._next=i:s._firstPT===e&&(s._firstPT=i),e._next=e._prev=null,s._propLookup[t]=o),e=i;return!1},e._add=function(t,e,i,s){this._addTween(t,e,i,i+s,e,!0),this._overwriteProps.push(e)}}(),window._gsDefine.plugin({propName:"attr",API:2,init:function(t,e){var i;if("function"!=typeof t.setAttribute)return!1;this._target=t,this._proxy={};for(i in e)this._addTween(this._proxy,i,parseFloat(t.getAttribute(i)),e[i],i),this._overwriteProps.push(i);return!0},set:function(t){this._super.setRatio.call(this,t);for(var e,i=this._overwriteProps,s=i.length;--s>-1;)e=i[s],this._target.setAttribute(e,this._proxy[e]+"")}}),window._gsDefine.plugin({propName:"directionalRotation",API:2,init:function(t,e){"object"!=typeof e&&(e={rotation:e}),this.finals={};var i,s,r,n,a,o,h=e.useRadians===!0?2*Math.PI:360,l=1e-6;for(i in e)"useRadians"!==i&&(o=(e[i]+"").split("_"),s=o[0],r=parseFloat("function"!=typeof t[i]?t[i]:t[i.indexOf("set")||"function"!=typeof t["get"+i.substr(3)]?i:"get"+i.substr(3)]()),n=this.finals[i]="string"==typeof s&&"="===s.charAt(1)?r+parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)):Number(s)||0,a=n-r,o.length&&(s=o.join("_"),-1!==s.indexOf("short")&&(a%=h,a!==a%(h/2)&&(a=0>a?a+h:a-h)),-1!==s.indexOf("_cw")&&0>a?a=(a+9999999999*h)%h-(0|a/h)*h:-1!==s.indexOf("ccw")&&a>0&&(a=(a-9999999999*h)%h-(0|a/h)*h)),(a>l||-l>a)&&(this._addTween(t,i,r,r+a,i),this._overwriteProps.push(i)));return!0},set:function(t){var e;if(1!==t)this._super.setRatio.call(this,t);else for(e=this._firstPT;e;)e.f?e.t[e.p](this.finals[e.p]):e.t[e.p]=this.finals[e.p],e=e._next +}})._autoCSS=!0,window._gsDefine("easing.Back",["easing.Ease"],function(t){var e,i,s,r=window.GreenSockGlobals||window,n=r.com.greensock,a=2*Math.PI,o=Math.PI/2,h=n._class,l=function(e,i){var s=h("easing."+e,function(){},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,s},_=t.register||function(){},u=function(t,e,i,s){var r=h("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return _(r,t),r},p=function(t,e,i){this.t=t,this.v=e,i&&(this.next=i,i.prev=this,this.c=i.v-e,this.gap=i.t-t)},f=function(e,i){var s=h("easing."+e,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,r.config=function(t){return new s(t)},s},c=u("Back",f("BackOut",function(t){return(t-=1)*t*((this._p1+1)*t+this._p1)+1}),f("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),f("BackInOut",function(t){return 1>(t*=2)?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),m=h("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:t>1&&(t=1),this._p=1!==t?e:0,this._p1=(1-t)/2,this._p2=t,this._p3=this._p1+this._p2,this._calcEnd=i===!0},!0),d=m.prototype=new t;return d.constructor=m,d.getRatio=function(t){var e=t+(.5-t)*this._p;return this._p1>t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},m.ease=new m(.7,.7),d.config=m.config=function(t,e,i){return new m(t,e,i)},e=h("easing.SteppedEase",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0),d=e.prototype=new t,d.constructor=e,d.getRatio=function(t){return 0>t?t=0:t>=1&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=e.config=function(t){return new e(t)},i=h("easing.RoughEase",function(e){e=e||{};for(var i,s,r,n,a,o,h=e.taper||"none",l=[],_=0,u=0|(e.points||20),f=u,c=e.randomize!==!1,m=e.clamp===!0,d=e.template instanceof t?e.template:null,g="number"==typeof e.strength?.4*e.strength:.4;--f>-1;)i=c?Math.random():1/u*f,s=d?d.getRatio(i):i,"none"===h?r=g:"out"===h?(n=1-i,r=n*n*g):"in"===h?r=i*i*g:.5>i?(n=2*i,r=.5*n*n*g):(n=2*(1-i),r=.5*n*n*g),c?s+=Math.random()*r-.5*r:f%2?s+=.5*r:s-=.5*r,m&&(s>1?s=1:0>s&&(s=0)),l[_++]={x:i,y:s};for(l.sort(function(t,e){return t.x-e.x}),o=new p(1,1,null),f=u;--f>-1;)a=l[f],o=new p(a.x,a.y,o);this._prev=new p(0,0,0!==o.t?o:o.next)},!0),d=i.prototype=new t,d.constructor=i,d.getRatio=function(t){var e=this._prev;if(t>e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return this._prev=e,e.v+(t-e.t)/e.gap*e.c},d.config=function(t){return new i(t)},i.ease=new i,u("Bounce",l("BounceOut",function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),l("BounceIn",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:2/2.75>t?1-(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),l("BounceInOut",function(t){var e=.5>t;return t=e?1-2*t:2*t-1,t=1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),u("Circ",l("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),l("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),l("CircInOut",function(t){return 1>(t*=2)?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),s=function(e,i,s){var r=h("easing."+e,function(t,e){this._p1=t||1,this._p2=e||s,this._p3=this._p2/a*(Math.asin(1/this._p1)||0)},!0),n=r.prototype=new t;return n.constructor=r,n.getRatio=i,n.config=function(t,e){return new r(t,e)},r},u("Elastic",s("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*a/this._p2)+1},.3),s("ElasticIn",function(t){return-(this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2))},.3),s("ElasticInOut",function(t){return 1>(t*=2)?-.5*this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*a/this._p2):.5*this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*a/this._p2)+1},.45)),u("Expo",l("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),l("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),l("ExpoInOut",function(t){return 1>(t*=2)?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),u("Sine",l("SineOut",function(t){return Math.sin(t*o)}),l("SineIn",function(t){return-Math.cos(t*o)+1}),l("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),h("easing.EaseLookup",{find:function(e){return t.map[e]}},!0),_(r.SlowMo,"SlowMo","ease,"),_(i,"RoughEase","ease,"),_(e,"SteppedEase","ease,"),c},!0)}),function(t){"use strict";var e,i,s,r,n,a=t.GreenSockGlobals||t,o=function(t){var e,i=t.split("."),s=a;for(e=0;i.length>e;e++)s[i[e]]=s=s[i[e]]||{};return s},h=o("com.greensock"),l=[].slice,_=function(){},u={},p=function(e,i,s,r){this.sc=u[e]?u[e].sc:[],u[e]=this,this.gsClass=null,this.func=s;var n=[];this.check=function(h){for(var l,_,f,c,m=i.length,d=m;--m>-1;)(l=u[i[m]]||new p(i[m],[])).gsClass?(n[m]=l.gsClass,d--):h&&l.sc.push(this);if(0===d&&s)for(_=("com.greensock."+e).split("."),f=_.pop(),c=o(_.join("."))[f]=this.gsClass=s.apply(s,n),r&&(a[f]=c,"function"==typeof define&&define.amd?define((t.GreenSockAMDPath?t.GreenSockAMDPath+"/":"")+e.split(".").join("/"),[],function(){return c}):"undefined"!=typeof module&&module.exports&&(module.exports=c)),m=0;this.sc.length>m;m++)this.sc[m].check()},this.check(!0)},f=t._gsDefine=function(t,e,i,s){return new p(t,e,i,s)},c=h._class=function(t,e,i){return e=e||function(){},f(t,[],function(){return e},i),e};f.globals=a;var m=[0,0,1,1],d=[],g=c("easing.Ease",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?m.concat(e):m},!0),v=g.map={},y=g.register=function(t,e,i,s){for(var r,n,a,o,l=e.split(","),_=l.length,u=(i||"easeIn,easeOut,easeInOut").split(",");--_>-1;)for(n=l[_],r=s?c("easing."+n,null,!0):h.easing[n]||{},a=u.length;--a>-1;)o=u[a],v[n+"."+o]=v[o+n]=r[o]=t.getRatio?t:t[o]||new t};for(s=g.prototype,s._calcEnd=!1,s.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:.5>t?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:.5>t?s/2:1-s/2},e=["Linear","Quad","Cubic","Quart","Quint,Strong"],i=e.length;--i>-1;)s=e[i]+",Power"+i,y(new g(null,null,1,i),s,"easeOut",!0),y(new g(null,null,2,i),s,"easeIn"+(0===i?",easeNone":"")),y(new g(null,null,3,i),s,"easeInOut");v.linear=h.easing.Linear.easeIn,v.swing=h.easing.Quad.easeInOut;var T=c("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});s=T.prototype,s.addEventListener=function(t,e,i,s,a){a=a||0;var o,h,l=this._listeners[t],_=0;for(null==l&&(this._listeners[t]=l=[]),h=l.length;--h>-1;)o=l[h],o.c===e&&o.s===i?l.splice(h,1):0===_&&a>o.pr&&(_=h+1);l.splice(_,0,{c:e,s:i,up:s,pr:a}),this!==r||n||r.wake()},s.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;--i>-1;)if(s[i].c===e)return s.splice(i,1),void 0},s.dispatchEvent=function(t){var e,i,s,r=this._listeners[t];if(r)for(e=r.length,i=this._eventTarget;--e>-1;)s=r[e],s.up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i)};var w=t.requestAnimationFrame,x=t.cancelAnimationFrame,b=Date.now||function(){return(new Date).getTime()};for(e=["ms","moz","webkit","o"],i=e.length;--i>-1&&!w;)w=t[e[i]+"RequestAnimationFrame"],x=t[e[i]+"CancelAnimationFrame"]||t[e[i]+"CancelRequestAnimationFrame"];c("Ticker",function(t,e){var i,s,a,o,h,l=this,u=b(),p=e!==!1&&w,f=function(t){l.time=(b()-u)/1e3;var e=a,r=l.time-h;(!i||r>0||t===!0)&&(l.frame++,h+=r+(r>=o?.004:o-r),l.dispatchEvent("tick")),t!==!0&&e===a&&(a=s(f))};T.call(l),this.time=this.frame=0,this.tick=function(){f(!0)},this.sleep=function(){null!=a&&(p&&x?x(a):clearTimeout(a),s=_,a=null,l===r&&(n=!1))},this.wake=function(){null!==a&&l.sleep(),s=0===i?_:p&&w?w:function(t){return setTimeout(t,0|1e3*(h-l.time)+1)},l===r&&(n=!0),f(2)},this.fps=function(t){return arguments.length?(i=t,o=1/(i||60),h=this.time+o,l.wake(),void 0):i},this.useRAF=function(t){return arguments.length?(l.sleep(),p=t,l.fps(i),void 0):p},l.fps(t),setTimeout(function(){p&&(!a||5>l.frame)&&l.useRAF(!1)},1500)}),s=h.Ticker.prototype=new h.events.EventDispatcher,s.constructor=h.Ticker;var P=c("core.Animation",function(t,e){if(this.vars=e||{},this._duration=this._totalDuration=t||0,this._delay=Number(this.vars.delay)||0,this._timeScale=1,this._active=this.vars.immediateRender===!0,this.data=this.vars.data,this._reversed=this.vars.reversed===!0,N){n||r.wake();var i=this.vars.useFrames?E:N;i.add(this,i._time),this.vars.paused&&this.paused(!0)}});r=P.ticker=new h.Ticker,s=P.prototype,s._dirty=s._gc=s._initted=s._paused=!1,s._totalTime=s._time=0,s._rawPrevTime=-1,s._next=s._last=s._onUpdate=s._timeline=s.timeline=null,s._paused=!1,s.play=function(t,e){return arguments.length&&this.seek(t,e),this.reversed(!1).paused(!1)},s.pause=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!0)},s.resume=function(t,e){return arguments.length&&this.seek(t,e),this.paused(!1)},s.seek=function(t,e){return this.totalTime(Number(t),e!==!1)},s.restart=function(t,e){return this.reversed(!1).paused(!1).totalTime(t?-this._delay:0,e!==!1,!0)},s.reverse=function(t,e){return arguments.length&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},s.render=function(){},s.invalidate=function(){return this},s._enabled=function(t,e){return n||r.wake(),this._gc=!t,this._active=t&&!this._paused&&this._totalTime>0&&this._totalTime-1;)"{self}"===i[r]&&(i=n[t+"Params"]=i.concat(),i[r]=this);"onUpdate"===t&&(this._onUpdate=e)}return this},s.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},s.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:t,e)):this._time},s.totalTime=function(t,e,i){if(n||r.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>t&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,a=this._timeline;if(t>s&&!i&&(t=s),this._startTime=(this._paused?this._pauseTime:a._time)-(this._reversed?s-t:t)/this._timeScale,a._dirty||this._uncache(!1),!a._active)for(;a._timeline;)a.totalTime(a._totalTime,!0),a=a._timeline}this._gc&&this._enabled(!0,!1),this._totalTime!==t&&this.render(t,e,!1)}return this},s.startTime=function(t){return arguments.length?(t!==this._startTime&&(this._startTime=t,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,t-this._delay)),this):this._startTime},s.timeScale=function(t){if(!arguments.length)return this._timeScale;if(t=t||1e-6,this._timeline&&this._timeline.smoothChildTiming){var e=this._pauseTime,i=e||0===e?e:this._timeline.totalTime();this._startTime=i-(i-this._startTime)*this._timeScale/t}return this._timeScale=t,this._uncache(!1)},s.reversed=function(t){return arguments.length?(t!=this._reversed&&(this._reversed=t,this.totalTime(this._totalTime,!0)),this):this._reversed},s.paused=function(t){if(!arguments.length)return this._paused;if(t!=this._paused&&this._timeline){n||t||r.wake();var e=this._timeline.rawTime(),i=e-this._pauseTime;!t&&this._timeline.smoothChildTiming&&(this._startTime+=i,this._uncache(!1)),this._pauseTime=t?e:null,this._paused=t,this._active=!t&&this._totalTime>0&&this._totalTimes;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},s._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline&&this._uncache(!0)),this},s.render=function(t,e,i){var s,r=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;r;)s=r._next,(r._active||t>=r._startTime&&!r._paused)&&(r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=s},s.rawTime=function(){return n||r.wake(),this._totalTime};var R=c("TweenLite",function(t,e,i){if(P.call(this,e,i),null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:R.selector(t)||t;var s,r,n,a=t.jquery||t.length&&t[0]&&t[0].nodeType&&t[0].style,o=this.vars.overwrite;if(this._overwrite=o=null==o?F[R.defaultOverwrite]:"number"==typeof o?o>>0:F[o],(a||t instanceof Array)&&"number"!=typeof t[0])for(this._targets=n=l.call(t,0),this._propLookup=[],this._siblings=[],s=0;n.length>s;s++)r=n[s],r?"string"!=typeof r?r.length&&r[0]&&r[0].nodeType&&r[0].style?(n.splice(s--,1),this._targets=n=n.concat(l.call(r,0))):(this._siblings[s]=L(r,this,!1),1===o&&this._siblings[s].length>1&&X(r,this,null,1,this._siblings[s])):(r=n[s--]=R.selector(r),"string"==typeof r&&n.splice(s+1,1)):n.splice(s--,1);else this._propLookup={},this._siblings=L(t,this,!1),1===o&&this._siblings.length>1&&X(t,this,null,1,this._siblings);(this.vars.immediateRender||0===e&&0===this._delay&&this.vars.immediateRender!==!1)&&this.render(-this._delay,!1,!0)},!0),S=function(t){return t.length&&t[0]&&t[0].nodeType&&t[0].style},A=function(t,e){var i,s={};for(i in t)I[i]||i in e&&"x"!==i&&"y"!==i&&"width"!==i&&"height"!==i&&"className"!==i||!(!O[i]||O[i]&&O[i]._autoCSS)||(s[i]=t[i],delete t[i]);t.css=s};s=R.prototype=new P,s.constructor=R,s.kill()._gc=!1,s.ratio=0,s._firstPT=s._targets=s._overwrittenProps=s._startAt=null,s._notifyPluginsOfEnabled=!1,R.version="1.9.7",R.defaultEase=s._ease=new g(null,null,1,1),R.defaultOverwrite="auto",R.ticker=r,R.autoSleep=!0,R.selector=t.$||t.jQuery||function(e){return t.$?(R.selector=t.$,t.$(e)):t.document?t.document.getElementById("#"===e.charAt(0)?e.substr(1):e):e};var C=R._internals={},O=R._plugins={},D=R._tweenLookup={},M=0,I=C.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1},F={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},E=P._rootFramesTimeline=new k,N=P._rootTimeline=new k;N._startTime=r.time,E._startTime=r.frame,N._active=E._active=!0,P._updateRoot=function(){if(N.render((r.time-N._startTime)*N._timeScale,!1,!1),E.render((r.frame-E._startTime)*E._timeScale,!1,!1),!(r.frame%120)){var t,e,i;for(i in D){for(e=D[i].tweens,t=e.length;--t>-1;)e[t]._gc&&e.splice(t,1);0===e.length&&delete D[i]}if(i=N._first,(!i||i._paused)&&R.autoSleep&&!E._first&&1===r._listeners.tick.length){for(;i&&i._paused;)i=i._next;i||r.sleep()}}},r.addEventListener("tick",P._updateRoot);var L=function(t,e,i){var s,r,n=t._gsTweenID;if(D[n||(t._gsTweenID=n="t"+M++)]||(D[n]={target:t,tweens:[]}),e&&(s=D[n].tweens,s[r=s.length]=e,i))for(;--r>-1;)s[r]===e&&s.splice(r,1);return D[n].tweens},X=function(t,e,i,s,r){var n,a,o,h;if(1===s||s>=4){for(h=r.length,n=0;h>n;n++)if((o=r[n])!==e)o._gc||o._enabled(!1,!1)&&(a=!0);else if(5===s)break;return a}var l,_=e._startTime+1e-10,u=[],p=0,f=0===e._duration;for(n=r.length;--n>-1;)(o=r[n])===e||o._gc||o._paused||(o._timeline!==e._timeline?(l=l||U(e,0,f),0===U(o,l,f)&&(u[p++]=o)):_>=o._startTime&&o._startTime+o.totalDuration()/o._timeScale+1e-10>_&&((f||!o._initted)&&2e-10>=_-o._startTime||(u[p++]=o)));for(n=p;--n>-1;)o=u[n],2===s&&o._kill(i,t)&&(a=!0),(2!==s||!o._firstPT&&o._initted)&&o._enabled(!1,!1)&&(a=!0);return a},U=function(t,e,i){for(var s=t._timeline,r=s._timeScale,n=t._startTime,a=1e-10;s._timeline;){if(n+=s._startTime,r*=s._timeScale,s._paused)return-100;s=s._timeline}return n/=r,n>e?n-e:i&&n===e||!t._initted&&2*a>n-e?a:(n+=t.totalDuration()/t._timeScale/r)>e+a?0:n-e-a};s._init=function(){var t,e,i,s,r=this.vars,n=this._overwrittenProps,a=this._duration,o=r.ease;if(r.startAt){if(r.startAt.overwrite=0,r.startAt.immediateRender=!0,this._startAt=R.to(this.target,0,r.startAt),r.immediateRender&&(this._startAt=null,0===this._time&&0!==a))return}else if(r.runBackwards&&r.immediateRender&&0!==a)if(this._startAt)this._startAt.render(-1,!0),this._startAt=null;else if(0===this._time){i={};for(s in r)I[s]&&"autoCSS"!==s||(i[s]=r[s]);return i.overwrite=0,this._startAt=R.to(this.target,0,i),void 0}if(this._ease=o?o instanceof g?r.easeParams instanceof Array?o.config.apply(o,r.easeParams):o:"function"==typeof o?new g(o,r.easeParams):v[o]||R.defaultEase:R.defaultEase,this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(t=this._targets.length;--t>-1;)this._initProps(this._targets[t],this._propLookup[t]={},this._siblings[t],n?n[t]:null)&&(e=!0);else e=this._initProps(this.target,this._propLookup,this._siblings,n);if(e&&R._onPluginEvent("_onInitAllProps",this),n&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),r.runBackwards)for(i=this._firstPT;i;)i.s+=i.c,i.c=-i.c,i=i._next;this._onUpdate=r.onUpdate,this._initted=!0},s._initProps=function(t,e,i,s){var r,n,a,o,h,l,_;if(null==t)return!1;this.vars.css||t.style&&t.nodeType&&O.css&&this.vars.autoCSS!==!1&&A(this.vars,t);for(r in this.vars){if(I[r]){if(("onStartParams"===r||"onUpdateParams"===r||"onCompleteParams"===r||"onReverseCompleteParams"===r||"onRepeatParams"===r)&&(h=this.vars[r]))for(n=h.length;--n>-1;)"{self}"===h[n]&&(h=this.vars[r]=h.concat(),h[n]=this)}else if(O[r]&&(o=new O[r])._onInitTween(t,this.vars[r],this)){for(this._firstPT=l={_next:this._firstPT,t:o,p:"setRatio",s:0,c:1,f:!0,n:r,pg:!0,pr:o._priority},n=o._overwriteProps.length;--n>-1;)e[o._overwriteProps[n]]=this._firstPT;(o._priority||o._onInitAllProps)&&(a=!0),(o._onDisable||o._onEnable)&&(this._notifyPluginsOfEnabled=!0)}else this._firstPT=e[r]=l={_next:this._firstPT,t:t,p:r,f:"function"==typeof t[r],n:r,pg:!1,pr:0},l.s=l.f?t[r.indexOf("set")||"function"!=typeof t["get"+r.substr(3)]?r:"get"+r.substr(3)]():parseFloat(t[r]),_=this.vars[r],l.c="string"==typeof _&&"="===_.charAt(1)?parseInt(_.charAt(0)+"1",10)*Number(_.substr(2)):Number(_)-l.s||0;l&&l._next&&(l._next._prev=l)}return s&&this._kill(s,t)?this._initProps(t,e,i,s):this._overwrite>1&&this._firstPT&&i.length>1&&X(t,this,e,this._overwrite,i)?(this._kill(e,t),this._initProps(t,e,i,s)):a},s.render=function(t,e,i){var s,r,n,a=this._time;if(t>=this._duration)this._totalTime=this._time=this._duration,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(s=!0,r="onComplete"),0===this._duration&&((0===t||0>this._rawPrevTime)&&this._rawPrevTime!==t&&(i=!0,this._rawPrevTime>0&&(r="onReverseComplete",e&&(t=-1))),this._rawPrevTime=t);else if(1e-7>t)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==a||0===this._duration&&this._rawPrevTime>0)&&(r="onReverseComplete",s=this._reversed),0>t?(this._active=!1,0===this._duration&&(this._rawPrevTime>=0&&(i=!0),this._rawPrevTime=t)):this._initted||(i=!0);else if(this._totalTime=this._time=t,this._easeType){var o=t/this._duration,h=this._easeType,l=this._easePower;(1===h||3===h&&o>=.5)&&(o=1-o),3===h&&(o*=2),1===l?o*=o:2===l?o*=o*o:3===l?o*=o*o*o:4===l&&(o*=o*o*o*o),this.ratio=1===h?1-o:2===h?o:.5>t/this._duration?o/2:1-o/2}else this.ratio=this._ease.getRatio(t/this._duration);if(this._time!==a||i){if(!this._initted){if(this._init(),!this._initted)return;this._time&&!s?this.ratio=this._ease.getRatio(this._time/this._duration):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._active||this._paused||(this._active=!0),0===a&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):r||(r="_dummyGS")),this.vars.onStart&&(0!==this._time||0===this._duration)&&(e||this.vars.onStart.apply(this.vars.onStartScope||this,this.vars.onStartParams||d))),n=this._firstPT;n;)n.f?n.t[n.p](n.c*this.ratio+n.s):n.t[n.p]=n.c*this.ratio+n.s,n=n._next;this._onUpdate&&(0>t&&this._startAt&&this._startAt.render(t,e,i),e||this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||d)),r&&(this._gc||(0>t&&this._startAt&&!this._onUpdate&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[r]&&this.vars[r].apply(this.vars[r+"Scope"]||this,this.vars[r+"Params"]||d)))}},s._kill=function(t,e){if("all"===t&&(t=null),null==t&&(null==e||e===this.target))return this._enabled(!1,!1);e="string"!=typeof e?e||this._targets||this.target:R.selector(e)||e;var i,s,r,n,a,o,h,l;if((e instanceof Array||S(e))&&"number"!=typeof e[0])for(i=e.length;--i>-1;)this._kill(t,e[i])&&(o=!0);else{if(this._targets){for(i=this._targets.length;--i>-1;)if(e===this._targets[i]){a=this._propLookup[i]||{},this._overwrittenProps=this._overwrittenProps||[],s=this._overwrittenProps[i]=t?this._overwrittenProps[i]||{}:"all";break}}else{if(e!==this.target)return!1;a=this._propLookup,s=this._overwrittenProps=t?this._overwrittenProps||{}:"all"}if(a){h=t||a,l=t!==s&&"all"!==s&&t!==a&&(null==t||t._tempKill!==!0);for(r in h)(n=a[r])&&(n.pg&&n.t._kill(h)&&(o=!0),n.pg&&0!==n.t._overwriteProps.length||(n._prev?n._prev._next=n._next:n===this._firstPT&&(this._firstPT=n._next),n._next&&(n._next._prev=n._prev),n._next=n._prev=null),delete a[r]),l&&(s[r]=1);!this._firstPT&&this._initted&&this._enabled(!1,!1)}}return o},s.invalidate=function(){return this._notifyPluginsOfEnabled&&R._onPluginEvent("_onDisable",this),this._firstPT=null,this._overwrittenProps=null,this._onUpdate=null,this._startAt=null,this._initted=this._active=this._notifyPluginsOfEnabled=!1,this._propLookup=this._targets?{}:[],this},s._enabled=function(t,e){if(n||r.wake(),t&&this._gc){var i,s=this._targets;if(s)for(i=s.length;--i>-1;)this._siblings[i]=L(s[i],this,!0);else this._siblings=L(this.target,this,!0)}return P.prototype._enabled.call(this,t,e),this._notifyPluginsOfEnabled&&this._firstPT?R._onPluginEvent(t?"_onEnable":"_onDisable",this):!1},R.to=function(t,e,i){return new R(t,e,i)},R.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new R(t,e,i)},R.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new R(t,e,s)},R.delayedCall=function(t,e,i,s,r){return new R(e,0,{delay:t,onComplete:e,onCompleteParams:i,onCompleteScope:s,onReverseComplete:e,onReverseCompleteParams:i,onReverseCompleteScope:s,immediateRender:!1,useFrames:r,overwrite:0})},R.set=function(t,e){return new R(t,0,e)},R.killTweensOf=R.killDelayedCallsTo=function(t,e){for(var i=R.getTweensOf(t),s=i.length;--s>-1;)i[s]._kill(e,t)},R.getTweensOf=function(t){if(null==t)return[];t="string"!=typeof t?t:R.selector(t)||t;var e,i,s,r;if((t instanceof Array||S(t))&&"number"!=typeof t[0]){for(e=t.length,i=[];--e>-1;)i=i.concat(R.getTweensOf(t[e]));for(e=i.length;--e>-1;)for(r=i[e],s=e;--s>-1;)r===i[s]&&i.splice(e,1)}else for(i=L(t).concat(),e=i.length;--e>-1;)i[e]._gc&&i.splice(e,1);return i};var z=c("plugins.TweenPlugin",function(t,e){this._overwriteProps=(t||"").split(","),this._propName=this._overwriteProps[0],this._priority=e||0,this._super=z.prototype},!0);if(s=z.prototype,z.version="1.9.1",z.API=2,s._firstPT=null,s._addTween=function(t,e,i,s,r,n){var a,o;null!=s&&(a="number"==typeof s||"="!==s.charAt(1)?Number(s)-i:parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)))&&(this._firstPT=o={_next:this._firstPT,t:t,p:e,s:i,c:a,f:"function"==typeof t[e],n:r||e,r:n},o._next&&(o._next._prev=o))},s.setRatio=function(t){for(var e,i=this._firstPT,s=1e-6;i;)e=i.c*t+i.s,i.r?e=e+(e>0?.5:-.5)>>0:s>e&&e>-s&&(e=0),i.f?i.t[i.p](e):i.t[i.p]=e,i=i._next},s._kill=function(t){var e,i=this._overwriteProps,s=this._firstPT;if(null!=t[this._propName])this._overwriteProps=[];else for(e=i.length;--e>-1;)null!=t[i[e]]&&i.splice(e,1);for(;s;)null!=t[s.n]&&(s._next&&(s._next._prev=s._prev),s._prev?(s._prev._next=s._next,s._prev=null):this._firstPT===s&&(this._firstPT=s._next)),s=s._next;return!1},s._roundProps=function(t,e){for(var i=this._firstPT;i;)(t[this._propName]||null!=i.n&&t[i.n.split(this._propName+"_").join("")])&&(i.r=e),i=i._next},R._onPluginEvent=function(t,e){var i,s,r,n,a,o=e._firstPT;if("_onInitAllProps"===t){for(;o;){for(a=o._next,s=r;s&&s.pr>o.pr;)s=s._next;(o._prev=s?s._prev:n)?o._prev._next=o:r=o,(o._next=s)?s._prev=o:n=o,o=a}o=e._firstPT=r}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},z.activate=function(t){for(var e=t.length;--e>-1;)t[e].API===z.API&&(O[(new t[e])._propName]=t[e]);return!0},f.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,s=t.priority||0,r=t.overwriteProps,n={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_roundProps",initAll:"_onInitAllProps"},a=c("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){z.call(this,i,s),this._overwriteProps=r||[]},t.global===!0),o=a.prototype=new z(i);o.constructor=a,a.API=t.API;for(e in n)"function"==typeof t[e]&&(o[n[e]]=t[e]);return a.version=t.version,z.activate([a]),a},e=t._gsQueue){for(i=0;e.length>i;i++)e[i]();for(s in u)u[s].func||t.console.log("GSAP encountered missing dependency: com.greensock."+s)}n=!1}(window); \ No newline at end of file diff --git a/startIndex_files/all.js b/startIndex_files/all.js new file mode 100644 index 0000000..fe70668 --- /dev/null +++ b/startIndex_files/all.js @@ -0,0 +1,149 @@ +/*1372510494,168627281,JIT Construction: v861506,en_US*/ + +/** + * Copyright Facebook Inc. + * + * Licensed under the Apache License, Version 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + */ +try {window.FB || (function(window) { +var self = window, document = window.document; +var setTimeout = window.setTimeout, setInterval = window.setInterval;var __DEV__ = 0; +function emptyFunction() {}; + +var require,__d;(function(a){var b={},c={},d=['global','require','requireDynamic','requireLazy','module','exports'];require=function(e,f){if(c.hasOwnProperty(e))return c[e];if(!b.hasOwnProperty(e)){if(f)return null;throw new Error('Module '+e+' has not been defined');}var g=b[e],h=g.deps,i=h.length,j,k=[];for(var l=0;l1)))/4)-ca((ga-1901+ha)/100)+ca((ga-1601+ha)/400);};}if(typeof JSON=="object"&&JSON){k.stringify=JSON.stringify;k.parse=JSON.parse;}if((m=typeof k.stringify=="function"&&!ea)){(ba=function(){return 1;}).toJSON=ba;try{m=k.stringify(0)==="0"&&k.stringify(new Number())==="0"&&k.stringify(new String())=='""'&&k.stringify(g)===j&&k.stringify(j)===j&&k.stringify()===j&&k.stringify(ba)==="1"&&k.stringify([ba])=="[1]"&&k.stringify([j])=="[null]"&&k.stringify(null)=="null"&&k.stringify([j,g,null])=="[null,null,null]"&&k.stringify({result:[ba,true,false,null,"\0\b\n\f\r\t"]})==l&&k.stringify(null,ba)==="1"&&k.stringify([1,2],null,1)=="[\n 1,\n 2\n]"&&k.stringify(new Date(-8.64e+15))=='"-271821-04-20T00:00:00.000Z"'&&k.stringify(new Date(8.64e+15))=='"+275760-09-13T00:00:00.000Z"'&&k.stringify(new Date(-62198755200000))=='"-000001-01-01T00:00:00.000Z"'&&k.stringify(new Date(-1))=='"1969-12-31T23:59:59.999Z"';}catch(fa){m=false;}}if(typeof k.parse=="function")try{if(k.parse("0")===0&&!k.parse(false)){ba=k.parse(l);if((r=ba.A.length==5&&ba.A[0]==1)){try{r=!k.parse('"\t"');}catch(fa){}if(r)try{r=k.parse("01")!=1;}catch(fa){}}}}catch(fa){r=false;}ba=l=null;if(!m||!r){if(!(h={}.hasOwnProperty))h=function(ga){var ha={},ia;if((ha.__proto__=null,ha.__proto__={toString:1},ha).toString!=g){h=function(ja){var ka=this.__proto__,la=ja in (this.__proto__=null,this);this.__proto__=ka;return la;};}else{ia=ha.constructor;h=function(ja){var ka=(this.constructor||ia).prototype;return ja in this&&!(ja in ka&&this[ja]===ka[ja]);};}ha=null;return h.call(this,ga);};i=function(ga,ha){var ia=0,ja,ka,la,ma;(ja=function(){this.valueOf=0;}).prototype.valueOf=0;ka=new ja();for(la in ka)if(h.call(ka,la))ia++;ja=ka=null;if(!ia){ka=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"];ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa))oa(qa);for(ra=ka.length;qa=ka[--ra];h.call(na,qa)&&oa(qa));};}else if(ia==2){ma=function(na,oa){var pa={},qa=g.call(na)=="[object Function]",ra;for(ra in na)if(!(qa&&ra=="prototype")&&!h.call(pa,ra)&&(pa[ra]=1)&&h.call(na,ra))oa(ra);};}else ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa)&&!(ra=qa==="constructor"))oa(qa);if(ra||h.call(na,(qa="constructor")))oa(qa);};return ma(ga,ha);};if(!m){n={"\\":"\\\\",'"':'\\"',"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};o=function(ga,ha){return ("000000"+(ha||0)).slice(-ga);};p=function(ga){var ha='"',ia=0,ja;for(;ja=ga.charAt(ia);ia++)ha+='\\"\b\f\n\r\t'.indexOf(ja)>-1?n[ja]:ja<" "?"\\u00"+o(2,ja.charCodeAt(0).toString(16)):ja;return ha+'"';};q=function(ga,ha,ia,ja,ka,la,ma){var na=ha[ga],oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,ab,bb,cb;if(typeof na=="object"&&na){oa=g.call(na);if(oa=="[object Date]"&&!h.call(na,"toJSON")){if(na>-1/0&&na<1/0){if(ea){ra=ca(na/86400000);for(pa=ca(ra/365.2425)+1970-1;ea(pa+1,0)<=ra;pa++);for(qa=ca((ra-ea(pa,0))/30.42);ea(pa,qa+1)<=ra;qa++);ra=1+ra-ea(pa,qa);sa=(na%86400000+86400000)%86400000;ta=ca(sa/3600000)%24;ua=ca(sa/60000)%60;va=ca(sa/1000)%60;wa=sa%1000;}else{pa=na.getUTCFullYear();qa=na.getUTCMonth();ra=na.getUTCDate();ta=na.getUTCHours();ua=na.getUTCMinutes();va=na.getUTCSeconds();wa=na.getUTCMilliseconds();}na=(pa<=0||pa>=10000?(pa<0?"-":"+")+o(6,pa<0?-pa:pa):o(4,pa))+"-"+o(2,qa+1)+"-"+o(2,ra)+"T"+o(2,ta)+":"+o(2,ua)+":"+o(2,va)+"."+o(3,wa)+"Z";}else na=null;}else if(typeof na.toJSON=="function"&&((oa!="[object Number]"&&oa!="[object String]"&&oa!="[object Array]")||h.call(na,"toJSON")))na=na.toJSON(ga);}if(ia)na=ia.call(ha,ga,na);if(na===null)return "null";oa=g.call(na);if(oa=="[object Boolean]"){return ""+na;}else if(oa=="[object Number]"){return na>-1/0&&na<1/0?""+na:"null";}else if(oa=="[object String]")return p(na);if(typeof na=="object"){for(ab=ma.length;ab--;)if(ma[ab]===na)throw TypeError();ma.push(na);xa=[];bb=la;la+=ka;if(oa=="[object Array]"){for(za=0,ab=na.length;za0)for(ja="",ia>10&&(ia=10);ja.length-1){z++;}else if("{}[]:,".indexOf(ia)>-1){z++;return ia;}else if(ia=='"'){for(ja="@",z++;z-1){ja+=t[ia];z++;}else if(ia=="u"){ka=++z;for(la=z+4;z="0"&&ia<="9"||ia>="a"&&ia<="f"||ia>="A"&&ia<="F"))u();}ja+=s("0x"+ga.slice(ka,z));}else u();}else{if(ia=='"')break;ja+=ia;z++;}}if(ga.charAt(z)=='"'){z++;return ja;}u();}else{ka=z;if(ia=="-"){ma=true;ia=ga.charAt(++z);}if(ia>="0"&&ia<="9"){if(ia=="0"&&(ia=ga.charAt(z+1),ia>="0"&&ia<="9"))u();ma=false;for(;z="0"&&ia<="9");z++);if(ga.charAt(z)=="."){la=++z;for(;la="0"&&ia<="9");la++);if(la==z)u();z=la;}ia=ga.charAt(z);if(ia=="e"||ia=="E"){ia=ga.charAt(++z);if(ia=="+"||ia=="-")z++;for(la=z;la="0"&&ia<="9");la++);if(la==z)u();z=la;}return +ga.slice(ka,z);}if(ma)u();if(ga.slice(z,z+4)=="true"){z+=4;return true;}else if(ga.slice(z,z+5)=="false"){z+=5;return false;}else if(ga.slice(z,z+4)=="null"){z+=4;return null;}u();}}return "$";};w=function(ga){var ha,ia,ja;if(ga=="$")u();if(typeof ga=="string"){if(ga.charAt(0)=="@")return ga.slice(1);if(ga=="["){ha=[];for(;;ia||(ia=true)){ga=v();if(ga=="]")break;if(ia)if(ga==","){ga=v();if(ga=="]")u();}else u();if(ga==",")u();ha.push(w(ga));}return ha;}else if(ga=="{"){ha={};for(;;ia||(ia=true)){ga=v();if(ga=="}")break;if(ia)if(ga==","){ga=v();if(ga=="}")u();}else u();if(ga==","||typeof ga!="string"||ga.charAt(0)!="@"||v()!=":")u();ha[ga.slice(1)]=w(v());}return ha;}u();}return ga;};y=function(ga,ha,ia){var ja=x(ga,ha,ia);if(ja===j){delete ga[ha];}else ga[ha]=ja;};x=function(ga,ha,ia){var ja=ga[ha],ka;if(typeof ja=="object"&&ja)if(g.call(ja)=="[object Array]"){for(ka=ja.length;ka--;)y(ja,ka,ia);}else i(ja,function(la){y(ja,la,ia);});return ia.call(ga,ha,ja);};k.parse=function(ga,ha){z=0;aa=ga;var ia=w(v());if(v()!="$")u();z=aa=null;return ha&&g.call(ha)=="[object Function]"?x((ba={},ba[""]=ia,ba),"",ha):ia;};}}}).call(this);}); +__d("ES5",["ES5ArrayPrototype","ES5FunctionPrototype","ES5StringPrototype","ES5Array","ES5Object","ES5Date","JSON3"],function(a,b,c,d,e,f){var g=b('ES5ArrayPrototype'),h=b('ES5FunctionPrototype'),i=b('ES5StringPrototype'),j=b('ES5Array'),k=b('ES5Object'),l=b('ES5Date'),m=b('JSON3'),n=Array.prototype.slice,o=Object.prototype.toString,p={'JSON.stringify':m.stringify,'JSON.parse':m.parse},q={array:g,'function':h,string:i,Object:k,Array:j,Date:l};for(var r in q){if(!q.hasOwnProperty(r))continue;var s=q[r],t=r===r.toLowerCase()?window[r.replace(/^\w/,function(x){return x.toUpperCase();})].prototype:window[r];for(var u in s){if(!s.hasOwnProperty(u))continue;var v=t[u];p[r+'.'+u]=v&&/\{\s+\[native code\]\s\}/.test(v)?v:s[u];}}function w(x,y,z){var aa=n.call(arguments,3),ba=z?/\s(.*)\]/.exec(o.call(x).toLowerCase())[1]:x,ca=p[ba+'.'+y]||x[y];if(typeof ca==='function')return ca.apply(x,aa);}e.exports=w;});ES5 = require('ES5'); +return ES5.apply(null, arguments); +}; + +__d("sdk.RuntimeConfig",[],{"locale":"en_US","rtl":false});__d("XDConfig",[],{"XdUrl":"connect\/xd_arbiter.php?version=25","Flash":{"path":"https:\/\/connect.facebook.net\/rsrc.php\/v1\/yY\/r\/tkKkN2MZL-q.swf"},"useCdn":true});__d("UrlMapConfig",[],{"www":"www.facebook.com","m":"m.facebook.com","connect":"connect.facebook.net","api_https":"api.facebook.com","api_read_https":"api-read.facebook.com","graph_https":"graph.facebook.com","fbcdn_http":"static.ak.fbcdn.net","fbcdn_https":"fbstatic-a.akamaihd.net","cdn_http":"static.ak.facebook.com","cdn_https":"s-static.ak.facebook.com"});__d("PluginPipeConfig",[],{"threshold":0,"enabledApps":{"209753825810663":1,"187288694643718":1}});__d("CssConfig",[],{"rules":".fb_hidden{position:absolute;top:-10000px;z-index:10001}\n.fb_invisible{display:none}\n.fb_reset{background:none;border:0;border-spacing:0;color:#000;cursor:auto;direction:ltr;font-family:\"lucida grande\", tahoma, verdana, arial, sans-serif;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal}\n.fb_reset > div{overflow:hidden}\n.fb_link img{border:none}\n.fb_dialog{background:rgba(82, 82, 82, .7);position:absolute;top:-10000px;z-index:10001}\n.fb_dialog_advanced{padding:10px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}\n.fb_dialog_content{background:#fff;color:#333}\n.fb_dialog_close_icon{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 0 transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif);cursor:pointer;display:block;height:15px;position:absolute;right:18px;top:17px;width:15px;top:8px\\9;right:7px\\9}\n.fb_dialog_mobile .fb_dialog_close_icon{top:5px;left:5px;right:auto}\n.fb_dialog_padding{background-color:transparent;position:absolute;width:1px;z-index:-1}\n.fb_dialog_close_icon:hover{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 -15px transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif)}\n.fb_dialog_close_icon:active{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yq\/r\/IE9JII6Z1Ys.png) no-repeat scroll 0 -30px transparent;_background-image:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yL\/r\/s816eWC-2sl.gif)}\n.fb_dialog_loader{background-color:#f2f2f2;border:1px solid #606060;font-size:24px;padding:20px}\n.fb_dialog_top_left,\n.fb_dialog_top_right,\n.fb_dialog_bottom_left,\n.fb_dialog_bottom_right{height:10px;width:10px;overflow:hidden;position:absolute}\n\/* \u0040noflip *\/\n.fb_dialog_top_left{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 0;left:-10px;top:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_top_right{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -10px;right:-10px;top:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_bottom_left{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -20px;bottom:-10px;left:-10px}\n\/* \u0040noflip *\/\n.fb_dialog_bottom_right{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ye\/r\/8YeTNIlTZjm.png) no-repeat 0 -30px;right:-10px;bottom:-10px}\n.fb_dialog_vert_left,\n.fb_dialog_vert_right,\n.fb_dialog_horiz_top,\n.fb_dialog_horiz_bottom{position:absolute;background:#525252;filter:alpha(opacity=70);opacity:.7}\n.fb_dialog_vert_left,\n.fb_dialog_vert_right{width:10px;height:100\u0025}\n.fb_dialog_vert_left{margin-left:-10px}\n.fb_dialog_vert_right{right:0;margin-right:-10px}\n.fb_dialog_horiz_top,\n.fb_dialog_horiz_bottom{width:100\u0025;height:10px}\n.fb_dialog_horiz_top{margin-top:-10px}\n.fb_dialog_horiz_bottom{bottom:0;margin-bottom:-10px}\n.fb_dialog_iframe{line-height:0}\n.fb_dialog_content .dialog_title{background:#6d84b4;border:1px solid #3b5998;color:#fff;font-size:14px;font-weight:bold;margin:0}\n.fb_dialog_content .dialog_title > span{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/yd\/r\/Cou7n-nqK52.gif)\nno-repeat 5px 50\u0025;float:left;padding:5px 0 7px 26px}\nbody.fb_hidden{-webkit-transform:none;height:100\u0025;margin:0;left:-10000px;overflow:visible;position:absolute;top:-10000px;width:100\u0025\n}\n.fb_dialog.fb_dialog_mobile.loading{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/ya\/r\/3rhSv5V8j3o.gif)\nwhite no-repeat 50\u0025 50\u0025;min-height:100\u0025;min-width:100\u0025;overflow:hidden;position:absolute;top:0;z-index:10001}\n.fb_dialog.fb_dialog_mobile.loading.centered{max-height:590px;min-height:590px;max-width:500px;min-width:500px}\n#fb-root #fb_dialog_ipad_overlay{background:rgba(0, 0, 0, .45);position:absolute;left:0;top:0;width:100\u0025;min-height:100\u0025;z-index:10000}\n#fb-root #fb_dialog_ipad_overlay.hidden{display:none}\n.fb_dialog.fb_dialog_mobile.loading iframe{visibility:hidden}\n.fb_dialog_content .dialog_header{-webkit-box-shadow:white 0 1px 1px -1px inset;background:-webkit-gradient(linear, 0 0, 0 100\u0025, from(#738ABA), to(#2C4987));border-bottom:1px solid;border-color:#1d4088;color:#fff;font:14px Helvetica, sans-serif;font-weight:bold;text-overflow:ellipsis;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0;vertical-align:middle;white-space:nowrap}\n.fb_dialog_content .dialog_header table{-webkit-font-smoothing:subpixel-antialiased;height:43px;width:100\u0025\n}\n.fb_dialog_content .dialog_header td.header_left{font-size:12px;padding-left:5px;vertical-align:middle;width:60px\n}\n.fb_dialog_content .dialog_header td.header_right{font-size:12px;padding-right:5px;vertical-align:middle;width:60px\n}\n.fb_dialog_content .touchable_button{background:-webkit-gradient(linear, 0 0, 0 100\u0025, from(#4966A6),\ncolor-stop(0.5, #355492), to(#2A4887));border:1px solid #29447e;-webkit-background-clip:padding-box;-webkit-border-radius:3px;-webkit-box-shadow:rgba(0, 0, 0, .117188) 0 1px 1px inset,\nrgba(255, 255, 255, .167969) 0 1px 0;display:inline-block;margin-top:3px;max-width:85px;line-height:18px;padding:4px 12px;position:relative}\n.fb_dialog_content .dialog_header .touchable_button input{border:none;background:none;color:#fff;font:12px Helvetica, sans-serif;font-weight:bold;margin:2px -12px;padding:2px 6px 3px 6px;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}\n.fb_dialog_content .dialog_header .header_center{color:#fff;font-size:16px;font-weight:bold;line-height:18px;text-align:center;vertical-align:middle}\n.fb_dialog_content .dialog_content{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y9\/r\/jKEcVPZFk-2.gif) no-repeat 50\u0025 50\u0025;border:1px solid #555;border-bottom:0;border-top:0;height:150px}\n.fb_dialog_content .dialog_footer{background:#f2f2f2;border:1px solid #555;border-top-color:#ccc;height:40px}\n#fb_dialog_loader_close{float:left}\n.fb_dialog.fb_dialog_mobile .fb_dialog_close_button{text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}\n.fb_dialog.fb_dialog_mobile .fb_dialog_close_icon{visibility:hidden}\n.fb_iframe_widget{display:inline-block;position:relative}\n.fb_iframe_widget span{display:inline-block;position:relative;text-align:justify}\n.fb_iframe_widget iframe{position:absolute}\n.fb_iframe_widget_lift{z-index:1}\n.fb_hide_iframes iframe{position:relative;left:-10000px}\n.fb_iframe_widget_loader{position:relative;display:inline-block}\n.fb_iframe_widget_fluid{display:inline}\n.fb_iframe_widget_fluid span{width:100\u0025}\n.fb_iframe_widget_loader iframe{min-height:32px;z-index:2;zoom:1}\n.fb_iframe_widget_loader .FB_Loader{background:url(http:\/\/static.ak.fbcdn.net\/rsrc.php\/v2\/y9\/r\/jKEcVPZFk-2.gif) no-repeat;height:32px;width:32px;margin-left:-16px;position:absolute;left:50\u0025;z-index:4}\n.fb_connect_bar_container div,\n.fb_connect_bar_container span,\n.fb_connect_bar_container a,\n.fb_connect_bar_container img,\n.fb_connect_bar_container strong{background:none;border-spacing:0;border:0;direction:ltr;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal;vertical-align:baseline}\n.fb_connect_bar_container{position:fixed;left:0 !important;right:0 !important;height:42px !important;padding:0 25px !important;margin:0 !important;vertical-align:middle !important;border-bottom:1px solid #333 !important;background:#3b5998 !important;z-index:99999999 !important;overflow:hidden !important}\n.fb_connect_bar_container_ie6{position:absolute;top:expression(document.compatMode==\"CSS1Compat\"? document.documentElement.scrollTop+\"px\":body.scrollTop+\"px\")}\n.fb_connect_bar{position:relative;margin:auto;height:100\u0025;width:100\u0025;padding:6px 0 0 0 !important;background:none;color:#fff !important;font-family:\"lucida grande\", tahoma, verdana, arial, sans-serif !important;font-size:13px !important;font-style:normal !important;font-variant:normal !important;font-weight:normal !important;letter-spacing:normal !important;line-height:1 !important;text-decoration:none !important;text-indent:0 !important;text-shadow:none !important;text-transform:none !important;white-space:normal !important;word-spacing:normal !important}\n.fb_connect_bar a:hover{color:#fff}\n.fb_connect_bar .fb_profile img{height:30px;width:30px;vertical-align:middle;margin:0 6px 5px 0}\n.fb_connect_bar div a,\n.fb_connect_bar span,\n.fb_connect_bar span a{color:#bac6da;font-size:11px;text-decoration:none}\n.fb_connect_bar .fb_buttons{float:right;margin-top:7px}\n.fb_edge_widget_with_comment{position:relative;*z-index:1000}\n.fb_edge_widget_with_comment span.fb_edge_comment_widget{position:absolute}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget{z-index:1}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget .FB_Loader{left:0;top:1px;margin-top:6px;margin-left:0;background-position:50\u0025 50\u0025;background-color:#fff;height:150px;width:394px;border:1px #666 solid;border-bottom:2px solid #283e6c;z-index:1}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget.dark .FB_Loader{background-color:#000;border-bottom:2px solid #ccc}\n.fb_edge_widget_with_comment span.fb_send_button_form_widget.siderender\n.FB_Loader{margin-top:0}\n.fbpluginrecommendationsbarleft,\n.fbpluginrecommendationsbarright{position:fixed !important;bottom:0;z-index:999}\n\/* \u0040noflip *\/\n.fbpluginrecommendationsbarleft{left:10px}\n\/* \u0040noflip *\/\n.fbpluginrecommendationsbarright{right:10px}","components":["fb.css.base","fb.css.dialog","fb.css.iframewidget","fb.css.connectbarwidget","fb.css.edgecommentwidget","fb.css.sendbuttonformwidget","fb.css.plugin.recommendationsbar"]});__d("CanvasPrefetcherConfig",[],{"blacklist":[144959615576466],"sampleRate":500});__d("ConnectBarConfig",[],{"imgs":{"buttonUrl":"rsrc.php\/v2\/yY\/r\/h_Y6u1wrZPW.png","missingProfileUrl":"rsrc.php\/v2\/yo\/r\/UlIqmHJn-SK.gif"}});__d("SDKConfig",[],{"bustCache":true,"tagCountLogRate":0.01,"errorHandling":{"rate":4},"usePluginPipe":true,"features":{"xfbml_profile_pic_server":true,"error_handling":{"rate":4},"e2e_ping_tracking":{"rate":1.0e-6}},"api":{"mode":"warn","whitelist":["Canvas","Canvas.Prefetcher","Canvas.Prefetcher.addStaticResource","Canvas.Prefetcher.setCollectionMode","Canvas.getPageInfo","Canvas.hideFlashElement","Canvas.scrollTo","Canvas.setAutoGrow","Canvas.setDoneLoading","Canvas.setSize","Canvas.setUrlHandler","Canvas.showFlashElement","Canvas.startTimer","Canvas.stopTimer","Data","Data.process","Data.query","Data.query:wait","Data.waitOn","Data.waitOn:wait","Event","Event.subscribe","Event.unsubscribe","Music.flashCallback","Music.init","Music.send","Payment","Payment.cancelFlow","Payment.continueFlow","Payment.init","Payment.parse","Payment.setSize","ThirdPartyProvider","ThirdPartyProvider.init","ThirdPartyProvider.sendData","UA","UA.nativeApp","XFBML","XFBML.RecommendationsBar","XFBML.RecommendationsBar.markRead","XFBML.parse","addFriend","api","getAccessToken","getAuthResponse","getLoginStatus","getUserID","init","login","logout","publish","share","ui","ui:subscribe"]},"initSitevars":{"enableMobileComments":1,"iframePermissions":{"read_stream":false,"manage_mailbox":false,"manage_friendlists":false,"read_mailbox":false,"publish_checkins":true,"status_update":true,"photo_upload":true,"video_upload":true,"sms":false,"create_event":true,"rsvp_event":true,"offline_access":true,"email":true,"xmpp_login":false,"create_note":true,"share_item":true,"export_stream":false,"publish_stream":true,"publish_likes":true,"ads_management":false,"contact_email":true,"access_private_data":false,"read_insights":false,"read_requests":false,"read_friendlists":true,"manage_pages":false,"physical_login":false,"manage_groups":false,"read_deals":false}}});__d("ApiClientConfig",[],{"FlashRequest":{"swfUrl":"https:\/\/connect.facebook.net\/rsrc.php\/v1\/yB\/r\/YV5wijq5fkW.swf"}}); +__d("QueryString",[],function(a,b,c,d,e,f){function g(k){var l=[];ES5(ES5('Object','keys',false,k),'forEach',true,function(m){var n=k[m];if(typeof n==='undefined')return;if(n===null){l.push(m);return;}l.push(encodeURIComponent(m)+'='+encodeURIComponent(n));});return l.join('&');}function h(k,l){var m={};if(k==='')return m;var n=k.split('&');for(var o=0;o');}else{m=document.createElement("iframe");m.name=n;}delete l.style;delete l.name;delete l.url;delete l.root;delete l.onload;var s=g({frameBorder:0,allowTransparency:true,scrolling:'no'},l);if(s.width)m.width=s.width+'px';if(s.height)m.height=s.height+'px';delete s.height;delete s.width;for(var t in s)if(s.hasOwnProperty(t))m.setAttribute(t,s[t]);g(m.style,p);m.src="javascript:false";o.appendChild(m);if(r)var u=j.add(m,'load',function(){u.remove();r();});m.src=q;return m;}e.exports=k;}); +__d("DOMWrapper",[],function(a,b,c,d,e,f){var g,h,i={setRoot:function(j){g=j;},getRoot:function(){return g||document.body;},setWindow:function(j){h=j;},getWindow:function(){return h||self;}};e.exports=i;}); +__d("sdk.feature",["SDKConfig"],function(a,b,c,d,e,f){var g=c('SDKConfig');function h(i,j){if(g.features&&i in g.features){var k=g.features[i];if(typeof k==='object'&&typeof k.rate==='number'){if(k.rate&&Math.random()*100<=k.rate){return k.value||true;}else return k.value?null:false;}else return k;}return typeof j!=='undefined'?j:null;}e.exports=h;}); +__d("UserAgent",[],function(a,b,c,d,e,f){var g=false,h,i,j,k,l,m,n,o,p,q,r,s,t,u;function v(){if(g)return;g=true;var x=navigator.userAgent,y=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(x),z=/(Mac OS X)|(Windows)|(Linux)/.exec(x);r=/\b(iPhone|iP[ao]d)/.exec(x);s=/\b(iP[ao]d)/.exec(x);p=/Android/i.exec(x);t=/FBAN\/\w+;/i.exec(x);u=/Mobile/i.exec(x);q=!!(/Win64/.exec(x));if(y){h=y[1]?parseFloat(y[1]):NaN;if(h&&document.documentMode)h=document.documentMode;i=y[2]?parseFloat(y[2]):NaN;j=y[3]?parseFloat(y[3]):NaN;k=y[4]?parseFloat(y[4]):NaN;if(k){y=/(?:Chrome\/(\d+\.\d+))/.exec(x);l=y&&y[1]?parseFloat(y[1]):NaN;}else l=NaN;}else h=i=j=l=k=NaN;if(z){if(z[1]){var aa=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(x);m=aa?parseFloat(aa[1].replace('_','.')):true;}else m=false;n=!!z[2];o=!!z[3];}else m=n=o=false;}var w={ie:function(){return v()||h;},ie64:function(){return w.ie()&&q;},firefox:function(){return v()||i;},opera:function(){return v()||j;},webkit:function(){return v()||k;},safari:function(){return w.webkit();},chrome:function(){return v()||l;},windows:function(){return v()||n;},osx:function(){return v()||m;},linux:function(){return v()||o;},iphone:function(){return v()||r;},mobile:function(){return v()||(r||s||p||u);},nativeApp:function(){return v()||t;},android:function(){return v()||p;},ipad:function(){return v()||s;}};e.exports=w;}); +__d("sdk.getContextType",["UserAgent","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('UserAgent'),h=b('sdk.Runtime');function i(){if(g.nativeApp())return 3;if(g.mobile())return 2;if(h.isEnvironment(h.ENVIRONMENTS.CANVAS))return 5;return 1;}e.exports=i;}); +__d("UrlMap",["UrlMapConfig"],function(a,b,c,d,e,f){var g=b('UrlMapConfig'),h={resolve:function(i,j){var k=typeof j=='undefined'?location.protocol.replace(':',''):j?'https':'http';if(i in g)return k+'://'+g[i];if(typeof j=='undefined'&&i+'_'+k in g)return k+'://'+g[i+'_'+k];if(j!==true&&i+'_http' in g)return 'http://'+g[i+'_http'];if(j!==false&&i+'_https' in g)return 'https://'+g[i+'_https'];}};e.exports=h;}); +__d("sdk.Impressions",["guid","QueryString","sdk.Runtime","UrlMap"],function(a,b,c,d,e,f){var g=b('guid'),h=b('QueryString'),i=b('sdk.Runtime'),j=b('UrlMap');function k(m){var n=i.getClientID();if(!m.api_key&&n)m.api_key=n;m.kid_directed_site=i.getKidDirectedSite();var o=new Image();o.src=h.appendToUrl(j.resolve('www',true)+'/impression.php/'+g()+'/',m);}var l={log:function(m,n){if(!n.source)n.source='jssdk';k({lid:m,payload:ES5('JSON','stringify',false,n)});},impression:k};e.exports=l;}); +__d("Log",["sprintf"],function(a,b,c,d,e,f){var g=b('sprintf'),h={DEBUG:3,INFO:2,WARNING:1,ERROR:0};function i(k,l){var m=Array.prototype.slice.call(arguments,2),n=g.apply(null,m),o=window.console;if(o&&j.level>=l)o[k in o?k:'log'](n);}var j={level:-1,Level:h,debug:ES5(i,'bind',true,null,'debug',h.DEBUG),info:ES5(i,'bind',true,null,'info',h.INFO),warn:ES5(i,'bind',true,null,'warn',h.WARNING),error:ES5(i,'bind',true,null,'error',h.ERROR)};e.exports=j;}); +__d("Base64",[],function(a,b,c,d,e,f){var g='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';function h(l){l=(l.charCodeAt(0)<<16)|(l.charCodeAt(1)<<8)|l.charCodeAt(2);return String.fromCharCode(g.charCodeAt(l>>>18),g.charCodeAt((l>>>12)&63),g.charCodeAt((l>>>6)&63),g.charCodeAt(l&63));}var i='>___?456789:;<=_______'+'\0\1\2\3\4\5\6\7\b\t\n\13\f\r\16\17\20\21\22\23\24\25\26\27\30\31'+'______\32\33\34\35\36\37 !"#$%&\'()*+,-./0123';function j(l){l=(i.charCodeAt(l.charCodeAt(0)-43)<<18)|(i.charCodeAt(l.charCodeAt(1)-43)<<12)|(i.charCodeAt(l.charCodeAt(2)-43)<<6)|i.charCodeAt(l.charCodeAt(3)-43);return String.fromCharCode(l>>>16,(l>>>8)&255,l&255);}var k={encode:function(l){l=unescape(encodeURI(l));var m=(l.length+2)%3;l=(l+'\0\0'.slice(m)).replace(/[\s\S]{3}/g,h);return l.slice(0,l.length+m-2)+'=='.slice(m);},decode:function(l){l=l.replace(/[^A-Za-z0-9+\/]/g,'');var m=(l.length+3)&3;l=(l+'AAA'.slice(m)).replace(/..../g,j);l=l.slice(0,l.length+m-3);try{return decodeURIComponent(escape(l));}catch(n){throw new Error('Not valid UTF-8');}},encodeObject:function(l){return k.encode(ES5('JSON','stringify',false,l));},decodeObject:function(l){return ES5('JSON','parse',false,k.decode(l));},encodeNums:function(l){return String.fromCharCode.apply(String,ES5(l,'map',true,function(m){return g.charCodeAt((m|-(m>63))&-(m>0)&63);}));}};e.exports=k;}); +__d("sdk.SignedRequest",["Base64"],function(a,b,c,d,e,f){var g=b('Base64');function h(j){if(!j)return null;var k=j.split('.',2)[1].replace(/\-/g,'+').replace(/\_/g,'/');return g.decodeObject(k);}var i={parse:h};e.exports=i;}); +__d("URL",["Assert","copyProperties","QueryString","Log"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('copyProperties'),i=b('QueryString'),j=b('Log'),k=new RegExp('('+'(((\\w+):)?//)'+'(.*?@)?'+'([^~/?#:]+)'+'(:(\\d+))?'+')?'+'([^\\?$#]+)?'+'(\\?([^$#]+))?'+'(#([^$]+))?'),l=/[\0\\]/,m=/[^\w\-\.,;\/?:@=&%#$~+!*'\[\]()]+/g,n=/^[a-z0-9.][a-z0-9\-\.]+[a-z0-9.]$/,o=/\.facebook\.com$/;function p(q){g.isString(q,'The passed argument was of invalid type.');if(l.test(q))throw new URIError('The passed argument could not be parsed as a url.');if(this instanceof p===false)return new p(q);var r=q.replace(m,function(t){j.warn('Escaping unescaped character \\x%s from "%s"',t.charCodeAt(0).toString(16),q);return encodeURIComponent(t);}).match(k);if(!q||!r)throw new URIError('The passed argument could not be parsed as a url.');var s=!!location.hostname;this.setProtocol(r[4]||(s?location.protocol.replace(/:/,''):''));this.setDomain(r[6]||location.hostname);this.setPort(r[8]||(s&&!r[6]?location.port:''));this.setPath(r[9]||'');this.setSearch(r[11]||'');this.setFragment(r[13]||'');if(this._path.substring(0,1)!='/')this._path='/'+this._path;if(this._domain&&!n.test(decodeURIComponent(this._domain.toLowerCase()))){j.error('Invalid characters found in domain name: %s',this._domain);throw new URIError('Domain contained invalid characters.');}}h(p.prototype,{constructor:p,getProtocol:function(){return this._protocol;},setProtocol:function(q){this._protocol=q;return this;},getDomain:function(){return this._domain;},setDomain:function(q){this._domain=q;return this;},getPort:function(){return this._port;},setPort:function(q){this._port=q;return this;},getPath:function(){return this._path;},setPath:function(q){this._path=q;return this;},getSearch:function(){return this._search;},setSearch:function(q){this._search=q;return this;},getFragment:function(){return this._fragment;},setFragment:function(q){this._fragment=q;return this;},getParsedSearch:function(){return i.decode(this._search);},getParsedFragment:function(){return i.decode(this._fragment);},isFacebookURL:function(){return o.test(this._domain);},toString:function(){return (this._protocol?this._protocol+':':'')+(this._domain?'//'+this._domain:'')+(this._port?':'+this._port:'')+this._path+(this._search?'?'+this._search:'')+(this._fragment?'#'+this._fragment:'');},valueOf:function(){return this.toString();}});h(p,{getCurrent:function(){return new p(location.href);},getReferrer:function(){return document.referrer?new p(document.referrer):null;}});e.exports=p;}); +__d("sdk.domReady",[],function(a,b,c,d,e,f){var g,h="readyState" in document?/loaded|complete/.test(document.readyState):!!document.body;function i(){if(!g)return;var l;while(l=g.shift())l();g=null;}function j(l){if(g){g.push(l);return;}else l();}if(!h){g=[];if(document.addEventListener){document.addEventListener('DOMContentLoaded',i,false);window.addEventListener('load',i,false);}else if(document.attachEvent){document.attachEvent('onreadystatechange',i);window.attachEvent('onload',i);}if(document.documentElement.doScroll&&window==window.top){var k=function(){try{document.documentElement.doScroll('left');}catch(l){setTimeout(k,0);return;}i();};k();}}e.exports=j;},3); +__d("sdk.Content",["sdk.domReady","Log","UserAgent"],function(a,b,c,d,e,f){var g=b('sdk.domReady'),h=b('Log'),i=b('UserAgent'),j,k,l={append:function(m,n){if(!n)if(!j){j=n=document.getElementById('fb-root');if(!n){h.warn('The "fb-root" div has not been created, auto-creating');j=n=document.createElement('div');n.id='fb-root';if(i.ie()||!document.body){g(function(){document.body.appendChild(n);});}else document.body.appendChild(n);}n.className+=' fb_reset';}else n=j;if(typeof m=='string'){var o=document.createElement('div');n.appendChild(o).innerHTML=m;return o;}else return n.appendChild(m);},appendHidden:function(m){if(!n){var n=document.createElement('div'),o=n.style;o.position='absolute';o.top='-10000px';o.width=o.height=0;n=l.append(n);}return l.append(m,n);},submitToTarget:function(m,n){var o=document.createElement('form');o.action=m.url;o.target=m.target;o.method=(n)?'GET':'POST';l.appendHidden(o);for(var p in m.params)if(m.params.hasOwnProperty(p)){var q=m.params[p];if(q!==null&&q!==undefined){var r=document.createElement('input');r.name=p;r.value=q;o.appendChild(r);}}o.submit();o.parentNode.removeChild(o);}};e.exports=l;}); +__d("sdk.Event",[],function(a,b,c,d,e,f){var g={subscribers:function(){if(!this._subscribersMap)this._subscribersMap={};return this._subscribersMap;},subscribe:function(h,i){var j=this.subscribers();if(!j[h]){j[h]=[i];}else j[h].push(i);},unsubscribe:function(h,i){var j=this.subscribers()[h];if(j)ES5(j,'forEach',true,function(k,l){if(k==i)j[l]=null;});},monitor:function(h,i){if(!i()){var j=this,k=function(){if(i.apply(i,arguments))j.unsubscribe(h,k);};this.subscribe(h,k);}},clear:function(h){delete this.subscribers()[h];},fire:function(h){var i=Array.prototype.slice.call(arguments,1),j=this.subscribers()[h];if(j)ES5(j,'forEach',true,function(k){if(k)k.apply(this,i);});}};e.exports=g;}); +__d("Queue",["copyProperties"],function(a,b,c,d,e,f){var g=b('copyProperties'),h={};function i(j){this._opts=g({interval:0,processor:null},j);this._queue=[];this._stopped=true;}g(i.prototype,{_dispatch:function(j){if(this._stopped||this._queue.length===0)return;if(!this._opts.processor){this._stopped=true;throw new Error('No processor available');}if(this._opts.interval){this._opts.processor.call(this,this._queue.shift());this._timeout=setTimeout(ES5(this._dispatch,'bind',true,this),this._opts.interval);}else while(this._queue.length)this._opts.processor.call(this,this._queue.shift());},enqueue:function(j){if(this._opts.processor&&!this._stopped){this._opts.processor.call(this,j);}else this._queue.push(j);return this;},start:function(j){if(j)this._opts.processor=j;this._stopped=false;this._dispatch();return this;},dispatch:function(){this._dispatch(true);},stop:function(j){this._stopped=true;if(j)clearTimeout(this._timeout);return this;},merge:function(j,k){this._queue[k?'unshift':'push'].apply(this._queue,j._queue);j._queue=[];this._dispatch();return this;},getLength:function(){return this._queue.length;}});g(i,{get:function(j,k){var l;if(j in h){l=h[j];}else l=h[j]=new i(k);return l;},exists:function(j){return j in h;},remove:function(j){return delete h[j];}});e.exports=i;}); +__d("resolveURI",[],function(a,b,c,d,e,f){function g(h){if(!h)return window.location.href;h=h.replace(/&/g,'&').replace(/"/g,'"');var i=document.createElement('div');i.innerHTML='';return i.firstChild.href;}e.exports=g;}); +__d("resolveWindow",[],function(a,b,c,d,e,f){function g(h){var i=window,j=h.split('.');try{for(var l=0;l=9)window.attachEvent('onunload',p);m=true;}l[t]=t;}var s={embed:function(t,u,v,w){var x=k();t=encodeURI(t);v=j({allowscriptaccess:'always',flashvars:w,movie:t},v||{});if(typeof v.flashvars=='object')v.flashvars=h.encode(v.flashvars);var y=[];for(var z in v)if(v.hasOwnProperty(z)&&v[z])y.push('');var aa=n.createElement('div'),ba=''+y.join('')+'';aa.innerHTML=ba;var ca=u.appendChild(aa.firstChild);r(x);return ca;},remove:o,getVersion:function(){var t='Shockwave Flash',u='application/x-shockwave-flash',v='ShockwaveFlash.ShockwaveFlash',w;if(navigator.plugins&&typeof navigator.plugins[t]=='object'){var x=navigator.plugins[t].description;if(x&&navigator.mimeTypes&&navigator.mimeTypes[u]&&navigator.mimeTypes[u].enabledPlugin)w=x.match(/\d+/g);}if(!w)try{w=(new ActiveXObject(v)).GetVariable('$version').match(/(\d+),(\d+),(\d+),(\d+)/);w=Array.prototype.slice.call(w,1);}catch(y){}return w;},checkMinVersion:function(t){var u=s.getVersion();if(!u)return false;return q(u.join('.'))>=q(t);},isAvailable:function(){return !!s.getVersion();}};e.exports=s;}); +__d("dotAccess",[],function(a,b,c,d,e,f){function g(h,i,j){var k=i.split('.');do{var l=k.shift();h=h[l]||j&&(h[l]={});}while(k.length&&h);return h;}e.exports=g;}); +__d("GlobalCallback",["DOMWrapper","dotAccess","guid","wrapFunction"],function(a,b,c,d,e,f){var g=b('DOMWrapper'),h=b('dotAccess'),i=b('guid'),j=b('wrapFunction'),k,l,m={setPrefix:function(n){k=h(g.getWindow(),n,true);l=n;},create:function(n,o){if(!k)this.setPrefix('__globalCallbacks');var p=i();k[p]=j(n,'entry',o||'GlobalCallback');return l+'.'+p;},remove:function(n){var o=n.substring(l.length+1);delete k[o];}};e.exports=m;}); +__d("XDM",["DOMEventListener","DOMWrapper","emptyFunction","Flash","GlobalCallback","guid","Log","UserAgent","wrapFunction"],function(a,b,c,d,e,f){var g=b('DOMEventListener'),h=b('DOMWrapper'),i=b('emptyFunction'),j=b('Flash'),k=b('GlobalCallback'),l=b('guid'),m=b('Log'),n=b('UserAgent'),o=b('wrapFunction'),p={},q={transports:[]},r=h.getWindow();function s(u){var v={},w=u.length,x=q.transports;while(w--)v[u[w]]=1;w=x.length;while(w--){var y=x[w],z=p[y];if(!v[y]&&z.isAvailable())return y;}}var t={register:function(u,v){m.debug('Registering %s as XDM provider',u);q.transports.push(u);p[u]=v;},create:function(u){if(!u.whenReady&&!u.onMessage){m.error('An instance without whenReady or onMessage makes no sense');throw new Error('An instance without whenReady or '+'onMessage makes no sense');}if(!u.channel){m.warn('Missing channel name, selecting at random');u.channel=l();}if(!u.whenReady)u.whenReady=i;if(!u.onMessage)u.onMessage=i;var v=u.transport||s(u.blacklist||[]),w=p[v];if(w&&w.isAvailable()){m.debug('%s is available',v);w.init(u);return v;}}};t.register('fragment',(function(){var u=false,v,w=location.protocol+'//'+location.host;function x(y){var z=document.createElement('iframe');z.src='javascript:false';var aa=g.add(z,'load',function(){aa.remove();setTimeout(function(){z.parentNode.removeChild(z);},5000);});v.appendChild(z);z.src=y;}return {isAvailable:function(){return true;},init:function(y){m.debug('init fragment');var z={send:function(aa,ba,ca,da){m.debug('sending to: %s (%s)',ba+y.channelPath,da);x(ba+y.channelPath+aa+'&xd_rel=parent.parent&relation=parent.parent&xd_origin='+encodeURIComponent(w));}};if(u){setTimeout(function(){y.whenReady(z);},0);return;}v=y.root;u=true;setTimeout(function(){y.whenReady(z);},0);}};})());t.register('flash',(function(){var u=false,v,w=false,x=15000,y;return {isAvailable:function(){return j.checkMinVersion('8.0.24');},init:function(z){m.debug('init flash: '+z.channel);var aa={send:function(da,ea,fa,ga){m.debug('sending to: %s (%s)',ea,ga);v.postMessage(da,ea,ga);}};if(u){z.whenReady(aa);return;}var ba=z.root.appendChild(r.document.createElement('div')),ca=k.create(function(){k.remove(ca);clearTimeout(y);m.info('xdm.swf called the callback');var da=k.create(function(ea,fa){ea=decodeURIComponent(ea);fa=decodeURIComponent(fa);m.debug('received message %s from %s',ea,fa);z.onMessage(ea,fa);},'xdm.swf:onMessage');v.init(z.channel,da);z.whenReady(aa);},'xdm.swf:load');v=j.embed(z.flashUrl,ba,null,{protocol:location.protocol.replace(':',''),host:location.host,callback:ca,log:w});y=setTimeout(function(){m.warn('The Flash component did not load within %s ms - '+'verify that the container is not set to hidden or invisible '+'using CSS as this will cause some browsers to not load '+'the components',x);},x);u=true;}};})());t.register('postmessage',(function(){var u=false;return {isAvailable:function(){return !!r.postMessage;},init:function(v){m.debug('init postMessage: '+v.channel);var w='_FB_'+v.channel,x={send:function(y,z,aa,ba){if(r===aa){m.error('Invalid windowref, equal to window (self)');throw new Error();}m.debug('sending to: %s (%s)',z,ba);var ca=function(){aa.postMessage('_FB_'+ba+y,z);};if(n.ie()==8){setTimeout(ca,0);}else ca();}};if(u){v.whenReady(x);return;}g.add(r,'message',o(function(event){var y=event.data,z=event.origin||'native';if(typeof y!='string'){m.warn('Received message of type %s from %s, expected a string',typeof y,z);return;}m.debug('received message %s from %s',y,z);if(y.substring(0,w.length)==w)y=y.substring(w.length);v.onMessage(y,z);},'entry','onMessage'));v.whenReady(x);u=true;}};})());e.exports=t;}); +__d("sdk.XD",["sdk.Content","sdk.createIframe","sdk.Event","guid","Log","QueryString","Queue","resolveURI","resolveWindow","sdk.RPC","sdk.Runtime","UrlMap","URL","wrapFunction","XDM","XDConfig"],function(a,b,c,d,e,f){var g=b('sdk.Content'),h=b('sdk.createIframe'),i=b('sdk.Event'),j=b('guid'),k=b('Log'),l=b('QueryString'),m=b('Queue'),n=b('resolveURI'),o=b('resolveWindow'),p=b('sdk.RPC'),q=b('sdk.Runtime'),r=b('UrlMap'),s=b('URL'),t=b('wrapFunction'),u=c('XDConfig'),v=b('XDM'),w=new m(),x=new m(),y=new m(),z,aa,ba=j(),ca=j(),da=location.protocol+'//'+location.host,ea,fa=false,ga='Facebook Cross Domain Communication Frame',ha={},ia=new m();p.setInQueue(ia);function ja(pa){k.info('Remote XD can talk to facebook.com (%s)',pa);q.setEnvironment(pa==='canvas'?q.ENVIRONMENTS.CANVAS:q.ENVIRONMENTS.PAGETAB);}function ka(pa,qa){if(!qa){k.error('No senderOrigin');throw new Error();}var ra=/^https?/.exec(qa)[0];switch(pa.xd_action){case 'proxy_ready':var sa,ta;if(ra=='https'){sa=y;ta=aa;}else{sa=x;ta=z;}if(pa.registered){ja(pa.registered);w=sa.merge(w);}k.info('Proxy ready, starting queue %s containing %s messages',ra+'ProxyQueue',sa.getLength());sa.start(function(va){ea.send(typeof va==='string'?va:l.encode(va),qa,ta.contentWindow,ca+'_'+ra);});break;case 'plugin_ready':k.info('Plugin %s ready, protocol: %s',pa.name,ra);ha[pa.name]={protocol:ra};if(m.exists(pa.name)){var ua=m.get(pa.name);k.debug('Enqueuing %s messages for %s in %s',ua.getLength(),pa.name,ra+'ProxyQueue');(ra=='https'?y:x).merge(ua);}break;}if(pa.data)la(pa.data,qa);}function la(pa,qa){if(qa&&qa!=='native'&&!s(qa).isFacebookURL())return;if(typeof pa=='string'){if(/^FB_RPC:/.test(pa)){ia.enqueue(pa.substring(7));return;}if(pa.substring(0,1)=='{'){try{pa=ES5('JSON','parse',false,pa);}catch(ra){k.warn('Failed to decode %s as JSON',pa);return;}}else pa=l.decode(pa);}if(!qa)if(pa.xd_sig==ba)qa=pa.xd_origin;if(pa.xd_action){ka(pa,qa);return;}if(pa.access_token)q.setSecure(/^https/.test(da));if(pa.cb){var sa=oa._callbacks[pa.cb];if(!oa._forever[pa.cb])delete oa._callbacks[pa.cb];if(sa)sa(pa);}}function ma(pa,qa){if(pa=='facebook'){qa.relation='parent.parent';w.enqueue(qa);}else{qa.relation='parent.frames["'+pa+'"]';var ra=ha[pa];if(ra){k.debug('Enqueuing message for plugin %s in %s',pa,ra.protocol+'ProxyQueue');(ra.protocol=='https'?y:x).enqueue(qa);}else{k.debug('Buffering message for plugin %s',pa);m.get(pa).enqueue(qa);}}}p.getOutQueue().start(function(pa){ma('facebook','FB_RPC:'+pa);});function na(pa,qa){if(fa)return;var ra=pa?/\/\/.*?(\/[^#]*)/.exec(pa)[1]:location.pathname+location.search;ra+=(~ES5(ra,'indexOf',true,'?')?'&':'?')+'fb_xd_fragment#xd_sig='+ba+'&';var sa=g.appendHidden(document.createElement('div')),ta=v.create({root:sa,channel:ca,channelPath:'/'+u.XdUrl+'#',flashUrl:u.Flash.path,whenReady:function(ua){ea=ua;var va={channel:ca,origin:location.protocol+'//'+location.host,channel_path:ra,transport:ta,xd_name:qa},wa='/'+u.XdUrl+'#'+l.encode(va),xa=u.useCdn?r.resolve('cdn',false):'http://www.facebook.com',ya=u.useCdn?r.resolve('cdn',true):'https://www.facebook.com';if(q.getSecure()!==true)z=h({url:xa+wa,name:'fb_xdm_frame_http',id:'fb_xdm_frame_http',root:sa,'aria-hidden':true,title:ga,'tab-index':-1});aa=h({url:ya+wa,name:'fb_xdm_frame_https',id:'fb_xdm_frame_https',root:sa,'aria-hidden':true,title:ga,'tab-index':-1});},onMessage:la});if(ta==='fragment')window.FB_XD_onMessage=t(la,'entry','XD:fragment');fa=true;}var oa={rpc:p,_callbacks:{},_forever:{},_channel:ca,_origin:da,onMessage:la,recv:la,init:na,sendToFacebook:ma,inform:function(pa,qa,ra,sa){ma('facebook',{method:pa,params:ES5('JSON','stringify',false,qa||{}),behavior:sa||'p',relation:ra});},handler:function(pa,qa,ra,sa){var ta=u.useCdn?r.resolve('cdn',location.protocol=='https:'):location.protocol+'//www.facebook.com';return ta+'/'+u.XdUrl+'#'+l.encode({cb:this.registerCallback(pa,ra,sa),origin:da+'/'+ca,domain:location.hostname,relation:qa||'opener'});},registerCallback:function(pa,qa,ra){ra=ra||j();if(qa)oa._forever[ra]=true;oa._callbacks[ra]=pa;return ra;}};(function(){var pa=location.href.match(/[?&]fb_xd_fragment#(.*)$/);if(pa){document.documentElement.style.display='none';var qa=l.decode(pa[1]),ra=o(qa.xd_rel);k.debug('Passing fragment based message: %s',pa[1]);ra.FB_XD_onMessage(qa);document.open();document.close();}})();i.subscribe('init:post',function(pa){na(pa.channelUrl?n(pa.channelUrl):null,pa.xdProxyName);});e.exports=oa;}); +__d("sdk.Auth",["sdk.Cookie","copyProperties","sdk.createIframe","DOMWrapper","sdk.feature","sdk.getContextType","guid","sdk.Impressions","Log","ObservableMixin","QueryString","sdk.Runtime","sdk.SignedRequest","UrlMap","URL","sdk.XD"],function(a,b,c,d,e,f){var g=b('sdk.Cookie'),h=b('copyProperties'),i=b('sdk.createIframe'),j=b('DOMWrapper'),k=b('sdk.feature'),l=b('sdk.getContextType'),m=b('guid'),n=b('sdk.Impressions'),o=b('Log'),p=b('ObservableMixin'),q=b('QueryString'),r=b('sdk.Runtime'),s=b('sdk.SignedRequest'),t=b('UrlMap'),u=b('URL'),v=b('sdk.XD'),w,x,y=new p();function z(fa,ga){var ha=r.getUserID(),ia='';if(fa)if(fa.userID){ia=fa.userID;}else if(fa.signedRequest){var ja=s.parse(fa.signedRequest);if(ja&&ja.user_id)ia=ja.user_id;}var ka=r.getLoginStatus(),la=(ka==='unknown'&&fa)||(r.getUseCookie()&&r.getCookieUserID()!==ia),ma=ha&&!fa,na=fa&&ha&&ha!=ia,oa=fa!=w,pa=ga!=(ka||'unknown');r.setLoginStatus(ga);r.setAccessToken(fa&&fa.accessToken||null);r.setUserID(ia);w=fa;var qa={authResponse:fa,status:ga};if(ma||na)y.inform('logout',qa);if(la||na)y.inform('login',qa);if(oa)y.inform('authresponse.change',qa);if(pa)y.inform('status.change',qa);return qa;}function aa(){return w;}function ba(fa,ga,ha){return function(ia){var ja;if(ia&&ia.access_token){var ka=s.parse(ia.signed_request);ga={accessToken:ia.access_token,userID:ka.user_id,expiresIn:parseInt(ia.expires_in,10),signedRequest:ia.signed_request};if(r.getUseCookie()){var la=ga.expiresIn===0?0:ES5('Date','now',false)+ga.expiresIn*1000,ma=g.getDomain();if(!ma&&ia.base_domain)g.setDomain('.'+ia.base_domain);g.setSignedRequestCookie(ia.signed_request,la);}ja='connected';z(ga,ja);}else if(ha==='logout'||ha==='login_status'){if(ia.error&&ia.error==='not_authorized'){ja='not_authorized';}else ja='unknown';z(null,ja);if(r.getUseCookie())g.clearSignedRequestCookie();}if(ia&&ia.https==1)r.setSecure(true);if(fa)fa({authResponse:ga,status:r.getLoginStatus()});return ga;};}function ca(fa){var ga,ha=ES5('Date','now',false);if(x){clearTimeout(x);x=null;}var ia=ba(fa,w,'login_status'),ja=u(t.resolve('www',true)+'/connect/ping').setSearch(q.encode({client_id:r.getClientID(),response_type:'token,signed_request,code',domain:location.hostname,origin:l(),redirect_uri:v.handler(function(ka){if(k('e2e_ping_tracking',true)){var la={init:ha,close:ES5('Date','now',false),method:'ping'};o.debug('e2e: %s',ES5('JSON','stringify',false,la));n.log(114,{payload:la});}ga.parentNode.removeChild(ga);if(ia(ka))x=setTimeout(function(){ca(function(){});},1200000);},'parent'),sdk:'joey',kid_directed_site:r.getKidDirectedSite()}));ga=i({root:j.getRoot(),name:m(),url:ja.toString(),style:{display:'none'}});}var da;function ea(fa,ga){if(!r.getClientID()){o.warn('FB.getLoginStatus() called before calling FB.init().');return;}if(fa)if(!ga&&da=='loaded'){fa({status:r.getLoginStatus(),authResponse:aa()});return;}else y.subscribe('FB.loginStatus',fa);if(!ga&&da=='loading')return;da='loading';var ha=function(ia){da='loaded';y.inform('FB.loginStatus',ia);y.clearSubscribers('FB.loginStatus');};ca(ha);}h(y,{getLoginStatus:ea,fetchLoginStatus:ca,setAuthResponse:z,getAuthResponse:aa,parseSignedRequest:s.parse,xdResponseWrapper:ba});e.exports=y;}); +__d("hasArrayNature",[],function(a,b,c,d,e,f){function g(h){return (!!h&&(typeof h=='object'||typeof h=='function')&&('length' in h)&&!('setInterval' in h)&&(Object.prototype.toString.call(h)==="[object Array]"||('callee' in h)||('item' in h)));}e.exports=g;}); +__d("createArrayFrom",["hasArrayNature"],function(a,b,c,d,e,f){var g=b('hasArrayNature');function h(i){if(!g(i))return [i];if(i.item){var j=i.length,k=new Array(j);while(j--)k[j]=i[j];return k;}return Array.prototype.slice.call(i);}e.exports=h;}); +__d("sdk.DOM",["Assert","createArrayFrom","sdk.domReady","UserAgent"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('createArrayFrom'),i=b('sdk.domReady'),j=b('UserAgent'),k={};function l(z,aa){var ba=(z.getAttribute(aa)||z.getAttribute(aa.replace(/_/g,'-'))||z.getAttribute(aa.replace(/-/g,'_'))||z.getAttribute(aa.replace(/-/g,''))||z.getAttribute(aa.replace(/_/g,''))||z.getAttribute('data-'+aa)||z.getAttribute('data-'+aa.replace(/_/g,'-'))||z.getAttribute('data-'+aa.replace(/-/g,'_'))||z.getAttribute('data-'+aa.replace(/-/g,''))||z.getAttribute('data-'+aa.replace(/_/g,'')));return ba?String(ba):null;}function m(z,aa){var ba=l(z,aa);return ba?/^(true|1|yes|on)$/.test(ba):null;}function n(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);try{return String(z[aa]);}catch(ba){throw new Error('Could not read property '+aa+' : '+ba.message);}}function o(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);try{z.innerHTML=aa;}catch(ba){throw new Error('Could not set innerHTML : '+ba.message);}}function p(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);var ba=' '+n(z,'className')+' ';return ES5(ba,'indexOf',true,' '+aa+' ')>=0;}function q(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);if(!p(z,aa))z.className=n(z,'className')+' '+aa;}function r(z,aa){g.isTruthy(z,'element not specified');g.isString(aa);var ba=new RegExp('\\s*'+aa,'g');z.className=ES5(n(z,'className').replace(ba,''),'trim',true);}function s(z,aa,ba){g.isString(z);aa=aa||document.body;ba=ba||'*';if(aa.querySelectorAll)return h(aa.querySelectorAll(ba+'.'+z));var ca=aa.getElementsByTagName(ba),da=[];for(var ea=0,fa=ca.length;ea2000){h.remove(n.callback);return false;}p.onerror=function(){q({error:{type:'http',message:'unknown error'}});};var r=function(){setTimeout(function(){q({error:{type:'http',message:'unknown error'}});},0);};if(p.addEventListener){p.addEventListener('load',r,false);}else p.onreadystatechange=function(){if(/loaded|complete/.test(this.readyState))r();};p.src=l;g.getRoot().appendChild(p);return true;}var k={execute:j};e.exports=k;}); +__d("ApiClient",["ArgumentError","Assert","copyProperties","CORSRequest","FlashRequest","flattenObject","JSONPRequest","Log","ObservableMixin","sprintf","UrlMap","URL","ApiClientConfig"],function(a,b,c,d,e,f){var g=b('ArgumentError'),h=b('Assert'),i=b('copyProperties'),j=b('CORSRequest'),k=b('FlashRequest'),l=b('flattenObject'),m=b('JSONPRequest'),n=b('Log'),o=b('ObservableMixin'),p=b('sprintf'),q=b('UrlMap'),r=b('URL'),s=b('ApiClientConfig'),t,u,v,w={get:true,post:true,'delete':true,put:true},x={fql_query:true,fql_multiquery:true,friends_get:true,notifications_get:true,stream_get:true,users_getinfo:true};function y(da,ea,fa,ga){if(!fa.access_token)fa.access_token=t;fa.pretty=0;if(v)i(fa,v);fa=l(fa);var ha={jsonp:m,cors:j,flash:k},ia;if(fa.transport){ia=[fa.transport];delete fa.transport;}else ia=['jsonp','cors','flash'];for(var ja=0;ja'+' '+'
'+'
'+' Facebook'+'
'+''+'
'+''),width:r});},_createMobileLoader:function(){var r=o.nativeApp()?'':(''+' '+' '+' '+' '+' '+' '+' '+'
'+' '+' '+'
'+k.tx._("Loading...")+'
'+'
'+'
');return q.create({classes:'loading'+(o.ipad()?' centered':''),content:('
'+r+'
')});},_restoreBodyPosition:function(){if(!o.ipad()){var r=document.getElementsByTagName('body')[0];i.removeCss(r,'fb_hidden');}},_showIPadOverlay:function(){if(!o.ipad())return;if(!q._overlayEl){q._overlayEl=document.createElement('div');q._overlayEl.setAttribute('id','fb_dialog_ipad_overlay');h.append(q._overlayEl,null);}q._overlayEl.className='';},_hideIPadOverlay:function(){if(o.ipad())q._overlayEl.className='hidden';},showLoader:function(r,s){q._showIPadOverlay();if(!q._loaderEl)q._loaderEl=q._findRoot(o.mobile()?q._createMobileLoader():q._createWWWLoader(s));if(!r)r=function(){};var t=document.getElementById('fb_dialog_loader_close');i.removeCss(t,'fb_hidden');t.onclick=function(){q._hideLoader();q._restoreBodyPosition();q._hideIPadOverlay();r();};var u=document.getElementById('fb_dialog_ipad_overlay');if(u)u.ontouchstart=t.onclick;q._makeActive(q._loaderEl);},_hideLoader:function(){if(q._loaderEl&&q._loaderEl==q._active)q._loaderEl.style.top='-10000px';},_makeActive:function(r){q._setDialogSizes();q._lowerActive();q._active=r;if(m.isEnvironment(m.ENVIRONMENTS.CANVAS))g.getPageInfo(function(s){q._centerActive(s);});q._centerActive();},_lowerActive:function(){if(!q._active)return;q._active.style.top='-10000px';q._active=null;},_removeStacked:function(r){q._stack=ES5(q._stack,'filter',true,function(s){return s!=r;});},_centerActive:function(r){var s=q._active;if(!s)return;var t=i.getViewportInfo(),u=parseInt(s.offsetWidth,10),v=parseInt(s.offsetHeight,10),w=t.scrollLeft+(t.width-u)/2,x=(t.height-v)/2.5;if(wy)z=y;z+=t.scrollTop;if(o.mobile()){var aa=100;if(o.ipad()){aa+=(t.height-v)/2;}else{var ba=document.getElementsByTagName('body')[0];i.addCss(ba,'fb_hidden');w=10000;z=10000;}var ca=i.getByClass('fb_dialog_padding',s);if(ca.length)ca[0].style.height=aa+'px';}s.style.left=(w>0?w:0)+'px';s.style.top=(z>0?z:0)+'px';},_setDialogSizes:function(){if(!o.mobile()||o.ipad())return;for(var r in q._dialogs)if(q._dialogs.hasOwnProperty(r)){var s=document.getElementById(r);if(s){s.style.width=q.getDefaultSize().width+'px';s.style.height=q.getDefaultSize().height+'px';}}},getDefaultSize:function(){if(o.mobile())if(o.ipad()){return {width:500,height:590};}else if(o.android()){return {width:screen.availWidth,height:screen.availHeight};}else{var r=window.innerWidth,s=window.innerHeight,t=r/s>1.2;return {width:r,height:Math.max(s,(t?screen.width:screen.height))};}return {width:575,height:240};},_handleOrientationChange:function(r){if(o.android()&&screen.availWidth==q._availScreenWidth){setTimeout(q._handleOrientationChange,50);return;}q._availScreenWidth=screen.availWidth;if(o.ipad()){q._centerActive();}else{var s=q.getDefaultSize().width;for(var t in q._dialogs)if(q._dialogs.hasOwnProperty(t)){var u=document.getElementById(t);if(u)u.style.width=s+'px';}}},_addOrientationHandler:function(){if(!o.mobile())return;var r="onorientationchange" in window?'orientationchange':'resize';q._availScreenWidth=screen.availWidth;j.add(window,r,q._handleOrientationChange);},create:function(r){r=r||{};var s=document.createElement('div'),t=document.createElement('div'),u='fb_dialog';if(r.closeIcon&&r.onClose){var v=document.createElement('a');v.className='fb_dialog_close_icon';v.onclick=r.onClose;s.appendChild(v);}u+=' '+(r.classes||'');if(o.ie()){u+=' fb_dialog_legacy';ES5(['vert_left','vert_right','horiz_top','horiz_bottom','top_left','top_right','bottom_left','bottom_right'],'forEach',true,function(y){var z=document.createElement('span');z.className='fb_dialog_'+y;s.appendChild(z);});}else u+=o.mobile()?' fb_dialog_mobile':' fb_dialog_advanced';if(r.content)h.append(r.content,t);s.className=u;var w=parseInt(r.width,10);if(!isNaN(w))s.style.width=w+'px';t.className='fb_dialog_content';s.appendChild(t);if(o.mobile()){var x=document.createElement('div');x.className='fb_dialog_padding';s.appendChild(x);}h.append(s);if(r.visible)q.show(s);return t;},show:function(r){var s=q._findRoot(r);if(s){q._removeStacked(s);q._hideLoader();q._makeActive(s);q._stack.push(s);if('fbCallID' in r)q.get(r.fbCallID).inform('iframe_show').trackEvent('show');}},hide:function(r){var s=q._findRoot(r);q._hideLoader();if(s==q._active){q._lowerActive();q._restoreBodyPosition();q._hideIPadOverlay();if('fbCallID' in r)q.get(r.fbCallID).inform('iframe_hide').trackEvent('hide');}},remove:function(r){r=q._findRoot(r);if(r){var s=q._active==r;q._removeStacked(r);if(s){q._hideLoader();if(q._stack.length>0){q.show(q._stack.pop());}else{q._lowerActive();q._restoreBodyPosition();q._hideIPadOverlay();}}else if(q._active===null&&q._stack.length>0)q.show(q._stack.pop());setTimeout(function(){r.parentNode.removeChild(r);},3000);}},isActive:function(r){var s=q._findRoot(r);return s&&s===q._active;}};e.exports=q;}); +__d("sdk.Frictionless",["sdk.Auth","sdk.api","sdk.Event","sdk.Dialog"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.api'),i=b('sdk.Event'),j=b('sdk.Dialog'),k={_allowedRecipients:{},_useFrictionless:false,_updateRecipients:function(){k._allowedRecipients={};h('/me/apprequestformerrecipients',function(l){if(!l||l.error)return;ES5(l.data,'forEach',true,function(m){k._allowedRecipients[m.recipient_id]=true;});});},init:function(){k._useFrictionless=true;g.getLoginStatus(function(l){if(l.status=='connected')k._updateRecipients();});i.subscribe('auth.login',function(l){if(l.authResponse)k._updateRecipients();});},_processRequestResponse:function(l,m){return function(n){var o=n&&n.updated_frictionless;if(k._useFrictionless&&o)k._updateRecipients();if(n){if(!m&&n.frictionless){j._hideLoader();j._restoreBodyPosition();j._hideIPadOverlay();}delete n.frictionless;delete n.updated_frictionless;}l&&l(n);};},isAllowed:function(l){if(!l)return false;if(typeof l==='number')return l in k._allowedRecipients;if(typeof l==='string')l=l.split(',');l=ES5(l,'map',true,function(o){return ES5(String(o),'trim',true);});var m=true,n=false;ES5(l,'forEach',true,function(o){m=m&&o in k._allowedRecipients;n=true;});return m&&n;}};i.subscribe('init:post',function(l){if(l.frictionlessRequests)k.init();});e.exports=k;}); +__d("insertIframe",["guid","GlobalCallback"],function(a,b,c,d,e,f){var g=b('guid'),h=b('GlobalCallback');function i(j){j.id=j.id||g();j.name=j.name||g();var k=false,l=false,m=function(){if(k&&!l){l=true;j.onload&&j.onload(j.root.firstChild);}},n=h.create(m);if(document.attachEvent){var o=('');j.root.innerHTML=('');k=true;setTimeout(function(){j.root.innerHTML=o;j.root.firstChild.src=j.url;j.onInsert&&j.onInsert(j.root.firstChild);},0);}else{var p=document.createElement('iframe');p.id=j.id;p.name=j.name;p.onload=m;p.scrolling='no';p.style.border='none';p.style.overflow='hidden';if(j.title)p.title=j.title;if(j.className)p.className=j.className;if(j.height!==undefined)p.style.height=j.height+'px';if(j.width!==undefined)if(j.width=='100%'){p.style.width=j.width;}else p.style.width=j.width+'px';j.root.appendChild(p);k=true;p.src=j.url;j.onInsert&&j.onInsert(p);}}e.exports=i;}); +__d("sdk.Native",["copyProperties","Log","UserAgent"],function(a,b,c,d,e,f){var g=b('copyProperties'),h=b('Log'),i=b('UserAgent'),j='fbNativeReady',k={onready:function(l){if(!i.nativeApp()){h.error('FB.Native.onready only works when the page is rendered '+'in a WebView of the native Facebook app. Test if this is the '+'case calling FB.UA.nativeApp()');return;}if(window.__fbNative&&!this.nativeReady)g(this,window.__fbNative);if(this.nativeReady){l();}else{var m=function(n){window.removeEventListener(j,m);this.onready(l);};window.addEventListener(j,m,false);}}};e.exports=k;}); +__d("sdk.UIServer",["sdk.Auth","sdk.Content","copyProperties","sdk.Dialog","sdk.DOM","sdk.Event","flattenObject","sdk.Frictionless","sdk.getContextType","guid","insertIframe","Log","sdk.Native","QueryString","resolveURI","sdk.RPC","sdk.Runtime","UrlMap","UserAgent","sdk.XD","SDKConfig"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.Content'),i=b('copyProperties'),j=b('sdk.Dialog'),k=b('sdk.DOM'),l=b('sdk.Event'),m=b('flattenObject'),n=b('sdk.Frictionless'),o=b('sdk.getContextType'),p=b('guid'),q=b('insertIframe'),r=b('Log'),s=b('sdk.Native'),t=b('QueryString'),u=b('resolveURI'),v=b('sdk.RPC'),w=b('sdk.Runtime'),x=c('SDKConfig'),y=b('UrlMap'),z=b('UserAgent'),aa=b('sdk.XD'),ba={transform:function(ea){if(ea.params.display==='touch'&&ea.params.access_token&&window.postMessage){ea.params.channel=da._xdChannelHandler(ea.id,'parent');if(!z.nativeApp())ea.params.in_iframe=1;return ea;}else return da.genericTransform(ea);},getXdRelation:function(ea){var fa=ea.display;if(fa==='touch'&&window.postMessage&&ea.in_iframe)return 'parent';return da.getXdRelation(ea);}},ca={'stream.share':{size:{width:670,height:340},url:'sharer.php',transform:function(ea){if(!ea.params.u)ea.params.u=window.location.toString();ea.params.display='popup';return ea;}},apprequests:{transform:function(ea){ea=ba.transform(ea);ea.params.frictionless=n&&n._useFrictionless;if(ea.params.frictionless){if(n.isAllowed(ea.params.to)){ea.params.display='iframe';ea.params.in_iframe=true;ea.hideLoader=true;}ea.cb=n._processRequestResponse(ea.cb,ea.hideLoader);}ea.closeIcon=false;return ea;},getXdRelation:ba.getXdRelation},feed:ba,'permissions.oauth':{url:'dialog/oauth',size:{width:(z.mobile()?null:440),height:(z.mobile()?null:183)},transform:function(ea){if(!w.getClientID()){r.error('FB.login() called before FB.init().');return;}if(g.getAuthResponse()&&!ea.params.scope){r.error('FB.login() called when user is already connected.');ea.cb&&ea.cb({status:w.getLoginStatus(),authResponse:g.getAuthResponse()});return;}var fa=ea.cb,ga=ea.id;delete ea.cb;if(ea.params.display==='async'){i(ea.params,{client_id:w.getClientID(),origin:o(),response_type:'token,signed_request',domain:location.hostname});ea.cb=g.xdResponseWrapper(fa,g.getAuthResponse(),'permissions.oauth');}else i(ea.params,{client_id:w.getClientID(),redirect_uri:u(da.xdHandler(fa,ga,'opener',g.getAuthResponse(),'permissions.oauth')),origin:o(),response_type:'token,signed_request',domain:location.hostname});return ea;}},'auth.logout':{url:'logout.php',transform:function(ea){if(!w.getClientID()){r.error('FB.logout() called before calling FB.init().');}else if(!g.getAuthResponse()){r.error('FB.logout() called without an access token.');}else{ea.params.next=da.xdHandler(ea.cb,ea.id,'parent',g.getAuthResponse(),'logout');return ea;}}},'login.status':{url:'dialog/oauth',transform:function(ea){var fa=ea.cb,ga=ea.id;delete ea.cb;i(ea.params,{client_id:w.getClientID(),redirect_uri:da.xdHandler(fa,ga,'parent',g.getAuthResponse(),'login_status'),origin:o(),response_type:'token,signed_request,code',domain:location.hostname});return ea;}}},da={Methods:ca,_loadedNodes:{},_defaultCb:{},_resultToken:'"xxRESULTTOKENxx"',genericTransform:function(ea){if(ea.params.display=='dialog'||ea.params.display=='iframe')i(ea.params,{display:'iframe',channel:da._xdChannelHandler(ea.id,'parent.parent')},true);return ea;},checkOauthDisplay:function(ea){var fa=ea.scope||ea.perms||w.getScope();if(!fa)return ea.display;var ga=fa.split(/\s|,/g);for(var ha=0;ha2000;},getDisplayMode:function(ea,fa){if(fa.display==='hidden'||fa.display==='none')return fa.display;var ga=w.isEnvironment(w.ENVIRONMENTS.CANVAS)||w.isEnvironment(w.ENVIRONMENTS.PAGETAB);if(ga&&!fa.display)return 'async';if(z.mobile()||fa.display==='touch')return 'touch';if(!w.getAccessToken()&&fa.display=='dialog'&&!ea.loggedOutIframe){r.error('"dialog" mode can only be used when the user is connected.');return 'popup';}if(ea.connectDisplay&&!ga)return ea.connectDisplay;return fa.display||(w.getAccessToken()?'dialog':'popup');},getXdRelation:function(ea){var fa=ea.display;if(fa==='popup'||fa==='touch')return 'opener';if(fa==='dialog'||fa==='iframe'||fa==='hidden'||fa==='none')return 'parent';if(fa==='async')return 'parent.frames['+window.name+']';},popup:function(ea){var fa=typeof window.screenX!='undefined'?window.screenX:window.screenLeft,ga=typeof window.screenY!='undefined'?window.screenY:window.screenTop,ha=typeof window.outerWidth!='undefined'?window.outerWidth:document.documentElement.clientWidth,ia=typeof window.outerHeight!='undefined'?window.outerHeight:(document.documentElement.clientHeight-22),ja=z.mobile()?null:ea.size.width,ka=z.mobile()?null:ea.size.height,la=(fa<0)?window.screen.width+fa:fa,ma=parseInt(la+((ha-ja)/2),10),na=parseInt(ga+((ia-ka)/2.5),10),oa=[];if(ja!==null)oa.push('width='+ja);if(ka!==null)oa.push('height='+ka);oa.push('left='+ma);oa.push('top='+na);oa.push('scrollbars=1');if(ea.name=='permissions.request'||ea.name=='permissions.oauth')oa.push('location=1,toolbar=0');oa=oa.join(',');var pa;if(ea.post){pa=window.open('about:blank',ea.id,oa);if(pa){da.setLoadedNode(ea,pa,'popup');h.submitToTarget({url:ea.url,target:ea.id,params:ea.params});}}else{pa=window.open(ea.url,ea.id,oa);if(pa)da.setLoadedNode(ea,pa,'popup');}if(!pa)return;if(ea.id in da._defaultCb)da._popupMonitor();},setLoadedNode:function(ea,fa,ga){if(ea.params&&ea.params.display!='popup')fa.fbCallID=ea.id;fa={node:fa,type:ga,fbCallID:ea.id};da._loadedNodes[ea.id]=fa;},getLoadedNode:function(ea){var fa=typeof ea=='object'?ea.id:ea,ga=da._loadedNodes[fa];return ga?ga.node:null;},hidden:function(ea){ea.className='FB_UI_Hidden';ea.root=h.appendHidden('');da._insertIframe(ea);},iframe:function(ea){ea.className='FB_UI_Dialog';var fa=function(){da._triggerDefault(ea.id);};ea.root=j.create({onClose:fa,closeIcon:ea.closeIcon===undefined?true:ea.closeIcon,classes:(z.ipad()?'centered':'')});if(!ea.hideLoader)j.showLoader(fa,ea.size.width);k.addCss(ea.root,'fb_dialog_iframe');da._insertIframe(ea);},touch:function(ea){if(ea.params&&ea.params.in_iframe){if(ea.ui_created){j.showLoader(function(){da._triggerDefault(ea.id);},0);}else da.iframe(ea);}else if(z.nativeApp()&&!ea.ui_created){ea.frame=ea.id;s.onready(function(){da.setLoadedNode(ea,s.open(ea.url+'#cb='+ea.frameName),'native');});da._popupMonitor();}else if(!ea.ui_created)da.popup(ea);},async:function(ea){ea.params.redirect_uri=location.protocol+'//'+location.host+location.pathname;delete ea.params.access_token;v.remote.showDialog(ea.params,function(fa){var ga=j.get(ea.id);if(fa.result)ga.trackEvents(fa.result.e2e);ga.trackEvent('close');ea.cb(fa.result);});},getDefaultSize:function(){return j.getDefaultSize();},_insertIframe:function(ea){da._loadedNodes[ea.id]=false;var fa=function(ga){if(ea.id in da._loadedNodes)da.setLoadedNode(ea,ga,'iframe');};if(ea.post){q({url:'about:blank',root:ea.root,className:ea.className,width:ea.size.width,height:ea.size.height,id:ea.id,onInsert:fa,onload:function(ga){h.submitToTarget({url:ea.url,target:ga.name,params:ea.params});}});}else q({url:ea.url,root:ea.root,className:ea.className,width:ea.size.width,height:ea.size.height,id:ea.id,name:ea.frameName,onInsert:fa});},_handleResizeMessage:function(ea,fa){var ga=da.getLoadedNode(ea);if(!ga)return;if(fa.height)ga.style.height=fa.height+'px';if(fa.width)ga.style.width=fa.width+'px';aa.inform('resize.ack',fa||{},'parent.frames['+ga.name+']');if(!j.isActive(ga))j.show(ga);},_triggerDefault:function(ea){da._xdRecv({frame:ea},da._defaultCb[ea]||function(){});},_popupMonitor:function(){var ea;for(var fa in da._loadedNodes)if(da._loadedNodes.hasOwnProperty(fa)&&fa in da._defaultCb){var ga=da._loadedNodes[fa];if(ga.type!='popup'&&ga.type!='native')continue;var ha=ga.node;try{if(ha.closed){da._triggerDefault(fa);}else ea=true;}catch(ia){}}if(ea&&!da._popupInterval){da._popupInterval=setInterval(da._popupMonitor,100);}else if(!ea&&da._popupInterval){clearInterval(da._popupInterval);da._popupInterval=null;}},_xdChannelHandler:function(ea,fa){return aa.handler(function(ga){var ha=da.getLoadedNode(ea);if(!ha)return;if(ga.type=='resize'){da._handleResizeMessage(ea,ga);}else if(ga.type=='hide'){j.hide(ha);}else if(ga.type=='rendered'){var ia=j._findRoot(ha);j.show(ia);}else if(ga.type=='fireevent')l.fire(ga.event);},fa,true,null);},_xdNextHandler:function(ea,fa,ga,ha){if(ha)da._defaultCb[fa]=ea;return aa.handler(function(ia){da._xdRecv(ia,ea);},ga)+'&frame='+fa;},_xdRecv:function(ea,fa){var ga=da.getLoadedNode(ea.frame);if(ga){try{if(k.containsCss(ga,'FB_UI_Hidden')){setTimeout(function(){ga.parentNode.parentNode.removeChild(ga.parentNode);},3000);}else if(k.containsCss(ga,'FB_UI_Dialog'))j.remove(ga);}catch(ha){}try{if(ga.close){ga.close();if(/iPhone.*Version\/(5|6)/.test(navigator.userAgent)&&RegExp.$1!=='5')window.focus();da._popupCount--;}}catch(ia){}}delete da._loadedNodes[ea.frame];delete da._defaultCb[ea.frame];var ja=j.get(ea.frame);ja.trackEvents(ea.e2e);ja.trackEvent('close');fa(ea);},_xdResult:function(ea,fa,ga,ha){return (da._xdNextHandler(function(ia){ea&&ea(ia.result&&ia.result!=da._resultToken&&ES5('JSON','parse',false,ia.result));},fa,ga,ha)+'&result='+encodeURIComponent(da._resultToken));},xdHandler:function(ea,fa,ga,ha,ia){return da._xdNextHandler(g.xdResponseWrapper(ea,ha,ia),fa,ga,true);}};v.stub('showDialog');e.exports=da;}); +__d("sdk.ui",["Assert","copyProperties","sdk.feature","sdk.Impressions","Log","sdk.UIServer"],function(a,b,c,d,e,f){var g=b('Assert'),h=b('copyProperties'),i=b('sdk.feature'),j=b('sdk.Impressions'),k=b('Log'),l=b('sdk.UIServer');function m(n,o){g.isObject(n);g.maybeFunction(o);n=h({},n);if(!n.method){k.error('"method" is a required parameter for FB.ui().');return null;}var p=n.method;if(n.redirect_uri){k.warn('When using FB.ui, you should not specify a redirect_uri.');delete n.redirect_uri;}if((p=='permissions.request'||p=='permissions.oauth')&&(n.display=='iframe'||n.display=='dialog'))n.display=l.checkOauthDisplay(n);var q=i('e2e_tracking',true);if(q)n.e2e={};var r=l.prepareCall(n,o||function(){});if(!r)return null;var s=r.params.display;if(s==='dialog'){s='iframe';}else if(s==='none')s='hidden';var t=l[s];if(!t){k.error('"display" must be one of "popup", '+'"dialog", "iframe", "touch", "async", "hidden", or "none"');return null;}if(q)r.dialog.subscribe('e2e:end',function(u){u.method=p;u.display=s;k.debug('e2e: %s',ES5('JSON','stringify',false,u));j.log(114,{payload:u});});t(r);return r.dialog;}e.exports=m;}); +__d("legacy:fb.auth",["sdk.Auth","sdk.Cookie","copyProperties","sdk.Event","FB","Log","sdk.Runtime","sdk.SignedRequest","sdk.ui"],function(a,b,c,d){var e=b('sdk.Auth'),f=b('sdk.Cookie'),g=b('copyProperties'),h=b('sdk.Event'),i=b('FB'),j=b('Log'),k=b('sdk.Runtime'),l=b('sdk.SignedRequest'),m=b('sdk.ui');i.provide('',{getLoginStatus:function(){return e.getLoginStatus.apply(e,arguments);},getAuthResponse:function(){return e.getAuthResponse();},getAccessToken:function(){return k.getAccessToken()||null;},getUserID:function(){return k.getUserID()||k.getCookieUserID();},login:function(n,o){if(o&&o.perms&&!o.scope){o.scope=o.perms;delete o.perms;j.warn('OAuth2 specification states that \'perms\' '+'should now be called \'scope\'. Please update.');}var p=k.isEnvironment(k.ENVIRONMENTS.CANVAS)||k.isEnvironment(k.ENVIRONMENTS.PAGETAB);m(g({method:'permissions.oauth',display:p?'async':'popup',domain:location.hostname},o||{}),n);},logout:function(n){m({method:'auth.logout',display:'hidden'},n);}});e.subscribe('logout',ES5(h.fire,'bind',true,h,'auth.logout'));e.subscribe('login',ES5(h.fire,'bind',true,h,'auth.login'));e.subscribe('authresponse.change',ES5(h.fire,'bind',true,h,'auth.authResponseChange'));e.subscribe('status.change',ES5(h.fire,'bind',true,h,'auth.statusChange'));h.subscribe('init:post',function(n){if(n.status)e.getLoginStatus();if(k.getClientID())if(n.authResponse){e.setAuthResponse(n.authResponse,'connected');}else if(k.getUseCookie()){var o=f.loadSignedRequest(),p;if(o){try{p=l.parse(o);}catch(q){f.clearSignedRequestCookie();}if(p&&p.user_id)k.setCookieUserID(p.user_id);}f.loadMeta();}});},3); +__d("sdk.Canvas.Plugin",["sdk.api","sdk.RPC","Log","sdk.Runtime","createArrayFrom"],function(a,b,c,d,e,f){var g=b('sdk.api'),h=b('sdk.RPC'),i=b('Log'),j=b('sdk.Runtime'),k=b('createArrayFrom'),l='CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000',m='CLSID:444785F1-DE89-4295-863A-D46C3A781394',n=null;function o(y){y._hideunity_savedstyle={};y._hideunity_savedstyle.left=y.style.left;y._hideunity_savedstyle.position=y.style.position;y._hideunity_savedstyle.width=y.style.width;y._hideunity_savedstyle.height=y.style.height;y.style.left='-10000px';y.style.position='absolute';y.style.width='1px';y.style.height='1px';}function p(y){if(y._hideunity_savedstyle){y.style.left=y._hideunity_savedstyle.left;y.style.position=y._hideunity_savedstyle.position;y.style.width=y._hideunity_savedstyle.width;y.style.height=y._hideunity_savedstyle.height;}}function q(y){y._old_visibility=y.style.visibility;y.style.visibility='hidden';}function r(y){y.style.visibility=y._old_visibility||'';delete y._old_visibility;}function s(y){var z=y.type.toLowerCase()==='application/x-shockwave-flash'||(y.classid&&y.classid.toUpperCase()==l);if(!z)return false;var aa=/opaque|transparent/i;if(aa.test(y.getAttribute('wmode')))return false;for(var ba=0;ba=-p)return false;}j=o;h.remote.setSize(o);return true;}function m(o,p){if(p===undefined&&typeof o==='number'){p=o;o=true;}if(o||o===undefined){if(i===null)i=setInterval(function(){l();},p||100);l();}else if(i!==null){clearInterval(i);i=null;}}h.stub('setSize');var n={setSize:l,setAutoGrow:m};e.exports=n;}); +__d("sdk.Canvas.Navigation",["sdk.RPC"],function(a,b,c,d,e,f){var g=b('sdk.RPC');function h(j){g.local.navigate=function(k){j({path:k});};g.remote.setNavigationEnabled(true);}g.stub('setNavigationEnabled');var i={setUrlHandler:h};e.exports=i;}); +__d("sdk.Canvas.Tti",["sdk.RPC","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.RPC'),h=b('sdk.Runtime');function i(n,o){var p={appId:h.getClientID(),time:ES5('Date','now',false),name:o},q=[p];if(n)q.push(function(r){n(r.result);});g.remote.logTtiMessage.apply(null,q);}function j(){i(null,'StartIframeAppTtiTimer');}function k(n){i(n,'StopIframeAppTtiTimer');}function l(n){i(n,'RecordIframeAppTti');}g.stub('logTtiMessage');var m={setDoneLoading:l,startTimer:j,stopTimer:k};e.exports=m;}); +__d("legacy:fb.canvas",["Assert","sdk.Canvas.Environment","sdk.Event","FB","sdk.Canvas.Plugin","sdk.Canvas.IframeHandling","Log","sdk.Canvas.Navigation","sdk.Runtime","sdk.Canvas.Tti"],function(a,b,c,d){var e=b('Assert'),f=b('sdk.Canvas.Environment'),g=b('sdk.Event'),h=b('FB'),i=b('sdk.Canvas.Plugin'),j=b('sdk.Canvas.IframeHandling'),k=b('Log'),l=b('sdk.Canvas.Navigation'),m=b('sdk.Runtime'),n=b('sdk.Canvas.Tti');h.provide('Canvas',{setSize:function(o){e.maybeObject(o,'Invalid argument');return j.setSize.apply(null,arguments);},setAutoGrow:function(){return j.setAutoGrow.apply(null,arguments);},getPageInfo:function(o){e.isFunction(o,'Invalid argument');return f.getPageInfo.apply(null,arguments);},scrollTo:function(o,p){e.maybeNumber(o,'Invalid argument');e.maybeNumber(p,'Invalid argument');return f.scrollTo.apply(null,arguments);},setDoneLoading:function(o){e.maybeFunction(o,'Invalid argument');return n.setDoneLoading.apply(null,arguments);},startTimer:function(){return n.startTimer.apply(null,arguments);},stopTimer:function(o){e.maybeFunction(o,'Invalid argument');return n.stopTimer.apply(null,arguments);},getHash:function(o){e.isFunction(o,'Invalid argument');return l.getHash.apply(null,arguments);},setHash:function(o){e.isString(o,'Invalid argument');return l.setHash.apply(null,arguments);},setUrlHandler:function(o){e.isFunction(o,'Invalid argument');return l.setUrlHandler.apply(null,arguments);}});h.provide('CanvasInsights',{setDoneLoading:function(o){k.warn('Deprecated: use FB.Canvas.setDoneLoading');e.maybeFunction(o,'Invalid argument');return n.setDoneLoading.apply(null,arguments);}});g.subscribe('init:post',function(o){if(m.isEnvironment(m.ENVIRONMENTS.CANVAS)){e.isTrue(!o.hideFlashCallback||!o.hidePluginCallback,'cannot specify deprecated hideFlashCallback and new hidePluginCallback');i._setHidePluginCallback(o.hidePluginCallback||o.hideFlashCallback);}});},3); +__d("sdk.Canvas.Prefetcher",["sdk.api","createArrayFrom","sdk.Runtime","CanvasPrefetcherConfig"],function(a,b,c,d,e,f){var g=b('sdk.api'),h=b('createArrayFrom'),i=c('CanvasPrefetcherConfig'),j=b('sdk.Runtime'),k={AUTOMATIC:0,MANUAL:1},l=i.sampleRate,m=i.blacklist,n=k.AUTOMATIC,o=[];function p(){var u={object:'data',link:'href',script:'src'};if(n==k.AUTOMATIC)ES5(ES5('Object','keys',false,u),'forEach',true,function(v){var w=u[v];ES5(h(document.getElementsByTagName(v)),'forEach',true,function(x){if(x[w])o.push(x[w]);});});if(o.length===0)return;g(j.getClientID()+'/staticresources','post',{urls:ES5('JSON','stringify',false,o),is_https:location.protocol==='https:'});o=[];}function q(){if(!j.isEnvironment(j.ENVIRONMENTS.CANVAS)||!j.getClientID()||!l)return;if(Math.random()>1/l||m=='*'||~ES5(m,'indexOf',true,j.getClientID()))return;setTimeout(p,30000);}function r(u){n=u;}function s(u){o.push(u);}var t={COLLECT_AUTOMATIC:k.AUTOMATIC,COLLECT_MANUAL:k.MANUAL,addStaticResource:s,setCollectionMode:r,_maybeSample:q};e.exports=t;}); +__d("legacy:fb.canvas.prefetcher",["FB","sdk.Canvas.Prefetcher","sdk.Event","sdk.Runtime"],function(a,b,c,d){var e=b('FB'),f=b('sdk.Canvas.Prefetcher'),g=b('sdk.Event'),h=b('sdk.Runtime');e.provide('Canvas.Prefetcher',f);g.subscribe('init:post',function(i){if(h.isEnvironment(h.ENVIRONMENTS.CANVAS))f._maybeSample();});},3); +__d("legacy:fb.compat.ui",["copyProperties","FB","Log","sdk.ui","sdk.UIServer"],function(a,b,c,d){var e=b('copyProperties'),f=b('FB'),g=b('Log'),h=b('sdk.ui'),i=b('sdk.UIServer');f.provide('',{share:function(j){g.error('share() has been deprecated. Please use FB.ui() instead.');h({display:'popup',method:'stream.share',u:j});},publish:function(j,k){g.error('publish() has been deprecated. Please use FB.ui() instead.');j=j||{};h(e({display:'popup',method:'stream.publish',preview:1},j||{}),k);},addFriend:function(j,k){g.error('addFriend() has been deprecated. Please use FB.ui() instead.');h({display:'popup',id:j,method:'friend.add'},k);}});i.Methods['auth.login']=i.Methods['permissions.request'];},3); +__d("mergeArrays",[],function(a,b,c,d,e,f){function g(h,i){for(var j=0;j=0,'onrender() has been called too many times');};ES5(i(ba.getElementsByTagName('*')),'forEach',true,function(ja){if(!da&&ja.getAttribute('fb-xfbml-state'))return;if(ja.nodeType!==1)return;var ka=x(ja),la=y(ja);if(!ka){ka=w(ja);if(!ka)return;if(p.ie()<9){var ma=ja;ja=document.createElement('div');j.addCss(ja,ka.xmlns+'-'+ka.localName);ES5(i(ma.childNodes),'forEach',true,function(qa){ja.appendChild(qa);});for(var na in la)if(la.hasOwnProperty(na))ja.setAttribute(na,la[na]);ma.parentNode.replaceChild(ja,ma);}}fa++;ga++;var oa=new ka.ctor(ja,ka.xmlns,ka.localName,la);oa.subscribe('render',o(function(){ja.setAttribute('fb-xfbml-state','rendered');ha();}));var pa=function(){if(ja.getAttribute('fb-xfbml-state')=='parsed'){t.subscribe('render.queue',pa);}else{ja.setAttribute('fb-xfbml-state','parsed');oa.process();}};pa();});t.inform('parse',ea,ga);var ia=30000;setTimeout(function(){if(fa>0)m.warn('%s tags failed to render in %s ms',fa,ia);},ia);ha();}t.subscribe('render',function(){var ba=t.getSubscribers('render.queue');t.clearSubscribers('render.queue');ES5(ba,'forEach',true,function(ca){ca();});});h(t,{registerTag:function(ba){var ca=ba.xmlns+':'+ba.localName;g.isUndefined(q[ca],ca+' already registered');q[ca]=ba;r[ba.xmlns+'-'+ba.localName]=ba;},parse:function(ba,ca){z(ba||document.body,ca||function(){},true);},parseNew:function(){z(document.body,function(){},false);}});if(k('log_tag_count')){var aa=function(ba,ca){t.unsubscribe('parse',aa);setTimeout(ES5(l.log,'bind',true,null,102,{tag_count:ca}),5000);};t.subscribe('parse',aa);}e.exports=t;}); +__d("PluginPipe",["sdk.Content","copyProperties","sdk.feature","guid","insertIframe","Miny","ObservableMixin","sdk.Runtime","UrlMap","UserAgent","XFBML","PluginPipeConfig"],function(a,b,c,d,e,f){var g=b('sdk.Content'),h=b('copyProperties'),i=b('sdk.feature'),j=b('guid'),k=b('insertIframe'),l=b('Miny'),m=b('ObservableMixin'),n=c('PluginPipeConfig'),o=b('sdk.Runtime'),p=b('UrlMap'),q=b('UserAgent'),r=b('XFBML'),s=new m(),t=n.threshold,u=[];function v(){return !!(i('plugin_pipe')&&o.getSecure()!==undefined&&(q.chrome()||q.firefox())&&n.enabledApps[o.getClientID()]);}function w(){var y=u;u=[];if(y.length<=t){ES5(y,'forEach',true,function(ba){k(ba.config);});return;}var z=y.length+1;function aa(){z--;if(z===0)x(y);}ES5(y,'forEach',true,function(ba){var ca={};for(var da in ba.config)ca[da]=ba.config[da];ca.url=p.resolve('www',o.getSecure())+'/plugins/plugin_pipe_shell.php';ca.onload=aa;k(ca);});aa();}r.subscribe('parse',w);function x(y){var z=document.createElement('span');g.appendHidden(z);var aa={};ES5(y,'forEach',true,function(fa){aa[fa.config.name]={plugin:fa.tag,params:fa.params};});var ba=ES5('JSON','stringify',false,aa),ca=l.encode(ba);ES5(y,'forEach',true,function(fa){var ga=document.getElementsByName(fa.config.name)[0];ga.onload=fa.config.onload;});var da=p.resolve('www',o.getSecure())+'/plugins/pipe.php',ea=j();k({url:'about:blank',root:z,name:ea,className:'fb_hidden fb_invisible',onload:function(){g.submitToTarget({url:da,target:ea,params:{plugins:ca.length-1)?n:l;});},isValid:function(){for(var k=this.dom;k;k=k.parentNode)if(k==document.body)return true;},clear:function(){g.html(this.dom,'');}},i);e.exports=j;}); +__d("sdk.XFBML.IframeWidget",["sdk.Arbiter","sdk.Auth","sdk.Content","copyProperties","sdk.DOM","sdk.Event","sdk.XFBML.Element","guid","insertIframe","QueryString","sdk.Runtime","sdk.ui","UrlMap","sdk.XD"],function(a,b,c,d,e,f){var g=b('sdk.Arbiter'),h=b('sdk.Auth'),i=b('sdk.Content'),j=b('copyProperties'),k=b('sdk.DOM'),l=b('sdk.Event'),m=b('sdk.XFBML.Element'),n=b('guid'),o=b('insertIframe'),p=b('QueryString'),q=b('sdk.Runtime'),r=b('sdk.ui'),s=b('UrlMap'),t=b('sdk.XD'),u=m.extend({_iframeName:null,_showLoader:true,_refreshOnAuthChange:false,_allowReProcess:false,_fetchPreCachedLoader:false,_visibleAfter:'load',_widgetPipeEnabled:false,_borderReset:false,_repositioned:false,getUrlBits:function(){throw new Error('Inheriting class needs to implement getUrlBits().');},setupAndValidate:function(){return true;},oneTimeSetup:function(){},getSize:function(){},getIframeName:function(){return this._iframeName;},getIframeTitle:function(){return 'Facebook Social Plugin';},getChannelUrl:function(){if(!this._channelUrl){var y=this;this._channelUrl=t.handler(function(z){y.fire('xd.'+z.type,z);},'parent.parent',true);}return this._channelUrl;},getIframeNode:function(){return this.dom.getElementsByTagName('iframe')[0];},arbiterInform:function(event,y,z){t.sendToFacebook(this.getIframeName(),{method:event,params:ES5('JSON','stringify',false,y||{}),behavior:z||g.BEHAVIOR_PERSISTENT});},_arbiterInform:function(event,y,z){var aa='parent.frames["'+this.getIframeNode().name+'"]';t.inform(event,y,aa,z);},getDefaultWebDomain:function(){return s.resolve('www');},process:function(y){if(this._done){if(!this._allowReProcess&&!y)return;this.clear();}else this._oneTimeSetup();this._done=true;this._iframeName=this.getIframeName()||this._iframeName||n();if(!this.setupAndValidate()){this.fire('render');return;}if(this._showLoader)this._addLoader();k.addCss(this.dom,'fb_iframe_widget');if(this._visibleAfter!='immediate'){k.addCss(this.dom,'fb_hide_iframes');}else this.subscribe('iframe.onload',ES5(this.fire,'bind',true,this,'render'));var z=this.getSize()||{},aa=this.getFullyQualifiedURL();if(z.width=='100%')k.addCss(this.dom,'fb_iframe_widget_fluid');this.clear();o({url:aa,root:this.dom.appendChild(document.createElement('span')),name:this._iframeName,title:this.getIframeTitle(),className:q.getRtl()?'fb_rtl':'fb_ltr',height:z.height,width:z.width,onload:ES5(this.fire,'bind',true,this,'iframe.onload')});this._resizeFlow(z);this.loaded=false;this.subscribe('iframe.onload',ES5(function(){this.loaded=true;},'bind',true,this));},generateWidgetPipeIframeName:function(){v++;return 'fb_iframe_'+v;},getFullyQualifiedURL:function(){var y=this._getURL();y+='?'+p.encode(this._getQS());if(y.length>2000){y='about:blank';var z=ES5(function(){this._postRequest();this.unsubscribe('iframe.onload',z);},'bind',true,this);this.subscribe('iframe.onload',z);}return y;},_getWidgetPipeShell:function(){return s.resolve('www')+'/common/widget_pipe_shell.php';},_oneTimeSetup:function(){this.subscribe('xd.resize',ES5(this._handleResizeMsg,'bind',true,this));this.subscribe('xd.resize',ES5(this._bubbleResizeEvent,'bind',true,this));this.subscribe('xd.resize.iframe',ES5(this._resizeIframe,'bind',true,this));this.subscribe('xd.resize.flow',ES5(this._resizeFlow,'bind',true,this));this.subscribe('xd.resize.flow',ES5(this._bubbleResizeEvent,'bind',true,this));this.subscribe('xd.refreshLoginStatus',function(){h.getLoginStatus(function(){},true);});this.subscribe('xd.logout',function(){r({method:'auth.logout',display:'hidden'},function(){});});if(this._refreshOnAuthChange)this._setupAuthRefresh();if(this._visibleAfter=='load')this.subscribe('iframe.onload',ES5(this._makeVisible,'bind',true,this));this.subscribe('xd.verify',ES5(function(y){this.arbiterInform('xd/verify',y.token);},'bind',true,this));this.oneTimeSetup();},_makeVisible:function(){this._removeLoader();k.removeCss(this.dom,'fb_hide_iframes');this.fire('render');},_setupAuthRefresh:function(){h.getLoginStatus(ES5(function(y){var z=y.status;l.subscribe('auth.statusChange',ES5(function(aa){if(!this.isValid())return;if(z=='unknown'||aa.status=='unknown')this.process(true);z=aa.status;},'bind',true,this));},'bind',true,this));},_handleResizeMsg:function(y){if(!this.isValid())return;this._resizeIframe(y);this._resizeFlow(y);if(!this._borderReset){this.getIframeNode().style.border='none';this._borderReset=true;}this._makeVisible();},_bubbleResizeEvent:function(y){var z={height:y.height,width:y.width,pluginID:this.getAttribute('plugin-id')};l.fire('xfbml.resize',z);},_resizeIframe:function(y){var z=this.getIframeNode();if(y.reposition==="true")this._repositionIframe(y);y.height&&(z.style.height=y.height+'px');y.width&&(z.style.width=y.width+'px');this._updateIframeZIndex();},_resizeFlow:function(y){var z=this.dom.getElementsByTagName('span')[0];y.height&&(z.style.height=y.height+'px');y.width&&(z.style.width=y.width+'px');this._updateIframeZIndex();},_updateIframeZIndex:function(){var y=this.dom.getElementsByTagName('span')[0],z=this.getIframeNode(),aa=z.style.height===y.style.height&&z.style.width===y.style.width,ba=aa?'removeCss':'addCss';k[ba](z,'fb_iframe_widget_lift');},_repositionIframe:function(y){var z=this.getIframeNode(),aa=parseInt(k.getStyle(z,'width'),10),ba=k.getPosition(z).x,ca=k.getViewportInfo().width,da=parseInt(y.width,10);if(ba+da>ca&&ba>da){z.style.left=aa-da+'px';this.arbiterInform('xd/reposition',{type:'horizontal'});this._repositioned=true;}else if(this._repositioned){z.style.left='0px';this.arbiterInform('xd/reposition',{type:'restore'});this._repositioned=false;}},_addLoader:function(){if(!this._loaderDiv){k.addCss(this.dom,'fb_iframe_widget_loader');this._loaderDiv=document.createElement('div');this._loaderDiv.className='FB_Loader';this.dom.appendChild(this._loaderDiv);}},_removeLoader:function(){if(this._loaderDiv){k.removeCss(this.dom,'fb_iframe_widget_loader');if(this._loaderDiv.parentNode)this._loaderDiv.parentNode.removeChild(this._loaderDiv);this._loaderDiv=null;}},_getQS:function(){return j({api_key:q.getClientID(),locale:q.getLocale(),sdk:'joey',kid_directed_site:q.getKidDirectedSite(),ref:this.getAttribute('ref')},this.getUrlBits().params);},_getURL:function(){var y=this.getDefaultWebDomain(),z='';return y+'/plugins/'+z+this.getUrlBits().name+'.php';},_postRequest:function(){i.submitToTarget({url:this._getURL(),target:this.getIframeNode().name,params:this._getQS()});}}),v=0,w={};function x(){var y={};for(var z in w){var aa=w[z];y[z]={widget:aa.getUrlBits().name,params:aa._getQS()};}return y;}e.exports=u;}); +__d("sdk.XFBML.Comments",["sdk.Event","sdk.XFBML.IframeWidget","QueryString","sdk.Runtime","UrlMap","UserAgent","SDKConfig"],function(a,b,c,d,e,f){var g=b('sdk.Event'),h=b('sdk.XFBML.IframeWidget'),i=b('QueryString'),j=b('sdk.Runtime'),k=c('SDKConfig'),l=b('UrlMap'),m=b('UserAgent'),n=h.extend({_visibleAfter:'immediate',_refreshOnAuthChange:true,setupAndValidate:function(){var o={channel_url:this.getChannelUrl(),colorscheme:this.getAttribute('colorscheme'),numposts:this.getAttribute('num-posts',10),width:this._getPxAttribute('width',550),href:this.getAttribute('href'),permalink:this.getAttribute('permalink'),publish_feed:this.getAttribute('publish_feed'),order_by:this.getAttribute('order_by'),mobile:this._getBoolAttribute('mobile')};if(k.initSitevars.enableMobileComments&&m.mobile()&&o.mobile!==false){o.mobile=true;delete o.width;}if(!o.href){o.migrated=this.getAttribute('migrated');o.xid=this.getAttribute('xid');o.title=this.getAttribute('title',document.title);o.url=this.getAttribute('url',document.URL);o.quiet=this.getAttribute('quiet');o.reverse=this.getAttribute('reverse');o.simple=this.getAttribute('simple');o.css=this.getAttribute('css');o.notify=this.getAttribute('notify');if(!o.xid){var p=ES5(document.URL,'indexOf',true,'#');if(p>0){o.xid=encodeURIComponent(document.URL.substring(0,p));}else o.xid=encodeURIComponent(document.URL);}if(o.migrated)o.href=l.resolve('www')+'/plugins/comments_v1.php?'+'app_id='+j.getClientID()+'&xid='+encodeURIComponent(o.xid)+'&url='+encodeURIComponent(o.url);}else{var q=this.getAttribute('fb_comment_id');if(!q){q=i.decode(document.URL.substring(ES5(document.URL,'indexOf',true,'?')+1)).fb_comment_id;if(q&&ES5(q,'indexOf',true,'#')>0)q=q.substring(0,ES5(q,'indexOf',true,'#'));}if(q){o.fb_comment_id=q;this.subscribe('render',ES5(function(){if(!window.location.hash)window.location.hash=this.getIframeNode().id;},'bind',true,this));}}this._attr=o;return true;},oneTimeSetup:function(){this.subscribe('xd.addComment',ES5(this._handleCommentMsg,'bind',true,this));this.subscribe('xd.commentCreated',ES5(this._handleCommentCreatedMsg,'bind',true,this));this.subscribe('xd.commentRemoved',ES5(this._handleCommentRemovedMsg,'bind',true,this));},getSize:function(){if(this._attr.mobile)return {width:'100%',height:160};return {width:this._attr.width,height:160};},getUrlBits:function(){return {name:'comments',params:this._attr};},getDefaultWebDomain:function(){return l.resolve(this._attr.mobile?'m':'www',true);},_handleCommentMsg:function(o){if(!this.isValid())return;g.fire('comments.add',{post:o.post,user:o.user,widget:this});},_handleCommentCreatedMsg:function(o){if(!this.isValid())return;var p={href:o.href,commentID:o.commentID,parentCommentID:o.parentCommentID};g.fire('comment.create',p);},_handleCommentRemovedMsg:function(o){if(!this.isValid())return;var p={href:o.href,commentID:o.commentID};g.fire('comment.remove',p);}});e.exports=n;}); +__d("sdk.XFBML.CommentsCount",["sdk.Data","sdk.DOM","sdk.XFBML.Element","sprintf"],function(a,b,c,d,e,f){var g=b('sdk.Data'),h=b('sdk.DOM'),i=b('sdk.XFBML.Element'),j=b('sprintf'),k=i.extend({process:function(){h.addCss(this.dom,'fb_comments_count_zero');var l=this.getAttribute('href',window.location.href);g._selectByIndex(['commentsbox_count'],'link_stat','url',l).wait(ES5(function(m){var n=m[0].commentsbox_count;h.html(this.dom,j('%s',n));if(n>0)h.removeCss(this.dom,'fb_comments_count_zero');this.fire('render');},'bind',true,this));}});e.exports=k;}); +__d("sdk.Anim",["sdk.DOM"],function(a,b,c,d,e,f){var g=b('sdk.DOM'),h={ate:function(i,j,k,l){k=!isNaN(parseFloat(k))&&k>=0?k:750;var m=40,n={},o={},p=null,q=setInterval(ES5(function(){if(!p)p=ES5('Date','now',false);var r=1;if(k!=0)r=Math.min((ES5('Date','now',false)-p)/k,1);for(var s in j)if(j.hasOwnProperty(s)){var t=j[s];if(!n[s]){var u=g.getStyle(i,s);if(u===false)return;n[s]=this._parseCSS(u+'');}if(!o[s])o[s]=this._parseCSS(t.toString());var v='';ES5(n[s],'forEach',true,function(w,x){if(isNaN(o[s][x].numPart)&&o[s][x].textPart=='?'){v=w.numPart+w.textPart;}else if(isNaN(w.numPart)){v=w.textPart;}else v+=(w.numPart+Math.ceil((o[s][x].numPart-w.numPart)*Math.sin(Math.PI/2*r)))+o[s][x].textPart+' ';});g.setStyle(i,s,v);}if(r==1){clearInterval(q);if(l)l(i);}},'bind',true,this),m);},_parseCSS:function(i){var j=[];ES5(i.split(' '),'forEach',true,function(k){var l=parseInt(k,10);j.push({numPart:l,textPart:k.replace(l,'')});});return j;}};e.exports=h;}); +__d("escapeHTML",[],function(a,b,c,d,e,f){var g=/[&<>"'\/]/g,h={'&':'&','<':'<','>':'>','"':'"',"'":''','/':'/'};function i(j){return j.replace(g,function(k){return h[k];});}e.exports=i;}); +__d("sdk.Helper",["sdk.ErrorHandling","sdk.Event","safeEval","UrlMap"],function(a,b,c,d,e,f){var g=b('sdk.ErrorHandling'),h=b('sdk.Event'),i=b('safeEval'),j=b('UrlMap'),k={isUser:function(l){return l<2.2e+09||(l>=1e+14&&l<=100099999989999)||(l>=8.9e+13&&l<=89999999999999);},upperCaseFirstChar:function(l){if(l.length>0){return l.substr(0,1).toUpperCase()+l.substr(1);}else return l;},getProfileLink:function(l,m,n){n=n||(l?j.resolve('www')+'/profile.php?id='+l.uid:null);if(n)m=''+m+'';return m;},invokeHandler:function(l,m,n){if(l)if(typeof l==='string'){g.unguard(i)(l,n);}else if(l.apply)g.unguard(l).apply(m,n||[]);},fireEvent:function(l,m){var n=m._attr.href;m.fire(l,n);h.fire(l,n,m);},executeFunctionByName:function(l){var m=Array.prototype.slice.call(arguments,1),n=l.split("."),o=n.pop(),p=window;for(var q=0;q'+''+'{2}'+''+''+''+'{4}'+''+'{5}'+' '+'{6} – '+'{0}'+'',t.tx._("No Thanks"),v.resolve('fbcdn')+'/'+k.imgs.buttonUrl,t.tx._("Close"),y[this._picFieldName]||v.resolve('fbcdn')+'/'+k.imgs.missingProfileUrl,o(y.first_name),t.tx._("Hi {firstName}. \u003Cstrong>{siteName}\u003C\/strong> is using Facebook to personalize your experience.",{firstName:o(y.first_name),siteName:o(y.site_name)}),t.tx._("Learn More"),y.profile_url,v.resolve('www')+'/sitetour/connect.php'));ES5(j(z.getElementsByTagName('a')),'forEach',true,function(da){da.onclick=ES5(this._clickHandler,'bind',true,this);},this);this._page=document.body;var ba=0;if(this._page.parentNode){ba=Math.round((parseFloat(m.getStyle(this._page.parentNode,'height'))-parseFloat(m.getStyle(this._page,'height')))/2);}else ba=parseInt(m.getStyle(this._page,'marginTop'),10);ba=isNaN(ba)?0:ba;this._initTopMargin=ba;if(!window.XMLHttpRequest){aa.className+=" fb_connect_bar_container_ie6";}else{aa.style.top=(-1*this._initialHeight)+'px';g.ate(aa,{top:'0px'},this._animationSpeed);}var ca={marginTop:this._initTopMargin+this._initialHeight+'px'};if(w.ie()){ca.backgroundPositionY=this._initialHeight+'px';}else ca.backgroundPosition='? '+this._initialHeight+'px';g.ate(this._page,ca,this._animationSpeed);},_clickHandler:function(y){y=y||window.event;var z=y.target||y.srcElement;while(z.nodeName!='A')z=z.parentNode;switch(z.className){case 'fb_bar_close':h({method:'Connect.connectBarMarkAcknowledged'});s.impression({lid:104,name:'widget_user_closed'});this._closeConnectBar();break;case 'fb_learn_more':case 'fb_profile':window.open(z.href);break;case 'fb_no_thanks':this._closeConnectBar();h({method:'Connect.connectBarMarkAcknowledged'});s.impression({lid:104,name:'widget_user_no_thanks'});h({method:'auth.revokeAuthorization',block:true},ES5(function(){this.fire('connectbar.ondeauth');p.fire('connectbar.ondeauth',this);r.invokeHandler(this.getAttribute('on-deauth'),this);if(this._getBoolAttribute('auto-refresh',true))window.location.reload();},'bind',true,this));break;}return false;},_closeConnectBar:function(){this._notDisplayed=true;var y={marginTop:this._initTopMargin+'px'};if(w.ie()){y.backgroundPositionY='0px';}else y.backgroundPosition='? 0px';var z=(this._animationSpeed==0)?0:300;g.ate(this._page,y,z);g.ate(this._container,{top:(-1*this._initialHeight)+'px'},z,function(aa){aa.parentNode.removeChild(aa);});this.fire('connectbar.onclose');p.fire('connectbar.onclose',this);r.invokeHandler(this.getAttribute('on-close'),this);}});e.exports=x;}); +__d("sdk.XFBML.EdgeCommentWidget",["sdk.XFBML.IframeWidget","sdk.DOM"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=b('sdk.DOM'),i=10000,j=g.extend({constructor:function(k){this.parent(k.commentNode);this._iframeWidth=k.width+1;this._iframeHeight=k.height;this._attr={master_frame_name:k.masterFrameName,offsetX:k.relativeWidthOffset-k.paddingLeft};this.dom=k.commentNode;this.dom.style.top=k.relativeHeightOffset+'px';this.dom.style.left=k.relativeWidthOffset+'px';this.dom.style.zIndex=i++;h.addCss(this.dom,'fb_edge_comment_widget');},_visibleAfter:'load',_showLoader:false,getSize:function(){return {width:this._iframeWidth,height:this._iframeHeight};},getUrlBits:function(){return {name:'comment_widget_shell',params:this._attr};}});e.exports=j;}); +__d("sdk.XFBML.EdgeWidget",["sdk.XFBML.IframeWidget","sdk.XFBML.EdgeCommentWidget","sdk.DOM","sdk.Helper","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=b('sdk.XFBML.EdgeCommentWidget'),i=b('sdk.DOM'),j=b('sdk.Helper'),k=b('sdk.Runtime'),l=g.extend({_visibleAfter:'immediate',_showLoader:false,_rootPadding:null,setupAndValidate:function(){i.addCss(this.dom,'fb_edge_widget_with_comment');this._attr={channel_url:this.getChannelUrl(),debug:this._getBoolAttribute('debug'),href:this.getAttribute('href',window.location.href),is_permalink:this._getBoolAttribute('is-permalink'),node_type:this.getAttribute('node-type','link'),width:this._getWidgetWidth(),font:this.getAttribute('font'),layout:this._getLayout(),colorscheme:this.getAttribute('color-scheme','light'),action:this.getAttribute('action'),ref:this.getAttribute('ref'),show_faces:this._shouldShowFaces(),no_resize:this._getBoolAttribute('no_resize'),send:this._getBoolAttribute('send'),url_map:this.getAttribute('url_map'),extended_social_context:this._getBoolAttribute('extended_social_context',false)};this._rootPadding={left:parseFloat(i.getStyle(this.dom,'paddingLeft')),top:parseFloat(i.getStyle(this.dom,'paddingTop'))};return true;},oneTimeSetup:function(){this.subscribe('xd.authPrompted',ES5(this._onAuthPrompt,'bind',true,this));this.subscribe('xd.edgeCreated',ES5(this._onEdgeCreate,'bind',true,this));this.subscribe('xd.edgeRemoved',ES5(this._onEdgeRemove,'bind',true,this));this.subscribe('xd.presentEdgeCommentDialog',ES5(this._handleEdgeCommentDialogPresentation,'bind',true,this));this.subscribe('xd.dismissEdgeCommentDialog',ES5(this._handleEdgeCommentDialogDismissal,'bind',true,this));this.subscribe('xd.hideEdgeCommentDialog',ES5(this._handleEdgeCommentDialogHide,'bind',true,this));this.subscribe('xd.showEdgeCommentDialog',ES5(this._handleEdgeCommentDialogShow,'bind',true,this));},getSize:function(){return {width:this._getWidgetWidth(),height:this._getWidgetHeight()};},_getWidgetHeight:function(){var m=this._getLayout(),n=this._shouldShowFaces()?'show':'hide',o=this._getBoolAttribute('send'),p=65+(o?25:0),q={standard:{show:80,hide:35},box_count:{show:p,hide:p},button_count:{show:21,hide:21},simple:{show:20,hide:20}};return q[m][n];},_getWidgetWidth:function(){var m=this._getLayout(),n=this._getBoolAttribute('send'),o=this._shouldShowFaces()?'show':'hide',p=(this.getAttribute('action')==='recommend'),q=(p?265:225)+(n?60:0),r=(p?130:90)+(n?60:0),s=this.getAttribute('action')==='recommend'?100:55,t=this.getAttribute('action')==='recommend'?90:50,u={standard:{show:450,hide:450},box_count:{show:s,hide:s},button_count:{show:r,hide:r},simple:{show:t,hide:t}},v=u[m][o],w=this._getPxAttribute('width',v),x={standard:{min:q,max:900},box_count:{min:s,max:900},button_count:{min:r,max:900},simple:{min:49,max:900}};if(wx[m].max)w=x[m].max;return w;},_getLayout:function(){return this._getAttributeFromList('layout','standard',['standard','button_count','box_count','simple']);},_shouldShowFaces:function(){return this._getLayout()==='standard'&&this._getBoolAttribute('show-faces',true);},_handleEdgeCommentDialogPresentation:function(m){if(!this.isValid())return;var n=document.createElement('span');this._commentSlave=this._createEdgeCommentWidget(m,n);this.dom.appendChild(n);this._commentSlave.process();this._commentWidgetNode=n;},_createEdgeCommentWidget:function(m,n){var o={commentNode:n,externalUrl:m.externalURL,masterFrameName:m.masterFrameName,layout:this._getLayout(),relativeHeightOffset:this._getHeightOffset(m),relativeWidthOffset:this._getWidthOffset(m),anchorTargetX:parseFloat(m['query[anchorTargetX]'])+this._rootPadding.left,anchorTargetY:parseFloat(m['query[anchorTargetY]'])+this._rootPadding.top,width:parseFloat(m.width),height:parseFloat(m.height),paddingLeft:this._rootPadding.left};return new h(o);},_getHeightOffset:function(m){return parseFloat(m['anchorGeometry[y]'])+parseFloat(m['anchorPosition[y]'])+this._rootPadding.top;},_getWidthOffset:function(m){var n=parseFloat(m['anchorPosition[x]'])+this._rootPadding.left,o=i.getPosition(this.dom).x,p=this.dom.offsetWidth,q=i.getViewportInfo().width,r=parseFloat(m.width),s=false;if(k.getRtl()){s=rq)s=true;if(s)n+=parseFloat(m['anchorGeometry[x]'])-r;return n;},_getCommonEdgeCommentWidgetOpts:function(m,n){return {colorscheme:this._attr.colorscheme,commentNode:n,controllerID:m.controllerID,nodeImageURL:m.nodeImageURL,nodeRef:this._attr.ref,nodeTitle:m.nodeTitle,nodeURL:m.nodeURL,nodeSummary:m.nodeSummary,width:parseFloat(m.width),height:parseFloat(m.height),relativeHeightOffset:this._getHeightOffset(m),relativeWidthOffset:this._getWidthOffset(m),error:m.error,siderender:m.siderender,extended_social_context:m.extended_social_context,anchorTargetX:parseFloat(m['query[anchorTargetX]'])+this._rootPadding.left,anchorTargetY:parseFloat(m['query[anchorTargetY]'])+this._rootPadding.top};},_handleEdgeCommentDialogDismissal:function(m){if(this._commentWidgetNode){this.dom.removeChild(this._commentWidgetNode);delete this._commentWidgetNode;}},_handleEdgeCommentDialogHide:function(){if(this._commentWidgetNode)this._commentWidgetNode.style.display="none";},_handleEdgeCommentDialogShow:function(){if(this._commentWidgetNode)this._commentWidgetNode.style.display="block";},_fireEventAndInvokeHandler:function(m,n){j.fireEvent(m,this);j.invokeHandler(this.getAttribute(n),this,[this._attr.href]);},_onEdgeCreate:function(){this._fireEventAndInvokeHandler('edge.create','on-create');},_onEdgeRemove:function(){this._fireEventAndInvokeHandler('edge.remove','on-remove');},_onAuthPrompt:function(){this._fireEventAndInvokeHandler('auth.prompt','on-prompt');}});e.exports=l;}); +__d("sdk.XFBML.SendButtonFormWidget",["sdk.XFBML.EdgeCommentWidget","sdk.DOM","sdk.Event"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.EdgeCommentWidget'),h=b('sdk.DOM'),i=b('sdk.Event'),j=g.extend({constructor:function(k){this.parent(k);h.addCss(this.dom,'fb_send_button_form_widget');h.addCss(this.dom,k.colorscheme);h.addCss(this.dom,(typeof k.siderender!='undefined'&&k.siderender)?'siderender':'');this._attr.nodeImageURL=k.nodeImageURL;this._attr.nodeRef=k.nodeRef;this._attr.nodeTitle=k.nodeTitle;this._attr.nodeURL=k.nodeURL;this._attr.nodeSummary=k.nodeSummary;this._attr.offsetX=k.relativeWidthOffset;this._attr.offsetY=k.relativeHeightOffset;this._attr.anchorTargetX=k.anchorTargetX;this._attr.anchorTargetY=k.anchorTargetY;this._attr.channel=this.getChannelUrl();this._attr.controllerID=k.controllerID;this._attr.colorscheme=k.colorscheme;this._attr.error=k.error;this._attr.siderender=k.siderender;this._attr.extended_social_context=k.extended_social_context;},_showLoader:true,getUrlBits:function(){return {name:'send_button_form_shell',params:this._attr};},oneTimeSetup:function(){this.subscribe('xd.messageSent',ES5(this._onMessageSent,'bind',true,this));},_onMessageSent:function(){i.fire('message.send',this._attr.nodeURL,this);}});e.exports=j;}); +__d("sdk.XFBML.Like",["sdk.XFBML.EdgeWidget","sdk.XFBML.SendButtonFormWidget"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.EdgeWidget'),h=b('sdk.XFBML.SendButtonFormWidget'),i=g.extend({getUrlBits:function(){return {name:'like',params:this._attr};},_createEdgeCommentWidget:function(j,k){if('send' in this._attr&&'widget_type' in j&&j.widget_type=='send'){var l=this._getCommonEdgeCommentWidgetOpts(j,k);return new h(l);}else return this.parentCall("_createEdgeCommentWidget",j,k);},getIframeTitle:function(){return 'Like this content on Facebook.';}});e.exports=i;}); +__d("sdk.XFBML.LiveStream",["sdk.XFBML.IframeWidget"],function(a,b,c,d,e,f){var g=b('sdk.XFBML.IframeWidget'),h=g.extend({_visibleAfter:'load',setupAndValidate:function(){this._attr={app_id:this.getAttribute('event-app-id'),href:this.getAttribute('href',window.location.href),height:this._getPxAttribute('height',500),hideFriendsTab:this.getAttribute('hide-friends-tab'),redesigned:this._getBoolAttribute('redesigned-stream'),width:this._getPxAttribute('width',400),xid:this.getAttribute('xid','default'),always_post_to_friends:this._getBoolAttribute('always-post-to-friends'),via_url:this.getAttribute('via_url')};return true;},getSize:function(){return {width:this._attr.width,height:this._attr.height};},getUrlBits:function(){var i=this._attr.redesigned?'live_stream_box':'livefeed';if(this._getBoolAttribute('modern',false))i='live_stream';return {name:i,params:this._attr};}});e.exports=h;}); +__d("sdk.XFBML.LoginButton",["sdk.Helper","IframePlugin"],function(a,b,c,d,e,f){var g=b('sdk.Helper'),h=b('IframePlugin'),i=h.extend({constructor:function(j,k,l,m){this.parent(j,k,l,m);var n=h.getVal(m,'on_login');if(n)this.subscribe('login.status',function(o){g.invokeHandler(n,null,[o]);});},getParams:function(){return {scope:'string',perms:'string',size:'string',login_text:'text',show_faces:'bool',max_rows:'string',show_login_face:'bool',registration_url:'url_maybe',auto_logout_link:'bool',one_click:'bool'};}});e.exports=i;}); +__d("sdk.XFBML.Name",["copyProperties","sdk.Data","escapeHTML","sdk.Event","sdk.XFBML.Element","sdk.Helper","Log","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('copyProperties'),h=b('sdk.Data'),i=b('escapeHTML'),j=b('sdk.Event'),k=b('sdk.XFBML.Element'),l=b('sdk.Helper'),m=b('Log'),n=b('sdk.Runtime'),o=k.extend({process:function(){g(this,{_uid:this.getAttribute('uid'),_firstnameonly:this._getBoolAttribute('first-name-only'),_lastnameonly:this._getBoolAttribute('last-name-only'),_possessive:this._getBoolAttribute('possessive'),_reflexive:this._getBoolAttribute('reflexive'),_objective:this._getBoolAttribute('objective'),_linked:this._getBoolAttribute('linked',true),_subjectId:this.getAttribute('subject-id')});if(!this._uid){m.error('"uid" is a required attribute for ');this.fire('render');return;}var p=[];if(this._firstnameonly){p.push('first_name');}else if(this._lastnameonly){p.push('last_name');}else p.push('name');if(this._subjectId){p.push('sex');if(this._subjectId==n.getUserID())this._reflexive=true;}var q;j.monitor('auth.statusChange',ES5(function(){if(!this.isValid()){this.fire('render');return true;}if(!this._uid||this._uid=='loggedinuser')this._uid=n.getUserID();if(!this._uid)return;if(l.isUser(this._uid)){q=h._selectByIndex(p,'user','uid',this._uid);}else q=h._selectByIndex(['name','id'],'profile','id',this._uid);q.wait(ES5(function(r){if(this._subjectId==this._uid){this._renderPronoun(r[0]);}else this._renderOther(r[0]);this.fire('render');},'bind',true,this));},'bind',true,this));},_renderPronoun:function(p){var q='',r=this._objective;if(this._subjectId){r=true;if(this._subjectId===this._uid)this._reflexive=true;}if(this._uid==n.getUserID()&&this._getBoolAttribute('use-you',true)){if(this._possessive){if(this._reflexive){q='your own';}else q='your';}else if(this._reflexive){q='yourself';}else q='you';}else switch(p.sex){case 'male':if(this._possessive){q=this._reflexive?'his own':'his';}else if(this._reflexive){q='himself';}else if(r){q='him';}else q='he';break;case 'female':if(this._possessive){q=this._reflexive?'her own':'her';}else if(this._reflexive){q='herself';}else if(r){q='her';}else q='she';break;default:if(this._getBoolAttribute('use-they',true)){if(this._possessive){if(this._reflexive){q='their own';}else q='their';}else if(this._reflexive){q='themselves';}else if(r){q='them';}else q='they';}else if(this._possessive){if(this._reflexive){q='his/her own';}else q='his/her';}else if(this._reflexive){q='himself/herself';}else if(r){q='him/her';}else q='he/she';break;}if(this._getBoolAttribute('capitalize',false))q=l.upperCaseFirstChar(q);this.dom.innerHTML=q;},_renderOther:function(p){var q='',r='';if(this._uid==n.getUserID()&&this._getBoolAttribute('use-you',true)){if(this._reflexive){if(this._possessive){q='your own';}else q='yourself';}else if(this._possessive){q='your';}else q='you';}else if(p){if(null===p.first_name)p.first_name='';if(null===p.last_name)p.last_name='';if(this._firstnameonly&&p.first_name!==undefined){q=i(p.first_name);}else if(this._lastnameonly&&p.last_name!==undefined)q=i(p.last_name);if(!q)q=i(p.name);if(q!==''&&this._possessive)q+='\'s';}if(!q)q=i(this.getAttribute('if-cant-see','Facebook User'));if(q){if(this._getBoolAttribute('capitalize',false))q=l.upperCaseFirstChar(q);if(p&&this._linked){r=l.getProfileLink(p,q,this.getAttribute('href',null));}else r=q;}this.dom.innerHTML=r;}});e.exports=o;}); +__d("sdk.XFBML.RecommendationsBar",["sdk.Arbiter","DOMEventListener","sdk.Event","sdk.XFBML.IframeWidget","resolveURI","sdk.Runtime"],function(a,b,c,d,e,f){var g=b('sdk.Arbiter'),h=b('DOMEventListener'),i=b('sdk.Event'),j=b('sdk.XFBML.IframeWidget'),k=b('resolveURI'),l=b('sdk.Runtime'),m=j.extend({getUrlBits:function(){return {name:'recommendations_bar',params:this._attr};},setupAndValidate:function(){function n(w,x){var y=0,z=null;function aa(){x();z=null;y=ES5('Date','now',false);}return function(){if(!z){var ba=ES5('Date','now',false);if(ba-y=this._attr.trigger;}}});e.exports=m;}); +__d("sdk.XFBML.Registration",["sdk.Auth","sdk.Helper","sdk.XFBML.IframeWidget","sdk.Runtime","UrlMap"],function(a,b,c,d,e,f){var g=b('sdk.Auth'),h=b('sdk.Helper'),i=b('sdk.XFBML.IframeWidget'),j=b('sdk.Runtime'),k=b('UrlMap'),l=i.extend({_visibleAfter:'immediate',_baseHeight:167,_fieldHeight:28,_skinnyWidth:520,_skinnyBaseHeight:173,_skinnyFieldHeight:52,setupAndValidate:function(){this._attr={action:this.getAttribute('action'),border_color:this.getAttribute('border-color'),channel_url:this.getChannelUrl(),client_id:j.getClientID(),fb_only:this._getBoolAttribute('fb-only',false),fb_register:this._getBoolAttribute('fb-register',false),fields:this.getAttribute('fields'),height:this._getPxAttribute('height'),redirect_uri:this.getAttribute('redirect-uri',window.location.href),no_footer:this._getBoolAttribute('no-footer'),no_header:this._getBoolAttribute('no-header'),onvalidate:this.getAttribute('onvalidate'),width:this._getPxAttribute('width',600),target:this.getAttribute('target')};if(this._attr.onvalidate)this.subscribe('xd.validate',ES5(function(m){var n=ES5('JSON','parse',false,m.value),o=ES5(function(q){this.arbiterInform('Registration.Validation',{errors:q,id:m.id});},'bind',true,this),p=h.executeFunctionByName(this._attr.onvalidate,n,o);if(p)o(p);},'bind',true,this));this.subscribe('xd.authLogin',ES5(this._onAuthLogin,'bind',true,this));this.subscribe('xd.authLogout',ES5(this._onAuthLogout,'bind',true,this));return true;},getSize:function(){return {width:this._attr.width,height:this._getHeight()};},_getHeight:function(){if(this._attr.height)return this._attr.height;var m;if(!this._attr.fields){m=['name'];}else try{m=ES5('JSON','parse',false,this._attr.fields);}catch(n){m=this._attr.fields.split(/,/);}if(this._attr.widtha[y]("/")[0][q](":")&&(a=k+f[2][B](0,f[2].lastIndexOf("/"))+"/"+a):a=k+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d[A]||"")[D](),host:e[0], +port:e[1],path:e[2],Oa:d[va]||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[n](c)}for(var d=Da(b)[y]("&"),e=0;ef?c(d[e],"1"):c(d[e][B](0,f),d[e][B](f+1))}}function Pa(a,b){if(F(a)||"["==a[ma](0)&&"]"==a[ma](a[w]-1))return"-";var c=J.domain;return a[q](c+(b&&"/"!=b?b:""))==(0==a[q]("http://")?7:0==a[q]("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*m.random()||(a=["utmt=error","utmerr="+a,"utmwv=5.4.3","utmn="+Ea(),"utmsp=1"],b&&a[n]("api="+b),c&&a[n]("msg="+G(c[B](0,100))),M.w&&a[n]("aip=1"),Sa(a[C]("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} +var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0), +ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),Oc=N(),Oe=Va("uaName"),Pe=Va("uaDomain"),Qe=Va("uaPath");var Re=function(){function a(a,c,d){T($[x],a,c,d)}a("_createTracker",$[x].r,55);a("_getTracker",$[x].oa,0);a("_getTrackerByName",$[x].u,51);a("_getTrackers",$[x].pa,130);a("_anonymizeIp",$[x].aa,16);a("_forceSSL",$[x].la,125);a("_getPlugin",Pc,120)},Se=function(){function a(a,c,d){T(U[x],a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash",jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode", +xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey",tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey", +rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U[x].Fa,1);a("_trackEvent",U[x].F,4);a("_trackPageLoadTime",U[x].Ea,100);a("_trackSocial",U[x].Ga,104);a("_trackTrans",U[x].Ia, +18);a("_sendXEvent",U[x].t,78);a("_createEventTracker",U[x].ia,74);a("_getVersion",U[x].qa,60);a("_setDomainName",U[x].B,6);a("_setAllowHash",U[x].va,8);a("_getLinkerUrl",U[x].na,52);a("_link",U[x].link,101);a("_linkByPost",U[x].ua,102);a("_setTrans",U[x].za,20);a("_addTrans",U[x].$,21);a("_addItem",U[x].Y,19);a("_clearTrans",U[x].ea,105);a("_setTransactionDelim",U[x].Aa,82);a("_setCustomVar",U[x].wa,10);a("_deleteCustomVar",U[x].ka,35);a("_getVisitorCustomVar",U[x].ra,50);a("_setXKey",U[x].Ca,83); +a("_setXValue",U[x].Da,84);a("_getXKey",U[x].sa,76);a("_getXValue",U[x].ta,77);a("_clearXKey",U[x].fa,72);a("_clearXValue",U[x].ga,73);a("_createXObj",U[x].ja,75);a("_addIgnoredOrganic",U[x].W,15);a("_clearIgnoredOrganic",U[x].ba,97);a("_addIgnoredRef",U[x].X,31);a("_clearIgnoredRef",U[x].ca,32);a("_addOrganic",U[x].Z,14);a("_clearOrganic",U[x].da,70);a("_cookiePathCopy",U[x].ha,30);a("_get",U[x].ma,106);a("_set",U[x].xa,107);a("_addEventListener",U[x].addEventListener,108);a("_removeEventListener", +U[x].removeEventListener,109);a("_addDevId",U[x].V);a("_getPlugin",Pc,122);a("_setPageGroup",U[x].ya,126);a("_trackTiming",U[x].Ha,124);a("_initData",U[x].v,2);a("_setVar",U[x].Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)} +var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c[ya](this,arguments)}catch(a){throw Ra("exc",b,a&&a[r]),a;}}},Qc=function(a,b,c,d){U[x][a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[r]),e;}}},V=function(a,b,c,d,e){U[x][a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be[r]),Be;}}},Te=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc[ia](J[z].hostname)?!0:"/"!==b?!1:0!=a[q]("www.google.")&&0!=a[q](".google.")&&0!=a[q]("google.")||-1b[w]||ad(b[0],c))return!1;b=b[ja](1)[C](".")[y]("|");0=b[w])return!0; +b=b[1][y](-1==b[1][q](",")?"^":",");for(c=0;cb[w]||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]);Ve(a,b[ja](4)[C]("."));return!0},Ve=function(a,b){function c(a){return(a=b[oa](a+"=(.*?)(?:\\|utm|$)"))&& +2==a[w]?a[1]:void 0}function d(b,c){c?(c=e?I(c):c[y]("%20")[C](" "),a.set(b,c)):a.set(b,void 0)}-1==b[q]("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/[ia](a)};var Uc=function(){this.filters=[]};Uc[x].add=function(a,b){this.filters[n]({name:a,s:b})};Uc[x].execute=function(a){try{for(var b=0;b=100*a.get(vb)&&a[ta]()}function kd(a){ld(a.get(Wa))&&a[ta]()}function md(a){"file:"==J[z][A]&&a[ta]()}function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J[z].pathname+J[z][va],!0)};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.Xa=function(){for(var b=[],c=0;c=c[0]||0>=c[1]?"":c[C]("x");a.Wa=d}catch(k){H(135)}"preview"==b.loadPurpose&& +H(138);qd=a}},td=function(){sd();for(var a=qd,b=W[za],a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[w],c=W.history[w];0d?(this.i=b[B](0,d),this.l=b[B](d+1,c),this.h=b[B](c+1)):(this.i=b[B](0,d),this.h=b[B](d+1));this.k=a[ja](1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y[x],"push",Y[x][n],5);T(Y[x],"_getPlugin",Pc,121);T(Y[x], +"_createAsyncTracker",Y[x].Sa,33);T(Y[x],"_getAsyncTracker",Y[x].Ta,34);this.I=new Ja;this.p=[]};E=Y[x];E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va[ya](this,arguments),b=Z.p.concat(b);for(Z.p=[];0e?b+"#"+d:b+"&"+d;c="";f=b[q]("?");0f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c]; +var Be=b[p](/ /g,"%20"),k=c[p](/ /g,"%20");if(d==Yc(a+Be+k))return H(128),[Be,k];Be=Be[p](/\+/g,"%20");k=k[p](/\+/g,"%20");if(d==Yc(a+Be+k))return H(129),[Be,k];try{var s=b[oa]("utmctr=(.*?)(?:\\|utm|$)");if(s&&2==s[w]&&(Be=b[p](s[1],G(I(s[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,k,s){var t=ee(a,b);t||(t={},a.get(Cb)[n](t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=k;t.country_=s;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var k;t:{if(a&&a.items_){k=a.items_;for(var s=0;sb[w]||!/^\d+$/[ia](b[0])||(b[0]=""+c,Fd(a,"__utmx",b[C]("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Ye=function(a){try{var b=La(J[z][xa],!1),c=ea(L(b.d.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=ea(K(b.d.get("utm_expid")))||"";d&&(d=d[y](".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc,""+b)};var ke=function(a,b){var c=m.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ze()||$e();if(void 0==c)return!1;var d=c[0];if(void 0==d||d==ba||da(d))return!1;0a[b])return!1;return!0},le=function(a){return da(a)|| +0>a?0:5E3>a?10*m[la](a/10):5E4>a?100*m[la](a/100):41E5>a?1E3*m[la](a/1E3):41E5},je=function(a){for(var b=new yd,c=0;cc[w])){for(var d=[],e=0;e=f)return!1;c=1*(""+c);if(""==a||(!wd(a)||""==b||!wd(b)||!xd(c)||da(c)||0>c||0>f||100=a||a>e.get(yb))a=!1;else if(!b||!c||128=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a[oa](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b[n](a);this.set(Ic,b)}};E.v=function(){this.a[ka]()};E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a[ta]();if("event"===a.get(sc)){var b=(new Date)[g](),c=a.b(dc,0),d=a.b(Zb,0),c=m[la](1*((b-(c!=d?c:1E3*c))/1E3));0=a.b(R,0)&&a[ta]()}},pe=function(a){"event"===a.get(sc)&&a.set(R,m.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[n](b+"="+c)};this.toString=function(){return a[C]("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.4.3");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J[z].hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date)[g]());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni",1);var c=a.get(Ic); +c&&0=a[w])gf(a,b,c);else if(8192>=a[w]){if(0<=W[za].userAgent[q]("Firefox")&&![].reduce)throw new De(a[w]);hf(a,b)||Ee(a,b)}else throw new Ce(a[w]);},gf=function(a,b,c){c=c||("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/__utm.gif?";var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror= +null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},hf=function(a,b){var c,d=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,!0),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=null)},c.send(a),!0},Ee=function(a,b){if(J.body){a=aa(a); +try{var c=J[qa]('')}catch(d){c=J[qa]("iframe"),ha(c,a)}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=J[z],e=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/u/post_iframe.html#"+aa(e[A]+"//"+e[u]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Ga(W,"beforeunload",f);var Be=!1,k=0,s=function(){if(!Be){try{if(9>21:b;return b};})(); diff --git a/startIndex_files/ga_exp.js b/startIndex_files/ga_exp.js new file mode 100644 index 0000000..e69de29 diff --git a/startIndex_files/gplus_pic.png b/startIndex_files/gplus_pic.png new file mode 100644 index 0000000..db40320 Binary files /dev/null and b/startIndex_files/gplus_pic.png differ diff --git a/startIndex_files/jquery.js b/startIndex_files/jquery.js new file mode 100644 index 0000000..40b0cd1 --- /dev/null +++ b/startIndex_files/jquery.js @@ -0,0 +1,4 @@ +/** + * + */ +(function(e,t){function P(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function B(e){var t=H[e]={};return b.each(e.match(E)||[],function(e,n){t[n]=!0}),t}function I(e,n,r,i){if(b.acceptData(e)){var s,o,u=b.expando,a="string"==typeof n,f=e.nodeType,c=f?b.cache:e,h=f?e[u]:e[u]&&u;if(h&&c[h]&&(i||c[h].data)||!a||r!==t)return h||(f?e[u]=h=l.pop()||b.guid++:h=u),c[h]||(c[h]={},f||(c[h].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[h]=b.extend(c[h],n):c[h].data=b.extend(c[h].data,n)),s=c[h],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[b.camelCase(n)]=r),a?(o=s[n],null==o&&(o=s[b.camelCase(n)])):o=s,o}}function q(e,t,n){if(b.acceptData(e)){var r,i,s,o=e.nodeType,u=o?b.cache:e,a=o?e[b.expando]:b.expando;if(u[a]){if(t&&(s=n?u[a]:u[a].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in s?t=[t]:(t=b.camelCase(t),t=t in s?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete s[t[r]];if(!(n?U:b.isEmptyObject)(s))return}(n||(delete u[a].data,U(u[a])))&&(o?b.cleanData([e],!0):b.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null)}}}function R(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(F,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:j.test(r)?b.parseJSON(r):r}catch(s){}b.data(e,n,r)}else r=t}return r}function U(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function st(){return!1}function ct(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ht(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(at.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function pt(e){var t=dt.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Mt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function _t(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function Dt(e){var t=Ct.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Pt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function Ht(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,s=b._data(e),o=b._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;i>r;r++)b.event.add(t,n,u[n][r])}o.data&&(o.data=b.extend({},o.data))}}function Bt(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(_t(t).text=e.text,Dt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&xt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function jt(e,n){var r,s,o=0,u=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!u)for(u=[],r=e.childNodes||e;null!=(s=r[o]);o++)!n||b.nodeName(s,n)?u.push(s):b.merge(u,jt(s,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],u):u}function Ft(e){xt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,s=[],o=0,u=e.length;for(;u>o;o++)r=e[o],r.style&&(s[o]=b._data(r,"olddisplay"),n=r.style.display,t?(s[o]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(s[o]=b._data(r,"olddisplay",an(r.nodeName)))):s[o]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(o=0;u>o;o++)r=e[o],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?s[o]||"":"none"));return e}function sn(e,t,n){var r=$t.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function on(e,t,n,r,i){var s=n===(r?"border":"content")?4:"width"===t?1:0,o=0;for(;4>s;s+=2)"margin"===n&&(o+=b.css(e,n+Zt[s],!0,i)),r?("content"===n&&(o-=b.css(e,"padding"+Zt[s],!0,i)),"margin"!==n&&(o-=b.css(e,"border"+Zt[s]+"Width",!0,i))):(o+=b.css(e,"padding"+Zt[s],!0,i),"padding"!==n&&(o+=b.css(e,"border"+Zt[s]+"Width",!0,i)));return o}function un(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,s=qt(e),o=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,s);if(0>=i||null==i){if(i=Rt(e,t,s),(0>i||null==i)&&(i=e.style[t]),Jt.test(i))return i;r=o&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+on(e,t,n||(o?"border":"content"),r,s)+"px"}function an(e){var t=s,n=Qt[e];return n||(n=fn(e,t),"none"!==n&&n||(It=(It||b("