- Tag HTML sugli annunci non vengono visualizzati correttamente... <div>...</div>
@@ -1,18 +1,17 @@
|
||||
APP_VERSION="1.0.61"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="19"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
DIRECTORY_SERVER="freeplanet_serverside"
|
||||
SERVERDIR_WEBSITE=""
|
||||
SERVERPW_WEBSITE=""
|
||||
APP_URL="https://localhost"
|
||||
URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
|
||||
PROVA_PAOLO="PROVA ENV FUNZIONA!"
|
||||
LANG_DEFAULT="it"
|
||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||
MONGODB_HOST="https://localhost:3000"
|
||||
LOGO_REG='abitaregliiblei-logo-full.png'
|
||||
LOGO_REG='riso-logo-full.png'
|
||||
TEST_NAME="Paolo"
|
||||
TEST_SURNAME="Arena"
|
||||
TEST_EMAIL=""
|
||||
@@ -25,5 +24,5 @@ DEBUG="1"
|
||||
TELEGRAM_SUPPORT=""
|
||||
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
TEST_CELL=""
|
||||
ISTEST=1
|
||||
INLOCALE=1
|
||||
ISTEST="1"
|
||||
INLOCALE="1"
|
||||
|
||||
2
now.txt
@@ -1 +1 @@
|
||||
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)
|
||||
TERMINA DI LAVORARE SU abitaregliiblei.it: (Sovrascrivo !)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "abitaregliiblei",
|
||||
"name": "riso",
|
||||
"version": "1.0.61",
|
||||
"description": "Abitare Gli Iblei",
|
||||
"productName": "AbitareGliIblei",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"productName": "Riso",
|
||||
"author": "Paolo Arena",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
public/images/freeplanet-logo-full.odg
Executable file
1186
public/images/freeplanet-logo-full.svg
Executable file
|
After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 72 KiB |
BIN
public/images/riso-android-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/images/riso-android-icon-36x36.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
public/images/riso-android-icon-384x384.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
public/images/riso-android-icon-48x48.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
public/images/riso-android-icon-512x512.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
public/images/riso-android-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/riso-android-icon-96x96.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/images/riso-apple-icon-114x114.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/riso-apple-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images/riso-apple-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-apple-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/riso-apple-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/riso-apple-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
public/images/riso-apple-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
public/images/riso-apple-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/riso-apple-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/riso-apple-icon.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/images/riso-logo-full.png
Normal file
|
After Width: | Height: | Size: 634 KiB |
@@ -39,7 +39,7 @@ module.exports = configure((ctx) => ({
|
||||
// --> boot files are part of "main.js"
|
||||
// https://v2.quasar.dev/quasar-cli/boot-files
|
||||
// boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
|
||||
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing', 'timeago', 'guard'],
|
||||
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing', 'timeago'],
|
||||
|
||||
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
|
||||
css: [
|
||||
@@ -152,7 +152,7 @@ module.exports = configure((ctx) => ({
|
||||
},
|
||||
devServer: {
|
||||
https: false,
|
||||
port: 8091,
|
||||
port: 8084,
|
||||
open: false, // opens browser window automatically
|
||||
hot: false, // Disable hot module replacement
|
||||
headers: {
|
||||
@@ -311,9 +311,9 @@ module.exports = configure((ctx) => ({
|
||||
},
|
||||
|
||||
manifest: {
|
||||
name: 'Abitare gli Iblei',
|
||||
short_name: 'AbitareGliIblei',
|
||||
description: 'Abitare Gli Iblei',
|
||||
name: 'Riso',
|
||||
short_name: 'Riso',
|
||||
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
|
||||
display: 'standalone',
|
||||
orientation: 'portrait',
|
||||
background_color: '#fff',
|
||||
@@ -323,54 +323,54 @@ module.exports = configure((ctx) => ({
|
||||
start_url: "/?homescreen=1",
|
||||
icons: [
|
||||
{
|
||||
src: 'images/agi-android-icon-512x512.png',
|
||||
src: 'images/riso-android-icon-512x512.png',
|
||||
sizes: '512x512',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-android-icon-384x384.png',
|
||||
src: 'images/riso-android-icon-384x384.png',
|
||||
sizes: '384x384',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-android-icon-192x192.png',
|
||||
src: 'images/riso-android-icon-192x192.png',
|
||||
sizes: '192x192',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-android-icon-144x144.png',
|
||||
src: 'images/riso-android-icon-144x144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-android-icon-96x96.png',
|
||||
src: 'images/riso-android-icon-96x96.png',
|
||||
sizes: '96x96',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-apple-icon-120x120.png',
|
||||
src: 'images/riso-apple-icon-120x120.png',
|
||||
sizes: '120x120',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-apple-icon-144x144.png',
|
||||
src: 'images/riso-apple-icon-144x144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-apple-icon-152x152.png',
|
||||
src: 'images/riso-apple-icon-152x152.png',
|
||||
sizes: '152x152',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/agi-apple-icon-180x180.png',
|
||||
src: 'images/riso-apple-icon-180x180.png',
|
||||
sizes: '180x180',
|
||||
type: 'image/png',
|
||||
},
|
||||
],
|
||||
related_applications: [{
|
||||
"platform": "webapp",
|
||||
"url": "https://www.abitaregliiblei.it/manifest.json"
|
||||
"url": "https://www.riso.app/manifest.json"
|
||||
}]
|
||||
},
|
||||
},
|
||||
@@ -405,7 +405,7 @@ module.exports = configure((ctx) => ({
|
||||
builder: {
|
||||
// https://www.electron.build/configuration/configuration
|
||||
|
||||
appId: 'AbitareGliIblei',
|
||||
appId: 'Riso',
|
||||
},
|
||||
|
||||
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
||||
|
||||
@@ -28,12 +28,12 @@ export default defineComponent({
|
||||
|
||||
const visustat = computed(() => {
|
||||
// @ts-ignore
|
||||
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.visuonstat)
|
||||
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.visuonstat && !rec.forgroup)
|
||||
})
|
||||
|
||||
const visulinks = computed(() => {
|
||||
// @ts-ignore
|
||||
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.link)
|
||||
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.link && !rec.forgroup)
|
||||
})
|
||||
|
||||
return {
|
||||
|
||||
@@ -1630,7 +1630,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function mounted() {
|
||||
console.log('mounted...')
|
||||
// console.log('mounted...')
|
||||
try {
|
||||
searchList.value = props.prop_searchList
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ export default defineComponent({
|
||||
const largeHeight = ref('100vh')
|
||||
|
||||
const cardStyle = computed(() => ({
|
||||
height: isSmall.value ? smallHeight.value : largeHeight.value,
|
||||
// height: isSmall.value ? smallHeight.value : largeHeight.value,
|
||||
transition: 'height 0.3s ease-in-out'
|
||||
}))
|
||||
|
||||
|
||||
@@ -655,8 +655,9 @@
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
myrec.coordinate_gps.address ||
|
||||
myrec.coordinate_gps.coordinates
|
||||
myrec.coordinate_gps &&
|
||||
(myrec.coordinate_gps.address ||
|
||||
myrec.coordinate_gps.coordinates)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
|
||||
@@ -273,7 +273,7 @@ export default defineComponent({
|
||||
})
|
||||
*/
|
||||
function crea() {
|
||||
console.log('crea', isFieldDb(), 'props.mycol', props.mycol)
|
||||
// console.log('crea', isFieldDb(), 'props.mycol', props.mycol)
|
||||
|
||||
if (props.mycol && props.mycol.name && props.mycol.name !== 'test') {
|
||||
col.value = { ...props.mycol }
|
||||
@@ -318,7 +318,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
console.log('popupedit myvalue.value: ', myvalue.value)
|
||||
// console.log('popupedit myvalue.value: ', myvalue.value)
|
||||
|
||||
if (props.tablesel) {
|
||||
// let obj = tools.getParamsByTable(props.table)
|
||||
@@ -469,7 +469,7 @@ export default defineComponent({
|
||||
|
||||
try {
|
||||
|
||||
console.log('mounted', 'isFieldDb()', myrow.value)
|
||||
// console.log('mounted', 'isFieldDb()', myrow.value)
|
||||
if (isFieldDb() && !props.isrec) {
|
||||
// console.log(' . none...')
|
||||
} else {
|
||||
@@ -488,7 +488,7 @@ export default defineComponent({
|
||||
myvalue.value = myrow.value
|
||||
}
|
||||
}
|
||||
console.log('props.field', props.field, 'props.subfield', props.subfield, 'myvalue: ', myvalue)
|
||||
// console.log('props.field', props.field, 'props.subfield', props.subfield, 'myvalue: ', myvalue)
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ export default defineComponent({
|
||||
const contact = ref(<IUserFields | null>null)
|
||||
|
||||
const filtroutente = ref(<any[]>[])
|
||||
const showBanner_utenti_verif = ref(true)
|
||||
|
||||
const usersList = ref({ show: false, title: '', list: [] })
|
||||
|
||||
@@ -582,6 +583,7 @@ export default defineComponent({
|
||||
numStepCompleted,
|
||||
globalStore,
|
||||
prStep,
|
||||
showBanner_utenti_verif,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -89,7 +89,11 @@
|
||||
</CMySelectCity>
|
||||
|
||||
<CMySelectCity
|
||||
v-if="globalStore.isPresenteCardsByProv(contact.profile.resid_province)"
|
||||
v-if="
|
||||
globalStore.isPresenteCardsByProv(
|
||||
contact.profile.resid_province
|
||||
)
|
||||
"
|
||||
:label="$t('reg.resid_card')"
|
||||
table="users"
|
||||
jointable="cards"
|
||||
@@ -263,10 +267,10 @@
|
||||
|
||||
<q-banner
|
||||
inline-actions
|
||||
class="bg-blue text-white"
|
||||
v-if="userstoverify.length > 0"
|
||||
class="bg-blue text-white row"
|
||||
v-if="userstoverify.length > 0 && showBanner_utenti_verif"
|
||||
>
|
||||
<span v-html="$t('tutorial.utenti_da_verificare')"></span>
|
||||
<div v-html="$t('tutorial.utenti_da_verificare')"></div>
|
||||
<template v-slot:action>
|
||||
<q-btn
|
||||
:label="
|
||||
@@ -279,8 +283,14 @@
|
||||
usersList.show = true;
|
||||
usersList.title = $t('tutorial.utenti_da_verif_btn');
|
||||
"
|
||||
>
|
||||
</q-btn>
|
||||
/>
|
||||
<q-btn
|
||||
icon="fas fa-times"
|
||||
class="q-my-sm"
|
||||
flat
|
||||
@click="showBanner_utenti_verif = false"
|
||||
aria-label="Chiudi"
|
||||
/>
|
||||
</template>
|
||||
</q-banner>
|
||||
|
||||
@@ -288,8 +298,9 @@
|
||||
inline-actions
|
||||
class="bg-red text-white"
|
||||
v-if="
|
||||
userStore.my.profile.calc.numGoodsAndServices <= 0 && !nascondiavviso
|
||||
&& tools.visualizzaHomeApp()
|
||||
userStore.my.profile.calc.numGoodsAndServices <= 0 &&
|
||||
!nascondiavviso &&
|
||||
tools.visualizzaHomeApp()
|
||||
"
|
||||
>
|
||||
<span v-html="$t('tutorial.step_beniservizi')"></span>
|
||||
|
||||
@@ -56,7 +56,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function mounted() {
|
||||
console.log('mounted')
|
||||
// console.log('mounted')
|
||||
myarrvalues.value = []
|
||||
|
||||
// console.log('value', value)
|
||||
|
||||
@@ -102,7 +102,6 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function beforeDestroy() {
|
||||
console.log('beforeDestroy')
|
||||
clearInterval(polling.value)
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
console.log('beforeDestroy')
|
||||
clearInterval(polling.value)
|
||||
})
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
const msg_website_it = {
|
||||
ws: {
|
||||
sitename: 'AbitareGliIblei',
|
||||
siteshortname: 'AbitareGliIblei',
|
||||
description: 'Abitare Gli Iblei',
|
||||
keywords: '',
|
||||
sitename: 'Riso',
|
||||
siteshortname: 'RISO',
|
||||
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
|
||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
||||
},
|
||||
hours: {
|
||||
descr: 'Descrizione',
|
||||
@@ -84,7 +84,6 @@ const msg_website_it = {
|
||||
eventodef: 'Evento:',
|
||||
prova: 'prova',
|
||||
dbop: 'Operazioni',
|
||||
server: 'Server',
|
||||
projall: 'Comunitari',
|
||||
groups: 'Lista Gruppi',
|
||||
projectsShared: 'Condivisi da me',
|
||||
|
||||
@@ -68,7 +68,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableGoods,
|
||||
active: true,
|
||||
order: 12,
|
||||
path: '/goods',
|
||||
materialIcon: 'fas fa-tshirt',
|
||||
@@ -79,7 +79,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableServices,
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/services',
|
||||
materialIcon: 'fas fa-house-user',
|
||||
@@ -90,7 +90,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableActivities,
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/activities',
|
||||
materialIcon: 'fas fa-house-user',
|
||||
@@ -112,7 +112,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableHosps,
|
||||
active: true,
|
||||
order: 15,
|
||||
path: '/hosps',
|
||||
materialIcon: 'fas fa-bed',
|
||||
@@ -134,7 +134,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.enableEvents,
|
||||
active: true,
|
||||
order: 20,
|
||||
path: '/events',
|
||||
materialIcon: 'fas fa-bullhorn',
|
||||
@@ -156,7 +156,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.showProfile,
|
||||
active: true,
|
||||
order: 120,
|
||||
path: '/myprofile',
|
||||
materialIcon: 'fas fa-user',
|
||||
@@ -178,7 +178,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: site.confpages && site.confpages.showiscrittiMenu,
|
||||
active: true,
|
||||
order: 130,
|
||||
path: '/friends',
|
||||
materialIcon: 'fas fa-user-friends',
|
||||
@@ -294,18 +294,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
|
||||
{
|
||||
active: true,
|
||||
order: 1000,
|
||||
path: '/404error',
|
||||
materialIcon: 'fas fa-calendar-plus',
|
||||
name: 'otherpages.error404',
|
||||
component: () => import('@/root/My404page/My404page.vue'),
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
return baseroutes
|
||||
|
||||
@@ -106,7 +106,6 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function beforeDestroy() {
|
||||
console.log('beforeDestroy')
|
||||
if (polling.value)
|
||||
clearInterval(polling.value)
|
||||
}
|
||||
|
||||
@@ -101,7 +101,6 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function beforeDestroy() {
|
||||
console.log('beforeDestroy')
|
||||
if (polling.value)
|
||||
clearInterval(polling.value)
|
||||
}
|
||||
|
||||
@@ -275,6 +275,7 @@ export const costanti = {
|
||||
visuonstat: true,
|
||||
small: false,
|
||||
showfavorite: true,
|
||||
forgroup: true,
|
||||
},
|
||||
],
|
||||
|
||||
|
||||