Commit daf04614 by haojie

新增ai换脸页面

parent aebc5461
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g clip-path="url(#clip0_1711_146)">
<rect width="40" height="40" fill="url(#pattern0)"/>
</g>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_1711_146" transform="scale(0.00195312)"/>
</pattern>
<clipPath id="clip0_1711_146">
<rect width="40" height="40" fill="white"/>
</clipPath>
<image id="image0_1711_146" width="512" height="512" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>
\ No newline at end of file
...@@ -271,52 +271,61 @@ export default defineComponent({ ...@@ -271,52 +271,61 @@ export default defineComponent({
{props.icon} {props.icon}
<span>{props.label}</span> <span>{props.label}</span>
</div> </div>
<div class="izable-page-upload-box"> {slots.header ? (
{enableV2Vocal() ? ( slots.header()
<MultipleUpload ) : (
v-model={files.value} <div class="izable-page-upload-box">
v-model:audioTotolTime={audioTotolTime.value}
label={'选择音频'}
config={ossConfig.value}
accept={props.accept}
></MultipleUpload>
) : (
<Upload
v-model={file.value}
uploadInfo={props.uploadInfo}
accept={props.accept}
config={ossConfig.value}
></Upload>
)}
<div class={['upload-box-footer', enableV2Vocal() ? 'upload-box-footer-v2' : '']}>
{enableV2Vocal() ? ( {enableV2Vocal() ? (
<div class="upload-total-time-box"> <MultipleUpload
<div class="label">上传的音频文件时间总和需要达到{audioMinTime.value / 60}分钟以上</div> v-model={files.value}
<div class="value"> v-model:audioTotolTime={audioTotolTime.value}
<span class="current-total">{computedTotalTime.value} /</span> label={'选择音频'}
<span class="role-total">{transformTime(audioMinTime.value)}</span> config={ossConfig.value}
</div> accept={props.accept}
</div> ></MultipleUpload>
) : ( ) : (
'' <Upload
v-model={file.value}
uploadInfo={props.uploadInfo}
accept={props.accept}
config={ossConfig.value}
></Upload>
)} )}
<div class="footer-buttons"> <div class={['upload-box-footer', enableV2Vocal() ? 'upload-box-footer-v2' : '']}>
<Button theme="opacity" onClick={reset}> {enableV2Vocal() ? (
重置 <div class="upload-total-time-box">
</Button> <div class="label">上传的音频文件时间总和需要达到{audioMinTime.value / 60}分钟以上</div>
<Button theme="green" onClick={submit}> <div class="value">
生成 <span class="current-total">{computedTotalTime.value} /</span>
</Button> <span class="role-total">{transformTime(audioMinTime.value)}</span>
</div>
</div>
) : (
''
)}
<div class="footer-buttons">
<Button theme="opacity" onClick={reset}>
重置
</Button>
<Button theme="green" onClick={submit}>
生成
</Button>
</div>
</div> </div>
</div> </div>
</div> )}
<div class="izable-page-tabs">{slots.default?.()}</div> <div class="izable-page-tabs">{slots.default?.()}</div>
<Dialog {slots.header ? (
v-model:value={taskName.value} ''
dialogInfo={props.dialogInfo} ) : (
v-model={nameDialog.value} <Dialog
onConfirm={onConfirm} v-model:value={taskName.value}
></Dialog> dialogInfo={props.dialogInfo}
v-model={nameDialog.value}
onConfirm={onConfirm}
></Dialog>
)}
</div> </div>
); );
}, },
......
...@@ -15,6 +15,19 @@ export default defineComponent({ ...@@ -15,6 +15,19 @@ export default defineComponent({
type: Array, type: Array,
default: [], default: [],
}, },
mode: {
type: String,
default: '1',
},
modeInfo: {
type: Object as any,
default: {
label1: '选择需要换脸的视频',
label2: '或拖视频到此处上传',
icon: '',
buttonLabel: '选择视频',
},
},
// 是否截取视频第一针 // 是否截取视频第一针
firstFrame: { firstFrame: {
type: Boolean, type: Boolean,
...@@ -317,7 +330,7 @@ export default defineComponent({ ...@@ -317,7 +330,7 @@ export default defineComponent({
draggable={true} draggable={true}
> >
<div class="custom-upload-click-box" ref={uploadRef}> <div class="custom-upload-click-box" ref={uploadRef}>
<TButton class="custom-chose-file">{props.label}</TButton> {props.mode == '1' ? <TButton class="custom-chose-file">{props.label}</TButton> : <div></div>}
</div> </div>
</TUpload> </TUpload>
); );
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
}" }"
> >
<div class="custom-card-two-image"> <div class="custom-card-two-image">
<!-- v-lazy="img" -->
<img alt="" :src="img" /> <img alt="" :src="img" />
<div v-show="showHover" :class="['hover']"> <div v-show="showHover" :class="['hover']">
<slot name="hover"></slot> <slot name="hover"></slot>
...@@ -27,6 +28,7 @@ ...@@ -27,6 +28,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue'; import { ref } from 'vue';
import ChangeName from '@/components/changeName.vue'; import ChangeName from '@/components/changeName.vue';
import { vLazy } from '@/utils/command';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
id: string | number; id: string | number;
......
...@@ -106,6 +106,13 @@ export const getRoutes = () => { ...@@ -106,6 +106,13 @@ export const getRoutes = () => {
component: () => import('@/pages/createAction/index'), component: () => import('@/pages/createAction/index'),
meta: { title: 'snowhome', keepAlive: true }, meta: { title: 'snowhome', keepAlive: true },
}, },
// ai换脸
{
path: routerConfig.faceTransplant.path,
name: routerConfig.faceTransplant.name,
component: () => import('@/pages/faceTransplant/index.vue'),
meta: { title: 'snowhome', keepAlive: true },
},
]; ];
} }
}; };
...@@ -143,6 +150,9 @@ export const audioAccept = 'wav,mpeg,mp3'; ...@@ -143,6 +150,9 @@ export const audioAccept = 'wav,mpeg,mp3';
// 视频上传格式限制 // 视频上传格式限制
export const videoAccept = 'mp4'; export const videoAccept = 'mp4';
// 图片上传格式限制
export const imageAccept = 'png,jpg,jpeg';
// 音频切割间隔时长 // 音频切割间隔时长
export const audioSplitDuration = 300; export const audioSplitDuration = 300;
...@@ -158,3 +168,13 @@ export const getTestUuid = () => { ...@@ -158,3 +168,13 @@ export const getTestUuid = () => {
return false; return false;
} }
}; };
// navigation各个路由的label
export const navigationLabels = {
createLive: '直播创建',
imageCustomization: '形象定制',
vocalCustomization: '声音定制',
createInteract: '互动回答',
createAction: '动作创建',
faceTransplant: '智能换脸',
};
import { onMounted, ref } from 'vue';
import { NotifyPlugin } from 'tdesign-vue-next';
import { injectWindow } from '@/utils/pyqt';
export default function () {
const notifyStatus = ref(false);
// 通知
const notify = ref({
title: '',
content: '',
duration: 0,
closeBtn: true,
});
const showNotifyPlugin = (status: boolean = true) => {
// 已经创建就不能再创建了
if (notifyStatus.value) {
return;
}
notifyStatus.value = status;
if (status) {
NotifyPlugin('info', notify.value);
} else {
// 销毁
NotifyPlugin.closeAll();
}
};
const changeNotifyPlugin = () => {
notify.value.title = '你好啊';
};
onMounted(() => {
// 注入通知方法
injectWindow('showNotifyPlugin', showNotifyPlugin);
injectWindow('changeNotifyPlugin', changeNotifyPlugin);
});
return {
showNotifyPlugin,
changeNotifyPlugin,
};
}
<template>
<div class="face-transplant-header">
<div class="face-transplant-upload">
<div class="upload">
<Upload
class="face-transplant-reset-upload"
v-model="videoFile"
:config="ossConfig"
:accept="videoAccept"
:uploadInfo="videoUploadInfo"
></Upload>
</div>
<div class="divide">+</div>
<div class="upload">
<Upload
class="face-transplant-reset-upload"
v-model="imageFile"
:config="ossConfig"
:accept="imageAccept"
:uploadInfo="imageUploadInfo"
></Upload>
</div>
</div>
<div class="face-transplant-footer">
<Button theme="opacity" class="face-transplant-footer-reset">重置</Button>
<Button theme="green" class="face-transplant-create" @click="openDialog">生成</Button>
</div>
<ConfirmDialog v-model="confirmDialogVisible" title="确定生成吗?" @confirm="confirm"></ConfirmDialog>
</div>
</template>
<script lang="tsx" setup>
import ConfirmDialog from '@/components/ConfirmDialog.vue';
import Button from '@/components/Button.vue';
import Upload from '@/components/upload';
import { videoAccept, imageAccept } from '@/constants/token';
import { getUploadConfig } from '@/service/Common';
import { onMounted, ref } from 'vue';
const videoUploadInfo = {
label1: '选择需要换脸的视频',
label2: '或拖视频到此处上传',
buttonLabel: '选择视频',
successIcon: '',
successButtonLabel: '替换视频',
};
const imageUploadInfo = {
label1: '选择需要换脸的图片',
label2: '或将图片拖拽到此处上传',
buttonLabel: '选择图片',
successIcon: '',
successButtonLabel: '替换图片',
};
const ossConfig = ref({});
// 弹窗状态
const confirmDialogVisible = ref(false);
// 视频文件
const videoFile = ref('');
// 图片文件
const imageFile = ref('');
const getConfig = async () => {
ossConfig.value = await getUploadConfig();
};
const openDialog = () => {
confirmDialogVisible.value = true;
};
// 确定生成
const confirm = async () => {
try {
//
} catch (e) {
console.log(e);
}
};
onMounted(() => {
// 获取上传配置
getConfig();
});
</script>
<style lang="less">
@import '@/style/variables.less';
.face-transplant-header {
height: 650px;
border-radius: 6px;
background: #303030;
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.04);
display: flex;
flex-direction: column;
.face-transplant-upload {
padding: 30px;
flex: 1;
display: flex;
align-items: center;
.divide {
font-size: 60px;
font-weight: bold;
color: white;
padding: 0 12px;
}
.upload {
flex: 1;
.face-transplant-reset-upload {
background-color: transparent;
border: 2px dashed #9f9f9f;
height: 500px;
}
}
}
.face-transplant-footer {
height: 60px;
border-top: 1px solid #9f9f9f;
display: flex;
justify-content: flex-end;
align-items: center;
padding: 0 20px;
.t-button {
font-weight: 700;
font-size: @size-14;
width: 76px;
}
.face-transplant-footer-reset {
color: #9f9f9f;
border-color: #9f9f9f;
}
.face-transplant-create {
margin-left: 20px;
}
}
}
</style>
<template>
<div class="face-transplant-record">
<div class="record-items" v-for="item in list" :key="item.id">
<div class="left">
<img :src="item.cover_url" alt="" />
</div>
<div class="center">
<div class="name">
名称:
<span>{{ item.name }}</span>
</div>
<div class="create">
创建时间:
<span>{{ item.created_at }}</span>
</div>
<div class="download-box">
<Button
theme="green"
:class="['download-button', item.audit_status != 3 ? 'download-button__disabled' : '']"
@click="onDownloadVideo(item)"
>下载</Button
>
</div>
</div>
<CustomizationStatus :status="item.audit_status"></CustomizationStatus>
</div>
</div>
</template>
<script lang="tsx" setup>
import CustomizationStatus from '@/components/CustomizationStatus';
import Button from '@/components/Button.vue';
import { callPyjsInWindow } from '@/utils/pyqt';
import { downloadMp4 } from '@/utils/tool';
// import useNotify from '@/hooks/useNotify';
// const { showNotifyPlugin } = useNotify();
const props = withDefaults(
defineProps<{
list?: any[];
loading: boolean;
}>(),
{
list: () => [],
},
);
// 下载视频
const onDownloadVideo = (item: any) => {
if (item.audit_status != 3) {
return;
}
// 通知python下载视频
let url =
'http://yunyi-live.oss-cn-hangzhou.aliyuncs.com/upload/1/2023-08-22c130e428-cab2-4e1e-8904-88054d84bc1b.mp4';
callPyjsInWindow('downloadVideo', url);
downloadMp4(url);
};
</script>
<style lang="less">
@import '@/style/variables.less';
.face-transplant-record {
border-radius: 0px 6px 0px 0px;
background: #303030;
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.04);
min-height: 200px;
padding: 20px;
& > :not(:first-child) {
margin-top: 12px;
}
.record-items {
border-radius: 6px;
background: #1e1e1e;
height: 150px;
display: flex;
align-items: center;
padding: 0 60px;
.left {
width: 250px;
height: 120px;
img {
border-radius: 8px;
width: 200px;
height: 100%;
object-fit: contain;
}
}
.center {
padding-left: 30px;
flex: 1;
color: #fff;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-around;
.name {
font-size: @size-18;
}
.create {
font-size: @size-16;
}
}
.download-box {
.download-button {
height: 28px !important;
font-weight: 700;
font-size: @size-14;
width: 76px;
}
.download-button__disabled {
background: #6a6a6a;
color: #9f9f9f;
border-color: #6a6a6a;
--ripple-color: transparent !important;
cursor: not-allowed;
}
}
}
}
</style>
<template>
<div class="">
<Customizable
:video="true"
:submit="submit"
:icon="getIcon()"
:uploadInfo="uploadInfo"
:dialogInfo="dialogInfo"
:label="navigationLabels.faceTransplant"
>
<template #header>
<Header></Header>
</template>
<CustomTabs v-model="currentTab" theme="dark2" class="custom-tabs-flex">
<CustomTabPanel name="1" label="生成记录">
<Record :list="personList.list" :loading="loading"></Record>
</CustomTabPanel>
</CustomTabs>
</Customizable>
</div>
</template>
<script lang="tsx">
export default {
name: routerConfig.ImageCustomization.name,
};
</script>
<script lang="tsx" setup>
import { navigationLabels } from '@/constants/token';
import Header from './components/header.vue';
import Record from './components/record.vue';
import CustomTabs from '@/components/CustomTabs';
import CustomTabPanel from '@/components/CustomTabPanel';
import Customizable from '@/components/Customizable';
import PersonSvg from '@/assets/svg/home/faceTransplant.svg';
import { onMounted, ref, reactive } from 'vue';
import { customizedImageSubmission } from '@/utils/api/userApi';
import { show_message } from '@/utils/tool';
import routerConfig from '@/router/tool';
import { useStore } from 'vuex';
import { jumpPageAddNavigation } from '@/router/jump';
import { getDigitalPeopleList } from '@/service/Common';
const { addNavigation } = jumpPageAddNavigation();
const store = useStore();
const currentTab = ref('1');
// 子组件loading
const loading = ref(false);
const personList = reactive({
list: [],
});
const imgs = {
success: new URL('../../assets/svg/upload/success2.svg', import.meta.url).href,
};
const dialogInfo = {
title: navigationLabels.faceTransplant,
inputLabel: '数字人名称',
placeholder: '请输入数字人名称',
};
const getIcon = () => {
return <PersonSvg></PersonSvg>;
};
const uploadInfo = {
label1: '选择视频',
label2: '或拖视频到此处上传',
buttonLabel: '选择视频',
successIcon: imgs.success,
successButtonLabel: '替换视频',
};
// 获取我的数字人列表
const getList = async () => {
loading.value = true;
let res = await getDigitalPeopleList();
personList.list = res.myList;
loading.value = false;
};
const submit = async (params: any) => {
try {
let res: any = await customizedImageSubmission(params);
if (res.code == 0) {
show_message('提交成功', 'success');
// 更新记录
getList();
return true;
}
} catch (e) {
console.log(e);
}
};
onMounted(() => {
addNavigation(routerConfig.faceTransplant.path);
// 获取数字人列表
getList();
});
</script>
<style lang="less"></style>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
> >
</template> </template>
<div class="digtal-people-hover-tool"> <div class="digtal-people-hover-tool">
<Button size="13" theme="dark" @click="onEdit(item)">编辑</Button> <!-- <Button size="13" theme="dark" @click="onEdit(item)">编辑</Button> -->
<Button size="13" theme="dark" @click="downLoadVideo(item)">下载</Button> <Button size="13" theme="dark" @click="downLoadVideo(item)">下载</Button>
<Button size="13" theme="dark" @click="onDelete(item)">删除</Button> <Button size="13" theme="dark" @click="onDelete(item)">删除</Button>
</div> </div>
...@@ -278,6 +278,7 @@ watch( ...@@ -278,6 +278,7 @@ watch(
.digtal-people-hover-tool { .digtal-people-hover-tool {
flex: 1; flex: 1;
display: flex; display: flex;
justify-content: center;
align-items: flex-end; align-items: flex-end;
margin-bottom: 20px; margin-bottom: 20px;
} }
......
...@@ -106,6 +106,7 @@ const imgs = { ...@@ -106,6 +106,7 @@ const imgs = {
speaking: new URL('../../assets/svg/home/speaking.svg', import.meta.url).href, speaking: new URL('../../assets/svg/home/speaking.svg', import.meta.url).href,
interaction: new URL('../../assets/svg/home/interaction.svg', import.meta.url).href, interaction: new URL('../../assets/svg/home/interaction.svg', import.meta.url).href,
action: new URL('../../assets/svg/home/action.svg', import.meta.url).href, action: new URL('../../assets/svg/home/action.svg', import.meta.url).href,
faceTransplant: new URL('../../assets/svg/home/faceTransplant.svg', import.meta.url).href,
}; };
const toolList = [ const toolList = [
{ {
...@@ -132,6 +133,12 @@ const toolList = [ ...@@ -132,6 +133,12 @@ const toolList = [
path: routerConfig.createAction.path, path: routerConfig.createAction.path,
name: routerConfig.createAction.name, name: routerConfig.createAction.name,
}, },
{
label: '智能换脸',
icon: imgs.faceTransplant,
path: routerConfig.faceTransplant.path,
name: routerConfig.faceTransplant.name,
},
]; ];
// 跳转到创建直播页面 // 跳转到创建直播页面
......
...@@ -48,4 +48,9 @@ export default { ...@@ -48,4 +48,9 @@ export default {
path: '/createAction', path: '/createAction',
name: 'createAction', name: 'createAction',
}, },
// ai换脸
faceTransplant: {
path: '/faceTransplant',
name: 'faceTransplant',
},
}; };
...@@ -2,6 +2,7 @@ import routerConfig from '@/router/tool'; ...@@ -2,6 +2,7 @@ import routerConfig from '@/router/tool';
import { createLiveRouteKey } from '@/constants/token'; import { createLiveRouteKey } from '@/constants/token';
import { getSiteRouter } from '@/config/site'; import { getSiteRouter } from '@/config/site';
import router from '@/router'; import router from '@/router';
import { navigationLabels } from '@/constants/token';
const imgs = { const imgs = {
home: new URL('../../assets/svg/home/home.svg', import.meta.url).href, home: new URL('../../assets/svg/home/home.svg', import.meta.url).href,
...@@ -10,6 +11,7 @@ const imgs = { ...@@ -10,6 +11,7 @@ const imgs = {
speak: new URL('../../assets/svg/home/speaking.svg', import.meta.url).href, speak: new URL('../../assets/svg/home/speaking.svg', import.meta.url).href,
interaction: new URL('../../assets/svg/home/interaction.svg', import.meta.url).href, interaction: new URL('../../assets/svg/home/interaction.svg', import.meta.url).href,
action: new URL('../../assets/svg/home/action.svg', import.meta.url).href, action: new URL('../../assets/svg/home/action.svg', import.meta.url).href,
faceTransplant: new URL('../../assets/svg/home/faceTransplant.svg', import.meta.url).href,
}; };
const filterKeepAlive = () => { const filterKeepAlive = () => {
...@@ -31,6 +33,40 @@ const filterKeepAlive = () => { ...@@ -31,6 +33,40 @@ const filterKeepAlive = () => {
return list; return list;
}; };
// 导航列表
const navigationList = [
{
path: routerConfig.createLive.path,
icon: imgs.live,
label: navigationLabels.createLive,
},
{
path: routerConfig.ImageCustomization.path,
icon: imgs.person,
label: navigationLabels.imageCustomization,
},
{
path: routerConfig.VocalCustomization.path,
icon: imgs.speak,
label: navigationLabels.vocalCustomization,
},
{
path: routerConfig.createInteract.path,
icon: imgs.interaction,
label: navigationLabels.createInteract,
},
{
path: routerConfig.createAction.path,
icon: imgs.action,
label: navigationLabels.createAction,
},
{
path: routerConfig.faceTransplant.path,
icon: imgs.faceTransplant,
label: navigationLabels.faceTransplant,
},
];
const state = { const state = {
version: 'v1', version: 'v1',
navbarList: [], navbarList: [],
...@@ -52,21 +88,10 @@ const mutations = { ...@@ -52,21 +88,10 @@ const mutations = {
// 替换 // 替换
state.navbarList[index].query = info.query; state.navbarList[index].query = info.query;
} else { } else {
if (info.path == routerConfig.createLive.path) { let currentInfo = navigationList.find((item: any) => item.path == info.path);
info.icon = imgs.live; if (currentInfo) {
info.label = '直播创建'; info.icon = currentInfo.icon;
} else if (info.path == routerConfig.ImageCustomization.path) { info.label = currentInfo.label;
info.icon = imgs.person;
info.label = '形象定制';
} else if (info.path == routerConfig.VocalCustomization.path) {
info.icon = imgs.speak;
info.label = '声音定制';
} else if (info.path == routerConfig.createInteract.path) {
info.icon = imgs.interaction;
info.label = '互动回答';
} else if (info.path == routerConfig.createAction.path) {
info.icon = imgs.action;
info.label = '动作创建';
} }
state.navbarList.push(info); state.navbarList.push(info);
} }
......
export const vLazy = (el: HTMLImageElement, image: any) => { export const vLazy = (el: HTMLImageElement, image: any) => {
el.src = 'https://cdn.staticaly.com/gh/1024huijia/QingChunMeizi@master/loading.5e3wpezjapc0.gif';
// 使用obaesrve监听图片是否在可视区域内 // 使用obaesrve监听图片是否在可视区域内
const observe = new IntersectionObserver((entries) => { const observe = new IntersectionObserver((entries) => {
entries.forEach((entry) => { entries.forEach((entry) => {
......
...@@ -8,7 +8,7 @@ const error_messaage = '请求错误'; ...@@ -8,7 +8,7 @@ const error_messaage = '请求错误';
const getBaseUrl = async () => { const getBaseUrl = async () => {
if (isDev()) { if (isDev()) {
return 'http://156.247.11.21:93'; // return 'http://156.247.11.21:93';
return ''; return '';
} }
// 默认线上地址 // 默认线上地址
......
...@@ -366,7 +366,35 @@ export const getFile = (url: string) => { ...@@ -366,7 +366,35 @@ export const getFile = (url: string) => {
}); });
}; };
// 用户下载文件 // 下载单个MP4
export const downloadMp4 = async (url: string, name: string = '') => {
if (!url) {
return;
}
try {
const res: Blob = await request.get(url, {
responseType: 'blob',
});
downloadFile(URL.createObjectURL(res), name);
} catch (e) {
show_message('下载失败', 'error');
console.log(e);
}
};
// a标签下载文件
export const downloadFile = (url: string, name: string = '') => {
// 通过链接获取文件后缀
const suffix = getFileSuffixInUrl(url);
const a = document.createElement('a');
a.href = url;
a.download = `${name ? name : 'example'}.${suffix}`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
// 用户下载文件压缩包
// export const downloadFiles = (list: string[]) => { // export const downloadFiles = (list: string[]) => {
// let zip = new JSZip(); // let zip = new JSZip();
// const promises = []; // const promises = [];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment