Editing XMBML Functions
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
= | = xcb Functions = | ||
== | == exists == | ||
Querys the database for Games, Music, Photos, Video, etc and if condition satisfaied (or not) go to selected xcb function. | |||
= | Usage example: | ||
<pre><Query class="type:x-xmb/folder-pixmap" key="seg_folding_at_home" src="xcb://localhost/exists?having=off&rquery=root.fixed_items.fah&cond=Ae+Game:Common.dirPath /dev_hdd0/game+Ae+Game:Common.fileName NPIA00002"/></pre> | |||
=== Parameters === | |||
== | {| class="wikitable sortable" | ||
|- | |||
! Description !! Parameter !! Confirmed accepted values !! Example | |||
|- | |||
| Positive or negative condition || having || on<br />off || having=off | |||
|- | |||
| Run function (from registory.xml variables) || rquery || (null)<br />Variables from registory.xml || rquery=root.fixed_items.fah | |||
|- | |||
| Search condition || cond || (null)<br />Any combination of [[#Objects_and_fields]]<br />'''Operators:'''</br>Ae+ [A B is equivalent to AND A = B]</br>An+ [A B is equivalent to AND NOT (A = B) same as AND (A != B)]</br>Aa+ [Exists A?]</br>Ap+ [?????]</br>Oe+ [A B is equivalent to OR A = B]</br>On+ [A B is equivalent to OR NOT (A = B) same as OR (A != B)]</br>AGL+ [A B C is equivalent to AND A in (B, C, ...)]</br>OGL+ [A B C is equivalent to OR A in (B, C, ...)] || cond=Ae+Game:Common.dirPath /dev_hdd0/game+Ae+Game:Common.fileName NPIA00002 | |||
|- | |||
|} | |||
== query == | |||
Querys the database for Games, Music, Photos, Video, etc and presents the returned items. | |||
Usage example: | |||
<pre><Query class="type:x-xmb/folder-pixmap" key="vmc_device_ms" src="xcb://localhost/query?table=MMS_MEDIA_TYPE_SYSTEM&subclass=x-xcb/storagemedia-psv&sort=+StorageMedia:StorageMedia.sortOrder&genre=Game&cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.deviceType %xCB_DEVICE_TYPE_MS+AGL+StorageMedia:StorageMedia.type %xCB_MEDIA_TYPE_MS_STD %xCB_MEDIA_TYPE_MS_IOX+Ae+StorageMedia:StorageMedia.mediaFormat %xCB_MEDIA_FORMAT_DATA" /></pre> | |||
=== Parameters === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! Description !! Parameter !! Confirmed accepted values !! Example | |||
|- | |- | ||
| | | Returned items limit || limit || (null)<br />Numbers up to 2048? || limit=2048 | ||
|- | |||
| Main search table? || table || (null)<br />MMS_MEDIA_TYPE_SYSTEM<br />MMS_MEDIA_TYPE_HDD<br />MMS_MEDIA_TYPE_PLUS<br />MMS_MEDIA_TYPE_PS3_BD ''[OFW 1.10]''<br />MMS_MEDIA_TYPE_PS3_DVD ''[OFW 1.10]''<br />MMS_MEDIA_TYPE_PS2_DVD ''[OFW 1.10]''<br />MMS_MEDIA_TYPE_PS2_CD ''[OFW 1.10]''<br />MMS_MEDIA_TYPE_PS1_CD ''[OFW 1.10]'' || table=MMS_MEDIA_TYPE_SYSTEM | |||
|- | |||
| Filter by subclass? || subclass || (null)<br />x-xcb/storagemedia-sdps2<br />x-xcb/storagemedia-sdps3<br />x-xcb/storagemedia-sdpsp<br />x-xcb/storagemedia-dspsp ''[OFW 1.10]''<br />x-xcb/storagemedia-psv<br />x-xcb/storagemedia-psmc<br />x-xcb/storagemedia-bdc<br />x-xcb/friendachievgroup<br />x-xcb/savedata-plus<br />x-xcb/friendachievflag || subclass=x-xcb/storagemedia-sdps2 | |||
|- | |||
| Filter by genre? || genre || (null)<br />Photo<br />Game<br />Music<br />Video || genre=Photo | |||
|- | |||
| Sorting || sort || (null)<br />Any combination of [[#Objects_and_fields]]<br />'''Operators:'''</br>+ ''[increasing]''<br/>- ''[decreasing]'' || sort=+StorageMedia:StorageMedia.sortOrder+StorageMedia :StorageMedia.timeInserted | |||
|- | |- | ||
| | | Sorting (from registory.xml variables) || ssort || (null)<br />Variables from registory.xml || ssort=root.sort_selected.friend_named | ||
|- | |- | ||
| | | Search condition || cond || (null)<br />Any combination of [[#Objects_and_fields]]<br />'''Operators:'''</br>Ae+ [A B is equivalent to AND A = B]</br>An+ [A B is equivalent to AND NOT (A = B) same as AND (A != B)]</br>Oe+ [A B is equivalent to OR A = B]</br>On+ [A B is equivalent to OR NOT (A = B) same as OR (A != B)]</br>AGL+ [A B C is equivalent to AND A in (B, C, ...)]</br>OGL+ [A B C is equivalent to OR A in (B, C, ...)] || cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.d eviceType %xCB_DEVICE_TYPE_CF | ||
|- | |- | ||
| | | Search condition (from registory.xml variables) || scond || (null)<br />Variables from registory.xml || scond=root.cond_selected.gamelist_format | ||
|- | |- | ||
| | | ???????? || option || (null)<br />option_hybrid<br />option_plus || opt=option_hybrid | ||
|- | |- | ||
| | | ???????? || perm || (null)<br />1 || perm=1 | ||
|- | |- | ||
|} | |} | ||
== Objects and fields == | |||
== | === StorageMedia === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.sortOrder || (null) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.timeInserted || (null) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.reserved24 || (null) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.mediaFormat || (null)<br/>%xCB_MEDIA_FORMAT_DATA<br/>%xCB_MEDIA_FORMAT_PS3GAME_BD<br/>%xCB_MEDIA_FORMAT_PS3GAME_DVD<br/>%xCB_MEDIA_FORMAT_PS3CONTENT_BD<br/>%xCB_MEDIA_FORMAT_PS3CONTENT_DVD<br/>%xCB_MEDIA_FORMAT_PS1GAME_CD<br/>%xCB_MEDIA_FORMAT_BDMV<br/>%xCB_MEDIA_FORMAT_BDAV<br/>%xCB_MEDIA_FORMAT_AVCHD<br/>%xCB_MEDIA_FORMAT_DVD_VIDEO<br/>%xCB_MEDIA_FORMAT_DVDPVR | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.type || (null)<br/>%xCB_MEDIA_TYPE_BDROM<br/>%xCB_MEDIA_TYPE_DVDROM<br/>%xCB_MEDIA_TYPE_DVDPRW<br/>%xCB_MEDIA_TYPE_DVDMR<br/>%xCB_MEDIA_TYPE_CDROM<br/>%xCB_MEDIA_TYPE_CDMRW<br/>%xCB_MEDIA_TYPE_MS_STD<br/>%xCB_MEDIA_TYPE_MS_R<br/>%xCB_MEDIA_TYPE_MS_IOX<br/>%xCB_MEDIA_TYPE_SD<br/>%xCB_MEDIA_TYPE_CF<br/>%xCB_MEDIA_TYPE_PS3_BD<br/>%xCB_MEDIA_TYPE_PS3_DVD<br/>%xCB_MEDIA_TYPE_PS2MC<br/>%xCB_MEDIA_TYPE_PS1MC<br/>%xCB_MEDIA_TYPE_PS1_CD<br/>%xCB_MEDIA_TYPE_PDA<br/>%xCB_MEDIA_TYPE_DLNA<br/>%xCB_MEDIA_TYPE_WM<br/>%xCB_MEDIA_TYPE_SACD<br/>%xCB_MEDIA_TYPE_CDDA<br/>%xCB_MEDIA_TYPE_DSD<br/>%xCB_MEDIA_TYPE_AAD ''[OFW 1.10]'' | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.reserved24 || (null)<br/>%xCB_DEVICE_TYPE_USBPSP<br/>%xCB_DEVICE_TYPE_USBAAD<br/>%xCB_DEVICE_TYPE_USBAADWM<br/>%xCB_DEVICE_TYPE_USBWM<br/>%xCB_DEVICE_TYPE_USBMASS<br/>%xCB_DEVICE_TYPE_USBCAMERA<br/>%xCB_DEVICE_TYPE_MS<br/>%xCB_DEVICE_TYPE_SD<br/>%xCB_DEVICE_TYPE_C<br/>%xCB_DEVICE_TYPE_ETHER | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.hybrid || (null)<br/>HYBRID | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.audio.channelType || (null) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.stat.version || (null) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.stat.mediaStatus || (null)<br/>%xCB_MEDIA_INSERTED | |||
|- | |||
| StorageMedia || StorageMedia:Common.stat.timeImported || (null) | |||
|-| StorageMedia || StorageMedia:Common.titleForSort || (null) | |||
|-| StorageMedia || StorageMedia:Common.fileName || (null)<br/>EX_GAME<br/>THEMEDIR<br/>EX_VIDEO<br/>VIDEODIR<br/>(any file or dir name?) | |||
|- | |||
| StorageMedia || StorageMedia:StorageMedia.sortOrder || (null) | |||
|} | |||
=== Game === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
| | ! Object !! Field !! Confirmed accepted values | ||
|- | |||
| Game || Game:Game.gameCategory || (null) | |||
|- | |||
| Game || Game:Game.bootable ''[OFW 1.10]''|| (null)<br/>0<br/>1 | |||
|- | |- | ||
| | | Game || Game:Game.titleId ''[OFW 1.10]''|| (null)<br/>NPUP00030<br/>(any other game ID?) | ||
|- | |- | ||
| | | Game || Game:Game.category || (null)1P (Game - PS1 Game)<br/>2P (Game - PS2 Game)<br/>2D (Game - PS2 Emulator Data)<br/>AM (Music, ex: Qriocity Music Unlimited)<br/>AP (Photo, ex: Play Memories)<br/>AT (TV, ex: QOOK TV, Now TV)<br/>AV (Video, ex: Netflix, LoveFilm)<br/>BV (Video, ??????)<br/>CB (Network, ex: Life with Playstation, Folding@home)<br/>GD (Game - Game Data)<br/>HM (Music, ??????)<br/>HG? (Game - HDD Game)<br/>MN? (Game - PSP Mini Game)<br/>PP (Game - PSP Game?)<br/>SD? (Game - Game Save Data)<br/>VF (??????)<br/>WT (??????) | ||
|- | |||
| Game || Game:Common.dirPath || (null)<br/>/dev_hdd0/game | |||
|- | |||
| Game || Game:Common.fileName || (null)<br/>SCEAPPS01<br/>SCEAPPS02<br/>SCEAPPS03<br/>NPIA00002 (Folding@home)<br/>NPIA00005 (Playstation home)<br/>(any other game ID?) | |||
|- | |||
| Game || Game:Common.stat.timeLastUsed || (null) | |||
|- | |||
| Game || Game:Common.timeCreated || (null) | |||
|- | |||
| Game || Game:Common.title || (null) | |||
|- | |||
| Game || Game:Common.titleForSort || (null) | |||
|- | |||
| Game || Game:Common.stat.rating || (null)<br/>299<br/>300<br/>(any other number?) | |||
|- | |- | ||
|} | |} | ||
= | === GameList === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| GameList || GameList:Common.titleForSort || (null)<br/>2000<br/>4000 | |||
|- | |||
| GameList || GameList:GameList.type || (null)<br/>%xCB_LIST_TYPE_PSPSAVEDATA_TITLE<br/>%xCB_LIST_TYPE_PS3SAVEDATA_TITLE<br/>%xCB_LIST_TYPE_GAME_TAGS<br/>%xCB_LIST_TYPE_GAME_FORMAT | |||
|- | |||
| GameList || GameList:Common.owner || (null)<br/>%xUserId | |||
|- | |||
|} | |||
=== Photo === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
| | ! Object !! Field !! Confirmed accepted values | ||
|- | |||
| Photo || Photo:Common.titleForSort || (null) | |||
|- | |||
| Photo || Photo:Common.timeCreated || (null) | |||
|- | |||
| Photo || Photo:Common.size || (null) | |||
|- | |- | ||
| | | Photo || Photo:Common.stat.contentsStatus ''[OFW 1.10]'' || (null)<br/>%xCB_CONTENT_STATUS_AVAILABLE | ||
|- | |- | ||
| | | Photo || Photo:Common.stat.timeImported ''[OFW 1.10]'' || (null) | ||
|- | |- | ||
| | | Photo || Photo:Common.stat.timeImportedTicks || (null) | ||
|- | |- | ||
| | | Photo || Photo:Photo.codec || (null) | ||
|- | |- | ||
|} | |} | ||
== | === PhotoList === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| PhotoList || PhotoList:Common.titleForSort || (null) | |||
|- | |||
| PhotoList || PhotoList:PhotoList.type || (null)<br/>%xCB_LIST_TYPE_PHOTO_ALBUM_MONTH<br/>%xCB_LIST_TYPE_PHOTO_ALBUM_YEAR<br/>%xCB_LIST_TYPE_PHOTO_TAGS | |||
|- | |||
|} | |||
=== Music === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
| | ! Object !! Field !! Confirmed accepted values | ||
|- | |||
| Music || Music:Common.titleForSort || (null) | |||
|- | |||
| Music || Music:Common.reserved1 || (null) | |||
|- | |- | ||
| | | Music || Music:Common.stat.timeImported ''[OFW 1.10]'' || (null) | ||
|- | |- | ||
| | | Music || Music:Common.stat.timeImportedTicks || (null) | ||
|- | |- | ||
| | | Music || Music:Music.codec || (null) | ||
|- | |- | ||
| | | Music || Music:MusicServed.trackNumber || (null) | ||
|- | |- | ||
| | | Music || Music:MusicServed.discNumber || (null) | ||
|- | |- | ||
| | | Music || Music:MusicServed.listTitleForSort || (null) | ||
|- | |- | ||
| | | Music || Music:MusicServed.playerForSort || (null) | ||
|- | |- | ||
| | | Music || Music:MusicServed.genreForSort || (null) | ||
|- | |- | ||
| | |} | ||
=== MusicList === | |||
{| class="wikitable sortable" | |||
|- | |- | ||
! Object !! Field !! Confirmed accepted values | |||
|- | |- | ||
| | | MusicList || MusicList:Common.titleForSort || (null) | ||
|- | |- | ||
| | | MusicList || MusicList:MusicList.type || (null)<br/>%xCB_LIST_TYPE_MUSIC_ALBUM<br/>%xCB_LIST_TYPE_MUSIC_PLAYLIST_ARTIST<br/>%xCB_LIST_TYPE_MUSIC_PLAYLIST_GENRE<br/>%xCB_LIST_TYPE_MUSIC_TRACKNAME_INITIAL<br/>%xCB_LIST_TYPE_MUSIC_RELEASEDYEAR | ||
|- | |- | ||
| | | MusicList || MusicList:MusicListServed.genreForSort || (null) | ||
|- | |- | ||
| | | MusicList || MusicList:MusicListServed.playerForSort || (null) | ||
|- | |- | ||
|} | |} | ||
== | === Video === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| Video || Video:Common.titleForSort || (null) | |||
|- | |||
| Video || Video:Common.size || (null) | |||
|- | |||
| Video || Video:Common.stat.timeImportedTicks || (null) | |||
|- | |||
| Video || Video:Video.videoCodec || (null) | |||
|- | |||
|} | |||
=== VideoList === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
| | ! Object !! Field !! Confirmed accepted values | ||
|- | |||
| VideoList || VideoList:Common.titleForSort || (null) | |||
|- | |||
| VideoList || VideoList:VideoList.type || (null)<br/>%xCB_LIST_TYPE_VIDEO_TITLE_INITIAL<br/>%xCB_LIST_TYPE_VIDEO_IMPORTEDMONTH<br/>%xCB_LIST_TYPE_VIDEO_TAGS | |||
|- | |- | ||
|} | |} | ||
= | === AchievTitle === | ||
= | {| class="wikitable sortable" | ||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| AchievTitle || AchievTitle:Common.dirPath || (null)<br/>%xUserHomeDir/trophy | |||
|- | |||
| AchievTitle || AchievTitle:Common.fileName || (null) | |||
|- | |||
| AchievTitle || AchievTitle:Common.titleForSort || (null) | |||
|- | |||
| AchievTitle || AchievTitle:Common.timeModified || (null) | |||
|- | |||
| AchievTitle || AchievTitle:AchievTitle.timeLastUnlocked || (null) | |||
|- | |||
| AchievTitle || AchievTitle:AchievTitle.ex.timeLastUpdate || (null) | |||
|- | |||
| AchievTitle || AchievTitle:AchievTitle.ex.timeLastUnlocked || (null) | |||
|- | |||
|} | |||
=== AchievFlag === | |||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| AchievFlag || AchievFlag:Common.fileName || (null) | |||
|- | |||
| AchievFlag || AchievFlag:Common.titleForSort || (null) | |||
| | |- | ||
| AchievFlag || AchievFlag:Common.fileName || (null) | |||
|- | |||
| AchievFlag || AchievFlag:AchievFlag.flagId || (null) | |||
|- | |||
| AchievFlag || AchievFlag:AchievFlag.flagType || (null) | |||
|- | |||
| AchievFlag || AchievFlag:AchievFlag.timeUnlocked || (null) | |||
|- | |- | ||
| | | AchievFlag || AchievFlag:AchievFlag.reserved0 || (null) | ||
|- | |- | ||
| | | AchievFlag || AchievFlag:AchievFlag.reserved3 || (null) | ||
|- | |- | ||
| | | AchievFlag || AchievFlag:AchievFlag.reserved4 || (null) | ||
|- | |- | ||
| | | AchievFlag || AchievFlag:AchievFlag.ex.timeUnlocked || (null) | ||
|- | |- | ||
|} | |} | ||
=== Ps3SaveData === | |||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
{| class="wikitable" | |||
|- | |- | ||
| Ps2SaveData || Ps3SaveData:Common.titleForSort || (null) | |||
|- | |- | ||
| | | Ps2SaveData || Ps3SaveData:Common.dirPath || (null)<br/>%xUserHomeDir/savedata | ||
|- | |- | ||
| | | Ps2SaveData || Ps3SaveData:Common.owner || (null)<br/>%xUserId | ||
|- | |- | ||
| | | Ps2SaveData || Ps3SaveData:Ps3SaveData.timeModified || (null) | ||
|- | |- | ||
| | | Ps2SaveData || Ps3SaveData:Ps3SaveData.subTitle || (null) | ||
|- | |- | ||
| | | Ps2SaveData || Ps3SaveData:Ps3SaveData.broken || (null) | ||
|- | |- | ||
|} | |} | ||
= | === Ps2SaveData === | ||
{| class="wikitable" | {| class="wikitable sortable" | ||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |- | ||
| Ps2SaveData || Ps2SaveData:Common.titleForSort || (null) | |||
|- | |- | ||
| | | Ps2SaveData || Ps2SaveData:Ps2.timeModified || (null) | ||
|- | |- | ||
| | | Ps2SaveData || Ps2SaveData:Ps2.timeModified || (null) | ||
|- | |- | ||
|} | |} | ||
== | === PspSaveData === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| PspSaveData || PspSaveData:Common.titleForSort || (null) | |||
|- | |||
| PspSaveData || PspSaveData:Common.dirPath || (null)<br/>%xUserHomeDir/minis_savedata | |||
|- | |||
| PspSaveData || PspSaveData:Common.owner || (null)<br/>%xUserId | |||
|- | |||
| PspSaveData || PspSaveData:PspSaveData.timeModified || (null) | |||
|- | |||
| PspSaveData || PspSaveData:PspSaveData.sdTitle || (null) | |||
|- | |||
| PspSaveData || PspSaveData:PspSaveData.broken || (null) | |||
|- | |||
|} | |||
== | === Person === | ||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| Person || Person:Common.titleForSort || (null) | |||
|- | |- | ||
| Person || Person:Common.stat.status || (null)<br/>2<br/>3<br/>4<br/>5<br/>6<br/>2 5 | |||
| | |||
|- | |- | ||
| Person || Person:Common.stat.timeLastUsed || (null) | |||
| | |||
|- | |- | ||
| Person || Person:Person.reserved20 || (null) | |||
| | |||
|- | |- | ||
| Person || Person:Person.stat.presence || (null)<br/>2 6 | |||
| | |||
|- | |- | ||
|} | |} | ||
=== BlockedPlayer === | |||
{| class="wikitable sortable" | |||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| BlockedPlayer || BlockedPlayer:Common.titleForSort || (null) | |||
|- | |||
| BlockedPlayer || BlockedPlayer:Common.owner || (null)<br/>%xUserId | |||
|- | |||
|} | |||
== | === PlayedPlayer === | ||
{| class="wikitable sortable" | |||
{| class="wikitable" | |||
|- | |- | ||
! | ! Object !! Field !! Confirmed accepted values | ||
|- | |- | ||
| PlayedPlayer || PlayedPlayer:Common.timeCreated || (null) | |||
| | |||
|- | |- | ||
| PlayedPlayer || PlayedPlayer:Common.titleForSort || (null) | |||
| | |||
|- | |- | ||
| PlayedPlayer || PlayedPlayer:Common.owner || (null)<br/>%xUserId | |||
| | |||
|- | |- | ||
|} | |} | ||
=== Vmc === | |||
= | {| class="wikitable sortable" | ||
|- | |||
! Object !! Field !! Confirmed accepted values | |||
|- | |||
| Vmc || Vmc:Common.timeCreatedUTC || (null) | |||
|- | |||
| Vmc || Vmc:Common.titleForSort || (null) | |||
|- | |- | ||
| Vmc || Vmc:Common.title || (null) | |||
|- | |- | ||
| | | Vmc || Vmc:Vmc.type || (null) | ||
|- | |- | ||
|} | |} | ||