|
@@ -3,15 +3,18 @@
|
|
|
*
|
|
*
|
|
|
*
|
|
*
|
|
|
*/
|
|
*/
|
|
|
-require_once '../studio/index_head.php';
|
|
|
|
|
|
|
+require_once __DIR__."/../public/_pdo.php";
|
|
|
|
|
+require_once __DIR__."/../public/function.php";
|
|
|
|
|
+require_once __DIR__."/../config.php";
|
|
|
|
|
+require_once __DIR__."/../public/snowflakeid.php";
|
|
|
|
|
+$snowflake = new SnowFlakeId();
|
|
|
|
|
+require_once __DIR__.'/../studio/index_head.php';
|
|
|
|
|
+
|
|
|
?>
|
|
?>
|
|
|
<body id="file_list_body" >
|
|
<body id="file_list_body" >
|
|
|
<?php
|
|
<?php
|
|
|
-require_once "../public/_pdo.php";
|
|
|
|
|
-require_once "../public/function.php";
|
|
|
|
|
-require_once "../config.php";
|
|
|
|
|
|
|
|
|
|
-require_once '../studio/index_tool_bar.php';
|
|
|
|
|
|
|
+require_once __DIR__."/../studio/index_tool_bar.php";
|
|
|
|
|
|
|
|
echo '<div class="index_inner" style=" margin-left: 18em;margin-top: 5em;">';
|
|
echo '<div class="index_inner" style=" margin-left: 18em;margin-top: 5em;">';
|
|
|
|
|
|
|
@@ -42,15 +45,15 @@ if (isset($_GET["channel"]) == false) {
|
|
|
echo "<h2>选择一个空白的版风存储新的文档</h2>";
|
|
echo "<h2>选择一个空白的版风存储新的文档</h2>";
|
|
|
echo "<form action='fork.php' method='get'>";
|
|
echo "<form action='fork.php' method='get'>";
|
|
|
echo "<input type='hidden' name='doc_id' value='{$_GET["doc_id"]}' />";
|
|
echo "<input type='hidden' name='doc_id' value='{$_GET["doc_id"]}' />";
|
|
|
- PDO_Connect("" . _FILE_DB_CHANNAL_);
|
|
|
|
|
- $query = "select * from channal where owner = '{$_COOKIE["userid"]}' limit 0,100";
|
|
|
|
|
- $Fetch = PDO_FetchAll($query);
|
|
|
|
|
|
|
+ PDO_Connect( _FILE_DB_CHANNAL_,_DB_USERNAME_,_DB_PASSWORD_);
|
|
|
|
|
+ $query = "SELECT uid,name,lang,status,create_time from "._TABLE_CHANNEL_." where owner_uid = ? limit 100";
|
|
|
|
|
+ $Fetch = PDO_FetchAll($query,$_COOKIE["user_uid"]);
|
|
|
$i = 0;
|
|
$i = 0;
|
|
|
foreach ($Fetch as $row) {
|
|
foreach ($Fetch as $row) {
|
|
|
echo '<div class="file_list_row" style="padding:5px;display:flex;">';
|
|
echo '<div class="file_list_row" style="padding:5px;display:flex;">';
|
|
|
|
|
|
|
|
echo '<div class="pd-10" style="max-width:2em;flex:1;">';
|
|
echo '<div class="pd-10" style="max-width:2em;flex:1;">';
|
|
|
- echo '<input name="channel" value="' . $row["id"] . '" ';
|
|
|
|
|
|
|
+ echo '<input name="channel" value="' . $row["uid"] . '" ';
|
|
|
if ($i == 0) {
|
|
if ($i == 0) {
|
|
|
echo "checked";
|
|
echo "checked";
|
|
|
}
|
|
}
|
|
@@ -60,7 +63,7 @@ if (isset($_GET["channel"]) == false) {
|
|
|
echo '<div class="title" style="flex:3;padding-bottom:5px;">' . $row["lang"] . '</div>';
|
|
echo '<div class="title" style="flex:3;padding-bottom:5px;">' . $row["lang"] . '</div>';
|
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
|
PDO_Connect(_FILE_DB_USER_WBW_);
|
|
PDO_Connect(_FILE_DB_USER_WBW_);
|
|
|
- $query = "SELECT count(*) from "._TABLE_USER_WBW_BLOCK_." where channal = '{$row["id"]}' and book='{$mbook}' and paragraph in ({$paragraph}) limit 0,100";
|
|
|
|
|
|
|
+ $query = "SELECT count(*) from "._TABLE_USER_WBW_BLOCK_." where channel_uid = '{$row["uid"]}' and book_id='{$mbook}' and paragraph in ({$paragraph}) limit 100";
|
|
|
$FetchWBW = PDO_FetchOne($query);
|
|
$FetchWBW = PDO_FetchOne($query);
|
|
|
echo '</div>';
|
|
echo '</div>';
|
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
@@ -68,14 +71,14 @@ if (isset($_GET["channel"]) == false) {
|
|
|
echo $_local->gui->blank;
|
|
echo $_local->gui->blank;
|
|
|
} else {
|
|
} else {
|
|
|
echo $FetchWBW . $_local->gui->para;
|
|
echo $FetchWBW . $_local->gui->para;
|
|
|
- echo "<a href='../studio/editor.php?op=openchannal&book=$book¶={$paraList}&channal={$row["id"]}'>open</a>";
|
|
|
|
|
|
|
+ echo "<a href='../studio/editor.php?op=openchannal&book=$book¶={$paraList}&channal={$row["uid"]}'>open</a>";
|
|
|
}
|
|
}
|
|
|
echo '</div>';
|
|
echo '</div>';
|
|
|
|
|
|
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
|
- PDO_Connect(_FILE_DB_SENTENCE_);
|
|
|
|
|
- $query = "SELECT count(*) from sentence where channal = '{$row["id"]}' and book='{$mbook}' and paragraph in ({$paragraph}) limit 0,100";
|
|
|
|
|
- $FetchWBW = PDO_FetchOne($query);
|
|
|
|
|
|
|
+ PDO_Connect(_FILE_DB_SENTENCE_,_DB_USERNAME_,_DB_PASSWORD_);
|
|
|
|
|
+ $query = "SELECT count(*) from "._TABLE_SENTENCE_." where channel_uid = ? and book_id=? and paragraph in ({$paragraph}) limit 1000";
|
|
|
|
|
+ $FetchWBW = PDO_FetchOne($query,array($row["uid"],$mbook));
|
|
|
echo '</div>';
|
|
echo '</div>';
|
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
echo '<div class="title" style="flex:2;padding-bottom:5px;">';
|
|
|
if ($FetchWBW == 0) {
|
|
if ($FetchWBW == 0) {
|
|
@@ -99,7 +102,7 @@ if (isset($_GET["channel"]) == false) {
|
|
|
|
|
|
|
|
//if(isset($_GET["doc_id"]))
|
|
//if(isset($_GET["doc_id"]))
|
|
|
{
|
|
{
|
|
|
- PDO_Connect("" . _FILE_DB_FILEINDEX_);
|
|
|
|
|
|
|
+ PDO_Connect( _FILE_DB_FILEINDEX_,_DB_USERNAME_,_DB_PASSWORD_);
|
|
|
$doc_id = $_GET["doc_id"];
|
|
$doc_id = $_GET["doc_id"];
|
|
|
$query = "SELECT * from fileindex where id= ? ";
|
|
$query = "SELECT * from fileindex where id= ? ";
|
|
|
$Fetch = PDO_FetchAll($query, array($doc_id));
|
|
$Fetch = PDO_FetchAll($query, array($doc_id));
|
|
@@ -144,13 +147,13 @@ if (isset($_GET["channel"]) == false) {
|
|
|
//$dest=$dir_user_base.$userid.$dir_mydocument.$filename;
|
|
//$dest=$dir_user_base.$userid.$dir_mydocument.$filename;
|
|
|
//复制数据
|
|
//复制数据
|
|
|
//打开逐词解析数据库
|
|
//打开逐词解析数据库
|
|
|
- $dns = "" . _FILE_DB_USER_WBW_;
|
|
|
|
|
- $dbhWBW = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
|
|
|
|
|
|
|
+ $dns = _FILE_DB_USER_WBW_;
|
|
|
|
|
+ $dbhWBW = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
|
|
|
$dbhWBW->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
|
$dbhWBW->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
|
|
|
|
|
|
|
//打开译文数据库
|
|
//打开译文数据库
|
|
|
- $dns = "" . _FILE_DB_SENTENCE_;
|
|
|
|
|
- $dbhSent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
|
|
|
|
|
|
|
+ $dns = _FILE_DB_SENTENCE_;
|
|
|
|
|
+ $dbhSent = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
|
|
|
$dbhSent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
|
$dbhSent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
|
|
|
|
|
|
|
//逐词解析新数据数组
|
|
//逐词解析新数据数组
|
|
@@ -158,11 +161,6 @@ if (isset($_GET["channel"]) == false) {
|
|
|
$arrNewBlockData = array();
|
|
$arrNewBlockData = array();
|
|
|
$arrBlockTransform = array();
|
|
$arrBlockTransform = array();
|
|
|
|
|
|
|
|
- //译文新数据数组
|
|
|
|
|
- $arrSentNewBlock = array();
|
|
|
|
|
- $arrSentNewBlockData = array();
|
|
|
|
|
- $arrSentBlockTransform = array();
|
|
|
|
|
-
|
|
|
|
|
$newDocBlockList = array();
|
|
$newDocBlockList = array();
|
|
|
|
|
|
|
|
$blocks = json_decode($Fetch[0]["doc_block"]);
|
|
$blocks = json_decode($Fetch[0]["doc_block"]);
|
|
@@ -171,59 +169,7 @@ if (isset($_GET["channel"]) == false) {
|
|
|
case 1:
|
|
case 1:
|
|
|
break;
|
|
break;
|
|
|
case 2:
|
|
case 2:
|
|
|
- //译文
|
|
|
|
|
- $blockid = $blocks[$i]->block_id;
|
|
|
|
|
- $query = "select * from sent_block where id= ? ";
|
|
|
|
|
- $stmt = $dbhSent->prepare($query);
|
|
|
|
|
- $stmt->execute(array($blockid));
|
|
|
|
|
- $fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
|
- $newBlockId = UUID::V4();
|
|
|
|
|
//不复刻译文
|
|
//不复刻译文
|
|
|
- //$newDocBlockList[]=array('type' => 2,'block_id' => $newBlockId);
|
|
|
|
|
- $arrSentBlockTransform[$fBlock[0]["id"]] = $newBlockId;
|
|
|
|
|
- if (count($fBlock) > 0) {
|
|
|
|
|
- array_push($arrSentNewBlock,
|
|
|
|
|
- array($newBlockId,
|
|
|
|
|
- $fBlock[0]["id"],
|
|
|
|
|
- $fBlock[0]["book"],
|
|
|
|
|
- $fBlock[0]["paragraph"],
|
|
|
|
|
- $_COOKIE["userid"],
|
|
|
|
|
- $fBlock[0]["lang"],
|
|
|
|
|
- $fBlock[0]["author"],
|
|
|
|
|
- $fBlock[0]["editor"],
|
|
|
|
|
- $fBlock[0]["tag"],
|
|
|
|
|
- $fBlock[0]["status"],
|
|
|
|
|
- mTime(),
|
|
|
|
|
- mTime(),
|
|
|
|
|
- ));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $query = "select * from sentence where block_id= ? ";
|
|
|
|
|
- $stmtSent = $dbhSent->prepare($query);
|
|
|
|
|
- $stmtSent->execute(array($fBlock[0]["id"]));
|
|
|
|
|
- $fBlockData = $stmtSent->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
|
- foreach ($fBlockData as $value) {
|
|
|
|
|
- array_push($arrSentNewBlockData,
|
|
|
|
|
- array(UUID::V4(),
|
|
|
|
|
- $arrSentBlockTransform[$value["block_id"]],
|
|
|
|
|
- $value["book"],
|
|
|
|
|
- $value["paragraph"],
|
|
|
|
|
- $value["begin"],
|
|
|
|
|
- $value["end"],
|
|
|
|
|
- $value["channal"],
|
|
|
|
|
- $value["tag"],
|
|
|
|
|
- $value["author"],
|
|
|
|
|
- $_COOKIE["userid"],
|
|
|
|
|
- $value["text"],
|
|
|
|
|
- $value["language"],
|
|
|
|
|
- $value["ver"],
|
|
|
|
|
- $value["status"],
|
|
|
|
|
- mTime(),
|
|
|
|
|
- mTime(),
|
|
|
|
|
- ));
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
break;
|
|
break;
|
|
|
case 3:
|
|
case 3:
|
|
|
break;
|
|
break;
|
|
@@ -234,7 +180,7 @@ if (isset($_GET["channel"]) == false) {
|
|
|
case 6:
|
|
case 6:
|
|
|
#逐词解析
|
|
#逐词解析
|
|
|
$blockid = $blocks[$i]->block_id;
|
|
$blockid = $blocks[$i]->block_id;
|
|
|
- $query = "select * from "._TABLE_USER_WBW_BLOCK_." where id= ? ";
|
|
|
|
|
|
|
+ $query = "SELECT uid,book_id,paragraph,style,lang,status from "._TABLE_USER_WBW_BLOCK_." where uid= ? ";
|
|
|
$stmt = $dbhWBW->prepare($query);
|
|
$stmt = $dbhWBW->prepare($query);
|
|
|
$stmt->execute(array($blockid));
|
|
$stmt->execute(array($blockid));
|
|
|
$fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
$fBlock = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
@@ -243,17 +189,18 @@ if (isset($_GET["channel"]) == false) {
|
|
|
$arrBlockTransform[$fBlock[0]["id"]] = $newBlockId;
|
|
$arrBlockTransform[$fBlock[0]["id"]] = $newBlockId;
|
|
|
if (count($fBlock) > 0) {
|
|
if (count($fBlock) > 0) {
|
|
|
array_push($arrNewBlock,
|
|
array_push($arrNewBlock,
|
|
|
- array($newBlockId,
|
|
|
|
|
- $fBlock[0]["id"],
|
|
|
|
|
|
|
+ array(
|
|
|
|
|
+ $snowflake->id(),
|
|
|
|
|
+ $newBlockId,
|
|
|
|
|
+ $fBlock[0]["uid"],
|
|
|
$_GET["channel"],
|
|
$_GET["channel"],
|
|
|
$_COOKIE["userid"],
|
|
$_COOKIE["userid"],
|
|
|
- $fBlock[0]["book"],
|
|
|
|
|
|
|
+ $fBlock[0]["book_id"],
|
|
|
$fBlock[0]["paragraph"],
|
|
$fBlock[0]["paragraph"],
|
|
|
$fBlock[0]["style"],
|
|
$fBlock[0]["style"],
|
|
|
$fBlock[0]["lang"],
|
|
$fBlock[0]["lang"],
|
|
|
$fBlock[0]["status"],
|
|
$fBlock[0]["status"],
|
|
|
- mTime(),
|
|
|
|
|
- mTime(),
|
|
|
|
|
|
|
+ mTime()
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -263,7 +210,9 @@ if (isset($_GET["channel"]) == false) {
|
|
|
$fBlockData = $stmtWBW->fetchAll(PDO::FETCH_ASSOC);
|
|
$fBlockData = $stmtWBW->fetchAll(PDO::FETCH_ASSOC);
|
|
|
foreach ($fBlockData as $value) {
|
|
foreach ($fBlockData as $value) {
|
|
|
array_push($arrNewBlockData,
|
|
array_push($arrNewBlockData,
|
|
|
- array(UUID::V4(),
|
|
|
|
|
|
|
+ array(
|
|
|
|
|
+ $snowflake->id(),
|
|
|
|
|
+ UUID::V4(),
|
|
|
$arrBlockTransform[$value["block_id"]],
|
|
$arrBlockTransform[$value["block_id"]],
|
|
|
$value["book"],
|
|
$value["book"],
|
|
|
$value["paragraph"],
|
|
$value["paragraph"],
|
|
@@ -288,7 +237,22 @@ if (isset($_GET["channel"]) == false) {
|
|
|
|
|
|
|
|
if (count($arrNewBlock) > 0) {
|
|
if (count($arrNewBlock) > 0) {
|
|
|
$dbhWBW->beginTransaction();
|
|
$dbhWBW->beginTransaction();
|
|
|
- $query = "INSERT INTO "._TABLE_USER_WBW_BLOCK_." ('id','parent_id','channal','owner','book','paragraph','style','lang','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
|
|
|
+ $query = "INSERT INTO "._TABLE_USER_WBW_BLOCK_."
|
|
|
|
|
+ (
|
|
|
|
|
+ id,
|
|
|
|
|
+ uid ,
|
|
|
|
|
+ parent_id ,
|
|
|
|
|
+ channel_uid ,
|
|
|
|
|
+ creator_uid ,
|
|
|
|
|
+ book_id ,
|
|
|
|
|
+ paragraph ,
|
|
|
|
|
+ style ,
|
|
|
|
|
+ lang ,
|
|
|
|
|
+ status ,
|
|
|
|
|
+ modify_time ,
|
|
|
|
|
+ updated_at
|
|
|
|
|
+ )
|
|
|
|
|
+ VALUES (?,?,?,?,?,?,?,?,?,?,?,now())";
|
|
|
$stmtNewBlock = $dbhWBW->prepare($query);
|
|
$stmtNewBlock = $dbhWBW->prepare($query);
|
|
|
foreach ($arrNewBlock as $oneParam) {
|
|
foreach ($arrNewBlock as $oneParam) {
|
|
|
$stmtNewBlock->execute($oneParam);
|
|
$stmtNewBlock->execute($oneParam);
|
|
@@ -308,7 +272,21 @@ if (isset($_GET["channel"]) == false) {
|
|
|
if (count($arrNewBlockData) > 0) {
|
|
if (count($arrNewBlockData) > 0) {
|
|
|
// 开始一个事务,逐词解析数据 关闭自动提交
|
|
// 开始一个事务,逐词解析数据 关闭自动提交
|
|
|
$dbhWBW->beginTransaction();
|
|
$dbhWBW->beginTransaction();
|
|
|
- $query = "INSERT INTO "._TABLE_USER_WBW_." ('id','block_id','book','paragraph','wid','word','data','modify_time','receive_time','status','owner') VALUES (?,?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
|
|
|
+ $query = "INSERT INTO "._TABLE_USER_WBW_."
|
|
|
|
|
+ (
|
|
|
|
|
+ 'id',
|
|
|
|
|
+ 'uid',
|
|
|
|
|
+ 'block_id',
|
|
|
|
|
+ 'book',
|
|
|
|
|
+ 'paragraph',
|
|
|
|
|
+ 'wid',
|
|
|
|
|
+ 'word',
|
|
|
|
|
+ 'data',
|
|
|
|
|
+ 'create_time',
|
|
|
|
|
+ 'update_time',
|
|
|
|
|
+ 'status',
|
|
|
|
|
+ 'owner'
|
|
|
|
|
+ ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
|
|
|
$stmtWbwData = $dbhWBW->prepare($query);
|
|
$stmtWbwData = $dbhWBW->prepare($query);
|
|
|
foreach ($arrNewBlockData as $oneParam) {
|
|
foreach ($arrNewBlockData as $oneParam) {
|
|
|
$stmtWbwData->execute($oneParam);
|
|
$stmtWbwData->execute($oneParam);
|
|
@@ -327,50 +305,6 @@ if (isset($_GET["channel"]) == false) {
|
|
|
|
|
|
|
|
//不复刻译文
|
|
//不复刻译文
|
|
|
|
|
|
|
|
- //译文 block数据块
|
|
|
|
|
- /*
|
|
|
|
|
- if(count($arrSentNewBlock)>0){
|
|
|
|
|
- $dbhSent->beginTransaction();
|
|
|
|
|
- $query="INSERT INTO sent_block ('id','parent_id','book','paragraph','owner','lang','author','editor','tag','status','modify_time','receive_time') VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
|
- $stmtSentNewBlock = $dbhSent->prepare($query);
|
|
|
|
|
- foreach($arrSentNewBlock as $oneParam){
|
|
|
|
|
- //print_r($oneParam);
|
|
|
|
|
- $stmtSentNewBlock->execute($oneParam);
|
|
|
|
|
- }
|
|
|
|
|
- // 提交更改
|
|
|
|
|
- $dbhSent->commit();
|
|
|
|
|
- if (!$stmtSentNewBlock || ($stmtSentNewBlock && $stmtSentNewBlock->errorCode() != 0)) {
|
|
|
|
|
- $error = $dbhSent->errorInfo();
|
|
|
|
|
- echo "error - $error[2] <br>";
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- //译文 block块复刻成功
|
|
|
|
|
- $count=count($arrNewBlock);
|
|
|
|
|
- echo "wbw block $count recorders.<br/>";
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if(count($arrSentNewBlockData)>0){
|
|
|
|
|
- // 开始一个事务,逐词解析数据 关闭自动提交
|
|
|
|
|
- $dbhSent->beginTransaction();
|
|
|
|
|
- $query="INSERT INTO sentence ('id','block_id','book','paragraph','begin','end','channal','tag','author','editor','text','language','ver','status','modify_time','receive_time') VALUES (? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?, ?)";
|
|
|
|
|
- $stmtSentData = $dbhSent->prepare($query);
|
|
|
|
|
- foreach($arrSentNewBlockData as $oneParam){
|
|
|
|
|
- $stmtSentData->execute($oneParam);
|
|
|
|
|
- }
|
|
|
|
|
- // 提交更改
|
|
|
|
|
- $dbhSent->commit();
|
|
|
|
|
- if (!$stmtSentData || ($stmtSentData && $stmtSentData->errorCode() != 0)) {
|
|
|
|
|
- $error = $dbhSent->errorInfo();
|
|
|
|
|
- echo "error - $error[2] <br>";
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- //译文 数据 复刻成功
|
|
|
|
|
- $count=count($arrSentNewBlockData);
|
|
|
|
|
- echo "new translation $count recorders.";
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- */
|
|
|
|
|
|
|
|
|
|
//插入记录到文件索引
|
|
//插入记录到文件索引
|
|
|
$filesize = 0;
|
|
$filesize = 0;
|