Commit Graph

337 Commits (e1c36506340a46b110ae0fdacb2e54e1ee494e50)

Author SHA1 Message Date
John Hurliman 4847e62e9f * Switched all operations on the list of clients that could be either sync or async to use Scene.ForEachClient() instead of referencing ClientManager directly
* Added a new [Startup] config option called use_async_when_possible to signal how to run operations that could be either sync or async
* Changed Scene.ForEachClient to respect use_async_when_possible
* Fixing a potential deadlock in Parallel.ForEach by locking on a temporary object instead of the enumerator (which may be shared across multiple invocations on ForEach). Thank you diva
2009-10-26 16:33:04 -07:00
John Hurliman a41cd1d069 * Unregister Mono.Addins event handlers in PluginLoader.Dispose() and always handle PluginLoader with the using pattern. This freed up 121,634,796 bytes on my system
* Avoid allocating an Action<IClientAPI> object every round of the OutgoingPacketHandler
* Removed unnecessary semi-colon endings from OpenSim.ini.example [InterestManagement] section
2009-10-23 13:14:29 -07:00
John Hurliman 4c45b5fd3c Cleaning up OpenSim.ini.example for LLUDP. The [LLClient] section has been removed and several new parameters have been added to [ClientStack.LindenUDP] 2009-10-23 10:35:47 -07:00
John Hurliman 62f1a5e36d Implemented a "FrontBack" prioritizer, using distance plus the plane equation to give double weight to prims/avatars in front of you 2009-10-23 02:38:59 -07:00
John Hurliman 4121a02936 OpenSim.ini.example had the wrong names for default values in the [InterestManagement] section. Fixed 2009-10-22 10:15:28 -07:00
John Hurliman 2f394b7e7e * Allow SmartThreadPool to be initialized without setting max stack size (like the original implementation)
* Only initialize Util's SmartThreadPool if it is actually being used
* No longer initializing Util's SmartThreadPool with a custom max stack size. From MSDN: "Avoid using this constructor overload. The default stack size used by the Thread(ThreadStart) constructor overload is the recommended stack size for threads."
2009-10-22 01:30:12 -07:00
Melanie b35fbe1f98 Merge branch 'melanie_test' into prioritization
This makes SmartThreadPool configurable and also makes it the default, since
the regular thread pool simply stinks.
2009-10-22 07:02:21 +01:00
John Hurliman 32ccd5bb40 * Changed the misc. methods calling ThreadPool.UnsafeQueueUserWorkItem() to Util.FireAndForget()
* Changed Util.FireAndForget() to use any of five different methods set with async_call_method in the [Startup] section of OpenSim.ini. Look at the example config for possible values
2009-10-21 23:03:18 -07:00
Melanie 8ce4fd7234 Reduce the default pool threads to 15 (from 30) and the minimum from 5 to 2 2009-10-22 04:02:26 +01:00
Melanie 8a336c6860 Add MaxPoolThreads in startup to limit the size of the thread pool used
for FireAndForget. This lets us limit concurrency to make OpenSim play nice
2009-10-22 02:28:53 +01:00
John Hurliman fdce1be3db * Removed OpenSim.Data.NHibernate
* Replaced calls to ThreadPool.QueueUserWorkItem() with ThreadPool.UnsafeQueueUserWorkItem() since OpenSim does not use Code Access Security sandboxing
2009-10-19 16:52:27 -07:00
John Hurliman 5a4fda9dc3 Updating OpenSim.ini.example with the section required to enable a useful prioritization scheme 2009-10-16 11:09:18 -07:00
John Hurliman 06990b074c Allow the LLUDP server to run in either synchronous or asynchronous mode with a config setting, defaulting to synchronous mode 2009-10-14 16:48:27 -07:00
John Hurliman 82012ec4e3 * Clean up the SetThrottle() code and add a maxBurstRate parameter to allow more tweaking in the future 2009-10-14 16:21:48 -07:00
John Hurliman 0d2e6463d7 * Minimized the number of times textures are pulled off the priority queue
* OnQueueEmpty is still called async, but will not be called for a given category if the previous callback for that category is still running. This is the most balanced behavior I could find, and seems to work well
* Added support for the old [ClientStack.LindenUDP] settings (including setting the receive buffer size) and added the new token bucket and global throttle settings
* Added the AssetLoaderEnabled config variable to optionally disable loading assets from XML every startup. This gives a dramatic improvement in startup times for those who don't need the functionality every startup
2009-10-14 11:43:31 -07:00
Justin Clark-Casey (justincc) 46110b0195 change default ports for inventory and grid connectors in example .ini files to 8003 to match the ROBUST default
altered wiki page to reflect this
2009-10-05 20:18:35 +01:00
Melanie ce8974539e Merge branch 'master' into diva-textures 2009-10-02 19:03:22 +01:00
Diva Canto 2e1c76f836 Added a default for grid services in standalone. 2009-10-02 07:18:36 -07:00
Melanie 31d8cec0f8 Merge branch 'master' into diva-textures 2009-10-02 08:23:38 +01:00
Melanie 18a744cac1 Change texture sending to be driven by the queue empty event from the
packet queue, rather than a timer
2009-10-02 04:04:14 +01:00
Melanie d0bf084da5 Remove the settings for the J2KDecoder, since they are now obsolete (thank god!) 2009-09-30 21:31:48 +01:00
Diva Canto 632bb71262 Fixed MapBlocks bug, wrong order of arguments. First version that seems completely functional.
Also fixed the notification of the message server in standalone -- that server doesn't usually exist.
2009-09-26 08:49:48 -07:00
Diva Canto be7afa0b1f Changed a [Groups] config as per mcortez' request. 2009-09-25 08:44:26 -07:00
Melanie 97c18caa76 Thank you, Intari, for a patch that implements the missing pieces of
Http-in and makes the host name for URL generation configurable.
Applied with changes:
llGetSimulatorHostname was not changed, because the change breaks
existing behavior and carries a data exposure risk. That value needs
to be configurable, the proposed fixed change is not acceptable.
2009-09-22 17:04:34 +01:00
Justin Clark-Casey (justincc) 077d01c225 switch default physics engine to ODE and default meshmerizer to Meshmerizer in code and in OpenSim.ini.example 2009-09-16 18:44:55 +01:00
Justin Clark-Casey (justincc) a964bc3ca4 Apply http://opensimulator.org/mantis/view.php?id=4142
Re-enable XMLRPC scripting calls
Moves XMLRPC scripting setup to a separate section
Thanks Fly-Man-
2009-09-14 18:31:34 +01:00
Teravus Ovares (Dan Olivares) 38e462ed8a * Milestone GridFriendly reached so Adding CombineContiguousRegions to the OpenSim.ini.example 2009-09-13 07:27:24 -04:00
dahlia 2ddb73f5f3 update documentation in OpenSim.ini.example for j2k decode cache expiration time 2009-09-01 23:42:31 -07:00
dr scofield (aka dirk husemann) 953581698d - making font name used by VectorRenderModule configurable: can be set
via

      [VectorRender]
      font_name = "Comic Sans MS"

  in OpenSim.ini

