Difference between revisions of "Second Life Login API Strawman"

From Second Life Wiki
Jump to navigation Jump to search
Line 266: Line 266:
Zero or more of the  following character strings may appear in any order in the array following the "options" keyword:  
Zero or more of the  following character strings may appear in any order in the array following the "options" keyword:  


:• "inventory-root" -- refers to the UUID of the root inventory folder in the client's inventory window
''':• "inventory-root" -- refers to the UUID of the root inventory folder in the client's inventory window'''
* folder_id of library root inventory lib (retrieved from inventory database)
* folder_id of library root inventory lib (retrieved from inventory database)
** generate one if folder_id does not exit.
** generate one if folder_id does not exit.
Line 274: Line 274:
   {'inventory-root' => {folder_id' => 'UUID of Folder ID'} }     
   {'inventory-root' => {folder_id' => 'UUID of Folder ID'} }     


:• "inventory-skeleton" -- "starter kit" inventory: name, folder_id, parent_id, type_default, version of all folders  
''':• "inventory-skeleton" -- "starter kit" inventory: name, folder_id, parent_id, type_default, version of all folders'''
* create an array of 'inv'  
* create an array of 'inv'  
* get name , folder_id, parent_id from user_inventory_folder according to the given agent_id and push them one by one into 'inv'
* get name , folder_id, parent_id from user_inventory_folder according to the given agent_id and push them one by one into 'inv'
Line 281: Line 281:
     {'inventory-skeleton' =>  {'name, folder_id, parent_id'},{'name, folder_id, parent_id'} ,{'name, folder_id, parent_id'} .... }  
     {'inventory-skeleton' =>  {'name, folder_id, parent_id'},{'name, folder_id, parent_id'} ,{'name, folder_id, parent_id'} .... }  


:• "inventory-lib-root" -- folder_id of library root inventory folder
''':• "inventory-lib-root" -- folder_id of library root inventory folder'''
* assign inventory_lib_owner a hardcode value if inventory-lib-root exists.
* assign inventory_lib_owner a hardcode value if inventory-lib-root exists.
* check aganst existence and also check if inventory_lib_owner has value
* check aganst existence and also check if inventory_lib_owner has value
Line 290: Line 290:
     {'inventory-lib-root' => 'folder_id'}
     {'inventory-lib-root' => 'folder_id'}


:• "inventory-lib-owner" -- agent_id of owner for inventory lib   
''':• "inventory-lib-owner" -- agent_id of owner for inventory lib  '''
* checked against existence and check if inventory_lib_owner has value
* checked against existence and check if inventory_lib_owner has value
* if both true then create an array of 'owner' and push agent_id into the array
* if both true then create an array of 'owner' and push agent_id into the array
Line 297: Line 297:
   {'inventory-lib-owner' => {'agent_id' => 'agent id uuid '}}
   {'inventory-lib-owner' => {'agent_id' => 'agent id uuid '}}
    
    
:• "inventory-skel-lib" -- LL supplied library of inventory items: same as inventory-skeleton, except global inventory   
''':• "inventory-skel-lib" -- LL supplied library of inventory items: same as inventory-skeleton, except global inventory'''    
* checked against existence and check if inventory_lib_owner has value
* checked against existence and check if inventory_lib_owner has value
* get f.name , f.folder_id, f.parent_id f.type_default f.version from user_inventory_folder f according to the given f.agent_id and push them one by one into 'inv'
* get f.name , f.folder_id, f.parent_id f.type_default f.version from user_inventory_folder f according to the given f.agent_id and push them one by one into 'inv'
Line 306: Line 306:
                               {'f.name, f.folder_id, f.parent_id, f.type_default, f.version'} .... }  
                               {'f.name, f.folder_id, f.parent_id, f.type_default, f.version'} .... }  


:• "gestures" -- refers to the list of UUIDs that an avatar will perform: item_id, asset_id of active gestures  
''':• "gestures" -- refers to the list of UUIDs that an avatar will perform: item_id, asset_id of active gestures'''
* checked against existence
* checked against existence
* if exist, get g.item_id and g.asset_id from user_gesture_active g and user_inventory_item if they exist in both
* if exist, get g.item_id and g.asset_id from user_gesture_active g and user_inventory_item if they exist in both
Line 315: Line 315:
                   {gesture item_id, gesture asset_id} ....}
                   {gesture item_id, gesture asset_id} ....}
      
      
:• "event_categories" --  list of different event categories
''':• "event_categories" --  list of different event categories'''
* post webservices for query_cache_url "event_categories"   
* post webservices for query_cache_url "event_categories"   
* http://asset.agni.lindenlab.com/querycache/event_categories
* http://asset.agni.lindenlab.com/querycache/event_categories
Line 325: Line 325:
                           {category_id (int), category_name(string)}....}
                           {category_id (int), category_name(string)}....}


:• "event_notifications" -- list of events for which you have notifications  
''':• "event_notifications" -- list of events for which you have notifications'''
* checked against existence
* checked against existence
* if exist, get still available event_id,event_name, event_desc, event_date, grid_x, grid_y, x_region, y_region from event_notification n and  
* if exist, get still available event_id,event_name, event_desc, event_date, grid_x, grid_y, x_region, y_region from event_notification n and  
Line 334: Line 334:
                   {event_id, event_name,event_desc, event_date, grid_x, grid_y, x_region, y_region } ....}
                   {event_id, event_name,event_desc, event_date, grid_x, grid_y, x_region, y_region } ....}


:• "classified_categories" -- unknown
''':• "classified_categories"'''
* post webservices for query_cache_url "classified_categories"   
* post webservices for query_cache_url "classified_categories"   
* http://asset.agni.lindenlab.com/querycache/classified_categories
* http://asset.agni.lindenlab.com/querycache/classified_categories
Line 344: Line 344:
                           {category_id (int), category_name(string)}....}
                           {category_id (int), category_name(string)}....}


:• "buddy-list" -- agent_id, granted rights and given rights of everyone that is your buddy   
''':• "buddy-list" -- agent_id, granted rights and given rights of everyone that is your buddy'''  
      
      
     {'buddy-list' => {buddy_id, buddy_rights_has, buddy_rights_given},
     {'buddy-list' => {buddy_id, buddy_rights_has, buddy_rights_given},
Line 350: Line 350:
                     {buddy_id, buddy_rights_has, buddy_rights_given},....}   
                     {buddy_id, buddy_rights_has, buddy_rights_given},....}   
              
              
