Rights and Roles Service
Rights and
...
- Create new project rights and roles template
Get the info about a particular project rights and roles template
Copy project rights and roles template from source to target project rights and roles template
...
Roles
- Get all the available roleroles
- Get all the available rights
Create a new role - Get details of the roleUpdate the role
Delete the role - Get all project's roles assigned by right and roles template
- Make a team member part of a project by assigning a role to him
- Get the project members along with their respective roles
- Update the project role of a team member
- Remove the user from the project
Rights and Roles Service
Rights and
...
Roles
Anchor | |||
---|---|---|---|
|
...
|
Get all the available roles
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Card |
|
...
Get the list of existing project rights and roles templates
...
id | bimGetTeamRightsAndRolesTemplates |
---|
Card | ||||
---|---|---|---|---|
| ||||
Resource: projectsrightsrolestemplates URL: https://api-stage.bimplus.net/v2/<team_slug>/projectsrightsrolestemplates Example: https://api-stage.bimplus.net/v2/bimplus/projectsrightsrolestemplates |
Card | ||
---|---|---|
| ||
GET |
Card | ||
---|---|---|
| ||
Get all the project rights and roles templates that belongs to a team. Each team has at least one default project rights and roles template. |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
...
label | Response |
---|
|
Anchor | ||||
---|---|---|---|---|
|
Get all the available rights
Deck of Cards | ||
---|---|---|
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 OK
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
[
{
"id":"49d13da3-2acf-4f0b-b667-40fc0197585f",
"name":"My project rights and roles template",
"description":"Project rights and roles template description"
},
{
"id":"1996f9a0-fe24-4dc7-8140-0cfb98d31442",
"name":"CustomProjectRightsRolesTemplate",
"description":"Custom template for rights and roles"
},
{
"id":"482176be-84ab-4d8f-93e4-2c58863d4eae",
"name":"DefaultProjectRightsRolesTemplate",
"description":"Default template for rights and roles"
}
] |
...
Get the info about a particular project rights and roles template
Deck of Cards | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
Card | | |||||||||||||||||
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 OK
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id":"49d13da3-2acf-4f0b-b667-40fc0197585f",
"name":"My project rights and roles template",
"description":"Project rights and roles template description"
} |
...
|
...
Update a particular project rights and roles template
Deck of Cards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
...
Delete the project rights and roles template
...
id | bimDeleteTeamRightsAndRolesTemplate |
---|
Card | ||||
---|---|---|---|---|
| ||||
Resource: projectrightsrolestemplates URL: https://api-stage.bimplus.net/v2/<team_slug>/projectrightsrolestemplates Example: https://api-stage.bimplus.net/v2/bimplus/projectrightsrolestemplates/49d13da3-2acf-4f0b-b667-40fc0197585f |
Card | ||
---|---|---|
| ||
DELETE |
Card | ||
---|---|---|
| ||
Deletes the specific project rights and roles template. |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
...
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 OK
|
...
Copy content project rights and roles template from source to target project rights and roles template
...
id | bimCopyContentRightsAndRolesTemplate |
---|
...
label | Url / Resource /Json |
---|
Resource: projectrightsrolestemplates/<targetprojectrightsrolestemplates_id>/copyfrom
URL: https://api-stage.bimplus.net/v2/<team_slug>/projectrightsrolestemplates/<targetprojectrightsrolestemplates_id>/copyfrom
JSON Structure:
...
Name
...
Mandatory / Optional
...
Type
...
Description
...
name
...
will be ignored
...
string
...
Name of the project rights and roles template
...
description
...
will be ignored
...
Description of the project rights and roles template
...
Card | ||
---|---|---|
| ||
PUT |
Card | ||
---|---|---|
| ||
Updates the specified target project rights and roles template with all roles from source project rights and roles template. Note: |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": "482176be-84ab-4d8f-93e4-2c58863d4eae"
} |
...
label | Response |
---|
...
borderColor | Green |
---|---|
lang | xml |
title | Status |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id":"49d13da3-2acf-4f0b-b667-40fc0197585f",
"name":"My project rights and roles template",
"description":"Project rights and roles template description"
} |
...
Get all the available roles
...
id | bimGetAllRoles |
---|
...
default | true |
---|---|
label | URL / Resource / JSON Structure |
...
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles
Example: https://api-stage.bimplus.net/v2/best-company/roles
Optional query parameters
...
When query parameter "rights=false" is defined, the API call will returns all roles. i.e. not only roles which contains
resources and right definitions.
When query parameter is missing, the API call returns only roles which includes resources and rights definitions.
...
When query parameter customrole is defined e.g. "customrole=true", the API call will returns only roles which have value of property "customRole" equal to query parameter.
When query parameter is missing, the API call returns all roles (i.e. their customRole property can be true or false)
...
When query parameter rightsandrolestemplate is defined e.g. "rightsandrolestemplate=482176be-84ab-4d8f-93e4-2c58863d4eae",
only roles which belongs to exact rightsandrolestemplate id are returned.
Card | ||
---|---|---|
| ||
GET |
...
label | Description |
---|
Get all the available roles. Right now, we support only project based roles and custom roles.
Here is the definition of Bimplus Rights and Roles.
...
Model rights and roles are not supported yet, the project rights are used instead - meaning e.g. update model requires ProjectEdit rights
The custom roles contains also definition for which resource and rights are valid.
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
...
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 Ok
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
[
{
"id": "94a60a79-7c81-454b-8158-ffdb9a2bf4d6",
"name": "TEST1",
"customRole": true,
"resources": [
{
"id": "4e587ea1-5098-45cd-9655-15f90c16dc58",
"resource": "Layer",
"rights": [
"RoomModel"
],
"rightsAccess": [
{
"id": "52bbc329-dab3-a81c-b548-09c715786a81",
"name": "RoomModel",
"access": "Edit"
}
]
}
],
"projectRightsRolesTemplate": {
"id": "482176be-84ab-4d8f-93e4-2c58863d4eae",
"name": "DefaultProjectRightsRolesTemplate",
"description": "Default template for rights and roles"
}
},
{
"id": "391fb0fc-43ec-464c-bd18-b5223b32bd14",
"name": "TEST2",
"customRole": true,
"resources": [
{
"id": "9dae8bb5-77c1-47a6-a916-d4948583b0b9",
"resource": "Global",
"rights": [
"AllModels",
"ProjectCreate",
"AllAttributes"
],
"rightsAccess": [
{
"id": "cc3416d3-c570-4dc6-aa84-72216d3f58da",
"name": "AllModels",
"access": "Edit"
},
{
"id": "6bbc401b-7cd5-4684-a11d-e2448befb3c1",
"name": "ProjectCreate",
"access": "Edit"
},
{
"id": "99bad6fc-0539-4848-84af-62b6df31eaa3",
"name": "AllAttributes",
"access": "Edit"
}
]
}
],
"projectRightsRolesTemplate": {
"id": "482176be-84ab-4d8f-93e4-2c58863d4eae",
"name": "DefaultProjectRightsRolesTemplate",
"description": "Default template for rights and roles"
}
}
...
] |
...
Get all the available rights
...
id | bimGetAllRights |
---|
...
default | true |
---|---|
label | URL / Resource / JSON Structure |
Resource: <team_slug>/rights
URL: https://api-stage.bimplus.net/v2/<team_slug>/rights
Example: https://api-stage.bimplus.net/v2/best-company/rights
JSON Structure:
...
Name
...
Mandatory / Optional
...
Type
...
Description
...
id
...
mandatory
...
string (guid)
...
Id of the right resource type
...
resource
...
mandatory
...
string
...
The name of the right resource type
...
rights
...
mandatory
...
object
...
Dictionary of the pairs of right id together with its name
...
access
...
mandatory
...
JSON Array
...
Array of the strings represented access right. Can be combination of predefined rights "View", "Edit", "Admin"
...
Name
...
Type
...
Default value
...
Description
...
project
...
boolean
...
true
...
When query parameter "project=false" is defined, the API call will returns all right resource types except project right resource type.
...
global
...
boolean
...
true
...
When query parameter "global=false" is defined, the API call will returns all right resource types except global right resource type.
...
document
...
boolean
...
true
...
When query parameter "document=false" is defined, the API call will returns all right resource types except document right resource type.
...
globalfreeattributes
...
boolean
...
true
...
When query parameter "globalfreeattributes=false" is defined, the API call will returns all right resource types except globalfreeattributes right resource type.
...
layer
...
boolean
...
true
...
When query parameter "layer=false" is defined, the API call will returns all right resource types except layer right resource type.
Card | ||
---|---|---|
| ||
GET |
Card | ||
---|---|---|
| ||
Get all the available rights returns array of right resource types with defined rights. |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
...
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 Ok
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
[{
"id":"4e587ea1-5098-45cd-9655-15f90c16dc58",
"resource":"Layer",
"rights":{
"231222ba-7495-f438-cf38-629cf0482364":"building",
"dd9b9e2c-f4af-576f-4dda-9e122ab13d31":"general objects",
"92f8a361-5990-0cb0-b257-e13c85f0f7b1":"mep",
"0047e2ed-3348-a97b-93d2-a6817cc9cb8e":"steel design",
"8095dfcf-fbdf-3317-b873-a7cbccccb206":"timber design",
"f7819a2d-1498-2468-b120-fdefedfccf0b":"terrain",
"903fe394-5e84-5c8d-2760-eeadad3baa35":"reinforcement",
"44c2ff85-9691-6def-9583-56d8b776c846":"finish",
"6719f657-ea4a-3016-1bda-0c56c7f113d4":"inventory",
"52bbc329-dab3-a81c-b548-09c715786a81":"room",
"4a4da391-b804-b20f-f49a-470bdc68be8f":"structural analysis",
"7f27fd11-7992-8fb5-3541-9daa4f8196b2":"opening",
"8ba5ec82-5b93-6192-55b0-b7790f4d0007":"door/window",
"5c695e85-ea7c-7df4-9fb7-eca7aa1f69fd":"precast",
"85d0b1a9-11bb-6de1-9cfd-54f85ee11da3":"bridge",
"d726e8d2-12c6-641d-b19d-37511349dce1":"structural loads",
"3517d0e2-9814-fc08-b3e7-59d453940efa":"connection"
},
"access":["View",
"Edit"
]
},
{
"id":"173e7a88-16d9-4d88-92bf-270fff458435",
"resource":"Document",
"rights":{
"73ca755b-eb41-4abf-8d72-6360f638a34c":"documentshare",
"f53dac0d-8ef8-48bd-9fa5-b49831bcf671":"documentdelete",
"6513c54f-0531-47e2-853d-56a25a226765":"documentdownloaddenied",
"820eb26b-7469-48bd-b10f-0c69e631c910":"documentviewdenied",
"d7727bed-38b8-4a77-b61d-397fb01f1ad8":"documentupdate"
},
"access":["Edit"
]
},
{
"id":"cc49128e-9416-4bfc-a695-b17365dc7a5e",
"resource":"Project",
"rights":{
"815ce797-da07-4372-8a59-609f7106ab09":"project"
},
"access":["View",
"Edit",
"Admin"
]
},
{
"id":"9dae8bb5-77c1-47a6-a916-d4948583b0b9",
"resource":"Global",
"rights":{
"c64151c5-ecde-4e2c-ba53-d0390f480461":"projectdelete",
"6bbc401b-7cd5-4684-a11d-e2448befb3c1":"projectcreate",
"99bad6fc-0539-4848-84af-62b6df31eaa3":"allattributes",
"3b3f10c1-93a6-4d15-a727-e38e2fb9b0b2":"alldocuments",
"cc3416d3-c570-4dc6-aa84-72216d3f58da":"allmodels",
"9351251b-9631-499e-8e23-68ffe70ef3b7":"allprojects"
},
"access":["Edit"
]
},
{
"id":"500766a6-2525-45db-b9cd-b2a3d8092ba9",
"resource":"GlobalFreeAttributes",
"rights":{
"061a3842-9b4d-4d19-8651-2f9373c42842":"freeattribute",
"63b9bfad-db9f-4bbe-a902-7716c440a200":"attributetemplate",
"04f5c272-3dec-4bce-85ae-6abb2e936ef8":"projectattributetemplate",
"2a0e7bed-9fbf-46bc-987a-7a6c5c638f98":"freeattributegroup",
"b886cab2-fcce-4a77-ab2d-09f704e363b7":"teammembership"
},
"access":["View",
"Edit"
]
}
] |
...
Create a new role
...
id | bimCreateNewRole |
---|
...
default | true |
---|---|
label | URL / Resource / JSON Structure |
...
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles
Example: https://api-stage.bimplus.net/v2/bimplus/roles
JSON Structure:
...
Name
...
Mandatory / Optional
...
Type
...
Description
...
id
...
optional
...
string (guid)
...
Id of the role
...
name
...
mandatory
...
string
...
The name of the role
...
parent
...
optional
...
string (guid)
...
The Id of the parent role
...
customRole
...
optional
...
boolean
...
When this flag is true the role is custom role otherwise will role is 'built in' role
...
resources
...
optional
...
JSON Array
...
Array of the right resource type definition objects for which the role is valid
...
JSON Structure of the right resource type definition object:
...
Name
...
Mandatory / Optional
...
Type
...
Description
...
resource
...
mandatory
...
string
...
Describe kind of right resource type e.g. Global" or "Layer", etc.
...
rights
...
mandatory
...
JSON Array
...
Array of the strings with right names e.g.: "FreeAttributeView", "RoomModel"
...
Array of the objects with properties id, name, access :
- id is string (Guid) represent id of right
- name is string representing name of right e.g. "RoomModel",
- access is string representing access right of the right e.g. "View"
Card | ||
---|---|---|
| ||
POST |
Card | ||
---|---|---|
| ||
Creates a new role with defined properties and resources to be valid for. |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"name":"Test",
"customRole":true,
"resources":[{
"id":"4e587ea1-5098-45cd-9655-15f90c16dc58",
"resource":"Layer",
"rights":["Room"
],
"rightsAccess":[{
"id":"52bbc329-dab3-a81c-b548-09c715786a81",
"name":"RoomModel",
"access":"Edit"
}
]
}
],
"projectRightsRolesTemplate":{
"id":"894072db-e1cb-48f1-a672-999356d66311"
}
} |
...
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 201 Created
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": "94a60a79-7c81-454b-8158-ffdb9a2bf4d6",
"name":"Test",
"customRole":true,
"resources":[{
"id":"4e587ea1-5098-45cd-9655-15f90c16dc58",
"resource":"Layer",
"rights":["Room"
],
"rightsAccess":[{
"id":"52bbc329-dab3-a81c-b548-09c715786a81",
"name":"RoomModel",
"access":"Edit"
}
]
}
],
"projectRightsRolesTemplate":{
"id":"894072db-e1cb-48f1-a672-999356d66311",
"name":"CustomProjectRightsRolesTemplate",
"description":"Custom template for rights and roles"
}
} |
...
Get details of the role
...
id | bimGetRoleDetails |
---|
Card | ||||
---|---|---|---|---|
| ||||
Resource: <team_slug>/roles/<role_id> URL: https://api-stage.bimplus.net/v2/<team_slug>/roles/<role_id> Example: https://api-stage.bimplus.net/v2/bimplus/roles/94a60a79-7c81-454b-8158-ffdb9a2bf4d6 |
Card | ||
---|---|---|
| ||
GET |
Card | ||
---|---|---|
| ||
Get details of a specified role. |
...
label | Request |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
|
...
label | Response |
---|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Status: 200 OK
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id" : "94a60a79-7c81-454b-8158-ffdb9a2bf4d6",
"name":"Test",
"customRole":true,
"resources":[{
"id":"4e587ea1-5098-45cd-9655-15f90c16dc58",
"resource":"Layer",
"rights":["Room"
],
"rightsAccess":[{
"id":"52bbc329-dab3-a81c-b548-09c715786a81",
"name":"RoomModel",
"access":"Edit"
}
]
}
],
"projectRightsRolesTemplate":{
"id":"894072db-e1cb-48f1-a672-999356d66311",
"name":"CustomProjectRightsRolesTemplate",
"description":"Custom template for rights and roles"
}
}
|
...
Update the role
Deck of Cards | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
Card | | |||||||||||||||||
|
Card | ||
---|---|---|
| ||
PUT |
Card | ||
---|---|---|
| ||
Update the role. |
Card | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
| ||||||||||||||||||
Card | ||||||||||||||||||
| ||||||||||||||||||
|
Anchor | ||||
---|---|---|---|---|
|
...
Get details of the role
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
...
Get all project's roles assigned by right and roles template
...
id | bimGetAllProjectRolesFromRightsAndRolesTemplate |
---|
|
Anchor | ||||
---|---|---|---|---|
|
Get
Card | ||||
---|---|---|---|---|
| ||||
Resource: projects/<project_id>/roles URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/roles Example: https://api-stage.bimplus.net/v2/bimplus/projects/b8615afc-99cc-4bcd-b0ca-ff0593ce15c6/roles JSON Structure: The structure of object is the same as in get all available roles. |
Card | ||
---|---|---|
| ||
GET |
...
label | Description |
---|
Each project has by default assigned free attribute "RightsAndRoles template" which defines rights and roles template.
...
all project's roles assigned by
...
right and roles template
...
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Request
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Anchor | ||||
---|---|---|---|---|
|
...
Deck of Cards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Anchor | ||||
---|---|---|---|---|
|
...
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Anchor | ||||
---|---|---|---|---|
|
...
Deck of Cards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Anchor | ||||
---|---|---|---|---|
|
...