- adding osSetFontName OSSL function
2009-08-31 10:30:10 +02:00
Melanie 1a6b30e092 Add a slow cache cleaner thread. By default, the thread starts a cleanup
sweep every 10 minutes. If any texture data is older than 12 hours, it is
regenerated and the memory cache is refreshed. After each decode, the thread
delays for 5 seconds.
2009-08-29 05:54:38 +01:00
Melanie 4b2e62fd3c Make the j2kDecodeCache expire after 50 minutes (configurable). Alse allows
setting the path for it. This commit introduces NEW DEFAULT BEHAVIOR. To
retain the old behavior (eternal cache) you will need to change your OpenSim.ini
and set the timeout to 0.
2009-08-29 04:35:18 +01:00
dahlia 465d1095dd Added new OpenSim.ini setting: "client_throttle_max_bps" which overrides user's viewer network throttle settings 2009-08-18 17:06:14 -07:00
Justin Clark-Casey (justincc) eb78ac343e Apply http://opensimulator.org/mantis/view.php?id=3538
Add ability to silence IRC relay of region joins and quits from certain users
This is useful for admins who wish to remain hidden, or service bots.
Thanks RemedyTomm
2009-08-17 19:48:32 +01:00
Adam Frisby 30c4aa55e6 Added additional configuration options for MRM Security. See OpenSim.ini.example under the [MRM] section. 2009-08-18 00:58:42 +10:00
Melanie 3d7bb7567c Add the ability to use -console=rest to the region server. User
and pass are specified the same way as for the ROBUST server
2009-08-17 09:21:39 +01:00
Jeff Ames 9d9fcac038 Misc cleanup. 2009-08-16 17:14:21 +09:00
Michael Cortez 2ac04cb624 Merge branch 'master' into groups-core-contrib 2009-08-06 09:38:51 -07:00
Melanie 00aceec799 Add the config-include statement to OpenSim.ini.example.
addon-modules/*/config/*.ini is now included in the configuration
2009-08-06 02:33:44 +01:00
Michael Cortez c73a6ab7e0 Continue with renaming of Groups module components 2009-08-05 14:56:48 -07:00
Dr Scofield 1c965b5a74 adding documentation for DisableUndergroundMovement 2009-07-30 08:38:54 +00:00
Dr Scofield 7a4abf0def From: Dr Scofield <hud@zurich.ibm.com> & Alan Webb <alan_webb@us.ibm.com>
this commit finally adds the VivoxVoiceModule: it supports positional
as well as conference call type voice (currently only per region
server), region and parcel voice, speaker indication (LL client
family), direct avtar-to-avatar voice chat. NOTE: you need to obtain
an customer admin account from Vivox to be able to use this module ---
DON'T ask me about how to about an admin account, i've NO clue, we
just wrote this code.
2009-07-11 08:16:47 +00:00
Justin Clarke Casey 2ff08c84f5 * minor: formatting adjustments in OpenSim.ini.example 2009-07-10 19:47:26 +00:00
nlin 0ec6dfb1a1 Experimental fix for tilted avatar capsule, Mantis #2905
Set av_capsule_tilted to false in opensim.ini. Default is true, so there is
no change in avatar behavior (and no breaking of existing content which
relies on the tilted capsule).

This commit straightens up the avatar capsule so it behaves consistently
(e.g. same collision behavior against prims regardless of which direction
the avatar is coming from; ability to fit through narrow doorways).

Please note this introduces other side effects which have not been fixed.
In particular:

* The avatar frequently falls through the terrain if it is not flat, though
the avatar behaves pretty well on flat terrain. This requires investigation
of the ode terrain collider.
* The apparent foot position of the avatar with respect to the ground
is changed. This requires investigation of the avatar height/capsule height.

Please consider this as work in progress.
2009-07-08 01:41:05 +00:00
Dr Scofield 8f5efc4994 - adds the possibility of setting the socket receive buffer size
option for LLUDPServer. On windows .NET the default socket receive
  buffer size is 8192 bytes, on recent linux systems it's about
  111K. both value can be a bit small for an OpenSim instance serving
  many clients. The socket receive buffer size can be configured via
  an OpenSim.ini config option

- adds a general catch clause to LLUDPServer.OnReceivedData() to
  prevent it submerging when an unexpected Exception occurs.
2009-06-25 07:50:02 +00:00
Dr Scofield afd5f76648 From: Alan Webb <alan_webb@us.ibm.com>
This change moves texture send processing out of the main
  packet processing loop and moves it to a timer based
  processing cycle.

  Texture packets are sent to the client consistently over
  time. The timer is discontinued whenever there are no
  textures to transmit.

  The behavior of the texture sending mechanism is controlled
  by three variables in the LLCLient section of the config
  file:

   [1] TextureRequestRate (mS) determines how many times per second
       texture send processing will occur. The default is 100mS.
   [2] TextureSendLimit determines how many different textures
       will be considered on each cycle. Textures are selected
       by priority. The old mechanism specified a value of 10 for
       this parameter and this is the default
   [3] TextureDataLimit determines how many packets will be sent for
       each of the selected textures. The old mechanism specified a
       value of 5, so this is the default.

  So the net effect is that TextureSendLimit*TextureDataLimit
  packets will be sent every TextureRequestRate mS.

  Once we have gotten a reasonable feeling for how these parameters
  affect overall processing, it would be nice to autonmically manage
  these values using information about the current status of the
  region and network.

  Note that this also resolves the pathologcal problem that
  previously existed which was that a seated avatar generated very
  few in-bound packets (theoretically) and would therefore be the
  least able to retrieve the images being displayed by a
  projector script.
2009-06-25 07:42:06 +00:00
Jeff Ames ffcb58e568 Formatting cleanup. 2009-06-14 22:00:08 +00:00
diva a3f36f1954 Added some defaults to OpenSim.ini.example so that it works out of the box again with zero configuration. 2009-06-10 16:31:22 +00:00
Arthur Valadares eb330f71be * Making silent logoff of old hung sessions for new connections default for
StandAlone users. Not touching grid.
2009-06-01 18:34:40 +00:00
Arthur Valadares d0084f08f2 * Allows standalone region users to skip the "You must wait 5 minutes to log again" message and
allow the region to kick the old user and log the new one without reporting any failure.
Default is still to show message and fail login
2009-05-29 22:38:18 +00:00
diva c287c4c57b Added one missing config var for HG standalones. 2009-05-23 15:08:03 +00:00
diva 1be22bc626 Changing extension of two of the config files to .example because they need to be copied and customized. 2009-05-23 01:40:03 +00:00
diva 92d5b1560d Added a few pre-packaged configurations to make it easier for people to configure their sims. 2009-05-22 22:48:25 +00:00
diva 9de2436c1e Removing the [UserService] section, because it's not working yet. 2009-05-22 00:23:43 +00:00
diva 94d4f28e2d Comment out the asset cache config in .ini.example. 2009-05-20 18:55:45 +00:00
Melanie Thielker 23d902be42 Remove the old asset cache and local services and the configurations for them 2009-05-18 23:18:04 +00:00
diva df16532858 Bug fix and config rename. 2009-05-18 23:15:50 +00:00
diva d0d4f7afde DLL name change in config var. 2009-05-18 20:38:35 +00:00
Dr Scofield a885556063 From: Chris Yeoh <yeohc@au1.ibm.com>
We've encountered problems with textures never fully downloading and
objects not moving or being deleted (from the client's point of view)
even when the bandwidth settings on the client have been set very
low. This can happen over reasonably lossy links (eg you're on the
other side of the world from the server) as the server retries 3 times
and then gives up.

Whilst its possible to set ReliableIsImportant, this forces the server
to keep retrying no matter what which potentially could lead to
problems. This patch allows for the setting of MaxReliableResends
explicitly (is set to 3 normally) in OpenSim.ini so if you know you
will have clients connecting with poor connections you can set it a
bit higher (10-15 works quite well even for very poor connections).
2009-05-18 16:10:48 +00:00
diva 720e2bc5d9 Renaming [ServiceConnectors] back to [Modules]. 2009-05-17 15:37:50 +00:00
diva aac8ca0411 HG asset transfers starting to work -- GETs only for now. 2009-05-17 01:38:43 +00:00
diva 5e4fc6e91e Heart surgery on asset service code bits. Affects OpenSim.ini configuration -- please see the example. Affects region servers only.
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems: 
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
2009-05-15 05:00:25 +00:00
Melanie Thielker 16efb78698 Changes to the new user system to add the modularity developed for the asset
system
2009-05-11 22:54:09 +00:00
Melanie Thielker d7b2beea18 Add selling for $0 back to the sample economy module. This is disabled by
default but can be enabled in OpenSim.ini. If enabled, things can be sold
for $0. Other amounts will cause the buyer to see a message and the transaction
will fail.
2009-05-11 18:23:39 +00:00
Melanie Thielker 461e213a39 Plumb the HG asset broker. More naming changes to clarify things. Lots more
config options.
2009-05-11 02:59:26 +00:00
Melanie Thielker c1e7352d75 Add the asset service connectors and sample config. READ WARNINGS!!! 2009-05-09 02:49:55 +00:00
Melanie Thielker b44a56e0b4 Add a parameter that limits the max size of the outbound packet. Defaulted
at 1400 since the headers get added to that (32 bytes plus UDP headers)
2009-05-04 02:24:30 +00:00
Adam Frisby 0b2a34438c * Makes ObjectUpdate compressing tweakable in OpenSim.ini - introduces:
TerseUpdatesPerPacket=10
FullUpdatesPerPacket=14
TerseUpdateRate=10
FullUpdateRate=14
2009-05-02 19:09:48 +00:00
Melanie Thielker 66e25abbfe Plumb conifg into the client views. Add config option to configure packet
dropping.
2009-05-02 17:31:49 +00:00
Charles Krinke 280d2cbf4a Thank you kindly, BlueWall, for a patch that:
Move json stats to non-published resource name
Remove well-known resource name for json stats, 
creating dynamic uris with private keys and add 
a user configurable resource name for region owner usage.
2009-05-02 16:28:30 +00:00
Charles Krinke 47640aca22 Thank you kindly, MCortez for a patch that solves:
Different people using Hippo 0.5.1 report that trying 
to send group instant messages crashes the viewer 
(Hippo 0.5.1). This is the case even for empty groups 
or if all group members are online.
2009-05-02 16:16:27 +00:00
Melanie Thielker 62bcf0e694 Numerous packet improvements.
Don't allow packets to be resent before they have actually been sent for the
first time. Switch from serializing a packet to get it's length to the LibOMV
provided Length property. Fix resend timing. Fix the use of dangling references
to Acked packets. Fix the packet handler to play nice with the packet pool.
Fix the packet pool. Add data block recycling to the packet pool. Packet pool
is now ENABLED by default. Add config option to disable packet and data block
reuse. Add ObjectUpdate and ImprovedTerseObjectUpdate to the packets being
recycled.
2009-05-02 13:16:41 +00:00
Melanie Thielker 0f721da5f1 Add a tweakable for the prim queue preload 2009-05-01 19:33:18 +00:00
Charles Krinke 8944ab910c Thank you kindly, MCortez for a patch that:
The attached patch provides the necessary infrastructure to support 
security and authentication features of the xmlrpc server.
* Read/Write keys for accessing a Group's xmlrpc service.
* Requiring user session verification for write operations.
2009-04-29 22:31:00 +00:00
Dr Scofield a89f60d4c9 From: Alan Webb <alan_webb@us.ibm.com> & Dr Scofield <drscofield@xyzzyxyzzy.net>
- Adds an admin_modify_region call to allow changing of parcel voice
  settings and changing of public/private status
- add boolean "public" and boolean "enable_voice" to
  admin_create_region XmlRpc call to allow specifying of
  public/private status and to allow enabling voice for all parcels;
  also added config variables to allow setting of defaults for those
- fixing cut-and-paste artefacts
2009-04-29 09:05:01 +00:00
diva d8313e314f Getting rid of -hypergrid=true on the command line. This config now goes inside OpenSim.ini in the Startup section. This makes the HG compatible with -background, and prepares the way for further work on HG-related config vars. Might help with mantis #3527. 2009-04-27 00:16:59 +00:00
Melanie Thielker c9c4dcdaf0 Adapt the opensim.ini example to reflect the php file names actually used
in wiredux to reduce confusion a bit
2009-04-26 18:17:00 +00:00
Melanie Thielker e8c8cd52b8 Fix another typo in the ini example 2009-04-25 16:59:28 +00:00
Melanie Thielker 0317f42c63 Fix a typo in OpenSim.ini.example 2009-04-25 16:52:15 +00:00
Teravus Ovares 2ebedc5c29 * update example to reflect optional Well known hostname. 2009-04-22 06:09:11 +00:00
Melanie Thielker bd522720f7 Change the default for FreeSwitch Voice to disable. Most people don't have
the server, after all.
2009-04-22 02:17:59 +00:00
Charles Krinke 5ea4faa6f2 Thank you kindly, MCortez, for a patch that:
* Refactors the xmlrpc calls to a single location to 
make it easier to debug and include alternative 
xmlrpc call mechanisms
* Includes an alternative xmlrpc call mechanism that 
sets HTTP Keep-Alive to false which solves nearly all 
System.Net exceptions on some windows environments
2009-04-21 20:44:17 +00:00
Dr Scofield 4a8313f14c culling AsteriskVoiceModule and SIPVoiceModule, now that we have
working FreeSwitchVoiceModule and soon will have a fully working
VivoxVoiceModule.
2009-04-21 16:06:16 +00:00
Dahlia Trimble 5f1fa0d3d7 Added a "force_simple_prim_meshing" option to the ODE settings in OpenSim.ini which will use meshes for collisions with simple prim shapes rather than internal ODE algorithms. This may help with Mantis #2905 and Mantis #3487 for those experimenting with capsule settings.
Note that this will increase memory usage and region startup time.
2009-04-19 01:21:38 +00:00
Charles Krinke 659b55905d Thank you kindly, MCortez, for a patch that:
Added is a patch that adds a rough Groups implementation. This patch allows 
the creation, adding and maintaining Groups, Roles and Members. Work has begun 
on a very naive implementation of messaging, and minimal support for notifications 
{no attachments yet}. Proposals are not yet supported, but are on the to-do list.
This implementation is not active by default, and must be configured in 
OpenSim.ini to become active.
2009-04-18 21:33:48 +00:00
Sean Dague 8a2362c474 add some stub config to OpenSim.ini.example for freeswitch. This needs
quite a bit of explaining before people can probably figure this out,
which will be coming in the wiki.
2009-04-17 20:07:22 +00:00
idb 988737b182 Correct Opensim.ini.example to reflect the default settings for clouds.
Fixes Mantis #3421
Change the agent/avatar events subscriptions to just OnNewClient. The data only needs to be sent once and keeping track of log ins/movements is not required. This will also send cloud data to child agents so that they can see clouds above neighbouring regions not just regions that they have visited.
2009-04-11 10:18:20 +00:00
Melanie Thielker ae6f265729 Add an optional region module which will supply a script event,
xmlrpc_uri(string) in response to a OpenRemoteDataChannel call. The string
is the fully qualified URI to post XMLRPC requests for that script to.
2009-04-10 21:26:36 +00:00
Justin Clarke Casey 7c04c1e44c * Apply http://opensimulator.org/mantis/view.php?id=3427
* Return different values for llCloud() over time based on a cellular automation system.
* Thanks aduffy70!
2009-04-10 14:56:58 +00:00
Justin Clarke Casey 1066aa6998 * Remove Autooar module pending it's migration to the forge 2009-04-09 19:49:33 +00:00
Justin Clarke Casey 513ae92bbb * Apply http://opensimulator.org/mantis/view.php?id=3406
* Makes Second Life environment sensor ranges and maximum response number configurable
* Thanks Intimidated
2009-04-07 19:15:26 +00:00
Melanie Thielker fb900f6055 Applying Intimidated's patch to fix anim handling.
Fixes Mantis #3417
2009-04-06 18:02:12 +00:00
idb e7d4ea134e Applied a patch from mcortez with settings for the new wind module.
Fixes Mantis #3382
2009-04-05 10:35:25 +00:00
diva 3c9cba1627 Added CreateObject(regionhandle, userID, itemID) to post objects that are to be fetched from the user's inventory server and rezzed in the region. Added all code necessary to fetch the item and the asset, and rez it inworld. The access to the item is uncap-ed and unverified -- I may place it later either under a cap or with auth verification. But in this model regions don't have the user's inventory, so they would have to guess the item IDs.
Added safemode config to Standalone Hypergrid, similar effect to AllowRegionAccessToInventory in Inventory Server. Everyone should have these vars set to their default values except me!
2009-04-05 03:27:50 +00:00
Homer Horwitz 8136cf4075 Thanks jonc, for a patch that adds rendering of classic clouds.
First part of Mantis #964, the necessary clouds image will follow separately.
2009-04-04 15:43:02 +00:00
Dahlia Trimble 59a6dfbf5a Correction to "user" example config option for IRC 2009-04-02 03:47:56 +00:00
Melanie Thielker a1fe54baa0 Add a "user" config option to the IRC module config. Like all other IRC
config options, this has NO default, if you use the IRC module, you MUST
add this setting to your ini file.
2009-04-01 12:28:46 +00:00
Melanie Thielker 76ca096384 Add a PIDFile in [Startup], which the PID will be written to 2009-04-01 12:13:42 +00:00
Jeff Ames 54ccca1e2c Update svn properties, add copyright header, formatting cleanup. 2009-03-31 02:00:33 +00:00
Melanie Thielker 404bfdc9a6 Finish the offline IM module (still needs a server). Add rudimentary
support for the mute list (no functionality yet, but allows the
RetrieveInstantMessages event to fire now).
2009-03-29 00:48:34 +00:00
Melanie Thielker 0ff7c85a5d Add a module skeleton for offline IM storage. No functionality yet. 2009-03-28 02:58:12 +00:00