:• "ui-config" -- list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens     
''':• "ui-config" -- list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens'''    
* checked against existence
* checked against existence
* if exist, push the values of 'allow first life' into 'rv' at key 'ui-config'
* if exist, push the values of 'allow first life' into 'rv' at key 'ui-config'
Line 356: Line 356:
     {'ui-config' => {'allow_first_life' => if allow first life} }
     {'ui-config' => {'allow_first_life' => if allow first life} }


:• "login-flags" -- unknown
''':• "login-flags" -- unknown'''
:• "global-textures" unknown
''':• "global-textures" unknown'''


=== Response ===
=== Response ===

Revision as of 17:48, 27 February 2008

Second Life Login API Strawman

This is a work in progress. Also see a similar Strawman by AWG: AWG_flows_login Innitial meeting with AWG to request feedback on protocol: Feedback Chat-log, 19 Feb 2008


Introduction

This page attempts to merge Authentication_Flow with Current_login_protocols and adds additional protocol changes to fit with Agent_Domain#How_login_works

The proposed login involves several steps. First, the client POST's an LLSD-HTTP message to the Second Life authentication server, getting back a seed-capability to the agent domain server for granting additional capabilities. Next, the client requests capabilities for logging in (establishing presence) to the agent domain, connecting to a region, and doing the initial handshake as done by the legacy login method. Future improvements will involve factoring out additional capabilities from the legacy login server. Finally, the client invokes these capabilities one by one. The client logs into the Agent Domain by POST'ing to the granted login capability and parsing the returned value. It establishes connection with a region to connect to by POST'ing to the be_in_world capability.

The legacy login parameters are all "structs": key, value pairs. All keys and values are simple key, value pairs, except the value associated with "options" which is an array of zero or more character strings. The order of the required structs doesn't seem to matter. Likewise, the character strings in the options array may appear in any order. Insert non-formatted text here

Definitions

Seed Capability

The current Login Seed Capability is a Capability associated with the simulator you are logging into. It should not be confused with the Seed-Capability proposed for the new protocols.

Agent Seed Capability

This is a newly introduced capability associated with the agent host as part of the agent domain. This is different from the previously mentioned seed-capability, which associates with the sim host as part of the region domain.


Conventions

On this page the following conventions are used:

"in quotes is a literal string"
[ represents a list of choices | separated by a vertical bar ]
< represents a value which can be substituted by an appropriate string described inside >
'represents a string that must be quoted, but how will be implementation specific' for example in LSL "" denotes a string and " will be used in place of the single quote (').
+ means to concatenate the two parts, though how will be implementation specific, for example + can be used to concatenate strings.


Login Flow

  1. *Viewer sends credentials to the Login Service #Login_Web_Service
  2. Login Service authenticates and sets up and queries for presence:
    • Queries the agent data from the Agent Store.
    • Finds an agent host, POST's agent presence checking for already online
    • grants seed capability, which lives on an agent host
  3. *Viewer requests capabilities needed for login via received seed capability. #Seed_Capability
  4. *Viewer Polls Agent Host for messages via long-poll #poll_for_messages_Capability
  5. *Viewer invokes other capabilities for initial information retrieval:
    1. *Viewer Asks Agent Host to notify buddies and get buddy list #buddy_list_Capability
    2. *Viewer retrieves initial inventory. #inventory_Capability
    3. *Viewer retrieves gestures. #gestures_Capability
    4. *Viewer retrieves event categories. #events_Capability
    5. *viewer retrieves classifieds. #classified_Capability
    6. *Viewer retrieves UI configurations. #ui_config_Capability
    7. *Viewer retrieves global textures. #global_textures_Capability
    8. *Viewer retrieves initial wearables. #wearables_Capability
    9. *Viewer requests initial god powers. #god_connect_Capability
    10. *Viewer retrieves inital outfit information. #initial_outfit_Capability
    11. *Viewer sets some initial login flags #login_flags_Capability
  6. *(future) Viewer can send instant messages before being in world. #instant_message_Capability
  7. *Viewer asks agent host to rez the avatar inworld via capability granted by agent domain. #be_in_world_Capability
  8. Agent host forwards request to region domain, finding a region to rez the avatar
  9. Agent host establishes session with region host, which gives back a seed capability to the client
  10. *Viewer invokes region seed capability

#legacy_login_Capability remains for backwards compatibility purposes.

Login Web Service

Client --> public Login Server: "Here is my credential, and optional agent identity desired" Second Life Login Server: https://login.agni.secondlife.com/app/login/

Required Parameters

   { 'credential': { 'type': 'agent',
                     'first_name': <first>,
                     'last_name': <last>,
                     'password': '$1$' + <passwd_md5> } }

OR (future)

   { 'credential': { 'type': 'account',
                     'account_name': <IBM>,
                     'password': '$1$' + <passwd_md5> } }

OR (future)

   { 'credential': { 'type': 'openid',
                     'url': <URL> } }

OR (future)

   { 'credential': { 'type': 'agent',
                     'first_name': <first>,
                     'last_name': <last>}}

which will need to a challenge from the auth system.

Optional Parameters

Optionally, specify which account you want this credential to log you into

   { 'credential': { 'type': 'agent',
                     'first_name': <first>,
                     'last_name': <last>,
                     'password': '$1$' + <passwd_md5> },
     'first_name': <first>,
     'last_name': <last> }

Response

Response Codes : Response 200 : Successful authentication.

   { 'agent seed-capability' : <url> -- agent domain seed capability] }

4xx : If this credential has more than one account linked to it, and no specific account was specified in the optional parameters, the response will list a set of accounts to choose from.

   { 'reason': 'select account',  -- reason why authentication failed
     'accounts' : [ { 'first_name' : <first>, 'last_name' : <last> },
                    { 'first_name' : <first>, 'last_name' : <last> },
                    ... ] }

4xx : Unsuccessful authentication due to need for more information.

   { 'reason': 'tos'|'critical'|'more info',  -- reason why authentication failed
     'redirect' : <url>  } -- URL to visit to get more information on how to proceed

Other reasons:

   * no agent
   * bad identity and authentication information
   * agent not enabled (banned)

5xx : Server unavailable.

   { 'reason': 'generic' }

Seed Capability

Client -> Agent Host (via seed cap): "I want cap X"

  • This service supports named capabilities for the agent domain requested by the client

Required Parameters

Map of named capabilities to Options

   { <capability name> : { 'enabled' : 'true' | 'false' },
     <capability name> : { 'enabled' : 'true' | 'false' },
     ..., etc. ]
   <- Ok, here's the cap to do X
   -or-
   <- Bzzzp, you don't get to do X

Response

Map of capability name to capability URL:

   { <capability name> : <url>, <capability name> : <url>, ... etc. }

Example: Basic Login Capabilities

POST data:

   { 'establish_presence' : { 'enabled' : 'true' },
     'inventory' : { 'enabled' : 'true' },
     'non_existent_cap' : { 'enabled' : 'false' },
     'be_in_world' : { 'enabled' : 'true' } }

Response value:

   { 'establish_presence' : <cap GO>, 'inventory' : <cap I>, 'be_in_world' : <cap CTR> }

poll_for_messages Capability

Viewer -> Agent Host (via cap): "I'd like to stay online and receive messages"


buddy_list Capability

Viewer -> Agent Host (via cap): "I'd like to notify my buddies and get my buddy list"


inventory Capability

Viewer -> Agent Host (via cap): "I'd like to list my inventory" Handles these legacy login options: Covers legacy login options: "inventory-skeleton" -- "starter kit" inventory (?)

  • "inventory-root" - folder_id of root folder
• "inventory-lib-root" -- unknown
• "inventory-lib-owner" -- unknown
  • "inventory-skeleton"
  • "inventory-skel-targets"
• "inventory-skel-lib" -- LL supplied library of inventory items
  • "inventory-targets


gestures Capability

Viewer -> Agent Host (via cap): "I'd like to list my gestures" Covers legacy login options:

• "gestures" -- refers to the list of UUIDs that an avatar will perform: item_id, asset_id of active gestures
  • checked against existence
  • if exist, get g.item_id and g.asset_id from user_gesture_active g and user_inventory_item if they exist in both
  • push these values into 'rv' at key 'gestures'
   {'gestures' => {gesture item_id, gesture asset_id}
                  {gesture item_id, gesture asset_id}
                  {gesture item_id, gesture asset_id} ....}

events Capability

• "event_categories" -- list of different event categories

Covers legacy login options: "event_notifications"

  • post webservices for query_cache_url "event_categories" [1]
  • push the result to array 'rv' at key 'event-_categories'
   {'event_categories' => {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)}....}

classified Capability

Viewer -> Agent Host (via cap): "I'd like to list my classified categories" Covers legacy login options: "classified_categories"


ui_config Capability

Viewer -> Agent Host (via cap): Handles these login options:

(allow-first-life?)

Covers legacy login options: "ui-config"

• "ui-config" -- list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens
  • checked against existence
  • if exist, push the values of 'allow first life' into 'rv' at key 'ui-config'
   {'ui-config' => {'allow_first_life' => if allow first life} }

global_textures Capability

Viewer -> Agent Host (via cap): "I'd like to download global textures for caching" (This might be dead code) Covers legacy login options: "global-textures"


wearables Capability

Viewer -> Agent Host (via cap): "I'd like to get my wearables" Covers legacy login options: "wearables"


god_connect Capability

Viewer -> Agent Host (via cap): "I'd like to get my god powers" Covers legacy login options: "god-connect"


initial_outfit Capability

Viewer -> Agent Host (via cap): "I'd like to get my initial outfit" Covers legacy login options: "initial-outfit"


login_flags Capability

Viewer -> Agent Host (via cap): "I'd like to set some flags" Covers legacy login options: "login-flags"


instant_message Capability

(future) Viewer -> Agent Host (long poll to cap EQ): "Give me the events"

  • See Long Poll and Event Queue

Response

Array of pending messages (IMs, Group Notice, etc...)


be_in_world Capability

Viewer -> Agent Host (via cap LBIW): "I'd like to be in region Z (legacy method)"

  • Agent host asks region domain which SIM to send the viewer to
  • Agent host establishes session with region host, which gives back a seed capability to the client
  • Simulator sets legacy presence
  • Responds with all the legacy stuff to connect to region Z

Required Parameters

• "location": ["first" | "last" | "specify" ]
• "region":
• "remember_password": [1 | 0] -- boolean value indicating whether password should be remembered?

Response

  • Information returned: agent id, session id, secure session id, sim ip, sim port, global location, some inventory info.
       (IP:port for UDP message system, seed cap from region)
  • Most IDs are UUIDs (agent id, session id, and secure session id, for example)
  • Agent ID == User ID Unique and Persistent.

legacy_login Capability

  • Viewer -> Agent Host (via cap LL): "I'd like to log in using the legacy login protocols"

The following is a direct dump from Current_login_protocols

[2] -- libsl login page, includes sample code.

Required Parameters

The following explains the standard key value pairs, with an explanation of "options" at the end:

• "first": <first> -- first name of the avatar.
• "last": <last> -- last name of the avatar.
• "passwd": '$1$' + <passwd_md5> -- the avatar password encrypted using MD5 encryption.
• "start": ["first" | "last" | <specific location> ] -- attempt to log in to this sim, though if it is full or not available, or the agent is not allowed, another sim will be selected by the grid from its list of choices. "First" means home location. If home is filled then the grid will try last. If last is filled and home is set, the grid will try home. In either case the last choice will be from a list of telehubs. For a log in to a specific location the format is "uri:<existing region name>&<x>&<y>&<z>".
• "channel": <channel name> -- the name of the client. Used to differentiate official viewers from third party clients.
• "version": <version string> -- version number of the client.
• "platform": ["Lin" | "Mac" | "Win"] -- the platform of the client.
• "mac": <MAC Address> -- the MAC address associated with the client's computer.
• "options": <optional_login> -- optional array of character strings. (See below)
• "id0": "00000000-0000-0000-0000-000000000000" -- hardware hash (based on the serial number of the first hard drive in Windows) used for uniquely identifying computers.
• "agree_to_tos": ["true" | "false" | ""] -- whether or not the user has agreed to the Terms of Service.
• "read_critical": ["true" | "false" | ""] -- whether or not the user has read important messages such as Terms of Service updates.
• "viewer_digest": "00000000-0000-0000-0000-000000000000" -- MD5 hash of the viewer executable, only relevant when the channel is set to an official Second Life viewer.

Optional Parameters

Zero or more of the following character strings may appear in any order in the array following the "options" keyword:

:• "inventory-root" -- refers to the UUID of the root inventory folder in the client's inventory window

  • folder_id of library root inventory lib (retrieved from inventory database)
    • generate one if folder_id does not exit.
  • check aganst existence and push folder_id value into inventory_root
  • push inventory-root into array 'rv'
  {'inventory-root' => {folder_id' => 'UUID of Folder ID'} }    

:• "inventory-skeleton" -- "starter kit" inventory: name, folder_id, parent_id, type_default, version of all folders

  • create an array of 'inv'
  • get name , folder_id, parent_id from user_inventory_folder according to the given agent_id and push them one by one into 'inv'
  • push the 'inv' into the 'rv' array at key "inventory-skeleton"
   {'inventory-skeleton' =>  {'name, folder_id, parent_id'},{'name, folder_id, parent_id'} ,{'name, folder_id, parent_id'} .... } 

:• "inventory-lib-root" -- folder_id of library root inventory folder

  • assign inventory_lib_owner a hardcode value if inventory-lib-root exists.
  • check aganst existence and also check if inventory_lib_owner has value
  • create array 'inventory_root' and
  • get the folder_id according to the give agent_id (from inventory-lib-owner)
  • push the folder_id into 'rv at key 'inventory-lib-root' if folder_id has value
   {'inventory-lib-root' => 'folder_id'}

:• "inventory-lib-owner" -- agent_id of owner for inventory lib

  • checked against existence and check if inventory_lib_owner has value
  • if both true then create an array of 'owner' and push agent_id into the array
  • push "agent_id" into the 'rv' array at "inventory-lib-owner" if
  {'inventory-lib-owner' => {'agent_id' => 'agent id uuid '}}
  

:• "inventory-skel-lib" -- LL supplied library of inventory items: same as inventory-skeleton, except global inventory

  • checked against existence and check if inventory_lib_owner has value
  • get f.name , f.folder_id, f.parent_id f.type_default f.version from user_inventory_folder f according to the given f.agent_id and push them one by one into 'inv'
  • push the 'inv' into the 'rv' array at key "inventory-skeleton"
   {'inventory-skeleton' =>  {'f.name, f.folder_id, f.parent_id, f.type_default, f.version '}, 
                             {'f.name, f.folder_id, f.parent_id, f.type_default, f.version'} ,
                             {'f.name, f.folder_id, f.parent_id, f.type_default, f.version'} .... } 

:• "gestures" -- refers to the list of UUIDs that an avatar will perform: item_id, asset_id of active gestures

  • checked against existence
  • if exist, get g.item_id and g.asset_id from user_gesture_active g and user_inventory_item if they exist in both
  • push these values into 'rv' at key 'gestures'
   {'gestures' => {gesture item_id, gesture asset_id}
                  {gesture item_id, gesture asset_id}
                  {gesture item_id, gesture asset_id} ....}
    

:• "event_categories" -- list of different event categories

   {'event_categories' => {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)}....}

:• "event_notifications" -- list of events for which you have notifications

  • checked against existence
  • if exist, get still available event_id,event_name, event_desc, event_date, grid_x, grid_y, x_region, y_region from event_notification n and
  • push these values into 'rv' at key 'gestures'
   {'gestures' => {event_id, event_name,event_desc, event_date, grid_x, grid_y, x_region, y_region }
                  {event_id, event_name,event_desc, event_date, grid_x, grid_y, x_region, y_region }
                  {event_id, event_name,event_desc, event_date, grid_x, grid_y, x_region, y_region } ....}

:• "classified_categories"

   {'event_categories' => {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)},
                          {category_id (int), category_name(string)}....}

:• "buddy-list" -- agent_id, granted rights and given rights of everyone that is your buddy

   {'buddy-list' => {buddy_id, buddy_rights_has, buddy_rights_given},
                    {buddy_id, buddy_rights_has, buddy_rights_given},
                    {buddy_id, buddy_rights_has, buddy_rights_given},....}  
           

:• "ui-config" -- list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens

  • checked against existence
  • if exist, push the values of 'allow first life' into 'rv' at key 'ui-config'
   {'ui-config' => {'allow_first_life' => if allow first life} }

:• "login-flags" -- unknown :• "global-textures" unknown

Response

The valid (non-error) value returned by the login call is in standard xmlrpc name, value format. The most important of these is the "Login Seed-Capability" discussed below (not to be confused with the new "seed capability" for the new login procedure):

Note: Values associated with the optional string parameters are preceded by a "*".
• last_name: lastname
• sim_ip: 64.129.40.58
• login-flags: [{'daylight_savings': 'N', 'stipend_since_login': 'N', 'gendered': 'Y', 'ever_logged_in': 'Y'}]
• inventory-lib-root: [{'folder_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b'}]
• event_categories: [{'category_id': 18, 'category_name': 'Discussion'}, {'category_id': 19, 'category_name': 'Sports'}, {'category_id': 20, 'category_name': 'Live Music'}, {'category_id': 22, 'category_name': 'Commercial'}, {'category_id': 23, 'category_name': 'Nightlife/Entertainment'}, {'category_id': 24, 'category_name': 'Games/Contests'}, {'category_id': 25, 'category_name': 'Pageants'}, {'category_id': 26, 'category_name': 'Education'}, {'category_id': 27, 'category_name': 'Arts and Culture'}, {'category_id': 28, 'category_name': 'Charity/Support Groups'}, {'category_id': 29, 'category_name': 'Miscellaneous'}]
• inventory-lib-owner: [{'agent_id': 'ba2a564a-f0f1-4b82-9c61-b7520bfcd09f'}]
• start_location: last
• seconds_since_epoch: 1195447316
• message: -=- http://blog.secondlife.com -=- Visit the Official Linden Blog for the latest world status updates!
• first_name: first_name
• inventory-skeleton:
[{'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 6, 'name': 'Calling Cards', 'type_default': 2, 'folder_id': '072ce32a-e091-42d4-ae23-251553011f8b'}, {'parent_id': 'a78d58ec-a457-45f2-bec2-090a9f031dc2', 'version': 13, 'name': 'Male Gestures', 'type_default': -1, 'folder_id': '0d77a3c2-fbba-5172-bd23-cec8735fb029'}, {'parent_id': 'a78d58ec-a457-45f2-bec2-090a9f031dc2', 'version': 28, 'name': 'Common Gestures', 'type_default': -1, 'folder_id': '1be3f1d4-4db4-9849-8c5f-7d54d6866f93'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 7, 'name': 'Body Parts', 'type_default': 13, 'folder_id': '2271d4db-9254-49de-b544-d66eb1efd19a'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 4, 'name': 'Notecards', 'type_default': 7, 'folder_id': '2e706667-00c6-4a9a-95f1-83c65a08f893'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 8, 'name': 'Clothing', 'type_default': 5, 'folder_id': '3cbf18ff-ed8d-4e1b-ba25-9ee1
e4225b04'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Scripts', 'type_default': 10, 'folder_id': '494154ea-ddc6-433d-a512-06a102218566'}, {'parent_id': '00000000-0000-0000-0000-000000000000', 'version': 2, 'name': 'My Inventory', 'type_default': 8, 'folder_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Photo Album', 'type_default': 15, 'folder_id': '551c87dd-8479-4129-985e-ad5b3a956807'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 8, 'name': 'Landmarks', 'type_default': 3, 'folder_id': '7036e1f1-f45d-4dbf-9953-7fd039aaf372'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Sounds', 'type_default': 1, 'folder_id': '854ad656-888d-4072-b21c-9f81ad4b573a'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Lost And Found', 'type_default': 16, 'folder_id': '8af1b224-c0d4-4062-a57e-ceaa0b80739a'}, {'parent
_id': '3cbf18ff-ed8d-4e1b-ba25-9ee1e4225b04', 'version': 45, 'name': 'Male Shape & Outfit', 'type_default': -1, 'folder_id': '95da8586-07f4-1113-56c7-ae3c2f3fa0b7'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 3, 'name': 'Gestures', 'type_default': 21, 'folder_id': 'a78d58ec-a457-45f2-bec2-090a9f031dc2'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 29, 'name': 'Objects', 'type_default': 6, 'folder_id': 'aa8915e6-f0ea-4679-9c7a-d28f5eee2b22'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Animations', 'type_default': 20, 'folder_id': 'bb4aa79e-0cd0-4284-bf77-321332d62739'}, {'parent_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b', 'version': 4, 'name': 'Trash', 'type_default': 14, 'folder_id': 'e87e122f-8155-bf41-3a84-ad7614737b05'}, {'parent_id': '3cbf18ff-ed8d-4e1b-ba25-9ee1e4225b04', 'version': 22, 'name': 'sai', 'type_default': -1, 'folder_id': 'eef687d0-7493-3139-1644-1fe676e7fb86'}, {'parent_id': '547448bd-4b66-4
bc9-bb87-2dc5c7a1fa8b', 'version': 1, 'name': 'Textures', 'type_default': 0, 'folder_id': 'f8e3725c-a294-4fce-842e-27e1b830c32b'}]
• circuit_code: 245160577
• sim_port: 13005
• buddy-list: [{'buddy_id': '3163a2e6-0be1-4660-8412-61345692f55e', 'buddy_rights_given': 1, 'buddy_rights_has': 1}, {'buddy_id': '5b20e809-4ec4-47e2-9141-83bf7878afa7', 'buddy_rights_given': 1, 'buddy_rights_has': 1}, {'buddy_id': 'aaabdfb6-8438-4485-b98c-20b6416d0a69', 'buddy_rights_given': 1, 'buddy_rights_has': 1}, {'buddy_id': 'b3ff9eb4-ca7d-4dae-bd3c-bfbed6e3fbac', 'buddy_rights_given': 1, 'buddy_rights_has': 1}, {'buddy_id': 'eeaedeb6-c702-472a-b725-e4492095c69a', 'buddy_rights_given': 1, 'buddy_rights_has': 1}]
• inventory-skel-lib:
[{'parent_id': '5b064c39-607c-2ced-d5d4-a124a267bbb7', 'version': 2, 'name': 'Sculpt Textures', 'type_default': -1, 'folder_id': '00a9afce-5661-a7a0-c9b6-a79ebc0aaa91'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 11, 'name': 'Misc Textures', 'type_default': -1, 'folder_id': '089ea65b-4ecf-f16d-1290-95d36588b80d'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Irish Lass', 'type_default': -1, 'folder_id': '15cafc5d-b7f9-75ad-938a-49aebd99c27c'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 1, 'name': 'Atoll continent stuff', 'type_default': -1, 'folder_id': '1a189e4c-71df-be20-f67d-93eea2170b09'}, {'parent_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0', 'version': 69, 'name': 'Other Gestures', 'type_default': -1, 'folder_id': '1ace1c79-4125-fcbe-bf02-cf84514e0f78'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 1, 'name': 'Animations', 'type_default': 20, 'folder_id': '1b80d6c4-9
64f-bece-8b2d-f8af13fb4915'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 6, 'name': 'Body Parts', 'type_default': 13, 'folder_id': '1bfc19fc-6a63-3dd6-ad50-161711941610'}, {'parent_id': '00000000-0000-0000-0000-000000000000', 'version': 92, 'name': 'Library', 'type_default': 8, 'folder_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 16, 'name': 'Female Shape & Outfit', 'type_default': -1, 'folder_id': '1c7e4cf3-675d-97a5-7ea6-6c61e99e4a25'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 9, 'name': 'Landscaping', 'type_default': -1, 'folder_id': '1d92e88c-698b-1493-2d67-39e59536bd04'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 1, 'name': 'Road Textures', 'type_default': -1, 'folder_id': '1e986366-0cb1-c557-7784-914dfe334bc3'}, {'parent_id': '1bfc19fc-6a63-3dd6-ad50-161711941610', 'version': 1, 'name': "Hair - Women's", 'type_default': -1, 'folder_id': '1f10e3f5-
ed21-49f0-5eb7-c8e47f4e556d'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Nightclub Female', 'type_default': -1, 'folder_id': '21617ba6-3be6-ae19-5bea-187271ba98e6'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Ruth', 'type_default': -1, 'folder_id': '223e8dee-a7ce-ee79-6755-09c210ea6a73'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Cybergoth Female', 'type_default': -1, 'folder_id': '22bd7b4e-b32d-91a3-cd69-e50ed03ce4d8'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 1, 'name': 'Business', 'type_default': -1, 'folder_id': '240942f6-362d-59c3-412c-776e0e09c9af'}, {'parent_id': '68b1584f-bad8-6594-0dcb-3da2471c0ae2', 'version': 1, 'name': 'Particle System', 'type_default': -1, 'folder_id': '257acf7b-fc86-f4ef-8244-38245d609918'}, {'parent_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name': 'Terrain Textures - Islands', 'type_default': -1, 'folder_id': '
269c4fca-c0fb-a765-2f2c-a2e09dfb4b32'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 4, 'name': 'Telehubs', 'type_default': -1, 'folder_id': '299124cf-b626-f13e-edb8-df6debc5e25a'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 1, 'name': 'Dominos', 'type_default': -1, 'folder_id': '2b28a8dc-6ced-600b-6158-26171a7b44ad'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 1, 'name': 'Sounds', 'type_default': 1, 'folder_id': '2bb04b35-a411-1682-85f1-ef97c0ab5621'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Little Red Riding Hood', 'type_default': -1, 'folder_id': '2dd24596-8706-1771-a383-865bcd82cfa4'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 8, 'name': 'Gestures', 'type_default': 21, 'folder_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'City Chic Female', 'type_default': -1, 'folder_id': '3092d8ff-0
d06-64b6-84b2-814e59523d81'}, {'parent_id': '5b064c39-607c-2ced-d5d4-a124a267bbb7', 'version': 3, 'name': 'Surface Textures', 'type_default': -1, 'folder_id': '311caaa4-5a1c-235a-5e1f-5e395bef71bc'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Groupie Chick', 'type_default': -1, 'folder_id': '31919c06-855f-509f-cd92-2588229593f4'}, {'parent_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0', 'version': 1, 'name': 'Male Gestures', 'type_default': -1, 'folder_id': '3550b164-9362-46b8-d377-f0064c8db3b8'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 23, 'name': 'Floor Tile', 'type_default': -1, 'folder_id': '38fc02ce-9a62-8f80-2dc6-1caaa92f52be'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'City Chic Male', 'type_default': -1, 'folder_id': '41743b67-6cde-5496-6be4-4751c684f715'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 19, 'name': 'Sculpt Prims - Examples', 'type_default': -1, 'folder_i
d': '4341aa8e-970f-cd33-51fb-4cb5b02dd387'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Goth Female', 'type_default': -1, 'folder_id': '4ffd5f38-5c7a-3a73-505f-3575951d5240'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 87, 'name': 'Clothing', 'type_default': 5, 'folder_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6'}, {'parent_id': '1bfc19fc-6a63-3dd6-ad50-161711941610', 'version': 1, 'name': "Hair - Men's", 'type_default': -1, 'folder_id': '5603b09d-0579-b03a-6f5c-d5208e79415e'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 13, 'name': 'Dirt, Sand, Ground', 'type_default': -1, 'folder_id': '579b4127-d7df-c8bf-bb73-811a618661db'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 31, 'name': 'Atoll Textures', 'type_default': -1, 'folder_id': '588a92f7-1b3c-ff87-15cd-9045c3862d52'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 17, 'name': 'Wallpaper', 'type_default': -1, 'folder_id
': '58f5cec2-8392-ac4c-c453-cb2dee1241bb'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 1, 'name': 'Sculpt Textures', 'type_default': -1, 'folder_id': '5b064c39-607c-2ced-d5d4-a124a267bbb7'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Fireman', 'type_default': -1, 'folder_id': '5c096e4e-4a41-a4ee-cf4f-e07825ea4669'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 1, 'name': 'Household', 'type_default': -1, 'folder_id': '5df84333-610d-1737-eb9d-e64f873bc91c'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Female Shape & Outfit 3', 'type_default': -1, 'folder_id': '631ea3c6-db9a-952c-4248-9ff1b756e7ca'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 151, 'name': 'Objects', 'type_default': 6, 'folder_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 78, 'name': 'Fabric', 'type_default': -1, 'folder_id': '66f
abba2-ecae-bd3d-d426-8bdcd145c01c'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 10, 'name': 'Wood', 'type_default': -1, 'folder_id': '677ede83-2384-1d86-2b1f-29744dc216a6'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 1, 'name': 'Waterfalls', 'type_default': -1, 'folder_id': '68b1584f-bad8-6594-0dcb-3da2471c0ae2'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 51, 'name': 'Avatar Body and Clothing Templates', 'type_default': -1, 'folder_id': '6d83a4c1-98af-8912-3154-6028a4137467'}, {'parent_id': '2bb04b35-a411-1682-85f1-ef97c0ab5621', 'version': 1, 'name': 'Gesture sounds', 'type_default': -1, 'folder_id': '744aa72b-eb07-02ed-b344-0f81a16f073a'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Nightclub Male', 'type_default': -1, 'folder_id': '7f16b6a5-0958-3244-d90a-82def97efd57'}, {'parent_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name': 'Terrain Textures - Default Set', 'type
_default': -1, 'folder_id': '809d37d7-9a9a-da85-08ea-254ba338bf3b'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 3, 'name': 'Orientation stations w/ notecards', 'type_default': -1, 'folder_id': '8100d5db-cb56-bc75-0710-aa6b6e1ae162'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 7, 'name': 'Furry Male Outfit', 'type_default': -1, 'folder_id': '8166a9cc-443d-c43e-f7af-f3c627b40036'}, {'parent_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0', 'version': 37, 'name': 'Common Gestures', 'type_default': -1, 'folder_id': '86814812-7bce-bc61-2c33-d508ca7b8dcd'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 16, 'name': 'Landmarks', 'type_default': 3, 'folder_id': '88ede071-ba7c-8288-5f1d-4cbb202117a5'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 4, 'name': 'Hair Textures', 'type_default': -1, 'folder_id': '8bdc580f-d8e5-0cc8-a125-e4d1eda19c27'}, {'parent_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name
': 'Terrain Textures - NW Coastal', 'type_default': -1, 'folder_id': '90c11ca9-fea3-58a2-72ad-07abeab0752e'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 8, 'name': 'Furry Female Outfit', 'type_default': -1, 'folder_id': '964ef3b2-ff95-3f5f-f741-a5a093582b33'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 6, 'name': 'Terrain Textures', 'type_default': -1, 'folder_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 10, 'name': 'Male Shape & Outfit', 'type_default': -1, 'folder_id': '9b6dfef7-544d-bc06-c29a-32635c929396'}, {'parent_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name': 'Atoll terrain textures', 'type_default': -1, 'folder_id': 'a18b5df1-f967-084d-f680-82b501018b1c'}, {'parent_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0', 'version': 1, 'name': 'Female Gestures', 'type_default': -1, 'folder_id': 'a3cb2e10-cf0a-8bf5-e495-16f1c4e2c30b'}, {'parent_id': '68b1584f-bad8
-6594-0dcb-3da2471c0ae2', 'version': 6, 'name': 'Particle System', 'type_default': -1, 'folder_id': 'a5012dce-abfd-8f90-ef84-61c79552054a'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 9, 'name': 'Accessories', 'type_default': -1, 'folder_id': 'abdace20-c471-df45-e6f8-731df6454547'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 270, 'name': 'Textures', 'type_default': 0, 'folder_id': 'afd25620-d379-4c16-ed03-b4a18967472c'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Male Shape & Outfit 3', 'type_default': -1, 'folder_id': 'b0529a99-bd7d-f75c-e982-a691f50fdf3d'}, {'parent_id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name': 'Terrain Textures - Winter', 'type_default': -1, 'folder_id': 'be1efbab-4aec-686f-9740-20bc7ffab541'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Cybergoth Male', 'type_default': -1, 'folder_id': 'be5a13e9-4d1b-745e-5144-b46550317e84'}, {'parent_
id': '9732c8e2-3188-1e04-d0cf-6fe957ea4979', 'version': 1, 'name': 'Terrain Textures - Primitive Island', 'type_default': -1, 'folder_id': 'c1b1d0cd-87a3-aafb-e0e7-681bafddd66e'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Prince Charming', 'type_default': -1, 'folder_id': 'c6d679a4-9cee-0bb7-17c1-fe94f1e701db'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 5, 'name': 'More Outfits', 'type_default': -1, 'folder_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 5, 'name': 'Trees, plants and grasses', 'type_default': -1, 'folder_id': 'cd29debb-868e-35c8-41a2-93594c54d772'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 4, 'name': 'Goth Male', 'type_default': -1, 'folder_id': 'd05cd8f5-381e-fd60-8778-4d2974219319'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 6, 'name': 'Harajuku Female', 'type_default': -1, 'folder_id': 'd0a747f1-f7c3-
8c0c-be12-20df046f2277'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 20, 'name': 'Buildings', 'type_default': -1, 'folder_id': 'd6666744-7931-9888-027f-61f90186eb1e'}, {'parent_id': 'c9ea5076-9334-d847-f072-1cf56a1d52d8', 'version': 1, 'name': 'Gi', 'type_default': -1, 'folder_id': 'd902ac38-479c-245b-22f0-fdc3ea2ffcd0'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 26, 'name': 'Notecards', 'type_default': 7, 'folder_id': 'dc306e42-78b7-8e3c-e8d0-69aad9a9f39b'}, {'parent_id': '51ba6e1b-e503-9b98-d9df-b0664d5457d6', 'version': 3, 'name': 'Harajuku Male', 'type_default': -1, 'folder_id': 'e09c947b-0a2a-c383-d55a-68f93ec9d4f2'}, {'parent_id': '6371a71c-7fc2-c38f-f87c-f0933868fd73', 'version': 1, 'name': 'Walkways', 'type_default': -1, 'folder_id': 'e7b66ed2-a8ce-3e59-1f3e-83788e1fe866'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 24, 'name': 'Photo Album', 'type_default': 15, 'folder_id': 'eb2010ea-1f78-a93b-ae89-217345b47fd1
'}, {'parent_id': 'afd25620-d379-4c16-ed03-b4a18967472c', 'version': 1, 'name': 'Rock', 'type_default': -1, 'folder_id': 'ede89e78-9eed-d4a4-c320-2db92649eba5'}, {'parent_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b', 'version': 1, 'name': 'Scripts', 'type_default': 10, 'folder_id': 'f7cfde4d-3b16-54b3-2169-72d390d1065e'}, {'parent_id': '2e4ded39-d0d7-87fb-27e9-ca1bd01fd6c0', 'version': 4, 'name': 'Speech Gestures', 'type_default': -1, 'folder_id': 'fd05f2bf-5d8a-ffb3-40d4-48a9b9084c3c'}]
• secure_session_id: fdb501ca-22f1-4470-b515-2650f54b8117
• look_at: [r-0.85717299999999996274,r0.51502899999999995906,r0]
• classified_categories: [{'category_id': 1, 'category_name': 'Shopping'}, {'category_id': 2, 'category_name': 'Land Rental'}, {'category_id': 3, 'category_name': 'Property Rental'}, {'category_id': 4, 'category_name': 'Special Attraction'}, {'category_id': 5, 'category_name': 'New Products'}, {'category_id': 6, 'category_name': 'Employment'}, {'category_id': 7, 'category_name': 'Wanted'}, {'category_id': 8, 'category_name': 'Service'}, {'category_id': 9, 'category_name': 'Personal'}]
• gestures:
[{'asset_id': '43417d10-a2f7-7727-6fd4-dd7f04ad7a13', 'item_id': '0405171b-190e-6e35-dedb-8be1eddfe609'}, {'asset_id': 'af2b8320-e579-2c41-b717-969759aeb3ca', 'item_id': '06d995f7-8184-d4c8-51d2-f99faadf6dd3'}, {'asset_id': '40b92916-8055-2562-008f-58924bd0e03c', 'item_id': '0ff437b5-4362-814e-7759-b2cdac564afd'}, {'asset_id': '76f7ced2-4f91-31c8-ff7d-e76b19abfa40', 'item_id': '220fef18-4ab8-2575-f6c1-af3f0d8160f8'}, {'asset_id': 'fb262981-4295-f048-c280-629081bf3b6b', 'item_id': '2628556d-57b0-3a26-fa79-b517ef16192f'}, {'asset_id': '6212ffdd-d447-a92f-18f3-8cb94a799d83', 'item_id': '347dc0a9-4272-399b-450e-15d4d78c52d6'}, {'asset_id': 'c63ac707-6325-14c8-d681-54b81d0dff77', 'item_id': '34f897bf-8922-1e8c-fdac-98a0f5a9eb0b'}, {'asset_id': 'd918a0d8-7291-ce83-762f-3f68dcc7402d', 'item_id': '37e5c513-149a-1a0a-ef47-c831548a30dd'}, {'asset_id': 'dbd054f1-132b-cc22-e46a-bad83c230c91', 'item_id': '3db7f1b9-b1f9-9fd2-3f65-d3e21d24b58c'}, {'asset_id': '0247dbfa-f37e-64ab-d09f-267888
4c7f4a', 'item_id': '3e65ec68-bdba-af60-d798-841a075cf17f'}, {'asset_id': '5a68100b-e6ba-5170-649c-80beddc67035', 'item_id': '44bf7318-21f4-32ad-d185-4e49e1a321de'}, {'asset_id': '865c5fe0-aafb-671a-8ad5-778beb24b6f8', 'item_id': '47a5b60f-0a2e-fda6-4bf4-1ff4566cf16a'}, {'asset_id': 'ea9ab69b-c2c7-3e18-a50b-37a9cfe457cd', 'item_id': '49b0ef41-9a33-067b-e9b7-dd2623db29eb'}, {'asset_id': '8868cfa3-5b82-97ab-dc38-ded906f7fd90', 'item_id': '634264c1-e98e-09a8-4782-c94bd2860c49'}, {'asset_id': '0401dc30-0fdd-1fc3-3e51-c683fe117184', 'item_id': '640b7215-02a9-e514-52c5-82a142f2e905'}, {'asset_id': '00b48fa0-ac43-fadf-d061-6b726a24a90a', 'item_id': '680923c5-100c-36b7-c644-c0d7a05913a0'}, {'asset_id': '52d9684f-2dcf-c252-2360-186b4236d07e', 'item_id': '6a972484-7490-fe5c-e526-ba75c111e37c'}, {'asset_id': '8b753e16-bd7d-2bb3-7765-671b7b31e77c', 'item_id': '6e548cd2-9c74-6112-ef7c-fdc38db91770'}, {'asset_id': 'f2483d55-bc31-38c0-65b2-9f7e87fce5c4', 'item_id': '7d65f0e3-1fd9-c81f-a61e-5de356f0eb
47'}, {'asset_id': '0eeb5ef7-10dd-4e4a-11a5-d053011fcdf2', 'item_id': '7e783987-2367-5276-bd27-78ac2667fef9'}, {'asset_id': '4b30f435-499f-32fe-f2a0-7e7bce8d881d', 'item_id': '7f05c4bf-a75c-847a-c018-bca16800b400'}, {'asset_id': 'aca78492-0487-03ec-4eb5-5c8e76c837e1', 'item_id': '7fffb1ef-38b5-82da-3076-4e9c0f443b2e'}, {'asset_id': '76d30ee1-c369-12ec-8dbc-9cf2f51120ff', 'item_id': '80f8c94a-a2d2-01eb-32bd-4cf1fe830383'}, {'asset_id': '0813d01a-d3d3-32a4-48a3-26b6e1e01e39', 'item_id': '83c4e26a-99e2-8f5e-1763-033a3a55d4f1'}, {'asset_id': 'fc3de4b8-bd3e-662b-934c-b72714dab5bf', 'item_id': '88754d75-93c6-c8e6-5fe8-7b9421b977b3'}, {'asset_id': 'b5ea617e-47cf-612b-2d99-8c6f6dcac218', 'item_id': '9148e1eb-e00c-2ef2-8bde-c3906baf885c'}, {'asset_id': 'a6a09cb1-0845-5ec0-051e-16bb79b30ddf', 'item_id': '97484726-f41d-9108-7678-93ba974d81c7'}, {'asset_id': 'ba38eeb2-d35f-0a07-0c04-0eb42fcc6010', 'item_id': '9ac86c71-c02b-ed95-6577-36eee67b7b73'}, {'asset_id': 'b57c996d-cb06-43c8-749d-e9ce361f172
e', 'item_id': '9bbbb8a1-2c75-87de-beed-eb15f5d74294'}, {'asset_id': '0a3336cf-3ad1-012a-91c2-5b5620aaaef3', 'item_id': '9bc6a34e-50a0-2248-2717-8a5524910ad0'}, {'asset_id': '1910ffbd-096c-5eb7-19f5-8c99ab6a748c', 'item_id': 'a6087696-9d56-e1c6-eca2-8bacdbf71e3c'}, {'asset_id': '04608b19-1668-399c-5790-b7df8d9dc9cf', 'item_id': 'a9d1a261-9632-6920-c0d7-2b3dfd9442c0'}, {'asset_id': '66ecd9bd-22e1-2633-f41e-ad1a38205662', 'item_id': 'ada896bc-52ae-f237-2a75-4e75179cceb1'}, {'asset_id': 'e7584536-86f2-c962-405d-d14adff71f38', 'item_id': 'adc59624-b875-de11-2bfe-236a2c610b8f'}, {'asset_id': '97c5742d-1d74-9408-2bae-9738a9e9d084', 'item_id': 'b1342b43-060d-492c-41a6-be0439839564'}, {'asset_id': '44a87e64-2d78-14b7-1cde-ac0f5031621f', 'item_id': 'c5853f4c-855f-4013-ce92-aabc59f1b9d8'}, {'asset_id': '2d03fd78-92fc-ca52-aabb-a4904e1339d1', 'item_id': 'e6fe4144-926c-ef17-c009-93227c7b159a'}, {'asset_id': 'b6f560d1-e2ad-24df-344c-2943c47a6775', 'item_id': 'f6f78510-02e7-526c-b35d-53cfd0b30361'},
 {'asset_id': 'fa743da9-7e6e-d88e-3e4f-143dcb4fc01b', 'item_id': 'f92824f0-8129-b36d-f5b2-652762433e0a'}, {'asset_id': '0ce71257-7a07-257f-f023-fd68575a3a4e', 'item_id': 'fa184fed-6946-ec33-5fef-bcea29e2c8d7'}]
• inventory-root: [{'folder_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b'}]
• agent_id: d5f403c7-7981-425d-a0b5-c65a3d0a4693
• inventory_host: inv12-mysql
• ui-config: [{'allow_first_life': 'Y'}]
• global-textures: [{'sun_texture_id': 'cce0f112-878f-4586-a2e2-a8f104bba271', 'cloud_texture_id': 'fc4b9f0b-d008-45c6-96a4-01dd947ac621', 'moon_texture_id': 'd07f6eed-b96a-47cd-b51d-400ad4a1c428'}]
• region_y: 244992
• region_x: 247808
• seed_capability: https://sim2054.agni.lindenlab.com:12043/cap/d373fdc9-d275-e484-3ad2-4a9b231f4e34
• agent_access: M
• session_id: 65a7213a-723a-4fcf-baca-7b247c4b43c5
• event_notifications: []
• login: true